tx · 8GKfovNdPx94daFZHUpSV8YKdY2AmNHq2XXKvpzkh1eo

3N8YkRZsgDVNAxtmwU1F65EpcYMb8f7QPos:  -0.01400000 Waves

2024.05.28 11:21 [3125582] smart account 3N8YkRZsgDVNAxtmwU1F65EpcYMb8f7QPos > SELF 0.00000000 Waves

{ "type": 13, "id": "8GKfovNdPx94daFZHUpSV8YKdY2AmNHq2XXKvpzkh1eo", "fee": 1400000, "feeAssetId": null, "timestamp": 1716884580640, "version": 2, "chainId": 84, "sender": "3N8YkRZsgDVNAxtmwU1F65EpcYMb8f7QPos", "senderPublicKey": "F7SLwr7RYVQpyocmVScFC6ooaAwewaGq6wNRDYvyiPj1", "proofs": [ "5Kkj5FCKm7Ng5cDgQ9JuXQUSCdwTDnKASLnxyTDzp4e9mdCma1FPzEKJaLyHcLUZjXCfmCVe3bzVEQEgmFQJYk8X" ], "script": "base64:AAIFAAAAAAAAABIIAhIGCgQIGAgIEgQKAggIEgAAAAALAAAAABRwcmVkaWN0aW9uTWF4Q291bnRlcgAAAAAAAAAAAwAAAAAKbWF4Q291bnRlcgAAAAAAAAAABgAAAAANZGVmYXVsdFJhdGluZwAAAAAAAAAAZAAAAAAOcmF0ZUFkanVzdG1lbnQAAAAAAAAAABQAAAAAB3Rva2VuSWQBAAAAIG33eiemmz/8i1OVqeOeBVscIi9bTehRMFsBoQapAMYYAAAAAAxwYXlvdXRBbW91bnQAAAAAAAX14QAAAAAADHJhdGluZ0N1dG9mZgAAAAAAAAAAMgEAAAARc2VhcmNoRm9yQ291bnRlcnMAAAACAAAABml0ZW1JZAAAAAdjb3VudGVyBAAAABFzZWFyY2hGb3JDb3VudGVycwQAAAAHJG1hdGNoMAkABCIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAAFfCQABpAAAAAEFAAAAB2NvdW50ZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwIAAAAHTm8gVXNlcgUAAAARc2VhcmNoRm9yQ291bnRlcnMBAAAAD3NlYXJjaEZvclJhdGluZwAAAAEAAAAHYWRkcmVzcwQAAAAGcmF0aW5nBAAAAAckbWF0Y2gwCQAEHwAAAAEFAAAAB2FkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcgUAAAAHJG1hdGNoMAUAAAABcgUAAAANZGVmYXVsdFJhdGluZwUAAAAGcmF0aW5nAQAAABpzZWFyY2hGb3JBZGRyZXNzUHJlZGljdGlvbgAAAAIAAAAGaXRlbUlkAAAABmFkcmVzcwQAAAATc2VhcmNoRm9yUHJlZGljdGlvbgQAAAAHJG1hdGNoMAkABCIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAAFfBQAAAAZhZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwIAAAAJTm90IEZvdW5kBQAAABNzZWFyY2hGb3JQcmVkaWN0aW9uAQAAABZmaW5kUHJlZGljdGlvbkFkcmVzc2VzAAAAAgAAAAZpdGVtSWQAAAAHY291bnRlcgQAAAAKYWRyZXNzTGlzdAMJAABnAAAAAgUAAAAHY291bnRlcgAAAAAAAAAABQQAAAAHYWRyZXNzMQkBAAAAEXNlYXJjaEZvckNvdW50ZXJzAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAABBAAAAAdhZHJlc3MyCQEAAAARc2VhcmNoRm9yQ291bnRlcnMAAAACBQAAAAZpdGVtSWQAAAAAAAAAAAIEAAAAB2FkcmVzczMJAQAAABFzZWFyY2hGb3JDb3VudGVycwAAAAIFAAAABml0ZW1JZAAAAAAAAAAAAwQAAAAHYWRyZXNzNAkBAAAAEXNlYXJjaEZvckNvdW50ZXJzAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAAEBAAAAAdhZHJlc3M1CQEAAAARc2VhcmNoRm9yQ291bnRlcnMAAAACBQAAAAZpdGVtSWQAAAAAAAAAAAUJAARNAAAAAgkABE0AAAACCQAETQAAAAIJAARNAAAAAgkABE0AAAACBQAAAANuaWwFAAAAB2FkcmVzczEFAAAAB2FkcmVzczIFAAAAB2FkcmVzczMFAAAAB2FkcmVzczQFAAAAB2FkcmVzczUDCQAAZwAAAAIFAAAAB2NvdW50ZXIAAAAAAAAAAAQEAAAAB2FkcmVzczEJAQAAABFzZWFyY2hGb3JDb3VudGVycwAAAAIFAAAABml0ZW1JZAAAAAAAAAAAAQQAAAAHYWRyZXNzMgkBAAAAEXNlYXJjaEZvckNvdW50ZXJzAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAACBAAAAAdhZHJlc3MzCQEAAAARc2VhcmNoRm9yQ291bnRlcnMAAAACBQAAAAZpdGVtSWQAAAAAAAAAAAMEAAAAB2FkcmVzczQJAQAAABFzZWFyY2hGb3JDb3VudGVycwAAAAIFAAAABml0ZW1JZAAAAAAAAAAABAkABE0AAAACCQAETQAAAAIJAARNAAAAAgkABE0AAAACBQAAAANuaWwFAAAAB2FkcmVzczEFAAAAB2FkcmVzczIFAAAAB2FkcmVzczMFAAAAB2FkcmVzczQDCQAAZwAAAAIFAAAAB2NvdW50ZXIAAAAAAAAAAAMEAAAAB2FkcmVzczEJAQAAABFzZWFyY2hGb3JDb3VudGVycwAAAAIFAAAABml0ZW1JZAAAAAAAAAAAAQQAAAAHYWRyZXNzMgkBAAAAEXNlYXJjaEZvckNvdW50ZXJzAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAACBAAAAAdhZHJlc3MzCQEAAAARc2VhcmNoRm9yQ291bnRlcnMAAAACBQAAAAZpdGVtSWQAAAAAAAAAAAMJAARNAAAAAgkABE0AAAACCQAETQAAAAIFAAAAA25pbAUAAAAHYWRyZXNzMQUAAAAHYWRyZXNzMgUAAAAHYWRyZXNzMwMJAABnAAAAAgUAAAAHY291bnRlcgAAAAAAAAAAAgQAAAAHYWRyZXNzMQkBAAAAEXNlYXJjaEZvckNvdW50ZXJzAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAABBAAAAAdhZHJlc3MyCQEAAAARc2VhcmNoRm9yQ291bnRlcnMAAAACBQAAAAZpdGVtSWQAAAAAAAAAAAIJAARNAAAAAgkABE0AAAACBQAAAANuaWwFAAAAB2FkcmVzczEFAAAAB2FkcmVzczIEAAAAB2FkcmVzczEJAQAAABFzZWFyY2hGb3JDb3VudGVycwAAAAIFAAAABml0ZW1JZAAAAAAAAAAAAQkABE0AAAACBQAAAANuaWwFAAAAB2FkcmVzczEFAAAACmFkcmVzc0xpc3QAAAADAAAAAWkBAAAAImFkanVzdFJhdGluZ3NBbmRQYXlvdXRQYXJ0aWNpcGFudHMAAAAEAAAABml0ZW1JZAAAAAthZGRyZXNzTGlzdAAAABFsYXN0Q2FsbGVyQWRkcmVzcwAAAA9maW5hbFByZWRpY3Rpb24EAAAABmNhbGxlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAZjYWxsZXIJAAQlAAAAAQUAAAAEdGhpcwkAAAIAAAABAgAAAClZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgoBAAAAEXVwZGF0ZVJhdGluZ3NGdW5jAAAAAgAAAAVhY2N1bQAAAAdhZGRyZXNzBAAAAAZyYXRpbmcJAQAAAA9zZWFyY2hGb3JSYXRpbmcAAAABBQAAAAdhZGRyZXNzBAAAAApwcmVkaWN0aW9uCQEAAAAac2VhcmNoRm9yQWRkcmVzc1ByZWRpY3Rpb24AAAACBQAAAAZpdGVtSWQFAAAAB2FkZHJlc3MEAAAADXVwZGF0ZWRSYXRpbmcDCQAAAAAAAAIFAAAACnByZWRpY3Rpb24FAAAAD2ZpbmFsUHJlZGljdGlvbgkAAGQAAAACBQAAAAZyYXRpbmcFAAAADnJhdGVBZGp1c3RtZW50CQAAZQAAAAIFAAAABnJhdGluZwUAAAAOcmF0ZUFkanVzdG1lbnQEAAAABnBheW91dAMJAAAAAAAAAgUAAAAKcHJlZGljdGlvbgUAAAAPZmluYWxQcmVkaWN0aW9uBQAAAAxwYXlvdXRBbW91bnQAAAAAAAAAAAAEAAAADnVwZGF0ZWRFbnRyaWVzCQAETQAAAAIFAAAABWFjY3VtCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAHYWRkcmVzcwUAAAANdXBkYXRlZFJhdGluZwMJAABmAAAAAgUAAAAGcGF5b3V0AAAAAAAAAAAACQAETQAAAAIFAAAADnVwZGF0ZWRFbnRyaWVzCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAHYWRkcmVzcwUAAAAGcGF5b3V0BQAAAAd0b2tlbklkBQAAAA51cGRhdGVkRW50cmllcwQAAAAOdXBkYXRlZFJhdGluZ3MKAAAAAAIkbAUAAAALYWRkcmVzc0xpc3QKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwBQAAAANuaWwKAQAAAAUkZjBfMQAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAQAAABF1cGRhdGVSYXRpbmdzRnVuYwAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMF8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkcyA1CQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQkABE0AAAACBQAAAA51cGRhdGVkUmF0aW5ncwkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAAlfYWRqdXN0ZWQGAAAAAWkBAAAADnNhdmVQcmVkaWN0aW9uAAAAAgAAAAZpdGVtSWQAAAAKcHJlZGljdGlvbgQAAAAMY2xpZW50QWRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANc2VhcmNoRm9yVXNlcgQAAAAHJG1hdGNoMAkABB8AAAABBQAAAAxjbGllbnRBZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwIAAAATVXNlciBkb2VzIG5vdCBleGlzdAMJAAAAAAAAAgUAAAANc2VhcmNoRm9yVXNlcgIAAAATVXNlciBkb2VzIG5vdCBleGlzdAkAAAIAAAABAgAAABNVc2VyIGRvZXMgbm90IGV4aXN0BAAAAAdpc0ZpbmFsBAAAAAckbWF0Y2gwCQAEIAAAAAEJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAAZfZmluYWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMHAwUAAAAHaXNGaW5hbAkAAAIAAAABAgAAAB1GaW5hbCBwcmVkaWN0aW9uIGFscmVhZHkgbWFkZQQAAAAKaXNDYW5jZWxlZAQAAAAHJG1hdGNoMAkABCAAAAABCQABLAAAAAIFAAAABml0ZW1JZAIAAAAKX2NhbmNlbGxlZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwcDBQAAAAppc0NhbmNlbGVkCQAAAgAAAAECAAAAHUZpbmFsIHByZWRpY3Rpb24gYWxyZWFkeSBtYWRlBAAAAAxjbGllbnRSYXRpbmcJAQAAAA9zZWFyY2hGb3JSYXRpbmcAAAABBQAAAAxjbGllbnRBZHJlc3MDCQAAZwAAAAIFAAAADHJhdGluZ0N1dG9mZgUAAAAMY2xpZW50UmF0aW5nCQAAAgAAAAECAAAAKllvdSBhcmUgbm90IGFsbG93ZWQgdG8gcGFydGljaXBhdGUgYW55bW9yZQQAAAAQc2VhcmNoRm9yQ291bnRlcgQAAAAHJG1hdGNoMAkABB8AAAABCQABLAAAAAIFAAAABml0ZW1JZAIAAAAIX2NvdW50ZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwD//////////wMJAABnAAAAAgUAAAAQc2VhcmNoRm9yQ291bnRlcgAAAAAAAAAAAQQAAAAKYWRyZXNzTGlzdAkBAAAAFmZpbmRQcmVkaWN0aW9uQWRyZXNzZXMAAAACBQAAAAZpdGVtSWQFAAAAEHNlYXJjaEZvckNvdW50ZXIDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAKYWRyZXNzTGlzdAUAAAAMY2xpZW50QWRyZXNzCQAAAgAAAAECAAAAI1RoaXMgVXNlciBhbHJlYWR5IGdhdmUgYSBQcmVkaWN0aW9uBAAAABFwcmVkaWN0aW9uQ291bnRlcgQAAAAHJG1hdGNoMAkABB8AAAABCQABLAAAAAIFAAAABml0ZW1JZAIAAAASX3ByZWRpY3Rpb25Db3VudGVyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMA//////////8EAAAAFGxhc3RQcmVkaWN0aW9uQWRyZXNzCQABkQAAAAIFAAAACmFkcmVzc0xpc3QJAABlAAAAAgkAAZAAAAABBQAAAAphZHJlc3NMaXN0AAAAAAAAAAABBAAAAA5sYXN0UHJlZGljdGlvbgQAAAAHJG1hdGNoMAkABCIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAAFfBQAAABRsYXN0UHJlZGljdGlvbkFkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzAgAAABNubyBQcmVkaWN0aW9uIEZvdW5kBAAAAApuZXdDb3VudGVyCQAAZAAAAAIFAAAAEHNlYXJjaEZvckNvdW50ZXIAAAAAAAAAAAEDCQAAAAAAAAIFAAAADmxhc3RQcmVkaWN0aW9uBQAAAApwcmVkaWN0aW9uAwkAAAAAAAACCQAAZAAAAAIFAAAAEXByZWRpY3Rpb25Db3VudGVyAAAAAAAAAAABBQAAABRwcmVkaWN0aW9uTWF4Q291bnRlcgQAAAASaW52b2tlQWRqdXN0UmF0aW5nCQAD/AAAAAQFAAAABHRoaXMCAAAAImFkanVzdFJhdGluZ3NBbmRQYXlvdXRQYXJ0aWNpcGFudHMJAARMAAAAAgUAAAAGaXRlbUlkCQAETAAAAAIFAAAACmFkcmVzc0xpc3QJAARMAAAAAgUAAAAMY2xpZW50QWRyZXNzCQAETAAAAAIFAAAACnByZWRpY3Rpb24FAAAAA25pbAUAAAADbmlsAwkBAAAAAiE9AAAAAgUAAAASaW52b2tlQWRqdXN0UmF0aW5nBQAAABJpbnZva2VBZGp1c3RSYXRpbmcJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAAAV8JAAGkAAAAAQUAAAAKbmV3Q291bnRlcgUAAAAMY2xpZW50QWRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAAAV8FAAAADGNsaWVudEFkcmVzcwUAAAAKcHJlZGljdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAACF9jb3VudGVyBQAAAApuZXdDb3VudGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAASX3ByZWRpY3Rpb25Db3VudGVyCQAAZAAAAAIFAAAAEXByZWRpY3Rpb25Db3VudGVyAAAAAAAAAAABCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAAGX2ZpbmFsBgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAACl9jYW5jZWxsZWQHCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAxjbGllbnRBZHJlc3MFAAAADHBheW91dEFtb3VudAUAAAAHdG9rZW5JZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMY2xpZW50QWRyZXNzCQAAZAAAAAIFAAAADGNsaWVudFJhdGluZwAAAAAAAAAAFAUAAAADbmlsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAAAV8JAAGkAAAAAQUAAAAKbmV3Q291bnRlcgUAAAAMY2xpZW50QWRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAAAV8FAAAADGNsaWVudEFkcmVzcwUAAAAKcHJlZGljdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAACF9jb3VudGVyBQAAAApuZXdDb3VudGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAASX3ByZWRpY3Rpb25Db3VudGVyCQAAZAAAAAIFAAAAEXByZWRpY3Rpb25Db3VudGVyAAAAAAAAAAABCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAAGX2ZpbmFsBwkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAACl9jYW5jZWxsZWQHBQAAAANuaWwDCQAAZwAAAAIFAAAACm5ld0NvdW50ZXIFAAAACm1heENvdW50ZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAABXwkAAaQAAAABBQAAAApuZXdDb3VudGVyBQAAAAxjbGllbnRBZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAABXwUAAAAMY2xpZW50QWRyZXNzBQAAAApwcmVkaWN0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAAIX2NvdW50ZXIFAAAACm5ld0NvdW50ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAABJfcHJlZGljdGlvbkNvdW50ZXIJAABlAAAAAgUAAAARcHJlZGljdGlvbkNvdW50ZXIAAAAAAAAAAAEJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAApfY2FuY2VsbGVkBgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAABl9maW5hbAcFAAAAA25pbAMJAAAAAAAAAgkAAGUAAAACBQAAABFwcmVkaWN0aW9uQ291bnRlcgAAAAAAAAAAAQAAAAAAAAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAAFfCQABpAAAAAEFAAAACm5ld0NvdW50ZXIFAAAADGNsaWVudEFkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAAFfBQAAAAxjbGllbnRBZHJlc3MFAAAACnByZWRpY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAAhfY291bnRlcgUAAAAKbmV3Q291bnRlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAAEl9wcmVkaWN0aW9uQ291bnRlcgAAAAAAAAAAAQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAACl9jYW5jZWxsZWQHCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAAGX2ZpbmFsBwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAR0ZXN0BQAAAA5sYXN0UHJlZGljdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAFdGVzdDIJAAGQAAAAAQUAAAAKYWRyZXNzTGlzdAUAAAADbmlsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAAAV8JAAGkAAAAAQUAAAAKbmV3Q291bnRlcgUAAAAMY2xpZW50QWRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAAAV8FAAAADGNsaWVudEFkcmVzcwUAAAAKcHJlZGljdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAACF9jb3VudGVyBQAAAApuZXdDb3VudGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAASX3ByZWRpY3Rpb25Db3VudGVyCQAAZQAAAAIFAAAAEXByZWRpY3Rpb25Db3VudGVyAAAAAAAAAAABCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAAKX2NhbmNlbGxlZAcJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgUAAAAGaXRlbUlkAgAAAAZfZmluYWwHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAABHRlc3QFAAAADmxhc3RQcmVkaWN0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAV0ZXN0MgkAAZAAAAABBQAAAAphZHJlc3NMaXN0BQAAAANuaWwEAAAAEHNlYXJjaEZvck5ld0l0ZW0EAAAAByRtYXRjaDAJAAQiAAAAAQkAASwAAAACAgAAAARuZXdfBQAAAAZpdGVtSWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwIAAAAOSXRlbSBub3QgRm91bmQDCQAAAAAAAAIFAAAAEHNlYXJjaEZvck5ld0l0ZW0CAAAADkl0ZW0gbm90IEZvdW5kCQAAAgAAAAECAAAADkl0ZW0gbm90IGZvdW5kCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAAAV8JAAGkAAAAAQAAAAAAAAAAAQUAAAAMY2xpZW50QWRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAAAV8FAAAADGNsaWVudEFkcmVzcwUAAAAKcHJlZGljdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAZpdGVtSWQCAAAACF9jb3VudGVyAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABml0ZW1JZAIAAAASX3ByZWRpY3Rpb25Db3VudGVyAAAAAAAAAAABCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgIAAAAEbmV3XwUAAAAGaXRlbUlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAAIdXBkYXRlZF8FAAAABml0ZW1JZAUAAAAGaXRlbUlkBQAAAANuaWwAAAABaQEAAAAMcmVnaXN0ZXJVc2VyAAAAAAQAAAAMY2xpZW50QWRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANc2VhcmNoRm9yVXNlcgQAAAAHJG1hdGNoMAkABB8AAAABBQAAAAxjbGllbnRBZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwD//////////wMJAQAAAAIhPQAAAAIFAAAADXNlYXJjaEZvclVzZXIA//////////8JAAACAAAAAQIAAAATVXNlciBhbHJlYWR5IGV4aXN0cwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMY2xpZW50QWRyZXNzBQAAAA1kZWZhdWx0UmF0aW5nBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleWTmS4I=", "height": 3125582, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DnyYzkkRAsvcMKwEZy6nZVgz3Xn53iy4wgbnr6HdpaXz Next: CG4LMwoRBTcQHvB95Nkr8qdzqZvHtDhShHnwfg2HLLwK Diff:
OldNewDifferences
9090 @Callable(i)
9191 func adjustRatingsAndPayoutParticipants (itemId,addressList,lastCallerAddress,finalPrediction) = {
9292 let caller = toString(i.caller)
93- func updateRatingsFunc (accum,address) = {
94- let rating = searchForRating(address)
95- let prediction = searchForAddressPrediction(itemId, address)
96- let updatedRating = if ((prediction == finalPrediction))
97- then (rating + rateAdjustment)
98- else (rating - rateAdjustment)
99- let payout = if ((prediction == finalPrediction))
100- then payoutAmount
101- else 0
102- let updatedEntries = (accum :+ IntegerEntry(address, updatedRating))
103- if ((payout > 0))
104- then (updatedEntries :+ ScriptTransfer(Address(fromBase58String(address)), payout, tokenId))
105- else updatedEntries
106- }
93+ if ((caller != toString(this)))
94+ then throw("You are not allowed to call this function")
95+ else {
96+ func updateRatingsFunc (accum,address) = {
97+ let rating = searchForRating(address)
98+ let prediction = searchForAddressPrediction(itemId, address)
99+ let updatedRating = if ((prediction == finalPrediction))
100+ then (rating + rateAdjustment)
101+ else (rating - rateAdjustment)
102+ let payout = if ((prediction == finalPrediction))
103+ then payoutAmount
104+ else 0
105+ let updatedEntries = (accum :+ IntegerEntry(address, updatedRating))
106+ if ((payout > 0))
107+ then (updatedEntries :+ ScriptTransfer(Address(fromBase58String(address)), payout, tokenId))
108+ else updatedEntries
109+ }
107110
108- let updatedRatings = {
109- let $l = addressList
110- let $s = size($l)
111- let $acc0 = nil
112- func $f0_1 ($a,$i) = if (($i >= $s))
113- then $a
114- else updateRatingsFunc($a, $l[$i])
111+ let updatedRatings = {
112+ let $l = addressList
113+ let $s = size($l)
114+ let $acc0 = nil
115+ func $f0_1 ($a,$i) = if (($i >= $s))
116+ then $a
117+ else updateRatingsFunc($a, $l[$i])
115118
116- func $f0_2 ($a,$i) = if (($i >= $s))
117- then $a
118- else throw("List size exceeds 5")
119+ func $f0_2 ($a,$i) = if (($i >= $s))
120+ then $a
121+ else throw("List size exceeds 5")
119122
120- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
121- }
122- ((updatedRatings :+ BooleanEntry((itemId + "_adjusted"), true)) :+ StringEntry("Test1", caller))
123+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
124+ }
125+ (updatedRatings :+ BooleanEntry((itemId + "_adjusted"), true))
126+ }
123127 }
124128
125129
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let predictionMaxCounter = 3
55
66 let maxCounter = 6
77
88 let defaultRating = 100
99
1010 let rateAdjustment = 20
1111
1212 let tokenId = base58'8QGJvsXqJ43q5ksFymoPKF1NWWhwUfr2F7h52oeWgVhH'
1313
1414 let payoutAmount = 100000000
1515
1616 let ratingCutoff = 50
1717
1818 func searchForCounters (itemId,counter) = {
1919 let searchForCounters = match getString(((itemId + "_") + toString(counter))) {
2020 case s: String =>
2121 s
2222 case _ =>
2323 "No User"
2424 }
2525 searchForCounters
2626 }
2727
2828
2929 func searchForRating (address) = {
3030 let rating = match getInteger(address) {
3131 case r: Int =>
3232 r
3333 case _ =>
3434 defaultRating
3535 }
3636 rating
3737 }
3838
3939
4040 func searchForAddressPrediction (itemId,adress) = {
4141 let searchForPrediction = match getString(((itemId + "_") + adress)) {
4242 case s: String =>
4343 s
4444 case _ =>
4545 "Not Found"
4646 }
4747 searchForPrediction
4848 }
4949
5050
5151 func findPredictionAdresses (itemId,counter) = {
5252 let adressList = if ((counter >= 5))
5353 then {
5454 let adress1 = searchForCounters(itemId, 1)
5555 let adress2 = searchForCounters(itemId, 2)
5656 let adress3 = searchForCounters(itemId, 3)
5757 let adress4 = searchForCounters(itemId, 4)
5858 let adress5 = searchForCounters(itemId, 5)
5959 (((((nil :+ adress1) :+ adress2) :+ adress3) :+ adress4) :+ adress5)
6060 }
6161 else if ((counter >= 4))
6262 then {
6363 let adress1 = searchForCounters(itemId, 1)
6464 let adress2 = searchForCounters(itemId, 2)
6565 let adress3 = searchForCounters(itemId, 3)
6666 let adress4 = searchForCounters(itemId, 4)
6767 ((((nil :+ adress1) :+ adress2) :+ adress3) :+ adress4)
6868 }
6969 else if ((counter >= 3))
7070 then {
7171 let adress1 = searchForCounters(itemId, 1)
7272 let adress2 = searchForCounters(itemId, 2)
7373 let adress3 = searchForCounters(itemId, 3)
7474 (((nil :+ adress1) :+ adress2) :+ adress3)
7575 }
7676 else if ((counter >= 2))
7777 then {
7878 let adress1 = searchForCounters(itemId, 1)
7979 let adress2 = searchForCounters(itemId, 2)
8080 ((nil :+ adress1) :+ adress2)
8181 }
8282 else {
8383 let adress1 = searchForCounters(itemId, 1)
8484 (nil :+ adress1)
8585 }
8686 adressList
8787 }
8888
8989
9090 @Callable(i)
9191 func adjustRatingsAndPayoutParticipants (itemId,addressList,lastCallerAddress,finalPrediction) = {
9292 let caller = toString(i.caller)
93- func updateRatingsFunc (accum,address) = {
94- let rating = searchForRating(address)
95- let prediction = searchForAddressPrediction(itemId, address)
96- let updatedRating = if ((prediction == finalPrediction))
97- then (rating + rateAdjustment)
98- else (rating - rateAdjustment)
99- let payout = if ((prediction == finalPrediction))
100- then payoutAmount
101- else 0
102- let updatedEntries = (accum :+ IntegerEntry(address, updatedRating))
103- if ((payout > 0))
104- then (updatedEntries :+ ScriptTransfer(Address(fromBase58String(address)), payout, tokenId))
105- else updatedEntries
106- }
93+ if ((caller != toString(this)))
94+ then throw("You are not allowed to call this function")
95+ else {
96+ func updateRatingsFunc (accum,address) = {
97+ let rating = searchForRating(address)
98+ let prediction = searchForAddressPrediction(itemId, address)
99+ let updatedRating = if ((prediction == finalPrediction))
100+ then (rating + rateAdjustment)
101+ else (rating - rateAdjustment)
102+ let payout = if ((prediction == finalPrediction))
103+ then payoutAmount
104+ else 0
105+ let updatedEntries = (accum :+ IntegerEntry(address, updatedRating))
106+ if ((payout > 0))
107+ then (updatedEntries :+ ScriptTransfer(Address(fromBase58String(address)), payout, tokenId))
108+ else updatedEntries
109+ }
107110
108- let updatedRatings = {
109- let $l = addressList
110- let $s = size($l)
111- let $acc0 = nil
112- func $f0_1 ($a,$i) = if (($i >= $s))
113- then $a
114- else updateRatingsFunc($a, $l[$i])
111+ let updatedRatings = {
112+ let $l = addressList
113+ let $s = size($l)
114+ let $acc0 = nil
115+ func $f0_1 ($a,$i) = if (($i >= $s))
116+ then $a
117+ else updateRatingsFunc($a, $l[$i])
115118
116- func $f0_2 ($a,$i) = if (($i >= $s))
117- then $a
118- else throw("List size exceeds 5")
119+ func $f0_2 ($a,$i) = if (($i >= $s))
120+ then $a
121+ else throw("List size exceeds 5")
119122
120- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
121- }
122- ((updatedRatings :+ BooleanEntry((itemId + "_adjusted"), true)) :+ StringEntry("Test1", caller))
123+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
124+ }
125+ (updatedRatings :+ BooleanEntry((itemId + "_adjusted"), true))
126+ }
123127 }
124128
125129
126130
127131 @Callable(i)
128132 func savePrediction (itemId,prediction) = {
129133 let clientAdress = toString(i.caller)
130134 let searchForUser = match getInteger(clientAdress) {
131135 case s: Int =>
132136 s
133137 case _ =>
134138 "User does not exist"
135139 }
136140 if ((searchForUser == "User does not exist"))
137141 then throw("User does not exist")
138142 else {
139143 let isFinal = match getBoolean((itemId + "_final")) {
140144 case s: Boolean =>
141145 s
142146 case _ =>
143147 false
144148 }
145149 if (isFinal)
146150 then throw("Final prediction already made")
147151 else {
148152 let isCanceled = match getBoolean((itemId + "_cancelled")) {
149153 case s: Boolean =>
150154 s
151155 case _ =>
152156 false
153157 }
154158 if (isCanceled)
155159 then throw("Final prediction already made")
156160 else {
157161 let clientRating = searchForRating(clientAdress)
158162 if ((ratingCutoff >= clientRating))
159163 then throw("You are not allowed to participate anymore")
160164 else {
161165 let searchForCounter = match getInteger((itemId + "_counter")) {
162166 case s: Int =>
163167 s
164168 case _ =>
165169 -1
166170 }
167171 if ((searchForCounter >= 1))
168172 then {
169173 let adressList = findPredictionAdresses(itemId, searchForCounter)
170174 if (containsElement(adressList, clientAdress))
171175 then throw("This User already gave a Prediction")
172176 else {
173177 let predictionCounter = match getInteger((itemId + "_predictionCounter")) {
174178 case s: Int =>
175179 s
176180 case _ =>
177181 -1
178182 }
179183 let lastPredictionAdress = adressList[(size(adressList) - 1)]
180184 let lastPrediction = match getString(((itemId + "_") + lastPredictionAdress)) {
181185 case s: String =>
182186 s
183187 case _ =>
184188 "no Prediction Found"
185189 }
186190 let newCounter = (searchForCounter + 1)
187191 if ((lastPrediction == prediction))
188192 then if (((predictionCounter + 1) == predictionMaxCounter))
189193 then {
190194 let invokeAdjustRating = invoke(this, "adjustRatingsAndPayoutParticipants", [itemId, adressList, clientAdress, prediction], nil)
191195 if ((invokeAdjustRating != invokeAdjustRating))
192196 then throw("Strict value is not equal to itself.")
193197 else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), true), BooleanEntry((itemId + "_cancelled"), false), ScriptTransfer(Address(fromBase58String(clientAdress)), payoutAmount, tokenId), IntegerEntry(clientAdress, (clientRating + 20))]
194198 }
195199 else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter + 1)), BooleanEntry((itemId + "_final"), false), BooleanEntry((itemId + "_cancelled"), false)]
196200 else if ((newCounter >= maxCounter))
197201 then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), true), BooleanEntry((itemId + "_final"), false)]
198202 else if (((predictionCounter - 1) == 0))
199203 then [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), 1), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
200204 else [StringEntry(((itemId + "_") + toString(newCounter)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), newCounter), IntegerEntry((itemId + "_predictionCounter"), (predictionCounter - 1)), BooleanEntry((itemId + "_cancelled"), false), BooleanEntry((itemId + "_final"), false), StringEntry("test", lastPrediction), IntegerEntry("test2", size(adressList))]
201205 }
202206 }
203207 else {
204208 let searchForNewItem = match getString(("new_" + itemId)) {
205209 case s: String =>
206210 s
207211 case _ =>
208212 "Item not Found"
209213 }
210214 if ((searchForNewItem == "Item not Found"))
211215 then throw("Item not found")
212216 else [StringEntry(((itemId + "_") + toString(1)), clientAdress), StringEntry(((itemId + "_") + clientAdress), prediction), IntegerEntry((itemId + "_counter"), 1), IntegerEntry((itemId + "_predictionCounter"), 1), DeleteEntry(("new_" + itemId)), StringEntry(("updated_" + itemId), itemId)]
213217 }
214218 }
215219 }
216220 }
217221 }
218222 }
219223
220224
221225
222226 @Callable(i)
223227 func registerUser () = {
224228 let clientAdress = toString(i.caller)
225229 let searchForUser = match getInteger(clientAdress) {
226230 case s: Int =>
227231 s
228232 case _ =>
229233 -1
230234 }
231235 if ((searchForUser != -1))
232236 then throw("User already exists")
233237 else [IntegerEntry(clientAdress, defaultRating)]
234238 }
235239
236240
237241 @Verifier(tx)
238242 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
239243

github/deemru/w8io/026f985 
57.77 ms