tx · 5QDFqkb7hUrcr5hgcgLkFbRQREe1aXQd7bwxz2Tmo6t9

3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7:  -0.01000000 Waves

2022.03.21 21:18 [1974047] smart account 3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7 > SELF 0.00000000 Waves

{ "type": 13, "id": "5QDFqkb7hUrcr5hgcgLkFbRQREe1aXQd7bwxz2Tmo6t9", "fee": 1000000, "feeAssetId": null, "timestamp": 1647886489330, "version": 2, "chainId": 84, "sender": "3MvebeGZYw4DzztAuqcdxyT22s6rB3yMNj7", "senderPublicKey": "J283pC8bzRfJ3j1oxPrgDH8hjUVhFZS2CiRcPTmzQukz", "proofs": [ "ym5KC6HscaDgLrD8oCmUq9XQssXcpdBCvCRS9EWtcktHdQr7ZfLyRQFLa7YL1CDSd8pDuu9dBNz3Azt6PGDjM7g" ], "script": "base64:AAIFAAAAAAAAABAIAhIECgIIARIGCgQIAQEIAAAAHQAAAAAKZGVsYXlCbG9jawAAAAAAAAAAAQAAAAAKbWluUGF5bWVudAAAAAAAAAAACgAAAAAMbWluUGF5bWVudFVNAgAAABcgY2VudGVzaW1pIGRpIGJtc0NvaW4uIAAAAAARYWNjZXB0YWJsZUFzc2V0SWQBAAAAIOT6RnVqPSdR234gmuyFI/LTbOebUSkrj4D2gqClrfbKAAAAAAxtc2dQYWdhbWVudG8JAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAgRGV2aSBlZmZldHR1YXJlIHVuIHBhZ2FtZW50byBpbiAJAAJYAAAAAQUAAAARYWNjZXB0YWJsZUFzc2V0SWQCAAAACyBkaSBhbG1lbm8gCQABpAAAAAEFAAAACm1pblBheW1lbnQFAAAADG1pblBheW1lbnRVTQAAAAASZmllbGROYW1lUmlzdWx0YXRvAgAAAA1zZW1lX2VzdHJhdHRvAAAAAA1maWVsZE5hbWVTZWVkAgAAAARzZWVkAAAAABBmaWVsZE5hbWVTZWVkQjE2AgAAAAhzZWVkX2IxNgAAAAAZZmllbGROYW1lSGVpZ2h0RXh0cmFjdGlvbgIAAAARaGVpZ2h0X2V4dHJhY3Rpb24AAAAADWZpZWxkTmFtZUpzb24CAAAABGpzb24AAAAAFGZpZWxkTmFtZUNhcmRpbmFsaXRhAgAAAAtjYXJkaW5hbGl0YQAAAAAWZmllbGROYW1lRGF0YVJpY2hpZXN0YQIAAAAOZGF0YV9yaWNoaWVzdGEAAAAAE2ZpZWxkTmFtZUVzdHJhemlvbmkCAAAACmVzdHJhemlvbmkAAAAAEmZpZWxkTmFtZVJpY2hpZXN0YQIAAAAJcmljaGllc3RhAAAAABNmaWVsZE5hbWVFc2NsdXNpb25pAgAAAAplc2NsdXNpb25pAAAAABBmaWVsZE5hbWVDb3VudGVyAgAAAAdjb3VudGVyAAAAABJmaWVsZE5hbWVJZENvdW50ZXICAAAADGlkX3JpY2hpZXN0YQAAAAARZmllbGROYW1lUHJvdmlkZXICAAAACHByb3ZpZGVyAQAAAAtpc1BheW1lbnRPawAAAAEAAAABaQMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABBQAAAAxtc2dQYWdhbWVudG8EAAAAAXAJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAByRtYXRjaDAIBQAAAAFwAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAWEFAAAAByRtYXRjaDADCQAAAAAAAAIFAAAAAWEFAAAAEWFjY2VwdGFibGVBc3NldElkCQAAZwAAAAIIBQAAAAFwAAAABmFtb3VudAkAAGgAAAACBQAAAAptaW5QYXltZW50AAAAAAAAD0JABwcBAAAACG9wZW5Kc29uAAAAAgAAAANrZXkAAAAFdmFsdWUJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAnsiBQAAAANrZXkCAAAABCI6ICIFAAAABXZhbHVlAQAAAAdhZGRKc29uAAAAAgAAAANrZXkAAAAFdmFsdWUJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABCIsICIFAAAAA2tleQIAAAAEIjogIgUAAAAFdmFsdWUBAAAACWNsb3NlSnNvbgAAAAIAAAADa2V5AAAABXZhbHVlCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABCIsICIFAAAAA2tleQIAAAAEIjogIgUAAAAFdmFsdWUCAAAAAiJ9AQAAAAhteUdldEludAAAAAIAAAADa2V5AAAAA21zZwQAAAAFbXlJbnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXQFAAAAByRtYXRjaDAFAAAAAXQJAAACAAAAAQUAAAADbXNnBQAAAAVteUludAEAAAAPZ2V0Q3VycmVudEJsb2NrAAAAAAQAAAAFYmxvY2sEAAAAByRtYXRjaDAJAAPtAAAAAQUAAAAGaGVpZ2h0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAlCbG9ja0luZm8EAAAAAXgFAAAAByRtYXRjaDAFAAAAAXgJAAACAAAAAQIAAAA1QWxsYSByaWNlcmNhIGRlbCBibG9jY28gY29ycmVudGU6IEJsb2NjbyBub24gdHJvdmF0byEFAAAABWJsb2NrAQAAAAxnZXRUaW1lc3RhbXAAAAAABAAAAAVibG9jawQAAAAHJG1hdGNoMAkAA+0AAAABBQAAAAZoZWlnaHQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACUJsb2NrSW5mbwQAAAABeAUAAAAHJG1hdGNoMAgFAAAAAXgAAAAJdGltZXN0YW1wCQAAAgAAAAECAAAAMUFsbGEgcmljZXJjYSBkZWwgYHRpbWVzdGFtcGA6IEJsb2NjbyBub24gdHJvdmF0byEFAAAABWJsb2NrAQAAAAZnZXRWcmYAAAABAAAACXRoaXNCbG9jawQAAAADdnJmBAAAAAckbWF0Y2gwCAUAAAAJdGhpc0Jsb2NrAAAAA3ZyZgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABdAUAAAAHJG1hdGNoMAUAAAABdAkAAAIAAAABAgAAAE5BbGxhIHJpY2VyY2EgZGVsIGB2cmZgOiBCbG9jY28gbm9uIHRyb3ZhdG8gbyBibG9jY28gbm9uIGluIHZlcnNpb25lIDUgcml0ZW50YS4FAAAAA3ZyZgEAAAAKcmFuZG9taXplcgAAAAIAAAADaW52AAAACXJpY2hpZXN0YQQAAAAMY3VycmVudEJsb2NrCQEAAAAPZ2V0Q3VycmVudEJsb2NrAAAAAAQAAAAEcmFuZAkAAMsAAAACCQAAywAAAAIJAADLAAAAAgkAAMsAAAACCQAAywAAAAIJAADLAAAAAgkAAMsAAAACCQAAywAAAAIJAADLAAAAAgkAAMsAAAACCAUAAAADaW52AAAADXRyYW5zYWN0aW9uSWQIBQAAAANpbnYAAAAPY2FsbGVyUHVibGljS2V5CQEAAAAGZ2V0VnJmAAAAAQUAAAAMY3VycmVudEJsb2NrCAUAAAAMY3VycmVudEJsb2NrAAAAE2dlbmVyYXRpb25TaWduYXR1cmUJAAGaAAAAAQgFAAAADGN1cnJlbnRCbG9jawAAAAl0aW1lc3RhbXAJAAGaAAAAAQgFAAAADGN1cnJlbnRCbG9jawAAAAZoZWlnaHQJAAGbAAAAAQUAAAAJcmljaGllc3RhAQAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAgFAAAACWxhc3RCbG9jawAAABNnZW5lcmF0aW9uU2lnbmF0dXJlCQABmgAAAAEIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQABmgAAAAEIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0AwkAAGYAAAACCQAAyAAAAAEFAAAABHJhbmQAAAAAAAAAAAEJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADkRpbWVuc2lvbmUgZGkgCQACXAAAAAEFAAAABHJhbmQCAAAABiB2YWxlIAkAAaQAAAABCQAAyAAAAAEFAAAABHJhbmQCAAAAByBIQVNIOiAJAAJcAAAAAQkAC1QAAAABCQALVAAAAAEFAAAABHJhbmQJAAtUAAAAAQkAC1QAAAABBQAAAARyYW5kAQAAAAdlc3RyYWkxAAAAAwAAAAlyaWNoaWVzdGEAAAAGbnVtZXJvAAAAAWkEAAAAD3N0ck93bmVyQWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAACWtleVByZWZpeAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAPc3RyT3duZXJBZGRyZXNzAgAAAAFfBQAAAAlyaWNoaWVzdGECAAAAAV8EAAAACmtleUNvdW50ZXIJAAEsAAAAAgUAAAAJa2V5UHJlZml4BQAAABBmaWVsZE5hbWVDb3VudGVyBAAAAAxtYXhSaWNoaWVzdGEJAQAAAAhteUdldEludAAAAAIFAAAACmtleUNvdW50ZXICAAAAMUxhIHJpY2hpZXN0YSBmYXR0YSBub24gw6ggc3RhdGEgYW5jb3JhIHJlZ2lzdHJhdGEEAAAAD251bWVyb1JpY2hpZXN0YQMJAABnAAAAAgAAAAAAAAAAAAUAAAAGbnVtZXJvBQAAAAxtYXhSaWNoaWVzdGEDCQAAZwAAAAIFAAAADG1heFJpY2hpZXN0YQUAAAAGbnVtZXJvBQAAAAZudW1lcm8JAAACAAAAAQIAAAAqTm9uIGVzaXN0ZSB1bmEgcmljaGllc3RhIGNvbiBxdWVzdG8gbnVtZXJvBAAAAAprZXlQcmVmaXhOCQABLAAAAAIJAAEsAAAAAgUAAAAJa2V5UHJlZml4CQABpAAAAAEFAAAAD251bWVyb1JpY2hpZXN0YQIAAAABXwQAAAAMa2V5UmlzdWx0YXRvCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAEmZpZWxkTmFtZVJpc3VsdGF0bwQAAAAKaXNFc3RyYXR0bwQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAAxrZXlSaXN1bHRhdG8DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABdAUAAAAHJG1hdGNoMAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACdSaXN1bHRhdG8gZ2nDoCBwcmVzZW50ZSBpbiBibG9ja2NoYWluOiAFAAAADGtleVJpc3VsdGF0bwIAAAACOiAFAAAAAXQHAwkBAAAAASEAAAABBQAAAAppc0VzdHJhdHRvBAAAABVoZWlnaHRCbG9jY29DYW5kaWRhdG8JAQAAAAhteUdldEludAAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAAZZmllbGROYW1lSGVpZ2h0RXh0cmFjdGlvbgIAAAAnRXJyb3JlIGdlbmVyaWNvIHN1IGRhdGkgZGVsbGEgcmljaGllc3RhAwkAAGYAAAACBQAAABVoZWlnaHRCbG9jY29DYW5kaWRhdG8FAAAABmhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABlEZXZpIGFzcGV0dGFyZSBpbCBibG9jY28gCQABpAAAAAEFAAAAFWhlaWdodEJsb2Njb0NhbmRpZGF0bwIAAAASLiBzaWFtbyBhbCBibG9jY28gCQABpAAAAAEFAAAABmhlaWdodAQAAAAHa2V5U2VtZQkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAAA1maWVsZE5hbWVTZWVkBAAAAARzZWVkBAAAAAckbWF0Y2gwCQAEHAAAAAIFAAAABHRoaXMFAAAAB2tleVNlbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAXQFAAAAByRtYXRjaDAFAAAAAXQJAAACAAAAAQIAAAAsU2VtZSBub24gdHJvdmF0by4gUXVhbGNvc2Egw6ggYW5kYXRhIHN0b3J0YSEEAAAAD2Jsb2Njb0NhbmRpZGF0bwQAAAAHJG1hdGNoMAkAA+0AAAABBQAAABVoZWlnaHRCbG9jY29DYW5kaWRhdG8DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACUJsb2NrSW5mbwQAAAAFYmxvY2sFAAAAByRtYXRjaDAFAAAABWJsb2NrCQAAAgAAAAECAAAAKkVycm9yZTogSWwgYmxvY2NvIGRpIGVzdHJhemlvbmUgbm9uIGVzaXN0ZQQAAAAIdnJmVmFsdWUEAAAAByRtYXRjaDAIBQAAAA9ibG9jY29DYW5kaWRhdG8AAAADdnJmAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAF0BQAAAAckbWF0Y2gwBQAAAAF0CQAAAgAAAAECAAAAIUJsb2NjbyBub24gaW4gdmVyc2lvbmUgNSByaXRlbnRhLgQAAAAEcmFuZAkAAMsAAAACCQAAywAAAAIJAADLAAAAAgUAAAAEc2VlZAgFAAAAD2Jsb2Njb0NhbmRpZGF0bwAAABNnZW5lcmF0aW9uU2lnbmF0dXJlCAUAAAAPYmxvY2NvQ2FuZGlkYXRvAAAAEmdlbmVyYXRvclB1YmxpY0tleQkBAAAABmdldFZyZgAAAAEFAAAAD2Jsb2Njb0NhbmRpZGF0bwQAAAADc2hhCQACXAAAAAEJAAtUAAAAAQkAC1QAAAABBQAAAARyYW5kBAAAAA5zdHJDYXJkaW5hbGl0YQkAAaQAAAABCQEAAAAIbXlHZXRJbnQAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAFGZpZWxkTmFtZUNhcmRpbmFsaXRhAgAAABtFcnJvcmUgbGV0dHVyYSBjYXJkaW5hbGl0w6AEAAAAEHN0ckRhdGFSaWNoaWVzdGEJAAGkAAAAAQkBAAAACG15R2V0SW50AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABZmaWVsZE5hbWVEYXRhUmljaGllc3RhAgAAABxFcnJvcmUgbGV0dHVyYSBEYXRhUmljaGllc3RhBAAAAA1zdHJFc3RyYXppb25pCQABpAAAAAEJAQAAAAhteUdldEludAAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAATZmllbGROYW1lRXN0cmF6aW9uaQIAAAAZRXJyb3JlIGxldHR1cmEgRXN0cmF6aW9uaQQAAAAKZXNjbHVzaW9uaQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAE2ZpZWxkTmFtZUVzY2x1c2lvbmkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABdAUAAAAHJG1hdGNoMAUAAAABdAkAAAIAAAABAgAAACZFcnJvcmU6IGVsZW5jbyBlc2NsdXNpb25pIG5vbiBwcmVzZW50ZQQAAAAEanNvbgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQEAAAAIb3Blbkpzb24AAAACBQAAABJmaWVsZE5hbWVJZENvdW50ZXIJAAGkAAAAAQUAAAAPbnVtZXJvUmljaGllc3RhCQEAAAAHYWRkSnNvbgAAAAIFAAAAEGZpZWxkTmFtZUNvdW50ZXIJAAGkAAAAAQUAAAAMbWF4UmljaGllc3RhCQEAAAAHYWRkSnNvbgAAAAIFAAAAEWZpZWxkTmFtZVByb3ZpZGVyBQAAAA9zdHJPd25lckFkZHJlc3MJAQAAAAdhZGRKc29uAAAAAgUAAAASZmllbGROYW1lUmljaGllc3RhBQAAAAlyaWNoaWVzdGEJAQAAAAdhZGRKc29uAAAAAgUAAAAUZmllbGROYW1lQ2FyZGluYWxpdGEFAAAADnN0ckNhcmRpbmFsaXRhCQEAAAAHYWRkSnNvbgAAAAIFAAAAE2ZpZWxkTmFtZUVzdHJhemlvbmkFAAAADXN0ckVzdHJhemlvbmkJAQAAAAdhZGRKc29uAAAAAgUAAAATZmllbGROYW1lRXNjbHVzaW9uaQUAAAAKZXNjbHVzaW9uaQkBAAAAB2FkZEpzb24AAAACBQAAABZmaWVsZE5hbWVEYXRhUmljaGllc3RhBQAAABBzdHJEYXRhUmljaGllc3RhCQEAAAAHYWRkSnNvbgAAAAIFAAAAEGZpZWxkTmFtZVNlZWRCMTYJAAJcAAAAAQUAAAAEc2VlZAkBAAAAB2FkZEpzb24AAAACBQAAABlmaWVsZE5hbWVIZWlnaHRFeHRyYWN0aW9uCQABpAAAAAEFAAAAFWhlaWdodEJsb2Njb0NhbmRpZGF0bwkBAAAACWNsb3NlSnNvbgAAAAIFAAAAEmZpZWxkTmFtZVJpc3VsdGF0bwUAAAADc2hhCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAANZmllbGROYW1lSnNvbgUAAAAEanNvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAxrZXlSaXN1bHRhdG8FAAAAA3NoYQUAAAADbmlsCQAAAgAAAAECAAAAJEVycm9yZTogbm9uIGRvdnJlc3RpIHBhc3NhcmUgZGEgcXXDrAEAAAAJcmVnaXN0cmExAAAABQAAAAlyaWNoaWVzdGEAAAALY2FyZGluYWxpdGEAAAAKZXN0cmF6aW9uaQAAAAplc2NsdXNpb25pAAAAAWkEAAAACWtleVByZWZpeAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAAAV8FAAAACXJpY2hpZXN0YQIAAAABXwQAAAAKa2V5Q291bnRlcgkAASwAAAACBQAAAAlrZXlQcmVmaXgFAAAAEGZpZWxkTmFtZUNvdW50ZXIEAAAACm5SaWNoaWVzdGEEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAAKa2V5Q291bnRlcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFjBQAAAAckbWF0Y2gwCQAAZAAAAAIFAAAAAWMAAAAAAAAAAAEAAAAAAAAAAAEEAAAACmtleVByZWZpeE4JAAEsAAAAAgkAASwAAAACBQAAAAlrZXlQcmVmaXgJAAGkAAAAAQUAAAAKblJpY2hpZXN0YQIAAAABXwQAAAAEc2VlZAkBAAAACnJhbmRvbWl6ZXIAAAACBQAAAAFpCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAlyaWNoaWVzdGEJAAGkAAAAAQUAAAALY2FyZGluYWxpdGEJAAGkAAAAAQUAAAAKZXN0cmF6aW9uaQUAAAAKZXNjbHVzaW9uaQQAAAAIY3VyckRhdGUJAQAAAAxnZXRUaW1lc3RhbXAAAAAABAAAABBoZWlnaHRFeHRyYWN0aW9uCQAAZAAAAAIFAAAABmhlaWdodAUAAAAKZGVsYXlCbG9jawkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa2V5Q291bnRlcgUAAAAKblJpY2hpZXN0YQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABlmaWVsZE5hbWVIZWlnaHRFeHRyYWN0aW9uBQAAABBoZWlnaHRFeHRyYWN0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAFGZpZWxkTmFtZUNhcmRpbmFsaXRhBQAAAAtjYXJkaW5hbGl0YQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABNmaWVsZE5hbWVFc3RyYXppb25pBQAAAAplc3RyYXppb25pCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAFmZpZWxkTmFtZURhdGFSaWNoaWVzdGEFAAAACGN1cnJEYXRlCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAIJAAEsAAAAAgUAAAAKa2V5UHJlZml4TgUAAAANZmllbGROYW1lU2VlZAUAAAAEc2VlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAEGZpZWxkTmFtZVNlZWRCMTYJAAJcAAAAAQUAAAAEc2VlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAACmtleVByZWZpeE4FAAAAE2ZpZWxkTmFtZUVzY2x1c2lvbmkFAAAACmVzY2x1c2lvbmkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAAprZXlQcmVmaXhOBQAAABJmaWVsZE5hbWVSaWNoaWVzdGEFAAAACXJpY2hpZXN0YQUAAAADbmlsAAAAAgAAAAFpAQAAAAZlc3RyYWkAAAACAAAACXJpY2hpZXN0YQAAAAZudW1lcm8DCQEAAAALaXNQYXltZW50T2sAAAABBQAAAAFpCQEAAAAHZXN0cmFpMQAAAAMFAAAACXJpY2hpZXN0YQUAAAAGbnVtZXJvBQAAAAFpCQAAAgAAAAEFAAAADG1zZ1BhZ2FtZW50bwAAAAFpAQAAAAhyZWdpc3RyYQAAAAQAAAAJcmljaGllc3RhAAAAC2NhcmRpbmFsaXRhAAAACmVzdHJhemlvbmkAAAAKZXNjbHVzaW9uaQMJAQAAAAtpc1BheW1lbnRPawAAAAEFAAAAAWkJAQAAAAlyZWdpc3RyYTEAAAAFBQAAAAlyaWNoaWVzdGEFAAAAC2NhcmRpbmFsaXRhBQAAAAplc3RyYXppb25pBQAAAAplc2NsdXNpb25pBQAAAAFpCQAAAgAAAAEFAAAADG1zZ1BhZ2FtZW50bwAAAAD61efp", "height": 1974047, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4Q1nfENis7qSw9yvDpFyHoVaPA9zVQLUGb56gDbxAUmi Next: 4eqByBTCLRTuwvFm6vcnKdMPtQqBrUm19WSjBxM3MyF6 Diff:
OldNewDifferences
107107
108108 func randomizer (inv,richiesta) = {
109109 let currentBlock = getCurrentBlock()
110- let rand = (((((((((inv.transactionId + inv.callerPublicKey) + getVrf(currentBlock)) + currentBlock.generationSignature) + toBytes(currentBlock.timestamp)) + toBytes(currentBlock.height)) + toBytes(richiesta)) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
110+ let rand = ((((((((((inv.transactionId + inv.callerPublicKey) + getVrf(currentBlock)) + currentBlock.generationSignature) + toBytes(currentBlock.timestamp)) + toBytes(currentBlock.height)) + toBytes(richiesta)) + base58'11111111111111111111') + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
111111 if ((size(rand) > 1))
112112 then throw(((((("Dimensione di " + toBase16String(rand)) + " vale ") + toString(size(rand))) + " HASH: ") + toBase16String(sha256_16Kb(sha256_16Kb(rand)))))
113113 else sha256_16Kb(sha256_16Kb(rand))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let delayBlock = 1
55
66 let minPayment = 10
77
88 let minPaymentUM = " centesimi di bmsCoin. "
99
1010 let acceptableAssetId = base58'GQqJPRuXvxoyz22DeLqquGcx3cdbYpWi6QdqfQUMbLuf'
1111
1212 let msgPagamento = (((("Devi effettuare un pagamento in " + toBase58String(acceptableAssetId)) + " di almeno ") + toString(minPayment)) + minPaymentUM)
1313
1414 let fieldNameRisultato = "seme_estratto"
1515
1616 let fieldNameSeed = "seed"
1717
1818 let fieldNameSeedB16 = "seed_b16"
1919
2020 let fieldNameHeightExtraction = "height_extraction"
2121
2222 let fieldNameJson = "json"
2323
2424 let fieldNameCardinalita = "cardinalita"
2525
2626 let fieldNameDataRichiesta = "data_richiesta"
2727
2828 let fieldNameEstrazioni = "estrazioni"
2929
3030 let fieldNameRichiesta = "richiesta"
3131
3232 let fieldNameEsclusioni = "esclusioni"
3333
3434 let fieldNameCounter = "counter"
3535
3636 let fieldNameIdCounter = "id_richiesta"
3737
3838 let fieldNameProvider = "provider"
3939
4040 func isPaymentOk (i) = if ((size(i.payments) == 0))
4141 then throw(msgPagamento)
4242 else {
4343 let p = i.payments[0]
4444 match p.assetId {
4545 case a: ByteVector =>
4646 if ((a == acceptableAssetId))
4747 then (p.amount >= (minPayment * 1000000))
4848 else false
4949 case _ =>
5050 false
5151 }
5252 }
5353
5454
5555 func openJson (key,value) = ((("{\"" + key) + "\": \"") + value)
5656
5757
5858 func addJson (key,value) = ((("\", \"" + key) + "\": \"") + value)
5959
6060
6161 func closeJson (key,value) = (((("\", \"" + key) + "\": \"") + value) + "\"}")
6262
6363
6464 func myGetInt (key,msg) = {
6565 let myInt = match getInteger(this, key) {
6666 case t: Int =>
6767 t
6868 case _ =>
6969 throw(msg)
7070 }
7171 myInt
7272 }
7373
7474
7575 func getCurrentBlock () = {
7676 let block = match blockInfoByHeight(height) {
7777 case x: BlockInfo =>
7878 x
7979 case _ =>
8080 throw("Alla ricerca del blocco corrente: Blocco non trovato!")
8181 }
8282 block
8383 }
8484
8585
8686 func getTimestamp () = {
8787 let block = match blockInfoByHeight(height) {
8888 case x: BlockInfo =>
8989 x.timestamp
9090 case _ =>
9191 throw("Alla ricerca del `timestamp`: Blocco non trovato!")
9292 }
9393 block
9494 }
9595
9696
9797 func getVrf (thisBlock) = {
9898 let vrf = match thisBlock.vrf {
9999 case t: ByteVector =>
100100 t
101101 case _ =>
102102 throw("Alla ricerca del `vrf`: Blocco non trovato o blocco non in versione 5 ritenta.")
103103 }
104104 vrf
105105 }
106106
107107
108108 func randomizer (inv,richiesta) = {
109109 let currentBlock = getCurrentBlock()
110- let rand = (((((((((inv.transactionId + inv.callerPublicKey) + getVrf(currentBlock)) + currentBlock.generationSignature) + toBytes(currentBlock.timestamp)) + toBytes(currentBlock.height)) + toBytes(richiesta)) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
110+ let rand = ((((((((((inv.transactionId + inv.callerPublicKey) + getVrf(currentBlock)) + currentBlock.generationSignature) + toBytes(currentBlock.timestamp)) + toBytes(currentBlock.height)) + toBytes(richiesta)) + base58'11111111111111111111') + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
111111 if ((size(rand) > 1))
112112 then throw(((((("Dimensione di " + toBase16String(rand)) + " vale ") + toString(size(rand))) + " HASH: ") + toBase16String(sha256_16Kb(sha256_16Kb(rand)))))
113113 else sha256_16Kb(sha256_16Kb(rand))
114114 }
115115
116116
117117 func estrai1 (richiesta,numero,i) = {
118118 let strOwnerAddress = toString(i.caller)
119119 let keyPrefix = (((strOwnerAddress + "_") + richiesta) + "_")
120120 let keyCounter = (keyPrefix + fieldNameCounter)
121121 let maxRichiesta = myGetInt(keyCounter, "La richiesta fatta non è stata ancora registrata")
122122 let numeroRichiesta = if ((0 >= numero))
123123 then maxRichiesta
124124 else if ((maxRichiesta >= numero))
125125 then numero
126126 else throw("Non esiste una richiesta con questo numero")
127127 let keyPrefixN = ((keyPrefix + toString(numeroRichiesta)) + "_")
128128 let keyRisultato = (keyPrefixN + fieldNameRisultato)
129129 let isEstratto = match getString(this, keyRisultato) {
130130 case t: String =>
131131 throw(((("Risultato già presente in blockchain: " + keyRisultato) + ": ") + t))
132132 case _ =>
133133 false
134134 }
135135 if (!(isEstratto))
136136 then {
137137 let heightBloccoCandidato = myGetInt((keyPrefixN + fieldNameHeightExtraction), "Errore generico su dati della richiesta")
138138 if ((heightBloccoCandidato > height))
139139 then throw(((("Devi aspettare il blocco " + toString(heightBloccoCandidato)) + ". siamo al blocco ") + toString(height)))
140140 else {
141141 let keySeme = (keyPrefixN + fieldNameSeed)
142142 let seed = match getBinary(this, keySeme) {
143143 case t: ByteVector =>
144144 t
145145 case _ =>
146146 throw("Seme non trovato. Qualcosa è andata storta!")
147147 }
148148 let bloccoCandidato = match blockInfoByHeight(heightBloccoCandidato) {
149149 case block: BlockInfo =>
150150 block
151151 case _ =>
152152 throw("Errore: Il blocco di estrazione non esiste")
153153 }
154154 let vrfValue = match bloccoCandidato.vrf {
155155 case t: ByteVector =>
156156 t
157157 case _ =>
158158 throw("Blocco non in versione 5 ritenta.")
159159 }
160160 let rand = (((seed + bloccoCandidato.generationSignature) + bloccoCandidato.generatorPublicKey) + getVrf(bloccoCandidato))
161161 let sha = toBase16String(sha256_16Kb(sha256_16Kb(rand)))
162162 let strCardinalita = toString(myGetInt((keyPrefixN + fieldNameCardinalita), "Errore lettura cardinalità"))
163163 let strDataRichiesta = toString(myGetInt((keyPrefixN + fieldNameDataRichiesta), "Errore lettura DataRichiesta"))
164164 let strEstrazioni = toString(myGetInt((keyPrefixN + fieldNameEstrazioni), "Errore lettura Estrazioni"))
165165 let esclusioni = match getString(this, (keyPrefixN + fieldNameEsclusioni)) {
166166 case t: String =>
167167 t
168168 case _ =>
169169 throw("Errore: elenco esclusioni non presente")
170170 }
171171 let json = ((((((((((openJson(fieldNameIdCounter, toString(numeroRichiesta)) + addJson(fieldNameCounter, toString(maxRichiesta))) + addJson(fieldNameProvider, strOwnerAddress)) + addJson(fieldNameRichiesta, richiesta)) + addJson(fieldNameCardinalita, strCardinalita)) + addJson(fieldNameEstrazioni, strEstrazioni)) + addJson(fieldNameEsclusioni, esclusioni)) + addJson(fieldNameDataRichiesta, strDataRichiesta)) + addJson(fieldNameSeedB16, toBase16String(seed))) + addJson(fieldNameHeightExtraction, toString(heightBloccoCandidato))) + closeJson(fieldNameRisultato, sha))
172172 [StringEntry((keyPrefixN + fieldNameJson), json), StringEntry(keyRisultato, sha)]
173173 }
174174 }
175175 else throw("Errore: non dovresti passare da quì")
176176 }
177177
178178
179179 func registra1 (richiesta,cardinalita,estrazioni,esclusioni,i) = {
180180 let keyPrefix = (((toString(i.caller) + "_") + richiesta) + "_")
181181 let keyCounter = (keyPrefix + fieldNameCounter)
182182 let nRichiesta = match getInteger(this, keyCounter) {
183183 case c: Int =>
184184 (c + 1)
185185 case _ =>
186186 1
187187 }
188188 let keyPrefixN = ((keyPrefix + toString(nRichiesta)) + "_")
189189 let seed = randomizer(i, (((richiesta + toString(cardinalita)) + toString(estrazioni)) + esclusioni))
190190 let currDate = getTimestamp()
191191 let heightExtraction = (height + delayBlock)
192192 [IntegerEntry(keyCounter, nRichiesta), IntegerEntry((keyPrefixN + fieldNameHeightExtraction), heightExtraction), IntegerEntry((keyPrefixN + fieldNameCardinalita), cardinalita), IntegerEntry((keyPrefixN + fieldNameEstrazioni), estrazioni), IntegerEntry((keyPrefixN + fieldNameDataRichiesta), currDate), BinaryEntry((keyPrefixN + fieldNameSeed), seed), StringEntry((keyPrefixN + fieldNameSeedB16), toBase16String(seed)), StringEntry((keyPrefixN + fieldNameEsclusioni), esclusioni), StringEntry((keyPrefixN + fieldNameRichiesta), richiesta)]
193193 }
194194
195195
196196 @Callable(i)
197197 func estrai (richiesta,numero) = if (isPaymentOk(i))
198198 then estrai1(richiesta, numero, i)
199199 else throw(msgPagamento)
200200
201201
202202
203203 @Callable(i)
204204 func registra (richiesta,cardinalita,estrazioni,esclusioni) = if (isPaymentOk(i))
205205 then registra1(richiesta, cardinalita, estrazioni, esclusioni, i)
206206 else throw(msgPagamento)
207207
208208

github/deemru/w8io/c3f4982 
79.40 ms