tx · 712Ae6e6UtgVmkqu8LZoubZtfEQDRWGg6exogTehipqL

3PK7Xe5BiedRyxHLuMQx5ey9riUQqvUths2:  -0.01200000 Waves

2022.11.25 11:06 [3397811] smart account 3PK7Xe5BiedRyxHLuMQx5ey9riUQqvUths2 > SELF 0.00000000 Waves

{ "type": 13, "id": "712Ae6e6UtgVmkqu8LZoubZtfEQDRWGg6exogTehipqL", "fee": 1200000, "feeAssetId": null, "timestamp": 1669363334872, "version": 2, "chainId": 87, "sender": "3PK7Xe5BiedRyxHLuMQx5ey9riUQqvUths2", "senderPublicKey": "7hEH4UN8YsnvBCS3YmjieqS332S69yTNjxNp83SmtDrQ", "proofs": [ "", "bLaqCcChNLpAyqntVDjHy9J3gz4yt6kRvpmHLzgvgHyY9ou9Lcy11cB7ue1QbNzubqo2Dc2KYpdT2VZ5AVokQ5G", "4nQjFcSXz7RszgHsUbVoFqch6Fy8Tak4BPKioDfbAUHbQ2eSW7CpWVZLY4cHed4pTyxXNstpxJjULPPxPzYaH33R" ], "script": "base64:BgIkCAISBAoCCBgSABIAEgUKAwQBCBIDCgEBEgMKAQESABIDCgEBJwAHa0FjdGl2ZQIGYWN0aXZlAAZrQ2F1c2UCDnNodXRkb3duX2NhdXNlAAxrVVNETkFkZHJlc3MCGHN0YWtpbmdfdXNkbm5zYnRfYWRkcmVzcwAMa0VVUk5BZGRyZXNzAhRzdGFraW5nX2V1cm5fYWRkcmVzcwAMa0xlYXNpbmdQb29sAg9sZWFzaW5nX2FkZHJlc3MADmtMZWFzaW5nQW1vdW50Ag5sZWFzaW5nX2Ftb3VudAAKa0xlYXNpbmdJZAIKbGVhc2luZ19pZAANa0FkbWluUHViS2V5MQILYWRtaW5fcHViXzEADWtBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA1rQWRtaW5QdWJLZXkzAgthZG1pbl9wdWJfMwASa0FkbWluSW52b2tlUHViS2V5AhBhZG1pbl9pbnZva2VfcHViAA1rQ3BtbUNvbnRyYWN0Ag1jcG1tX2NvbnRyYWN0AAxrVVNETkFzc2V0SWQCDXVzZG5fYXNzZXRfaWQADGtFVVJOQXNzZXRJZAINZXVybl9hc3NldF9pZAAOa1N0YWtpbmdBc3NldHMCDnN0YWtpbmdfYXNzZXRzAA1rU2hhcmVBc3NldElkAg5zaGFyZV9hc3NldF9pZAAGb3JhY2xlCQEHQWRkcmVzcwEBGgFXiv8IaJo1ukDNYXTyEjfepjfw+jjO6B44ARNnZXRCYXNlNThGcm9tT3JhY2xlAQNrZXkEByRtYXRjaDAJAJ0IAgUGb3JhY2xlBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAJANkEAQUGc3RyaW5nBAdub3RoaW5nBQckbWF0Y2gwCQACAQkArAICBQNrZXkCCGlzIGVtcHR5AAxhZG1pblB1YktleTEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MQAMYWRtaW5QdWJLZXkyCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTIADGFkbWluUHViS2V5MwkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkzABFhZG1pblB1YktleUludm9rZQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrQWRtaW5JbnZva2VQdWJLZXkAEnN0YWtpbmdVU0ROQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtVU0ROQWRkcmVzcwASc3Rha2luZ0VVUk5BZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0VVUk5BZGRyZXNzAAxjcG1tQ29udHJhY3QJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQ3BtbUNvbnRyYWN0AARVU0ROCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtVU0ROQXNzZXRJZAAERVVSTgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrRVVSTkFzc2V0SWQADXN0YWtpbmdBc3NldHMJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUOa1N0YWtpbmdBc3NldHMABmFjdGl2ZQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQdrQWN0aXZlBgEIaXNBY3RpdmUAAwUGYWN0aXZlBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAEOaXNHbG9iYWxDYWxsZXIBBmNhbGxlcgMJAAACBQZjYWxsZXIFDGNwbW1Db250cmFjdAUEdW5pdAkAAgECLU9ubHkgZ2xvYmFsIENvbnRyYWN0IGNhbiBpbnZva2UgdGhpcyBmdW5jdGlvbgELaXNBZG1pbkNhbGwBDGNhbGxlclB1YktleQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzBQNuaWwFDGNhbGxlclB1YktleQUEdW5pdAkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEHc3VzcGVuZAEFY2F1c2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmtDYXVzZQUFY2F1c2UFA25pbAEYY2FsY1N0YWtpbmdGdW5jQW5kQWRkcmVzAgVzdGFrZQdhc3NldElkAwUFc3Rha2UDCQAAAgUHYXNzZXRJZAUEVVNETgkAlAoCAgxsb2NrTmV1dHJpbm8FEnN0YWtpbmdVU0ROQWRkcmVzcwkAlAoCAgxzdGFydFN0YWtpbmcFEnN0YWtpbmdFVVJOQWRkcmVzcwMJAAACBQdhc3NldElkBQRVU0ROCQCUCgICDnVubG9ja05ldXRyaW5vBRJzdGFraW5nVVNETkFkZHJlc3MJAJQKAgILc3RvcFN0YWtpbmcFEnN0YWtpbmdFVVJOQWRkcmVzcwERY2FsY1N0YWtpbmdQYXJhbXMDBXN0YWtlBmFtb3VudAdhc3NldElkAwUFc3Rha2UECyR0MDI0NzMyNTM5CQEYY2FsY1N0YWtpbmdGdW5jQW5kQWRkcmVzAgUFc3Rha2UFB2Fzc2V0SWQEBGNhbGwIBQskdDAyNDczMjUzOQJfMQQLc3Rha2luZ0FkZHIIBQskdDAyNDczMjUzOQJfMgkAlgoEBQRjYWxsBQtzdGFraW5nQWRkcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBQZhbW91bnQFA25pbAQLJHQwMjYyNTI2OTEJARhjYWxjU3Rha2luZ0Z1bmNBbmRBZGRyZXMCBQVzdGFrZQUHYXNzZXRJZAQEY2FsbAgFCyR0MDI2MjUyNjkxAl8xBAtzdGFraW5nQWRkcggFCyR0MDI2MjUyNjkxAl8yCQCWCgQFBGNhbGwFC3N0YWtpbmdBZGRyCQDMCAIFBmFtb3VudAkAzAgCCQDYBAEFB2Fzc2V0SWQFA25pbAUDbmlsAQ9jb2xsZWN0UGF5bWVudHMCA2FjYwdwYXltZW50BAskdDAyODUzMjg5NgUDYWNjBA5wYXltZW50QW1vdW50cwgFCyR0MDI4NTMyODk2Al8xBA9wYXltZW50QXNzZXRJZHMIBQskdDAyODUzMjg5NgJfMgkAlAoCCQDNCAIFDnBheW1lbnRBbW91bnRzCAUHcGF5bWVudAZhbW91bnQJAM0IAgUPcGF5bWVudEFzc2V0SWRzAwkAAAIIBQdwYXltZW50B2Fzc2V0SWQFBHVuaXQBAAgFB3BheW1lbnQHYXNzZXRJZAEMY29sbGVjdFN0YXRlAgZyZXN1bHQGc291cmNlBAckbWF0Y2gwBQZzb3VyY2UDAwkAAQIFByRtYXRjaDACBUlzc3VlBgMJAAECBQckbWF0Y2gwAgRCdXJuBgMJAAECBQckbWF0Y2gwAgdSZWlzc3VlBgMJAAECBQckbWF0Y2gwAg5TY3JpcHRUcmFuc2ZlcgYDCQABAgUHJG1hdGNoMAILQmluYXJ5RW50cnkGAwkAAQIFByRtYXRjaDACDEJvb2xlYW5FbnRyeQYDCQABAgUHJG1hdGNoMAILU3RyaW5nRW50cnkGCQABAgUHJG1hdGNoMAIMSW50ZWdlckVudHJ5BAFlBQckbWF0Y2gwCQDNCAIFBnJlc3VsdAUBZQUGcmVzdWx0AQtjb2xsZWN0RGF0YQIGcmVzdWx0BnNvdXJjZQQHJG1hdGNoMAUGc291cmNlAwkAAQIFByRtYXRjaDACBlN0cmluZwQBdgUHJG1hdGNoMAkAzQgCBQZyZXN1bHQFAXYDCQABAgUHJG1hdGNoMAIDSW50BAF2BQckbWF0Y2gwCQDNCAIFBnJlc3VsdAUBdgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAF2BQckbWF0Y2gwCQDNCAIFBnJlc3VsdAUBdgMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAF2BQckbWF0Y2gwCQDNCAIFBnJlc3VsdAUBdgMJAAECBQckbWF0Y2gwAgRVbml0BAF2BQckbWF0Y2gwCQDNCAIFBnJlc3VsdAUBdgkBBXRocm93AAEKY2FsbENvbW1vbgQIZnVuY05hbWUGY2FsbGVyBGFyZ3MIcGF5bWVudHMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAECyR0MDM4MTYzOTAwCgACJGwFCHBheW1lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEPY29sbGVjdFBheW1lbnRzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBA5wYXltZW50QW1vdW50cwgFCyR0MDM4MTYzOTAwAl8xBA9wYXltZW50QXNzZXRJZHMIBQskdDAzODE2MzkwMAJfMgQLJHQwMzkwNTQwNTMKAAFACQD9BwQFDGNwbW1Db250cmFjdAUIZnVuY05hbWUJAMwIAgUGY2FsbGVyCQDMCAIFBGFyZ3MJAMwIAgUOcGF5bWVudEFtb3VudHMJAMwIAgUPcGF5bWVudEFzc2V0SWRzBQNuaWwFA25pbAMJAAECBQFAAhYoTGlzdFtBbnldLCBMaXN0W0FueV0pBQFACQACAQkArAICCQADAQUBQAIrIGNvdWxkbid0IGJlIGNhc3QgdG8gKExpc3RbQW55XSwgTGlzdFtBbnldKQMJAAACBQskdDAzOTA1NDA1MwULJHQwMzkwNTQwNTMEBGRhdGEIBQskdDAzOTA1NDA1MwJfMgQHYWN0aW9ucwgFCyR0MDM5MDU0MDUzAl8xBAptYXBwZWREYXRhCgACJGwFBGRhdGEKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBC2NvbGxlY3REYXRhAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBA1tYXBwZWRBY3Rpb25zCgACJGwFB2FjdGlvbnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGNvbGxlY3RTdGF0ZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8JAJQKAgUNbWFwcGVkQWN0aW9ucwUKbWFwcGVkRGF0YQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLggBaQEMY2FsbEZ1bmN0aW9uAghmdW5jTmFtZQRhcmdzCQEKY2FsbENvbW1vbgQFCGZ1bmNOYW1lCAgFAWkGY2FsbGVyBWJ5dGVzBQRhcmdzCAUBaQhwYXltZW50cwFpAQhzaHV0ZG93bgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEIBQFpD2NhbGxlclB1YmxpY0tleQMJAQEhAQUGYWN0aXZlCQACAQkArAICAiJEQXBwIGlzIGFscmVhZHkgc3VzcGVuZGVkLiBDYXVzZTogCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFBmtDYXVzZQIadGhlIGNhdXNlIHdhc24ndCBzcGVjaWZpZWQJAQdzdXNwZW5kAQIPUGF1c2VkIGJ5IGFkbWluAWkBCGFjdGl2YXRlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQgFAWkPY2FsbGVyUHVibGljS2V5AwUGYWN0aXZlCQACAQIWREFwcCBpcyBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUGa0NhdXNlBQNuaWwBaQEMc3Rha2VVbnN0YWtlAwVzdGFrZQZhbW91bnQNYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQIhPQIIBQFpBmNhbGxlcgUMY3BtbUNvbnRyYWN0CQACAQItT25seSBnbG9iYWwgQ29udHJhY3QgY2FuIGludm9rZSB0aGlzIGZ1bmN0aW9uAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBARwb29sCQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUGb3JhY2xlBQxrTGVhc2luZ1Bvb2wCGU5vIGxlYXNpbmcgcG9vbCBpbiBvcmFjbGUECWxlYXNpbmdJZAkAnAgCBQR0aGlzBQprTGVhc2luZ0lkBA1sZWFzaW5nQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtMZWFzaW5nQW1vdW50AAAEDm5ld0xlYXNlQW1vdW50AwUFc3Rha2UJAGQCBQ1sZWFzaW5nQW1vdW50BQZhbW91bnQJAGUCBQ1sZWFzaW5nQW1vdW50BQZhbW91bnQECG5ld0xlYXNlCQDECAIFBHBvb2wFDm5ld0xlYXNlQW1vdW50BApuZXdMZWFzZUlkCQC5CAEFCG5ld0xlYXNlBAhiYXNlRXRyeQkAzAgCBQhuZXdMZWFzZQkAzAgCCQELQmluYXJ5RW50cnkCBQprTGVhc2luZ0lkBQpuZXdMZWFzZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rTGVhc2luZ0Ftb3VudAUObmV3TGVhc2VBbW91bnQFA25pbAQHJG1hdGNoMAUJbGVhc2luZ0lkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEA2xJZAUHJG1hdGNoMAkAzggCCQDMCAIJAQtMZWFzZUNhbmNlbAEFA2xJZAUDbmlsBQhiYXNlRXRyeQUIYmFzZUV0cnkECyR0MDYwNDk2MTUyCQERY2FsY1N0YWtpbmdQYXJhbXMDBQVzdGFrZQUGYW1vdW50CQDZBAEFDWFzc2V0SWRTdHJpbmcEBGNhbGwIBQskdDA2MDQ5NjE1MgJfMQQEYWRkcggFCyR0MDYwNDk2MTUyAl8yBAZwYXJhbXMIBQskdDA2MDQ5NjE1MgJfMwQIcGF5bWVudHMIBQskdDA2MDQ5NjE1MgJfNAQDaW52CQD8BwQFBGFkZHIFBGNhbGwFBnBhcmFtcwUIcGF5bWVudHMDCQAAAgUDaW52BQNpbnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFyZWlzc3VlU2hhcmVUb2tlbgEGYW1vdW50CQELdmFsdWVPckVsc2UCCQEOaXNHbG9iYWxDYWxsZXIBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDHNoYXJlQXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQ1rU2hhcmVBc3NldElkCQDMCAIJAQdSZWlzc3VlAwUMc2hhcmVBc3NldElkBQZhbW91bnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAFpARZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zARFzbGlwcGFnZVRvbGVyYW5jZQkBCmNhbGxDb21tb24EAhZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAgFAWkIcGF5bWVudHMBaQEId2l0aGRyYXcACQEKY2FsbENvbW1vbgQCCHdpdGhkcmF3CAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAICATAFA25pbAgFAWkIcGF5bWVudHMBaQEIZXhjaGFuZ2UBEm1pbkFtb3VudFRvUmVjZWl2ZQkBCmNhbGxDb21tb24EAghleGNoYW5nZQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQCkAwEFEm1pbkFtb3VudFRvUmVjZWl2ZQUDbmlsCAUBaQhwYXltZW50cwECdHgBBnZlcmlmeQAEE211bHRpU2lnbmVkQnlBZG1pbnMEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAgUTbXVsdGlTaWduZWRCeUFkbWlucwd2msk=", "height": 3397811, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7e2YnhKo89qd9duXcAgQJXvqGGzcKQXA24hH7TDB2XXW Next: 3wZ8EPYXdfGPL5bvr4fizxXcbrNKzPokkohVLrF7AiUo Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "1.0.0"
4+let a = "active"
55
6-let b = "version"
6+let b = "shutdown_cause"
77
8-let c = "active"
8+let c = "staking_usdnnsbt_address"
99
10-let d = "A_asset_id"
10+let d = "staking_eurn_address"
1111
12-let e = "B_asset_id"
12+let e = "leasing_address"
1313
14-let f = "A_asset_balance"
14+let f = "leasing_amount"
1515
16-let g = "B_asset_balance"
16+let g = "leasing_id"
1717
18-let h = "A_asset_init"
18+let h = "admin_pub_1"
1919
20-let i = "B_asset_init"
20+let i = "admin_pub_2"
2121
22-let j = "share_asset_id"
22+let j = "admin_pub_3"
2323
24-let k = "share_asset_supply"
24+let k = "admin_invoke_pub"
2525
26-let l = "commission"
26+let l = "cpmm_contract"
2727
28-let m = "shutdown_cause"
28+let m = "usdn_asset_id"
2929
30-let n = "first_harvest"
30+let n = "eurn_asset_id"
3131
32-let o = "first_harvest_height"
32+let o = "staking_assets"
3333
34-let p = "share_limit_on_first_harvest"
34+let p = "share_asset_id"
3535
36-let q = "base_period"
36+let q = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
3737
38-let r = "period_length"
39-
40-let s = "start_height"
41-
42-let t = "staking_usdnnsbt_address"
43-
44-let u = "staking_eurn_address"
45-
46-let v = "leasing_address"
47-
48-let w = "leasing_amount"
49-
50-let x = "leasing_id"
51-
52-let y = "discounts"
53-
54-let z = "discount_values"
55-
56-let A = "_SWOP_amount"
57-
58-let B = "admin_pub_1"
59-
60-let C = "admin_pub_2"
61-
62-let D = "admin_pub_3"
63-
64-let E = "admin_invoke_pub"
65-
66-let F = "money_box_address"
67-
68-let G = "governance_address"
69-
70-let H = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
71-
72-func I (J) = {
73- let K = getString(H, J)
74- if ($isInstanceOf(K, "String"))
38+func r (s) = {
39+ let t = getString(q, s)
40+ if ($isInstanceOf(t, "String"))
7541 then {
76- let L = K
77- fromBase58String(L)
42+ let u = t
43+ fromBase58String(u)
7844 }
7945 else {
80- let M = K
81- throw((J + "is empty"))
46+ let v = t
47+ throw((s + "is empty"))
8248 }
8349 }
8450
8551
86-let N = I(B)
52+let w = r(h)
8753
88-let O = I(C)
54+let x = r(i)
8955
90-let P = I(D)
56+let y = r(j)
9157
92-let Q = I(E)
58+let z = r(k)
9359
94-let R = Address(I(F))
60+let A = Address(r(c))
9561
96-let S = Address(I(G))
62+let B = Address(r(d))
9763
98-let T = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
64+let C = Address(r(l))
9965
100-let U = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
66+let D = r(m)
10167
102-let V = base58'Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT'
68+let E = r(n)
10369
104-let W = base58'DUk2YTxhRoAqMJLus4G2b3fR8hMHVh6eiyFx5r29VR6t'
70+let F = getStringValue(q, o)
10571
106-let X = ["WAVES", toBase58String(U), toBase58String(W)]
72+let G = valueOrElse(getBoolean(this, a), true)
10773
108-let Y = Address(I(t))
109-
110-let Z = Address(I(u))
111-
112-let aa = valueOrErrorMessage(getInteger(T, q), "Empty kBasePeriod")
113-
114-let ab = valueOrErrorMessage(getInteger(T, s), "Empty kStartHeight")
115-
116-let ac = valueOrErrorMessage(getInteger(T, r), "Empty kPeriodLength")
117-
118-let ad = ((aa + ((height - ab) / ac)) + 3)
119-
120-let ae = getBooleanValue(this, c)
121-
122-let af = getStringValue(this, d)
123-
124-let ag = getStringValue(this, e)
125-
126-let ah = if ((af == "WAVES"))
127- then unit
128- else fromBase58String(af)
129-
130-let ai = if ((ag == "WAVES"))
131- then unit
132- else fromBase58String(ag)
133-
134-let aj = {
135- let K = ah
136- if ($isInstanceOf(K, "ByteVector"))
137- then {
138- let ak = K
139- value(assetInfo(ak)).name
140- }
141- else if ($isInstanceOf(K, "Unit"))
142- then {
143- let al = K
144- "WAVES"
145- }
146- else throw("Match error")
147- }
148-
149-let am = {
150- let K = ai
151- if ($isInstanceOf(K, "ByteVector"))
152- then {
153- let ak = K
154- value(assetInfo(ak)).name
155- }
156- else if ($isInstanceOf(K, "Unit"))
157- then {
158- let al = K
159- "WAVES"
160- }
161- else throw("Match error")
162- }
163-
164-let an = getIntegerValue(this, f)
165-
166-let ao = getIntegerValue(this, g)
167-
168-let ap = fromBase58String(getStringValue(this, j))
169-
170-let aq = getIntegerValue(this, k)
171-
172-let ar = getIntegerValue(this, l)
173-
174-let as = fraction(ar, 40, 100)
175-
176-let at = 1000000
177-
178-let au = 1000
179-
180-let av = 100000000
181-
182-let aw = 1000
183-
184-let ax = 8
185-
186-func ay (az) = {
187- let K = az
188- if ($isInstanceOf(K, "ByteVector"))
189- then {
190- let ak = K
191- assetBalance(this, ak)
192- }
193- else if ($isInstanceOf(K, "Unit"))
194- then {
195- let al = K
196- wavesBalance(this).available
197- }
198- else throw("Match error")
199- }
200-
201-
202-func aA (az) = {
203- let aB = {
204- let K = az
205- if ($isInstanceOf(K, "ByteVector"))
206- then {
207- let aC = K
208- if ((aC == U))
209- then getInteger(Y, ((("rpd_balance_" + toBase58String(aC)) + "_") + toString(this)))
210- else if ((aC == W))
211- then getInteger(Z, ((("%s%s%s__stakingBalance__" + toBase58String(aC)) + "__") + toString(this)))
212- else 0
213- }
214- else if ($isInstanceOf(K, "Unit"))
215- then valueOrElse(getInteger(this, w), 0)
216- else throw("Match error")
217- }
218- let K = aB
219- if ($isInstanceOf(K, "Int"))
220- then {
221- let aD = K
222- aD
223- }
224- else 0
225- }
226-
227-
228-let aE = aA(ah)
229-
230-let aF = aA(ai)
231-
232-let aG = getIntegerValue(this, h)
233-
234-let aH = getIntegerValue(this, i)
235-
236-let aI = (an - aE)
237-
238-let aJ = (ao - aF)
239-
240-let aK = (ay(ah) + aE)
241-
242-let aL = (ay(ai) + aF)
243-
244-let aM = if ((aK >= an))
245- then (aL >= ao)
246- else false
247-
248-func aN (az) = {
249- let K = az
250- if ($isInstanceOf(K, "ByteVector"))
251- then {
252- let ak = K
253- let aO = toBase58String(ak)
254- let aP = valueOrErrorMessage(assetInfo(ak), (("Asset " + aO) + " doesn't exist"))
255- $Tuple3(aO, aP.name, aP.decimals)
256- }
257- else if ($isInstanceOf(K, "Unit"))
258- then {
259- let al = K
260- $Tuple3("WAVES", "WAVES", 8)
261- }
262- else throw("Match error")
263- }
264-
265-
266-func aQ (aR) = if ((aR == "WAVES"))
267- then $Tuple3("WAVES", "WAVES", 8)
268- else {
269- let aO = aR
270- let ak = fromBase58String(aR)
271- let aP = valueOrErrorMessage(assetInfo(ak), (("Asset " + aO) + " doesn't exist"))
272- $Tuple3(aO, aP.name, aP.decimals)
273- }
274-
275-
276-func aS (aT) = [BooleanEntry(c, false), StringEntry(m, aT)]
277-
278-
279-func aU (aV,az) = if (aV)
280- then if ((az == U))
281- then $Tuple2("lockNeutrino", Y)
282- else $Tuple2("startStaking", Z)
283- else if ((az == U))
284- then $Tuple2("unlockNeutrino", Y)
285- else $Tuple2("stopStaking", Z)
286-
287-
288-func aW (aV,aX,az) = if (aV)
289- then {
290- let aY = aU(aV, az)
291- let aZ = aY._1
292- let ba = aY._2
293- $Tuple4(aZ, ba, nil, [AttachedPayment(az, aX)])
294- }
295- else {
296- let bb = aU(aV, az)
297- let aZ = bb._1
298- let ba = bb._2
299- $Tuple4(aZ, ba, [aX, toBase58String(az)], nil)
300- }
301-
302-
303-func bc (bd) = {
304- let be = valueOrElse(getInteger(S, (toString(bd) + A)), 0)
305- let bf = split(getStringValue(H, z), ",")
306- let bg = split(getStringValue(H, y), ",")
307- if (if ((be >= parseIntValue(bf[0])))
308- then (parseIntValue(bf[1]) > be)
309- else false)
310- then (at - parseIntValue(bg[0]))
311- else if (if ((be >= parseIntValue(bf[1])))
312- then (parseIntValue(bf[2]) > be)
313- else false)
314- then (at - parseIntValue(bg[1]))
315- else if (if ((be >= parseIntValue(bf[2])))
316- then (parseIntValue(bf[3]) > be)
317- else false)
318- then (at - parseIntValue(bg[2]))
319- else if (if ((be >= parseIntValue(bf[3])))
320- then (parseIntValue(bf[4]) > be)
321- else false)
322- then (at - parseIntValue(bg[3]))
323- else if ((be >= parseIntValue(bf[4])))
324- then (at - parseIntValue(bg[4]))
325- else at
326- }
327-
328-
329-func bh (bi,bj,bk,bl,bm) = {
330- let bn = fraction(bl, bi, (bi + bk))
331- let bo = bc(bm)
332- let bp = fraction(bn, (at - fraction(ar, bo, at, CEILING)), at)
333- let bq = fraction(bn, fraction(as, bo, at, CEILING), at)
334- if ((bj > bp))
335- then throw(((("Calculated amount to receive " + toString(bp)) + " is less than specified minimum ") + toString(bj)))
336- else $Tuple3(bn, bp, bq)
337- }
338-
339-
340-func br () = aS(((((((((((((((("Suspicious state. Actual balances: " + toString(aK)) + " ") + aj) + ", ") + toString(aL)) + " ") + am) + ". State: ") + toString(an)) + " ") + aj) + ", ") + toString(ao)) + " ") + am))
341-
342-
343-func bs () = if (ae)
74+func H () = if (G)
34475 then unit
34576 else throw("DApp is inactive at this moment")
34677
34778
348-@Callable(aD)
349-func init (bt) = {
350- let bu = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
351- let bv = bu._1
352- let bw = bu._2
353- let bx = $Tuple2(aD.payments[1].amount, aD.payments[1].assetId)
354- let by = bx._1
355- let bz = bx._2
356- let bA = aN(bw)
357- let bB = bA._1
358- let bC = bA._2
359- let bD = bA._3
360- let bE = aN(bz)
361- let bF = bE._1
362- let bG = bE._2
363- let bH = bE._3
364- if (!(containsElement([N, O, P, Q], aD.callerPublicKey)))
365- then throw("Only admin can call this function")
366- else if (isDefined(getBoolean(this, c)))
367- then throw("DApp is already active")
368- else if ((bw == bz))
369- then throw("Assets must be different")
370- else {
371- let bI = ((("s" + take(bC, 7)) + "_") + take(bG, 7))
372- let bJ = ((((("ShareToken of SwopFi protocol for " + bC) + " and ") + bG) + " at address ") + toString(this))
373- let bK = ((bD + bH) / 2)
374- let bL = pow(bv, bD, 5, 1, bD, DOWN)
375- let bM = pow(by, bH, 5, 1, bH, DOWN)
376- let bN = pow(10, 0, bK, 0, 0, DOWN)
377- let bO = fraction(bL, bM, bN)
378- let bP = Issue(bI, bJ, bO, bK, true)
379- let bQ = calculateAssetId(bP)
380- let bR = if (containsElement(X, bB))
381- then invoke(this, "stakeUnstake", [true, bv, bB], nil)
382- else 0
383- if ((bR == bR))
384- then {
385- let bS = if (containsElement(X, bF))
386- then invoke(this, "stakeUnstake", [true, by, bF], nil)
387- else 0
388- if ((bS == bS))
389- then {
390- let bT = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bB), StringEntry(e, bF), IntegerEntry(f, bv), IntegerEntry(g, by), IntegerEntry(l, getIntegerValue(H, "base_fee_cpmm")), bP, StringEntry(j, toBase58String(bQ)), IntegerEntry(k, bO), ScriptTransfer(aD.caller, bO, bQ)]
391- if (bt)
392- then (bT ++ [BooleanEntry(n, bt), IntegerEntry(o, (ab + (ad * ac)))])
393- else bT
394- }
395- else throw("Strict value is not equal to itself.")
396- }
397- else throw("Strict value is not equal to itself.")
398- }
79+func I (J) = if ((J == C))
80+ then unit
81+ else throw("Only global Contract can invoke this function")
82+
83+
84+func K (L) = if (containsElement([w, x, y], L))
85+ then unit
86+ else throw("Only admin can call this function")
87+
88+
89+func M (N) = [BooleanEntry(a, false), StringEntry(b, N)]
90+
91+
92+func O (P,Q) = if (P)
93+ then if ((Q == D))
94+ then $Tuple2("lockNeutrino", A)
95+ else $Tuple2("startStaking", B)
96+ else if ((Q == D))
97+ then $Tuple2("unlockNeutrino", A)
98+ else $Tuple2("stopStaking", B)
99+
100+
101+func R (P,S,Q) = if (P)
102+ then {
103+ let T = O(P, Q)
104+ let U = T._1
105+ let V = T._2
106+ $Tuple4(U, V, nil, [AttachedPayment(Q, S)])
107+ }
108+ else {
109+ let W = O(P, Q)
110+ let U = W._1
111+ let V = W._2
112+ $Tuple4(U, V, [S, toBase58String(Q)], nil)
113+ }
114+
115+
116+func X (Y,Z) = {
117+ let aa = Y
118+ let ab = aa._1
119+ let ac = aa._2
120+ $Tuple2((ab :+ Z.amount), (ac :+ (if ((Z.assetId == unit))
121+ then base58''
122+ else Z.assetId)))
399123 }
400124
401125
402-
403-@Callable(aD)
404-func initWithInitRatio (bU,bV,af,ag,bt) = {
405- let bW = aQ(af)
406- let bB = bW._1
407- let bC = bW._2
408- let bD = bW._3
409- let bX = aQ(ag)
410- let bF = bX._1
411- let bG = bX._2
412- let bH = bX._3
413- if (!(containsElement([N, O, P, Q], aD.callerPublicKey)))
414- then throw("Only admin can call this function")
415- else if (isDefined(getBoolean(this, c)))
416- then throw("DApp is already active")
417- else if ((af == ag))
418- then throw("Assets must be different")
419- else {
420- let bI = ((("s" + take(bC, 7)) + "_") + take(bG, 7))
421- let bJ = ((((("ShareToken of SwopFi protocol for " + bC) + " and ") + bG) + " at address ") + toString(this))
422- let bK = ((bD + bH) / 2)
423- let bO = 0
424- let bP = Issue(bI, bJ, bO, bK, true)
425- let bQ = calculateAssetId(bP)
426- let bT = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bB), StringEntry(e, bF), IntegerEntry(h, bU), IntegerEntry(i, bV), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, getIntegerValue(H, "base_fee_cpmm")), bP, StringEntry(j, toBase58String(bQ)), IntegerEntry(k, bO)]
427- if (bt)
428- then (bT ++ [BooleanEntry(n, bt), IntegerEntry(o, (ab + (ad * ac)))])
429- else bT
430- }
126+func ad (ae,af) = {
127+ let t = af
128+ if (if ($isInstanceOf(t, "Issue"))
129+ then true
130+ else if ($isInstanceOf(t, "Burn"))
131+ then true
132+ else if ($isInstanceOf(t, "Reissue"))
133+ then true
134+ else if ($isInstanceOf(t, "ScriptTransfer"))
135+ then true
136+ else if ($isInstanceOf(t, "BinaryEntry"))
137+ then true
138+ else if ($isInstanceOf(t, "BooleanEntry"))
139+ then true
140+ else if ($isInstanceOf(t, "StringEntry"))
141+ then true
142+ else $isInstanceOf(t, "IntegerEntry"))
143+ then {
144+ let ag = t
145+ (ae :+ ag)
146+ }
147+ else ae
431148 }
432149
433150
151+func ah (ae,af) = {
152+ let t = af
153+ if ($isInstanceOf(t, "String"))
154+ then {
155+ let ai = t
156+ (ae :+ ai)
157+ }
158+ else if ($isInstanceOf(t, "Int"))
159+ then {
160+ let ai = t
161+ (ae :+ ai)
162+ }
163+ else if ($isInstanceOf(t, "Boolean"))
164+ then {
165+ let ai = t
166+ (ae :+ ai)
167+ }
168+ else if ($isInstanceOf(t, "ByteVector"))
169+ then {
170+ let ai = t
171+ (ae :+ ai)
172+ }
173+ else if ($isInstanceOf(t, "Unit"))
174+ then {
175+ let ai = t
176+ (ae :+ ai)
177+ }
178+ else throw()
179+ }
434180
435-@Callable(aD)
436-func keepLimitForFirstHarvest (bY) = valueOrElse(bs(), if (!(containsElement([N, O, P, Q], aD.callerPublicKey)))
437- then throw("Only admin can call this function")
438- else [IntegerEntry(p, bY)])
181+
182+func aj (ak,J,al,am) = valueOrElse(H(), {
183+ let an = {
184+ let ao = am
185+ let ap = size(ao)
186+ let aq = $Tuple2(nil, nil)
187+ func ar (as,at) = if ((at >= ap))
188+ then as
189+ else X(as, ao[at])
190+
191+ func au (as,at) = if ((at >= ap))
192+ then as
193+ else throw("List size exceeds 10")
194+
195+ au(ar(ar(ar(ar(ar(ar(ar(ar(ar(ar(aq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
196+ }
197+ let ab = an._1
198+ let ac = an._2
199+ let av = {
200+ let aw = reentrantInvoke(C, ak, [J, al, ab, ac], nil)
201+ if ($isInstanceOf(aw, "(List[Any], List[Any])"))
202+ then aw
203+ else throw(($getType(aw) + " couldn't be cast to (List[Any], List[Any])"))
204+ }
205+ if ((av == av))
206+ then {
207+ let ax = av._2
208+ let ay = av._1
209+ let az = {
210+ let ao = ax
211+ let ap = size(ao)
212+ let aq = nil
213+ func aA (as,at) = if ((at >= ap))
214+ then as
215+ else ah(as, ao[at])
216+
217+ func aB (as,at) = if ((at >= ap))
218+ then as
219+ else throw("List size exceeds 10")
220+
221+ aB(aA(aA(aA(aA(aA(aA(aA(aA(aA(aA(aq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
222+ }
223+ let aC = {
224+ let ao = ay
225+ let ap = size(ao)
226+ let aq = nil
227+ func aD (as,at) = if ((at >= ap))
228+ then as
229+ else ad(as, ao[at])
230+
231+ func aE (as,at) = if ((at >= ap))
232+ then as
233+ else throw("List size exceeds 15")
234+
235+ aE(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
236+ }
237+ $Tuple2(aC, az)
238+ }
239+ else throw("Strict value is not equal to itself.")
240+ })
241+
242+
243+@Callable(aF)
244+func callFunction (ak,al) = aj(ak, aF.caller.bytes, al, aF.payments)
439245
440246
441247
442-@Callable(aD)
443-func replenishWithTwoTokens (bZ) = valueOrElse(bs(), {
444- let bw = aD.payments[0].assetId
445- let bz = aD.payments[1].assetId
446- let bv = aD.payments[0].amount
447- let by = aD.payments[1].amount
448- let ca = aN(bw)
449- let bB = ca._1
450- let bC = ca._2
451- let bD = ca._3
452- let cb = aN(bz)
453- let bF = cb._1
454- let bG = cb._2
455- let bH = cb._3
456- let cc = if (if ((an == 0))
457- then (ao == 0)
458- else false)
459- then true
460- else false
461- let cd = if (cc)
462- then fraction(fraction(aG, av, bv), au, fraction(aH, av, by))
463- else fraction(fraction(an, av, bv), au, fraction(ao, av, by))
464- let bK = ((bD + bH) / 2)
465- let ce = if (cc)
466- then fraction(pow(bv, bD, 5, 1, bD, DOWN), pow(by, bH, 5, 1, bH, DOWN), pow(10, 0, bK, 0, 0, DOWN))
467- else fraction(min([fraction(bv, av, an), fraction(by, av, ao)]), aq, av)
468- if (if ((0 > bZ))
469- then true
470- else (bZ > aw))
471- then throw(((("Slippage tolerance must be between 0 and " + toString(aw)) + " inclusively. Actual: ") + toString(bZ)))
472- else if ((size(aD.payments) != 2))
473- then throw("Two attached assets expected")
474- else if (if ((bw != ah))
475- then true
476- else (bz != ai))
477- then throw(((("Incorrect assets attached. Expected: " + af) + " and ") + ag))
478- else if (if ((((au * (aw - bZ)) / aw) > cd))
479- then true
480- else (cd > ((au * (aw + bZ)) / aw)))
481- then throw("Incorrect assets amount: amounts must have the contract ratio")
482- else if ((ce == 0))
483- then throw("Too small amount to replenish")
484- else if (!(aM))
485- then ([ScriptTransfer(aD.caller, bv, bw), ScriptTransfer(aD.caller, by, bz)] ++ br())
486- else {
487- let bR = if (containsElement(X, bB))
488- then invoke(this, "stakeUnstake", [true, bv, bB], nil)
489- else 0
490- if ((bR == bR))
491- then {
492- let bS = if (containsElement(X, bF))
493- then invoke(this, "stakeUnstake", [true, by, bF], nil)
494- else 0
495- if ((bS == bS))
496- then [Reissue(ap, ce, true), IntegerEntry(f, (an + bv)), IntegerEntry(g, (ao + by)), IntegerEntry(k, (aq + ce)), ScriptTransfer(aD.caller, ce, ap)]
497- else throw("Strict value is not equal to itself.")
498- }
499- else throw("Strict value is not equal to itself.")
500- }
501- })
248+@Callable(aF)
249+func shutdown () = valueOrElse(K(aF.callerPublicKey), if (!(G))
250+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, b), "the cause wasn't specified")))
251+ else M("Paused by admin"))
502252
503253
504254
505-@Callable(aD)
506-func withdraw () = valueOrElse(bs(), {
507- let cf = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
508- let bi = cf._1
509- let cg = cf._2
510- let ch = fraction(bi, an, aq)
511- let ci = fraction(bi, ao, aq)
512- if ((size(aD.payments) != 1))
513- then throw("One attached payment expected")
514- else if ((cg != ap))
515- then throw(("Incorrect asset attached. Expected: " + toBase58String(ap)))
516- else if (!(aM))
517- then ([ScriptTransfer(aD.caller, bi, cg)] ++ br())
518- else {
519- let bR = if (containsElement(X, af))
520- then invoke(this, "stakeUnstake", [false, ch, af], nil)
521- else 0
522- if ((bR == bR))
523- then {
524- let bS = if (containsElement(X, ag))
525- then invoke(this, "stakeUnstake", [false, ci, ag], nil)
526- else 0
527- if ((bS == bS))
528- then [IntegerEntry(f, (an - ch)), IntegerEntry(g, (ao - ci)), IntegerEntry(k, (aq - bi)), Burn(ap, bi), ScriptTransfer(aD.caller, ch, ah), ScriptTransfer(aD.caller, ci, ai)]
529- else throw("Strict value is not equal to itself.")
530- }
531- else throw("Strict value is not equal to itself.")
532- }
533- })
255+@Callable(aF)
256+func activate () = valueOrElse(K(aF.callerPublicKey), if (G)
257+ then throw("DApp is already active")
258+ else [BooleanEntry(a, true), DeleteEntry(b)])
534259
535260
536261
537-@Callable(aD)
538-func exchange (bj) = valueOrElse(bs(), {
539- let cj = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
540- let bi = cj._1
541- let cg = cj._2
542- if (if ((an == 0))
543- then true
544- else (ao == 0))
545- then throw("Can't exchange with zero balance")
546- else if ((0 >= bj))
547- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bj)))
548- else if ((size(aD.payments) != 1))
549- then throw("One attached payment expected")
550- else if (!(aM))
551- then ([ScriptTransfer(aD.caller, bi, cg)] ++ br())
552- else if ((cg == ah))
553- then {
554- let ck = ai
555- let cl = bh(bi, bj, an, ao, aD.originCaller)
556- let bn = cl._1
557- let bp = cl._2
558- let bq = cl._3
559- let cm = (an + bi)
560- let cn = ((ao - bp) - bq)
561- let bR = if (containsElement(X, af))
562- then invoke(this, "stakeUnstake", [true, bi, af], nil)
563- else 0
564- if ((bR == bR))
565- then {
566- let bS = if (containsElement(X, ag))
567- then invoke(this, "stakeUnstake", [false, (bp + bq), ag], nil)
568- else 0
569- if ((bS == bS))
570- then $Tuple2([IntegerEntry(f, cm), IntegerEntry(g, cn), ScriptTransfer(aD.caller, bp, ck), ScriptTransfer(R, bq, ck)], $Tuple2(bp, ck))
571- else throw("Strict value is not equal to itself.")
572- }
573- else throw("Strict value is not equal to itself.")
574- }
575- else if ((cg == ai))
576- then {
577- let ck = ah
578- let co = bh(bi, bj, ao, an, aD.originCaller)
579- let bn = co._1
580- let bp = co._2
581- let bq = co._3
582- let cm = ((an - bp) - bq)
583- let cn = (ao + bi)
584- let bR = if (containsElement(X, af))
585- then invoke(this, "stakeUnstake", [false, (bp + bq), af], nil)
586- else 0
587- if ((bR == bR))
588- then {
589- let bS = if (containsElement(X, ag))
590- then invoke(this, "stakeUnstake", [true, bi, ag], nil)
591- else 0
592- if ((bS == bS))
593- then $Tuple2([IntegerEntry(f, cm), IntegerEntry(g, cn), ScriptTransfer(aD.caller, bp, ck), ScriptTransfer(R, bq, ck)], $Tuple2(bp, ck))
594- else throw("Strict value is not equal to itself.")
595- }
596- else throw("Strict value is not equal to itself.")
597- }
598- else throw(((("Incorrect asset attached. Expected: " + af) + " or ") + ag))
599- })
262+@Callable(aF)
263+func stakeUnstake (P,S,aG) = valueOrElse(H(), if ((aF.caller != C))
264+ then throw("Only global Contract can invoke this function")
265+ else if ((aG == "WAVES"))
266+ then {
267+ let aH = addressFromStringValue(valueOrErrorMessage(getString(q, e), "No leasing pool in oracle"))
268+ let aI = getBinary(this, g)
269+ let aJ = valueOrElse(getInteger(this, f), 0)
270+ let aK = if (P)
271+ then (aJ + S)
272+ else (aJ - S)
273+ let aL = Lease(aH, aK)
274+ let aM = calculateLeaseId(aL)
275+ let aN = [aL, BinaryEntry(g, aM), IntegerEntry(f, aK)]
276+ let t = aI
277+ if ($isInstanceOf(t, "ByteVector"))
278+ then {
279+ let aO = t
280+ ([LeaseCancel(aO)] ++ aN)
281+ }
282+ else aN
283+ }
284+ else {
285+ let aP = R(P, S, fromBase58String(aG))
286+ let U = aP._1
287+ let aQ = aP._2
288+ let aR = aP._3
289+ let am = aP._4
290+ let aS = invoke(aQ, U, aR, am)
291+ if ((aS == aS))
292+ then nil
293+ else throw("Strict value is not equal to itself.")
294+ })
600295
601296
602297
603-@Callable(aD)
604-func shutdown () = if (!(ae))
605- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
606- else if (!(containsElement([N, O, P], aD.callerPublicKey)))
607- then throw("Only admin can call this function")
608- else aS("Paused by admin")
298+@Callable(aF)
299+func reissueShareToken (S) = valueOrElse(I(aF.caller), valueOrElse(H(), {
300+ let aT = fromBase58String(getStringValue(this, p))
301+[Reissue(aT, S, true), ScriptTransfer(aF.caller, S, aT)]
302+ }))
609303
610304
611305
612-@Callable(aD)
613-func activate () = if (ae)
614- then throw("DApp is already active")
615- else if (!(containsElement([N, O, P], aD.callerPublicKey)))
616- then throw("Only admin can call this function")
617- else [BooleanEntry(c, true), DeleteEntry(m)]
306+@Callable(aF)
307+func replenishWithTwoTokens (aU) = aj("replenishWithTwoTokens", aF.caller.bytes, ["false", "0"], aF.payments)
618308
619309
620310
621-@Callable(aD)
622-func takeIntoAccountExtraFunds () = valueOrElse(bs(), {
623- let cp = (aK - an)
624- let cq = (aL - ao)
625- if ((aD.caller != R))
626- then throw("Only the wallet can call this function")
627- else if (if ((0 > cp))
628- then true
629- else (0 > cq))
630- then aS("Enroll amount negative")
631- else if (if ((cp == 0))
632- then (cq == 0)
633- else false)
634- then throw("No money to take")
635- else {
636- let bR = if (containsElement(X, af))
637- then invoke(this, "stakeUnstake", [true, cp, af], nil)
638- else 0
639- if ((bR == bR))
640- then {
641- let bS = if (containsElement(X, ag))
642- then invoke(this, "stakeUnstake", [true, cq, ag], nil)
643- else 0
644- if ((bS == bS))
645- then [IntegerEntry(f, (an + cp)), IntegerEntry(g, (ao + cq)), IntegerEntry(("last_income_" + af), cp), IntegerEntry(("last_income_" + ag), cq)]
646- else throw("Strict value is not equal to itself.")
647- }
648- else throw("Strict value is not equal to itself.")
649- }
650- })
311+@Callable(aF)
312+func withdraw () = aj("withdraw", aF.caller.bytes, ["0"], aF.payments)
651313
652314
653315
654-@Callable(aD)
655-func stakeUnstake (aV,aX,cr) = if ((aD.caller != this))
656- then throw("Only contract itself can invoke this function")
657- else if ((cr == "WAVES"))
658- then {
659- let cs = addressFromStringValue(valueOrErrorMessage(getString(H, v), "No leasing pool in oracle"))
660- let ct = getBinary(this, x)
661- let cu = valueOrElse(getInteger(this, w), 0)
662- let cv = if (aV)
663- then (cu + aX)
664- else (cu - aX)
665- let cw = Lease(cs, cv)
666- let cx = calculateLeaseId(cw)
667- let cy = [cw, BinaryEntry(x, cx), IntegerEntry(w, cv)]
668- let K = ct
669- if ($isInstanceOf(K, "ByteVector"))
670- then {
671- let cz = K
672- ([LeaseCancel(cz)] ++ cy)
673- }
674- else cy
675- }
676- else {
677- let cA = aW(aV, aX, fromBase58String(cr))
678- let aZ = cA._1
679- let cB = cA._2
680- let cC = cA._3
681- let cD = cA._4
682- let cE = invoke(cB, aZ, cC, cD)
683- if ((cE == cE))
684- then nil
685- else throw("Strict value is not equal to itself.")
686- }
316+@Callable(aF)
317+func exchange (aV) = aj("exchange", aF.caller.bytes, [toString(aV)], aF.payments)
687318
688319
689-
690-@Callable(aD)
691-func stakeAll () = valueOrElse(bs(), if (!(containsElement([N, O, P], aD.callerPublicKey)))
692- then throw("Only admin can call this function")
693- else {
694- let bR = if (containsElement(X, af))
695- then {
696- let cF = (an - aE)
697- if ((cF > 0))
698- then invoke(this, "stakeUnstake", [true, cF, af], nil)
699- else 0
700- }
701- else 0
702- if ((bR == bR))
703- then {
704- let bS = if (containsElement(X, ag))
705- then {
706- let cG = (ao - aF)
707- if ((cG > 0))
708- then invoke(this, "stakeUnstake", [true, cG, ag], nil)
709- else 0
710- }
711- else 0
712- if ((bS == bS))
713- then nil
714- else throw("Strict value is not equal to itself.")
715- }
716- else throw("Strict value is not equal to itself.")
717- })
718-
719-
720-@Verifier(cH)
721-func cI () = {
722- let cJ = {
723- let cK = if (sigVerify(cH.bodyBytes, cH.proofs[0], N))
320+@Verifier(aW)
321+func aX () = {
322+ let aY = {
323+ let aZ = if (sigVerify(aW.bodyBytes, aW.proofs[0], w))
724324 then 1
725325 else 0
726- let cL = if (sigVerify(cH.bodyBytes, cH.proofs[1], O))
326+ let ba = if (sigVerify(aW.bodyBytes, aW.proofs[1], x))
727327 then 1
728328 else 0
729- let cM = if (sigVerify(cH.bodyBytes, cH.proofs[2], P))
329+ let bb = if (sigVerify(aW.bodyBytes, aW.proofs[2], y))
730330 then 1
731331 else 0
732- (((cK + cL) + cM) >= 2)
332+ (((aZ + ba) + bb) >= 2)
733333 }
734- let K = cH
735- if ($isInstanceOf(K, "InvokeScriptTransaction"))
736- then {
737- let cE = K
738- let cN = if ((cE.dApp == this))
739- then (cE.function == "takeIntoAccountExtraFunds")
740- else false
741- let cO = if (if (if (sigVerify(cH.bodyBytes, cH.proofs[0], N))
742- then true
743- else sigVerify(cH.bodyBytes, cH.proofs[0], O))
744- then true
745- else sigVerify(cH.bodyBytes, cH.proofs[0], P))
746- then true
747- else sigVerify(cH.bodyBytes, cH.proofs[0], Q)
748- if (if (cN)
749- then cO
750- else false)
751- then true
752- else cJ
753- }
754- else cJ
334+ aY
755335 }
756336

github/deemru/w8io/6500d08 
93.27 ms