tx · 3t6nwNCUtoKAnLsmFiEFAaR4VXsNf3GbBh75aNBj28i5

3MtHYn3dDpoVUf6FNzwXU8k1cqH3KMxgNFP:  -0.01400000 Waves

2021.12.27 05:41 [1852075] smart account 3MtHYn3dDpoVUf6FNzwXU8k1cqH3KMxgNFP > SELF 0.00000000 Waves

{ "type": 13, "id": "3t6nwNCUtoKAnLsmFiEFAaR4VXsNf3GbBh75aNBj28i5", "fee": 1400000, "feeAssetId": null, "timestamp": 1640572935328, "version": 2, "chainId": 84, "sender": "3MtHYn3dDpoVUf6FNzwXU8k1cqH3KMxgNFP", "senderPublicKey": "CERNwqnHFnGf66rmS4s5mpWEPxv5RMqg2rSKPJCCgTbQ", "proofs": [ "fKtaLArom8VxjtLYM7MCWNHGhEPXPvtwhonti1GuXfptZxgnwq6mzMTWKruvX2nTfjTsuaTWpQSPhTX2BNc95Qt" ], "script": "base64:AAIFAAAAAAAAABwIAhIMCgoICAEBAQEYCAgIEgMKAQgSBQoDCAgIAAAAGQAAAAASc3lzdGVtQXNzZXRJZEJ5dGVzAQAAACBl2/7IbWHpVuwmUYs5w8vx8CJaoK7/XpSEcwFpn5187QAAAAAbZmFjdG9yeUNvbnRyYWN0QWRkcmVzc0J5dGVzAQAAABoBVKSIz4/LrUrKgYcmdcl3OfutIPleSLVTRQAAAAAiY3JlYXRlRXZlbnRNaW5pbWFsU2VydmljZUZlZUFtb3VudAAAAAAAAAAACgAAAAAgZWRpdEV2ZW50TWluaW1hbFNlcnZpY2VGZWVBbW91bnQAAAAAAAAAABQAAAAAEGtleURhdGFTZXBhcmF0b3ICAAAAAToAAAAAEnZhbHVlRGF0YVNlcGFyYXRvcgIAAAACX18BAAAAEnVuc2FmZUdldEFzc2V0QnlJZAAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAkAA+wAAAABBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAFYXNzZXQFAAAAByRtYXRjaDAFAAAABWFzc2V0CQAAAgAAAAECAAAAHlNwZWNpZmllZCBhc3NldCBkb2VzIG5vdCBleGlzdAEAAAAPdmFsaWRhdGVBc3NldElkAAAAAgAAABNzb3VyY2VBc3NldElkT3JVbml0AAAAD3JlcXVpcmVkQXNzZXRJZAQAAAANc291cmNlQXNzZXRJZAMJAQAAAAlpc0RlZmluZWQAAAABBQAAABNzb3VyY2VBc3NldElkT3JVbml0CQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAE3NvdXJjZUFzc2V0SWRPclVuaXQCAAAABVdBVkVTAwkBAAAAAiE9AAAAAgUAAAANc291cmNlQXNzZXRJZAUAAAAPcmVxdWlyZWRBc3NldElkBwYBAAAAFmNoZWNrU2VydmljZUZlZVBheW1lbnQAAAADAAAADG9wZXJhdGlvblRhZwAAABFzZXJ2aWNlRmVlUGF5bWVudAAAABhyZXF1aXJlZFNlcnZpY2VGZWVBbW91bnQEAAAADXN5c3RlbUFzc2V0SWQJAAJYAAAAAQUAAAASc3lzdGVtQXNzZXRJZEJ5dGVzAwkBAAAAASEAAAABCQEAAAAPdmFsaWRhdGVBc3NldElkAAAAAggFAAAAEXNlcnZpY2VGZWVQYXltZW50AAAAB2Fzc2V0SWQFAAAADXN5c3RlbUFzc2V0SWQJAAACAAAAAQkAASwAAAACCQABLAAAAAIFAAAADG9wZXJhdGlvblRhZwIAAAAyIHJlcXVpcmVzIHNlcnZpY2UgZmVlIHBheW1lbnQgaW4gdGhlIHN5c3RlbSBhc3NldCAFAAAADXN5c3RlbUFzc2V0SWQDAwkAAGYAAAACBQAAABhyZXF1aXJlZFNlcnZpY2VGZWVBbW91bnQIBQAAABFzZXJ2aWNlRmVlUGF5bWVudAAAAAZhbW91bnQGCQAAZgAAAAIIBQAAABFzZXJ2aWNlRmVlUGF5bWVudAAAAAZhbW91bnQFAAAAGHJlcXVpcmVkU2VydmljZUZlZUFtb3VudAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAABKQXR0YWNoZWQgc2VydmljZSBmZWUgcGF5bWVudCBhbW91bnQgaXMgbm90IGVxdWFsIHRvIHJlcXVpcmVkIHNlcnZpY2UgZmVlICgJAAGkAAAAAQUAAAAYcmVxdWlyZWRTZXJ2aWNlRmVlQW1vdW50AgAAAAEpBQAAAAR1bml0AQAAAA9sYXN0RXZlbnRJZHhLZXkAAAABAAAABGFkZHIJAAS5AAAAAgkABEwAAAACCQAEJQAAAAEFAAAABGFkZHIJAARMAAAAAgIAAAAObGFzdF9ldmVudF9pZHgFAAAAA25pbAUAAAAQa2V5RGF0YVNlcGFyYXRvcgEAAAATbGFzdEV2ZW50UmVxdWVzdElkeAAAAAEAAAAEYWRkcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQEAAAAPbGFzdEV2ZW50SWR4S2V5AAAAAQUAAAAEYWRkcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpAAAAAAAAAAABAQAAABNnZW5lcmF0ZU5ld0V2ZW50SWR4AAAAAQAAAARhZGRyCQAAZAAAAAIJAQAAABNsYXN0RXZlbnRSZXF1ZXN0SWR4AAAAAQUAAAAEYWRkcgAAAAAAAAAAAQEAAAAPZ2VuZXJhdGVFdmVudElkAAAAAgAAAARhZGRyAAAAA2lkeAkABLkAAAACCQAE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bnREYXRhAAAAAAAAAAAJBAAAAA5sb2NhdGlvbk9yVW5pdAMJAAAAAAAAAgkAAZEAAAACBQAAAAlldmVudERhdGEAAAAAAAAAAAoCAAAAAAUAAAAEdW5pdAkAAZEAAAACBQAAAAlldmVudERhdGEAAAAAAAAAAAoJAAUdAAAACwUAAAAOY3JlYXRvckFkZHJlc3MFAAAABXRpdGxlBQAAAAtkZXNjcmlwdGlvbgUAAAALc3RhcnRIZWlnaHQFAAAACGR1cmF0aW9uBQAAAAt0aWNrZXRQcmljZQUAAAALdGlja2V0Q291bnQFAAAABHRhZ3MFAAAADXBpY3R1cmVPclVuaXQFAAAACmxpbmtPclVuaXQFAAAADmxvY2F0aW9uT3JVbml0AQAAABJ1bnNhZmVHZXRFdmVudERhdGEAAAABAAAAB2V2ZW50SWQEAAAADGV2ZW50RGF0YUtleQkBAAAAFGdlbmVyYXRlRXZlbnREYXRhS2V5AAAAAQUAAAAHZXZlbnRJZAQAAAAJZXZlbnREYXRhBAAAAAckbWF0Y2gwCQAEIgAAAAEFAAAADGV2ZW50RGF0YUtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAGVNwZWNpZmllZCBldmVudCBub3QgZm91bmQJAQAAABRkZXNlcmlhbGl6ZUV2ZW50RGF0YQAAAAEFAAAACWV2ZW50RGF0YQEAAAAcZ2VuZXJhdGVCb3VnaHRUaWNrZXRDb3VudEtleQAAAAEAAAAHZXZlbnRJZAkABLkAAAACCQAETAAAAAICAAAABWV2ZW50CQAETAAAAAIFAAAAB2V2ZW50SWQJAARMAAAAAgIAAAAMdGlja2V0X2NvdW50BQAAAANuaWwFAAAAEGtleURhdGFTZXBhcmF0b3IBAAAAEWdlbmVyYXRlVGlja2V0S2V5AAAAAgAAAAdldmVudElkAAAAC3VzZXJBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAGdGlja2V0CQAETAAAAAIFAAAAB2V2ZW50SWQJAARMAAAAAgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAADbmlsBQAAABBrZXlEYXRhU2VwYXJhdG9yAQAAABVnZW5lcmF0ZVRpY2tldERhdGFLZXkAAAABAAAACHRpY2tldElkCQAEuQAAAAIJAARMAAAAAgIAAAAGdGlja2V0CQAETAAAAAIFAAAACHRpY2tldElkCQAETAAAAAICAAAABGRhdGEFAAAAA25pbAUAAAASdmFsdWVEYXRhU2VwYXJhdG9yAQAAABNzZXJpYWxpemVUaWNrZXREYXRhAAAABAAAAAdidXlUeElkAAAACGJ1eVByaWNlAAAACHN3YXBUeElkAAAAC2JpdG9ncmFwaElkCQAEuQAAAAIJAARMAAAAAgkAAlgAAAABBQAAAAdidXlUeElkCQAETAAAAAIJAAGkAAAAAQUAAAAIYnV5UHJpY2UJAARMAAAAAgMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAhzd2FwVHhJZAkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAhzd2FwVHhJZAIAAAAACQAETAAAAAIDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAALYml0b2dyYXBoSWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAALYml0b2dyYXBoSWQCAAAAAAUAAAADbmlsBQAAABJ2YWx1ZURhdGFTZXBhcmF0b3IBAAAAFWRlc2VyaWFsaXplVGlja2V0RGF0YQAAAAEAAAAFdmFsdWUEAAAACnRpY2tldERhdGEJAAS1AAAAAgUAAAAFdmFsdWUFAAAAEnZhbHVlRGF0YVNlcGFyYXRvcgQAAAAHYnV5VHhJZAkAAlkAAAABCQABkQAAAAIFAAAACnRpY2tldERhdGEAAAAAAAAAAAAEAAAACGJ1eVByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAKdGlja2V0RGF0YQAAAAAAAAAAAQQAAAAOc3dhcFR4SWRPclVuaXQEAAAAByRtYXRjaDAJAAGRAAAAAgUAAAAKdGlja2V0RGF0YQAAAAAAAAAAAgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMFAAAABHVuaXQEAAAAEWJpdG9ncmFwaElkT3JVbml0BAAAAAckbWF0Y2gwCQABkQAAAAIFAAAACnRpY2tldERhdGEAAAAAAAAAAAMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAFzBQAAAAR1bml0CQAFFgAAAAQFAAAAB2J1eVR4SWQFAAAACGJ1eVByaWNlBQAAAA5zd2FwVHhJZE9yVW5pdAUAAAARYml0b2dyYXBoSWRPclVuaXQBAAAAE3Vuc2FmZUdldFRpY2tldERhdGEAAAABAAAACHRpY2tldElkBAAAAA10aWNrZXREYXRhS2V5CQEAAAAVZ2VuZXJhdGVUaWNrZXREYXRhS2V5AAAAAQUAAAAIdGlja2V0SWQEAAAACnRpY2tldERhdGEEAAAAByRtYXRjaDAJAAQiAAAAAQUAAAANdGlja2V0RGF0YUtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAGlNwZWNpZmllZCB0aWNrZXQgbm90IGZvdW5kCQEAAAAVZGVzZXJpYWxpemVUaWNrZXREYXRhAAAAAQUAAAAKdGlja2V0RGF0YQEAAAAYdW5zYWZlRXh0cmFjdFRpY2tldE93bmVyAAAAAQAAAAh0aWNrZXRJZAQAAAAHa2V5RGF0YQkABLUAAAACBQAAAAh0aWNrZXRJZAUAAAAQa2V5RGF0YVNlcGFyYXRvcgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAAdrZXlEYXRhAAAAAAAAAAADAQAAAAVpc05GVAAAAAEAAAAFYXNzZXQDAwkAAAAAAAACCAUAAAAFYXNzZXQAAAAIZGVjaW1hbHMAAAAAAAAAAAAGCQAAAAAAAAIIBQAAAAVhc3NldAAAAAhxdWFudGl0eQAAAAAAAAAAAQYJAQAAAAEhAAAAAQgFAAAABWFzc2V0AAAACnJlaXNzdWFibGUAAAADAAAAAWkBAAAAC2NyZWF0ZUV2ZW50AAAACgAAAAV0aXRsZQAAAAtkZXNjcmlwdGlvbgAAAAtzdGFydEhlaWdodAAAAA5kdXJhdGlvbkluU2VjcwAAAAt0aWNrZXRQcmljZQAAAAt0aWNrZXRDb3VudAAAAAR0YWdzAAAAB3BpY3R1cmUAAAAEbGluawAAAAhsb2NhdGlvbgQAAAALc3lzdGVtQXNzZXQJAQAAABJ1bnNhZmVHZXRBc3NldEJ5SWQAAAABBQAAABJzeXN0ZW1Bc3NldElkQnl0ZXMDCQAAZgAAAAIAAAAAAAAAAAEJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMJAAACAAAAAQIAAAAnWW91IGhhdmUgdG8gc2VuZCBzZXJ2aWNlIGZlZSBhcyBwYXltZW50BAAAABFzZXJ2aWNlRmVlUGF5bWVudAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQMJAQAAAAlpc0RlZmluZWQAAAABCQEAAAAWY2hlY2tTZXJ2aWNlRmVlUGF5bWVudAAAAAMCAAAADENyZWF0ZSBldmVudAUAAAARc2VydmljZUZlZVBheW1lbnQFAAAAImNyZWF0ZUV2ZW50TWluaW1hbFNlcnZpY2VGZWVBbW91bnQJAAACAAAAAQIAAAAZUmVhY2hlZCB1bnJlYWNoYWJsZSBzdGF0ZQQAAAALbmV3RXZlbnRJZHgJAQAAABNnZW5lcmF0ZU5ld0V2ZW50SWR4AAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAApuZXdFdmVudElkCQEAAAAPZ2VuZXJhdGVFdmVudElkAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAtuZXdFdmVudElkeAMJAABmAAAAAgUAAAALc3RhcnRIZWlnaHQFAAAABmhlaWdodAkAAAIAAAABAgAAACxFdmVudCBzdGFydCBoZWlnaHQgaGFzIHRvIGJlIGZyb20gdGhlIGZ1dHVyZQMJAABmAAAAAgAAAAAAAAAAAQUAAAAOZHVyYXRpb25JblNlY3MJAAACAAAAAQIAAAAoRXZlbnQgZHVyYXRpb24gaGFzIHRvIGJlIHBvc2l0aXZlIG51bWJlcgMJAABmAAAAAgAAAAAAAAAAAAUAAAALdGlja2V0UHJpY2UJAAACAAAAAQIAAAAuVGlja2V0IHByaWNlIGhhcyB0byBiZSB6ZXJvIG9yIHBvc2l0aXZlIG51bWJlcgMJAABmAAAAAgAAAAAAAAAAAQUAAAALdGlja2V0Q291bnQJAAACAAAAAQIAAAAmVGlja2V0IGNvdW50IGhhcyB0byBiZSBwb3NpdGl2ZSBudW1iZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9sYXN0RXZlbnRJZHhLZXkAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAC25ld0V2ZW50SWR4CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABRnZW5lcmF0ZUV2ZW50RGF0YUtleQAAAAEFAAAACm5ld0V2ZW50SWQJAQAAABJzZXJpYWxpemVFdmVudERhdGEAAAALCAUAAAABaQAAAAZjYWxsZXIFAAAABXRpdGxlBQAAAAtkZXNjcmlwdGlvbgUAAAALc3RhcnRIZWlnaHQFAAAADmR1cmF0aW9uSW5TZWNzBQAAAAt0aWNrZXRQcmljZQUAAAALdGlja2V0Q291bnQFAAAABHRhZ3MFAAAAB3BpY3R1cmUFAAAABGxpbmsFAAAACGxvY2F0aW9uBQAAAANuaWwAAAABaQEAAAAJYnV5VGlja2V0AAAAAQAAAAdldmVudElkBAAAAAtzeXN0ZW1Bc3NldAkBAAAAEnVuc2FmZUdldEFzc2V0QnlJZAAAAAEFAAAAEnN5c3RlbUFzc2V0SWRCeXRlcwMJAABmAAAAAgAAAAAAAAAAAQkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwkAAAIAAAABAgAAACVZb3UgaGF2ZSB0byBhdHRhY2ggdGhlIHRpY2tldCBwYXltZW50BAAAAA10aWNrZXRQYXltZW50CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAA1zeXN0ZW1Bc3NldElkCQACWAAAAAEIBQAAAAtzeXN0ZW1Bc3NldAAAAAJpZAMJAQAAAAEhAAAAAQkBAAAAD3ZhbGlkYXRlQXNzZXRJZAAAAAIIBQAAAA10aWNrZXRQYXltZW50AAAAB2Fzc2V0SWQFAAAADXN5c3RlbUFzc2V0SWQJAAACAAAAAQkAASwAAAACAgAAAClUaWNrZXQgcGF5bWVudCBoYXMgdG8gYmUgaW4gc3lzdGVtIGFzc2V0IAUAAAANc3lzdGVtQXNzZXRJZAQAAAAJZXZlbnREYXRhCQEAAAASdW5zYWZlR2V0RXZlbnREYXRhAAAAAQUAAAAHZXZlbnRJZAQAAAAUYm91Z2h0VGlja2V0Q291bnRLZXkJAQAAABxnZW5lcmF0ZUJvdWdodFRpY2tldENvdW50S2V5AAAAAQUAAAAHZXZlbnRJZAQAAAARYm91Z2h0VGlja2V0Q291bnQEAAAAByRtYXRjaDAJAAQfAAAAAQUAAAAUYm91Z2h0VGlja2V0Q291bnRLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAFY291bnQFAAAAByRtYXRjaDAFAAAABWNvdW50AAAAAAAAAAAABAAAAAt0aWNrZXRDb3VudAgFAAAACWV2ZW50RGF0YQAAAAJfNwMJAABnAAAAAgUAAAARYm91Z2h0VGlja2V0Q291bnQFAAAAC3RpY2tldENvdW50CQAAAgAAAAECAAAAHEFsbCB0aGUgdGlja2V0cyBhcmUgc29sZCBvdXQEAAAADXVzZXJUaWNrZXRLZXkJAQAAABFnZW5lcmF0ZVRpY2tldEtleQAAAAIFAAAAB2V2ZW50SWQIBQAAAAFpAAAABmNhbGxlcgMJAQAAAAlpc0RlZmluZWQAAAABCQAEIgAAAAEFAAAADXVzZXJUaWNrZXRLZXkJAAACAAAAAQIAAAAZWW91IGFscmVhZHkgaGF2ZSBhIHRpY2tldAQAAAAQZXZlbnRUaWNrZXRQcmljZQgFAAAACWV2ZW50RGF0YQAAAAJfNgMJAABmAAAAAgUAAAAQZXZlbnRUaWNrZXRQcmljZQgFAAAADXRpY2tldFBheW1lbnQAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAA/QXR0YWNoZWQgdGlja2V0IHBheW1lbnQgYW1vdW50IGlzIGxlc3MgdGhlbiBldmVudCB0aWNrZXQgcHJpY2UgCQABpAAAAAEFAAAAEGV2ZW50VGlja2V0UHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFGJvdWdodFRpY2tldENvdW50S2V5CQAAZAAAAAIFAAAAEWJvdWdodFRpY2tldENvdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADXVzZXJUaWNrZXRLZXkJAQAAABNzZXJpYWxpemVUaWNrZXREYXRhAAAABAgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAgFAAAADXRpY2tldFBheW1lbnQAAAAGYW1vdW50BQAAAAR1bml0BQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAWZ2l2ZUJpdG9ncmFwaEZvclRpY2tldAAAAAMAAAAIdGlja2V0SWQAAAANYml0b2dyYXBoTmFtZQAAABFiaXRvZ3JhcGhNZXRhZGF0YQMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQiAAAAAQUAAAAIdGlja2V0SWQJAAACAAAAAQIAAAAWVGlja2V0IGRvZXMgbm90IGV4aXN0cwQAAAAKdGlja2V0RGF0YQkBAAAAE3Vuc2FmZUdldFRpY2tldERhdGEAAAABBQAAAAh0aWNrZXRJZAQAAAARYml0b2dyYXBoSWRPclVuaXQIBQAAAAp0aWNrZXREYXRhAAAAAl80AwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAEWJpdG9ncmFwaElkT3JVbml0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABNUaGVyZSBpcyBiaXRvZ3JhcGggCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAEWJpdG9ncmFwaElkT3JVbml0AgAAACsgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGdpdmVuIGZvciB0aGUgdGlja2V0BAAAAAt0aWNrZXRPd25lcgkBAAAAGHVuc2FmZUV4dHJhY3RUaWNrZXRPd25lcgAAAAEFAAAACHRpY2tldElkBAAAABVjcmVhdGVCaXRvZ3JhcGhSZXN1bHQJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABBQAAABtmYWN0b3J5Q29udHJhY3RBZGRyZXNzQnl0ZXMCAAAAD2NyZWF0ZUJpdG9ncmFwaAkABEwAAAACBQAAAA1iaXRvZ3JhcGhOYW1lCQAETAAAAAIFAAAAEWJpdG9ncmFwaE1ldGFkYXRhBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAVY3JlYXRlQml0b2dyYXBoUmVzdWx0BQAAABVjcmVhdGVCaXRvZ3JhcGhSZXN1bHQEAAAAEGJpdG9ncmFwaEFzc2V0SWQEAAAAByRtYXRjaDAFAAAAFWNyZWF0ZUJpdG9ncmFwaFJlc3VsdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABcgUAAAAHJG1hdGNoMAUAAAABcgkAAAIAAAABAgAAAClFcnJvciBvY2N1cnJlZCB3aGlsZSBjcmVhdGluZyBhIGJpdG9ncmFwaAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt0aWNrZXRPd25lcgAAAAAAAAAAAQUAAAAQYml0b2dyYXBoQXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAh0aWNrZXRJZAkBAAAAE3NlcmlhbGl6ZVRpY2tldERhdGEAAAAECAUAAAAKdGlja2V0RGF0YQAAAAJfMQgFAAAACnRpY2tldERhdGEAAAACXzIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAEGJpdG9ncmFwaEFzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tledfA9Kg=", "height": 1852075, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BYeDwbUtqHoSEJiGELua9fcbtxzLq4PHc6rQGsNkjeW8 Next: 3zk2Wuz5T6cJzBPxtXF52Jfq6jSnT6B14SpXR2V87M7G Diff:
OldNewDifferences
6363 func generateEventDataKey (eventId) = makeString(["event", eventId, "data"], keyDataSeparator)
6464
6565
66-func serializeEventData (creatorAddress,title,description,startHeight,ticketPrice,tags,durationOrUnit,pictureOrUnit,linkOrUnit,locationOrUnit,ticketCountOrUnit) = {
67- let duration = match durationOrUnit {
68- case duration: Int =>
69- toString(duration)
70- case _ =>
71- ""
72- }
66+func serializeEventData (creatorAddress,title,description,startHeight,duration,ticketPrice,ticketCount,tags,pictureOrUnit,linkOrUnit,locationOrUnit) = {
7367 let picture = match pictureOrUnit {
7468 case picture: String =>
7569 picture
8882 case _ =>
8983 ""
9084 }
91- let ticketCount = match ticketCountOrUnit {
92- case ticketCount: Int =>
93- toString(ticketCount)
94- case _ =>
95- ""
96- }
97- makeString([toString(creatorAddress), title, description, toString(startHeight), toString(ticketPrice), makeString(tags, ","), duration, picture, link, location, ticketCount], valueDataSeparator)
85+ makeString([toString(creatorAddress), title, description, toString(startHeight), toString(duration), toString(ticketPrice), toString(ticketCount), makeString(tags, ","), picture, link, location], valueDataSeparator)
9886 }
9987
10088
10492 let title = eventData[1]
10593 let description = eventData[2]
10694 let startHeight = parseIntValue(eventData[3])
107- let ticketPrice = parseIntValue(eventData[4])
108- let tags = split(eventData[5], ",")
109- let durationOrUnit = parseInt(eventData[6])
110- let pictureOrUnit = if ((eventData[7] == ""))
111- then unit
112- else eventData[7]
113- let linkOrUnit = if ((eventData[8] == ""))
95+ let duration = parseInt(eventData[4])
96+ let ticketPrice = parseIntValue(eventData[5])
97+ let ticketCount = parseIntValue(eventData[6])
98+ let tags = split(eventData[7], ",")
99+ let pictureOrUnit = if ((eventData[8] == ""))
114100 then unit
115101 else eventData[8]
116- let locationOrUnit = if ((eventData[9] == ""))
102+ let linkOrUnit = if ((eventData[9] == ""))
117103 then unit
118104 else eventData[9]
119- let ticketCountOrUnit = parseInt(eventData[10])
120- $Tuple11(creatorAddress, title, description, startHeight, ticketPrice, tags, durationOrUnit, pictureOrUnit, linkOrUnit, locationOrUnit, ticketCountOrUnit)
105+ let locationOrUnit = if ((eventData[10] == ""))
106+ then unit
107+ else eventData[10]
108+ $Tuple11(creatorAddress, title, description, startHeight, duration, ticketPrice, ticketCount, tags, pictureOrUnit, linkOrUnit, locationOrUnit)
121109 }
122110
123111
195183
196184
197185 @Callable(i)
198-func createEvent (title,description,startHeight,ticketPrice,tags,durationInSecs,picture,link,location,ticketCount) = {
186+func createEvent (title,description,startHeight,durationInSecs,ticketPrice,ticketCount,tags,picture,link,location) = {
199187 let systemAsset = unsafeGetAssetById(systemAssetIdBytes)
200188 if ((1 > size(i.payments)))
201189 then throw("You have to send service fee as payment")
208196 let newEventId = generateEventId(i.caller, newEventIdx)
209197 if ((startHeight > height))
210198 then throw("Event start height has to be from the future")
211- else if ((0 > ticketPrice))
212- then throw("Ticket price has to be zero or positive number")
213- else {
214- let eventDuration = match durationInSecs {
215- case d: Int =>
216- if ((1 > d))
217- then throw("Event duration has to be positive number")
218- else d
219- case _ =>
220- unit
221- }
222- let eventTicketCount = match ticketCount {
223- case tc: Int =>
224- if ((1 > tc))
225- then throw("Event ticket count has to be positive number")
226- else tc
227- case _ =>
228- unit
229- }
230-[IntegerEntry(lastEventIdxKey(i.caller), newEventIdx), StringEntry(generateEventDataKey(newEventId), serializeEventData(i.caller, title, description, startHeight, ticketPrice, tags, eventDuration, picture, link, location, eventTicketCount))]
231- }
199+ else if ((1 > durationInSecs))
200+ then throw("Event duration has to be positive number")
201+ else if ((0 > ticketPrice))
202+ then throw("Ticket price has to be zero or positive number")
203+ else if ((1 > ticketCount))
204+ then throw("Ticket count has to be positive number")
205+ else [IntegerEntry(lastEventIdxKey(i.caller), newEventIdx), StringEntry(generateEventDataKey(newEventId), serializeEventData(i.caller, title, description, startHeight, durationInSecs, ticketPrice, ticketCount, tags, picture, link, location))]
232206 }
233207 }
234208 }
254228 case _ =>
255229 0
256230 }
257- let ticketCountOrUnit = eventData._11
258- if (if (isDefined(ticketCountOrUnit))
259- then (boughtTicketCount >= value(ticketCountOrUnit))
260- else false)
231+ let ticketCount = eventData._7
232+ if ((boughtTicketCount >= ticketCount))
261233 then throw("All the tickets are sold out")
262234 else {
263235 let userTicketKey = generateTicketKey(eventId, i.caller)
264236 if (isDefined(getString(userTicketKey)))
265237 then throw("You already have a ticket")
266238 else {
267- let eventTicketPrice = eventData._5
239+ let eventTicketPrice = eventData._6
268240 if ((eventTicketPrice > ticketPayment.amount))
269241 then throw(("Attached ticket payment amount is less then event ticket price " + toString(eventTicketPrice)))
270242 else [IntegerEntry(boughtTicketCountKey, (boughtTicketCount + 1)), StringEntry(userTicketKey, serializeTicketData(i.transactionId, ticketPayment.amount, unit, unit))]
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let systemAssetIdBytes = base58'7rck4P88F6QZEjJdU5uN56xCudCSAPYhoQJ4PJ9Wrnkc'
55
66 let factoryContractAddressBytes = base58'3N4v4VAHbK5das4wB5QGripYbQFJ3PaB75e'
77
88 let createEventMinimalServiceFeeAmount = 10
99
1010 let editEventMinimalServiceFeeAmount = 20
1111
1212 let keyDataSeparator = ":"
1313
1414 let valueDataSeparator = "__"
1515
1616 func unsafeGetAssetById (assetId) = match assetInfo(assetId) {
1717 case asset: Asset =>
1818 asset
1919 case _ =>
2020 throw("Specified asset does not exist")
2121 }
2222
2323
2424 func validateAssetId (sourceAssetIdOrUnit,requiredAssetId) = {
2525 let sourceAssetId = if (isDefined(sourceAssetIdOrUnit))
2626 then toBase58String(value(sourceAssetIdOrUnit))
2727 else "WAVES"
2828 if ((sourceAssetId != requiredAssetId))
2929 then false
3030 else true
3131 }
3232
3333
3434 func checkServiceFeePayment (operationTag,serviceFeePayment,requiredServiceFeeAmount) = {
3535 let systemAssetId = toBase58String(systemAssetIdBytes)
3636 if (!(validateAssetId(serviceFeePayment.assetId, systemAssetId)))
3737 then throw(((operationTag + " requires service fee payment in the system asset ") + systemAssetId))
3838 else if (if ((requiredServiceFeeAmount > serviceFeePayment.amount))
3939 then true
4040 else (serviceFeePayment.amount > requiredServiceFeeAmount))
4141 then throw((("Attached service fee payment amount is not equal to required service fee (" + toString(requiredServiceFeeAmount)) + ")"))
4242 else unit
4343 }
4444
4545
4646 func lastEventIdxKey (addr) = makeString([toString(addr), "last_event_idx"], keyDataSeparator)
4747
4848
4949 func lastEventRequestIdx (addr) = match getInteger(this, lastEventIdxKey(addr)) {
5050 case i: Int =>
5151 i
5252 case _ =>
5353 1
5454 }
5555
5656
5757 func generateNewEventIdx (addr) = (lastEventRequestIdx(addr) + 1)
5858
5959
6060 func generateEventId (addr,idx) = makeString([toString(addr), toString(idx)], keyDataSeparator)
6161
6262
6363 func generateEventDataKey (eventId) = makeString(["event", eventId, "data"], keyDataSeparator)
6464
6565
66-func serializeEventData (creatorAddress,title,description,startHeight,ticketPrice,tags,durationOrUnit,pictureOrUnit,linkOrUnit,locationOrUnit,ticketCountOrUnit) = {
67- let duration = match durationOrUnit {
68- case duration: Int =>
69- toString(duration)
70- case _ =>
71- ""
72- }
66+func serializeEventData (creatorAddress,title,description,startHeight,duration,ticketPrice,ticketCount,tags,pictureOrUnit,linkOrUnit,locationOrUnit) = {
7367 let picture = match pictureOrUnit {
7468 case picture: String =>
7569 picture
7670 case _ =>
7771 ""
7872 }
7973 let link = match linkOrUnit {
8074 case link: String =>
8175 link
8276 case _ =>
8377 ""
8478 }
8579 let location = match locationOrUnit {
8680 case location: String =>
8781 location
8882 case _ =>
8983 ""
9084 }
91- let ticketCount = match ticketCountOrUnit {
92- case ticketCount: Int =>
93- toString(ticketCount)
94- case _ =>
95- ""
96- }
97- makeString([toString(creatorAddress), title, description, toString(startHeight), toString(ticketPrice), makeString(tags, ","), duration, picture, link, location, ticketCount], valueDataSeparator)
85+ makeString([toString(creatorAddress), title, description, toString(startHeight), toString(duration), toString(ticketPrice), toString(ticketCount), makeString(tags, ","), picture, link, location], valueDataSeparator)
9886 }
9987
10088
10189 func deserializeEventData (value) = {
10290 let eventData = split(value, valueDataSeparator)
10391 let creatorAddress = addressFromString(eventData[0])
10492 let title = eventData[1]
10593 let description = eventData[2]
10694 let startHeight = parseIntValue(eventData[3])
107- let ticketPrice = parseIntValue(eventData[4])
108- let tags = split(eventData[5], ",")
109- let durationOrUnit = parseInt(eventData[6])
110- let pictureOrUnit = if ((eventData[7] == ""))
111- then unit
112- else eventData[7]
113- let linkOrUnit = if ((eventData[8] == ""))
95+ let duration = parseInt(eventData[4])
96+ let ticketPrice = parseIntValue(eventData[5])
97+ let ticketCount = parseIntValue(eventData[6])
98+ let tags = split(eventData[7], ",")
99+ let pictureOrUnit = if ((eventData[8] == ""))
114100 then unit
115101 else eventData[8]
116- let locationOrUnit = if ((eventData[9] == ""))
102+ let linkOrUnit = if ((eventData[9] == ""))
117103 then unit
118104 else eventData[9]
119- let ticketCountOrUnit = parseInt(eventData[10])
120- $Tuple11(creatorAddress, title, description, startHeight, ticketPrice, tags, durationOrUnit, pictureOrUnit, linkOrUnit, locationOrUnit, ticketCountOrUnit)
105+ let locationOrUnit = if ((eventData[10] == ""))
106+ then unit
107+ else eventData[10]
108+ $Tuple11(creatorAddress, title, description, startHeight, duration, ticketPrice, ticketCount, tags, pictureOrUnit, linkOrUnit, locationOrUnit)
121109 }
122110
123111
124112 func unsafeGetEventData (eventId) = {
125113 let eventDataKey = generateEventDataKey(eventId)
126114 let eventData = match getString(eventDataKey) {
127115 case s: String =>
128116 s
129117 case _ =>
130118 throw("Specified event not found")
131119 }
132120 deserializeEventData(eventData)
133121 }
134122
135123
136124 func generateBoughtTicketCountKey (eventId) = makeString(["event", eventId, "ticket_count"], keyDataSeparator)
137125
138126
139127 func generateTicketKey (eventId,userAddress) = makeString(["ticket", eventId, toString(userAddress)], keyDataSeparator)
140128
141129
142130 func generateTicketDataKey (ticketId) = makeString(["ticket", ticketId, "data"], valueDataSeparator)
143131
144132
145133 func serializeTicketData (buyTxId,buyPrice,swapTxId,bitographId) = makeString([toBase58String(buyTxId), toString(buyPrice), if (isDefined(swapTxId))
146134 then toBase58String(value(swapTxId))
147135 else "", if (isDefined(bitographId))
148136 then toBase58String(value(bitographId))
149137 else ""], valueDataSeparator)
150138
151139
152140 func deserializeTicketData (value) = {
153141 let ticketData = split(value, valueDataSeparator)
154142 let buyTxId = fromBase58String(ticketData[0])
155143 let buyPrice = parseIntValue(ticketData[1])
156144 let swapTxIdOrUnit = match ticketData[2] {
157145 case s: String =>
158146 fromBase58String(s)
159147 case _ =>
160148 unit
161149 }
162150 let bitographIdOrUnit = match ticketData[3] {
163151 case s: String =>
164152 fromBase58String(s)
165153 case _ =>
166154 unit
167155 }
168156 $Tuple4(buyTxId, buyPrice, swapTxIdOrUnit, bitographIdOrUnit)
169157 }
170158
171159
172160 func unsafeGetTicketData (ticketId) = {
173161 let ticketDataKey = generateTicketDataKey(ticketId)
174162 let ticketData = match getString(ticketDataKey) {
175163 case s: String =>
176164 s
177165 case _ =>
178166 throw("Specified ticket not found")
179167 }
180168 deserializeTicketData(ticketData)
181169 }
182170
183171
184172 func unsafeExtractTicketOwner (ticketId) = {
185173 let keyData = split(ticketId, keyDataSeparator)
186174 addressFromStringValue(keyData[3])
187175 }
188176
189177
190178 func isNFT (asset) = if (if ((asset.decimals == 0))
191179 then true
192180 else (asset.quantity == 1))
193181 then true
194182 else !(asset.reissuable)
195183
196184
197185 @Callable(i)
198-func createEvent (title,description,startHeight,ticketPrice,tags,durationInSecs,picture,link,location,ticketCount) = {
186+func createEvent (title,description,startHeight,durationInSecs,ticketPrice,ticketCount,tags,picture,link,location) = {
199187 let systemAsset = unsafeGetAssetById(systemAssetIdBytes)
200188 if ((1 > size(i.payments)))
201189 then throw("You have to send service fee as payment")
202190 else {
203191 let serviceFeePayment = i.payments[1]
204192 if (isDefined(checkServiceFeePayment("Create event", serviceFeePayment, createEventMinimalServiceFeeAmount)))
205193 then throw("Reached unreachable state")
206194 else {
207195 let newEventIdx = generateNewEventIdx(i.caller)
208196 let newEventId = generateEventId(i.caller, newEventIdx)
209197 if ((startHeight > height))
210198 then throw("Event start height has to be from the future")
211- else if ((0 > ticketPrice))
212- then throw("Ticket price has to be zero or positive number")
213- else {
214- let eventDuration = match durationInSecs {
215- case d: Int =>
216- if ((1 > d))
217- then throw("Event duration has to be positive number")
218- else d
219- case _ =>
220- unit
221- }
222- let eventTicketCount = match ticketCount {
223- case tc: Int =>
224- if ((1 > tc))
225- then throw("Event ticket count has to be positive number")
226- else tc
227- case _ =>
228- unit
229- }
230-[IntegerEntry(lastEventIdxKey(i.caller), newEventIdx), StringEntry(generateEventDataKey(newEventId), serializeEventData(i.caller, title, description, startHeight, ticketPrice, tags, eventDuration, picture, link, location, eventTicketCount))]
231- }
199+ else if ((1 > durationInSecs))
200+ then throw("Event duration has to be positive number")
201+ else if ((0 > ticketPrice))
202+ then throw("Ticket price has to be zero or positive number")
203+ else if ((1 > ticketCount))
204+ then throw("Ticket count has to be positive number")
205+ else [IntegerEntry(lastEventIdxKey(i.caller), newEventIdx), StringEntry(generateEventDataKey(newEventId), serializeEventData(i.caller, title, description, startHeight, durationInSecs, ticketPrice, ticketCount, tags, picture, link, location))]
232206 }
233207 }
234208 }
235209
236210
237211
238212 @Callable(i)
239213 func buyTicket (eventId) = {
240214 let systemAsset = unsafeGetAssetById(systemAssetIdBytes)
241215 if ((1 > size(i.payments)))
242216 then throw("You have to attach the ticket payment")
243217 else {
244218 let ticketPayment = i.payments[0]
245219 let systemAssetId = toBase58String(systemAsset.id)
246220 if (!(validateAssetId(ticketPayment.assetId, systemAssetId)))
247221 then throw(("Ticket payment has to be in system asset " + systemAssetId))
248222 else {
249223 let eventData = unsafeGetEventData(eventId)
250224 let boughtTicketCountKey = generateBoughtTicketCountKey(eventId)
251225 let boughtTicketCount = match getInteger(boughtTicketCountKey) {
252226 case count: Int =>
253227 count
254228 case _ =>
255229 0
256230 }
257- let ticketCountOrUnit = eventData._11
258- if (if (isDefined(ticketCountOrUnit))
259- then (boughtTicketCount >= value(ticketCountOrUnit))
260- else false)
231+ let ticketCount = eventData._7
232+ if ((boughtTicketCount >= ticketCount))
261233 then throw("All the tickets are sold out")
262234 else {
263235 let userTicketKey = generateTicketKey(eventId, i.caller)
264236 if (isDefined(getString(userTicketKey)))
265237 then throw("You already have a ticket")
266238 else {
267- let eventTicketPrice = eventData._5
239+ let eventTicketPrice = eventData._6
268240 if ((eventTicketPrice > ticketPayment.amount))
269241 then throw(("Attached ticket payment amount is less then event ticket price " + toString(eventTicketPrice)))
270242 else [IntegerEntry(boughtTicketCountKey, (boughtTicketCount + 1)), StringEntry(userTicketKey, serializeTicketData(i.transactionId, ticketPayment.amount, unit, unit))]
271243 }
272244 }
273245 }
274246 }
275247 }
276248
277249
278250
279251 @Callable(i)
280252 func giveBitographForTicket (ticketId,bitographName,bitographMetadata) = if (!(isDefined(getString(ticketId))))
281253 then throw("Ticket does not exists")
282254 else {
283255 let ticketData = unsafeGetTicketData(ticketId)
284256 let bitographIdOrUnit = ticketData._4
285257 if (isDefined(bitographIdOrUnit))
286258 then throw((("There is bitograph " + toBase58String(value(bitographIdOrUnit))) + " that has already been given for the ticket"))
287259 else {
288260 let ticketOwner = unsafeExtractTicketOwner(ticketId)
289261 let createBitographResult = invoke(Address(factoryContractAddressBytes), "createBitograph", [bitographName, bitographMetadata], nil)
290262 if ((createBitographResult == createBitographResult))
291263 then {
292264 let bitographAssetId = match createBitographResult {
293265 case r: ByteVector =>
294266 r
295267 case _ =>
296268 throw("Error occurred while creating a bitograph")
297269 }
298270 [ScriptTransfer(ticketOwner, 1, bitographAssetId), StringEntry(ticketId, serializeTicketData(ticketData._1, ticketData._2, i.transactionId, bitographAssetId))]
299271 }
300272 else throw("Strict value is not equal to itself.")
301273 }
302274 }
303275
304276
305277 @Verifier(tx)
306278 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
307279

github/deemru/w8io/3ef1775 
54.23 ms