tx · Dx2SV1JCHKuP6j3NR7k47VFDPgwhjfnBcRzQqN97W38S

3N2V9vbP8zDTDvNMR8jQeGuUu22vz1KCv5i:  -0.02200000 Waves

2022.09.12 12:58 [2225732] smart account 3N2V9vbP8zDTDvNMR8jQeGuUu22vz1KCv5i > SELF 0.00000000 Waves

{ "type": 13, "id": "Dx2SV1JCHKuP6j3NR7k47VFDPgwhjfnBcRzQqN97W38S", "fee": 2200000, "feeAssetId": null, "timestamp": 1662976715981, "version": 1, "sender": "3N2V9vbP8zDTDvNMR8jQeGuUu22vz1KCv5i", "senderPublicKey": "3JBooHFx9f8xuJuUNn9AeF8B4U8a9onpNMbvzV3UTVTk", "proofs": [ "37U6ZEWLHMTYuVbNL9rypKdhETZ4pGqoP29h83kwFCoXbk8sY9bkXehzTMt8oHxvmwAPZqHEQJTVDF16jC6qckq" ], "script": "base64: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VXNlcgAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MFAAAAA1NFUAAAAAAAAAAAAwEAAAAYZ2V0VXNlckxhc3RDbGFpbWVkSGVpZ2h0AAAAAgAAAAdhc3NldElkAAAAB2FkZHJlc3MJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACCQAEtQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQiAAAAAQkBAAAAB2tleVVzZXIAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBQAAAANTRVAAAAAAAAAAAAUBAAAAE2F2YWlsYWJsZVRvQ2xhaW1Ob3cAAAACAAAAB2Fzc2V0SWQAAAAHYWRkcmVzcwQAAAANaXNSZXZva2VkVXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABCAAAAABCQEAAAAKa2V5UmV2b2tlZAAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MHAwUAAAANaXNSZXZva2VkVXNlcgkBAAAAFmdldFVzZXJSZW1haW5pbmdBbW91bnQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAApsYXN0SGVpZ2h0CQEAAAAYZ2V0VXNlckxhc3RDbGFpbWVkSGVpZ2h0AAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwMJAABnAAAAAgUAAAAKbGFzdEhlaWdodAUAAAAGaGVpZ2h0AAAAAAAAAAAABAAAAANlbmQJAQAAAAV2YWx1ZQAAAAEJAAQfAAAAAQkBAAAAEWtleVVzZXJWZXN0aW5nRW5kAAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAANlbmQJAQAAABZnZXRVc2VyUmVtYWluaW5nQW1vdW50AAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwQAAAAPdW5jbGFpbWVkUGVyaW9kCQAAZQAAAAIFAAAABmhlaWdodAUAAAAKbGFzdEhlaWdodAkAAGgAAAACCQEAAAAFdmFsdWUAAAABCQAEHwAAAAEJAQAAABVrZXlVc2VyQW1vdW50UGVyQmxvY2sAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBQAAAA91bmNsYWltZWRQZXJpb2QBAAAAFWF2YWlsYWJsZVRvQ2xhaW1GaXhlZAAAAAMAAAAHYXNzZXRJZAAAAAdhZGRyZXNzAAAADHJlbGVhc2VCbG9jawkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABCQEAAAATa2V5VXNlckZpeGVkRGVwb3NpdAAAAAMFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MFAAAADHJlbGVhc2VCbG9jawAAAAAAAAAAAAEAAAANY2xhaW1JbnRlcm5hbAAAAAIAAAAHYXNzZXRJZAAAAAdhZGRyZXNzBAAAAARhZGRyCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAdhZGRyZXNzBAAAAAVhc3NldAkAAlkAAAABBQAAAAdhc3NldElkBAAAAAZhbW91bnQJAQAAABNhdmFpbGFibGVUb0NsYWltTm93AAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwQAAAAGY2hlY2tzCQAETAAAAAIDCQAAAAAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQgAAAAAQkBAAAADmtleUNsYWltRGVuaWVkAAAAAQUAAAAHYXNzZXRJZAcHBgkBAAAACHRocm93RXJyAAAAAQIAAAASYXNzZXQgY2xhaW0gZGVuaWVkCQAETAAAAAIDCQEAAAACIT0AAAACBQAAAAZhbW91bnQAAAAAAAAAAAAGCQEAAAAIdGhyb3dFcnIAAAABAgAAABBub3RoaW5nIHRvIGNsYWltBQAAAANuaWwDCQAAAAAAAAIFAAAABmNoZWNrcwUAAAAGY2hlY2tzBAAAAAt0b3RhbEFtb3VudAkBAAAAEmdldFVzZXJUb3RhbEFtb3VudAAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MEAAAAD3JlbWFpbmluZ0Ftb3VudAkBAAAAFmdldFVzZXJSZW1haW5pbmdBbW91bnQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAA1jbGFpbWVkQW1vdW50CQEAAAAUZ2V0VXNlckNsYWltZWRBbW91bnQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAA1pc1Jldm9rZWRVc2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEIAAAAAEJAQAAAAprZXlSZXZva2VkAAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwcDBQAAAA1pc1Jldm9rZWRVc2VyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABGFkZHIFAAAAD3JlbWFpbmluZ0Ftb3VudAUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB2tleVVzZXIAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzCQEAAAAJdmFsdWVVc2VyAAAABAUAAAALdG90YWxBbW91bnQAAAAAAAAAAAAJAABkAAAAAgUAAAANY2xhaW1lZEFtb3VudAUAAAAPcmVtYWluaW5nQW1vdW50BQAAAAZoZWlnaHQFAAAAA25pbAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAARhZGRyBQAAAAZhbW91bnQFAAAABWFzc2V0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlVc2VyAAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwkBAAAACXZhbHVlVXNlcgAAAAQFAAAAC3RvdGFsQW1vdW50CQAAZQAAAAIFAAAAD3JlbWFpbmluZ0Ftb3VudAUAAAAGYW1vdW50CQAAZAAAAAIFAAAADWNsYWltZWRBbW91bnQFAAAABmFtb3VudAUAAAAGaGVpZ2h0BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAABJjbGFpbUZpeGVkSW50ZXJuYWwAAAADAAAAB2Fzc2V0SWQAAAAHYWRkcmVzcwAAAAxyZWxlYXNlQmxvY2sEAAAABmNoZWNrcwkABEwAAAACAwkAAAAAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEIAAAAAEJAQAAAA5rZXlDbGFpbURlbmllZAAAAAEFAAAAB2Fzc2V0SWQHBwYJAQAAAAh0aHJvd0VycgAAAAECAAAAEmFzc2V0IGNsYWltIGRlbmllZAkABEwAAAACAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAADHJlbGVhc2VCbG9jawYJAQAAAAh0aHJvd0VycgAAAAECAAAAP2N1cnJlbnQgaGVpZ2h0IG11c3QgYmUgbW9yZSB0aGFuIHJlbGVh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ZAQAAAAQYXZhaWxhYmxlVG9DbGFpbQkBAAAAE2F2YWlsYWJsZVRvQ2xhaW1Ob3cAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAApmb3JjZUNsYWltAwkAAGYAAAACBQAAABBhdmFpbGFibGVUb0NsYWltAAAAAAAAAAAACQEAAAANY2xhaW1JbnRlcm5hbAAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MFAAAABHVuaXQDCQAAAAAAAAIFAAAACmZvcmNlQ2xhaW0FAAAACmZvcmNlQ2xhaW0EAAAACWVuZEhlaWdodAkBAAAABXZhbHVlAAAAAQkABB8AAAABCQEAAAARa2V5VXNlclZlc3RpbmdFbmQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAAp2ZXN0aW5nTGVuCQAAZQAAAAIFAAAACWVuZEhlaWdodAUAAAAGaGVpZ2h0BAAAAA5hbW91bnRQZXJCbG9jawkBAAAABXZhbHVlAAAAAQkABB8AAAABCQEAAAAVa2V5VXNlckFtb3VudFBlckJsb2NrAAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwQAAAARaW5jQW1vdW50UGVyQmxvY2sJAABpAAAAAgUAAAAGYW1vdW50BQAAAAp2ZXN0aW5nTGVuBAAAAA91c2VyVG90YWxBbW91bnQJAQAAABJnZXRVc2VyVG90YWxBbW91bnQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAABN1c2VyUmVtYWluaW5nQW1vdW50CQEAAAAWZ2V0VXNlclJlbWFpbmluZ0Ftb3VudAAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAUZ2V0VXNlckNsYWltZWRBbW91bnQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAABV1c2VyTGFzdENsYWltZWRIZWlnaHQJAQAAABhnZXRVc2VyTGFzdENsYWltZWRIZWlnaHQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAAZjaGVja3MJAARMAAAAAgMJAAAAAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABCAAAAABCQEAAAAKa2V5UmV2b2tlZAAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MHBwYJAQAAAAh0aHJvd0VycgAAAAECAAAAG2RlcG9zaXQgZm9yIHVzZXIgaXMgcmV2b2tlZAkABEwAAAACAwkBAAAAAiE9AAAAAgkABCIAAAABCQEAAAAHa2V5VXNlcgAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MFAAAABHVuaXQGCQEAAAAIdGhyb3dFcnIAAAABAgAAAB9kZXBvc2l0IGZvciB1c2VyIGRvZXNuJ3QgZXhpc3RzCQAETAAAAAIDCQEAAAACIT0AAAACBQAAABFpbmNBbW91bnRQZXJCbG9jawAAAAAAAAAAAAYJAQAAAAh0aHJvd0VycgAAAAECAAAAOGF0dGFjaGVkIGFtb3VudCB0b28gc21hbGwg4oCUIGluY3JlYXNlIGlzIHplcm8gcGVyIGJsb2NrBQAAAANuaWwDCQAAAAAAAAIFAAAABmNoZWNrcwUAAAAGY2hlY2tzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlVc2VyAAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwkBAAAACXZhbHVlVXNlcgAAAAQJAABkAAAAAgUAAAAPdXNlclRvdGFsQW1vdW50BQAAAAZhbW91bnQJAABkAAAAAgUAAAATdXNlclJlbWFpbmluZ0Ftb3VudAUAAAAGYW1vdW50BQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAAVdXNlckxhc3RDbGFpbWVkSGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAVa2V5VXNlckFtb3VudFBlckJsb2NrAAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwkAAGQAAAACBQAAAA5hbW91bnRQZXJCbG9jawUAAAARaW5jQW1vdW50UGVyQmxvY2sFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEHJldm9rZURlcG9zaXRGb3IAAAACAAAAB2Fzc2V0SWQAAAAHYWRkcmVzcwQAAAALdG90YWxBbW91bnQJAQAAABJnZXRVc2VyVG90YWxBbW91bnQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAA9yZW1haW5pbmdBbW91bnQJAQAAABZnZXRVc2VyUmVtYWluaW5nQW1vdW50AAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwQAAAAPY2xhaW1lZFdYQW1vdW50CQEAAAAUZ2V0VXNlckNsYWltZWRBbW91bnQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAABFsYXN0Q2xhaW1lZEhlaWdodAkBAAAAGGdldFVzZXJMYXN0Q2xhaW1lZEhlaWdodAAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MEAAAAEnVuY2xhaW1lZEFtb3VudE5vdwkBAAAAE2F2YWlsYWJsZVRvQ2xhaW1Ob3cAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAAxyZXZva2VkVG90YWwJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQkBAAAAD2tleVJldm9rZWRUb3RhbAAAAAEFAAAAB2Fzc2V0SWQAAAAAAAAAAAAEAAAADmFtb3VudFRvUmV2b2tlCQAAZQAAAAIFAAAAD3JlbWFpbmluZ0Ftb3VudAUAAAASdW5jbGFpbWVkQW1vdW50Tm93BAAAAA9uZXdSZXZva2VkVG90YWwJAABkAAAAAgUAAAAMcmV2b2tlZFRvdGFsBQAAAA5hbW91bnRUb1Jldm9rZQQAAAAGY2hlY2tzCQAETAAAAAIJAQAAAAltdXN0QWRtaW4AAAABBQAAAAFpCQAETAAAAAIDCQEAAAACIT0AAAACCQAEIgAAAAEJAQAAAAdrZXlVc2VyAAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwUAAAAEdW5pdAYJAQAAAAh0aHJvd0VycgAAAAECAAAALGRlcG9zaXQgb2YgdGhpcyBhc3NldCBmb3IgdXNlciBpcyBub3QgZXhpc3RzCQAETAAAAAIDCQAAZgAAAAIFAAAAD25ld1Jldm9rZWRUb3RhbAUAAAAMcmV2b2tlZFRvdGFsBgkBAAAACHRocm93RXJyAAAAAQIAAAA4bmV3UmV2b2tlZFRvdGFsIGNhbid0IGJlIGxlc3Mgb3IgZXF1YWwgdGhhbiByZXZva2VkVG90YWwFAAAAA25pbAMJAAAAAAAAAgUAAAAGY2hlY2tzBQAAAAZjaGVja3MJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAAprZXlSZXZva2VkAAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlSZXZva2VkVG90YWwAAAABBQAAAAdhc3NldElkBQAAAA9uZXdSZXZva2VkVG90YWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB2tleVVzZXIAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzCQEAAAAJdmFsdWVVc2VyAAAABAUAAAALdG90YWxBbW91bnQFAAAAEnVuY2xhaW1lZEFtb3VudE5vdwUAAAAPY2xhaW1lZFdYQW1vdW50BQAAABFsYXN0Q2xhaW1lZEhlaWdodAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAVjbGFpbQAAAAEAAAAHYXNzZXRJZAkBAAAADWNsYWltSW50ZXJuYWwAAAACBQAAAAdhc3NldElkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMAAAABaQEAAAAIY2xhaW1Gb3IAAAACAAAAB2Fzc2V0SWQAAAAHYWRkcmVzcwkBAAAADWNsYWltSW50ZXJuYWwAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzAAAAAWkBAAAADWNsYWltUkVBRE9OTFkAAAACAAAAB2Fzc2V0SWQAAAAHYWRkcmVzcwQAAAAGYW1vdW50CQEAAAATYXZhaWxhYmxlVG9DbGFpbU5vdwAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MJAAUUAAAAAgUAAAADbmlsBQAAAAZhbW91bnQAAAABaQEAAAAVY3JlYXRlRml4ZWREZXBvc2l0Rm9yAAAAAgAAAAdhZGRyZXNzAAAADHJlbGVhc2VCbG9jawQAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAAB2Fzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAGY2hlY2tzCQAETAAAAAIDCQAAZgAAAAIFAAAADHJlbGVhc2VCbG9jawUAAAAGaGVpZ2h0BgkBAAAACHRocm93RXJyAAAAAQIAAAAlcmVsZWFzZUJsb2NrIG11c3QgYmUgbW9yZSB0aGFuIGhlaWdodAkABEwAAAACAwkAAAAAAAACCQAEHwAAAAEJAQAAABNrZXlVc2VyRml4ZWREZXBvc2l0AAAAAwUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwUAAAAMcmVsZWFzZUJsb2NrBQAAAAR1bml0BgkBAAAACHRocm93RXJyAAAAAQIAAAAvZGVwb3NpdCBmb3IgdGhpcyBoZWlnaHQgZm9yIHVzZXIgYWxyZWFkeSBleGlzdHMFAAAAA25pbAMJAAAAAAAAAgUAAAAGY2hlY2tzBQAAAAZjaGVja3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABNrZXlVc2VyRml4ZWREZXBvc2l0AAAAAwUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwUAAAAMcmVsZWFzZUJsb2NrBQAAAAZhbW91bnQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAKY2xhaW1GaXhlZAAAAAIAAAAHYXNzZXRJZAAAAAxyZWxlYXNlQmxvY2sJAQAAABJjbGFpbUZpeGVkSW50ZXJuYWwAAAADBQAAAAdhc3NldElkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAADHJlbGVhc2VCbG9jawAAAAFpAQAAAA1jbGFpbUZpeGVkRm9yAAAAAwAAAAdhc3NldElkAAAAB2FkZHJlc3MAAAAMcmVsZWFzZUJsb2NrCQEAAAASY2xhaW1GaXhlZEludGVybmFsAAAAAwUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwUAAAAMcmVsZWFzZUJsb2NrAAAAAWkBAAAAEmNsYWltRml4ZWRSRUFET05MWQAAAAMAAAAHYXNzZXRJ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U3RhcnQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzCQAETAAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQfAAAAAQkBAAAAEWtleVVzZXJWZXN0aW5nRW5kAAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwkABEwAAAACCQEAAAASZ2V0VXNlclRvdGFsQW1vdW50AAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwkABEwAAAACCQEAAAAUZ2V0VXNlckNsYWltZWRBbW91bnQAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzCQAETAAAAAIJAQAAABZnZXRVc2VyUmVtYWluaW5nQW1vdW50AAAAAgUAAAAHYXNzZXRJZAUAAAAHYWRkcmVzcwkABEwAAAACCQEAAAATYXZhaWxhYmxlVG9DbGFpbU5vdwAAAAIFAAAAB2Fzc2V0SWQFAAAAB2FkZHJlc3MFAAAAA25pbAAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQEAAAAIdGhyb3dFcnIAAAABAgAAABJubyBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAABWhhc1BNBQAAAAVoYXNQTQQAAAAHY2hlY2tQTQMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQEAAAAFdmFsdWUAAAABBQAAAAJwbQYJAQAAAAh0aHJvd0VycgAAAAECAAAAG3lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAHY2hlY2tQTQUAAAAHY2hlY2tQTQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAACcG0JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAA90YXJnZXRQdWJsaWNLZXkEAAAAByRtYXRjaDAJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDAFAAAAAnBrAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0CAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAgAAAAECAAAAC01hdGNoIGVycm9yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAPdGFyZ2V0UHVibGljS2V5/dHkMg==", "chainId": 84, "height": 2225732, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ELq4XBjtrY6WfpJaZMFx8d5h5LwUUzWBroq93zEYFuYy Next: GMLLNavJWcjseCSktGqJGo97VaWZ6KfznxzRyFiinHP2 Diff:
OldNewDifferences
1717 func f (g,h) = makeString(["%s%s", g, h], a)
1818
1919
20-func i (g,h) = makeString(["%s%s%s", "revoked", g, h], a)
20+func i (g,h,j) = makeString(["%s%s%s%d", "fixedDeposit", g, h, toString(j)], a)
2121
2222
23-func j (g) = makeString(["%s%s", "revokedTotal", g], a)
23+func k (g,h) = makeString(["%s%s%s", "revoked", g, h], a)
2424
2525
26-func k (g,h) = makeString(["%s%s%s", "vestingStart", g, h], a)
26+func l (g) = makeString(["%s%s", "revokedTotal", g], a)
2727
2828
29-func l (g,h) = makeString(["%s%s%s", "vestingEnd", g, h], a)
29+func m (g,h) = makeString(["%s%s%s", "vestingStart", g, h], a)
3030
3131
32-func m (g,h) = makeString(["%s%s%s", "amountPerBlock", g, h], a)
32+func n (g,h) = makeString(["%s%s%s", "vestingEnd", g, h], a)
3333
3434
35-func n (g) = makeString(["%s%s", "claimDenied", g], a)
35+func o (g,h) = makeString(["%s%s%s", "amountPerBlock", g, h], a)
3636
3737
38-func o (p) = throw(makeString(["vesting_multiasset.ride:", p], " "))
38+func p (g) = makeString(["%s%s", "claimDenied", g], a)
3939
4040
41-func q () = {
42- let r = getString(c())
43- if ($isInstanceOf(r, "String"))
41+func q (r) = throw(makeString(["vesting_multiasset.ride:", r], " "))
42+
43+
44+func s () = {
45+ let t = getString(c())
46+ if ($isInstanceOf(t, "String"))
4447 then {
45- let s = r
46- fromBase58String(s)
48+ let u = t
49+ fromBase58String(u)
4750 }
48- else if ($isInstanceOf(r, "Unit"))
51+ else if ($isInstanceOf(t, "Unit"))
4952 then unit
5053 else throw("Match error")
5154 }
5255
5356
54-func t () = {
55- let r = getString(d())
56- if ($isInstanceOf(r, "String"))
57+func v () = {
58+ let t = getString(d())
59+ if ($isInstanceOf(t, "String"))
5760 then {
58- let s = r
59- fromBase58String(s)
61+ let u = t
62+ fromBase58String(u)
6063 }
61- else if ($isInstanceOf(r, "Unit"))
64+ else if ($isInstanceOf(t, "Unit"))
6265 then unit
6366 else throw("Match error")
6467 }
6568
6669
67-func u (v) = {
68- let w = o("permission denied")
69- let r = q()
70- if ($isInstanceOf(r, "ByteVector"))
70+func w (x) = {
71+ let y = q("permission denied")
72+ let t = s()
73+ if ($isInstanceOf(t, "ByteVector"))
7174 then {
72- let x = r
73- if ((v.callerPublicKey == x))
75+ let z = t
76+ if ((x.callerPublicKey == z))
7477 then true
75- else w
78+ else y
7679 }
77- else if ($isInstanceOf(r, "Unit"))
78- then if ((v.caller == this))
80+ else if ($isInstanceOf(t, "Unit"))
81+ then if ((x.caller == this))
7982 then true
80- else w
83+ else y
8184 else throw("Match error")
8285 }
8386
8487
85-func y (v) = {
86- let z = split(valueOrElse(getString(e()), b), a)
87- if (containsElement(z, toBase58String(v.callerPublicKey)))
88+func A (x) = {
89+ let B = split(valueOrElse(getString(e()), b), a)
90+ if (containsElement(B, toBase58String(x.callerPublicKey)))
8891 then true
8992 else {
90- let A = u(v)
91- if ((A == A))
93+ let C = w(x)
94+ if ((C == C))
9295 then true
9396 else throw("Strict value is not equal to itself.")
9497 }
9598 }
9699
97100
98-func B (C,D,E,F) = makeString(["%d%d%d%d%d", C, D, "0", E, F], a)
101+func D (E,F,G,H) = makeString(["%d%d%d%d%d", E, F, "0", G, H], a)
99102
100103
101-func G (C,D,E,F) = B(toString(C), toString(D), toString(E), toString(F))
104+func I (E,F,G,H) = D(toString(E), toString(F), toString(G), toString(H))
102105
103106
104-func H (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[1])
107+func J (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[1])
105108
106109
107-func I (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[2])
110+func K (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[2])
108111
109112
110-func J (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[3])
113+func L (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[3])
111114
112115
113-func K (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[5])
116+func M (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[5])
114117
115118
116-func L (g,h) = {
117- let M = valueOrElse(getBoolean(i(g, h)), false)
118- if (M)
119- then I(g, h)
119+func N (g,h) = {
120+ let O = valueOrElse(getBoolean(k(g, h)), false)
121+ if (O)
122+ then K(g, h)
120123 else {
121- let N = K(g, h)
122- if ((N >= height))
124+ let P = M(g, h)
125+ if ((P >= height))
123126 then 0
124127 else {
125- let O = value(getInteger(l(g, h)))
126- if ((height > O))
127- then I(g, h)
128+ let Q = value(getInteger(n(g, h)))
129+ if ((height > Q))
130+ then K(g, h)
128131 else {
129- let P = (height - N)
130- (value(getInteger(m(g, h))) * P)
132+ let R = (height - P)
133+ (value(getInteger(o(g, h))) * R)
131134 }
132135 }
133136 }
134137 }
135138
136139
137-func Q (g,h) = {
138- let R = addressFromStringValue(h)
139- let S = fromBase58String(g)
140- let T = L(g, h)
141- let U = [if ((valueOrElse(getBoolean(n(g)), false) == false))
140+func S (g,h,T) = valueOrElse(getInteger(i(g, h, T)), 0)
141+
142+
143+func U (g,h) = {
144+ let V = addressFromStringValue(h)
145+ let W = fromBase58String(g)
146+ let X = N(g, h)
147+ let Y = [if ((valueOrElse(getBoolean(p(g)), false) == false))
142148 then true
143- else o("asset claim denied"), if ((T != 0))
149+ else q("asset claim denied"), if ((X != 0))
144150 then true
145- else o("nothing to claim")]
146- if ((U == U))
151+ else q("nothing to claim")]
152+ if ((Y == Y))
147153 then {
148- let C = H(g, h)
149- let D = I(g, h)
150- let V = J(g, h)
151- let M = valueOrElse(getBoolean(i(g, h)), false)
152- if (M)
153- then [ScriptTransfer(R, D, S), StringEntry(f(g, h), G(C, 0, (V + D), height))]
154- else [ScriptTransfer(R, T, S), StringEntry(f(g, h), G(C, (D - T), (V + T), height))]
154+ let E = J(g, h)
155+ let F = K(g, h)
156+ let Z = L(g, h)
157+ let O = valueOrElse(getBoolean(k(g, h)), false)
158+ if (O)
159+ then [ScriptTransfer(V, F, W), StringEntry(f(g, h), I(E, 0, (Z + F), height))]
160+ else [ScriptTransfer(V, X, W), StringEntry(f(g, h), I(E, (F - X), (Z + X), height))]
155161 }
156162 else throw("Strict value is not equal to itself.")
157163 }
158164
159165
160-@Callable(v)
166+func aa (g,h,T) = {
167+ let Y = [if ((valueOrElse(getBoolean(p(g)), false) == false))
168+ then true
169+ else q("asset claim denied"), if ((height > T))
170+ then true
171+ else q("current height must be more than releaseBlock for fixed deposit"), if ((valueOrElse(getInteger(i(g, h, T)), 0) != 0))
172+ then true
173+ else q("no fixed deposit for assetId/address/height")]
174+ if ((Y == Y))
175+ then {
176+ let V = addressFromStringValue(h)
177+ let W = fromBase58String(g)
178+ let X = value(getInteger(i(g, h, T)))
179+[ScriptTransfer(V, X, W), IntegerEntry(i(g, h, T), 0)]
180+ }
181+ else throw("Strict value is not equal to itself.")
182+ }
183+
184+
185+@Callable(x)
161186 func withdrawRevoked (g) = {
162- let T = valueOrElse(getInteger(j(g)), 0)
163- let S = fromBase58String(g)
164- let U = [u(v), if ((T > 0))
187+ let X = valueOrElse(getInteger(l(g)), 0)
188+ let W = fromBase58String(g)
189+ let Y = [w(x), if ((X > 0))
165190 then true
166- else o("revoked amount is zero, nothing to withdraw")]
167- if ((U == U))
168- then [ScriptTransfer(v.caller, T, S), IntegerEntry(j(g), 0)]
191+ else q("revoked amount is zero, nothing to withdraw")]
192+ if ((Y == Y))
193+ then [ScriptTransfer(x.caller, X, W), IntegerEntry(l(g), 0)]
169194 else throw("Strict value is not equal to itself.")
170195 }
171196
172197
173198
174-@Callable(v)
175-func createDepositFor (h,W) = {
176- let T = v.payments[0].amount
177- let g = toBase58String(value(v.payments[0].assetId))
178- let X = (height + W)
179- let Y = (X - height)
180- let Z = (T / Y)
181- let U = [if ((X > height))
199+@Callable(x)
200+func createDepositFor (h,ab) = {
201+ let X = x.payments[0].amount
202+ let g = toBase58String(value(x.payments[0].assetId))
203+ let ac = (height + ab)
204+ let ad = (ac - height)
205+ let ae = (X / ad)
206+ let Y = [if ((ac > height))
182207 then true
183- else o("endHeight must be more than height"), if ((getString(f(g, h)) == unit))
208+ else q("endHeight must be more than height"), if ((getString(f(g, h)) == unit))
184209 then true
185- else o("deposit of this asset for user already exists"), if ((Z != 0))
210+ else q("deposit of this asset for user already exists"), if ((ae != 0))
186211 then true
187- else o("attached amount too small or blocksDuration too large — will claimed zero per block")]
188- if ((U == U))
189- then [StringEntry(f(g, h), G(T, T, 0, height)), IntegerEntry(k(g, h), height), IntegerEntry(l(g, h), X), IntegerEntry(m(g, h), Z)]
212+ else q("attached amount too small or blocksDuration too large — will claimed zero per block")]
213+ if ((Y == Y))
214+ then [StringEntry(f(g, h), I(X, X, 0, height)), IntegerEntry(m(g, h), height), IntegerEntry(n(g, h), ac), IntegerEntry(o(g, h), ae)]
190215 else throw("Strict value is not equal to itself.")
191216 }
192217
193218
194219
195-@Callable(v)
220+@Callable(x)
196221 func increaseDepositFor (h) = {
197- let T = v.payments[0].amount
198- let g = toBase58String(value(v.payments[0].assetId))
199- let aa = L(g, h)
200- let ab = if ((aa > 0))
201- then Q(g, h)
222+ let X = x.payments[0].amount
223+ let g = toBase58String(value(x.payments[0].assetId))
224+ let af = N(g, h)
225+ let ag = if ((af > 0))
226+ then U(g, h)
202227 else unit
203- if ((ab == ab))
228+ if ((ag == ag))
204229 then {
205- let X = value(getInteger(l(g, h)))
206- let Y = (X - height)
207- let Z = value(getInteger(m(g, h)))
208- let ac = (T / Y)
209- let ad = H(g, h)
210- let ae = I(g, h)
211- let af = J(g, h)
212- let ag = K(g, h)
213- let U = [if ((valueOrElse(getBoolean(i(g, h)), false) == false))
230+ let ac = value(getInteger(n(g, h)))
231+ let ad = (ac - height)
232+ let ae = value(getInteger(o(g, h)))
233+ let ah = (X / ad)
234+ let ai = J(g, h)
235+ let aj = K(g, h)
236+ let ak = L(g, h)
237+ let al = M(g, h)
238+ let Y = [if ((valueOrElse(getBoolean(k(g, h)), false) == false))
214239 then true
215- else o("deposit for user is revoked"), if ((getString(f(g, h)) != unit))
240+ else q("deposit for user is revoked"), if ((getString(f(g, h)) != unit))
216241 then true
217- else o("deposit for user doesn't exists"), if ((ac != 0))
242+ else q("deposit for user doesn't exists"), if ((ah != 0))
218243 then true
219- else o("attached amount too small — increase is zero per block")]
220- if ((U == U))
221- then [StringEntry(f(g, h), G((ad + T), (ae + T), af, ag)), IntegerEntry(m(g, h), (Z + ac))]
244+ else q("attached amount too small — increase is zero per block")]
245+ if ((Y == Y))
246+ then [StringEntry(f(g, h), I((ai + X), (aj + X), ak, al)), IntegerEntry(o(g, h), (ae + ah))]
222247 else throw("Strict value is not equal to itself.")
223248 }
224249 else throw("Strict value is not equal to itself.")
226251
227252
228253
229-@Callable(v)
254+@Callable(x)
230255 func revokeDepositFor (g,h) = {
231- let C = H(g, h)
232- let D = I(g, h)
233256 let E = J(g, h)
234257 let F = K(g, h)
235- let ah = L(g, h)
236- let ai = valueOrElse(getInteger(j(g)), 0)
237- let aj = (D - ah)
238- let ak = (ai + aj)
239- let U = [y(v), if ((getString(f(g, h)) != unit))
258+ let G = L(g, h)
259+ let H = M(g, h)
260+ let am = N(g, h)
261+ let an = valueOrElse(getInteger(l(g)), 0)
262+ let ao = (F - am)
263+ let ap = (an + ao)
264+ let Y = [A(x), if ((getString(f(g, h)) != unit))
240265 then true
241- else o("deposit of this asset for user is not exists"), if ((ak > ai))
266+ else q("deposit of this asset for user is not exists"), if ((ap > an))
242267 then true
243- else o("newRevokedTotal can't be less or equal than revokedTotal")]
244- if ((U == U))
245- then [BooleanEntry(i(g, h), true), IntegerEntry(j(g), ak), StringEntry(f(g, h), G(C, ah, E, F))]
268+ else q("newRevokedTotal can't be less or equal than revokedTotal")]
269+ if ((Y == Y))
270+ then [BooleanEntry(k(g, h), true), IntegerEntry(l(g), ap), StringEntry(f(g, h), I(E, am, G, H))]
246271 else throw("Strict value is not equal to itself.")
247272 }
248273
249274
250275
251-@Callable(v)
252-func claim (g) = Q(g, toBase58String(v.caller.bytes))
276+@Callable(x)
277+func claim (g) = U(g, toBase58String(x.caller.bytes))
253278
254279
255280
256-@Callable(v)
257-func claimFor (g,h) = Q(g, h)
281+@Callable(x)
282+func claimFor (g,h) = U(g, h)
258283
259284
260285
261-@Callable(v)
286+@Callable(x)
262287 func claimREADONLY (g,h) = {
263- let T = L(g, h)
264- $Tuple2(nil, T)
288+ let X = N(g, h)
289+ $Tuple2(nil, X)
265290 }
266291
267292
268293
269-@Callable(v)
270-func denyAssetClaim (g) = {
271- let U = [y(v), if ((valueOrElse(getBoolean(n(g)), false) == false))
294+@Callable(x)
295+func createFixedDepositFor (h,T) = {
296+ let X = x.payments[0].amount
297+ let g = toBase58String(value(x.payments[0].assetId))
298+ let Y = [if ((T > height))
272299 then true
273- else o("asset already denied")]
274- if ((U == U))
275- then [BooleanEntry(n(g), true)]
300+ else q("releaseBlock must be more than height"), if ((getInteger(i(g, h, T)) == unit))
301+ then true
302+ else q("deposit for this height for user already exists")]
303+ if ((Y == Y))
304+ then [IntegerEntry(i(g, h, T), X)]
276305 else throw("Strict value is not equal to itself.")
277306 }
278307
279308
280309
281-@Callable(v)
282-func allowAssetClaim (g) = {
283- let U = [y(v), if ((valueOrElse(getBoolean(n(g)), false) == true))
310+@Callable(x)
311+func claimFixed (g,T) = aa(g, toBase58String(x.caller.bytes), T)
312+
313+
314+
315+@Callable(x)
316+func claimFixedFor (g,h,T) = aa(g, h, T)
317+
318+
319+
320+@Callable(x)
321+func claimFixedREADONLY (g,h,T) = {
322+ let X = S(g, h, T)
323+ $Tuple2(nil, X)
324+ }
325+
326+
327+
328+@Callable(x)
329+func revokeFixedDepositFor (g,h,T) = {
330+ let Y = [A(x), if ((height > T))
284331 then true
285- else o("asset already allowed")]
286- if ((U == U))
287- then [DeleteEntry(n(g))]
332+ else q("can't revoke deposit in past"), if ((valueOrElse(getInteger(i(g, h, T)), 0) != 0))
333+ then true
334+ else q("deposit for this height for user not exists")]
335+ if ((Y == Y))
336+ then {
337+ let X = value(getInteger(i(g, h, T)))
338+[IntegerEntry(l(g), X), IntegerEntry(i(g, h, T), 0)]
339+ }
288340 else throw("Strict value is not equal to itself.")
289341 }
290342
291343
292344
293-@Callable(v)
294-func stats (g,h) = $Tuple2(nil, [value(getInteger(k(g, h))), value(getInteger(l(g, h))), H(g, h), J(g, h), I(g, h), L(g, h)])
345+@Callable(x)
346+func denyAssetClaim (g) = {
347+ let Y = [A(x), if ((valueOrElse(getBoolean(p(g)), false) == false))
348+ then true
349+ else q("asset already denied")]
350+ if ((Y == Y))
351+ then [BooleanEntry(p(g), true)]
352+ else throw("Strict value is not equal to itself.")
353+ }
295354
296355
297356
298-@Callable(v)
299-func setManager (al) = {
300- let am = u(v)
301- if ((am == am))
357+@Callable(x)
358+func allowAssetClaim (g) = {
359+ let Y = [A(x), if ((valueOrElse(getBoolean(p(g)), false) == true))
360+ then true
361+ else q("asset already allowed")]
362+ if ((Y == Y))
363+ then [DeleteEntry(p(g))]
364+ else throw("Strict value is not equal to itself.")
365+ }
366+
367+
368+
369+@Callable(x)
370+func stats (g,h) = $Tuple2(nil, [value(getInteger(m(g, h))), value(getInteger(n(g, h))), J(g, h), L(g, h), K(g, h), N(g, h)])
371+
372+
373+
374+@Callable(x)
375+func setManager (aq) = {
376+ let ar = w(x)
377+ if ((ar == ar))
302378 then {
303- let an = fromBase58String(al)
304- if ((an == an))
305- then [StringEntry(d(), al)]
379+ let as = fromBase58String(aq)
380+ if ((as == as))
381+ then [StringEntry(d(), aq)]
306382 else throw("Strict value is not equal to itself.")
307383 }
308384 else throw("Strict value is not equal to itself.")
310386
311387
312388
313-@Callable(v)
389+@Callable(x)
314390 func confirmManager () = {
315- let ao = t()
316- let ap = if (isDefined(ao))
391+ let at = v()
392+ let au = if (isDefined(at))
317393 then true
318- else o("no pending manager")
319- if ((ap == ap))
394+ else q("no pending manager")
395+ if ((au == au))
320396 then {
321- let aq = if ((v.callerPublicKey == value(ao)))
397+ let av = if ((x.callerPublicKey == value(at)))
322398 then true
323- else o("you are not pending manager")
324- if ((aq == aq))
325- then [StringEntry(c(), toBase58String(value(ao))), DeleteEntry(d())]
399+ else q("you are not pending manager")
400+ if ((av == av))
401+ then [StringEntry(c(), toBase58String(value(at))), DeleteEntry(d())]
326402 else throw("Strict value is not equal to itself.")
327403 }
328404 else throw("Strict value is not equal to itself.")
329405 }
330406
331407
332-@Verifier(ar)
333-func as () = {
334- let at = {
335- let r = q()
336- if ($isInstanceOf(r, "ByteVector"))
408+@Verifier(aw)
409+func ax () = {
410+ let ay = {
411+ let t = s()
412+ if ($isInstanceOf(t, "ByteVector"))
337413 then {
338- let x = r
339- x
414+ let z = t
415+ z
340416 }
341- else if ($isInstanceOf(r, "Unit"))
342- then ar.senderPublicKey
417+ else if ($isInstanceOf(t, "Unit"))
418+ then aw.senderPublicKey
343419 else throw("Match error")
344420 }
345- sigVerify(ar.bodyBytes, ar.proofs[0], at)
421+ sigVerify(aw.bodyBytes, aw.proofs[0], ay)
346422 }
347423
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = ""
77
88 func c () = "%s__managerPublicKey"
99
1010
1111 func d () = "%s__pendingManagerPublicKey"
1212
1313
1414 func e () = "%s__adminPubKeys"
1515
1616
1717 func f (g,h) = makeString(["%s%s", g, h], a)
1818
1919
20-func i (g,h) = makeString(["%s%s%s", "revoked", g, h], a)
20+func i (g,h,j) = makeString(["%s%s%s%d", "fixedDeposit", g, h, toString(j)], a)
2121
2222
23-func j (g) = makeString(["%s%s", "revokedTotal", g], a)
23+func k (g,h) = makeString(["%s%s%s", "revoked", g, h], a)
2424
2525
26-func k (g,h) = makeString(["%s%s%s", "vestingStart", g, h], a)
26+func l (g) = makeString(["%s%s", "revokedTotal", g], a)
2727
2828
29-func l (g,h) = makeString(["%s%s%s", "vestingEnd", g, h], a)
29+func m (g,h) = makeString(["%s%s%s", "vestingStart", g, h], a)
3030
3131
32-func m (g,h) = makeString(["%s%s%s", "amountPerBlock", g, h], a)
32+func n (g,h) = makeString(["%s%s%s", "vestingEnd", g, h], a)
3333
3434
35-func n (g) = makeString(["%s%s", "claimDenied", g], a)
35+func o (g,h) = makeString(["%s%s%s", "amountPerBlock", g, h], a)
3636
3737
38-func o (p) = throw(makeString(["vesting_multiasset.ride:", p], " "))
38+func p (g) = makeString(["%s%s", "claimDenied", g], a)
3939
4040
41-func q () = {
42- let r = getString(c())
43- if ($isInstanceOf(r, "String"))
41+func q (r) = throw(makeString(["vesting_multiasset.ride:", r], " "))
42+
43+
44+func s () = {
45+ let t = getString(c())
46+ if ($isInstanceOf(t, "String"))
4447 then {
45- let s = r
46- fromBase58String(s)
48+ let u = t
49+ fromBase58String(u)
4750 }
48- else if ($isInstanceOf(r, "Unit"))
51+ else if ($isInstanceOf(t, "Unit"))
4952 then unit
5053 else throw("Match error")
5154 }
5255
5356
54-func t () = {
55- let r = getString(d())
56- if ($isInstanceOf(r, "String"))
57+func v () = {
58+ let t = getString(d())
59+ if ($isInstanceOf(t, "String"))
5760 then {
58- let s = r
59- fromBase58String(s)
61+ let u = t
62+ fromBase58String(u)
6063 }
61- else if ($isInstanceOf(r, "Unit"))
64+ else if ($isInstanceOf(t, "Unit"))
6265 then unit
6366 else throw("Match error")
6467 }
6568
6669
67-func u (v) = {
68- let w = o("permission denied")
69- let r = q()
70- if ($isInstanceOf(r, "ByteVector"))
70+func w (x) = {
71+ let y = q("permission denied")
72+ let t = s()
73+ if ($isInstanceOf(t, "ByteVector"))
7174 then {
72- let x = r
73- if ((v.callerPublicKey == x))
75+ let z = t
76+ if ((x.callerPublicKey == z))
7477 then true
75- else w
78+ else y
7679 }
77- else if ($isInstanceOf(r, "Unit"))
78- then if ((v.caller == this))
80+ else if ($isInstanceOf(t, "Unit"))
81+ then if ((x.caller == this))
7982 then true
80- else w
83+ else y
8184 else throw("Match error")
8285 }
8386
8487
85-func y (v) = {
86- let z = split(valueOrElse(getString(e()), b), a)
87- if (containsElement(z, toBase58String(v.callerPublicKey)))
88+func A (x) = {
89+ let B = split(valueOrElse(getString(e()), b), a)
90+ if (containsElement(B, toBase58String(x.callerPublicKey)))
8891 then true
8992 else {
90- let A = u(v)
91- if ((A == A))
93+ let C = w(x)
94+ if ((C == C))
9295 then true
9396 else throw("Strict value is not equal to itself.")
9497 }
9598 }
9699
97100
98-func B (C,D,E,F) = makeString(["%d%d%d%d%d", C, D, "0", E, F], a)
101+func D (E,F,G,H) = makeString(["%d%d%d%d%d", E, F, "0", G, H], a)
99102
100103
101-func G (C,D,E,F) = B(toString(C), toString(D), toString(E), toString(F))
104+func I (E,F,G,H) = D(toString(E), toString(F), toString(G), toString(H))
102105
103106
104-func H (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[1])
107+func J (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[1])
105108
106109
107-func I (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[2])
110+func K (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[2])
108111
109112
110-func J (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[3])
113+func L (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[3])
111114
112115
113-func K (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[5])
116+func M (g,h) = parseIntValue(split(value(getString(f(g, h))), a)[5])
114117
115118
116-func L (g,h) = {
117- let M = valueOrElse(getBoolean(i(g, h)), false)
118- if (M)
119- then I(g, h)
119+func N (g,h) = {
120+ let O = valueOrElse(getBoolean(k(g, h)), false)
121+ if (O)
122+ then K(g, h)
120123 else {
121- let N = K(g, h)
122- if ((N >= height))
124+ let P = M(g, h)
125+ if ((P >= height))
123126 then 0
124127 else {
125- let O = value(getInteger(l(g, h)))
126- if ((height > O))
127- then I(g, h)
128+ let Q = value(getInteger(n(g, h)))
129+ if ((height > Q))
130+ then K(g, h)
128131 else {
129- let P = (height - N)
130- (value(getInteger(m(g, h))) * P)
132+ let R = (height - P)
133+ (value(getInteger(o(g, h))) * R)
131134 }
132135 }
133136 }
134137 }
135138
136139
137-func Q (g,h) = {
138- let R = addressFromStringValue(h)
139- let S = fromBase58String(g)
140- let T = L(g, h)
141- let U = [if ((valueOrElse(getBoolean(n(g)), false) == false))
140+func S (g,h,T) = valueOrElse(getInteger(i(g, h, T)), 0)
141+
142+
143+func U (g,h) = {
144+ let V = addressFromStringValue(h)
145+ let W = fromBase58String(g)
146+ let X = N(g, h)
147+ let Y = [if ((valueOrElse(getBoolean(p(g)), false) == false))
142148 then true
143- else o("asset claim denied"), if ((T != 0))
149+ else q("asset claim denied"), if ((X != 0))
144150 then true
145- else o("nothing to claim")]
146- if ((U == U))
151+ else q("nothing to claim")]
152+ if ((Y == Y))
147153 then {
148- let C = H(g, h)
149- let D = I(g, h)
150- let V = J(g, h)
151- let M = valueOrElse(getBoolean(i(g, h)), false)
152- if (M)
153- then [ScriptTransfer(R, D, S), StringEntry(f(g, h), G(C, 0, (V + D), height))]
154- else [ScriptTransfer(R, T, S), StringEntry(f(g, h), G(C, (D - T), (V + T), height))]
154+ let E = J(g, h)
155+ let F = K(g, h)
156+ let Z = L(g, h)
157+ let O = valueOrElse(getBoolean(k(g, h)), false)
158+ if (O)
159+ then [ScriptTransfer(V, F, W), StringEntry(f(g, h), I(E, 0, (Z + F), height))]
160+ else [ScriptTransfer(V, X, W), StringEntry(f(g, h), I(E, (F - X), (Z + X), height))]
155161 }
156162 else throw("Strict value is not equal to itself.")
157163 }
158164
159165
160-@Callable(v)
166+func aa (g,h,T) = {
167+ let Y = [if ((valueOrElse(getBoolean(p(g)), false) == false))
168+ then true
169+ else q("asset claim denied"), if ((height > T))
170+ then true
171+ else q("current height must be more than releaseBlock for fixed deposit"), if ((valueOrElse(getInteger(i(g, h, T)), 0) != 0))
172+ then true
173+ else q("no fixed deposit for assetId/address/height")]
174+ if ((Y == Y))
175+ then {
176+ let V = addressFromStringValue(h)
177+ let W = fromBase58String(g)
178+ let X = value(getInteger(i(g, h, T)))
179+[ScriptTransfer(V, X, W), IntegerEntry(i(g, h, T), 0)]
180+ }
181+ else throw("Strict value is not equal to itself.")
182+ }
183+
184+
185+@Callable(x)
161186 func withdrawRevoked (g) = {
162- let T = valueOrElse(getInteger(j(g)), 0)
163- let S = fromBase58String(g)
164- let U = [u(v), if ((T > 0))
187+ let X = valueOrElse(getInteger(l(g)), 0)
188+ let W = fromBase58String(g)
189+ let Y = [w(x), if ((X > 0))
165190 then true
166- else o("revoked amount is zero, nothing to withdraw")]
167- if ((U == U))
168- then [ScriptTransfer(v.caller, T, S), IntegerEntry(j(g), 0)]
191+ else q("revoked amount is zero, nothing to withdraw")]
192+ if ((Y == Y))
193+ then [ScriptTransfer(x.caller, X, W), IntegerEntry(l(g), 0)]
169194 else throw("Strict value is not equal to itself.")
170195 }
171196
172197
173198
174-@Callable(v)
175-func createDepositFor (h,W) = {
176- let T = v.payments[0].amount
177- let g = toBase58String(value(v.payments[0].assetId))
178- let X = (height + W)
179- let Y = (X - height)
180- let Z = (T / Y)
181- let U = [if ((X > height))
199+@Callable(x)
200+func createDepositFor (h,ab) = {
201+ let X = x.payments[0].amount
202+ let g = toBase58String(value(x.payments[0].assetId))
203+ let ac = (height + ab)
204+ let ad = (ac - height)
205+ let ae = (X / ad)
206+ let Y = [if ((ac > height))
182207 then true
183- else o("endHeight must be more than height"), if ((getString(f(g, h)) == unit))
208+ else q("endHeight must be more than height"), if ((getString(f(g, h)) == unit))
184209 then true
185- else o("deposit of this asset for user already exists"), if ((Z != 0))
210+ else q("deposit of this asset for user already exists"), if ((ae != 0))
186211 then true
187- else o("attached amount too small or blocksDuration too large — will claimed zero per block")]
188- if ((U == U))
189- then [StringEntry(f(g, h), G(T, T, 0, height)), IntegerEntry(k(g, h), height), IntegerEntry(l(g, h), X), IntegerEntry(m(g, h), Z)]
212+ else q("attached amount too small or blocksDuration too large — will claimed zero per block")]
213+ if ((Y == Y))
214+ then [StringEntry(f(g, h), I(X, X, 0, height)), IntegerEntry(m(g, h), height), IntegerEntry(n(g, h), ac), IntegerEntry(o(g, h), ae)]
190215 else throw("Strict value is not equal to itself.")
191216 }
192217
193218
194219
195-@Callable(v)
220+@Callable(x)
196221 func increaseDepositFor (h) = {
197- let T = v.payments[0].amount
198- let g = toBase58String(value(v.payments[0].assetId))
199- let aa = L(g, h)
200- let ab = if ((aa > 0))
201- then Q(g, h)
222+ let X = x.payments[0].amount
223+ let g = toBase58String(value(x.payments[0].assetId))
224+ let af = N(g, h)
225+ let ag = if ((af > 0))
226+ then U(g, h)
202227 else unit
203- if ((ab == ab))
228+ if ((ag == ag))
204229 then {
205- let X = value(getInteger(l(g, h)))
206- let Y = (X - height)
207- let Z = value(getInteger(m(g, h)))
208- let ac = (T / Y)
209- let ad = H(g, h)
210- let ae = I(g, h)
211- let af = J(g, h)
212- let ag = K(g, h)
213- let U = [if ((valueOrElse(getBoolean(i(g, h)), false) == false))
230+ let ac = value(getInteger(n(g, h)))
231+ let ad = (ac - height)
232+ let ae = value(getInteger(o(g, h)))
233+ let ah = (X / ad)
234+ let ai = J(g, h)
235+ let aj = K(g, h)
236+ let ak = L(g, h)
237+ let al = M(g, h)
238+ let Y = [if ((valueOrElse(getBoolean(k(g, h)), false) == false))
214239 then true
215- else o("deposit for user is revoked"), if ((getString(f(g, h)) != unit))
240+ else q("deposit for user is revoked"), if ((getString(f(g, h)) != unit))
216241 then true
217- else o("deposit for user doesn't exists"), if ((ac != 0))
242+ else q("deposit for user doesn't exists"), if ((ah != 0))
218243 then true
219- else o("attached amount too small — increase is zero per block")]
220- if ((U == U))
221- then [StringEntry(f(g, h), G((ad + T), (ae + T), af, ag)), IntegerEntry(m(g, h), (Z + ac))]
244+ else q("attached amount too small — increase is zero per block")]
245+ if ((Y == Y))
246+ then [StringEntry(f(g, h), I((ai + X), (aj + X), ak, al)), IntegerEntry(o(g, h), (ae + ah))]
222247 else throw("Strict value is not equal to itself.")
223248 }
224249 else throw("Strict value is not equal to itself.")
225250 }
226251
227252
228253
229-@Callable(v)
254+@Callable(x)
230255 func revokeDepositFor (g,h) = {
231- let C = H(g, h)
232- let D = I(g, h)
233256 let E = J(g, h)
234257 let F = K(g, h)
235- let ah = L(g, h)
236- let ai = valueOrElse(getInteger(j(g)), 0)
237- let aj = (D - ah)
238- let ak = (ai + aj)
239- let U = [y(v), if ((getString(f(g, h)) != unit))
258+ let G = L(g, h)
259+ let H = M(g, h)
260+ let am = N(g, h)
261+ let an = valueOrElse(getInteger(l(g)), 0)
262+ let ao = (F - am)
263+ let ap = (an + ao)
264+ let Y = [A(x), if ((getString(f(g, h)) != unit))
240265 then true
241- else o("deposit of this asset for user is not exists"), if ((ak > ai))
266+ else q("deposit of this asset for user is not exists"), if ((ap > an))
242267 then true
243- else o("newRevokedTotal can't be less or equal than revokedTotal")]
244- if ((U == U))
245- then [BooleanEntry(i(g, h), true), IntegerEntry(j(g), ak), StringEntry(f(g, h), G(C, ah, E, F))]
268+ else q("newRevokedTotal can't be less or equal than revokedTotal")]
269+ if ((Y == Y))
270+ then [BooleanEntry(k(g, h), true), IntegerEntry(l(g), ap), StringEntry(f(g, h), I(E, am, G, H))]
246271 else throw("Strict value is not equal to itself.")
247272 }
248273
249274
250275
251-@Callable(v)
252-func claim (g) = Q(g, toBase58String(v.caller.bytes))
276+@Callable(x)
277+func claim (g) = U(g, toBase58String(x.caller.bytes))
253278
254279
255280
256-@Callable(v)
257-func claimFor (g,h) = Q(g, h)
281+@Callable(x)
282+func claimFor (g,h) = U(g, h)
258283
259284
260285
261-@Callable(v)
286+@Callable(x)
262287 func claimREADONLY (g,h) = {
263- let T = L(g, h)
264- $Tuple2(nil, T)
288+ let X = N(g, h)
289+ $Tuple2(nil, X)
265290 }
266291
267292
268293
269-@Callable(v)
270-func denyAssetClaim (g) = {
271- let U = [y(v), if ((valueOrElse(getBoolean(n(g)), false) == false))
294+@Callable(x)
295+func createFixedDepositFor (h,T) = {
296+ let X = x.payments[0].amount
297+ let g = toBase58String(value(x.payments[0].assetId))
298+ let Y = [if ((T > height))
272299 then true
273- else o("asset already denied")]
274- if ((U == U))
275- then [BooleanEntry(n(g), true)]
300+ else q("releaseBlock must be more than height"), if ((getInteger(i(g, h, T)) == unit))
301+ then true
302+ else q("deposit for this height for user already exists")]
303+ if ((Y == Y))
304+ then [IntegerEntry(i(g, h, T), X)]
276305 else throw("Strict value is not equal to itself.")
277306 }
278307
279308
280309
281-@Callable(v)
282-func allowAssetClaim (g) = {
283- let U = [y(v), if ((valueOrElse(getBoolean(n(g)), false) == true))
310+@Callable(x)
311+func claimFixed (g,T) = aa(g, toBase58String(x.caller.bytes), T)
312+
313+
314+
315+@Callable(x)
316+func claimFixedFor (g,h,T) = aa(g, h, T)
317+
318+
319+
320+@Callable(x)
321+func claimFixedREADONLY (g,h,T) = {
322+ let X = S(g, h, T)
323+ $Tuple2(nil, X)
324+ }
325+
326+
327+
328+@Callable(x)
329+func revokeFixedDepositFor (g,h,T) = {
330+ let Y = [A(x), if ((height > T))
284331 then true
285- else o("asset already allowed")]
286- if ((U == U))
287- then [DeleteEntry(n(g))]
332+ else q("can't revoke deposit in past"), if ((valueOrElse(getInteger(i(g, h, T)), 0) != 0))
333+ then true
334+ else q("deposit for this height for user not exists")]
335+ if ((Y == Y))
336+ then {
337+ let X = value(getInteger(i(g, h, T)))
338+[IntegerEntry(l(g), X), IntegerEntry(i(g, h, T), 0)]
339+ }
288340 else throw("Strict value is not equal to itself.")
289341 }
290342
291343
292344
293-@Callable(v)
294-func stats (g,h) = $Tuple2(nil, [value(getInteger(k(g, h))), value(getInteger(l(g, h))), H(g, h), J(g, h), I(g, h), L(g, h)])
345+@Callable(x)
346+func denyAssetClaim (g) = {
347+ let Y = [A(x), if ((valueOrElse(getBoolean(p(g)), false) == false))
348+ then true
349+ else q("asset already denied")]
350+ if ((Y == Y))
351+ then [BooleanEntry(p(g), true)]
352+ else throw("Strict value is not equal to itself.")
353+ }
295354
296355
297356
298-@Callable(v)
299-func setManager (al) = {
300- let am = u(v)
301- if ((am == am))
357+@Callable(x)
358+func allowAssetClaim (g) = {
359+ let Y = [A(x), if ((valueOrElse(getBoolean(p(g)), false) == true))
360+ then true
361+ else q("asset already allowed")]
362+ if ((Y == Y))
363+ then [DeleteEntry(p(g))]
364+ else throw("Strict value is not equal to itself.")
365+ }
366+
367+
368+
369+@Callable(x)
370+func stats (g,h) = $Tuple2(nil, [value(getInteger(m(g, h))), value(getInteger(n(g, h))), J(g, h), L(g, h), K(g, h), N(g, h)])
371+
372+
373+
374+@Callable(x)
375+func setManager (aq) = {
376+ let ar = w(x)
377+ if ((ar == ar))
302378 then {
303- let an = fromBase58String(al)
304- if ((an == an))
305- then [StringEntry(d(), al)]
379+ let as = fromBase58String(aq)
380+ if ((as == as))
381+ then [StringEntry(d(), aq)]
306382 else throw("Strict value is not equal to itself.")
307383 }
308384 else throw("Strict value is not equal to itself.")
309385 }
310386
311387
312388
313-@Callable(v)
389+@Callable(x)
314390 func confirmManager () = {
315- let ao = t()
316- let ap = if (isDefined(ao))
391+ let at = v()
392+ let au = if (isDefined(at))
317393 then true
318- else o("no pending manager")
319- if ((ap == ap))
394+ else q("no pending manager")
395+ if ((au == au))
320396 then {
321- let aq = if ((v.callerPublicKey == value(ao)))
397+ let av = if ((x.callerPublicKey == value(at)))
322398 then true
323- else o("you are not pending manager")
324- if ((aq == aq))
325- then [StringEntry(c(), toBase58String(value(ao))), DeleteEntry(d())]
399+ else q("you are not pending manager")
400+ if ((av == av))
401+ then [StringEntry(c(), toBase58String(value(at))), DeleteEntry(d())]
326402 else throw("Strict value is not equal to itself.")
327403 }
328404 else throw("Strict value is not equal to itself.")
329405 }
330406
331407
332-@Verifier(ar)
333-func as () = {
334- let at = {
335- let r = q()
336- if ($isInstanceOf(r, "ByteVector"))
408+@Verifier(aw)
409+func ax () = {
410+ let ay = {
411+ let t = s()
412+ if ($isInstanceOf(t, "ByteVector"))
337413 then {
338- let x = r
339- x
414+ let z = t
415+ z
340416 }
341- else if ($isInstanceOf(r, "Unit"))
342- then ar.senderPublicKey
417+ else if ($isInstanceOf(t, "Unit"))
418+ then aw.senderPublicKey
343419 else throw("Match error")
344420 }
345- sigVerify(ar.bodyBytes, ar.proofs[0], at)
421+ sigVerify(aw.bodyBytes, aw.proofs[0], ay)
346422 }
347423

github/deemru/w8io/169f3d6 
99.30 ms