tx · 2PJZQNcRpjQerAmFKMPkhXprr1zc78Ep5wzkW6sHdU7j

3PGvfeMaCezvCWyz4RGeoQpmwzrWwv7NLYU:  -0.01600000 Waves

2023.09.15 23:57 [3822774] smart account 3PGvfeMaCezvCWyz4RGeoQpmwzrWwv7NLYU > SELF 0.00000000 Waves

{ "type": 13, "id": "2PJZQNcRpjQerAmFKMPkhXprr1zc78Ep5wzkW6sHdU7j", "fee": 1600000, "feeAssetId": null, "timestamp": 1694811447358, "version": 2, "chainId": 87, "sender": "3PGvfeMaCezvCWyz4RGeoQpmwzrWwv7NLYU", "senderPublicKey": "Un4PmpFshNAiDG32eEAyePX7JHvuxkwyMAYYpP4cFtg", "proofs": [ "3VdyZieVPCDmCmEr5GMoWRhLznvB3Jr78Z1e4xt1YjJtUtobGD7AYLSesV2Bi84K6hpBRPhQuiKkrg3eweY6yN9E" ], "script": "base64:AAIFAAAAAAAAABwIAhIDCgEIEgQKAggIEgMKAQESAwoBCBIDCgEIAAAAHgEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5CQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACBQAAAAR0aGlzBQAAAANrZXkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAEnN0YXRpY0tleV9leHRyYUZlZQAAAAACAAAAD3N0YXRpY19leHRyYUZlZQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAgAAABRzdGF0aWNfZmVlQWdncmVnYXRvcgEAAAAUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAAAAAAgAAABFzdGF0aWNfZWdnQXNzZXRJZAEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAACAAAAGXN0YXRpY19yZWZDb250cmFjdEFkZHJlc3MBAAAAHnN0YXRpY0tleV90dXJ0bGVSZWJpcnRoQWRkcmVzcwAAAAACAAAAG3N0YXRpY190dXJ0bGVSZWJpcnRoQWRkcmVzcwEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAQAAABBnZXRGZWVBZ2dyZWdhdG9yAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFHN0YXRpY0tleV9lZ2dBc3NldElkAAAAAAEAAAAOZ2V0QnVybkFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAEnN0YXRpY19idXJuQWRkcmVzcwEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAABAAAAF2dldFR1cnRsZVJlYmlydGhBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAec3RhdGljS2V5X3R1cnRsZVJlYmlydGhBZGRyZXNzAAAAAAEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAGkJEQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAAAAAlmZWVBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJZmVlQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAB1CRENBUDogUGxlYXNlIGF0dGFjaCBleGFjdGx5IAkAAaQAAAABBQAAAAlmZWVBbW91bnQCAAAAEyBhbW91bnQgb2Ygd2F2ZWxldHMJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAABQAAAAlmZWVBbW91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c3RhdGljX29yYWNsZUFkZHJlc3MFAAAABm9yYWNsZQUAAAADbmlsAAAAAWkBAAAAD2lzc3VlRnJlZVR1cnRsZQAAAAIAAAAHYWRkcmVzcwAAAAd0eElkU3RyAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyCQEAAAAXZ2V0VHVydGxlUmViaXJ0aEFkZHJlc3MAAAAACQAAAgAAAAECAAAAEklTRkQ6IHJlYmlydGggb25seQQAAAAEdHhJZAkAAlkAAAABBQAAAAd0eElkU3RyBAAAABFoYXRjaGluZ1N0YXR1c0tleQkBAAAAFGdldEhhdGNoaW5nU3RhdHVzS2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAABB0b3RhbER1Y2tzQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAADXR1cnRsZV9hbW91bnQEAAAACmVnZ3NOZWVkZWQJAQAAABVjb3VudEVnZ3NOZWVkZWRBbW91bnQAAAABBQAAABB0b3RhbER1Y2tzQW1vdW50BAAAAAskdDA1MTg4NTMzMAkBAAAADWdldFJhbmRvbU5hbWUAAAACBQAAAAR0eElkCQAAZAAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+kAAAABBQAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgUAAAAHdHhJZFN0cgIAAAALIG5vdCBmb3VuZCAJAAJYAAAAAQUAAAAEdHhJZAAAAAAAAAAAAQQAAAAHVFJUTEdlbggFAAAACyR0MDUxODg1MzMwAAAAAl8xBAAAAAdmYXJtR2VuCAUAAAALJHQwNTE4ODUzMzAAAAACXzIEAAAAC2Rlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAOeyJnZW5vdHlwZSI6ICIFAAAAB1RSVExHZW4CAAAAGSIsICJjcm9zc2JyZWVkaW5nIjogdHJ1ZX0EAAAABWFzc2V0CQAEQwAAAAcFAAAAB1RSVExHZW4FAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAABAAAAAAAAAAAABwUAAAAEdW5pdAUAAAAGaGVpZ2h0BAAAAAdhc3NldElkCQAEOAAAAAEFAAAABWFzc2V0BAAAAAZhbW91bnQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAPZ2V0VFJUTFN0YXRzS2V5AAAAAQUAAAAHVFJUTEdlbgAAAAAAAAAAAQQAAAAJZHVja0lkS2V5CQEAAAAMZ2V0VFJUTElkS2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADXR1cnRsZV9hbW91bnQJAABkAAAAAgUAAAAQdG90YWxEdWNrc0Ftb3VudAAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARdHVydGxlX2xhc3RfcHJpY2UJAABpAAAAAgUAAAAKZWdnc05lZWRlZAAAAAAAABbjYAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFoYXRjaGluZ1N0YXR1c0tleQUAAAAQSGF0Y2hpbmdGaW5pc2hlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlkdWNrSWRLZXkJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAACWR1Y2tJZEtleQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2dldFRSVExTdGF0c0tleQAAAAEFAAAAB1RSVExHZW4FAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5AAAAAAAAAAABCQAETAAAAAIFAAAABWFzc2V0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAHYWRkcmVzcwAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQACWAAAAAEFAAAAB2Fzc2V0SWQAAAABaQEAAAALc2V0RGlzY291bnQAAAABAAAAA3ZhbAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAAAphZG1pbl9vbmx5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABNkaXNjb3VudENvZWZmaWNpZW50BQAAAAN2YWwFAAAAA25pbAAAAAFpAQAAABFzdGFydFRSVExIYXRjaGluZwAAAAEAAAAOcmVmZXJlckFkZHJlc3MEAAAAC2ZlZVZhbGlkYXRlCQEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQAAAAAAAAIFAAAAC2ZlZVZhbGlkYXRlBQAAAAtmZWVWYWxpZGF0ZQMJAABmAAAAAgkBAAAACGlzTG9ja2VkAAAAAAAAAAAAAAAAAAkAAAIAAAABAgAAACVFR0cgb3BlcmF0aW9ucyBhcmUgdGVtcG9yYXJpbHkgbG9ja2VkBAAAABF0b3RhbFR1cnRsZUFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAA10dXJ0bGVfYW1vdW50BAAAAAplZ2dzTmVlZGVkCQEAAAAVY291bnRFZ2dzTmVlZGVkQW1vdW50AAAAAQUAAAARdG90YWxUdXJ0bGVBbW91bnQEAAAAB3Jlc3VsdHMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFGdldEhhdGNoaW5nU3RhdHVzS2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAD0hhdGNoaW5nU3RhcnRlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAABkAAAAAgUAAAAGaGVpZ2h0BQAAABBkZWxheUZvckhhdGNoaW5nCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA10dXJ0bGVfYW1vdW50CQAAZAAAAAIFAAAAEXRvdGFsVHVydGxlQW1vdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABF0dXJ0bGVfbGFzdF9wcmljZQkAAGkAAAACBQAAAAplZ2dzTmVlZGVkAAAAAAAAFuNgBQAAAANuaWwEAAAACWxlZnRUb1BheQUAAAAKZWdnc05lZWRlZAQAAAAHcGF5bWVudAMJAQAAAAIhPQAAAAIFAAAACWxlZnRUb1BheQAAAAAAAAAAAAQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkCQEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAACAAAAAQkAASwAAAACAgAAAEBUSTogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAABmAAAAAgUAAAAJbGVmdFRvUGF5CAUAAAAMZmlyc3RQYXltZW50AAAABmFtb3VudAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAEdUSTogVG8gYnV5IGEgYmVhY2ggeW91IGN1cnJlbnRseSBuZWVkIHRoZSBmb2xsb3dpbmcgYW1vdW50IG9mIEVHR2xldHM6IAkAAaQAAAABBQAAAAlsZWZ0VG9QYXkCAAAAASAJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABVyZWZlcmVyUmV3YXJkRm9yYmVhY2gJAABrAAAAAwUAAAAJbGVmdFRvUGF5AAAAAAAAAAAFAAAAAAAAAABkBAAAAAdyZWZDYWxsCQEAAAAJYXNCb29sZWFuAAAAAQkAA/wAAAAECQEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAIAAAAKcmVmUGF5bWVudAkABEwAAAACBQAAAA5yZWZlcmVyQWRkcmVzcwUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQEAAAANZ2V0RWdnQXNzZXRJZAAAAAAFAAAAFXJlZmVyZXJSZXdhcmRGb3JiZWFjaAUAAAADbmlsAwkAAAAAAAACBQAAAAdyZWZDYWxsBQAAAAdyZWZDYWxsBAAAAAZ0b0J1cm4DBQAAAAdyZWZDYWxsCQAAZQAAAAIFAAAACWxlZnRUb1BheQUAAAAVcmVmZXJlclJld2FyZEZvcmJlYWNoBQAAAAlsZWZ0VG9QYXkEAAAACGJ1cm5DYWxsCQAD/AAAAAQJAQAAAA5nZXRCdXJuQWRkcmVzcwAAAAACAAAAFGJ1cm5BdHRhY2hlZFBheW1lbnRzBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAUAAAAGdG9CdXJuBQAAAANuaWwDCQAAAAAAAAIFAAAACGJ1cm5DYWxsBQAAAAhidXJuQ2FsbAUAAAAJbGVmdFRvUGF5CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAAAAAAAAAADCQAAAAAAAAIFAAAAB3BheW1lbnQFAAAAB3BheW1lbnQEAAAABnJlZnVuZAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABlAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50BQAAAAlsZWZ0VG9QYXkJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAUAAAADbmlsBQAAAANuaWwJAAROAAAAAgkABE4AAAACBQAAAAdyZXN1bHRzBQAAAAZyZWZ1bmQFAAAAC2ZlZVZhbGlkYXRlCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAASZmluaXNoVFJUTEhhdGNoaW5nAAAAAQAAAAd0eElkU3RyBAAAAAtmZWVWYWxpZGF0ZQkBAAAAFmNoZWNrQWRkaXRpb25hbFBheW1lbnQAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkAAAAAAAACBQAAAAtmZWVWYWxpZGF0ZQUAAAALZmVlVmFsaWRhdGUEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAARaGF0Y2hpbmdTdGF0dXNLZXkJAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAAlUUlRMSWRLZXkJAQAAAAxnZXRUUlRMSWRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAQaGF0Y2hpbmdUeFN0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAARaGF0Y2hpbmdTdGF0dXNLZXkEAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA9maW5pc2hIZWlnaHRLZXkDCQAAAAAAAAIFAAAAEGhhdGNoaW5nVHhTdGF0dXMFAAAAEEhhdGNoaW5nRmluaXNoZWQEAAAABlRSVExJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAADGdldFRSVExJZEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkCQAAAgAAAAEJAAEsAAAAAgIAAABCVGhlIFR1cnRsZSB3YXMgaGF0Y2hlZCBhbmQgY2xhaW1lZCBhbHJlYWR5LCBoZXJlIGlzIHRoZSBmb2xvd2luZzogBQAAAAZUUlRMSWQDCQAAZgAAAAIFAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB1IYXRjaGluZyBpcyBub3QgZmluaXNoZWQgeWV0IAkAAaQAAAABCQAAZQAAAAIFAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQCAAAAJyBibG9ja3MgcmVtYWluaW5nLCBpdCB3aWxsIHRha2UgYXJvdW5kIAkAAaQAAAABCQAAZQAAAAIFAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQCAAAACCBtaW51dGVzBAAAAAskdDA5NDI3OTQ5MwkBAAAADWdldFJhbmRvbU5hbWUAAAACBQAAAAR0eElkBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAQAAAAHVFJUTEdlbggFAAAACyR0MDk0Mjc5NDkzAAAAAl8xBAAAAAdmYXJtR2VuCAUAAAALJHQwOTQyNzk0OTMAAAACXzIEAAAAC2Rlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAOeyJnZW5vdHlwZSI6ICIFAAAAB1RSVExHZW4CAAAAGSIsICJjcm9zc2JyZWVkaW5nIjogdHJ1ZX0EAAAABWFzc2V0CQAEQwAAAAcFAAAAB1RSVExHZW4FAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAABAAAAAAAAAAAABwUAAAAEdW5pdAUAAAAUaGF0Y2hpbmdGaW5pc2hIZWlnaHQEAAAAB2Fzc2V0SWQJAAQ4AAAAAQUAAAAFYXNzZXQEAAAABmFtb3VudAkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA9nZXRUUlRMU3RhdHNLZXkAAAABBQAAAAdUUlRMR2VuAAAAAAAAAAABCQAETgAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARaGF0Y2hpbmdTdGF0dXNLZXkFAAAAEEhhdGNoaW5nRmluaXNoZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJVFJUTElkS2V5CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAAlgAAAABBQAAAAdhc3NldElkBQAAAAlUUlRMSWRLZXkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9nZXRUUlRMU3RhdHNLZXkAAAABBQAAAAdUUlRMR2VuBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZzdGF0c18FAAAAB2Zhcm1HZW4CAAAACV9xdWFudGl0eQkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZzdGF0c18FAAAAB2Zhcm1HZW4CAAAACV9xdWFudGl0eQAAAAAAAAAAAQkABEwAAAACBQAAAAVhc3NldAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAUAAAALZmVlVmFsaWRhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXmIBA7q", "height": 3822774, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2miuenrLRNSYyqVDpPsD8NP2w7jdZvfpDHtnvkWXBZop Next: Hk7bPr43hVs46BbqTbvrthsr5aXixpHPrphow61Dsc1L Diff:
OldNewDifferences
2727 func staticKey_refContractAddress () = "static_refContractAddress"
2828
2929
30+func staticKey_turtleRebirthAddress () = "static_turtleRebirthAddress"
31+
32+
3033 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
3134
3235
4043
4144
4245 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
46+
47+
48+func getTurtleRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_turtleRebirthAddress())))
4349
4450
4551 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
150156
151157
152158 @Callable(i)
159+func issueFreeTurtle (address,txIdStr) = if ((i.caller != getTurtleRebirthAddress()))
160+ then throw("ISFD: rebirth only")
161+ else {
162+ let txId = fromBase58String(txIdStr)
163+ let hatchingStatusKey = getHatchingStatusKey(address, txId)
164+ let finishHeightKey = getHatchingFinishHeightKey(address, txId)
165+ let totalDucksAmount = tryGetInteger("turtle_amount")
166+ let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
167+ let $t051885330 = getRandomName(txId, (valueOrErrorMessage(transactionHeightById(txId), ((txIdStr + " not found ") + toBase58String(txId))) + 1))
168+ let TRTLGen = $t051885330._1
169+ let farmGen = $t051885330._2
170+ let description = (("{\"genotype\": \"" + TRTLGen) + "\", \"crossbreeding\": true}")
171+ let asset = Issue(TRTLGen, description, 1, 0, false, unit, height)
172+ let assetId = calculateAssetId(asset)
173+ let amount = (tryGetInteger(getTRTLStatsKey(TRTLGen)) + 1)
174+ let duckIdKey = getTRTLIdKey(address, txId)
175+ $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("turtle_amount", (totalDucksAmount + 1)), IntegerEntry("turtle_last_price", (eggsNeeded / 1500000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getTRTLStatsKey(TRTLGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
176+ }
177+
178+
179+
180+@Callable(i)
153181 func setDiscount (val) = if ((i.caller != this))
154182 then throw("admin_only")
155183 else [IntegerEntry("discountCoefficient", val)]
224252 else if ((hatchingFinishHeight > height))
225253 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
226254 else {
227- let $t076217687 = getRandomName(txId, hatchingFinishHeight)
228- let TRTLGen = $t076217687._1
229- let farmGen = $t076217687._2
255+ let $t094279493 = getRandomName(txId, hatchingFinishHeight)
256+ let TRTLGen = $t094279493._1
257+ let farmGen = $t094279493._2
230258 let description = (("{\"genotype\": \"" + TRTLGen) + "\", \"crossbreeding\": true}")
231259 let asset = Issue(TRTLGen, description, 1, 0, false, unit, hatchingFinishHeight)
232260 let assetId = calculateAssetId(asset)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetString (key) = tryGetStringExternal(this, key)
1313
1414
1515 func staticKey_oracleAddress () = "static_oracleAddress"
1616
1717
1818 func staticKey_extraFee () = "static_extraFee"
1919
2020
2121 func staticKey_feeAggregator () = "static_feeAggregator"
2222
2323
2424 func staticKey_eggAssetId () = "static_eggAssetId"
2525
2626
2727 func staticKey_refContractAddress () = "static_refContractAddress"
2828
2929
30+func staticKey_turtleRebirthAddress () = "static_turtleRebirthAddress"
31+
32+
3033 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
3134
3235
3336 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
3437
3538
3639 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
3740
3841
3942 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress")))
4043
4144
4245 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
46+
47+
48+func getTurtleRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_turtleRebirthAddress())))
4349
4450
4551 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
4652 then throw("BDCAP: Please attach waves")
4753 else {
4854 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
4955 if ((payment.amount != feeAmount))
5056 then throw((("BDCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
5157 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
5258 }
5359
5460
5561 let delayForHatching = 2
5662
5763 let typesAmount = 4
5864
5965 let HatchingStarted = "HATCHING_STARTED"
6066
6167 let HatchingFinished = "HATCHING_FINISHED"
6268
6369 func isLocked () = {
6470 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
6571 match getInteger(masterAddress, "egglock") {
6672 case b: Int =>
6773 b
6874 case _ =>
6975 0
7076 }
7177 }
7278
7379
7480 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
7581
7682
7783 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
7884
7985
8086 func getTRTLIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
8187
8288
8389 func getTRTLStatsKey (genString) = (("stats_" + genString) + "_amount")
8490
8591
8692 func tryGetInteger (key) = {
8793 let val = match getInteger(this, key) {
8894 case b: Int =>
8995 b
9096 case _ =>
9197 0
9298 }
9399 val
94100 }
95101
96102
97103 let discountCoefficient = tryGetInteger("discountCoefficient")
98104
99105 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
100106 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
101107 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
102108 (toInt(randomHash, (offset * 8)) % variants)
103109 }
104110
105111
106112 func getRandomName (txId,hatchingFinishHeight) = {
107113 let typeRandom = getRandomNumber(5, txId, hatchingFinishHeight, 0)
108114 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
109115 let color = if ((colorRandom == 0))
110116 then "R"
111117 else if ((colorRandom == 1))
112118 then "D"
113119 else if ((colorRandom == 2))
114120 then "S"
115121 else "G"
116122 if ((typeRandom == 0))
117123 then $Tuple2(("TRTL-AAAAAAAA-G" + color), "8A-G")
118124 else if ((typeRandom == 1))
119125 then $Tuple2(("TRTL-BBBBBBBB-G" + color), "8B-G")
120126 else if ((typeRandom == 2))
121127 then $Tuple2(("TRTL-CCCCCCCC-G" + color), "8C-G")
122128 else if ((typeRandom == 3))
123129 then $Tuple2(("TRTL-DDDDDDDD-G" + color), "8D-G")
124130 else $Tuple2(("TRTL-EEEEEEEE-G" + color), "8E-G")
125131 }
126132
127133
128134 func countEggsNeededAmount (totalTRTLsAmount) = {
129135 let n = totalTRTLsAmount
130136 let g = discountCoefficient
131137 let t = typesAmount
132138 let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN)
133139 (price * 1500000)
134140 }
135141
136142
137143 func asBoolean (value) = match value {
138144 case boolean: Boolean =>
139145 boolean
140146 case _ =>
141147 throw("TI: wrong type, expected: Boolean")
142148 }
143149
144150
145151 @Callable(i)
146152 func configureOracle (oracle) = if ((i.caller != this))
147153 then throw("ICU: admin only")
148154 else [StringEntry("static_oracleAddress", oracle)]
149155
150156
151157
152158 @Callable(i)
159+func issueFreeTurtle (address,txIdStr) = if ((i.caller != getTurtleRebirthAddress()))
160+ then throw("ISFD: rebirth only")
161+ else {
162+ let txId = fromBase58String(txIdStr)
163+ let hatchingStatusKey = getHatchingStatusKey(address, txId)
164+ let finishHeightKey = getHatchingFinishHeightKey(address, txId)
165+ let totalDucksAmount = tryGetInteger("turtle_amount")
166+ let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
167+ let $t051885330 = getRandomName(txId, (valueOrErrorMessage(transactionHeightById(txId), ((txIdStr + " not found ") + toBase58String(txId))) + 1))
168+ let TRTLGen = $t051885330._1
169+ let farmGen = $t051885330._2
170+ let description = (("{\"genotype\": \"" + TRTLGen) + "\", \"crossbreeding\": true}")
171+ let asset = Issue(TRTLGen, description, 1, 0, false, unit, height)
172+ let assetId = calculateAssetId(asset)
173+ let amount = (tryGetInteger(getTRTLStatsKey(TRTLGen)) + 1)
174+ let duckIdKey = getTRTLIdKey(address, txId)
175+ $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("turtle_amount", (totalDucksAmount + 1)), IntegerEntry("turtle_last_price", (eggsNeeded / 1500000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getTRTLStatsKey(TRTLGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
176+ }
177+
178+
179+
180+@Callable(i)
153181 func setDiscount (val) = if ((i.caller != this))
154182 then throw("admin_only")
155183 else [IntegerEntry("discountCoefficient", val)]
156184
157185
158186
159187 @Callable(i)
160188 func startTRTLHatching (refererAddress) = {
161189 let feeValidate = checkAdditionalPayment(i.payments[0])
162190 if ((feeValidate == feeValidate))
163191 then if ((isLocked() > 0))
164192 then throw("EGG operations are temporarily locked")
165193 else {
166194 let totalTurtleAmount = tryGetInteger("turtle_amount")
167195 let eggsNeeded = countEggsNeededAmount(totalTurtleAmount)
168196 let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("turtle_amount", (totalTurtleAmount + 1)), IntegerEntry("turtle_last_price", (eggsNeeded / 1500000))]
169197 let leftToPay = eggsNeeded
170198 let payment = if ((leftToPay != 0))
171199 then {
172200 let firstPayment = value(i.payments[1])
173201 if ((firstPayment.assetId != getEggAssetId()))
174202 then throw(("TI: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
175203 else if ((leftToPay > firstPayment.amount))
176204 then throw(((("TI: To buy a beach you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
177205 else {
178206 let refererRewardForbeach = fraction(leftToPay, 5, 100)
179207 let refCall = asBoolean(invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForbeach)]))
180208 if ((refCall == refCall))
181209 then {
182210 let toBurn = if (refCall)
183211 then (leftToPay - refererRewardForbeach)
184212 else leftToPay
185213 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
186214 if ((burnCall == burnCall))
187215 then leftToPay
188216 else throw("Strict value is not equal to itself.")
189217 }
190218 else throw("Strict value is not equal to itself.")
191219 }
192220 }
193221 else 0
194222 if ((payment == payment))
195223 then {
196224 let refund = if ((size(i.payments) == 2))
197225 then [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getEggAssetId())]
198226 else nil
199227 ((results ++ refund) ++ feeValidate)
200228 }
201229 else throw("Strict value is not equal to itself.")
202230 }
203231 else throw("Strict value is not equal to itself.")
204232 }
205233
206234
207235
208236 @Callable(i)
209237 func finishTRTLHatching (txIdStr) = {
210238 let feeValidate = checkAdditionalPayment(i.payments[0])
211239 if ((feeValidate == feeValidate))
212240 then {
213241 let txId = fromBase58String(txIdStr)
214242 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
215243 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
216244 let TRTLIdKey = getTRTLIdKey(toString(i.caller), txId)
217245 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
218246 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
219247 if ((hatchingTxStatus == HatchingFinished))
220248 then {
221249 let TRTLId = getStringValue(this, getTRTLIdKey(toString(i.caller), txId))
222250 throw(("The Turtle was hatched and claimed already, here is the folowing: " + TRTLId))
223251 }
224252 else if ((hatchingFinishHeight > height))
225253 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
226254 else {
227- let $t076217687 = getRandomName(txId, hatchingFinishHeight)
228- let TRTLGen = $t076217687._1
229- let farmGen = $t076217687._2
255+ let $t094279493 = getRandomName(txId, hatchingFinishHeight)
256+ let TRTLGen = $t094279493._1
257+ let farmGen = $t094279493._2
230258 let description = (("{\"genotype\": \"" + TRTLGen) + "\", \"crossbreeding\": true}")
231259 let asset = Issue(TRTLGen, description, 1, 0, false, unit, hatchingFinishHeight)
232260 let assetId = calculateAssetId(asset)
233261 let amount = (tryGetInteger(getTRTLStatsKey(TRTLGen)) + 1)
234262 ([StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(TRTLIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), TRTLIdKey), IntegerEntry(getTRTLStatsKey(TRTLGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)] ++ feeValidate)
235263 }
236264 }
237265 else throw("Strict value is not equal to itself.")
238266 }
239267
240268
241269 @Verifier(tx)
242270 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
243271

github/deemru/w8io/3ef1775 
56.49 ms