2024.03.18 13:25 [4089186] smart account 3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp > SELF 0.00000000 Waves

{ "type": 13, "id": "Dc7TXAa6rLPun2zcFtQMsBtBG9bXu2B8xUy9q54gwhzD", "fee": 1100000, "feeAssetId": null, "timestamp": 1710757486281, "version": 2, "chainId": 87, "sender": "3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp", "senderPublicKey": "GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw", "proofs": [ "26yCdDjyG3cWm558DsCxfvTS8vuEkPWHhTXwCi6W3nNbai4NZhvrvRac35Tu8WtgvwMFrgtQgPMPypVuYeqbb7E7", "", "41ozRpVFU8nbgjBR7J5gE8VojFDmD54gazWEXHx7GoNDz2aTcAcGPGPD5XgPQN35QxFfkYPV1iHXSmtr6o5osQet" ], "script": "base64:BgILCAISBwoFGAQICAEdAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVeK/whomjW6QM1hdPISN96mN/D6OM7oHjgADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgALa0dvdkFkZHJlc3MCEmdvdmVybmFuY2VfYWRkcmVzcwAMa0Zhcm1BZGRyZXNzAg9mYXJtaW5nX2FkZHJlc3MAD2tTdXJ2ZXlzQWRkcmVzcwIPc3VydmV5c19hZGRyZXNzAAxrUm91dGluZ0FkZHICD3JvdXRpbmdfYWRkcmVzcwAHa1NXT1BpZAIHU1dPUF9pZAAPa1ByZWZpeFBvb2xOYW1lAgVwb29sXwASYnVybkFpckRyb3BQZXJjZW50ABQBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMAC2FkbWluSW52b2tlCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEmtBZG1pbkludm9rZVB1YktleQARZ292ZXJuYW5jZUFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrR292QWRkcmVzcwAOZmFybWluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrRmFybUFkZHJlc3MADnN1cnZleXNBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUPa1N1cnZleXNBZGRyZXNzAA5yb3V0aW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtSb3V0aW5nQWRkcgAGc3dvcElkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDmZhcm1pbmdBZGRyZXNzBQdrU1dPUGlkAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCWxpc3RUb0ludAIBYQRpdGVtCQDNCAIFAWEJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQEOYXNzZXRJZEZyb21TdHIBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBEGRpcmVjdFN3b3BmaUNQTU0BBXJBcmdzBARkQXBwCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBXJBcmdzAAEEA3BtdAQEcG10UAkAtQkCCQCRAwIFBXJBcmdzAAICAXwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQkAkQMCBQRwbXRQAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRwbXRQAAEFA25pbAQLbWluVG9SZWNpdmUJAJEDAgUFckFyZ3MAAwkA/AcEBQRkQXBwAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCBQttaW5Ub1JlY2l2ZQUDbmlsBQNuaWwFA3BtdAETZGlyZWN0Um91dGluZ1N3b3BmaQEFckFyZ3MEBGRBcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUFckFyZ3MAAQQDcG10BARwbXRQCQC1CQIJAJEDAgUFckFyZ3MAAgIBfAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBCQCRAwIFBHBtdFAAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBHBtdFAAAQUDbmlsBARhcmdzBAVlQXJncwkAtQkCCQCRAwIFBXJBcmdzAAMCAXwECmV4Y2hhbmdlcnMJALUJAgkAkQMCBQVlQXJncwAAAgEsBA5leGNoYW5nZXJzVHlwZQkAtQkCCQCRAwIFBWVBcmdzAAECASwEBWFyZ3MxCgACJGwJALUJAgkAkQMCBQVlQXJncwACAgEsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlsaXN0VG9JbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMEBWFyZ3MyCgACJGwJALUJAgkAkQMCBQVlQXJncwADAgEsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlsaXN0VG9JbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMEEXJvdXRpbmdBc3NldHNLZXlzCQC1CQIJAJEDAgUFZUFyZ3MABAIBLAQLbWluVG9SZWNpdmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVlQXJncwAFCQDMCAIFCmV4Y2hhbmdlcnMJAMwIAgUOZXhjaGFuZ2Vyc1R5cGUJAMwIAgUFYXJnczEJAMwIAgUFYXJnczIJAMwIAgURcm91dGluZ0Fzc2V0c0tleXMJAMwIAgULbWluVG9SZWNpdmUFA25pbAkA/AcEBQRkQXBwAgxyb3V0aW5nVHJhZGUFBGFyZ3MFA3BtdAERYnV5U3dvcEZvckFpcmRyb3ADBHBvb2wPdG9rZW5Ub0V4Y2hhbmdlEWFtb3VudFRvTGVmdEZvclR4BAd0b2tlbklkCQEOYXNzZXRJZEZyb21TdHIBBQ90b2tlblRvRXhjaGFuZ2UEDHRva2VuQmFsYW5jZQkBDmFjY291bnRCYWxhbmNlAQUHdG9rZW5JZAMJAAACBQx0b2tlbkJhbGFuY2UFDHRva2VuQmFsYW5jZQQQYW1vdW50VG9FeGNoYW5nZQkAZQIFDHRva2VuQmFsYW5jZQURYW1vdW50VG9MZWZ0Rm9yVHgDCQBnAgAABRBhbW91bnRUb0V4Y2hhbmdlCQACAQIfTm90aGluZyB0byBleGNoYW5nZSBmb3IgYWlyZHJvcAQIcG9vbEFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAghleGNoYW5nZQkAzAgCCQDMCAICATEFA25pbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQd0b2tlbklkBRBhbW91bnRUb0V4Y2hhbmdlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAWkBDmV4Y2hhbmdlVG9rZW5zBQZyb3V0ZXMHYWlyZHJvcARwb29sD3Rva2VuVG9FeGNoYW5nZRFhbW91bnRUb0xlZnRGb3JUeAkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpCgENZXhjaGFuZ2VUb2tlbgIBcgVyb3V0ZQQFckFyZ3MJALUJAgUFcm91dGUCAl9fAwkAAAIJAJEDAgUFckFyZ3MAAAIQZGlyZWN0U3dvcGZpQ1BNTQQDaW52CQEQZGlyZWN0U3dvcGZpQ1BNTQEFBXJBcmdzAwkAAAIFA2ludgUDaW52CQDNCAIFAXIFA2ludgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACCQCRAwIFBXJBcmdzAAACDXJvdXRpbmdTd29wZmkEA2ludgkBE2RpcmVjdFJvdXRpbmdTd29wZmkBBQVyQXJncwMJAAACBQNpbnYFA2ludgkAzQgCBQFyBQNpbnYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAhJVbmtub3duIHJvdXRlIHR5cGUEA3JlcwoAAiRsBQZyb3V0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDWV4Y2hhbmdlVG9rZW4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUDcmVzBQNyZXMDCQEBIQEFB2FpcmRyb3AFA25pbAQDaW52CQERYnV5U3dvcEZvckFpcmRyb3ADBQRwb29sBQ90b2tlblRvRXhjaGFuZ2UFEWFtb3VudFRvTGVmdEZvclR4AwkAAAIFA2ludgUDaW52BAtzd29wQmFsYW5jZQkBDmFjY291bnRCYWxhbmNlAQUGc3dvcElkAwkAAAIFC3N3b3BCYWxhbmNlBQtzd29wQmFsYW5jZQQKYnVybkFtb3VudAkAawMFC3N3b3BCYWxhbmNlBRJidXJuQWlyRHJvcFBlcmNlbnQAZAQEYUludgkA/AcEBRFnb3Zlcm5hbmNlQWRkcmVzcwIHYWlyRHJvcAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQZzd29wSWQJAGUCBQtzd29wQmFsYW5jZQUKYnVybkFtb3VudAUDbmlsAwkAAAIFBGFJbnYFBGFJbnYJAMwIAgkBBEJ1cm4CBQZzd29wSWQFCmJ1cm5BbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDAECmlzUmlnaHRGZWUDCQAAAggFA2ludgNmZWUAoPc2CQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwQNaXNSb3V0aW5nQ2FsbAMJAAACCAUDaW52BGRBcHAFDnJvdXRpbmdBZGRyZXNzCQAAAggFA2ludghmdW5jdGlvbgIMcm91dGluZ1RyYWRlBwQSaXNFeGNoYW5nZUNhbGxDUE1NAwMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBQ9rUHJlZml4UG9vbE5hbWUJAKUIAQkApAgBCAUDaW52BGRBcHAJAAACCAUDaW52CGZ1bmN0aW9uAgxjYWxsRnVuY3Rpb24HCQAAAgkAkQMCCAUDaW52BGFyZ3MAAAIIZXhjaGFuZ2UHBA5pc0V4Y2hhbmdlQ2FsbAMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBQ9rUHJlZml4UG9vbE5hbWUJAKUIAQkApAgBCAUDaW52BGRBcHAJAAACCAUDaW52CGZ1bmN0aW9uAghleGNoYW5nZQcEDWlzQWlyZHJvcENhbGwJAAACCAUDaW52CGZ1bmN0aW9uAg5leGNoYW5nZVRva2VucwQTaXNVcGRhdGVXZWlnaHRzQ2FsbAMJAAACCAUDaW52BGRBcHAFEWdvdmVybmFuY2VBZGRyZXNzCQAAAggFA2ludghmdW5jdGlvbgINdXBkYXRlV2VpZ2h0cwcEFmlzVGFrZW5JbnRvQWNjb3VudENQTU0DAwkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFD2tQcmVmaXhQb29sTmFtZQkApQgBCQCkCAEIBQNpbnYEZEFwcAkAAAIIBQNpbnYIZnVuY3Rpb24CDGNhbGxGdW5jdGlvbgcJAAACCQCRAwIIBQNpbnYEYXJncwAAAhl0YWtlSW50b0FjY291bnRFeHRyYUZ1bmRzBwQSaXNUYWtlbkludG9BY2NvdW50AwkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFD2tQcmVmaXhQb29sTmFtZQkApQgBCQCkCAEIBQNpbnYEZEFwcAkAAAIIBQNpbnYIZnVuY3Rpb24CGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMHBAxpc1dyaXRlVG90YWwDCQAAAggFA2ludgRkQXBwBQ5zdXJ2ZXlzQWRkcmVzcwkAAAIIBQNpbnYIZnVuY3Rpb24CC3dyaXRlVG90YWxzBwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkzAAEAAAQXYWRtaW5QdWJLZXlJbnZva2VTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQthZG1pbkludm9rZQABAAAEEHNpZ25lZEJ5T25lQWRtaW4JAGcCCQBkAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkBRdhZG1pblB1YktleUludm9rZVNpZ25lZAABAwMDAwMDBQ5pc0V4Y2hhbmdlQ2FsbAYFEmlzRXhjaGFuZ2VDYWxsQ1BNTQYFDWlzUm91dGluZ0NhbGwJAAACCQCQAwEIBQNpbnYIcGF5bWVudHMAAQcGAwMDAwMFE2lzVXBkYXRlV2VpZ2h0c0NhbGwGBRJpc1Rha2VuSW50b0FjY291bnQGBRZpc1Rha2VuSW50b0FjY291bnRDUE1NBgUMaXNXcml0ZVRvdGFsBgUNaXNBaXJkcm9wQ2FsbAkAAAIJAJADAQgFA2ludghwYXltZW50cwAABwUQc2lnbmVkQnlPbmVBZG1pbgcFCmlzUmlnaHRGZWUHBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAALrkTjY", "height": 4089186, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8eM56QNm2yyZ6Gk7HCPPYKK2YiyjLtHQuQ7u9Ve19G93 Next: G4ZTW8Skf37uNkaSm1zFdhTFqjNy2VH14yPo5XyPMtk1 Diff:
OldNewDifferences
2222 let kSWOPid = "SWOP_id"
2323
2424 let kPrefixPoolName = "pool_"
25+
26+let burnAirDropPercent = 20
2527
2628 func getBase58FromOracle (key) = match getString(oracle, key) {
2729 case string: String =>
191193 let swopBalance = accountBalance(swopId)
192194 if ((swopBalance == swopBalance))
193195 then {
194- let aInv = invoke(governanceAddress, "airDrop", nil, [AttachedPayment(swopId, swopBalance)])
196+ let burnAmount = fraction(swopBalance, burnAirDropPercent, 100)
197+ let aInv = invoke(governanceAddress, "airDrop", nil, [AttachedPayment(swopId, (swopBalance - burnAmount))])
195198 if ((aInv == aInv))
196- then nil
199+ then [Burn(swopId, burnAmount)]
197200 else throw("Strict value is not equal to itself.")
198201 }
199202 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 burnAirDropPercent = 20
2527
2628 func getBase58FromOracle (key) = match getString(oracle, key) {
2729 case string: String =>
2830 fromBase58String(string)
2931 case nothing =>
3032 throw((key + "is empty"))
3133 }
3234
3335
3436 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
3537
3638 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
3739
3840 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
3941
4042 let adminInvoke = getBase58FromOracle(kAdminInvokePubKey)
4143
4244 let governanceAddress = Address(getBase58FromOracle(kGovAddress))
4345
4446 let farmingAddress = Address(getBase58FromOracle(kFarmAddress))
4547
4648 let surveysAddress = Address(getBase58FromOracle(kSurveysAddress))
4749
4850 let routingAddress = Address(getBase58FromOracle(kRoutingAddr))
4951
5052 let swopId = fromBase58String(getStringValue(farmingAddress, kSWOPid))
5153
5254 func isSelfCall (i) = if ((i.caller == this))
5355 then unit
5456 else throw("Only contract itself can call this function")
5557
5658
5759 func listToInt (a,item) = (a :+ parseIntValue(item))
5860
5961
6062 func assetIdFromStr (assetId) = if ((assetId == "WAVES"))
6163 then unit
6264 else fromBase58String(assetId)
6365
6466
6567 func accountBalance (assetId) = match assetId {
6668 case id: ByteVector =>
6769 assetBalance(this, id)
6870 case waves: Unit =>
6971 wavesBalance(this).available
7072 case _ =>
7173 throw("Match error")
7274 }
7375
7476
7577 func directSwopfiCPMM (rArgs) = {
7678 let dApp = addressFromStringValue(rArgs[1])
7779 let pmt = {
7880 let pmtP = split(rArgs[2], "|")
7981 [AttachedPayment(fromBase58String(pmtP[0]), parseIntValue(pmtP[1]))]
8082 }
8183 let minToRecive = rArgs[3]
8284 invoke(dApp, "callFunction", ["exchange", [minToRecive]], pmt)
8385 }
8486
8587
8688 func directRoutingSwopfi (rArgs) = {
8789 let dApp = addressFromStringValue(rArgs[1])
8890 let pmt = {
8991 let pmtP = split(rArgs[2], "|")
9092 [AttachedPayment(fromBase58String(pmtP[0]), parseIntValue(pmtP[1]))]
9193 }
9294 let args = {
9395 let eArgs = split(rArgs[3], "|")
9496 let exchangers = split(eArgs[0], ",")
9597 let exchangersType = split(eArgs[1], ",")
9698 let args1 = {
9799 let $l = split(eArgs[2], ",")
98100 let $s = size($l)
99101 let $acc0 = nil
100102 func $f0_1 ($a,$i) = if (($i >= $s))
101103 then $a
102104 else listToInt($a, $l[$i])
103105
104106 func $f0_2 ($a,$i) = if (($i >= $s))
105107 then $a
106108 else throw("List size exceeds 3")
107109
108110 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
109111 }
110112 let args2 = {
111113 let $l = split(eArgs[3], ",")
112114 let $s = size($l)
113115 let $acc0 = nil
114116 func $f1_1 ($a,$i) = if (($i >= $s))
115117 then $a
116118 else listToInt($a, $l[$i])
117119
118120 func $f1_2 ($a,$i) = if (($i >= $s))
119121 then $a
120122 else throw("List size exceeds 3")
121123
122124 $f1_2($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3)
123125 }
124126 let routingAssetsKeys = split(eArgs[4], ",")
125127 let minToRecive = parseIntValue(eArgs[5])
126128 [exchangers, exchangersType, args1, args2, routingAssetsKeys, minToRecive]
127129 }
128130 invoke(dApp, "routingTrade", args, pmt)
129131 }
130132
131133
132134 func buySwopForAirdrop (pool,tokenToExchange,amountToLeftForTx) = {
133135 let tokenId = assetIdFromStr(tokenToExchange)
134136 let tokenBalance = accountBalance(tokenId)
135137 if ((tokenBalance == tokenBalance))
136138 then {
137139 let amountToExchange = (tokenBalance - amountToLeftForTx)
138140 if ((0 >= amountToExchange))
139141 then throw("Nothing to exchange for airdrop")
140142 else {
141143 let poolAddr = addressFromStringValue(pool)
142144 invoke(poolAddr, "callFunction", ["exchange", ["1"]], [AttachedPayment(tokenId, amountToExchange)])
143145 }
144146 }
145147 else throw("Strict value is not equal to itself.")
146148 }
147149
148150
149151 @Callable(i)
150152 func exchangeTokens (routes,airdrop,pool,tokenToExchange,amountToLeftForTx) = valueOrElse(isSelfCall(i), {
151153 func exchangeToken (r,route) = {
152154 let rArgs = split(route, "__")
153155 if ((rArgs[0] == "directSwopfiCPMM"))
154156 then {
155157 let inv = directSwopfiCPMM(rArgs)
156158 if ((inv == inv))
157159 then (r :+ inv)
158160 else throw("Strict value is not equal to itself.")
159161 }
160162 else if ((rArgs[0] == "routingSwopfi"))
161163 then {
162164 let inv = directRoutingSwopfi(rArgs)
163165 if ((inv == inv))
164166 then (r :+ inv)
165167 else throw("Strict value is not equal to itself.")
166168 }
167169 else throw("Unknown route type")
168170 }
169171
170172 let res = {
171173 let $l = routes
172174 let $s = size($l)
173175 let $acc0 = nil
174176 func $f0_1 ($a,$i) = if (($i >= $s))
175177 then $a
176178 else exchangeToken($a, $l[$i])
177179
178180 func $f0_2 ($a,$i) = if (($i >= $s))
179181 then $a
180182 else throw("List size exceeds 10")
181183
182184 $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)
183185 }
184186 if ((res == res))
185187 then if (!(airdrop))
186188 then nil
187189 else {
188190 let inv = buySwopForAirdrop(pool, tokenToExchange, amountToLeftForTx)
189191 if ((inv == inv))
190192 then {
191193 let swopBalance = accountBalance(swopId)
192194 if ((swopBalance == swopBalance))
193195 then {
194- let aInv = invoke(governanceAddress, "airDrop", nil, [AttachedPayment(swopId, swopBalance)])
196+ let burnAmount = fraction(swopBalance, burnAirDropPercent, 100)
197+ let aInv = invoke(governanceAddress, "airDrop", nil, [AttachedPayment(swopId, (swopBalance - burnAmount))])
195198 if ((aInv == aInv))
196- then nil
199+ then [Burn(swopId, burnAmount)]
197200 else throw("Strict value is not equal to itself.")
198201 }
199202 else throw("Strict value is not equal to itself.")
200203 }
201204 else throw("Strict value is not equal to itself.")
202205 }
203206 else throw("Strict value is not equal to itself.")
204207 })
205208
206209
207210 @Verifier(tx)
208211 func verify () = match tx {
209212 case inv: InvokeScriptTransaction =>
210213 let isRightFee = if ((inv.fee == 900000))
211214 then (inv.feeAssetId == unit)
212215 else false
213216 let isRoutingCall = if ((inv.dApp == routingAddress))
214217 then (inv.function == "routingTrade")
215218 else false
216219 let isExchangeCallCPMM = if (if (isDefined(getString(oracle, (kPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
217220 then (inv.function == "callFunction")
218221 else false)
219222 then (inv.args[0] == "exchange")
220223 else false
221224 let isExchangeCall = if (isDefined(getString(oracle, (kPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
222225 then (inv.function == "exchange")
223226 else false
224227 let isAirdropCall = (inv.function == "exchangeTokens")
225228 let isUpdateWeightsCall = if ((inv.dApp == governanceAddress))
226229 then (inv.function == "updateWeights")
227230 else false
228231 let isTakenIntoAccountCPMM = if (if (isDefined(getString(oracle, (kPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
229232 then (inv.function == "callFunction")
230233 else false)
231234 then (inv.args[0] == "takeIntoAccountExtraFunds")
232235 else false
233236 let isTakenIntoAccount = if (isDefined(getString(oracle, (kPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
234237 then (inv.function == "takeIntoAccountExtraFunds")
235238 else false
236239 let isWriteTotal = if ((inv.dApp == surveysAddress))
237240 then (inv.function == "writeTotals")
238241 else false
239242 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
240243 then 1
241244 else 0
242245 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
243246 then 1
244247 else 0
245248 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
246249 then 1
247250 else 0
248251 let adminPubKeyInvokeSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke))
249252 then 1
250253 else 0
251254 let signedByOneAdmin = ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKeyInvokeSigned) >= 1)
252255 if (if (if (if (if (if (isExchangeCall)
253256 then true
254257 else isExchangeCallCPMM)
255258 then true
256259 else isRoutingCall)
257260 then (size(inv.payments) == 1)
258261 else false)
259262 then true
260263 else if (if (if (if (if (isUpdateWeightsCall)
261264 then true
262265 else isTakenIntoAccount)
263266 then true
264267 else isTakenIntoAccountCPMM)
265268 then true
266269 else isWriteTotal)
267270 then true
268271 else isAirdropCall)
269272 then (size(inv.payments) == 0)
270273 else false)
271274 then signedByOneAdmin
272275 else false)
273276 then isRightFee
274277 else false
275278 case _ =>
276279 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
277280 then 1
278281 else 0
279282 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
280283 then 1
281284 else 0
282285 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
283286 then 1
284287 else 0
285288 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
286289 }
287290

github/deemru/w8io/786bc32 
46.58 ms