tx · G4khhUoNBXiftAKSdv7gCokLF2zotatEoMPfFX3gKxex

3MutTVXh7Z2m9Cfzx982D4nm7h9Yzr3Ra9a:  -0.01400000 Waves

2021.04.14 12:20 [1481938] smart account 3MutTVXh7Z2m9Cfzx982D4nm7h9Yzr3Ra9a > SELF 0.00000000 Waves

{ "type": 13, "id": "G4khhUoNBXiftAKSdv7gCokLF2zotatEoMPfFX3gKxex", "fee": 1400000, "feeAssetId": null, "timestamp": 1618392003629, "version": 2, "chainId": 84, "sender": "3MutTVXh7Z2m9Cfzx982D4nm7h9Yzr3Ra9a", "senderPublicKey": "98wdUyX2hd6XAj7ggvLJURbxcMbJum5CnatqPwMxv9Pw", "proofs": [ "5u6rf44W38gga5kTJTGWQ3MK7L6Q1wrQabvwMSciQKLiYzQrfXeCA8mjMhkqhfnwHNFpcZs7x3oxjPbKKkuZeU1y" ], "script": "base64:AAIEAAAAAAAAABUIAhIAEgASAwoBCBIDCgEIEgMKAQgAAAARAAAAAAlzZXBhcmF0b3ICAAAAA19fXwAAAAAHd2F2ZXNJZAIAAAAFV0FWRVMAAAAADWdlbmVzaXNIZWlnaHQAAAAAAAAWOGYAAAAADGNvbnRyYWN0TmFtZQIAAAANVmF1bHRDb250cmFjdAAAAAALcmVjZWlwdE5hbWUCAAAADFZhdWx0UmVjZWlwdAAAAAALY29udHJhY3RUYWcCAAAAAUMAAAAACnJlY2VpcHRUYWcCAAAAAVIAAAAADGR1cGxpY2F0ZVRhZwIAAAABRAAAAAANa2V5Tm9uY2VDb3VudAIAAAALTk9OQ0VfQ09VTlQAAAAACWtleUlzRnJlZQIAAAAHSVNfRlJFRQAAAAANa2V5UHJpdmF0ZUtleQIAAAALUFJJVkFURV9LRVkAAAAABm1heEludAB//////////wAAAAAObWF4RGF0YUtleVNpemUAAAAAAAAAAZAAAAAAE21heERlc2NyaXB0aW9uQnl0ZXMAAAAAAAAAA+gAAAAADG1heE5hbWVCeXRlcwAAAAAAAAAAEAEAAAANZ2VuZXJhdGVOb25jZQAAAAAEAAAACm5vbmNlVmFsdWUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAANa2V5Tm9uY2VDb3VudAAAAAAAAAAAAQMJAABnAAAAAgUAAAAKbm9uY2VWYWx1ZQUAAAAGbWF4SW50AAAAAAAAAAABCQAAZAAAAAIFAAAACm5vbmNlVmFsdWUAAAAAAAAAAAEBAAAAFGhhc1NlcGFyYXRvckluU3RyaW5nAAAAAgAAAA5mb3VuZFNlcGFyYXRvcgAAAA1zdHJpbmdUb0NoZWNrAwkAAAAAAAACBQAAAA5mb3VuZFNlcGFyYXRvcgYGCQEAAAAIY29udGFpbnMAAAACBQAAAA1zdHJpbmdUb0NoZWNrBQAAAAlzZXBhcmF0b3IAAAAFAAAAAWkBAAAAB2RlcG9zaXQAAAAAAwkAAGYAAAACBQAAAA1nZW5lc2lzSGVpZ2h0BQAAAAZoZWlnaHQJAAACAAAAAQIAAAAaV2FpdGluZyBmb3IgZ2VuZXNpcyBoZWlnaHQDCQAAAAAAAAIFAAAABHRoaXMIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAABZTZWxmIGNhbGwgaXMgZm9yYmlkZGVuAwMDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBgkAAGYAAAACAAAAAAAAAAABCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQGCQAAZgAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAUAAAAGbWF4SW50CQAAAgAAAAECAAAAFkF0dGFjaGVkIHBheW1lbnQgaXNzdWUEAAAAD2NvbnRyYWN0QXNzZXRJZAQAAAAHJG1hdGNoMAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAAMaXNCeXRlVmVjdG9yBQAAAAckbWF0Y2gwCQACWAAAAAEICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAAMaXNCeXRlVmVjdG9yAgAAAA1Vbmtub3duIGFzc2V0AAAAAmlkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAdpc1dhdmVzBQAAAAckbWF0Y2gwBQAAAAd3YXZlc0lkCQAAAgAAAAECAAAAEFdyb25nIGFzc2V0IHR5cGUEAAAADmNvbnRyYWN0RmllbGRzCQAETAAAAAIFAAAAC2NvbnRyYWN0VGFnCQAETAAAAAIJAAGkAAAAAQUAAAAGaGVpZ2h0CQAETAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAETAAAAAIFAAAAD2NvbnRyYWN0QXNzZXRJZAkABEwAAAACCQABpAAAAAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAUAAAADbmlsAwkAAAAAAAACBAAAAA0kbGlzdDMzNTMzNDA1BQAAAA5jb250cmFjdEZpZWxkcwQAAAANJHNpemUzMzUzMzQwNQkAAZAAAAABBQAAAA0kbGlzdDMzNTMzNDA1BAAAAA0kYWNjMDMzNTMzNDA1BwMJAAAAAAAAAgUAAAANJHNpemUzMzUzMzQwNQAAAAAAAAAAAAUAAAANJGFjYzAzMzUzMzQwNQQAAAANJGFjYzEzMzUzMzQwNQkBAAAAFGhhc1NlcGFyYXRvckluU3RyaW5nAAAAAgUAAAANJGFjYzAzMzUzMzQwNQkAAZEAAAACBQAAAA0kbGlzdDMzNTMzNDA1AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTMzNTMzNDA1AAAAAAAAAAABBQAAAA0kYWNjMTMzNTMzNDA1BAAAAA0kYWNjMjMzNTMzNDA1CQEAAAAUaGFzU2VwYXJhdG9ySW5TdHJpbmcAAAACBQAAAA0kYWNjMTMzNTMzNDA1CQABkQAAAAIFAAAADSRsaXN0MzM1MzM0MDUAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplMzM1MzM0MDUAAAAAAAAAAAIFAAAADSRhY2MyMzM1MzM0MDUEAAAADSRhY2MzMzM1MzM0MDUJAQAAABRoYXNTZXBhcmF0b3JJblN0cmluZwAAAAIFAAAADSRhY2MyMzM1MzM0MDUJAAGRAAAAAgUAAAANJGxpc3QzMzUzMzQwNQAAAAAAAAAAAgMJAAAAAAAAAgUAAAANJHNpemUzMzUzMzQwNQAAAAAAAAAAAwUAAAANJGFjYzMzMzUzMzQwNQQAAAANJGFjYzQzMzUzMzQwNQkBAAAAFGhhc1NlcGFyYXRvckluU3RyaW5nAAAAAgUAAAANJGFjYzMzMzUzMzQwNQkAAZEAAAACBQAAAA0kbGlzdDMzNTMzNDA1AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTMzNTMzNDA1AAAAAAAAAAAEBQAAAA0kYWNjNDMzNTMzNDA1BAAAAA0kYWNjNTMzNTMzNDA1CQEAAAAUaGFzU2VwYXJhdG9ySW5TdHJpbmcAAAACBQAAAA0kYWNjNDMzNTMzNDA1CQABkQAAAAIFAAAADSRsaXN0MzM1MzM0MDUAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplMzM1MzM0MDUAAAAAAAAAAAUFAAAADSRhY2M1MzM1MzM0MDUEAAAADSRhY2M2MzM1MzM0MDUJAQAAABRoYXNTZXBhcmF0b3JJblN0cmluZwAAAAIFAAAADSRhY2M1MzM1MzM0MDUJAAGRAAAAAgUAAAAN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DGNvbnRyYWN0SW5mbwAAAAJpZAkABEwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAADbmlsAwkAAAAAAAACBAAAAA0kbGlzdDYzNDE2MzkyBQAAAA1yZWNlaXB0RmllbGRzBAAAAA0kc2l6ZTYzNDE2MzkyCQABkAAAAAEFAAAADSRsaXN0NjM0MTYzOTIEAAAADSRhY2MwNjM0MTYzOTIHAwkAAAAAAAACBQAAAA0kc2l6ZTYzNDE2MzkyAAAAAAAAAAAABQAAAA0kYWNjMDYzNDE2MzkyBAAAAA0kYWNjMTYzNDE2MzkyCQEAAAAUaGFzU2VwYXJhdG9ySW5TdHJpbmcAAAACBQAAAA0kYWNjMDYzNDE2MzkyCQABkQAAAAIFAAAADSRsaXN0NjM0MTYzOTIAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplNjM0MTYzOTIAAAAAAAAAAAEFAAAADSRhY2MxNjM0MTYzOTIEAAAADSRhY2MyNjM0MTYzOTIJAQAAABRoYXNTZXBhcmF0b3JJblN0cmluZwAAAAIFAAAADSRhY2MxNjM0MTYzOTIJAAGRAAAAAgUAAAANJGxpc3Q2MzQxNjM5MgAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU2MzQxNjM5MgAAAAAAAAAAAgUAAAANJGFjYzI2MzQxNjM5MgQAAAANJGFjYzM2MzQxNjM5MgkBAAAAFGhhc1NlcGFyYXRvckluU3RyaW5nAAAAAgUAAAANJGFjYzI2MzQxNjM5MgkAAZEAAAACBQAAAA0kbGlzdDYzNDE2MzkyAAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTYzNDE2MzkyAAAAAAAAAAADBQAAAA0kYWNjMzYzNDE2MzkyBAAAAA0kYWNjNDYzNDE2MzkyCQEAAAAUaGFzU2VwYXJhdG9ySW5TdHJpbmcAAAACBQAAAA0kYWNjMzYzNDE2MzkyCQABkQAAAAIFAAAADSRsaXN0NjM0MTYzOTIAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplNjM0MTYzOTIAAAAAAAAAAAQFAAAADSRhY2M0NjM0MTYzOTIEAAAADSRhY2M1NjM0MTYzOTIJAQAAABRoYXNTZXBhcmF0b3JJblN0cmluZwAAAAIFAAAADSRhY2M0NjM0MTYzOTIJAAGRAAAAAgUAAAANJGxpc3Q2MzQxNjM5MgAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU2MzQxNjM5MgAAAAAAAAAABQUAAAANJGFjYzU2MzQxNjM5MgQAAAANJGFjYzY2MzQxNjM5MgkBAAAAFGhhc1NlcGFyYXRvckluU3RyaW5nAAAAAgUAAAANJGFjYzU2MzQxNjM5MgkAAZEAAAACBQAAAA0kbGlzdDYzNDE2MzkyAAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTYzNDE2MzkyAAAAAAAAAAAGBQAAAA0kYWNjNjYzNDE2MzkyBAAAAA0kYWNjNzYzNDE2MzkyCQEAAAAUaGFzU2VwYXJhdG9ySW5TdHJpbmcAAAACBQAAAA0kYWNjNjYzNDE2MzkyCQABkQAAAAIFAAAADSRsaXN0NjM0MTYzOTIAAAAAAAAAAAYDCQAAAAAAAAIFAAAADSRzaXplNjM0MTYzOTIAAAAAAAAAAAcFAAAADSRhY2M3NjM0MTYzOTIEAAAADSRhY2M4NjM0MTYzOTIJAQAAABRoYXNTZXBhcmF0b3JJblN0cmluZwAAAAIFAAAADSRhY2M3NjM0MTYzOTIJAAGRAAAAAgUAAAANJGxpc3Q2MzQxNjM5MgAAAAAAAAAABwMJAAAAAAAAAgUAAAANJHNpemU2MzQxNjM5MgAAAAAAAAAACAUAAAANJGFjYzg2MzQxNjM5MgQAAAANJGFjYzk2MzQxNjM5MgkBAAAAFGhhc1NlcGFyYXRvckluU3RyaW5nAAAAAgUAAAANJGFjYzg2MzQxNjM5MgkAAZEAAAACBQAAAA0kbGlzdDYzNDE2MzkyAAAAAAAAAAAICQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgOAYJAAACAAAAAQIAAAAZU2VwYXJhdG9yIGZvdW5kIGluIGZpZWxkcwQAAAAScmVjZWlwdERlc2NyaXB0aW9uCQAEuQAAAAIFAAAADXJlY2VpcHRGaWVsZHMFAAAACXNlcGFyYXRvcgMJAABmAAAAAgkAAMgAAAABCQABmwAAAAEFAAAAEnJlY2VpcHREZXNjcmlwdGlvbgUAAAATbWF4RGVzY3JpcHRpb25CeXRlcwkAAAIAAAABAgAAABFUb28gbG9uZyBjb250cmFjdAQAAAAFbm9uY2UJAQAAAA1nZW5lcmF0ZU5vbmNlAAAAAAQAAAAMcmVjZWlwdElzc3VlCQAEQwAAAAcFAAAAC3JlY2VpcHROYW1lBQAAABJyZWNlaXB0RGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAAAVub25jZQQAAAAJcmVjZWlwdElkCQAEOAAAAAEFAAAADHJlY2VpcHRJc3N1ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5Tm9uY2VDb3VudAUAAAAFbm9uY2UJAARMAAAAAgkBAAAABEJ1cm4AAAACCAUAAAAMY29udHJhY3RJbmZvAAAAAmlkAAAAAAAAAAABCQAETAAAAAIFAAAADHJlY2VpcHRJc3N1ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIIBQAAAAxyZWNlaXB0SXNzdWUAAAAIcXVhbnRpdHkFAAAACXJlY2VpcHRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQgFAAAADWNvbnRyYWN0QXNzZXQAAAACXzEFAAAAA25pbAAAAAFpAQAAAAVjbGFpbQAAAAEAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAEdGhpcwgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAAFlNlbGYgY2FsbCBpcyBmb3JiaWRkZW4DCQAAZgAAAAIAAAAAAAAAAAEJAAExAAAAAQUAAAAHYXNzZXRJZAkAAAIAAAABAgAAAA5FbXB0eSBhc3NldCBpZAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAAPTm8gbmVlZCBwYXltZW50BAAAAAlhc3NldERhdGEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQCAAAADVVua25vd24gYXNzZXQDCQEAAAACIT0AAAACCAUAAAAJYXNzZXREYXRhAAAABmlzc3VlcgUAAAAEdGhpcwkAAAIAAAABAgAAAA5Vbmtub3duIGlzc3VlcgMJAQAAAAIhPQAAAAIJAAPwAAAAAgUAAAAEdGhpcwgFAAAACWFzc2V0RGF0YQAAAAJpZAAAAAAAAAAAAQkAAAIAAAABAgAAAAtVbmF2YWlsYWJsZQQAAAANY2FsbGVyQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAAZEAAAACCQAEtQAAAAIIBQAAAAlhc3NldERhdGEAAAALZGVzY3JpcHRpb24FAAAACXNlcGFyYXRvcgAAAAAAAAAAAgIAAAAVQWRkcmVzcyBmaWVsZCBtaXNzaW5nAgAAAA5Ob3QgYW4gYWRkcmVzcwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAANY2FsbGVyQWRkcmVzcwkAAAIAAAABAgAAAAlOb3Qgb3duZXIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABCAUAAAAJYXNzZXREYXRhAAAAAmlkBQAAAANuaWwAAAABaQEAAAAJZHVwbGljYXRlAAAAAQAAAAdhc3NldElkAwkAAAAAAAACBQAAAAR0aGlzCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAAWU2VsZiBjYWxsIGlzIGZvcmJpZGRlbgMJAABmAAAAAgAAAAAAAAAAAQkAATEAAAABBQAAAAdhc3NldElkCQAAAgAAAAECAAAADkVtcHR5IGFzc2V0IGlkAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAAA9ObyBuZWVkIHBheW1lbnQEAAAACWFzc2V0RGF0YQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAHYXNzZXRJZAIAAAANVW5rbm93biBhc3NldAMJAQAAAAIhPQAAAAIIBQAAAAlhc3NldERhdGEAAAAGaXNzdWVyBQAAAAR0aGlzCQAAAgAAAAECAAAADlVua25vd24gaXNzdWVyAwkBAAAAAiE9AAAAAgkAA/AAAAACCAUAAAABaQAAAAZjYWxsZXIIBQAAAAlhc3NldERhdGEAAAACaWQAAAAAAAAAAAEJAAACAAAAAQIAAAAJTm90IG93bmVyBAAAAAthc3NldEZpZWxkcwkABLUAAAACCAUAAAAJYXNzZXREYXRhAAAAC2Rlc2NyaXB0aW9uBQAAAAlzZXBhcmF0b3IDCQAAZgAAAAIAAAAAAAAAAAEJAAGQAAAAAQUAAAALYXNzZXRGaWVsZHMJAAACAAAAAQIAAAAMTm8gdGFnIGZvdW5kAwMJAQAAAAIhPQAAAAIJAAGRAAAAAgUAAAALYXNzZXRGaWVsZHMAAAAAAAAAAAAFAAAAC2NvbnRyYWN0VGFnCQEAAAACIT0AAAACCQABkQAAAAIFAAAAC2Fzc2V0RmllbGRzAAAAAAAAAAAABQAAAApyZWNlaXB0VGFnBwkAAAIAAAABAgAAABlOb3QgYSBjb250cmFjdCBvciByZWNlaXB0BAAAAA1kdXBsaWNhdGVOYW1lCQABLAAAAAIFAAAADGR1cGxpY2F0ZVRhZwgFAAAACWFzc2V0RGF0YQAAAARuYW1lBAAAABRkdXBsaWNhdGVEZXNjcmlwdGlvbgkAASwAAAACBQAAAAxkdXBsaWNhdGVUYWcIBQAAAAlhc3NldERhdGEAAAALZGVzY3JpcHRpb24DAwkAAGYAAAACCQAAyAAAAAEJAAGbAAAAAQUAAAAUZHVwbGljYXRlRGVzY3JpcHRpb24FAAAAE21heERlc2NyaXB0aW9uQnl0ZXMGCQAAZgAAAAIJAADIAAAAAQkAAZsAAAABBQAAAA1kdXBsaWNhdGVOYW1lBQAAAAxtYXhOYW1lQnl0ZXMJAAACAAAAAQIAAAAZVG9vIGxvbmcsIGNhbid0IGR1cGxpY2F0ZQQAAAAFbm9uY2UJAQAAAA1nZW5lcmF0ZU5vbmNlAAAAAAQAAAAOZHVwbGljYXRlSXNzdWUJAARDAAAABwUAAAANZHVwbGljYXRlTmFtZQUAAAAUZHVwbGljYXRlRGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAAAVub25jZQQAAAALZHVwbGljYXRlSWQJAAQ4AAAAAQUAAAAOZHVwbGljYXRlSXNzdWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleU5vbmNlQ291bnQFAAAABW5vbmNlCQAETAAAAAIFAAAADmR1cGxpY2F0ZUlzc3VlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQgFAAAACWFzc2V0RGF0YQAAAAJpZAUAAAADbmlsAAAAAWkBAAAACG1ha2VGcmVlAAAAAQAAAAdwcml2S2V5AwMJAQAAAAIhPQAAAAIFAAAABHRoaXMIBQAAAAFpAAAABmNhbGxlcgYJAAAAAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAR0aGlzBQAAAAlrZXlJc0ZyZWUHBgkAAAIAAAABAgAAAA1BY2Nlc3MgZGVuaWVkCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlJc0ZyZWUGCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADWtleVByaXZhdGVLZXkFAAAAB3ByaXZLZXkFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADCQEAAAACIT0AAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAACWtleUlzRnJlZQcHBwQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAAhpc1VwZGF0ZQUAAAAHJG1hdGNoMAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkHzYI7Qg==", "height": 1481938, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 8nKLKSkTgWC3DpFu4carWYj7H8nbwg5kVwSHATW3wMk3 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let separator = "___"
5+
6+let wavesId = "WAVES"
7+
8+let genesisHeight = 1456230
9+
10+let contractName = "VaultContract"
11+
12+let receiptName = "VaultReceipt"
13+
14+let contractTag = "C"
15+
16+let receiptTag = "R"
17+
18+let duplicateTag = "D"
19+
20+let keyNonceCount = "NONCE_COUNT"
21+
22+let keyIsFree = "IS_FREE"
23+
24+let keyPrivateKey = "PRIVATE_KEY"
25+
26+let maxInt = 9223372036854775807
27+
28+let maxDataKeySize = 400
29+
30+let maxDescriptionBytes = 1000
31+
32+let maxNameBytes = 16
33+
34+func generateNonce () = {
35+ let nonceValue = valueOrElse(getInteger(this, keyNonceCount), 1)
36+ if ((nonceValue >= maxInt))
37+ then 1
38+ else (nonceValue + 1)
39+ }
40+
41+
42+func hasSeparatorInString (foundSeparator,stringToCheck) = if ((foundSeparator == true))
43+ then true
44+ else contains(stringToCheck, separator)
45+
46+
47+@Callable(i)
48+func deposit () = if ((genesisHeight > height))
49+ then throw("Waiting for genesis height")
50+ else if ((this == i.caller))
51+ then throw("Self call is forbidden")
52+ else if (if (if ((size(i.payments) != 1))
53+ then true
54+ else (1 > i.payments[0].amount))
55+ then true
56+ else (i.payments[0].amount > maxInt))
57+ then throw("Attached payment issue")
58+ else {
59+ let contractAssetId = match i.payments[0].assetId {
60+ case isByteVector: ByteVector =>
61+ toBase58String(valueOrErrorMessage(assetInfo(isByteVector), "Unknown asset").id)
62+ case isWaves: Unit =>
63+ wavesId
64+ case _ =>
65+ throw("Wrong asset type")
66+ }
67+ let contractFields = [contractTag, toString(height), toString(i.caller), contractAssetId, toString(i.payments[0].amount)]
68+ if (({
69+ let $list33533405 = contractFields
70+ let $size33533405 = size($list33533405)
71+ let $acc033533405 = false
72+ if (($size33533405 == 0))
73+ then $acc033533405
74+ else {
75+ let $acc133533405 = hasSeparatorInString($acc033533405, $list33533405[0])
76+ if (($size33533405 == 1))
77+ then $acc133533405
78+ else {
79+ let $acc233533405 = hasSeparatorInString($acc133533405, $list33533405[1])
80+ if (($size33533405 == 2))
81+ then $acc233533405
82+ else {
83+ let $acc333533405 = hasSeparatorInString($acc233533405, $list33533405[2])
84+ if (($size33533405 == 3))
85+ then $acc333533405
86+ else {
87+ let $acc433533405 = hasSeparatorInString($acc333533405, $list33533405[3])
88+ if (($size33533405 == 4))
89+ then $acc433533405
90+ else {
91+ let $acc533533405 = hasSeparatorInString($acc433533405, $list33533405[4])
92+ if (($size33533405 == 5))
93+ then $acc533533405
94+ else {
95+ let $acc633533405 = hasSeparatorInString($acc533533405, $list33533405[5])
96+ throw("List size exceed 5")
97+ }
98+ }
99+ }
100+ }
101+ }
102+ }
103+ } == true))
104+ then throw("Separator found in fields")
105+ else {
106+ let contractDescription = makeString(contractFields, separator)
107+ if ((size(toBytes(contractDescription)) > maxDescriptionBytes))
108+ then throw("Too long contract")
109+ else {
110+ let nonce = generateNonce()
111+ let actionIssue = Issue(contractName, contractDescription, 1, 0, false, unit, nonce)
112+ let actionTransfer = ScriptTransfer(i.caller, actionIssue.quantity, calculateAssetId(actionIssue))
113+[IntegerEntry(keyNonceCount, nonce), actionIssue, actionTransfer]
114+ }
115+ }
116+ }
117+
118+
119+
120+@Callable(i)
121+func withdraw () = if ((this == i.caller))
122+ then throw("Self call is forbidden")
123+ else if (if ((size(i.payments) != 1))
124+ then true
125+ else (i.payments[0].amount != 1))
126+ then throw("Attached payment issue")
127+ else {
128+ let contractInfo = valueOrErrorMessage(assetInfo(valueOrErrorMessage(i.payments[0].assetId, "Wrong asset type")), "Unknown asset")
129+ if ((contractInfo.issuer != this))
130+ then throw("Unknown issuer")
131+ else {
132+ let contractFields = split(contractInfo.description, separator)
133+ if ((size(contractFields) != 5))
134+ then throw("Wrong fields amount")
135+ else if ((contractFields[0] != contractTag))
136+ then throw("Not a contract")
137+ else {
138+ let contractHeight = valueOrErrorMessage(parseInt(contractFields[1]), "Not a height")
139+ if ((isDefined(addressFromString(contractFields[2])) != true))
140+ then throw("Not an address")
141+ else {
142+ let contractAssetQuantity = valueOrErrorMessage(parseInt(contractFields[4]), "Not a quantity")
143+ let contractAsset = match assetInfo(fromBase58String(contractFields[3])) {
144+ case isAsset: Asset =>
145+ $Tuple2(isAsset.id, assetBalance(this, isAsset.id))
146+ case maybeWaves: Unit =>
147+ if ((contractFields[3] == wavesId))
148+ then $Tuple2(unit, wavesBalance(this).available)
149+ else throw("Unknown asset")
150+ case _ =>
151+ throw("Unknown asset")
152+ }
153+ if (if ((genesisHeight > contractHeight))
154+ then true
155+ else (contractHeight >= height))
156+ then throw("Not in height scope")
157+ else if (if ((1 > contractAssetQuantity))
158+ then true
159+ else (contractAssetQuantity > maxInt))
160+ then throw("Quantity out-of-range")
161+ else if ((contractAssetQuantity > contractAsset._2))
162+ then throw("Insuffisant balance")
163+ else {
164+ let receiptFields = [receiptTag, toString(contractHeight), contractFields[2], contractFields[3], toString(contractAssetQuantity), toString(height), toBase58String(contractInfo.id), toString(i.caller)]
165+ if (({
166+ let $list63416392 = receiptFields
167+ let $size63416392 = size($list63416392)
168+ let $acc063416392 = false
169+ if (($size63416392 == 0))
170+ then $acc063416392
171+ else {
172+ let $acc163416392 = hasSeparatorInString($acc063416392, $list63416392[0])
173+ if (($size63416392 == 1))
174+ then $acc163416392
175+ else {
176+ let $acc263416392 = hasSeparatorInString($acc163416392, $list63416392[1])
177+ if (($size63416392 == 2))
178+ then $acc263416392
179+ else {
180+ let $acc363416392 = hasSeparatorInString($acc263416392, $list63416392[2])
181+ if (($size63416392 == 3))
182+ then $acc363416392
183+ else {
184+ let $acc463416392 = hasSeparatorInString($acc363416392, $list63416392[3])
185+ if (($size63416392 == 4))
186+ then $acc463416392
187+ else {
188+ let $acc563416392 = hasSeparatorInString($acc463416392, $list63416392[4])
189+ if (($size63416392 == 5))
190+ then $acc563416392
191+ else {
192+ let $acc663416392 = hasSeparatorInString($acc563416392, $list63416392[5])
193+ if (($size63416392 == 6))
194+ then $acc663416392
195+ else {
196+ let $acc763416392 = hasSeparatorInString($acc663416392, $list63416392[6])
197+ if (($size63416392 == 7))
198+ then $acc763416392
199+ else {
200+ let $acc863416392 = hasSeparatorInString($acc763416392, $list63416392[7])
201+ if (($size63416392 == 8))
202+ then $acc863416392
203+ else {
204+ let $acc963416392 = hasSeparatorInString($acc863416392, $list63416392[8])
205+ throw("List size exceed 8")
206+ }
207+ }
208+ }
209+ }
210+ }
211+ }
212+ }
213+ }
214+ }
215+ } == true))
216+ then throw("Separator found in fields")
217+ else {
218+ let receiptDescription = makeString(receiptFields, separator)
219+ if ((size(toBytes(receiptDescription)) > maxDescriptionBytes))
220+ then throw("Too long contract")
221+ else {
222+ let nonce = generateNonce()
223+ let receiptIssue = Issue(receiptName, receiptDescription, 1, 0, false, unit, nonce)
224+ let receiptId = calculateAssetId(receiptIssue)
225+[IntegerEntry(keyNonceCount, nonce), Burn(contractInfo.id, 1), receiptIssue, ScriptTransfer(i.caller, receiptIssue.quantity, receiptId), ScriptTransfer(i.caller, contractAssetQuantity, contractAsset._1)]
226+ }
227+ }
228+ }
229+ }
230+ }
231+ }
232+ }
233+
234+
235+
236+@Callable(i)
237+func claim (assetId) = if ((this == i.caller))
238+ then throw("Self call is forbidden")
239+ else if ((1 > size(assetId)))
240+ then throw("Empty asset id")
241+ else if ((size(i.payments) != 0))
242+ then throw("No need payment")
243+ else {
244+ let assetData = valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "Unknown asset")
245+ if ((assetData.issuer != this))
246+ then throw("Unknown issuer")
247+ else if ((assetBalance(this, assetData.id) != 1))
248+ then throw("Unavailable")
249+ else {
250+ let callerAddress = valueOrErrorMessage(addressFromString(valueOrErrorMessage(split(assetData.description, separator)[2], "Address field missing")), "Not an address")
251+ if ((i.caller != callerAddress))
252+ then throw("Not owner")
253+ else [ScriptTransfer(i.caller, 1, assetData.id)]
254+ }
255+ }
256+
257+
258+
259+@Callable(i)
260+func duplicate (assetId) = if ((this == i.caller))
261+ then throw("Self call is forbidden")
262+ else if ((1 > size(assetId)))
263+ then throw("Empty asset id")
264+ else if ((size(i.payments) != 0))
265+ then throw("No need payment")
266+ else {
267+ let assetData = valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "Unknown asset")
268+ if ((assetData.issuer != this))
269+ then throw("Unknown issuer")
270+ else if ((assetBalance(i.caller, assetData.id) != 1))
271+ then throw("Not owner")
272+ else {
273+ let assetFields = split(assetData.description, separator)
274+ if ((1 > size(assetFields)))
275+ then throw("No tag found")
276+ else if (if ((assetFields[0] != contractTag))
277+ then (assetFields[0] != receiptTag)
278+ else false)
279+ then throw("Not a contract or receipt")
280+ else {
281+ let duplicateName = (duplicateTag + assetData.name)
282+ let duplicateDescription = (duplicateTag + assetData.description)
283+ if (if ((size(toBytes(duplicateDescription)) > maxDescriptionBytes))
284+ then true
285+ else (size(toBytes(duplicateName)) > maxNameBytes))
286+ then throw("Too long, can't duplicate")
287+ else {
288+ let nonce = generateNonce()
289+ let duplicateIssue = Issue(duplicateName, duplicateDescription, 1, 0, false, unit, nonce)
290+ let duplicateId = calculateAssetId(duplicateIssue)
291+[IntegerEntry(keyNonceCount, nonce), duplicateIssue, ScriptTransfer(i.caller, 1, assetData.id)]
292+ }
293+ }
294+ }
295+ }
296+
297+
298+
299+@Callable(i)
300+func makeFree (privKey) = if (if ((this != i.caller))
301+ then true
302+ else (valueOrElse(getBoolean(this, keyIsFree), false) == true))
303+ then throw("Access denied")
304+ else [BooleanEntry(keyIsFree, true), StringEntry(keyPrivateKey, privKey)]
305+
306+
307+@Verifier(tx)
308+func verify () = if ((valueOrElse(getBoolean(this, keyIsFree), false) != false))
309+ then false
310+ else match tx {
311+ case isUpdate: SetScriptTransaction =>
312+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
313+ case _ =>
314+ false
315+ }
316+

github/deemru/w8io/169f3d6 
41.07 ms