tx · 47VosRWBtx7rJCSR7oYY4PuYTumHN8N6ZiiZsa7WZPuJ

3PR87TwfWio6HVUScSaHGMnFYkGyaVdFeqT:  -0.02000000 Waves

2024.01.27 20:16 [4015978] smart account 3PR87TwfWio6HVUScSaHGMnFYkGyaVdFeqT > SELF 0.00000000 Waves

{ "type": 13, "id": "47VosRWBtx7rJCSR7oYY4PuYTumHN8N6ZiiZsa7WZPuJ", "fee": 2000000, "feeAssetId": null, "timestamp": 1706375861207, "version": 2, "chainId": 87, "sender": "3PR87TwfWio6HVUScSaHGMnFYkGyaVdFeqT", "senderPublicKey": "DvzM1HgWkv7KTs8nozoqi2VnCgL56k1kFNgpTCYNqt9S", "proofs": [ "36wfopP5JmPruYfX55LRS4gZr39VMnS351HQ91fcMvjgF5BCXXyWCqdKf85FUissmDq6cfUnZ5nUFx2MZeLSEY7M" ], "script": "base64:AAIFAAAAAAAAACkIAhIDCgEIEgUKAwgIARIDCgEIEgMKAQgSBAoCCAESAwoBCBIECgIICAAAACYBAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABBvcmFjbGVBZGRyZXNzS2V5AAAAAAIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAEWJyZWVkZXJBZGRyZXNzS2V5AAAAAAIAAAAVc3RhdGljX2JyZWVkZXJBZGRyZXNzAQAAABNpbmN1YmF0b3JBZGRyZXNzS2V5AAAAAAIAAAAXc3RhdGljX2luY3ViYXRvckFkZHJlc3MBAAAADWVnZ0Fzc2V0SWRLZXkAAAAAAgAAABFzdGF0aWNfZWdnQXNzZXRJZAEAAAATd2VhcmFibGVzQWRkcmVzc0tleQAAAAACAAAAF3N0YXRpY193ZWFyYWJsZXNBZGRyZXNzAQAAABFmYXJtaW5nQWRkcmVzc0tleQAAAAACAAAAFXN0YXRpY19mYXJtaW5nQWRkcmVzcwEAAAARY291cG9uc0FkZHJlc3NLZXkAAAAAAgAAABVzdGF0aWNfY291cG9uc0FkZHJlc3MBAAAAEXJlYmlydGhBZGRyZXNzS2V5AAAAAAIAAAAVc3RhdGljX3JlYmlydGhBZGRyZXNzAQAAAA5idXJuQWRkcmVzc0tleQAAAAACAAAAEnN0YXRpY19idXJuQWRkcmVzcwEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAQb3JhY2xlQWRkcmVzc0tleQAAAAABAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAARYnJlZWRlckFkZHJlc3NLZXkAAAAAAQAAABNnZXRJbmN1YmF0b3JBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAATaW5jdWJhdG9yQWRkcmVzc0tleQAAAAABAAAADWdldEVnZ0Fzc2V0SWQAAAAACQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAANZWdnQXNzZXRJZEtleQAAAAABAAAAE2dldFdlYXJhYmxlc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABN3ZWFyYWJsZXNBZGRyZXNzS2V5AAAAAAEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABFmYXJtaW5nQWRkcmVzc0tleQAAAAABAAAAEWdldENvdXBvbnNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAARY291cG9uc0FkZHJlc3NLZXkAAAAAAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAEXJlYmlydGhBZGRyZXNzS2V5AAAAAAEAAAAOZ2V0QnVybkFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAAA5idXJuQWRkcmVzc0tleQAAAAAAAAAACk1BTlRMRU5BTUUCAAAABm1hbnRsZQAAAAAKU1RBVFVTRlJFRQIAAAAERlJFRQAAAAAOU1RBVFVTT0NDVVBJRUQCAAAACE9DQ1VQSUVEAQAAAAtrZXlEdWNrTG9jawAAAAIAAAANY2FsbGVyQWRkcmVzcwAAAAZkdWNrSWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAADWNhbGxlckFkZHJlc3MCAAAABl9kdWNrXwUAAAAGZHVja0lkAgAAAAdfc3RhdHVzAQAAAAtrZXlJbnZlc3RvcgAAAAEAAAANY2FsbGVyQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAA1jYWxsZXJBZGRyZXNzAgAAAAdfYW1vdW50AQAAABNrZXlBcnRlZmFjdEludmVzdGVkAAAAAgAAAAR0eXBlAAAACmFydGVmYWN0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0ZWZhY3RfBQAAAAR0eXBlAgAAAAxfYXJ0ZWZhY3RJZF8FAAAACmFydGVmYWN0SWQCAAAACV9pbnZlc3RlZAEAAAAUa2V5T25seUFydGVmYWN0TGV2ZWwAAAABAAAACmFydGVmYWN0SWQJAAEsAAAAAgkAASwAAAACAgAAAAthcnRlZmFjdElkXwkAAlgAAAABBQAAAAphcnRlZmFjdElkAgAAAAZfbGV2ZWwBAAAAGmtleUFydGVmYWN0SWRCeUR1Y2tBbmRUeXBlAAAAAgAAAAR0eXBlAAAABmR1Y2tJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAphcnRlZmFjdF8gBQAAAAR0eXBlAgAAAAZfZHVja18JAAJYAAAAAQUAAAAGZHVja0lkAgAAAAtfYXJ0ZWZhY3RJZAEAAAAQa2V5QXJ0ZWZhY3RPd25lcgAAAAIAAAAEdHlwZQAAAAphcnRlZmFjdElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACmFydGVm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AARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtPbmx5QXJ0ZWZhY3RMZXZlbAUAAAAIbmV3TGV2ZWwFAAAAA25pbAAAAAcAAAABaQEAAAAPY29uZmlndXJlT3JhY2xlAAAAAQAAAAZvcmFjbGUDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAPV0NPOiBhZG1pbiBvbmx5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzBQAAAAZvcmFjbGUFAAAAA25pbAAAAAFpAQAAAA9pc3N1ZUZyZWVNYW50bGUAAAADAAAAB2FkZHJlc3MAAAAEdHlwZQAAAAVsZXZlbAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAACFXSUZNOiBDYW4gYmUgY2FsbGVkIG9ubHkgYnkgYWRtaW4DCQEAAAACIT0AAAACBQAAAAR0eXBlBQAAAApNQU5UTEVOQU1FCQAAAgAAAAECAAAAIldJRk06IFlvdSBjYW4gYnV5IG9ubHkgbWFudGxlcyBub3cEAAAADmlzc3VlTWFudGxlTkZUCQAEQgAAAAUCAAAADURVQ0stTUFOVExFLTACAAAAIFtBcnRlZmFjdF0gTWFudGxlIE5GVCBmb3IgSmVkdWNrAAAAAAAAAAABAAAAAAAAAAAABwQAAAALbWFudGxlTmZ0SWQJAAQ4AAAAAQUAAAAOaXNzdWVNYW50bGVORlQEAAAADGtNYW50bGVMZXZlbAkBAAAAEGtleUFydGVmYWN0TGV2ZWwAAAADBQAAAApNQU5UTEVOQU1FBQAAAAdhZGRyZXNzBQAAAAttYW50bGVOZnRJZAQAAAANa01hbnRsZUV4aXN0cwkBAAAAEWtleUFydGVmYWN0RXhpc3RzAAAAAgUAAAAKTUFOVExFTkFNRQUAAAALbWFudGxlTmZ0SWQEAAAADGtNYW50bGVPd25lcgkBAAAAEGtleUFydGVmYWN0T3duZXIAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAANa01hbnRsZVN0YXR1cwkBAAAAEWtleUFydGVmYWN0U3RhdHVzAAAAAgUAAAAKTUFOVExFTkFNRQUAAAALbWFudGxlTmZ0SWQEAAAADWtBcnRlZmFjdFR5cGUJAQAAAA9rZXlBcnRlZmFjdFR5cGUAAAABBQAAAAttYW50bGVOZnRJZAQAAAAPa01hbnRsZUludmVzdGVkCQEAAAATa2V5QXJ0ZWZhY3RJbnZlc3RlZAAAAAIFAAAACk1BTlRMRU5BTUUJAAJYAAAAAQUAAAALbWFudGxlTmZ0SWQEAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQEAAAAZa2V5QXJ0ZWZhY3RPd25lckFuZFN0YXR1cwAAAAMFAAAACk1BTlRMRU5BTUUFAAAAB2FkZHJlc3MFAAAAC21hbnRsZU5mdElkBAAAABJrT25seUFydGVmYWN0TGV2ZWwJAQAAABRrZXlPbmx5QXJ0ZWZhY3RMZXZlbAAAAAEFAAAAC21hbnRsZU5mdElkBAAAAAhpbnZlc3RlZAkAAGwAAAAGCQAAZQAAAAIFAAAABWxldmVsAAAAAAAAAAABAAAAAAAAAAABCQAAaQAAAAIAAAAAADuaygAAAAAAAAAAAAYAAAAAAAAAAAgAAAAAAAAAAAgFAAAABkhBTEZVUAkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxrTWFudGxlTGV2ZWwFAAAABWxldmVsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rTWFudGxlSW52ZXN0ZWQFAAAACGludmVzdGVkCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAA1rTWFudGxlRXhpc3RzBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAxrTWFudGxlT3duZXIFAAAAB2FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rQXJ0ZWZhY3RUeXBlBQAAAApNQU5UTEVOQU1FCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzBQAAAApTVEFUVVNGUkVFCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrT25seUFydGVmYWN0TGV2ZWwFAAAABWxldmVsBQAAAANuaWwJAAJYAAAAAQUAAAALbWFudGxlTmZ0SWQAAAABaQEAAAALYnV5QXJ0ZWZhY3QAAAABAAAABHR5cGUDCQEAAAACIT0AAAACBQAAAAR0eXBlBQAAAApNQU5UTEVOQU1FCQAAAgAAAAECAAAAIVdCQTogWW91IGNhbiBidXkgb25seSBtYW50bGVzIG5vdwQAAAALTUFOVExFUFJJQ0UAAAAAAAAPQkAEAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMAAAAAAAAAAAADCQAAAAAAAAIFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMEAAAACWxlZnRUb1BheQkAAGUAAAACCQAAaAAAAAIFAAAAC01BTlRMRVBSSUNFAAAAAAAAAABkBQAAABNhbW91bnRQYWlkQnlDb3Vwb25zBAAAAAdwYXltZW50AwkBAAAAAiE9AAAAAgUAAAAJbGVmdFRvUGF5AAAAAAAAAAAABAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAAIAAAABCQABLAAAAAICAAAAQVdCQTogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50BQAAAAlsZWZ0VG9QYXkJAAACAAAAAQkAASwAAAACAgAAAElXQkE6IFRvIGJ1eSBhIG1hbnRsZSB5b3UgY3VycmVudGx5IG5lZWQgdGhlIGZvbGxvd2luZyBhbW91bnQgb2YgRUdHbGV0czogCQABpAAAAAEFAAAACWxlZnRUb1BheQUAAAAJbGVmdFRvUGF5AAAAAAAAAAAAAwkAAAAAAAACBQAAAAdwYXltZW50BQAAAAdwYXltZW50BAAAAA5pc3N1ZU1hbnRsZU5GVAkABEIAAAAFAgAAAA1EVUNLLU1BTlRMRS0wAgAAACBbQXJ0ZWZhY3RdIE1hbnRsZSBORlQgZm9yIEplZHVjawAAAAAAAAAAAQAAAAAAAAAAAAcEAAAAC21hbnRsZU5mdElkCQAEOAAAAAEFAAAADmlzc3VlTWFudGxlTkZUBAAAAAxrTWFudGxlTGV2ZWwJAQAAABBrZXlBcnRlZmFjdExldmVsAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAC21hbnRsZU5mdElkBAAAAA1rTWFudGxlRXhpc3RzCQEAAAARa2V5QXJ0ZWZhY3RFeGlzdHMAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAAMa01hbnRsZU93bmVyCQEAAAAQa2V5QXJ0ZWZhY3RPd25lcgAAAAIFAAAACk1BTlRMRU5BTUUFAAAAC21hbnRsZU5mdElkBAAAAA1rTWFudGxlU3RhdHVzCQEAAAARa2V5QXJ0ZWZhY3RTdGF0dXMAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAANa0FydGVmYWN0VHlwZQkBAAAAD2tleUFydGVmYWN0VHlwZQAAAAEFAAAAC21hbnRsZU5mdElkBAAAAA9rTWFudGxlSW52ZXN0ZWQJAQAAABNrZXlBcnRlZmFjdEludmVzdGVkAAAAAgUAAAAKTUFOVExFTkFNRQkAAlgAAAABBQAAAAttYW50bGVOZnRJZAQAAAAXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMJAQAAABlrZXlBcnRlZmFjdE93bmVyQW5kU3RhdHVzAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAC21hbnRsZU5mdElkBAAAABJrT25seUFydGVmYWN0TGV2ZWwJAQAAABRrZXlPbmx5QXJ0ZWZhY3RMZXZlbAAAAAEFAAAAC21hbnRsZU5mdElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxrTWFudGxlTGV2ZWwAAAAAAAAAAAEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2tNYW50bGVJbnZlc3RlZAUAAAALTUFOVExFUFJJQ0UJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAADWtNYW50bGVFeGlzdHMGCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADGtNYW50bGVPd25lcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rQXJ0ZWZhY3RUeXBlBQAAAApNQU5UTEVOQU1FCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzBQAAAApTVEFUVVNGUkVFCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrT25seUFydGVmYWN0TGV2ZWwAAAAAAAAAAAEFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADXVwZ3JhZGVNYW50bGUAAAABAAAACmFydGVmYWN0SWQEAAAAEXVwZ3JhZGVQb2ludFByaWNlAAAAAAAAD0JABAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAABmFtb3VudAgFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQDCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAAIAAAABCQABLAAAAAICAAAAQVdVTTogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAABmAAAAAgUAAAARdXBncmFkZVBvaW50UHJpY2UIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAuV1VNOiBNaW5pbWFsIHBheW1lbnQgZm9yIHVwZ3JhZGluZyBtYW50bGUgaXM6IAkAAaQAAAABBQAAABF1cGdyYWRlUG9pbnRQcmljZQkBAAAAEXVwZ3JhZGVNYW50bGVGdW5jAAAAAwUAAAABaQUAAAAKYXJ0ZWZhY3RJZAUAAAAGYW1vdW50AAAAAWkBAAAAFnVwZ3JhZGVNYW50bGVCeUNvdXBvbnMAAAACAAAACmFydGVmYWN0SWQAAAANY291cG9uc0Ftb3VudAQAAAARdXBncmFkZVBvaW50UHJpY2UAAAAAAAAPQkAEAAAABmFtb3VudAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkCQEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAACAAAAAQkAASwAAAACAgAAAENXVU1CQzogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAQAAAAIYnVybkNhbGwJAAP8AAAABAkBAAAADmdldEJ1cm5BZGRyZXNzAAAAAAIAAAAUYnVybkF0dGFjaGVkUGF5bWVudHMFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkBAAAADWdldEVnZ0Fzc2V0SWQAAAAACAUAAAAMZmlyc3RQYXltZW50AAAABmFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAAAhidXJuQ2FsbAUAAAAIYnVybkNhbGwIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAAAAAAAAAMJAABmAAAAAgUAAAARdXBncmFkZVBvaW50UHJpY2UJAABkAAAAAgUAAAANY291cG9uc0Ftb3VudAUAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAwV1VNQkM6IE1pbmltYWwgcGF5bWVudCBmb3IgdXBncmFkaW5nIG1hbnRsZSBpczogCQABpAAAAAEFAAAAEXVwZ3JhZGVQb2ludFByaWNlBAAAABNhbW91bnRQYWlkQnlDb3Vwb25zCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQJAQAAABFnZXRDb3Vwb25zQWRkcmVzcwAAAAACAAAACnVzZUNvdXBvbnMJAARMAAAAAgUAAAANY291cG9uc0Ftb3VudAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMDCQEAAAACIT0AAAACBQAAAA1jb3Vwb25zQW1vdW50BQAAABNhbW91bnRQYWlkQnlDb3Vwb25zCQAAAgAAAAECAAAASFdVTUJDOiBOb3QgZW5vdWdoIGNvdXBvbnMhIFBsZWFzZSBtYWtlIHN1cmUgdG8gcGljayBsb3dlciBjb3Vwb24gYW1vdW50IQkBAAAAEXVwZ3JhZGVNYW50bGVGdW5jAAAAAwUAAAABaQUAAAAKYXJ0ZWZhY3RJZAkAAGQAAAACBQAAAA1jb3Vwb25zQW1vdW50BQAAAAZhbW91bnQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADXB1dE9uQXJ0ZWZhY3QAAAABAAAACmFydGVmYWN0SWQEAAAADGZpcnN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAARYXR0YWNoZWRBc3NldEluZm8JAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAAZV1BPQTogTkZUIGlzIG5vdCBhdHRhY2hlZAMDCQEAAAACIT0AAAACCAUAAAARYXR0YWNoZWRBc3NldEluZm8AAAAGaXNzdWVyCQEAAAATZ2V0SW5jdWJhdG9yQWRkcmVzcwAAAAAJAQAAAAIhPQAAAAIIBQAAABFhdHRhY2hlZEFzc2V0SW5mbwAAAAZpc3N1ZXIJAQAAABFnZXRCcmVlZGVyQWRkcmVzcwAAAAAHCQAAAgAAAAECAAAAP1dQT0E6IFlvdSBjYW4gYXR0YWNoIG9ubHkgRFVDS3MgaXNzdWVkIGJ5IGluY3ViYXRvciBvciBicmVlZGVyIAQAAAAKaGFzU3dlYXRlcgkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAE2dldFdlYXJhYmxlc0FkZHJlc3MAAAAACQABLAAAAAIJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAgAAAA1fQVJULVhTV0VBVEVSBAAAAA1rTWFudGxlRXhpc3RzCQEAAAARa2V5QXJ0ZWZhY3RFeGlzdHMAAAACBQAAAApNQU5UTEVOQU1FCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADGtNYW50bGVPd25lcgkBAAAAEGtleUFydGVmYWN0T3duZXIAAAACBQAAAApNQU5UTEVOQU1FCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADWtNYW50bGVTdGF0dXMJAQAAABFrZXlBcnRlZmFjdFN0YXR1cwAAAAIFAAAACk1BTlRMRU5BTUUJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMJAQAAABlrZXlBcnRlZmFjdE93bmVyQW5kU3RhdHVzAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAJa0R1Y2tMb2NrCQEAAAALa2V5RHVja0xvY2sAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQEAAAADG1hbnRsZUV4aXN0cwkBAAAAEUBleHRyTmF0aXZlKDEwNTYpAAAAAQUAAAANa01hbnRsZUV4aXN0cwQAAAALbWFudGxlT3duZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAADGtNYW50bGVPd25lcgQAAAAMbWFudGxlU3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABBQAAAA1rTWFudGxlU3RhdHVzBAAAABFrQXJ0ZWZhY3RJZEJ5VHlwZQkBAAAAGmtleUFydGVmYWN0SWRCeUR1Y2tBbmRUeXBlAAAAAgUAAAAKTUFOVExFTkFNRQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAASEAAAABBQAAAAxtYW50bGVFeGlzdHMJAAACAAAAAQIAAAArV1BPQTogTWFudGxlIHdpdGggc3VjaCBhbiBJRCBkb2VzIG5vdCBleGlzdAMJAQAAAAIhPQAAAAIFAAAAC21hbnRsZU93bmVyCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkAAAIAAAABAgAAACdXUE9BOiBZb3UncmUgbm90IGFuIG93bmVyIG9mIHRoZSBtYW50bGUDCQEAAAACIT0AAAACBQAAAAxtYW50bGVTdGF0dXMFAAAAClNUQVRVU0ZSRUUJAAACAAAAAQIAAAAdV1BPQTogTWFudGxlIGlzIGFscmVhZHkgdXNlZCEEAAAACXN0YWtlRHVjawMJAQAAAAIhPQAAAAIFAAAACmhhc1N3ZWF0ZXICAAAAAAMJAQAAAAlpc0phY2twb3QAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAAP8AAAABAkBAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAIAAAAUc3Rha2VORlRXaXRob3V0UGVyY2gFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMJAAP8AAAABAkBAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAIAAAAIc3Rha2VORlQFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMFAAAAA25pbAMJAAAAAAAAAgUAAAAJc3Rha2VEdWNrBQAAAAlzdGFrZUR1Y2sEAAAADmtQdXRPbkFydGVmYWN0CQEAAAAQa2V5UHV0T25BcnRlZmFjdAAAAAQFAAAACk1BTlRMRU5BTUUJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAphcnRlZmFjdElkCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAA5rUHV0T25BcnRlZmFjdAYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAOU1RBVFVTT0NDVVBJRUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMFAAAADlNUQVRVU09DQ1VQSUVECQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrRHVja0xvY2sGCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWtBcnRlZmFjdElkQnlUeXBlBQAAAAphcnRlZmFjdElkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAD3Rha2VPZmZBcnRlZmFjdAAAAAIAAAAGZHVja0lkAAAADGFydGVmYWN0VHlwZQQAAAAYa0FydGVmYWN0SWRCeVR5cGVBbmREdWNrCQEAAAAaa2V5QXJ0ZWZhY3RJZEJ5RHVja0FuZFR5cGUAAAACBQAAAAxhcnRlZmFjdFR5cGUJAAJZAAAAAQUAAAAGZHVja0lkBAAAAAphcnRlZmFjdElkCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABBQAAABhrQXJ0ZWZhY3RJZEJ5VHlwZUFuZER1Y2sEAAAADWtBcnRlZmFjdFR5cGUJAQAAAA9rZXlBcnRlZmFjdFR5cGUAAAABCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADmtQdXRPbkFydGVmYWN0CQEAAAAQa2V5UHV0T25BcnRlZmFjdAAAAAQFAAAADGFydGVmYWN0VHlwZQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAABmR1Y2tJZAkAAlkAAAABBQAAAAphcnRlZmFjdElkBAAAABRrUHV0T25BcnRlZmFjdFN0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTYpAAAAAQUAAAAOa1B1dE9uQXJ0ZWZhY3QEAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQEAAAAZa2V5QXJ0ZWZhY3RPd25lckFuZFN0YXR1cwAAAAMFAAAADGFydGVmYWN0VHlwZQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAJa0R1Y2tMb2NrCQEAAAALa2V5RHVja0xvY2sAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgUAAAAGZHVja0lkBAAAAA1rTWFudGxlU3RhdHVzCQEAAAARa2V5QXJ0ZWZhY3RTdGF0dXMAAAACBQAAAAxhcnRlZmFjdFR5cGUJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAMJAQAAAAIhPQAAAAIFAAAAFGtQdXRPbkFydGVmYWN0U3RhdHVzBgkAAAIAAAABAgAAACxXVE9BOiBUaGVyZSBpcyBubyBkdWNrIHdpdGggc3VjaCBwYXJhbWV0ZXJlcwQAAAAKaGFzU3dlYXRlcgkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAE2dldFdlYXJhYmxlc0FkZHJlc3MAAAAACQABLAAAAAIFAAAABmR1Y2tJZAIAAAANX0FSVC1YU1dFQVRFUgQAAAAIaXNTdGFrZWQDCQAAAAAAAAIJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18JAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyAgAAAAdfYXNzZXRfBQAAAAZkdWNrSWQCAAAACV91bnN0YWtlcgIAAAAABwYEAAAAC3Vuc3Rha2VEdWNrAwMJAQAAAAIhPQAAAAIFAAAACmhhc1N3ZWF0ZXICAAAAAAUAAAAIaXNTdGFrZWQHAwkBAAAACWlzSmFja3BvdAAAAAEJAAJZAAAAAQUAAAAGZHVja0lkCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQJAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAACAAAADnVuc3Rha2VKYWNrcG90CQAETAAAAAIFAAAABmR1Y2tJZAUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwkBAAAABWFzSW50AAAAAQkAA/wAAAAECQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAAAgAAAAp1bnN0YWtlTkZUCQAETAAAAAIFAAAABmR1Y2tJZAUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAAAAAAAAAgUAAAALdW5zdGFrZUR1Y2sFAAAAC3Vuc3Rha2VEdWNrBAAAAAtzZW5kUmV3YXJkcwMJAABmAAAAAgUAAAALdW5zdGFrZUR1Y2sAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAAAt1bnN0YWtlRHVjawkBAAAADWdldEVnZ0Fzc2V0SWQAAAAABQAAAANuaWwFAAAAA25pbAkABE4AAAACCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAADmtQdXRPbkFydGVmYWN0CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAGGtBcnRlZmFjdElkQnlUeXBlQW5kRHVjawkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAlrRHVja0xvY2sJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIAAAAAAAAAAAEJAAJZAAAAAQUAAAAGZHVja0lkBQAAAANuaWwFAAAAC3NlbmRSZXdhcmRzCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V569AElw==", "height": 4015978, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CNCs5PnMta9FFhuusrXcZhZKTkV1XYYzn85XKRgCteNt Next: none Diff:
OldNewDifferences
1717 }
1818
1919
20-func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
20+func oracleAddressKey () = "static_oracleAddress"
2121
2222
23-func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
23+func breederAddressKey () = "static_breederAddress"
2424
2525
26-func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress")))
26+func incubatorAddressKey () = "static_incubatorAddress"
2727
2828
29-func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
29+func eggAssetIdKey () = "static_eggAssetId"
3030
3131
32-func getWearablesAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_wearablesAddress")))
32+func wearablesAddressKey () = "static_wearablesAddress"
3333
3434
35-func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
35+func farmingAddressKey () = "static_farmingAddress"
3636
3737
38-func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_couponsAddress")))
38+func couponsAddressKey () = "static_couponsAddress"
3939
4040
41-func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_rebirthAddress")))
41+func rebirthAddressKey () = "static_rebirthAddress"
4242
4343
44-func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress")))
44+func burnAddressKey () = "static_burnAddress"
45+
46+
47+func getOracle () = Address(fromBase58String(tryGetString(oracleAddressKey())))
48+
49+
50+func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), breederAddressKey())))
51+
52+
53+func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), incubatorAddressKey())))
54+
55+
56+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), eggAssetIdKey()))
57+
58+
59+func getWearablesAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), wearablesAddressKey())))
60+
61+
62+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), farmingAddressKey())))
63+
64+
65+func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), couponsAddressKey())))
66+
67+
68+func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), rebirthAddressKey())))
69+
70+
71+func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), burnAddressKey())))
4572
4673
4774 let MANTLENAME = "mantle"
150177
151178
152179 @Callable(i)
153-func buyArtefact (type) = throw("WBA: Artefacts buying is disabled for now")
180+func buyArtefact (type) = if ((type != MANTLENAME))
181+ then throw("WBA: You can buy only mantles now")
182+ else {
183+ let MANTLEPRICE = 1000000
184+ let amountPaidByCoupons = 0
185+ if ((amountPaidByCoupons == amountPaidByCoupons))
186+ then {
187+ let leftToPay = ((MANTLEPRICE * 100) - amountPaidByCoupons)
188+ let payment = if ((leftToPay != 0))
189+ then {
190+ let firstPayment = value(i.payments[0])
191+ if ((firstPayment.assetId != getEggAssetId()))
192+ then throw(("WBA: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
193+ else if ((firstPayment.amount != leftToPay))
194+ then throw(("WBA: To buy a mantle you currently need the following amount of EGGlets: " + toString(leftToPay)))
195+ else leftToPay
196+ }
197+ else 0
198+ if ((payment == payment))
199+ then {
200+ let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
201+ let mantleNftId = calculateAssetId(issueMantleNFT)
202+ let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.caller), mantleNftId)
203+ let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
204+ let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
205+ let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
206+ let kArtefactType = keyArtefactType(mantleNftId)
207+ let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
208+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.caller), mantleNftId)
209+ let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
210+[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)]
211+ }
212+ else throw("Strict value is not equal to itself.")
213+ }
214+ else throw("Strict value is not equal to itself.")
215+ }
154216
155217
156218
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
20-func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
20+func oracleAddressKey () = "static_oracleAddress"
2121
2222
23-func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
23+func breederAddressKey () = "static_breederAddress"
2424
2525
26-func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress")))
26+func incubatorAddressKey () = "static_incubatorAddress"
2727
2828
29-func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
29+func eggAssetIdKey () = "static_eggAssetId"
3030
3131
32-func getWearablesAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_wearablesAddress")))
32+func wearablesAddressKey () = "static_wearablesAddress"
3333
3434
35-func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
35+func farmingAddressKey () = "static_farmingAddress"
3636
3737
38-func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_couponsAddress")))
38+func couponsAddressKey () = "static_couponsAddress"
3939
4040
41-func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_rebirthAddress")))
41+func rebirthAddressKey () = "static_rebirthAddress"
4242
4343
44-func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress")))
44+func burnAddressKey () = "static_burnAddress"
45+
46+
47+func getOracle () = Address(fromBase58String(tryGetString(oracleAddressKey())))
48+
49+
50+func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), breederAddressKey())))
51+
52+
53+func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), incubatorAddressKey())))
54+
55+
56+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), eggAssetIdKey()))
57+
58+
59+func getWearablesAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), wearablesAddressKey())))
60+
61+
62+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), farmingAddressKey())))
63+
64+
65+func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), couponsAddressKey())))
66+
67+
68+func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), rebirthAddressKey())))
69+
70+
71+func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), burnAddressKey())))
4572
4673
4774 let MANTLENAME = "mantle"
4875
4976 let STATUSFREE = "FREE"
5077
5178 let STATUSOCCUPIED = "OCCUPIED"
5279
5380 func keyDuckLock (callerAddress,duckId) = (((("address_" + callerAddress) + "_duck_") + duckId) + "_status")
5481
5582
5683 func keyInvestor (callerAddress) = (("address_" + callerAddress) + "_amount")
5784
5885
5986 func keyArtefactInvested (type,artefactId) = (((("artefact_" + type) + "_artefactId_") + artefactId) + "_invested")
6087
6188
6289 func keyOnlyArtefactLevel (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_level")
6390
6491
6592 func keyArtefactIdByDuckAndType (type,duckId) = (((("artefact_ " + type) + "_duck_") + toBase58String(duckId)) + "_artefactId")
6693
6794
6895 func keyArtefactOwner (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_owner")
6996
7097
7198 func keyArtefactOwnerAndStatus (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
7299
73100
74101 func keyArtefactStatus (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
75102
76103
77104 func keyArtefactType (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_type")
78105
79106
80107 func keyArtefactLevel (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_level")
81108
82109
83110 func keyPutOnArtefact (type,owner,duckId,artefactId) = (((((((("address_" + owner) + "_duck_") + duckId) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
84111
85112
86113 func keyArtefactExists (type,artefactId) = ((("artefact_" + type) + "_artefactId_") + toBase58String(artefactId))
87114
88115
89116 func isJackpot (assetId) = (takeRight(value(value(assetInfo(assetId)).name), 1) == "U")
90117
91118
92119 func asInt (value) = match value {
93120 case int: Int =>
94121 int
95122 case _ =>
96123 throw("WAI: wrong type, expected: Int")
97124 }
98125
99126
100127 func upgradeMantleFunc (i,artefactId,amount) = {
101128 let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
102129 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
103130 let mantleExists = getBooleanValue(kMantleExists)
104131 let mantleOwner = getStringValue(kMantleOwner)
105132 if (!(mantleExists))
106133 then throw("WUPM: Mantle with such an ID does not exist")
107134 else if ((mantleOwner != toString(i.originCaller)))
108135 then throw("WUPM: You're not an owner of the mantle")
109136 else {
110137 let kMantleInvested = keyArtefactInvested(MANTLENAME, artefactId)
111138 let mantleAlreadyInvested = getIntegerValue(kMantleInvested)
112139 let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
113140 let kOnlyArtefactLevel = keyOnlyArtefactLevel(fromBase58String(artefactId))
114141 let totalInvested = (mantleAlreadyInvested + amount)
115142 let newLevel = (((10 * pow(totalInvested, 8, 6, 1, 8, HALFUP)) + 100000000) / 100000000)
116143 if ((newLevel >= 340))
117144 then throw("DUMF: You reached the max level! Max level is 340!")
118145 else [IntegerEntry(kMantleLevel, newLevel), IntegerEntry(kMantleInvested, totalInvested), IntegerEntry(kOnlyArtefactLevel, newLevel)]
119146 }
120147 }
121148
122149
123150 @Callable(i)
124151 func configureOracle (oracle) = if ((i.caller != this))
125152 then throw("WCO: admin only")
126153 else [StringEntry("static_oracleAddress", oracle)]
127154
128155
129156
130157 @Callable(i)
131158 func issueFreeMantle (address,type,level) = if ((i.caller != this))
132159 then throw("WIFM: Can be called only by admin")
133160 else if ((type != MANTLENAME))
134161 then throw("WIFM: You can buy only mantles now")
135162 else {
136163 let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
137164 let mantleNftId = calculateAssetId(issueMantleNFT)
138165 let kMantleLevel = keyArtefactLevel(MANTLENAME, address, mantleNftId)
139166 let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
140167 let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
141168 let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
142169 let kArtefactType = keyArtefactType(mantleNftId)
143170 let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
144171 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, address, mantleNftId)
145172 let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
146173 let invested = pow((level - 1), 1, (1000000000 / 6), 8, 8, HALFUP)
147174 $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))
148175 }
149176
150177
151178
152179 @Callable(i)
153-func buyArtefact (type) = throw("WBA: Artefacts buying is disabled for now")
180+func buyArtefact (type) = if ((type != MANTLENAME))
181+ then throw("WBA: You can buy only mantles now")
182+ else {
183+ let MANTLEPRICE = 1000000
184+ let amountPaidByCoupons = 0
185+ if ((amountPaidByCoupons == amountPaidByCoupons))
186+ then {
187+ let leftToPay = ((MANTLEPRICE * 100) - amountPaidByCoupons)
188+ let payment = if ((leftToPay != 0))
189+ then {
190+ let firstPayment = value(i.payments[0])
191+ if ((firstPayment.assetId != getEggAssetId()))
192+ then throw(("WBA: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
193+ else if ((firstPayment.amount != leftToPay))
194+ then throw(("WBA: To buy a mantle you currently need the following amount of EGGlets: " + toString(leftToPay)))
195+ else leftToPay
196+ }
197+ else 0
198+ if ((payment == payment))
199+ then {
200+ let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
201+ let mantleNftId = calculateAssetId(issueMantleNFT)
202+ let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.caller), mantleNftId)
203+ let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
204+ let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
205+ let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
206+ let kArtefactType = keyArtefactType(mantleNftId)
207+ let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
208+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.caller), mantleNftId)
209+ let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
210+[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)]
211+ }
212+ else throw("Strict value is not equal to itself.")
213+ }
214+ else throw("Strict value is not equal to itself.")
215+ }
154216
155217
156218
157219 @Callable(i)
158220 func upgradeMantle (artefactId) = {
159221 let upgradePointPrice = 1000000
160222 let firstPayment = value(i.payments[0])
161223 let amount = firstPayment.amount
162224 if ((firstPayment.assetId != getEggAssetId()))
163225 then throw(("WUM: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
164226 else if ((upgradePointPrice > firstPayment.amount))
165227 then throw(("WUM: Minimal payment for upgrading mantle is: " + toString(upgradePointPrice)))
166228 else upgradeMantleFunc(i, artefactId, amount)
167229 }
168230
169231
170232
171233 @Callable(i)
172234 func upgradeMantleByCoupons (artefactId,couponsAmount) = {
173235 let upgradePointPrice = 1000000
174236 let amount = if ((size(i.payments) == 1))
175237 then {
176238 let firstPayment = value(i.payments[0])
177239 if ((firstPayment.assetId != getEggAssetId()))
178240 then throw(("WUMBC: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
179241 else {
180242 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), firstPayment.amount)])
181243 if ((burnCall == burnCall))
182244 then firstPayment.amount
183245 else throw("Strict value is not equal to itself.")
184246 }
185247 }
186248 else 0
187249 if ((upgradePointPrice > (couponsAmount + amount)))
188250 then throw(("WUMBC: Minimal payment for upgrading mantle is: " + toString(upgradePointPrice)))
189251 else {
190252 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [couponsAmount], nil))
191253 if ((amountPaidByCoupons == amountPaidByCoupons))
192254 then if ((couponsAmount != amountPaidByCoupons))
193255 then throw("WUMBC: Not enough coupons! Please make sure to pick lower coupon amount!")
194256 else upgradeMantleFunc(i, artefactId, (couponsAmount + amount))
195257 else throw("Strict value is not equal to itself.")
196258 }
197259 }
198260
199261
200262
201263 @Callable(i)
202264 func putOnArtefact (artefactId) = {
203265 let firstPayment = value(i.payments[0])
204266 let attachedAssetInfo = value(assetInfo(value(firstPayment.assetId)))
205267 if ((firstPayment.amount != 1))
206268 then throw("WPOA: NFT is not attached")
207269 else if (if ((attachedAssetInfo.issuer != getIncubatorAddress()))
208270 then (attachedAssetInfo.issuer != getBreederAddress())
209271 else false)
210272 then throw("WPOA: You can attach only DUCKs issued by incubator or breeder ")
211273 else {
212274 let hasSweater = tryGetStringExternal(getWearablesAddress(), (toBase58String(value(firstPayment.assetId)) + "_ART-XSWEATER"))
213275 let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
214276 let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
215277 let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(artefactId))
216278 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
217279 let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(value(firstPayment.assetId)))
218280 let mantleExists = getBooleanValue(kMantleExists)
219281 let mantleOwner = getStringValue(kMantleOwner)
220282 let mantleStatus = getStringValue(kMantleStatus)
221283 let kArtefactIdByType = keyArtefactIdByDuckAndType(MANTLENAME, value(firstPayment.assetId))
222284 if (!(mantleExists))
223285 then throw("WPOA: Mantle with such an ID does not exist")
224286 else if ((mantleOwner != toString(i.originCaller)))
225287 then throw("WPOA: You're not an owner of the mantle")
226288 else if ((mantleStatus != STATUSFREE))
227289 then throw("WPOA: Mantle is already used!")
228290 else {
229291 let stakeDuck = if ((hasSweater != ""))
230292 then if (isJackpot(value(firstPayment.assetId)))
231293 then invoke(getFarmingAddress(), "stakeNFTWithoutPerch", nil, i.payments)
232294 else invoke(getFarmingAddress(), "stakeNFT", nil, i.payments)
233295 else nil
234296 if ((stakeDuck == stakeDuck))
235297 then {
236298 let kPutOnArtefact = keyPutOnArtefact(MANTLENAME, toString(i.originCaller), toBase58String(value(firstPayment.assetId)), fromBase58String(artefactId))
237299 [BooleanEntry(kPutOnArtefact, true), StringEntry(kMantleStatus, STATUSOCCUPIED), StringEntry(kArtefactOwnerAndStatus, STATUSOCCUPIED), BooleanEntry(kDuckLock, true), StringEntry(kArtefactIdByType, artefactId)]
238300 }
239301 else throw("Strict value is not equal to itself.")
240302 }
241303 }
242304 }
243305
244306
245307
246308 @Callable(i)
247309 func takeOffArtefact (duckId,artefactType) = {
248310 let kArtefactIdByTypeAndDuck = keyArtefactIdByDuckAndType(artefactType, fromBase58String(duckId))
249311 let artefactId = getStringValue(kArtefactIdByTypeAndDuck)
250312 let kArtefactType = keyArtefactType(fromBase58String(artefactId))
251313 let kPutOnArtefact = keyPutOnArtefact(artefactType, toString(i.originCaller), duckId, fromBase58String(artefactId))
252314 let kPutOnArtefactStatus = getBooleanValue(kPutOnArtefact)
253315 let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(artefactType, toString(i.originCaller), fromBase58String(artefactId))
254316 let kDuckLock = keyDuckLock(toString(i.originCaller), duckId)
255317 let kMantleStatus = keyArtefactStatus(artefactType, fromBase58String(artefactId))
256318 if ((kPutOnArtefactStatus != true))
257319 then throw("WTOA: There is no duck with such parameteres")
258320 else {
259321 let hasSweater = tryGetStringExternal(getWearablesAddress(), (duckId + "_ART-XSWEATER"))
260322 let isStaked = if ((tryGetStringExternal(getFarmingAddress(), (((("address_" + toString(i.originCaller)) + "_asset_") + duckId) + "_unstaker")) == ""))
261323 then false
262324 else true
263325 let unstakeDuck = if (if ((hasSweater != ""))
264326 then isStaked
265327 else false)
266328 then if (isJackpot(fromBase58String(duckId)))
267329 then asInt(invoke(getFarmingAddress(), "unstakeJackpot", [duckId], i.payments))
268330 else asInt(invoke(getFarmingAddress(), "unstakeNFT", [duckId], i.payments))
269331 else 0
270332 if ((unstakeDuck == unstakeDuck))
271333 then {
272334 let sendRewards = if ((unstakeDuck > 0))
273335 then [ScriptTransfer(i.originCaller, unstakeDuck, getEggAssetId())]
274336 else nil
275337 ([DeleteEntry(kPutOnArtefact), DeleteEntry(kArtefactIdByTypeAndDuck), DeleteEntry(kDuckLock), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), ScriptTransfer(i.originCaller, 1, fromBase58String(duckId))] ++ sendRewards)
276338 }
277339 else throw("Strict value is not equal to itself.")
278340 }
279341 }
280342
281343
282344 @Verifier(tx)
283345 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
284346

github/deemru/w8io/6500d08 
51.83 ms