tx · 9ARgt6cFHvvMRQP2H92krEG1ih3NVJeGnybTnQjEovun

3N3ow28aEESPBAtyxhjWAyRhpMaXSTLcy33:  -0.02200000 Waves

2024.10.07 20:24 [3316719] smart account 3N3ow28aEESPBAtyxhjWAyRhpMaXSTLcy33 > SELF 0.00000000 Waves

{ "type": 13, "id": "9ARgt6cFHvvMRQP2H92krEG1ih3NVJeGnybTnQjEovun", "fee": 2200000, "feeAssetId": null, "timestamp": 1728321878643, "version": 2, "chainId": 84, "sender": "3N3ow28aEESPBAtyxhjWAyRhpMaXSTLcy33", "senderPublicKey": "mYBb9jrrbWnKZCnBpAEqHKUWzx5KBKd7z2QhHDXPeeB", "proofs": [ "5RXteMzT6G5zpQf826Km9JEAau7VgXmAEuyiThZNk6iWx3h3TmJJGKx6ALcC1xiJmndAA8cDENjS35bsGMD3A4PU" ], "script": "base64:AAIFAAAAAAAAACkIAhIDCgEIEgUKAwgIARIDCgEIEgMKAQgSBAoCCAESAwoBCBIECgIICAAAACcBAAAACWlzVGVzdEVudgAAAAAEAAAAB3Rlc3RlbnYEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwIAAAAHVEVTVEVOVgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABeAUAAAAHJG1hdGNoMAUAAAABeAcFAAAAB3Rlc3RlbnYBAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABBvcmFjbGVBZGRyZXNzS2V5AAAAAAIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAEWJyZWVkZXJBZGRyZXNzS2V5AAAAAAIAAAAVc3RhdGljX2JyZWVkZXJBZGRyZXNzAQAAABNpbmN1YmF0b3JBZGRyZXNzS2V5AAAAAAIAAAAXc3RhdGljX2luY3ViYXRvckFkZHJlc3MBAAAADWVnZ0Fzc2V0SWRLZXkAAAAAAgAAABFzdGF0aWNfZWdnQXNzZXRJZAEAAAATd2VhcmFibGVzQWRkcmVzc0tleQAAAAACAAAAF3N0YXRpY193ZWFyYWJsZXNBZGRyZXNzAQAAABFmYXJtaW5nQWRkcmVzc0tleQAAAAACAAAAGHN0YXRpY19mYXJtaW5nQWRkcmVzc05ldwEAAAARY291cG9uc0FkZHJlc3NLZXkAAAAAAgAAABVzdGF0aWNfY291cG9uc0FkZHJlc3MBAAAAEXJlYmlydGhBZGRyZXNzS2V5AAAAAAIAAAAVc3RhdGljX3JlYmlydGhBZGRyZXNzAQAAAA5idXJuQWRkcmVzc0tleQAAAAACAAAAEnN0YXRpY19idXJuQWRkcmVzcwEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAQb3JhY2xlQWRkcmVzc0tleQAAAAABAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAARYnJlZWRlckFkZHJlc3NLZXkAAAAAAQAAABNnZXRJbmN1YmF0b3JBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAATaW5jdWJhdG9yQWRkcmVzc0tleQAAAAABAAAADWdldEVnZ0Fzc2V0SWQAAAAACQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAANZWdnQXNzZXRJZEtleQAAAAABAAAAE2dldFdlYXJhYmxlc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABN3ZWFyYWJsZXNBZGRyZXNzS2V5AAAAAAEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABFmYXJtaW5nQWRkcmVzc0tleQAAAAABAAAAEWdldENvdXBvbnNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAARY291cG9uc0FkZHJlc3NLZXkAAAAAAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAEXJlYmlydGhBZGRyZXNzS2V5AAAAAAEAAAAOZ2V0QnVybkFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAAA5idXJuQWRkcmVzc0tleQAAAAAAAAAACk1BTlRMRU5BTUUCAAAABm1hbnRsZQAAAAAKU1RBVFVTRlJFRQIAAAAERlJFRQAAAAAOU1RBVFVTT0NDVVBJRUQCAAAACE9DQ1VQSUVEAQAAAAtrZXlEdWNrTG9jawAAAAIAAAANY2FsbGVyQWRkcmVzcwAAAAZkdWNrSWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAADWNhbGxlckFkZHJlc3MCAAAABl9kdWNrXwUAAAAGZHVja0lkAgAAAAdfc3RhdHVzAQAAAAtrZXlJbnZlc3RvcgAAAAEAAAANY2FsbGVyQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAA1jYWxsZXJBZGRyZXNzAgAAAAdfYW1vdW50AQAAABNrZXlBcnRlZmFjdEludmVzdGVkAAAAAgAAAAR0eXBlAAAACmFydGVmYWN0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0ZWZhY3RfBQAAAAR0eXBlAgAAAAxfYXJ0ZWZhY3RJZF8FAAAACmFydGVmYWN0SWQCAAAACV9pbnZlc3RlZAEAAAAUa2V5T25seUFydGVmYWN0TGV2ZWwAAAABAAAACmFydGVmYWN0SWQJAAEsAAAAAgkAASwAAAACAgAAAAthcnRlZmFjdElkXwkAAlgAAAABBQAAAAphcnRlZmFjdElkAgAAAAZfbGV2ZWwBAAAAGmtleUFydGVmYWN0SWRCeUR1Y2tBbmRUeXBlAAAAAgAAAAR0eXBlAAAABmR1Y2tJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAphcnRlZmFjdF8g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AgUAAAAKTUFOVExFTkFNRQUAAAALbWFudGxlTmZ0SWQEAAAADGtNYW50bGVPd25lcgkBAAAAEGtleUFydGVmYWN0T3duZXIAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAANa01hbnRsZVN0YXR1cwkBAAAAEWtleUFydGVmYWN0U3RhdHVzAAAAAgUAAAAKTUFOVExFTkFNRQUAAAALbWFudGxlTmZ0SWQEAAAADWtBcnRlZmFjdFR5cGUJAQAAAA9rZXlBcnRlZmFjdFR5cGUAAAABBQAAAAttYW50bGVOZnRJZAQAAAAPa01hbnRsZUludmVzdGVkCQEAAAATa2V5QXJ0ZWZhY3RJbnZlc3RlZAAAAAIFAAAACk1BTlRMRU5BTUUJAAJYAAAAAQUAAAALbWFudGxlTmZ0SWQEAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQEAAAAZa2V5QXJ0ZWZhY3RPd25lckFuZFN0YXR1cwAAAAMFAAAACk1BTlRMRU5BTUUFAAAAB2FkZHJlc3MFAAAAC21hbnRsZU5mdElkBAAAABJrT25seUFydGVmYWN0TGV2ZWwJAQAAABRrZXlPbmx5QXJ0ZWZhY3RMZXZlbAAAAAEFAAAAC21hbnRsZU5mdElkBAAAAAhpbnZlc3RlZAkAAGwAAAAGCQAAZQAAAAIFAAAABWxldmVsAAAAAAAAAAABAAAAAAAAAAABCQAAaQAAAAIAAAAAADuaygAAAAAAAAAAAAYAAAAAAAAAAAgAAAAAAAAAAAgFAAAABkhBTEZVUAkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxrTWFudGxlTGV2ZWwFAAAABWxldmVsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rTWFudGxlSW52ZXN0ZWQFAAAACGludmVzdGVkCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAA1rTWFudGxlRXhpc3RzBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAxrTWFudGxlT3duZXIFAAAAB2FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rQXJ0ZWZhY3RUeXBlBQAAAApNQU5UTEVOQU1FCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzBQAAAApTVEFUVVNGUkVFCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrT25seUFydGVmYWN0TGV2ZWwFAAAABWxldmVsBQAAAANuaWwJAAJYAAAAAQUAAAALbWFudGxlTmZ0SWQAAAABaQEAAAALYnV5QXJ0ZWZhY3QAAAABAAAABHR5cGUDCQEAAAACIT0AAAACBQAAAAR0eXBlBQAAAApNQU5UTEVOQU1FCQAAAgAAAAECAAAAIVdCQTogWW91IGNhbiBidXkgb25seSBtYW50bGVzIG5vdwQAAAALTUFOVExFUFJJQ0UAAAAAAAAPQkAEAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMAAAAAAAAAAAADCQAAAAAAAAIFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMEAAAACWxlZnRUb1BheQkAAGUAAAACCQAAaAAAAAIFAAAAC01BTlRMRVBSSUNFAAAAAAAAAABkBQAAABNhbW91bnRQYWlkQnlDb3Vwb25zBAAAAAdwYXltZW50AwkBAAAAAiE9AAAAAgUAAAAJbGVmdFRvUGF5AAAAAAAAAAAABAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAAIAAAABCQABLAAAAAICAAAAQVdCQTogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50BQAAAAlsZWZ0VG9QYXkJAAACAAAAAQkAASwAAAACAgAAAElXQkE6IFRvIGJ1eSBhIG1hbnRsZSB5b3UgY3VycmVudGx5IG5lZWQgdGhlIGZvbGxvd2luZyBhbW91bnQgb2YgRUdHbGV0czogCQABpAAAAAEFAAAACWxlZnRUb1BheQUAAAAJbGVmdFRvUGF5AAAAAAAAAAAAAwkAAAAAAAACBQAAAAdwYXltZW50BQAAAAdwYXltZW50BAAAAA5pc3N1ZU1hbnRsZU5GVAkABEIAAAAFAgAAAA1EVUNLLU1BTlRMRS0wAgAAACBbQXJ0ZWZhY3RdIE1hbnRsZSBORlQgZm9yIEplZHVjawAAAAAAAAAAAQAAAAAAAAAAAAcEAAAAC21hbnRsZU5mdElkCQAEOAAAAAEFAAAADmlzc3VlTWFudGxlTkZUBAAAAAxrTWFudGxlTGV2ZWwJAQAAABBrZXlBcnRlZmFjdExldmVsAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAC21hbnRsZU5mdElkBAAAAA1rTWFudGxlRXhpc3RzCQEAAAARa2V5QXJ0ZWZhY3RFeGlzdHMAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAAMa01hbnRsZU93bmVyCQEAAAAQa2V5QXJ0ZWZhY3RPd25lcgAAAAIFAAAACk1BTlRMRU5BTUUFAAAAC21hbnRsZU5mdElkBAAAAA1rTWFudGxlU3RhdHVzCQEAAAARa2V5QXJ0ZWZhY3RTdGF0dXMAAAACBQAAAApNQU5UTEVOQU1FBQAAAAttYW50bGVOZnRJZAQAAAANa0FydGVmYWN0VHlwZQkBAAAAD2tleUFydGVmYWN0VHlwZQAAAAEFAAAAC21hbnRsZU5mdElkBAAAAA9rTWFudGxlSW52ZXN0ZWQJAQAAABNrZXlBcnRlZmFjdEludmVzdGVkAAAAAgUAAAAKTUFOVExFTkFNRQkAAlgAAAABBQAAAAttYW50bGVOZnRJZAQAAAAXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMJAQAAABlrZXlBcnRlZmFjdE93bmVyQW5kU3RhdHVzAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAC21hbnRsZU5mdElkBAAAABJrT25seUFydGVmYWN0TGV2ZWwJAQAAABRrZXlPbmx5QXJ0ZWZhY3RMZXZlbAAAAAEFAAAAC21hbnRsZU5mdElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxrTWFudGxlTGV2ZWwAAAAAAAAAAAEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2tNYW50bGVJbnZlc3RlZAUAAAALTUFOVExFUFJJQ0UJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAADWtNYW50bGVFeGlzdHMGCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADGtNYW50bGVPd25lcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAKU1RBVFVTRlJFRQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rQXJ0ZWZhY3RUeXBlBQAAAApNQU5UTEVOQU1FCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzBQAAAApTVEFUVVNGUkVFCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrT25seUFydGVmYWN0TGV2ZWwAAAAAAAAAAAEFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADXVwZ3JhZGVNYW50bGUAAAABAAAACmFydGVmYWN0SWQEAAAAEXVwZ3JhZGVQb2ludFByaWNlAAAAAAAAD0JABAAAAAxmaXJzdFBheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAABmFtb3VudAgFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQDCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAAIAAAABCQABLAAAAAICAAAAQVdVTTogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAABmAAAAAgUAAAARdXBncmFkZVBvaW50UHJpY2UIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAuV1VNOiBNaW5pbWFsIHBheW1lbnQgZm9yIHVwZ3JhZGluZyBtYW50bGUgaXM6IAkAAaQAAAABBQAAABF1cGdyYWRlUG9pbnRQcmljZQkBAAAAEXVwZ3JhZGVNYW50bGVGdW5jAAAAAwUAAAABaQUAAAAKYXJ0ZWZhY3RJZAUAAAAGYW1vdW50AAAAAWkBAAAAFnVwZ3JhZGVNYW50bGVCeUNvdXBvbnMAAAACAAAACmFydGVmYWN0SWQAAAANY291cG9uc0Ftb3VudAQAAAARdXBncmFkZVBvaW50UHJpY2UAAAAAAAAPQkAEAAAABmFtb3VudAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkCQEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAACAAAAAQkAASwAAAACAgAAAENXVU1CQzogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAQAAAAIYnVybkNhbGwJAAP8AAAABAkBAAAADmdldEJ1cm5BZGRyZXNzAAAAAAIAAAAUYnVybkF0dGFjaGVkUGF5bWVudHMFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkBAAAADWdldEVnZ0Fzc2V0SWQAAAAACAUAAAAMZmlyc3RQYXltZW50AAAABmFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAAAhidXJuQ2FsbAUAAAAIYnVybkNhbGwIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAAAAAAAAAMJAABmAAAAAgUAAAARdXBncmFkZVBvaW50UHJpY2UJAABkAAAAAgUAAAANY291cG9uc0Ftb3VudAUAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAwV1VNQkM6IE1pbmltYWwgcGF5bWVudCBmb3IgdXBncmFkaW5nIG1hbnRsZSBpczogCQABpAAAAAEFAAAAEXVwZ3JhZGVQb2ludFByaWNlBAAAABNhbW91bnRQYWlkQnlDb3Vwb25zCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQJAQAAABFnZXRDb3Vwb25zQWRkcmVzcwAAAAACAAAACnVzZUNvdXBvbnMJAARMAAAAAgUAAAANY291cG9uc0Ftb3VudAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMFAAAAE2Ftb3VudFBhaWRCeUNvdXBvbnMDCQEAAAACIT0AAAACBQAAAA1jb3Vwb25zQW1vdW50BQAAABNhbW91bnRQYWlkQnlDb3Vwb25zCQAAAgAAAAECAAAASFdVTUJDOiBOb3QgZW5vdWdoIGNvdXBvbnMhIFBsZWFzZSBtYWtlIHN1cmUgdG8gcGljayBsb3dlciBjb3Vwb24gYW1vdW50IQkBAAAAEXVwZ3JhZGVNYW50bGVGdW5jAAAAAwUAAAABaQUAAAAKYXJ0ZWZhY3RJZAkAAGQAAAACBQAAAA1jb3Vwb25zQW1vdW50BQAAAAZhbW91bnQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADXB1dE9uQXJ0ZWZhY3QAAAABAAAACmFydGVmYWN0SWQEAAAADGZpcnN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAARYXR0YWNoZWRBc3NldEluZm8JAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAAZV1BPQTogTkZUIGlzIG5vdCBhdHRhY2hlZAMDCQEAAAACIT0AAAACCAUAAAARYXR0YWNoZWRBc3NldEluZm8AAAAGaXNzdWVyCQEAAAATZ2V0SW5jdWJhdG9yQWRkcmVzcwAAAAAJAQAAAAIhPQAAAAIIBQAAABFhdHRhY2hlZEFzc2V0SW5mbwAAAAZpc3N1ZXIJAQAAABFnZXRCcmVlZGVyQWRkcmVzcwAAAAAHCQAAAgAAAAECAAAAP1dQT0E6IFlvdSBjYW4gYXR0YWNoIG9ubHkgRFVDS3MgaXNzdWVkIGJ5IGluY3ViYXRvciBvciBicmVlZGVyIAQAAAAKaGFzU3dlYXRlcgkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAE2dldFdlYXJhYmxlc0FkZHJlc3MAAAAACQABLAAAAAIJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAgAAAA1fQVJULVhTV0VBVEVSBAAAAA1rTWFudGxlRXhpc3RzCQEAAAARa2V5QXJ0ZWZhY3RFeGlzdHMAAAACBQAAAApNQU5UTEVOQU1FCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADGtNYW50bGVPd25lcgkBAAAAEGtleUFydGVmYWN0T3duZXIAAAACBQAAAApNQU5UTEVOQU1FCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADWtNYW50bGVTdGF0dXMJAQAAABFrZXlBcnRlZmFjdFN0YXR1cwAAAAIFAAAACk1BTlRMRU5BTUUJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMJAQAAABlrZXlBcnRlZmFjdE93bmVyQW5kU3RhdHVzAAAAAwUAAAAKTUFOVExFTkFNRQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAJa0R1Y2tMb2NrCQEAAAALa2V5RHVja0xvY2sAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQEAAAADG1hbnRsZUV4aXN0cwkBAAAAEUBleHRyTmF0aXZlKDEwNTYpAAAAAQUAAAANa01hbnRsZUV4aXN0cwQAAAALbWFudGxlT3duZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAADGtNYW50bGVPd25lcgQAAAAMbWFudGxlU3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABBQAAAA1rTWFudGxlU3RhdHVzBAAAABFrQXJ0ZWZhY3RJZEJ5VHlwZQkBAAAAGmtleUFydGVmYWN0SWRCeUR1Y2tBbmRUeXBlAAAAAgUAAAAKTUFOVExFTkFNRQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAASEAAAABBQAAAAxtYW50bGVFeGlzdHMJAAACAAAAAQIAAAArV1BPQTogTWFudGxlIHdpdGggc3VjaCBhbiBJRCBkb2VzIG5vdCBleGlzdAMJAQAAAAIhPQAAAAIFAAAAC21hbnRsZU93bmVyCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgkAAAIAAAABAgAAACdXUE9BOiBZb3UncmUgbm90IGFuIG93bmVyIG9mIHRoZSBtYW50bGUDCQEAAAACIT0AAAACBQAAAAxtYW50bGVTdGF0dXMFAAAAClNUQVRVU0ZSRUUJAAACAAAAAQIAAAAdV1BPQTogTWFudGxlIGlzIGFscmVhZHkgdXNlZCEEAAAACXN0YWtlRHVjawMJAQAAAAIhPQAAAAIFAAAACmhhc1N3ZWF0ZXICAAAAAAMJAQAAAAlpc0phY2twb3QAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAAP8AAAABAkBAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAIAAAAUc3Rha2VORlRXaXRob3V0UGVyY2gFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMJAAP8AAAABAkBAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAIAAAAIc3Rha2VORlQFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMFAAAAA25pbAMJAAAAAAAAAgUAAAAJc3Rha2VEdWNrBQAAAAlzdGFrZUR1Y2sEAAAADmtQdXRPbkFydGVmYWN0CQEAAAAQa2V5UHV0T25BcnRlZmFjdAAAAAQFAAAACk1BTlRMRU5BTUUJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAphcnRlZmFjdElkCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAA5rUHV0T25BcnRlZmFjdAYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa01hbnRsZVN0YXR1cwUAAAAOU1RBVFVTT0NDVVBJRUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAXa0FydGVmYWN0T3duZXJBbmRTdGF0dXMFAAAADlNUQVRVU09DQ1VQSUVECQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrRHVja0xvY2sGCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWtBcnRlZmFjdElkQnlUeXBlBQAAAAphcnRlZmFjdElkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAD3Rha2VPZmZBcnRlZmFjdAAAAAIAAAAGZHVja0lkAAAADGFydGVmYWN0VHlwZQQAAAAYa0FydGVmYWN0SWRCeVR5cGVBbmREdWNrCQEAAAAaa2V5QXJ0ZWZhY3RJZEJ5RHVja0FuZFR5cGUAAAACBQAAAAxhcnRlZmFjdFR5cGUJAAJZAAAAAQUAAAAGZHVja0lkBAAAAAphcnRlZmFjdElkCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABBQAAABhrQXJ0ZWZhY3RJZEJ5VHlwZUFuZER1Y2sEAAAADWtBcnRlZmFjdFR5cGUJAQAAAA9rZXlBcnRlZmFjdFR5cGUAAAABCQACWQAAAAEFAAAACmFydGVmYWN0SWQEAAAADmtQdXRPbkFydGVmYWN0CQEAAAAQa2V5UHV0T25BcnRlZmFjdAAAAAQFAAAADGFydGVmYWN0VHlwZQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAABmR1Y2tJZAkAAlkAAAABBQAAAAphcnRlZmFjdElkBAAAABRrUHV0T25BcnRlZmFjdFN0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTYpAAAAAQUAAAAOa1B1dE9uQXJ0ZWZhY3QEAAAAF2tBcnRlZmFjdE93bmVyQW5kU3RhdHVzCQEAAAAZa2V5QXJ0ZWZhY3RPd25lckFuZFN0YXR1cwAAAAMFAAAADGFydGVmYWN0VHlwZQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAQAAAAJa0R1Y2tMb2NrCQEAAAALa2V5RHVja0xvY2sAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgUAAAAGZHVja0lkBAAAAA1rTWFudGxlU3RhdHVzCQEAAAARa2V5QXJ0ZWZhY3RTdGF0dXMAAAACBQAAAAxhcnRlZmFjdFR5cGUJAAJZAAAAAQUAAAAKYXJ0ZWZhY3RJZAMJAQAAAAIhPQAAAAIFAAAAFGtQdXRPbkFydGVmYWN0U3RhdHVzBgkAAAIAAAABAgAAACxXVE9BOiBUaGVyZSBpcyBubyBkdWNrIHdpdGggc3VjaCBwYXJhbWV0ZXJlcwQAAAAKaGFzU3dlYXRlcgkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAE2dldFdlYXJhYmxlc0FkZHJlc3MAAAAACQABLAAAAAIFAAAABmR1Y2tJZAIAAAANX0FSVC1YU1dFQVRFUgQAAAAIaXNTdGFrZWQDCQAAAAAAAAIJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18JAAQl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", "height": 3316719, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func isTestEnv () = {
5+ let testenv = match getBoolean(this, "TESTENV") {
6+ case x: Boolean =>
7+ x
8+ case _ =>
9+ false
10+ }
11+ testenv
12+ }
13+
14+
15+func tryGetString (key) = match getString(this, key) {
16+ case a: String =>
17+ a
18+ case _ =>
19+ ""
20+}
21+
22+
23+func tryGetStringExternal (address,key) = match getString(address, key) {
24+ case a: String =>
25+ a
26+ case _ =>
27+ ""
28+}
29+
30+
31+func oracleAddressKey () = "static_oracleAddress"
32+
33+
34+func breederAddressKey () = "static_breederAddress"
35+
36+
37+func incubatorAddressKey () = "static_incubatorAddress"
38+
39+
40+func eggAssetIdKey () = "static_eggAssetId"
41+
42+
43+func wearablesAddressKey () = "static_wearablesAddress"
44+
45+
46+func farmingAddressKey () = "static_farmingAddressNew"
47+
48+
49+func couponsAddressKey () = "static_couponsAddress"
50+
51+
52+func rebirthAddressKey () = "static_rebirthAddress"
53+
54+
55+func burnAddressKey () = "static_burnAddress"
56+
57+
58+func getOracle () = Address(fromBase58String(tryGetString(oracleAddressKey())))
59+
60+
61+func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), breederAddressKey())))
62+
63+
64+func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), incubatorAddressKey())))
65+
66+
67+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), eggAssetIdKey()))
68+
69+
70+func getWearablesAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), wearablesAddressKey())))
71+
72+
73+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), farmingAddressKey())))
74+
75+
76+func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), couponsAddressKey())))
77+
78+
79+func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), rebirthAddressKey())))
80+
81+
82+func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), burnAddressKey())))
83+
84+
85+let MANTLENAME = "mantle"
86+
87+let STATUSFREE = "FREE"
88+
89+let STATUSOCCUPIED = "OCCUPIED"
90+
91+func keyDuckLock (callerAddress,duckId) = (((("address_" + callerAddress) + "_duck_") + duckId) + "_status")
92+
93+
94+func keyInvestor (callerAddress) = (("address_" + callerAddress) + "_amount")
95+
96+
97+func keyArtefactInvested (type,artefactId) = (((("artefact_" + type) + "_artefactId_") + artefactId) + "_invested")
98+
99+
100+func keyOnlyArtefactLevel (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_level")
101+
102+
103+func keyArtefactIdByDuckAndType (type,duckId) = (((("artefact_ " + type) + "_duck_") + toBase58String(duckId)) + "_artefactId")
104+
105+
106+func keyArtefactOwner (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_owner")
107+
108+
109+func keyArtefactOwnerAndStatus (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
110+
111+
112+func keyArtefactStatus (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
113+
114+
115+func keyArtefactType (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_type")
116+
117+
118+func keyArtefactLevel (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_level")
119+
120+
121+func keyPutOnArtefact (type,owner,duckId,artefactId) = (((((((("address_" + owner) + "_duck_") + duckId) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
122+
123+
124+func keyArtefactExists (type,artefactId) = ((("artefact_" + type) + "_artefactId_") + toBase58String(artefactId))
125+
126+
127+func isJackpot (assetId) = (takeRight(value(value(assetInfo(assetId)).name), 1) == "U")
128+
129+
130+func asInt (value) = match value {
131+ case int: Int =>
132+ int
133+ case _ =>
134+ throw("WAI: wrong type, expected: Int")
135+}
136+
137+
138+func upgradeMantleFunc (i,artefactId,amount) = {
139+ let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
140+ let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
141+ let mantleExists = getBooleanValue(kMantleExists)
142+ let mantleOwner = getStringValue(kMantleOwner)
143+ if (!(mantleExists))
144+ then throw("WUPM: Mantle with such an ID does not exist")
145+ else if ((mantleOwner != toString(i.originCaller)))
146+ then throw("WUPM: You're not an owner of the mantle")
147+ else {
148+ let kMantleInvested = keyArtefactInvested(MANTLENAME, artefactId)
149+ let mantleAlreadyInvested = getIntegerValue(kMantleInvested)
150+ let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
151+ let kOnlyArtefactLevel = keyOnlyArtefactLevel(fromBase58String(artefactId))
152+ let totalInvested = (mantleAlreadyInvested + amount)
153+ let newLevel = (((10 * pow(totalInvested, 8, 6, 1, 8, HALFUP)) + 100000000) / 100000000)
154+ if ((newLevel >= 340))
155+ then throw("DUMF: You reached the max level! Max level is 340!")
156+ else [IntegerEntry(kMantleLevel, newLevel), IntegerEntry(kMantleInvested, totalInvested), IntegerEntry(kOnlyArtefactLevel, newLevel)]
157+ }
158+ }
159+
160+
161+@Callable(i)
162+func configureOracle (oracle) = if ((i.caller != this))
163+ then throw("WCO: admin only")
164+ else [StringEntry("static_oracleAddress", oracle)]
165+
166+
167+
168+@Callable(i)
169+func issueFreeMantle (address,type,level) = if ((i.caller != this))
170+ then throw("WIFM: Can be called only by admin")
171+ else if ((type != MANTLENAME))
172+ then throw("WIFM: You can buy only mantles now")
173+ else {
174+ let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
175+ let mantleNftId = calculateAssetId(issueMantleNFT)
176+ let kMantleLevel = keyArtefactLevel(MANTLENAME, address, mantleNftId)
177+ let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
178+ let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
179+ let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
180+ let kArtefactType = keyArtefactType(mantleNftId)
181+ let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
182+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, address, mantleNftId)
183+ let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
184+ let invested = pow((level - 1), 1, (1000000000 / 6), 8, 8, HALFUP)
185+ $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))
186+ }
187+
188+
189+
190+@Callable(i)
191+func buyArtefact (type) = if ((type != MANTLENAME))
192+ then throw("WBA: You can buy only mantles now")
193+ else {
194+ let MANTLEPRICE = 1000000
195+ let amountPaidByCoupons = 0
196+ if ((amountPaidByCoupons == amountPaidByCoupons))
197+ then {
198+ let leftToPay = ((MANTLEPRICE * 100) - amountPaidByCoupons)
199+ let payment = if ((leftToPay != 0))
200+ then {
201+ let firstPayment = value(i.payments[0])
202+ if ((firstPayment.assetId != getEggAssetId()))
203+ then throw(("WBA: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
204+ else if ((firstPayment.amount != leftToPay))
205+ then throw(("WBA: To buy a mantle you currently need the following amount of EGGlets: " + toString(leftToPay)))
206+ else leftToPay
207+ }
208+ else 0
209+ if ((payment == payment))
210+ then {
211+ let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
212+ let mantleNftId = calculateAssetId(issueMantleNFT)
213+ let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.caller), mantleNftId)
214+ let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
215+ let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
216+ let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
217+ let kArtefactType = keyArtefactType(mantleNftId)
218+ let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
219+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.caller), mantleNftId)
220+ let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
221+[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)]
222+ }
223+ else throw("Strict value is not equal to itself.")
224+ }
225+ else throw("Strict value is not equal to itself.")
226+ }
227+
228+
229+
230+@Callable(i)
231+func upgradeMantle (artefactId) = {
232+ let upgradePointPrice = 1000000
233+ let firstPayment = value(i.payments[0])
234+ let amount = firstPayment.amount
235+ if ((firstPayment.assetId != getEggAssetId()))
236+ then throw(("WUM: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
237+ else if ((upgradePointPrice > firstPayment.amount))
238+ then throw(("WUM: Minimal payment for upgrading mantle is: " + toString(upgradePointPrice)))
239+ else upgradeMantleFunc(i, artefactId, amount)
240+ }
241+
242+
243+
244+@Callable(i)
245+func upgradeMantleByCoupons (artefactId,couponsAmount) = {
246+ let upgradePointPrice = 1000000
247+ let amount = if ((size(i.payments) == 1))
248+ then {
249+ let firstPayment = value(i.payments[0])
250+ if ((firstPayment.assetId != getEggAssetId()))
251+ then throw(("WUMBC: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
252+ else {
253+ let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), firstPayment.amount)])
254+ if ((burnCall == burnCall))
255+ then firstPayment.amount
256+ else throw("Strict value is not equal to itself.")
257+ }
258+ }
259+ else 0
260+ if ((upgradePointPrice > (couponsAmount + amount)))
261+ then throw(("WUMBC: Minimal payment for upgrading mantle is: " + toString(upgradePointPrice)))
262+ else {
263+ let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [couponsAmount], nil))
264+ if ((amountPaidByCoupons == amountPaidByCoupons))
265+ then if ((couponsAmount != amountPaidByCoupons))
266+ then throw("WUMBC: Not enough coupons! Please make sure to pick lower coupon amount!")
267+ else upgradeMantleFunc(i, artefactId, (couponsAmount + amount))
268+ else throw("Strict value is not equal to itself.")
269+ }
270+ }
271+
272+
273+
274+@Callable(i)
275+func putOnArtefact (artefactId) = {
276+ let firstPayment = value(i.payments[0])
277+ let attachedAssetInfo = value(assetInfo(value(firstPayment.assetId)))
278+ if ((firstPayment.amount != 1))
279+ then throw("WPOA: NFT is not attached")
280+ else if (if ((attachedAssetInfo.issuer != getIncubatorAddress()))
281+ then (attachedAssetInfo.issuer != getBreederAddress())
282+ else false)
283+ then throw("WPOA: You can attach only DUCKs issued by incubator or breeder ")
284+ else {
285+ let hasSweater = tryGetStringExternal(getWearablesAddress(), (toBase58String(value(firstPayment.assetId)) + "_ART-XSWEATER"))
286+ let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
287+ let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
288+ let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(artefactId))
289+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
290+ let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(value(firstPayment.assetId)))
291+ let mantleExists = getBooleanValue(kMantleExists)
292+ let mantleOwner = getStringValue(kMantleOwner)
293+ let mantleStatus = getStringValue(kMantleStatus)
294+ let kArtefactIdByType = keyArtefactIdByDuckAndType(MANTLENAME, value(firstPayment.assetId))
295+ if (!(mantleExists))
296+ then throw("WPOA: Mantle with such an ID does not exist")
297+ else if ((mantleOwner != toString(i.originCaller)))
298+ then throw("WPOA: You're not an owner of the mantle")
299+ else if ((mantleStatus != STATUSFREE))
300+ then throw("WPOA: Mantle is already used!")
301+ else {
302+ let stakeDuck = if ((hasSweater != ""))
303+ then if (isJackpot(value(firstPayment.assetId)))
304+ then invoke(getFarmingAddress(), "stakeNFTWithoutPerch", nil, i.payments)
305+ else invoke(getFarmingAddress(), "stakeNFT", nil, i.payments)
306+ else nil
307+ if ((stakeDuck == stakeDuck))
308+ then {
309+ let kPutOnArtefact = keyPutOnArtefact(MANTLENAME, toString(i.originCaller), toBase58String(value(firstPayment.assetId)), fromBase58String(artefactId))
310+[BooleanEntry(kPutOnArtefact, true), StringEntry(kMantleStatus, STATUSOCCUPIED), StringEntry(kArtefactOwnerAndStatus, STATUSOCCUPIED), BooleanEntry(kDuckLock, true), StringEntry(kArtefactIdByType, artefactId)]
311+ }
312+ else throw("Strict value is not equal to itself.")
313+ }
314+ }
315+ }
316+
317+
318+
319+@Callable(i)
320+func takeOffArtefact (duckId,artefactType) = {
321+ let kArtefactIdByTypeAndDuck = keyArtefactIdByDuckAndType(artefactType, fromBase58String(duckId))
322+ let artefactId = getStringValue(kArtefactIdByTypeAndDuck)
323+ let kArtefactType = keyArtefactType(fromBase58String(artefactId))
324+ let kPutOnArtefact = keyPutOnArtefact(artefactType, toString(i.originCaller), duckId, fromBase58String(artefactId))
325+ let kPutOnArtefactStatus = getBooleanValue(kPutOnArtefact)
326+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(artefactType, toString(i.originCaller), fromBase58String(artefactId))
327+ let kDuckLock = keyDuckLock(toString(i.originCaller), duckId)
328+ let kMantleStatus = keyArtefactStatus(artefactType, fromBase58String(artefactId))
329+ if ((kPutOnArtefactStatus != true))
330+ then throw("WTOA: There is no duck with such parameteres")
331+ else {
332+ let hasSweater = tryGetStringExternal(getWearablesAddress(), (duckId + "_ART-XSWEATER"))
333+ let isStaked = if ((tryGetStringExternal(getFarmingAddress(), (((("address_" + toString(i.originCaller)) + "_asset_") + duckId) + "_unstaker")) == ""))
334+ then false
335+ else true
336+ let unstakeDuck = if (if ((hasSweater != ""))
337+ then isStaked
338+ else false)
339+ then if (isJackpot(fromBase58String(duckId)))
340+ then asInt(invoke(getFarmingAddress(), "unstakeJackpot", [duckId], i.payments))
341+ else asInt(invoke(getFarmingAddress(), "unstakeNFT", [duckId], i.payments))
342+ else 0
343+ if ((unstakeDuck == unstakeDuck))
344+ then {
345+ let sendRewards = if ((unstakeDuck > 0))
346+ then [ScriptTransfer(i.originCaller, unstakeDuck, getEggAssetId())]
347+ else nil
348+ ([DeleteEntry(kPutOnArtefact), DeleteEntry(kArtefactIdByTypeAndDuck), DeleteEntry(kDuckLock), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), ScriptTransfer(i.originCaller, 1, fromBase58String(duckId))] ++ sendRewards)
349+ }
350+ else throw("Strict value is not equal to itself.")
351+ }
352+ }
353+
354+
355+@Verifier(tx)
356+func verify () = if (isTestEnv())
357+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
358+ else {
359+ let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
360+ let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
361+ let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
362+ let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
363+ then 1
364+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
365+ then 1
366+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
367+ then 1
368+ else 0
369+ let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
370+ then 1
371+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
372+ then 1
373+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
374+ then 1
375+ else 0
376+ let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
377+ then 1
378+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
379+ then 1
380+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
381+ then 1
382+ else 0
383+ let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
384+ match tx {
385+ case _ =>
386+ (signaturesCount >= 2)
387+ }
388+ }
389+

github/deemru/w8io/169f3d6 
33.20 ms