tx · FL6sTL6RDrXbxKQqKTYAdDbkfMZcozAJtotxjvus8qjk

3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks:  -0.01400000 Waves

2022.04.07 18:51 [3063650] smart account 3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks > SELF 0.00000000 Waves

{ "type": 13, "id": "FL6sTL6RDrXbxKQqKTYAdDbkfMZcozAJtotxjvus8qjk", "fee": 1400000, "feeAssetId": null, "timestamp": 1649346721604, "version": 2, "chainId": 87, "sender": "3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks", "senderPublicKey": "XrNmTusDFaLSz3wAjmdfcyC5h6uYyVbpdh18758UpFv", "proofs": [ "5ZF92F6gHfGWeBxKPPn1rfvW7b6NGL3DriKnavKk6zuW7nEgB5Rv1JUZXAviTgu6A6ZrB7ukwSVoRnRuFr4RfrCL" ], "script": "base64:AAIFAAAAAAAAAD8IAhIDCgEIEgQKAggIEgUKAwgBARIDCgEIEgASABIAEgASAwoBCBIAEgQKAggIEgMKAQESABIDCgEBEgMKAQgAAAAcAQAAABBrZXlBcnRlZmFjdE93bmVyAAAAAgAAAAxhcnRlZmFjdE5hbWUAAAAFb3duZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAADGFydGVmYWN0TmFtZQIAAAABXwUAAAAFb3duZXICAAAABl9vd25lcgEAAAAQa2V5VW5zdGFrZUhlaWdodAAAAAIAAAAMYXJ0ZWZhY3ROYW1lAAAACmFydGVmYWN0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAADGFydGVmYWN0TmFtZQIAAAABXwUAAAAKYXJ0ZWZhY3RJZAIAAAAPX3Vuc3Rha2VfaGVpZ2h0AQAAAA9rZXlBcnRlZmFjdER1Y2sAAAACAAAADGFydGVmYWN0TmFtZQAAAAZkdWNrSWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAADGFydGVmYWN0TmFtZQIAAAABXwUAAAAGZHVja0lkAgAAAAVfZHVjawEAAAAZZ2V0UHJvY2Vzc0ZpbmlzaEhlaWdodEtleQAAAAIAAAAHYWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAAFfCQACWAAAAAEFAAAABHR4SWQCAAAAA19maAAAAAAKZGV2QWRkcmVzcwEAAAAaAVcXd9hCTyE6CkZPy+KvhiJrE5znW6fefHsAAAAACmVnZ3NOZWVkZWQJAABoAAAAAgAAAAAAAAAAAwAAAAAABfXhAAAAAAAOYXJ0ZWZhY3RzTGltaXQJAABkAAAAAgAAAAAAAAABLQAAAAAAAAACWAAAAAAJZnJlZUdlbmVzCQAETAAAAAICAAAAAUEJAARMAAAAAgIAAAABQgkABEwAAAACAgAAAAFDCQAETAAAAAICAAAAAUQJAARMAAAAAgIAAAABRQUAAAADbmlsAAAAAAxvbGRBcnRlZmFjdHMJAARMAAAAAgIAAAAIQVJULUxBS0UJAARMAAAAAgIAAAAJQVJULUhPVVNFCQAETAAAAAICAAAADEFSVC1CSUdIT1VTRQkABEwAAAACAgAAAAtBUlQtRklYR0VORQkABEwAAAACAgAAAAxBUlQtRlJFRUdFTkUJAARMAAAAAgIAAAAKQVJULU1JUlJPUgkABEwAAAACAgAAAAhBUlQtUE9NUAkABEwAAAACAgAAAAhBUlQtQ0FQRQkABEwAAAACAgAAAAdBUlQtSEFUCQAETAAAAAICAAAADkFSVC1DVVNUT01EVUNLBQAAAANuaWwAAAAACWFydGVmYWN0cwkABEwAAAACAgAAAApBUlQtWE1JU1RMCQAETAAAAAICAAAACEFSVC1YSEFUCQAETAAAAAICAAAACkFSVC1YU0NBUkYJAARMAAAAAgIAAAAMQVJULVhTV0VBVEVSCQAETAAAAAICAAAACUFSVC1YU09DSwkABEwAAAACAgAAAAlBUlQtWFRSRUUFAAAAA25pbAAAAAARc3Rha2VhYmxlV2l0aExvY2sJAARMAAAAAgIAAAAIQVJULUxBS0UJAARMAAAAAgIAAAAJQVJULVhUUkVFBQAAAANuaWwAAAAAFHN0YWtlYWJsZVdpdGhvdXRMb2NrCQAETAAAAAICAAAACkFSVC1YTUlTVEwFAAAAA25pbAAAAAAMYWxsU3Rha2VhYmxlCQAETgAAAAIFAAAAFHN0YWtlYWJsZVdpdGhvdXRMb2NrBQAAABFzdGFrZWFibGVXaXRoTG9jawAAAAALYWxsQXJ0ZWZhY3QJAAROAAAAAgUAAAAJYXJ0ZWZhY3RzBQAAAAxvbGRBcnRlZmFjdHMBAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAPZ2V0UmFuZG9tTnVtYmVyAAAABAAAAAh2YXJpYW50cwAAAAR0eElkAAAADGZpbmlzaEhlaWdodAAAAAZvZmZzZXQEAAAAD3JhbmRvbVNlZWRCbG9jawkBAAAABXZhbHVlAAAAAQkAA+0AAAABCQAAZQAAAAIFAAAADGZpbmlzaEhlaWdodAAAAAAAAAAAAQQAAAAKcmFuZG9tSGFzaAkAAfcAAAABCQAAywAAAAIJAADLAAAAAgEAAAAEHEF95gUAAAAEdHhJZAkBAAAABXZhbHVlAAAAAQgFAAAAD3JhbmRvbVNlZWRCbG9jawAAAAN2cmYJAABqAAAAAgkABLIAAAACBQAAAApyYW5kb21IYXNoBQAAAAZvZmZzZXQFAAAACHZhcmlhbnRzAQAAABFnZXRSYW5kb21BcnRlZmFjdAAAAAIAAAAFYm94SWQAAAABaAQAAAAMcmFuZG9tTnVtYmVyCQEAAAAPZ2V0UmFuZG9tTnVtYmVyAAAABAAAAAAAAAAABgUAAAAFYm94SWQFAAAAAWgAAAAAAAAAAAEJAAGRAAAAAgUAAAAJYXJ0ZWZhY3RzBQAAAAxyYW5kb21OdW1iZXIBAAAADmdldFJhbmRvbUdlbmVzAAAAAgAAAAR0eElkAAAAAWgEAAAADHJhbmRvbU51bWJlcgkBAAAAD2dldFJhbmRvbU51bWJlcgAAAAQAAAAAAAAAAAYFAAAABHR4SWQFAAAAAWgAAAAAAAAAAAIJAAGRAAAAAgUAAAAJZnJlZUdlbmVzBQAAAAxyYW5kb21OdW1iZXIBAAAAFGNoZWNrQXJ0ZWZhY3REZXRhaWxzAAAAAQAAAAdhc3NldElkBAAAAAVhc3NldAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkBAAAAAlhc3NldE5hbWUJAQAAAAV2YWx1ZQAAAAEIBQAAAAVhc3NldAAAAARuYW1lAwMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAthbGxBcnRlZmFjdAUAAAAJYXNzZXROYW1lCQAAAAAAAAIIBQAAAAVhc3NldAAAAAZpc3N1ZXIFAAAABHRoaXMHBQAAAAlhc3NldE5hbWUJAAACAAAAAQIAAAAQSW52YWxpZCBhcnRlZmFjdAEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABVzdGF0aWNfYnJlZWRlckFkZHJlc3MBAAAADWdldEVnZ0Fzc2V0SWQAAAAACQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABFzdGF0aWNfZWdnQXNzZXRJZAEAAAAIYXNTdHJpbmcAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZzdHJpbmcFAAAAByRtYXRjaDAFAAAABnN0cmluZwkAAAIAAAABAgAAABx3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nAQAAAAVhc0ludAAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAA2ludAUAAAAHJG1hdGNoMAUAAAADaW50CQAAAgAAAAECAAAAGXdyb25nIHR5cGUsIGV4cGVjdGVkOiBJbnQBAAAADm1hbmlwdWxhdGVOYW1lAAAAAwAAAAlhc3NldE5hbWUAAAAIcG9zaXRpb24AAAAEY2hhcgkAASwAAAACCQABLAAAAAIJAAEvAAAAAgUAAAAJYXNzZXROYW1lCQAAZQAAAAIFAAAACHBvc2l0aW9uAAAAAAAAAAABBQAAAARjaGFyCQEAAAAJdGFrZVJpZ2h0AAAAAgUAAAAJYXNzZXROYW1lCQAAZQAAAAIAAAAAAAAAABAFAAAACHBvc2l0aW9uAQAAABBpdGVtSXNJbkNvb2xEb3duAAAAAgAAAAxhcnRlZmFjdE5hbWUAAAAKYXJ0ZWZhY3RJZAQAAAARdW5zdGFrZUhlaWdodExhc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEGtleVVuc3Rha2VIZWlnaHQAAAACBQAAAAxhcnRlZmFjdE5hbWUFAAAACmFydGVmYWN0SWQEAAAADmNvb2xkb3duUGVyaW9kAAAAAAAAAADwAwkAAGYAAAACBQAAAAZoZWlnaHQJAABkAAAAAgUAAAARdW5zdGFrZUhlaWdodExhc3QFAAAADmNvb2xkb3duUGVyaW9kBwYAAAAPAAAAAWkBAAAAD2NvbmZpZ3VyZU9yYWNsZQAAAAEAAAAGb3JhY2xlAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAACmFkbWluIG9ubHkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MFAAAABm9yYWNsZQUAAAADbmlsAAAAAWkBAAAAGmNhbGN1bGF0ZUZhcm1pbmdQb3dlckJvb3N0AAAAAgAAAAZkdWNrSWQAAAAHYWRkcmVzcwQAAAAJbGFrZUJvb3N0AwkBAAAAAiE9AAAAAgkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAABBrZXlBcnRlZmFjdE93bmVyAAAAAgIAAAAIQVJULUxBS0UFAAAAB2FkZHJlc3MCAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAQAAAANeG1hc1RyZWVCb29zdAMJAQAAAAIhPQAAAAIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAQa2V5QXJ0ZWZhY3RPd25lcgAAAAICAAAACUFSVC1YVFJFRQUAAAAHYWRkcmVzcwIAAAAAAAAAAAAAAAADAAAAAAAAAAAABAAAAApzY2FyZkJvb3N0AwkBAAAAAiE9AAAAAgkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAAA9rZXlBcnRlZmFjdER1Y2sAAAACAgAAAApBUlQtWFNDQVJGBQAAAAZkdWNrSWQCAAAAAAAAAAAAAAAARQAAAAAAAAAAAAQAAAAKdG90YWxCb29zdAkAAGQAAAACCQAAZAAAAAIFAAAACWxha2VCb29zdAUAAAANeG1hc1RyZWVCb29zdAUAAAAKc2NhcmZCb29zdAkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABmR1Y2tJZAIAAAALX2xhc3RfYm9vc3QFAAAACnRvdGFsQm9vc3QFAAAAA25pbAUAAAAKdG90YWxCb29zdAAAAAFpAQAAAAlmaXhlZEdlbmUAAAADAAAAB3R4SWRTdHIAAAAPcGFyZW50Rml4ZWRHZW5lAAAAEXBvc2l0aW9uRml4ZWRHZW5lBAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAADGZpcnN0QXNzZXRJZAkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQDCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAABmFtb3VudAAAAAAAAAAAAQkAAAIAAAABAgAAABNORlQgaXMgbm90IGF0dGFjaGVkBAAAAAhhcnRlZmFjdAkBAAAAFGNoZWNrQXJ0ZWZhY3REZXRhaWxzAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAgUAAAAIYXJ0ZWZhY3QCAAAAC0FSVC1GSVhHRU5FCQAAAgAAAAECAAAAKVlvdSBuZWVkIHRvIGF0dGFjaCBhIEFSVC1GSVhHRU5FIGFydGVmYWN0BAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAD2ZpbmlzaEhlaWdodEtleQkBAAAAGWdldFByb2Nlc3NGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAUAAAAPZmluaXNoSGVpZ2h0S2V5BAAAAA9kdWNrR2VuZXNTdHJpbmcJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAMZ2VuZXJhdGVEdWNrCQAETAAAAAIFAAAAB3R4SWRTdHIJAARMAAAAAgUAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAkABEwAAAACBQAAAA9wYXJlbnRGaXhlZEdlbmUJAARMAAAAAgUAAAARcG9zaXRpb25GaXhlZEdlbmUJAARMAAAAAgIAAAAACQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAA9kdWNrR2VuZXNTdHJpbmcFAAAAD2R1Y2tHZW5lc1N0cmluZwQAAAAEY2FsbAkAA/wAAAAECQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAgAAABdmaW5pc2hEdWNrSGF0Y2hpbmdJdGVtcwkABEwAAAACBQAAAAd0eElkU3RyCQAETAAAAAIFAAAAD2R1Y2tHZW5lc1N0cmluZwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAABGNhbGwFAAAABGNhbGwJAARMAAAAAgkBAAAABEJ1cm4AAAACCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQAAAAAAAAAAAEFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACGZyZWVHZW5lAAAAAQAAAAd0eElkU3RyBAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAADGZpcnN0QXNzZXRJZAkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQDCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAABmFtb3VudAAAAAAAAAAAAQkAAAIAAAABAgAAABNORlQgaXMgbm90IGF0dGFjaGVkBAAAAAhhcnRlZmFjdAkBAAAAFGNoZWNrQXJ0ZWZhY3REZXRhaWxzAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAgUAAAAIYXJ0ZWZhY3QCAAAADEFSVC1GUkVFR0VORQkAAAIAAAABAgAAACpZb3UgbmVlZCB0byBhdHRhY2ggYSBBUlQtRlJFRUdFTkUgYXJ0ZWZhY3QEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAZZ2V0UHJvY2Vzc0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAABNwcm9jZXNzRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACCQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAABQAAAA9maW5pc2hIZWlnaHRLZXkEAAAADHNlbGVjdGVkR2VuZQkBAAAADmdldFJhbmRvbUdlbmVzAAAAAgUAAAAEdHhJZAUAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAQAAAAOcmFuZG9tUG9zaXRpb24JAQAAAA9nZXRSYW5kb21OdW1iZXIAAAAEAAAAAAAAAAAHBQAAAAR0eElkBQAAABNwcm9jZXNzRmluaXNoSGVpZ2h0AAAAAAAAAAADBAAAAA9kdWNrR2VuZXNTdHJpbmcJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAMZ2VuZXJhdGVEdWNrCQAETAAAAAIFAAAAB3R4SWRTdHIJAARMAAAAAgUAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAkABEwAAAACAAAAAAAAAAAACQAETAAAAAIAAAAAAAAAAAAJAARMAAAAAgUAAAAMc2VsZWN0ZWRHZW5lCQAETAAAAAIFAAAADnJhbmRvbVBvc2l0aW9uBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAPZHVja0dlbmVzU3RyaW5nBQAAAA9kdWNrR2VuZXNTdHJpbmcEAAAABGNhbGwJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAXZmluaXNoRHVja0hhdGNoaW5nSXRlbXMJAARMAAAAAgUAAAAHdHhJZFN0cgkABEwAAAACBQAAAA9kdWNrR2VuZXNTdHJpbmcFAAAAA25pbAUAAAADbmlsAwkAAAAA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CHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAADGFydGVmYWN0TmFtZQkBAAAAFGNoZWNrQXJ0ZWZhY3REZXRhaWxzAAAAAQUAAAAHYXNzZXRJZAMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAxhbGxTdGFrZWFibGUFAAAADGFydGVmYWN0TmFtZQMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAARc3Rha2VhYmxlV2l0aExvY2sFAAAADGFydGVmYWN0TmFtZQkBAAAAEGl0ZW1Jc0luQ29vbERvd24AAAACBQAAAAxhcnRlZmFjdE5hbWUJAAJYAAAAAQUAAAAHYXNzZXRJZAcJAAACAAAAAQIAAAAqSXRlbSBjYW4ndCBiZSBzdGFrZWQgeWV0LCBpdCdzIGluIGNvb2xkb3duBAAAAAdpbnZva2VyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAKYXJ0ZWZhY3RJZAkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAABBrZXlBcnRlZmFjdE93bmVyAAAAAgUAAAAMYXJ0ZWZhY3ROYW1lBQAAAAdpbnZva2VyAwkAAAAAAAACBQAAAAphcnRlZmFjdElkAgAAAAAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydGVmYWN0T3duZXIAAAACBQAAAAxhcnRlZmFjdE5hbWUFAAAAB2ludm9rZXIJAAJYAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQAAAgAAAAEJAAEsAAAAAgIAAAAYWW91IGFyZSBhbHJlYWR5IHN0YWtpbmcgBQAAAAxhcnRlZmFjdE5hbWUJAAACAAAAAQIAAAAdWW91IGNhbid0IHN0YWtlIHRoaXMgYXJ0YWZlY3QJAAACAAAAAQIAAAAPSW52YWxpZCBwYXltZW50AAAAAWkBAAAAC3Vuc3Rha2VJdGVtAAAAAQAAAAxhcnRlZmFjdE5hbWUDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAALYWxsQXJ0ZWZhY3QFAAAADGFydGVmYWN0TmFtZQQAAAAHaW52b2tlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAACmFydGVmYWN0SWQJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAQa2V5QXJ0ZWZhY3RPd25lcgAAAAIFAAAADGFydGVmYWN0TmFtZQUAAAAHaW52b2tlcgMJAAAAAAAAAgUAAAAKYXJ0ZWZhY3RJZAIAAAAACQAAAgAAAAEJAAEsAAAAAgIAAAAQWW91IGRpZG50IHN0YWtlIAUAAAAMYXJ0ZWZhY3ROYW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAQa2V5VW5zdGFrZUhlaWdodAAAAAIFAAAADGFydGVmYWN0TmFtZQUAAAAKYXJ0ZWZhY3RJZAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAAphcnRlZmFjdElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABBrZXlBcnRlZmFjdE93bmVyAAAAAgUAAAAMYXJ0ZWZhY3ROYW1lBQAAAAdpbnZva2VyBQAAAANuaWwJAAACAAAAAQIAAAAbVGhpcyBhcnRlZmFjdCBkb2Vzbid0IGV4aXN0AAAAAWkBAAAAB3ByZUluaXQAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABxzdGF0aWNfQVJULUxBS0VfZmFybWluZ1Nsb3RzAAAAAAAAAADICQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABxzdGF0aWNfQVJULUxBS0VfZmFybWluZ0Jvb3N0AAAAAAAAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAB1zdGF0aWNfQVJULUhPVVNFX2Zhcm1pbmdTbG90cwAAAAAAAAAABAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAdc3RhdGljX0FSVC1IT1VTRV9mYXJtaW5nQm9vc3QAAAAAAAAAAB4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAIHN0YXRpY19BUlQtQklHSE9VU0VfZmFybWluZ1Nsb3RzAAAAAAAAAAAKCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAACBzdGF0aWNfQVJULUJJR0hPVVNF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", "height": 3063650, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EmMKJhK28wjUomG5zJg4b5ZCMbHx71HZgXj1GXtZ8FZt Next: CnCTkGviczb5Weanzq6vMXhAiuyRyYFFcKzQJtxVejKn Diff:
OldNewDifferences
139139 let xmasTreeBoost = if ((tryGetString(keyArtefactOwner("ART-XTREE", address)) != ""))
140140 then 3
141141 else 0
142- let scarfBoost = if ((tryGetString(keyArtefactOwner("ART-XSCARF", duckId)) != ""))
142+ let scarfBoost = if ((tryGetString(keyArtefactDuck("ART-XSCARF", duckId)) != ""))
143143 then 69
144144 else 0
145145 let totalBoost = ((lakeBoost + xmasTreeBoost) + scarfBoost)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func keyArtefactOwner (artefactName,owner) = (((artefactName + "_") + owner) + "_owner")
55
66
77 func keyUnstakeHeight (artefactName,artefactId) = (((artefactName + "_") + artefactId) + "_unstake_height")
88
99
1010 func keyArtefactDuck (artefactName,duckId) = (((artefactName + "_") + duckId) + "_duck")
1111
1212
1313 func getProcessFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
1414
1515
1616 let devAddress = base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'
1717
1818 let eggsNeeded = (3 * 100000000)
1919
2020 let artefactsLimit = (301 + 600)
2121
2222 let freeGenes = ["A", "B", "C", "D", "E"]
2323
2424 let oldArtefacts = ["ART-LAKE", "ART-HOUSE", "ART-BIGHOUSE", "ART-FIXGENE", "ART-FREEGENE", "ART-MIRROR", "ART-POMP", "ART-CAPE", "ART-HAT", "ART-CUSTOMDUCK"]
2525
2626 let artefacts = ["ART-XMISTL", "ART-XHAT", "ART-XSCARF", "ART-XSWEATER", "ART-XSOCK", "ART-XTREE"]
2727
2828 let stakeableWithLock = ["ART-LAKE", "ART-XTREE"]
2929
3030 let stakeableWithoutLock = ["ART-XMISTL"]
3131
3232 let allStakeable = (stakeableWithoutLock ++ stakeableWithLock)
3333
3434 let allArtefact = (artefacts ++ oldArtefacts)
3535
3636 func tryGetString (key) = match getString(this, key) {
3737 case a: String =>
3838 a
3939 case _ =>
4040 ""
4141 }
4242
4343
4444 func tryGetInteger (key) = match getInteger(this, key) {
4545 case a: Int =>
4646 a
4747 case _ =>
4848 0
4949 }
5050
5151
5252 func getRandomNumber (variants,txId,finishHeight,offset) = {
5353 let randomSeedBlock = value(blockInfoByHeight((finishHeight - 1)))
5454 let randomHash = sha256(((base58'items' + txId) + value(randomSeedBlock.vrf)))
5555 (toInt(randomHash, offset) % variants)
5656 }
5757
5858
5959 func getRandomArtefact (boxId,h) = {
6060 let randomNumber = getRandomNumber(6, boxId, h, 1)
6161 artefacts[randomNumber]
6262 }
6363
6464
6565 func getRandomGenes (txId,h) = {
6666 let randomNumber = getRandomNumber(6, txId, h, 2)
6767 freeGenes[randomNumber]
6868 }
6969
7070
7171 func checkArtefactDetails (assetId) = {
7272 let asset = value(assetInfo(assetId))
7373 let assetName = value(asset.name)
7474 if (if (containsElement(allArtefact, assetName))
7575 then (asset.issuer == this)
7676 else false)
7777 then assetName
7878 else throw("Invalid artefact")
7979 }
8080
8181
8282 func tryGetStringExternal (address,key) = match getString(address, key) {
8383 case a: String =>
8484 a
8585 case _ =>
8686 ""
8787 }
8888
8989
9090 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
9191
9292
9393 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
9494
9595
9696 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
9797
9898
9999 func asString (value) = match value {
100100 case string: String =>
101101 string
102102 case _ =>
103103 throw("wrong type, expected: String")
104104 }
105105
106106
107107 func asInt (value) = match value {
108108 case int: Int =>
109109 int
110110 case _ =>
111111 throw("wrong type, expected: Int")
112112 }
113113
114114
115115 func manipulateName (assetName,position,char) = ((take(assetName, (position - 1)) + char) + takeRight(assetName, (16 - position)))
116116
117117
118118 func itemIsInCoolDown (artefactName,artefactId) = {
119119 let unstakeHeightLast = tryGetInteger(keyUnstakeHeight(artefactName, artefactId))
120120 let cooldownPeriod = 240
121121 if ((height > (unstakeHeightLast + cooldownPeriod)))
122122 then false
123123 else true
124124 }
125125
126126
127127 @Callable(i)
128128 func configureOracle (oracle) = if ((i.caller != this))
129129 then throw("admin only")
130130 else [StringEntry("static_oracleAddress", oracle)]
131131
132132
133133
134134 @Callable(i)
135135 func calculateFarmingPowerBoost (duckId,address) = {
136136 let lakeBoost = if ((tryGetString(keyArtefactOwner("ART-LAKE", address)) != ""))
137137 then 2
138138 else 0
139139 let xmasTreeBoost = if ((tryGetString(keyArtefactOwner("ART-XTREE", address)) != ""))
140140 then 3
141141 else 0
142- let scarfBoost = if ((tryGetString(keyArtefactOwner("ART-XSCARF", duckId)) != ""))
142+ let scarfBoost = if ((tryGetString(keyArtefactDuck("ART-XSCARF", duckId)) != ""))
143143 then 69
144144 else 0
145145 let totalBoost = ((lakeBoost + xmasTreeBoost) + scarfBoost)
146146 $Tuple2([IntegerEntry((duckId + "_last_boost"), totalBoost)], totalBoost)
147147 }
148148
149149
150150
151151 @Callable(i)
152152 func fixedGene (txIdStr,parentFixedGene,positionFixedGene) = {
153153 let firstPayment = value(i.payments[0])
154154 let firstAssetId = toBase58String(value(firstPayment.assetId))
155155 if ((firstPayment.amount != 1))
156156 then throw("NFT is not attached")
157157 else {
158158 let artefact = checkArtefactDetails(value(firstPayment.assetId))
159159 if ((artefact != "ART-FIXGENE"))
160160 then throw("You need to attach a ART-FIXGENE artefact")
161161 else {
162162 let txId = fromBase58String(txIdStr)
163163 let finishHeightKey = getProcessFinishHeightKey(toString(i.caller), txId)
164164 let processFinishHeight = getIntegerValue(getBreederAddress(), finishHeightKey)
165165 let duckGenesString = asString(invoke(getBreederAddress(), "generateDuck", [txIdStr, processFinishHeight, parentFixedGene, positionFixedGene, "", 0], nil))
166166 if ((duckGenesString == duckGenesString))
167167 then {
168168 let call = invoke(getBreederAddress(), "finishDuckHatchingItems", [txIdStr, duckGenesString], nil)
169169 if ((call == call))
170170 then [Burn(value(firstPayment.assetId), 1)]
171171 else throw("Strict value is not equal to itself.")
172172 }
173173 else throw("Strict value is not equal to itself.")
174174 }
175175 }
176176 }
177177
178178
179179
180180 @Callable(i)
181181 func freeGene (txIdStr) = {
182182 let firstPayment = value(i.payments[0])
183183 let firstAssetId = toBase58String(value(firstPayment.assetId))
184184 if ((firstPayment.amount != 1))
185185 then throw("NFT is not attached")
186186 else {
187187 let artefact = checkArtefactDetails(value(firstPayment.assetId))
188188 if ((artefact != "ART-FREEGENE"))
189189 then throw("You need to attach a ART-FREEGENE artefact")
190190 else {
191191 let txId = fromBase58String(txIdStr)
192192 let finishHeightKey = getProcessFinishHeightKey(toString(i.caller), txId)
193193 let processFinishHeight = getIntegerValue(getBreederAddress(), finishHeightKey)
194194 let selectedGene = getRandomGenes(txId, processFinishHeight)
195195 let randomPosition = getRandomNumber(7, txId, processFinishHeight, 3)
196196 let duckGenesString = asString(invoke(getBreederAddress(), "generateDuck", [txIdStr, processFinishHeight, 0, 0, selectedGene, randomPosition], nil))
197197 if ((duckGenesString == duckGenesString))
198198 then {
199199 let call = invoke(getBreederAddress(), "finishDuckHatchingItems", [txIdStr, duckGenesString], nil)
200200 if ((call == call))
201201 then [Burn(value(firstPayment.assetId), 1)]
202202 else throw("Strict value is not equal to itself.")
203203 }
204204 else throw("Strict value is not equal to itself.")
205205 }
206206 }
207207 }
208208
209209
210210
211211 @Callable(i)
212212 func copyDuck () = {
213213 let firstPayment = value(i.payments[0])
214214 let secondPayment = value(i.payments[1])
215215 let firstAssetId = toBase58String(value(firstPayment.assetId))
216216 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [firstAssetId], nil))
217217 if ((children == children))
218218 then if (if ((firstPayment.amount != 1))
219219 then true
220220 else (secondPayment.amount != 1))
221221 then throw("NFT is not attached")
222222 else {
223223 let artefact = checkArtefactDetails(value(secondPayment.assetId))
224224 if ((artefact != "ART-MIRROR"))
225225 then throw("You need to attach a ART-MIRROR artefact")
226226 else {
227227 let nftInfo = value(assetInfo(value(firstPayment.assetId)))
228228 let asset1Gen = split(nftInfo.name, "")
229229 if (if ((asset1Gen[14] == "G"))
230230 then true
231231 else (asset1Gen[14] == "J"))
232232 then throw("You can't mirror this duck")
233233 else {
234234 let duckGen = nftInfo.name
235235 let call = invoke(getBreederAddress(), "createDuckSpecialGenes", [i.caller.bytes, duckGen, children], nil)
236236 if ((call == call))
237237 then [ScriptTransfer(i.caller, 1, firstPayment.assetId), Burn(value(secondPayment.assetId), 1)]
238238 else throw("Strict value is not equal to itself.")
239239 }
240240 }
241241 }
242242 else throw("Strict value is not equal to itself.")
243243 }
244244
245245
246246
247247 @Callable(i)
248248 func wearItemToDuck () = {
249249 let firstPayment = value(i.payments[0])
250250 let secondPayment = value(i.payments[1])
251251 let duckId = toBase58String(value(firstPayment.assetId))
252252 let secondAssetId = toBase58String(value(secondPayment.assetId))
253253 if (if ((firstPayment.amount != 1))
254254 then true
255255 else (secondPayment.amount != 1))
256256 then throw("NFT is not attached")
257257 else {
258258 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [duckId], nil))
259259 if ((children == children))
260260 then {
261261 let artefactName = checkArtefactDetails(value(secondPayment.assetId))
262262 if ((artefactName != "ART-XSCARF"))
263263 then throw("You need to attach a ART-XSCARF artefact")
264264 else {
265265 let artefactId = tryGetString(keyArtefactDuck(artefactName, duckId))
266266 if ((artefactId == ""))
267267 then [StringEntry(keyArtefactDuck(artefactName, duckId), secondAssetId), ScriptTransfer(i.caller, 1, firstPayment.assetId)]
268268 else throw(("Duck is already wearing a " + artefactName))
269269 }
270270 }
271271 else throw("Strict value is not equal to itself.")
272272 }
273273 }
274274
275275
276276
277277 @Callable(i)
278278 func addArteFactToDuck () = {
279279 let firstPayment = value(i.payments[0])
280280 let secondPayment = value(i.payments[1])
281281 let firstAssetId = toBase58String(value(firstPayment.assetId))
282282 if (if ((firstPayment.amount != 1))
283283 then true
284284 else (secondPayment.amount != 1))
285285 then throw("NFT is not attached")
286286 else {
287287 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [firstAssetId], nil))
288288 if ((children == children))
289289 then if ((children == 0))
290290 then throw("You can only pick a sterile NFT-duck")
291291 else {
292292 let artefact = checkArtefactDetails(value(secondPayment.assetId))
293293 if (if ((artefact != "ART-XHAT"))
294294 then (artefact != "ART-POMP")
295295 else false)
296296 then throw("You need to attach a ART-XHAT or ART-POMP artefact")
297297 else {
298298 let nftInfo = value(assetInfo(value(firstPayment.assetId)))
299299 let asset1Gen = split(nftInfo.name, "")
300300 if (if ((asset1Gen[14] == "G"))
301301 then true
302302 else (asset1Gen[14] == "J"))
303303 then throw("You can't mirror this duck")
304304 else if (if ((asset1Gen[5] == "S"))
305305 then true
306306 else (asset1Gen[5] == "T"))
307307 then throw("you already attached a artefact")
308308 else {
309309 let char = if ((artefact == "ART-XHAT"))
310310 then "T"
311311 else if ((artefact == "ART-POMP"))
312312 then "S"
313313 else throw("No char defined")
314314 let oldDuckGen = nftInfo.name
315315 let oldFarmGen = asString(invoke(getBreederAddress(), "getGenFromName", [oldDuckGen], nil))
316316 if ((oldFarmGen == oldFarmGen))
317317 then {
318318 let duckGen = manipulateName(oldDuckGen, 6, char)
319319 let call = invoke(getBreederAddress(), "createDuckSpecialGenes", [i.caller.bytes, duckGen, children], nil)
320320 if ((call == call))
321321 then {
322322 let callReduce = invoke(getBreederAddress(), "reduceRarity", [firstAssetId, oldFarmGen], nil)
323323 if ((callReduce == callReduce))
324324 then [Burn(value(firstPayment.assetId), 1), Burn(value(secondPayment.assetId), 1)]
325325 else throw("Strict value is not equal to itself.")
326326 }
327327 else throw("Strict value is not equal to itself.")
328328 }
329329 else throw("Strict value is not equal to itself.")
330330 }
331331 }
332332 }
333333 else throw("Strict value is not equal to itself.")
334334 }
335335 }
336336
337337
338338
339339 @Callable(i)
340340 func stakeItem () = if (if ((size(i.payments) == 1))
341341 then (i.payments[0].amount == 1)
342342 else false)
343343 then {
344344 let assetId = value(i.payments[0].assetId)
345345 let artefactName = checkArtefactDetails(assetId)
346346 if (containsElement(allStakeable, artefactName))
347347 then if (if (containsElement(stakeableWithLock, artefactName))
348348 then itemIsInCoolDown(artefactName, toBase58String(assetId))
349349 else false)
350350 then throw("Item can't be staked yet, it's in cooldown")
351351 else {
352352 let invoker = toString(i.caller)
353353 let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
354354 if ((artefactId == ""))
355355 then [StringEntry(keyArtefactOwner(artefactName, invoker), toBase58String(assetId))]
356356 else throw(("You are already staking " + artefactName))
357357 }
358358 else throw("You can't stake this artafect")
359359 }
360360 else throw("Invalid payment")
361361
362362
363363
364364 @Callable(i)
365365 func unstakeItem (artefactName) = if (containsElement(allArtefact, artefactName))
366366 then {
367367 let invoker = toString(i.caller)
368368 let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
369369 if ((artefactId == ""))
370370 then throw(("You didnt stake " + artefactName))
371371 else [IntegerEntry(keyUnstakeHeight(artefactName, artefactId), height), ScriptTransfer(i.caller, 1, fromBase58String(artefactId)), DeleteEntry(keyArtefactOwner(artefactName, invoker))]
372372 }
373373 else throw("This artefact doesn't exist")
374374
375375
376376
377377 @Callable(i)
378378 func preInit () = [IntegerEntry("static_ART-LAKE_farmingSlots", 200), IntegerEntry("static_ART-LAKE_farmingBoost", 2), IntegerEntry("static_ART-HOUSE_farmingSlots", 4), IntegerEntry("static_ART-HOUSE_farmingBoost", 30), IntegerEntry("static_ART-BIGHOUSE_farmingSlots", 10), IntegerEntry("static_ART-BIGHOUSE_farmingBoost", 15)]
379379
380380
381381
382382 @Callable(i)
383383 func issueArtefact (type,receiver) = if ((i.caller == this))
384384 then {
385385 let txIdStr = toBase58String(i.transactionId)
386386 let address = Address(fromBase58String(receiver))
387387 let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
388388 let artefactId = calculateAssetId(artefact)
389389 [artefact, StringEntry((("artefact_" + toBase58String(artefactId)) + "_type"), type), ScriptTransfer(address, 1, artefactId)]
390390 }
391391 else throw("admin only")
392392
393393
394394
395395 @Callable(i)
396396 func setLock (n) = if ((i.caller == this))
397397 then [IntegerEntry("global_locked", n)]
398398 else throw("admin only")
399399
400400
401401
402402 @Callable(i)
403403 func buyArtefact () = if ((lastBlock.timestamp > 1639742400000))
404404 then throw("There are no active sales now... ")
405405 else if ((tryGetInteger("global_locked") > 0))
406406 then throw("contract is temporarily locked")
407407 else if ((tryGetInteger("global_artAmount") >= artefactsLimit))
408408 then throw("SOLDOUT!!! Hurray!")
409409 else if (if ((1639605600000 > lastBlock.timestamp))
410410 then (i.caller != Address(devAddress))
411411 else false)
412412 then throw("Too early...")
413413 else {
414414 let firstPayment = value(i.payments[0])
415415 if ((firstPayment.assetId != getEggAssetId()))
416416 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
417417 else if ((eggsNeeded > firstPayment.amount))
418418 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
419419 else [StringEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_status"), "started"), IntegerEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (tryGetInteger("global_artAmount") + 1))]
420420 }
421421
422422
423423
424424 @Callable(i)
425425 func setGlobalArtAmount (newAmount) = if (if ((i.caller == this))
426426 then true
427427 else (i.caller == Address(devAddress)))
428428 then [IntegerEntry("global_artAmount", newAmount)]
429429 else throw("Permission denied")
430430
431431
432432
433433 @Callable(i)
434434 func claimArtefact (boxIdStr) = {
435435 let txId = fromBase58String(boxIdStr)
436436 let statusKey = (((toString(i.caller) + "_") + boxIdStr) + "_status")
437437 let heightKey = (((toString(i.caller) + "_") + boxIdStr) + "_finishHeight")
438438 if ((getStringValue(statusKey) != "started"))
439439 then throw("claimed already")
440440 else if ((getIntegerValue(heightKey) > height))
441441 then throw("you cannot claim yet")
442442 else {
443443 let artType = getRandomArtefact(txId, getIntegerValue(heightKey))
444444 let asset = Issue(artType, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(heightKey))
445445 let assetId = calculateAssetId(asset)
446446 [StringEntry(statusKey, artType), StringEntry((((toString(i.caller) + "_") + boxIdStr) + "_artefactId"), toBase58String(assetId)), StringEntry((toBase58String(assetId) + "_type"), artType), asset, ScriptTransfer(i.caller, 1, assetId)]
447447 }
448448 }
449449
450450
451451 @Verifier(tx)
452452 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
453453

github/deemru/w8io/3ef1775 
63.34 ms