2024.03.18 18:40 [4089508] smart account 3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp > SELF 0.00000000 Waves

{ "type": 13, "id": "G4ZTW8Skf37uNkaSm1zFdhTFqjNy2VH14yPo5XyPMtk1", "fee": 1100000, "feeAssetId": null, "timestamp": 1710776421367, "version": 2, "chainId": 87, "sender": "3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp", "senderPublicKey": "GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw", "proofs": [ "5k9T6wpLHnRRL6jvP8HzcKbvDNjNXB3rz5BTJL8X3BEJm7eNWBazu8Bifqp7aKN6gJ7rKeS81No8Eaga2g3gyg2", "", "3fGyLpwNgNd2ZCwQYPnxNT7jkdMu25kixVZvHRB1VCXnbtKv3AEHoanbFZafFN7xKCrTo7ZUEBynb1vuCjw3dQZK" ], "script": "base64:BgILCAISBwoFGAQICAEeAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVeK/whomjW6QM1hdPISN96mN/D6OM7oHjgADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgALa0dvdkFkZHJlc3MCEmdvdmVybmFuY2VfYWRkcmVzcwAMa0Zhcm1BZGRyZXNzAg9mYXJtaW5nX2FkZHJlc3MAD2tTdXJ2ZXlzQWRkcmVzcwIPc3VydmV5c19hZGRyZXNzAAxrUm91dGluZ0FkZHICD3JvdXRpbmdfYWRkcmVzcwAHa1NXT1BpZAIHU1dPUF9pZAAPa1ByZWZpeFBvb2xOYW1lAgVwb29sXwALa0xhc3RCdXJuZWQCEWxhc3RfYWlyZHJvcF9idXJuABJidXJuQWlyRHJvcFBlcmNlbnQAFAETZ2V0QmFzZTU4RnJvbU9yYWNsZQEDa2V5BAckbWF0Y2gwCQCdCAIFBm9yYWNsZQUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQGc3RyaW5nBQckbWF0Y2gwCQDZBAEFBnN0cmluZwQHbm90aGluZwUHJG1hdGNoMAkAAgEJAKwCAgUDa2V5AghpcyBlbXB0eQAMYWRtaW5QdWJLZXkxCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MwALYWRtaW5JbnZva2UJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUSa0FkbWluSW52b2tlUHViS2V5ABFnb3Zlcm5hbmNlQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFC2tHb3ZBZGRyZXNzAA5mYXJtaW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtGYXJtQWRkcmVzcwAOc3VydmV5c0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ9rU3VydmV5c0FkZHJlc3MADnJvdXRpbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa1JvdXRpbmdBZGRyAAZzd29wSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUOZmFybWluZ0FkZHJlc3MFB2tTV09QaWQBCmlzU2VsZkNhbGwBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBQR1bml0CQACAQIrT25seSBjb250cmFjdCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEJbGlzdFRvSW50AgFhBGl0ZW0JAM0IAgUBYQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtAQ5hc3NldElkRnJvbVN0cgEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkAQ5hY2NvdW50QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA8AcCBQR0aGlzBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgEQZGlyZWN0U3dvcGZpQ1BNTQEFckFyZ3MEBGRBcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUFckFyZ3MAAQQDcG10BARwbXRQCQC1CQIJAJEDAgUFckFyZ3MAAgIBfAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBCQCRAwIFBHBtdFAAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBHBtdFAAAQUDbmlsBAttaW5Ub1JlY2l2ZQkAkQMCBQVyQXJncwADCQD8BwQFBGRBcHACDGNhbGxGdW5jdGlvbgkAzAgCAghleGNoYW5nZQkAzAgCCQDMCAIFC21pblRvUmVjaXZlBQNuaWwFA25pbAUDcG10ARNkaXJlY3RSb3V0aW5nU3dvcGZpAQVyQXJncwQEZEFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQVyQXJncwABBANwbXQEBHBtdFAJALUJAgkAkQMCBQVyQXJncwACAgF8CQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEJAJEDAgUEcG10UAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEcG10UAABBQNuaWwEBGFyZ3MEBWVBcmdzCQC1CQIJAJEDAgUFckFyZ3MAAwIBfAQKZXhjaGFuZ2VycwkAtQkCCQCRAwIFBWVBcmdzAAACASwEDmV4Y2hhbmdlcnNUeXBlCQC1CQIJAJEDAgUFZUFyZ3MAAQIBLAQFYXJnczEKAAIkbAkAtQkCCQCRAwIFBWVBcmdzAAICASwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWxpc3RUb0ludAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwQFYXJnczIKAAIkbAkAtQkCCQCRAwIFBWVBcmdzAAMCASwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWxpc3RUb0ludAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwQRcm91dGluZ0Fzc2V0c0tleXMJALUJAgkAkQMCBQVlQXJncwAEAgEsBAttaW5Ub1JlY2l2ZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWVBcmdzAAUJAMwIAgUKZXhjaGFuZ2VycwkAzAgCBQ5leGNoYW5nZXJzVHlwZQkAzAgCBQVhcmdzMQkAzAgCBQVhcmdzMgkAzAgCBRFyb3V0aW5nQXNzZXRzS2V5cwkAzAgCBQttaW5Ub1JlY2l2ZQUDbmlsCQD8BwQFBGRBcHACDHJvdXRpbmdUcmFkZQUEYXJncwUDcG10ARFidXlTd29wRm9yQWlyZHJvcAMEcG9vbA90b2tlblRvRXhjaGFuZ2URYW1vdW50VG9MZWZ0Rm9yVHgEB3Rva2VuSWQJAQ5hc3NldElkRnJvbVN0cgEFD3Rva2VuVG9FeGNoYW5nZQQMdG9rZW5CYWxhbmNlCQEOYWNjb3VudEJhbGFuY2UBBQd0b2tlbklkAwkAAAIFDHRva2VuQmFsYW5jZQUMdG9rZW5CYWxhbmNlBBBhbW91bnRUb0V4Y2hhbmdlCQBlAgUMdG9rZW5CYWxhbmNlBRFhbW91bnRUb0xlZnRGb3JUeAMJAGcCAAAFEGFtb3VudFRvRXhjaGFuZ2UJAAIBAh9Ob3RoaW5nIHRvIGV4Y2hhbmdlIGZvciBhaXJkcm9wBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICCGV4Y2hhbmdlCQDMCAIJAMwIAgIBMQUDbmlsBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB3Rva2VuSWQFEGFtb3VudFRvRXhjaGFuZ2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEBaQEOZXhjaGFuZ2VUb2tlbnMFBnJvdXRlcwdhaXJkcm9wBHBvb2wPdG9rZW5Ub0V4Y2hhbmdlEWFtb3VudFRvTGVmdEZvclR4CQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkKAQ1leGNoYW5nZVRva2VuAgFyBXJvdXRlBAVyQXJncwkAtQkCBQVyb3V0ZQICX18DCQAAAgkAkQMCBQVyQXJncwAAAhBkaXJlY3RTd29wZmlDUE1NBANpbnYJARBkaXJlY3RTd29wZmlDUE1NAQUFckFyZ3MDCQAAAgUDaW52BQNpbnYJAM0IAgUBcgUDaW52CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIJAJEDAgUFckFyZ3MAAAINcm91dGluZ1N3b3BmaQQDaW52CQETZGlyZWN0Um91dGluZ1N3b3BmaQEFBXJBcmdzAwkAAAIFA2ludgUDaW52CQDNCAIFAXIFA2ludgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECElVua25vd24gcm91dGUgdHlwZQQDcmVzCgACJGwFBnJvdXRlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQENZXhjaGFuZ2VUb2tlbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQNyZXMFA3JlcwMJAQEhAQUHYWlyZHJvcAUDbmlsBANpbnYJARFidXlTd29wRm9yQWlyZHJvcAMFBHBvb2wFD3Rva2VuVG9FeGNoYW5nZQURYW1vdW50VG9MZWZ0Rm9yVHgDCQAAAgUDaW52BQNpbnYEC3N3b3BCYWxhbmNlCQEOYWNjb3VudEJhbGFuY2UBBQZzd29wSWQDCQAAAgULc3dvcEJhbGFuY2UFC3N3b3BCYWxhbmNlBApidXJuQW1vdW50CQBrAwULc3dvcEJhbGFuY2UFEmJ1cm5BaXJEcm9wUGVyY2VudABkBARhSW52CQD8BwQFEWdvdmVybmFuY2VBZGRyZXNzAgdhaXJEcm9wBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBnN3b3BJZAkAZQIFC3N3b3BCYWxhbmNlBQpidXJuQW1vdW50BQNuaWwDCQAAAgUEYUludgUEYUludgkAzAgCCQEMSW50ZWdlckVudHJ5AgULa0xhc3RCdXJuZWQFCmJ1cm5BbW91bnQJAMwIAgkBBEJ1cm4CBQZzd29wSWQFCmJ1cm5BbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDAECmlzUmlnaHRGZWUDCQAAAggFA2ludgNmZWUAoPc2CQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwQNaXNSb3V0aW5nQ2FsbAMJAAACCAUDaW52BGRBcHAFDnJvdXRpbmdBZGRyZXNzCQAAAggFA2ludghmdW5jdGlvbgIMcm91dGluZ1RyYWRlBwQSaXNFeGNoYW5nZUNhbGxDUE1NAwMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBQ9rUHJlZml4UG9vbE5hbWUJAKUIAQkApAgBCAUDaW52BGRBcHAJAAACCAUDaW52CGZ1bmN0aW9uAgxjYWxsRnVuY3Rpb24HCQAAAgkAkQMCCAUDaW52BGFyZ3MAAAIIZXhjaGFuZ2UHBA5pc0V4Y2hhbmdlQ2FsbAMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBQ9rUHJlZml4UG9vbE5hbWUJAKUIAQkApAgBCAUDaW52BGRBcHAJAAACCAUDaW52CGZ1bmN0aW9uAghleGNoYW5nZQcEDWlzQWlyZHJvcENhbGwJAAACCAUDaW52CGZ1bmN0aW9uAg5leGNoYW5nZVRva2VucwQTaXNVcGRhdGVXZWlnaHRzQ2FsbAMJAAACCAUDaW52BGRBcHAFEWdvdmVybmFuY2VBZGRyZXNzCQAAAggFA2ludghmdW5jdGlvbgINdXBkYXRlV2VpZ2h0cwcEFmlzVGFrZW5JbnRvQWNjb3VudENQTU0DAwkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFD2tQcmVmaXhQb29sTmFtZQkApQgBCQCkCAEIBQNpbnYEZEFwcAkAAAIIBQNpbnYIZnVuY3Rpb24CDGNhbGxGdW5jdGlvbgcJAAACCQCRAwIIBQNpbnYEYXJncwAAAhl0YWtlSW50b0FjY291bnRFeHRyYUZ1bmRzBwQSaXNUYWtlbkludG9BY2NvdW50AwkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFD2tQcmVmaXhQb29sTmFtZQkApQgBCQCkCAEIBQNpbnYEZEFwcAkAAAIIBQNpbnYIZnVuY3Rpb24CGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMHBAxpc1dyaXRlVG90YWwDCQAAAggFA2ludgRkQXBwBQ5zdXJ2ZXlzQWRkcmVzcwkAAAIIBQNpbnYIZnVuY3Rpb24CC3dyaXRlVG90YWxzBwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkzAAEAAAQXYWRtaW5QdWJLZXlJbnZva2VTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQthZG1pbkludm9rZQABAAAEEHNpZ25lZEJ5T25lQWRtaW4JAGcCCQBkAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkBRdhZG1pblB1YktleUludm9rZVNpZ25lZAABAwMDAwMDBQ5pc0V4Y2hhbmdlQ2FsbAYFEmlzRXhjaGFuZ2VDYWxsQ1BNTQYFDWlzUm91dGluZ0NhbGwJAAACCQCQAwEIBQNpbnYIcGF5bWVudHMAAQcGAwMDAwMFE2lzVXBkYXRlV2VpZ2h0c0NhbGwGBRJpc1Rha2VuSW50b0FjY291bnQGBRZpc1Rha2VuSW50b0FjY291bnRDUE1NBgUMaXNXcml0ZVRvdGFsBgUNaXNBaXJkcm9wQ2FsbAkAAAIJAJADAQgFA2ludghwYXltZW50cwAABwUQc2lnbmVkQnlPbmVBZG1pbgcFCmlzUmlnaHRGZWUHBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAKRHpTw", "height": 4089508, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dc7TXAa6rLPun2zcFtQMsBtBG9bXu2B8xUy9q54gwhzD Next: FUhX5PD4Fd6QwE1kQ1VzgqkiL7NS7ZZaevuhcEyqh1S4 Diff:
OldNewDifferences
2222 let kSWOPid = "SWOP_id"
2323
2424 let kPrefixPoolName = "pool_"
25+
26+let kLastBurned = "last_airdrop_burn"
2527
2628 let burnAirDropPercent = 20
2729
196198 let burnAmount = fraction(swopBalance, burnAirDropPercent, 100)
197199 let aInv = invoke(governanceAddress, "airDrop", nil, [AttachedPayment(swopId, (swopBalance - burnAmount))])
198200 if ((aInv == aInv))
199- then [Burn(swopId, burnAmount)]
201+ then [IntegerEntry(kLastBurned, burnAmount), Burn(swopId, burnAmount)]
200202 else throw("Strict value is not equal to itself.")
201203 }
202204 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let oracle = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
55
66 let kAdminPubKey1 = "admin_pub_1"
77
88 let kAdminPubKey2 = "admin_pub_2"
99
1010 let kAdminPubKey3 = "admin_pub_3"
1111
1212 let kAdminInvokePubKey = "admin_invoke_pub"
1313
1414 let kGovAddress = "governance_address"
1515
1616 let kFarmAddress = "farming_address"
1717
1818 let kSurveysAddress = "surveys_address"
1919
2020 let kRoutingAddr = "routing_address"
2121
2222 let kSWOPid = "SWOP_id"
2323
2424 let kPrefixPoolName = "pool_"
25+
26+let kLastBurned = "last_airdrop_burn"
2527
2628 let burnAirDropPercent = 20
2729
2830 func getBase58FromOracle (key) = match getString(oracle, key) {
2931 case string: String =>
3032 fromBase58String(string)
3133 case nothing =>
3234 throw((key + "is empty"))
3335 }
3436
3537
3638 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
3739
3840 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
3941
4042 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
4143
4244 let adminInvoke = getBase58FromOracle(kAdminInvokePubKey)
4345
4446 let governanceAddress = Address(getBase58FromOracle(kGovAddress))
4547
4648 let farmingAddress = Address(getBase58FromOracle(kFarmAddress))
4749
4850 let surveysAddress = Address(getBase58FromOracle(kSurveysAddress))
4951
5052 let routingAddress = Address(getBase58FromOracle(kRoutingAddr))
5153
5254 let swopId = fromBase58String(getStringValue(farmingAddress, kSWOPid))
5355
5456 func isSelfCall (i) = if ((i.caller == this))
5557 then unit
5658 else throw("Only contract itself can call this function")
5759
5860
5961 func listToInt (a,item) = (a :+ parseIntValue(item))
6062
6163
6264 func assetIdFromStr (assetId) = if ((assetId == "WAVES"))
6365 then unit
6466 else fromBase58String(assetId)
6567
6668
6769 func accountBalance (assetId) = match assetId {
6870 case id: ByteVector =>
6971 assetBalance(this, id)
7072 case waves: Unit =>
7173 wavesBalance(this).available
7274 case _ =>
7375 throw("Match error")
7476 }
7577
7678
7779 func directSwopfiCPMM (rArgs) = {
7880 let dApp = addressFromStringValue(rArgs[1])
7981 let pmt = {
8082 let pmtP = split(rArgs[2], "|")
8183 [AttachedPayment(fromBase58String(pmtP[0]), parseIntValue(pmtP[1]))]
8284 }
8385 let minToRecive = rArgs[3]
8486 invoke(dApp, "callFunction", ["exchange", [minToRecive]], pmt)
8587 }
8688
8789
8890 func directRoutingSwopfi (rArgs) = {
8991 let dApp = addressFromStringValue(rArgs[1])
9092 let pmt = {
9193 let pmtP = split(rArgs[2], "|")
9294 [AttachedPayment(fromBase58String(pmtP[0]), parseIntValue(pmtP[1]))]
9395 }
9496 let args = {
9597 let eArgs = split(rArgs[3], "|")
9698 let exchangers = split(eArgs[0], ",")
9799 let exchangersType = split(eArgs[1], ",")
98100 let args1 = {
99101 let $l = split(eArgs[2], ",")
100102 let $s = size($l)
101103 let $acc0 = nil
102104 func $f0_1 ($a,$i) = if (($i >= $s))
103105 then $a
104106 else listToInt($a, $l[$i])
105107
106108 func $f0_2 ($a,$i) = if (($i >= $s))
107109 then $a
108110 else throw("List size exceeds 3")
109111
110112 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
111113 }
112114 let args2 = {
113115 let $l = split(eArgs[3], ",")
114116 let $s = size($l)
115117 let $acc0 = nil
116118 func $f1_1 ($a,$i) = if (($i >= $s))
117119 then $a
118120 else listToInt($a, $l[$i])
119121
120122 func $f1_2 ($a,$i) = if (($i >= $s))
121123 then $a
122124 else throw("List size exceeds 3")
123125
124126 $f1_2($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3)
125127 }
126128 let routingAssetsKeys = split(eArgs[4], ",")
127129 let minToRecive = parseIntValue(eArgs[5])
128130 [exchangers, exchangersType, args1, args2, routingAssetsKeys, minToRecive]
129131 }
130132 invoke(dApp, "routingTrade", args, pmt)
131133 }
132134
133135
134136 func buySwopForAirdrop (pool,tokenToExchange,amountToLeftForTx) = {
135137 let tokenId = assetIdFromStr(tokenToExchange)
136138 let tokenBalance = accountBalance(tokenId)
137139 if ((tokenBalance == tokenBalance))
138140 then {
139141 let amountToExchange = (tokenBalance - amountToLeftForTx)
140142 if ((0 >= amountToExchange))
141143 then throw("Nothing to exchange for airdrop")
142144 else {
143145 let poolAddr = addressFromStringValue(pool)
144146 invoke(poolAddr, "callFunction", ["exchange", ["1"]], [AttachedPayment(tokenId, amountToExchange)])
145147 }
146148 }
147149 else throw("Strict value is not equal to itself.")
148150 }
149151
150152
151153 @Callable(i)
152154 func exchangeTokens (routes,airdrop,pool,tokenToExchange,amountToLeftForTx) = valueOrElse(isSelfCall(i), {
153155 func exchangeToken (r,route) = {
154156 let rArgs = split(route, "__")
155157 if ((rArgs[0] == "directSwopfiCPMM"))
156158 then {
157159 let inv = directSwopfiCPMM(rArgs)
158160 if ((inv == inv))
159161 then (r :+ inv)
160162 else throw("Strict value is not equal to itself.")
161163 }
162164 else if ((rArgs[0] == "routingSwopfi"))
163165 then {
164166 let inv = directRoutingSwopfi(rArgs)
165167 if ((inv == inv))
166168 then (r :+ inv)
167169 else throw("Strict value is not equal to itself.")
168170 }
169171 else throw("Unknown route type")
170172 }
171173
172174 let res = {
173175 let $l = routes
174176 let $s = size($l)
175177 let $acc0 = nil
176178 func $f0_1 ($a,$i) = if (($i >= $s))
177179 then $a
178180 else exchangeToken($a, $l[$i])
179181
180182 func $f0_2 ($a,$i) = if (($i >= $s))
181183 then $a
182184 else throw("List size exceeds 10")
183185
184186 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
185187 }
186188 if ((res == res))
187189 then if (!(airdrop))
188190 then nil
189191 else {
190192 let inv = buySwopForAirdrop(pool, tokenToExchange, amountToLeftForTx)
191193 if ((inv == inv))
192194 then {
193195 let swopBalance = accountBalance(swopId)
194196 if ((swopBalance == swopBalance))
195197 then {
196198 let burnAmount = fraction(swopBalance, burnAirDropPercent, 100)
197199 let aInv = invoke(governanceAddress, "airDrop", nil, [AttachedPayment(swopId, (swopBalance - burnAmount))])
198200 if ((aInv == aInv))
199- then [Burn(swopId, burnAmount)]
201+ then [IntegerEntry(kLastBurned, burnAmount), Burn(swopId, burnAmount)]
200202 else throw("Strict value is not equal to itself.")
201203 }
202204 else throw("Strict value is not equal to itself.")
203205 }
204206 else throw("Strict value is not equal to itself.")
205207 }
206208 else throw("Strict value is not equal to itself.")
207209 })
208210
209211
210212 @Verifier(tx)
211213 func verify () = match tx {
212214 case inv: InvokeScriptTransaction =>
213215 let isRightFee = if ((inv.fee == 900000))
214216 then (inv.feeAssetId == unit)
215217 else false
216218 let isRoutingCall = if ((inv.dApp == routingAddress))
217219 then (inv.function == "routingTrade")
218220 else false
219221 let isExchangeCallCPMM = if (if (isDefined(getString(oracle, (kPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
220222 then (inv.function == "callFunction")
221223 else false)
222224 then (inv.args[0] == "exchange")
223225 else false
224226 let isExchangeCall = if (isDefined(getString(oracle, (kPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
225227 then (inv.function == "exchange")
226228 else false
227229 let isAirdropCall = (inv.function == "exchangeTokens")
228230 let isUpdateWeightsCall = if ((inv.dApp == governanceAddress))
229231 then (inv.function == "updateWeights")
230232 else false
231233 let isTakenIntoAccountCPMM = if (if (isDefined(getString(oracle, (kPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
232234 then (inv.function == "callFunction")
233235 else false)
234236 then (inv.args[0] == "takeIntoAccountExtraFunds")
235237 else false
236238 let isTakenIntoAccount = if (isDefined(getString(oracle, (kPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
237239 then (inv.function == "takeIntoAccountExtraFunds")
238240 else false
239241 let isWriteTotal = if ((inv.dApp == surveysAddress))
240242 then (inv.function == "writeTotals")
241243 else false
242244 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
243245 then 1
244246 else 0
245247 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
246248 then 1
247249 else 0
248250 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
249251 then 1
250252 else 0
251253 let adminPubKeyInvokeSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke))
252254 then 1
253255 else 0
254256 let signedByOneAdmin = ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKeyInvokeSigned) >= 1)
255257 if (if (if (if (if (if (isExchangeCall)
256258 then true
257259 else isExchangeCallCPMM)
258260 then true
259261 else isRoutingCall)
260262 then (size(inv.payments) == 1)
261263 else false)
262264 then true
263265 else if (if (if (if (if (isUpdateWeightsCall)
264266 then true
265267 else isTakenIntoAccount)
266268 then true
267269 else isTakenIntoAccountCPMM)
268270 then true
269271 else isWriteTotal)
270272 then true
271273 else isAirdropCall)
272274 then (size(inv.payments) == 0)
273275 else false)
274276 then signedByOneAdmin
275277 else false)
276278 then isRightFee
277279 else false
278280 case _ =>
279281 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
280282 then 1
281283 else 0
282284 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
283285 then 1
284286 else 0
285287 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
286288 then 1
287289 else 0
288290 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
289291 }
290292

github/deemru/w8io/786bc32 
30.37 ms