tx · 6U3sR1H1EKBorGnsBCEp9vLN4zEWnV7rU7RTXDDon5hs

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.01100000 Waves

2022.12.08 23:20 [2351821] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "6U3sR1H1EKBorGnsBCEp9vLN4zEWnV7rU7RTXDDon5hs", "fee": 1100000, "feeAssetId": null, "timestamp": 1670530819053, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "5yoMn711HWMhNVMmdqKLH4qL26y11g1UgmWSK6EXNrMmFnbNEdAwnfbGU9kh4w9vG89mYQteHii1yW4L5fmWXAUd" ], "script": "base64:BgIoCAISABIDCgEIEgASAwoBCBIECgIBCBIECgICAhIECgIBCBIECgIICCkAC3VzZG5Bc3NldElkASD3dur394PKZdtuE+4CO89YKZWpwdGN8kvabNgdYoDI3gANaW5jdWJhdG9yQWRkcgUEdGhpcwALYnJlZWRlckFkZHIFBHRoaXMAC2JhY2tFbmRBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzTjVTcFgyMVIzUjc1UW80ZWIzTXdGRnZXN1RVenlodmF2dgALZWNvbm9teUFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNOOHk0d3hYM0pDNFRkckNKQlhYMTZTaldmNlgyNTZocmVwAANwdWIBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAApMQU5EUFJFRklYAgRMQU5EAApEVUNLUFJFRklYAgREVUNLAA9ERUZBVUxUTE9DQVRJT04CD0FmcmljYV9GX0FmcmljYQAPREFJTFlSRVNCWVBJRUNFAID40gEACURBWU1JTExJUwCAuJkpABFGSVZFTUlOVVRFU01JTExJUwDgpxIBEWtleUFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIgc3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcl8FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgEOa2V5TGFuZFRvT3duZXIBB2xhbmROdW0JAKwCAgIKbGFuZE93bmVyXwUHbGFuZE51bQERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAAKcmVjTGFuZE51bQAAAAtyZWNMYW5kU2l6ZQABAAtyZWNUZXJyYWlucwACAAxyZWNDb250aW5lbnQAAwAPbG9jSWR4Q29udGluZW50AAAACmxvY0lkeFR5cGUAAQAIbG9jSWR4SWQAAgAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwAEaWR4QQAAAARpZHhCAAEABGlkeEMAAgAEaWR4RAADAARpZHhFAAQABGlkeEYABQENY291bnRUZXJyYWlucwEIdGVycmFpbnMJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUIAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFDAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRAABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUUAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFGAAEFA25pbAEPbnVtUGllY2VzQnlTaXplAQhsYW5kU2l6ZQQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAAZAwkAAAICAU0FByRtYXRjaDAAZAMJAAACAgFMBQckbWF0Y2gwAOEBAwkAAAICAlhMBQckbWF0Y2gwAJADAwkAAAICA1hYTAUHJG1hdGNoMADxBAkAAgECEVVua25vd24gbGFuZCBzaXplAQZhZGRSZXMDCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUKAQVhZGRlcgIDYWNjAWkECXJlc09mVHlwZQkAaAIJAGsDBQlkZWx0YVRpbWUFD0RBSUxZUkVTQllQSUVDRQUJREFZTUlMTElTCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycmVudFJlcwUBaQUJcmVzT2ZUeXBlBAFyCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJALkJAgUBcgIBXwgBaQEJc3Rha2VMYW5kAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQkA2AQBBQdhc3NldElkAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlBc3NldElkVG9Pd25lcgEJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGFuZFRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzBQNuaWwBaQELdW5zdGFrZUxhbmQBC2xhbmRBc3NldElkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIkdW5zdGFrZSBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnRzBAdhc3NldElkCQDZBAEFC2xhbmRBc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhcgdG9rZW5zIGNhbiBiZSB1bnN0YWtlZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARFrZXlBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHdGltZUtleQkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQdhZGRyZXNzBQNuaWwBaQEJc3Rha2VEdWNrAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAZoZWFsdGgJAJ8IAQUJa2V5SGVhbHRoBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFBmhlYWx0aAUDbmlsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aABkBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQIPMDowXzBfMF8wXzBfMDo6BQNuaWwBaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAiR1bnN0YWtlIGRvZXNuJ3QgcmVxdWlyZSBhbnkgcGF5bWVudHMEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQACAQkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIGIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKRFVDS1BSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkRVQ0tQUkVGSVgCFyB0b2tlbnMgY2FuIGJlIHVuc3Rha2VkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEJANgEAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkAwkBASEBCQEJaXNEZWZpbmVkAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEJANgEAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEFB3RpbWVLZXkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAFpAQhjbGFpbVJlcwIGYW1vdW50C2xhbmRBc3NldElkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIlY2xhaW1SZXMgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50cwQEYWRkcgkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQDCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpMQU5EUFJFRklYCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCICB0b2tlbiBzaG91bGQgYmUgcGFzc2VkIGFzIHBhcmFtBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAJ8IAQUHdGltZUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFCXNhdmVkVGltZQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQERa2V5QXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQEZHVjawkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAwkBASEBCQEJaXNEZWZpbmVkAQUEZHVjawkAAgECHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEDmR1Y2tBc3NldElkU3RyCQEFdmFsdWUBBQRkdWNrBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQUOZHVja0Fzc2V0SWRTdHIFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgkArAICCQCsAgICFER1Y2sgbG9jYXRpb24gaWQgaXMgCQCRAwIFA2xvYwUIbG9jSWR4SWQCECwgYnV0IHNob3VsZCBiZSAFC2xhbmRBc3NldElkBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkBBXZhbHVlAQUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQkBBXZhbHVlAQUJc2F2ZWRUaW1lAgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBAhhdmFpbFJlcwkAaAIJAGsDBQlkZWx0YVRpbWUFD0RBSUxZUkVTQllQSUVDRQUJREFZTUlMTElTBQZwaWVjZXMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFBnBpZWNlcwUPREFJTFlSRVNCWVBJRUNFBAxuZXdUaW1lc3RhbXAJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUMbmV3RGVsdGFUaW1lBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUOZHVja0Fzc2V0SWRTdHIEC2N1cnJlbnRQYWNrCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFYnBLZXkCDzA6MF8wXzBfMF8wXzA6OgIBOgQKY3VycmVudFJlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQFYnBSZXMJAQZhZGRSZXMDBQpjdXJyZW50UmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIFBWJwUmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkFB25ld1BhY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUFb3duZXIFDG5ld1RpbWVzdGFtcAUDbmlsBQR1bml0AWkBBmZsaWdodAIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAiNmbGlnaHQgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50cwQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgE7BAJocAkAtQkCCQCRAwIJALUJAgkAkQMCBQVwYXJ0cwAAAgF8AAACAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBA1uZXdMb2NBbmRUaW1lCQC1CQIJAJEDAgUFcGFydHMAAQIBOgQLbmV3TG9jYXRpb24JAJEDAgUNbmV3TG9jQW5kVGltZQAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUNbmV3TG9jQW5kVGltZQABAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBAhJzaWduYXR1cmUgb3V0ZGF0ZWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aABkAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgAZAIvIGZyb20gc3RhdGUgZG9lcyBub3QgbWF0Y2ggb25lIGZyb20gZmxpZ2h0IGxvZz0JAKQDAQUFY3VySFAEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5AwkAZgIFBW5ld0hQAAAFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVuZXdIUAUDbmlsBQR1bml0AWkBCXNldEhlYWx0aAIGaGVhbHRoC2R1Y2tBc3NldElkBA5kdWNrQXNzZXRJZFN0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwMJAGYCAAAFBmhlYWx0aAYJAGYCBQZoZWFsdGgAZAkAAgECGkhQIHNob3VsZCBiZSB3aXRoaW4gMC4uMTAwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQZoZWFsdGgFA25pbAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgULZWNvbm9teUFkZHIJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBQduZXdQYWNrBQNuaWwFB25ld1BhY2sAtkyx3Q==", "height": 2351821, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4JnworN4PmXuiwCviRg9hdgBSX6uJS82yw2c8cYVhpKv Next: DQ9ByJxk7nao3tceAMGQAbW7ZD9B5eTTEBempsLqTL4w Diff:
OldNewDifferences
331331 else {
332332 let aR = split(toUtf8String(aP), ";")
333333 let aS = split(split(aR[0], "|")[0], "_")
334- let aT = parseIntValue(aS[1])
334+ let aT = parseIntValue(aS[0])
335335 let aU = parseIntValue(aS[1])
336336 let aV = split(aR[1], ":")
337337 let aW = aV[0]
338338 let aX = parseIntValue(aV[1])
339- if (if ((aX > lastBlock.timestamp))
339+ if (if ((aX > (lastBlock.timestamp + l)))
340340 then true
341341 else ((lastBlock.timestamp - l) > aX))
342342 then throw("signature outdated")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
55
66 let b = this
77
88 let c = this
99
1010 let d = addressFromStringValue("3N5SpX21R3R75Qo4eb3MwFFvW7TUzyhvavv")
1111
1212 let e = addressFromStringValue("3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep")
1313
1414 let f = base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
1515
1616 let g = "LAND"
1717
1818 let h = "DUCK"
1919
2020 let i = "Africa_F_Africa"
2121
2222 let j = 3456000
2323
2424 let k = 86400000
2525
2626 let l = 300000
2727
2828 func m (n) = ("nftOwner_" + n)
2929
3030
3131 func o (n) = ("duckOwner_" + n)
3232
3333
3434 func p (n) = ("stakedTime_" + n)
3535
3636
3737 func q (r) = ("stakedDuckByOwner_" + r)
3838
3939
4040 func s (t,n,r) = ((((("stakedTimeByTypeAssetIdAndOwner_" + t) + "_") + n) + "_") + r)
4141
4242
4343 func u (v) = ("landOwner_" + v)
4444
4545
4646 func w (x) = ("backPack_" + x)
4747
4848
4949 func y (x) = ("duckLocation_" + x)
5050
5151
5252 func z (x) = ("duckHealth_" + x)
5353
5454
5555 let A = 0
5656
5757 let B = 1
5858
5959 let C = 2
6060
6161 let D = 3
6262
6363 let E = 0
6464
6565 let F = 1
6666
6767 let G = 2
6868
6969 let H = 0
7070
7171 let I = 1
7272
7373 let J = 2
7474
7575 let K = 3
7676
7777 let L = 0
7878
7979 let M = 1
8080
8181 let N = 2
8282
8383 let O = 3
8484
8585 let P = 4
8686
8787 let Q = 5
8888
8989 func R (S) = [(size(split(S, "A")) - 1), (size(split(S, "B")) - 1), (size(split(S, "C")) - 1), (size(split(S, "D")) - 1), (size(split(S, "E")) - 1), (size(split(S, "F")) - 1)]
9090
9191
9292 func T (U) = {
9393 let V = U
9494 if (("S" == V))
9595 then 25
9696 else if (("M" == V))
9797 then 100
9898 else if (("L" == V))
9999 then 225
100100 else if (("XL" == V))
101101 then 400
102102 else if (("XXL" == V))
103103 then 625
104104 else throw("Unknown land size")
105105 }
106106
107107
108108 func W (X,Y,Z) = {
109109 func aa (ab,ac) = {
110110 let ad = (fraction(Z, j, k) * Y[ac])
111111 (ab :+ toString((parseIntValue(X[ac]) + ad)))
112112 }
113113
114114 let ae = {
115115 let af = [0, 1, 2, 3, 4, 5]
116116 let ag = size(af)
117117 let ah = nil
118118 func ai (aj,ak) = if ((ak >= ag))
119119 then aj
120120 else aa(aj, af[ak])
121121
122122 func al (aj,ak) = if ((ak >= ag))
123123 then aj
124124 else throw("List size exceeds 6")
125125
126126 al(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6)
127127 }
128128 makeString(ae, "_")
129129 }
130130
131131
132132 @Callable(ac)
133133 func stakeLand () = {
134134 let am = value(ac.payments[0])
135135 let n = value(am.assetId)
136136 let an = toString(ac.caller)
137137 if ((am.amount != 1))
138138 then throw((("NFT " + g) + " token should be attached as payment"))
139139 else {
140140 let ao = value(assetInfo(n))
141141 if ((ao.issuer != this))
142142 then throw("Unknown issuer of token")
143143 else if (!(contains(ao.name, g)))
144144 then throw((("Only NFT " + g) + " tokens are accepted"))
145145 else {
146146 let ap = drop(ao.name, 4)
147147 let v = if (contains(ap, "XXL"))
148148 then dropRight(ap, 3)
149149 else if (contains(ap, "XL"))
150150 then dropRight(ap, 2)
151151 else dropRight(ap, 1)
152152 if (!(isDefined(parseInt(v))))
153153 then throw(("Cannot parse land number from " + ao.name))
154154 else {
155155 let aq = p(toBase58String(n))
156156 if (isDefined(getInteger(aq)))
157157 then throw((("NFT " + ao.name) + " is already staked"))
158158 else [IntegerEntry(aq, lastBlock.timestamp), IntegerEntry(s(g, toBase58String(n), an), lastBlock.timestamp), StringEntry(m(toBase58String(n)), an), StringEntry(u(v), an)]
159159 }
160160 }
161161 }
162162 }
163163
164164
165165
166166 @Callable(ac)
167167 func unstakeLand (ar) = if ((size(ac.payments) != 0))
168168 then throw("unstake doesn't require any payments")
169169 else {
170170 let n = fromBase58String(ar)
171171 let an = toString(ac.caller)
172172 let ao = value(assetInfo(n))
173173 if ((ao.issuer != this))
174174 then throw("Unknown issuer of token")
175175 else if (!(contains(ao.name, g)))
176176 then throw((("Only NFT " + g) + " tokens can be unstaked"))
177177 else {
178178 let aq = p(ar)
179179 if (!(isDefined(aq)))
180180 then throw((("NFT " + ao.name) + " is not staked"))
181181 else {
182182 let as = valueOrErrorMessage(getString(m(ar)), (("NFT " + ao.name) + " is orphaned"))
183183 if ((as != an))
184184 then throw("Staked NFT is not yours")
185185 else [ScriptTransfer(ac.caller, 1, n), DeleteEntry(aq), DeleteEntry(s(g, ar, an))]
186186 }
187187 }
188188 }
189189
190190
191191
192192 @Callable(ac)
193193 func stakeDuck () = {
194194 let am = value(ac.payments[0])
195195 let n = value(am.assetId)
196196 let an = toString(ac.caller)
197197 if ((am.amount != 1))
198198 then throw((("NFT " + h) + " token should be attached as payment"))
199199 else {
200200 let ao = value(assetInfo(n))
201201 if (if ((ao.issuer != b))
202202 then (ao.issuer != c)
203203 else false)
204204 then throw((("Unknown issuer of " + h) + " token"))
205205 else if (!(contains(ao.name, h)))
206206 then throw((("Only NFT " + h) + " tokens are accepted"))
207207 else {
208208 let at = toBase58String(n)
209209 let aq = p(at)
210210 if (isDefined(getInteger(aq)))
211211 then throw((("NFT " + ao.name) + " is already staked"))
212212 else if (isDefined(getString(q(an))))
213213 then throw(("You already staked one duck: " + ao.name))
214214 else {
215215 let au = y(at)
216216 let av = getString(au)
217217 let aw = z(at)
218218 let ax = getInteger(aw)
219219 let ay = w(at)
220220 let az = getString(ay)
221221 ([IntegerEntry(aq, lastBlock.timestamp), IntegerEntry(s(h, toBase58String(n), an), lastBlock.timestamp), StringEntry(o(at), an), StringEntry(q(an), at)] ++ (if (isDefined(av))
222222 then nil
223223 else ([StringEntry(au, i)] ++ (if (isDefined(ax))
224224 then nil
225225 else ([IntegerEntry(aw, 100)] ++ (if (isDefined(az))
226226 then nil
227227 else [StringEntry(ay, "0:0_0_0_0_0_0::")]))))))
228228 }
229229 }
230230 }
231231 }
232232
233233
234234
235235 @Callable(ac)
236236 func unstakeDuck (at) = if ((size(ac.payments) != 0))
237237 then throw("unstake doesn't require any payments")
238238 else {
239239 let n = fromBase58String(at)
240240 let an = toString(ac.caller)
241241 let ao = value(assetInfo(n))
242242 if (if ((ao.issuer != b))
243243 then (ao.issuer != c)
244244 else false)
245245 then throw((("Unknown issuer of " + h) + " token"))
246246 else if (!(contains(ao.name, h)))
247247 then throw((("Only NFT " + h) + " tokens can be unstaked"))
248248 else {
249249 let aq = p(toBase58String(n))
250250 if (!(isDefined(aq)))
251251 then throw((("NFT " + ao.name) + " is not staked"))
252252 else if (!(isDefined(q(an))))
253253 then throw((("The duck " + ao.name) + " is not staked"))
254254 else {
255255 let as = valueOrErrorMessage(getString(o(toBase58String(n))), (("NFT " + ao.name) + " is orphaned"))
256256 if ((as != an))
257257 then throw("Staked NFT is not yours")
258258 else [ScriptTransfer(ac.caller, 1, n), DeleteEntry(aq), DeleteEntry(y(at)), DeleteEntry(s(h, at, an)), DeleteEntry(q(an))]
259259 }
260260 }
261261 }
262262
263263
264264
265265 @Callable(ac)
266266 func claimRes (aA,ar) = if ((size(ac.payments) != 0))
267267 then throw("claimRes doesn't require any payments")
268268 else {
269269 let aB = toString(ac.caller)
270270 let ao = value(assetInfo(fromBase58String(ar)))
271271 if (!(contains(ao.name, g)))
272272 then throw((("NFT " + g) + " token should be passed as param"))
273273 else {
274274 let aq = p(ar)
275275 let aC = getInteger(aq)
276276 if (!(isDefined(aC)))
277277 then throw((("NFT " + ao.name) + " is not staked"))
278278 else {
279279 let as = getStringValue(m(ar))
280280 if ((as != aB))
281281 then throw((g + " is not yours"))
282282 else {
283283 let aD = split(ao.description, "_")
284284 let U = aD[B]
285285 let Y = R(aD[C])
286286 let aE = getString(q(aB))
287287 if (!(isDefined(aE)))
288288 then throw("You don't have a duck staked")
289289 else {
290290 let aF = value(aE)
291291 let aG = valueOrElse(getString(y(aF)), i)
292292 let aH = split(value(aG), "_")
293293 if ((aH[F] != "L"))
294294 then throw((("Duck location type is " + aH[F]) + ", but should be L"))
295295 else if ((aH[G] != ar))
296296 then throw(((("Duck location id is " + aH[G]) + ", but should be ") + ar))
297297 else {
298298 let Z = (lastBlock.timestamp - value(aC))
299299 if ((0 > Z))
300300 then throw(((("Saved timestamp is in future, saved = " + toString(value(aC))) + ", current = ") + toString(lastBlock.timestamp)))
301301 else {
302302 let aI = T(U)
303303 let aJ = (fraction(Z, j, k) * aI)
304304 if ((aA > aJ))
305305 then throw(((("Not enough resources, available = " + toString(aJ)) + ", requested = ") + toString(aA)))
306306 else {
307307 let aK = fraction((aJ - aA), k, (aI * j))
308308 let aL = (lastBlock.timestamp - aK)
309309 let ay = w(aF)
310310 let aM = split(valueOrElse(getString(ay), "0:0_0_0_0_0_0::"), ":")
311311 let X = split(aM[I], "_")
312312 let aN = W(X, Y, (Z - aK))
313313 let aO = makeString([aM[H], aN, aM[J], aM[K]], ":")
314314 $Tuple2([StringEntry(ay, aO), IntegerEntry(aq, aL), IntegerEntry(s(g, ar, as), aL)], unit)
315315 }
316316 }
317317 }
318318 }
319319 }
320320 }
321321 }
322322 }
323323
324324
325325
326326 @Callable(ac)
327327 func flight (aP,aQ) = if (!(sigVerify_8Kb(aP, aQ, f)))
328328 then throw("signature does not match")
329329 else if ((size(ac.payments) != 0))
330330 then throw("flight doesn't require any payments")
331331 else {
332332 let aR = split(toUtf8String(aP), ";")
333333 let aS = split(split(aR[0], "|")[0], "_")
334- let aT = parseIntValue(aS[1])
334+ let aT = parseIntValue(aS[0])
335335 let aU = parseIntValue(aS[1])
336336 let aV = split(aR[1], ":")
337337 let aW = aV[0]
338338 let aX = parseIntValue(aV[1])
339- if (if ((aX > lastBlock.timestamp))
339+ if (if ((aX > (lastBlock.timestamp + l)))
340340 then true
341341 else ((lastBlock.timestamp - l) > aX))
342342 then throw("signature outdated")
343343 else {
344344 let x = valueOrErrorMessage(getString(q(toString(ac.caller))), "You don't have a duck staked")
345345 let aw = z(x)
346346 let aY = valueOrElse(getInteger(aw), 100)
347347 if ((aY != aT))
348348 then throw(((("oldHealth=" + toString(valueOrElse(getInteger(aw), 100))) + " from state does not match one from flight log=") + toString(aT)))
349349 else {
350350 let au = y(x)
351351 let aG = valueOrElse(getString(au), i)
352352 if ((aW == aG))
353353 then throw("You can't fly to the same location")
354354 else $Tuple2([StringEntry(au, if ((aU > 0))
355355 then aW
356356 else aG), IntegerEntry(aw, aU)], unit)
357357 }
358358 }
359359 }
360360
361361
362362
363363 @Callable(ac)
364364 func setHealth (ax,x) = {
365365 let aF = valueOrErrorMessage(getString(q(toString(ac.caller))), "You don't have a duck staked")
366366 if (if ((0 > ax))
367367 then true
368368 else (ax > 100))
369369 then throw("HP should be within 0..100")
370370 else [IntegerEntry(z(x), ax)]
371371 }
372372
373373
374374
375375 @Callable(ac)
376376 func updateBackpack (x,aO) = if ((ac.caller != e))
377377 then throw("permission denied")
378378 else $Tuple2([StringEntry(w(x), aO)], aO)
379379
380380

github/deemru/w8io/169f3d6 
411.44 ms