tx · 2RBkH9xT2Y5YmeJYZZ34cK1nXESmbzveAcv5aUPoiGLY

3N3qMqr633du5htyg4qfxt5RVzu9W4zCD8V:  -0.02000000 Waves

2024.10.03 12:26 [3310487] smart account 3N3qMqr633du5htyg4qfxt5RVzu9W4zCD8V > SELF 0.00000000 Waves

{ "type": 13, "id": "2RBkH9xT2Y5YmeJYZZ34cK1nXESmbzveAcv5aUPoiGLY", "fee": 2000000, "feeAssetId": null, "timestamp": 1727947609979, "version": 2, "chainId": 84, "sender": "3N3qMqr633du5htyg4qfxt5RVzu9W4zCD8V", "senderPublicKey": "8wbJvtHgrvyXinDfQ476iTbH2YBkzG6BJTGWaKUb8EUz", "proofs": [ "4TRugh4p3Qt6hZv25g8YmVvceuVjFU8mUksNFwd68yvhf42aLWhAVqvqhuqhGJT6Fmw1f9CAtGV4NeWDmdMJfQbP" ], "script": "base64:AAIFAAAAAAAAACkIAhIDCgEIEgUKAwgIARIDCgEIEgMKAQgSBAoCCAESAwoBCBIECgIICAAAACYBAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABBvcmFjbGVBZGRyZXNzS2V5AAAAAAIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAEWJyZWVkZXJBZGRyZXNzS2V5AAAAAAIAAAAVc3RhdGljX2JyZWVkZXJBZGRyZXNzAQAAABNpbmN1YmF0b3JBZGRyZXNzS2V5AAAAAAIAAAAXc3RhdGljX2luY3ViYXRvckFkZHJlc3MBAAAADWVnZ0Fzc2V0SWRLZXkAAAAAAgAAABFzdGF0aWNfZWdnQXNzZXRJZAEAAAATd2VhcmFibGVzQWRkcmVzc0tleQAAAAACAAAAF3N0YXRpY193ZWFyYWJsZXNBZGRyZXNzAQAAABFmYXJtaW5nQWRkcmVzc0tleQAAAAACAAAAGHN0YXRpY19mYXJtaW5nQWRkcmVzc05ldwEAAAARY291cG9uc0FkZHJlc3NLZXkAAAAAAgAAABVzdGF0aWNfY291cG9uc0FkZHJlc3MBAAAAEXJlYmlydGhBZGRyZXNzS2V5AAAAAAIAAAAVc3RhdGljX3JlYmlydGhBZGRyZXNzAQAAAA5idXJuQWRkcmVzc0tleQAAAAACAAAAEnN0YXRpY19idXJuQWRkcmVzcwEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAQb3JhY2xlQWRkcmVzc0tleQAAAAABAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAARYnJlZWRlckFkZHJlc3NLZXkAAAAAAQAAABNnZXRJbmN1YmF0b3JBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAATaW5jdWJhdG9yQWRkcmVzc0tleQAAAAABAAAADWdldEVnZ0Fzc2V0SWQAAAAACQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAANZWdnQXNzZXRJZEtleQAAAAABAAAAE2dldFdlYXJhYmxlc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABN3ZWFyYWJsZXNBZGRyZXNzS2V5AAAAAAEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABFmYXJtaW5nQWRkcmVzc0tleQAAAAABAAAAEWdldENvdXBvbnNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAARY291cG9uc0FkZHJlc3NLZXkAAAAAAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAEXJlYmlydGhBZGRyZXNzS2V5AAAAAAEAAAAOZ2V0QnVybkFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAAA5idXJuQWRkcmVzc0tleQAAAAAAAAAACk1BTlRMRU5BTUUCAAAABm1hbnRsZQAAAAAKU1RBVFVTRlJFRQIAAAAERlJFRQAAAAAOU1RBVFVTT0NDVVBJRUQCAAAACE9DQ1VQSUVEAQAAAAtrZXlEdWNrTG9jawAAAAIAAAANY2FsbGVyQWRkcmVzcwAAAAZkdWNrSWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAADWNhbGxlckFkZHJlc3MCAAAABl9kdWNrXwUAAAAGZHVja0lkAgAAAAdfc3RhdHVzAQAAAAtrZXlJbnZlc3RvcgAAAAEAAAANY2FsbGVyQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAA1jYWxsZXJBZGRyZXNzAgAAAAdfYW1vdW50AQAAABNrZXlBcnRlZmFjdEludmVzdGVkAAAAAgAAAAR0eXBlAAAACmFydGVmYWN0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0ZWZhY3RfBQAAAAR0eXBlAgAAAAxfYXJ0ZWZhY3RJZF8FAAAACmFydGVmYWN0SWQCAAAACV9pbnZlc3RlZAEAAAAUa2V5T25seUFydGVmYWN0TGV2ZWwAAAABAAAACmFydGVmYWN0SWQJAAEsAAAAAgkAASwAAAACAgAAAAthcnRlZmFjdElkXwkAAlgAAAABBQAAAAphcnRlZmFjdElkAgAAAAZfbGV2ZWwBAAAAGmtleUFydGVmYWN0SWRCeUR1Y2tBbmRUeXBlAAAAAgAAAAR0eXBlAAAABmR1Y2tJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAphcnRlZmFjdF8gBQAAAAR0eXBlAgAAAAZfZHVja18JAAJYAAAAAQUAAAAGZHVja0lkAgAAAAtfYXJ0ZWZhY3RJZAEAAAAQa2V5QXJ0ZWZhY3RPd25lcgAAAAIAAAAEdHlwZQAAAAphcnRlZmFjdElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACmFy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ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtPbmx5QXJ0ZWZhY3RMZXZlbAUAAAAIbmV3TGV2ZWwFAAAAA25pbAAAAAcAAAABaQEAAAAPY29uZmlndXJlT3JhY2xlAAAAAQAAAAZvcmFjbGUDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAPV0NPOiBhZG1pbiBvbmx5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzBQAAAAZvcmFjbGUFAAAAA25pbAAAAAFpAQAAAA9pc3N1ZUZyZWVNYW50bGUAAAADAAAAB2FkZHJlc3MAAAAEdHlwZQAAAAVsZXZlbAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAACFXSUZNOiBDYW4gYmUgY2FsbGVkIG9ubHkgYnkgYWRtaW4DCQEAAAACIT0AAAACBQAAAAR0eXBlBQAAAApNQU5UTEVOQU1FCQAAAgAAAAECAAAAIldJRk06IFlvdSBjYW4gYnV5IG9ubHkgbWFudGxlcyBub3cEAAAADmlzc3VlTWFudGxlTkZUCQAEQgAAAAUCAAAADURVQ0stTUFOVExFLTACAAAAIFtBcnRlZmFjdF0gTWFudGxlIE5GVCBmb3IgSmVkdWNrAAAAAAAAAAABAAAAAAAAAAAABwQAAAALbWFudGxlTmZ0SWQJAAQ4AAAAAQUAAAAOaXNzdWVNYW50bGVORlQEAAAADGtNYW50bGVMZXZlbAkBAAAAEGtleUFydGVmYWN0TGV2ZWwAAAADBQAAAApNQU5UTEVOQU1FBQAAAAdhZGRyZXNzBQAAAAttYW50bGVOZnRJZAQAAAANa01hbnRsZUV4aXN0cwkBAAAAEWtleUFydGVmYWN0RXhpc3RzAAAAAgUAAAAKTUFOVExFTkFNRQUAAAALbWFudGxlTmZ0SWQEAAAADGtNYW50bGVPd25lcgkBAAAAEGtleUFydGVmYWN0T3duZXIAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAANa01hbnRsZVN0YXR1cwkBAAAAEWtleUFydGVmYWN0U3RhdHVzAAAAAgUAAAAKTUFOVExFTkFNRQUAAAALbWFudGxlTmZ0SWQEAAAADWtBcnRlZmFjdFR5cGUJAQAAAA9rZXlBcnRlZmFjdFR5cGUAAAABBQAAAAttYW50bGVOZnRJZAQAAAAPa01hbnRsZUludmVzdGVkCQEAAAATa2V5QXJ0ZWZhY3RJbnZlc3RlZAAAAAIFAAAACk1BTlRMRU5BTUUJAAJYAAAAAQUAAAALbWFudGxlTmZ0SWQEAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQEAAAAZa2V5QXJ0ZWZhY3RPd25lckFuZFN0YXR1cwAAAAMFAAAACk1BTlRMRU5BTUUFAAAAB2FkZHJlc3MFAAAAC21hbnRsZU5mdElkBAAAABJrT25seUFydGVmYWN0TGV2ZWwJAQAAABRrZXlPbmx5QXJ0ZWZhY3RMZXZlbAAAAAEFAAAAC21hbnRsZU5mdElkBAAAAAhpbnZlc3RlZAkAAGwAAAAGCQAAZQAAAAIFAAAABWxldmVsAAAAAAAAAAABAAAAAAAAAAABCQAAaQAAAAIAAAAAADuaygAAAAAAAAAAAAYAAAAAAAAAAAgAAAAAAAAAAAgFAAAABkhBTEZVUAkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxrTWFudGxlTGV2ZWwFAAAABWxldmVsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rTWFudGxlSW52ZXN0ZWQFAAAACGludmVzdGVkCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAA1rTWFudGxlRXhpc3RzBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAxrTWFudGxlT3duZXIFAAAAB2FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rQXJ0ZWZhY3RUeXBlBQAAAApNQU5UTEVOQU1FCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzBQAAAApTVEFUVVNGUkVFCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrT25seUFydGVmYWN0TGV2ZWwFAAAABWxldmVsBQAAAANuaWwJAAJYAAAAAQUAAAALbWFudGxlTmZ0SWQAAAABaQEAAAALYnV5QXJ0ZWZhY3QAAAABAAAABHR5cGUDCQEAAAACIT0AAAACBQAAAAR0eXBlBQAAAApNQU5UTEVOQU1FCQAAAgAAAAECAAAAIVdCQTogWW91IGNhbiBidXkgb25seSBtYW50bGVzIG5vdwQAAAALTUFOVExFUFJJQ0UAAAAAAAAPQkAEAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMAAAAAAAAAAAADCQAAAAAAAAIFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMEAAAACWxlZnRUb1BheQkAAGUAAAACCQAAaAAAAAIFAAAAC01BTlRMRVBSSUNFAAAAAAAAAABkBQAAABNhbW91bnRQYWlkQnlDb3Vwb25zBAAAAAdwYXltZW50AwkBAAAAAiE9AAAAAgUAAAAJbGVmdFRvUGF5AAAAAAAAAAAABAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAAIAAAABCQABLAAAAAICAAAAQVdCQTogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50BQAAAAlsZWZ0VG9QYXkJAAACAAAAAQkAASwAAAACAgAAAElXQkE6IFRvIGJ1eSBhIG1hbnRsZSB5b3UgY3VycmVudGx5IG5lZWQgdGhlIGZvbGxvd2luZyBhbW91bnQgb2YgRUdHbGV0czogCQABpAAAAAEFAAAACWxlZnRUb1BheQUAAAAJbGVmdFRvUGF5AAAAAAAAAAAAAwkAAAAAAAACBQAAAAdwYXltZW50BQAAAAdwYXltZW50BAAAAA5pc3N1ZU1hbnRsZU5GVAkABEIAAAAFAgAAAA1EVUNLLU1BTlRMRS0wAgAAACBbQXJ0ZWZhY3RdIE1hbnRsZSBORlQgZm9yIEplZHVjawAAAAAAAAAAAQAAAAAAAAAAAAcEAAAAC21hbnRsZU5mdElkCQAEOAAAAAEFAAAADmlzc3VlTWFudGxlTkZUBAAAAAxrTWFudGxlTGV2ZWwJAQAAABBrZXlBcnRlZmFjdExldmVsAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAC21hbnRsZU5mdElkBAAAAA1rTWFudGxlRXhpc3RzCQEAAAARa2V5QXJ0ZWZhY3RFeGlzdHMAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAAMa01hbnRsZU93bmVyCQEAAAAQa2V5QXJ0ZWZhY3RPd25lcgAAAAIFAAAACk1BTlRMRU5BTUUFAAAAC21hbnRsZU5mdElkBAAAAA1rTWFudGxlU3RhdHVzCQEAAAARa2V5QXJ0ZWZhY3RTdGF0dXMAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAANa0FydGVmYWN0VHlwZQkBAAAAD2tleUFydGVmYWN0VHlwZQAAAAEFAAAAC21hbnRsZU5mdElkBAAAAA9rTWFudGxlSW52ZXN0ZWQJAQAAABNrZXlBcnRlZmFjdEludmVzdGVkAAAAAgUAAAAKTUFOVExFTkFNRQkAAlgAAAABBQAAAAttYW50bGVOZnRJZAQAAAAXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMJAQAAABlrZXlBcnRlZmFjdE93bmVyQW5kU3RhdHVzAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAC21hbnRsZU5mdElkBAAAABJrT25seUFydGVmYWN0TGV2ZWwJAQAAABRrZXlPbmx5QXJ0ZWZhY3RMZXZlbAAAAAEFAAAAC21hbnRsZU5mdElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxrTWFudGxlTGV2ZWwAAAAAAAAAAAEJAARM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dG8gaXRzZWxmLgAAAAAAAAAAAAMJAABmAAAAAgUAAAARdXBncmFkZVBvaW50UHJpY2UJAABkAAAAAgUAAAANY291cG9uc0Ftb3VudAUAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAwV1VNQkM6IE1pbmltYWwgcGF5bWVudCBmb3IgdXBncmFkaW5nIG1hbnRsZSBpczogCQABpAAAAAEFAAAAEXVwZ3JhZGVQb2ludFByaWNlBAAAABNhbW91bnRQYWlkQnlDb3Vwb25zCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQJAQAAABFnZXRDb3Vwb25zQWRkcmVzcwAAAAACAAAACnVzZUNvdXBvbnMJAARMAAAAAgUAAAANY291cG9uc0Ftb3VudAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMDCQEAAAACIT0AAAACBQAAAA1jb3Vwb25zQW1vdW50BQAAABNhbW91bnRQYWlkQnlDb3Vwb25zCQAAAgAAAAECAAAASFdVTUJDOiBOb3QgZW5vdWdoIGNvdXBvbnMhIFBsZWFzZSBtYWtlIHN1cmUgdG8gcGljayBsb3dlciBjb3Vwb24gYW1vdW50IQkBAAAAEXVwZ3JhZGVNYW50bGVGdW5jAAAAAwUAAAABaQUAAAAKYXJ0ZWZhY3RJZAkAAGQAAAACBQAAAA1jb3Vwb25zQW1vdW50BQAAAAZhbW91bnQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADXB1dE9uQXJ0ZWZhY3QAAAABAAAACmFydGVmYWN0SWQEAAAADGZpcnN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAARYXR0YWNoZWRBc3NldEluZm8JAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAAZV1BPQTogTkZUIGlzIG5vdCBhdHRhY2hlZAMDCQEAAAACIT0AAAACCAUAAAARYXR0YWNoZWRBc3NldEluZm8AAAAGaXNzdWVyCQEAAAATZ2V0SW5jdWJhdG9yQWRkcmVzcwAAAAAJAQAAAAIhPQAAAAIIBQAAABFhdHRhY2hlZEFzc2V0SW5mbwAAAAZpc3N1ZXIJAQAAABFnZXRCcmVlZGVyQWRkcmVzcwAAAAAHCQAAAgAAAAECAAAAP1dQT0E6IFlvdSBjYW4gYXR0YWNoIG9ubHkgRFVDS3MgaXNzdWVkIGJ5IGluY3ViYXRvciBvciBicmVlZGVyIAQAAAAKaGFzU3dlYXRlcgkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAE2dldFdlYXJhYmxlc0FkZHJlc3MAAAAACQABLAAAAAIJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAgAAAA1fQVJULVhTV0VBVEVSBAAAAA1rTWFudGxlRXhpc3RzCQEAAAARa2V5QXJ0ZWZhY3RFeGlzdHMAAAACBQAAAApNQU5UTEVOQU1FCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADGtNYW50bGVPd25lcgkBAAAAEGtleUFydGVmYWN0T3duZXIAAAACBQAAAApNQU5UTEVOQU1FCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADWtNYW50bGVTdGF0dXMJAQAAABFrZXlBcnRlZmFjdFN0YXR1cwAAAAIFAAAACk1BTlRMRU5BTUUJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMJAQAAABlrZXlBcnRlZmFjdE93bmVyQW5kU3RhdHVzAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAJa0R1Y2tMb2NrCQEAAAALa2V5RHVja0xvY2sAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQEAAAADG1hbnRsZUV4aXN0cwkBAAAAEUBleHRyTmF0aXZlKDEwNTYpAAAAAQUAAAANa01hbnRsZUV4aXN0cwQAAAALbWFudGxlT3duZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAADGtNYW50bGVPd25lcgQAAAAMbWFudGxlU3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABBQAAAA1rTWFudGxlU3RhdHVzBAAAABFrQXJ0ZWZhY3RJZEJ5VHlwZQkBAAAAGmtleUFydGVmYWN0SWRCeUR1Y2tBbmRUeXBlAAAAAgUAAAAKTUFOVExFTkFNRQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAASEAAAABBQAAAAxtYW50bGVFeGlzdHMJAAACAAAAAQIAAAArV1BPQTogTWFudGxlIHdpdGggc3VjaCBhbiBJRCBkb2VzIG5vdCBleGlzdAMJAQAAAAIhPQAAAAIFAAAAC21hbnRsZU93bmVyCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkAAAIAAAABAgAAACdXUE9BOiBZb3UncmUgbm90IGFuIG93bmVyIG9mIHRoZSBtYW50bGUDCQEAAAACIT0AAAACBQAAAAxtYW50bGVTdGF0dXMFAAAAClNUQVRVU0ZSRUUJAAACAAAAAQIAAAAdV1BPQTogTWFudGxlIGlzIGFscmVhZHkgdXNlZCEEAAAACXN0YWtlRHVjawMJAQAAAAIhPQAAAAIFAAAACmhhc1N3ZWF0ZXICAAAAAAMJAQAAAAlpc0phY2twb3QAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAAP8AAAABAkBAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAIAAAAUc3Rha2VORlRXaXRob3V0UGVyY2gFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMJAAP8AAAABAkBAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAIAAAAIc3Rha2VORlQFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMFAAAAA25pbAMJAAAAAAAAAgUAAAAJc3Rha2VEdWNrBQAAAAlzdGFrZUR1Y2sEAAAADmtQdXRPbkFydGVmYWN0CQEAAAAQa2V5UHV0T25BcnRlZmFjdAAAAAQFAAAACk1BTlRMRU5BTUUJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAphcnRlZmFjdElkCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAA5rUHV0T25BcnRlZmFjdAYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAOU1RBVFVTT0NDVVBJRUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMFAAAADlNUQVRVU09DQ1VQSUVECQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrRHVja0xvY2sGCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWtBcnRlZmFjdElkQnlUeXBlBQAAAAphcnRlZmFjdElkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAD3Rha2VPZmZBcnRlZmFjdAAAAAIAAAAGZHVja0lkAAAADGFydGVmYWN0VHlwZQQAAAAYa0FydGVmYWN0SWRCeVR5cGVBbmREdWNrCQEAAAAaa2V5QXJ0ZWZhY3RJZEJ5RHVja0FuZFR5cGUAAAACBQAAAAxhcnRlZmFjdFR5cGUJAAJZAAAAAQUAAAAGZHVja0lkBAAAAAphcnRlZmFjdElkCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABBQAAABhrQXJ0ZWZhY3RJZEJ5VHlwZUFuZER1Y2sEAAAADWtBcnRlZmFjdFR5cGUJAQAAAA9rZXlBcnRlZmFjdFR5cGUAAAABCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADmtQdXRPbkFydGVmYWN0CQEAAAAQa2V5UHV0T25BcnRlZmFjdAAAAAQFAAAADGFydGVmYWN0VHlwZQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAABmR1Y2tJZAkAAlkAAAABBQAAAAphcnRlZmFjdElkBAAAABRrUHV0T25BcnRlZmFjdFN0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTYpAAAAAQUAAAAOa1B1dE9uQXJ0ZWZhY3QEAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQEAAAAZa2V5QXJ0ZWZhY3RPd25lckFuZFN0YXR1cwAAAAMFAAAADGFydGVmYWN0VHlwZQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAJa0R1Y2tMb2NrCQEAAAALa2V5RHVja0xvY2sAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgUAAAAGZHVja0lkBAAAAA1rTWFudGxlU3RhdHVzCQEAAAARa2V5QXJ0ZWZhY3RTdGF0dXMAAAACBQAAAAxhcnRlZmFjdFR5cGUJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAMJAQAAAAIhPQAAAAIFAAAAFGtQdXRPbkFydGVmYWN0U3RhdHVzBgkAAAIAAAABAgAAACxXVE9BOiBUaGVyZSBpcyBubyBkdWNrIHdpdGggc3VjaCBwYXJhbWV0ZXJlcwQAAAAKaGFzU3dlYXRlcgkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAE2dldFdlYXJhYmxlc0FkZHJlc3MAAAAACQABLAAAAAIFAAAABmR1Y2tJZAIAAAANX0FSVC1YU1dFQVRFUgQAAAAIaXNTdGFrZWQDCQAAAAAAAAIJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18JAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyAgAAAAdfYXNzZXRfBQAAAAZkdWNrSWQCAAAACV91bnN0YWtlcgIAAAAABwYEAAAAC3Vuc3Rha2VEdWNrAwMJAQAAAAIhPQAAAAIFAAAACmhhc1N3ZWF0ZXICAAAAAAUAAAAIaXNTdGFrZWQHAwkBAAAACWlzSmFja3BvdAAAAAEJAAJZAAAAAQUAAAAGZHVja0lkCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQJAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAACAAAADnVuc3Rha2VKYWNrcG90CQAETAAAAAIFAAAABmR1Y2tJZAUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwkBAAAABWFzSW50AAAAAQkAA/wAAAAECQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAAAgAAAAp1bnN0YWtlTkZUCQAETAAAAAIFAAAABmR1Y2tJZAUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAAAAAAAAAgUAAAALdW5zdGFrZUR1Y2sFAAAAC3Vuc3Rha2VEdWNrBAAAAAtzZW5kUmV3YXJkcwMJAABmAAAAAgUAAAALdW5zdGFrZUR1Y2sAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAAAt1bnN0YWtlRHVjawkBAAAADWdldEVnZ0Fzc2V0SWQAAAAABQAAAANuaWwFAAAAA25pbAkABE4AAAACCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAADmtQdXRPbkFydGVmYWN0CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAGGtBcnRlZmFjdElkQnlUeXBlQW5kRHVjawkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAlrRHVja0xvY2sJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIAAAAAAAAAAAEJAAJZAAAAAQUAAAAGZHVja0lkBQAAAANuaWwFAAAAC3NlbmRSZXdhcmRzCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5P8UQtw==", "height": 3310487, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9zf19saXLBtEgEv5qTo5M5jdgzawJyNBuQKe3kfJGcpg Next: GobdkzFq6EEt8D1jE67WHwmAdboP3hUaocG5ZYgt4EUB Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetString (key) = match getString(this, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetStringExternal (address,key) = match getString(address, key) {
1313 case a: String =>
1414 a
1515 case _ =>
1616 ""
1717 }
1818
1919
2020 func oracleAddressKey () = "static_oracleAddress"
2121
2222
2323 func breederAddressKey () = "static_breederAddress"
2424
2525
2626 func incubatorAddressKey () = "static_incubatorAddress"
2727
2828
2929 func eggAssetIdKey () = "static_eggAssetId"
3030
3131
3232 func wearablesAddressKey () = "static_wearablesAddress"
3333
3434
3535 func farmingAddressKey () = "static_farmingAddressNew"
3636
3737
3838 func couponsAddressKey () = "static_couponsAddress"
3939
4040
4141 func rebirthAddressKey () = "static_rebirthAddress"
4242
4343
4444 func burnAddressKey () = "static_burnAddress"
4545
4646
4747 func getOracle () = Address(fromBase58String(tryGetString(oracleAddressKey())))
4848
4949
5050 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), breederAddressKey())))
5151
5252
5353 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), incubatorAddressKey())))
5454
5555
5656 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), eggAssetIdKey()))
5757
5858
5959 func getWearablesAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), wearablesAddressKey())))
6060
6161
6262 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), farmingAddressKey())))
6363
6464
6565 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), couponsAddressKey())))
6666
6767
6868 func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), rebirthAddressKey())))
6969
7070
7171 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), burnAddressKey())))
7272
7373
7474 let MANTLENAME = "mantle"
7575
7676 let STATUSFREE = "FREE"
7777
7878 let STATUSOCCUPIED = "OCCUPIED"
7979
8080 func keyDuckLock (callerAddress,duckId) = (((("address_" + callerAddress) + "_duck_") + duckId) + "_status")
8181
8282
8383 func keyInvestor (callerAddress) = (("address_" + callerAddress) + "_amount")
8484
8585
8686 func keyArtefactInvested (type,artefactId) = (((("artefact_" + type) + "_artefactId_") + artefactId) + "_invested")
8787
8888
8989 func keyOnlyArtefactLevel (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_level")
9090
9191
9292 func keyArtefactIdByDuckAndType (type,duckId) = (((("artefact_ " + type) + "_duck_") + toBase58String(duckId)) + "_artefactId")
9393
9494
9595 func keyArtefactOwner (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_owner")
9696
9797
9898 func keyArtefactOwnerAndStatus (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
9999
100100
101101 func keyArtefactStatus (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
102102
103103
104104 func keyArtefactType (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_type")
105105
106106
107107 func keyArtefactLevel (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_level")
108108
109109
110110 func keyPutOnArtefact (type,owner,duckId,artefactId) = (((((((("address_" + owner) + "_duck_") + duckId) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
111111
112112
113113 func keyArtefactExists (type,artefactId) = ((("artefact_" + type) + "_artefactId_") + toBase58String(artefactId))
114114
115115
116116 func isJackpot (assetId) = (takeRight(value(value(assetInfo(assetId)).name), 1) == "U")
117117
118118
119119 func asInt (value) = match value {
120120 case int: Int =>
121121 int
122122 case _ =>
123123 throw("WAI: wrong type, expected: Int")
124124 }
125125
126126
127127 func upgradeMantleFunc (i,artefactId,amount) = {
128128 let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
129129 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
130130 let mantleExists = getBooleanValue(kMantleExists)
131131 let mantleOwner = getStringValue(kMantleOwner)
132132 if (!(mantleExists))
133133 then throw("WUPM: Mantle with such an ID does not exist")
134134 else if ((mantleOwner != toString(i.originCaller)))
135135 then throw("WUPM: You're not an owner of the mantle")
136136 else {
137137 let kMantleInvested = keyArtefactInvested(MANTLENAME, artefactId)
138138 let mantleAlreadyInvested = getIntegerValue(kMantleInvested)
139139 let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
140140 let kOnlyArtefactLevel = keyOnlyArtefactLevel(fromBase58String(artefactId))
141141 let totalInvested = (mantleAlreadyInvested + amount)
142142 let newLevel = (((10 * pow(totalInvested, 8, 6, 1, 8, HALFUP)) + 100000000) / 100000000)
143143 if ((newLevel >= 340))
144144 then throw("DUMF: You reached the max level! Max level is 340!")
145145 else [IntegerEntry(kMantleLevel, newLevel), IntegerEntry(kMantleInvested, totalInvested), IntegerEntry(kOnlyArtefactLevel, newLevel)]
146146 }
147147 }
148148
149149
150150 @Callable(i)
151151 func configureOracle (oracle) = if ((i.caller != this))
152152 then throw("WCO: admin only")
153153 else [StringEntry("static_oracleAddress", oracle)]
154154
155155
156156
157157 @Callable(i)
158158 func issueFreeMantle (address,type,level) = if ((i.caller != this))
159159 then throw("WIFM: Can be called only by admin")
160160 else if ((type != MANTLENAME))
161161 then throw("WIFM: You can buy only mantles now")
162162 else {
163163 let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
164164 let mantleNftId = calculateAssetId(issueMantleNFT)
165165 let kMantleLevel = keyArtefactLevel(MANTLENAME, address, mantleNftId)
166166 let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
167167 let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
168168 let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
169169 let kArtefactType = keyArtefactType(mantleNftId)
170170 let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
171171 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, address, mantleNftId)
172172 let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
173173 let invested = pow((level - 1), 1, (1000000000 / 6), 8, 8, HALFUP)
174174 $Tuple2([IntegerEntry(kMantleLevel, level), IntegerEntry(kMantleInvested, invested), BooleanEntry(kMantleExists, true), StringEntry(kMantleOwner, address), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactType, MANTLENAME), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), IntegerEntry(kOnlyArtefactLevel, level)], toBase58String(mantleNftId))
175175 }
176176
177177
178178
179179 @Callable(i)
180180 func buyArtefact (type) = if ((type != MANTLENAME))
181181 then throw("WBA: You can buy only mantles now")
182182 else {
183183 let MANTLEPRICE = 1000000
184184 let amountPaidByCoupons = 0
185185 if ((amountPaidByCoupons == amountPaidByCoupons))
186186 then {
187187 let leftToPay = ((MANTLEPRICE * 100) - amountPaidByCoupons)
188188 let payment = if ((leftToPay != 0))
189189 then {
190190 let firstPayment = value(i.payments[0])
191191 if ((firstPayment.assetId != getEggAssetId()))
192192 then throw(("WBA: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
193193 else if ((firstPayment.amount != leftToPay))
194194 then throw(("WBA: To buy a mantle you currently need the following amount of EGGlets: " + toString(leftToPay)))
195195 else leftToPay
196196 }
197197 else 0
198198 if ((payment == payment))
199199 then {
200200 let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
201201 let mantleNftId = calculateAssetId(issueMantleNFT)
202202 let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.caller), mantleNftId)
203203 let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
204204 let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
205205 let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
206206 let kArtefactType = keyArtefactType(mantleNftId)
207207 let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
208208 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.caller), mantleNftId)
209209 let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
210210 [IntegerEntry(kMantleLevel, 1), IntegerEntry(kMantleInvested, MANTLEPRICE), BooleanEntry(kMantleExists, true), StringEntry(kMantleOwner, toString(i.caller)), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactType, MANTLENAME), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), IntegerEntry(kOnlyArtefactLevel, 1)]
211211 }
212212 else throw("Strict value is not equal to itself.")
213213 }
214214 else throw("Strict value is not equal to itself.")
215215 }
216216
217217
218218
219219 @Callable(i)
220220 func upgradeMantle (artefactId) = {
221221 let upgradePointPrice = 1000000
222222 let firstPayment = value(i.payments[0])
223223 let amount = firstPayment.amount
224224 if ((firstPayment.assetId != getEggAssetId()))
225225 then throw(("WUM: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
226226 else if ((upgradePointPrice > firstPayment.amount))
227227 then throw(("WUM: Minimal payment for upgrading mantle is: " + toString(upgradePointPrice)))
228228 else upgradeMantleFunc(i, artefactId, amount)
229229 }
230230
231231
232232
233233 @Callable(i)
234234 func upgradeMantleByCoupons (artefactId,couponsAmount) = {
235235 let upgradePointPrice = 1000000
236236 let amount = if ((size(i.payments) == 1))
237237 then {
238238 let firstPayment = value(i.payments[0])
239239 if ((firstPayment.assetId != getEggAssetId()))
240240 then throw(("WUMBC: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
241241 else {
242242 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), firstPayment.amount)])
243243 if ((burnCall == burnCall))
244244 then firstPayment.amount
245245 else throw("Strict value is not equal to itself.")
246246 }
247247 }
248248 else 0
249249 if ((upgradePointPrice > (couponsAmount + amount)))
250250 then throw(("WUMBC: Minimal payment for upgrading mantle is: " + toString(upgradePointPrice)))
251251 else {
252252 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [couponsAmount], nil))
253253 if ((amountPaidByCoupons == amountPaidByCoupons))
254254 then if ((couponsAmount != amountPaidByCoupons))
255255 then throw("WUMBC: Not enough coupons! Please make sure to pick lower coupon amount!")
256256 else upgradeMantleFunc(i, artefactId, (couponsAmount + amount))
257257 else throw("Strict value is not equal to itself.")
258258 }
259259 }
260260
261261
262262
263263 @Callable(i)
264264 func putOnArtefact (artefactId) = {
265265 let firstPayment = value(i.payments[0])
266266 let attachedAssetInfo = value(assetInfo(value(firstPayment.assetId)))
267267 if ((firstPayment.amount != 1))
268268 then throw("WPOA: NFT is not attached")
269269 else if (if ((attachedAssetInfo.issuer != getIncubatorAddress()))
270270 then (attachedAssetInfo.issuer != getBreederAddress())
271271 else false)
272272 then throw("WPOA: You can attach only DUCKs issued by incubator or breeder ")
273273 else {
274274 let hasSweater = tryGetStringExternal(getWearablesAddress(), (toBase58String(value(firstPayment.assetId)) + "_ART-XSWEATER"))
275275 let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
276276 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
277277 let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(artefactId))
278278 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
279279 let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(value(firstPayment.assetId)))
280280 let mantleExists = getBooleanValue(kMantleExists)
281281 let mantleOwner = getStringValue(kMantleOwner)
282282 let mantleStatus = getStringValue(kMantleStatus)
283283 let kArtefactIdByType = keyArtefactIdByDuckAndType(MANTLENAME, value(firstPayment.assetId))
284284 if (!(mantleExists))
285285 then throw("WPOA: Mantle with such an ID does not exist")
286286 else if ((mantleOwner != toString(i.originCaller)))
287287 then throw("WPOA: You're not an owner of the mantle")
288288 else if ((mantleStatus != STATUSFREE))
289289 then throw("WPOA: Mantle is already used!")
290290 else {
291291 let stakeDuck = if ((hasSweater != ""))
292292 then if (isJackpot(value(firstPayment.assetId)))
293293 then invoke(getFarmingAddress(), "stakeNFTWithoutPerch", nil, i.payments)
294294 else invoke(getFarmingAddress(), "stakeNFT", nil, i.payments)
295295 else nil
296296 if ((stakeDuck == stakeDuck))
297297 then {
298298 let kPutOnArtefact = keyPutOnArtefact(MANTLENAME, toString(i.originCaller), toBase58String(value(firstPayment.assetId)), fromBase58String(artefactId))
299299 [BooleanEntry(kPutOnArtefact, true), StringEntry(kMantleStatus, STATUSOCCUPIED), StringEntry(kArtefactOwnerAndStatus, STATUSOCCUPIED), BooleanEntry(kDuckLock, true), StringEntry(kArtefactIdByType, artefactId)]
300300 }
301301 else throw("Strict value is not equal to itself.")
302302 }
303303 }
304304 }
305305
306306
307307
308308 @Callable(i)
309309 func takeOffArtefact (duckId,artefactType) = {
310310 let kArtefactIdByTypeAndDuck = keyArtefactIdByDuckAndType(artefactType, fromBase58String(duckId))
311311 let artefactId = getStringValue(kArtefactIdByTypeAndDuck)
312312 let kArtefactType = keyArtefactType(fromBase58String(artefactId))
313313 let kPutOnArtefact = keyPutOnArtefact(artefactType, toString(i.originCaller), duckId, fromBase58String(artefactId))
314314 let kPutOnArtefactStatus = getBooleanValue(kPutOnArtefact)
315315 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(artefactType, toString(i.originCaller), fromBase58String(artefactId))
316316 let kDuckLock = keyDuckLock(toString(i.originCaller), duckId)
317317 let kMantleStatus = keyArtefactStatus(artefactType, fromBase58String(artefactId))
318318 if ((kPutOnArtefactStatus != true))
319319 then throw("WTOA: There is no duck with such parameteres")
320320 else {
321321 let hasSweater = tryGetStringExternal(getWearablesAddress(), (duckId + "_ART-XSWEATER"))
322322 let isStaked = if ((tryGetStringExternal(getFarmingAddress(), (((("address_" + toString(i.originCaller)) + "_asset_") + duckId) + "_unstaker")) == ""))
323323 then false
324324 else true
325325 let unstakeDuck = if (if ((hasSweater != ""))
326326 then isStaked
327327 else false)
328328 then if (isJackpot(fromBase58String(duckId)))
329329 then asInt(invoke(getFarmingAddress(), "unstakeJackpot", [duckId], i.payments))
330330 else asInt(invoke(getFarmingAddress(), "unstakeNFT", [duckId], i.payments))
331331 else 0
332332 if ((unstakeDuck == unstakeDuck))
333333 then {
334334 let sendRewards = if ((unstakeDuck > 0))
335335 then [ScriptTransfer(i.originCaller, unstakeDuck, getEggAssetId())]
336336 else nil
337337 ([DeleteEntry(kPutOnArtefact), DeleteEntry(kArtefactIdByTypeAndDuck), DeleteEntry(kDuckLock), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), ScriptTransfer(i.originCaller, 1, fromBase58String(duckId))] ++ sendRewards)
338338 }
339339 else throw("Strict value is not equal to itself.")
340340 }
341341 }
342342
343343
344344 @Verifier(tx)
345345 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
346346

github/deemru/w8io/c3f4982 
36.22 ms