tx · FmVtoDvWeLj6T3QDwN7p9hC9MpjpSHiETZK2KZBBgPTc

3MvSeWWPQ3SRDtb2Qo4rkz9pyrnpaNA8NCi:  -0.01400000 Waves

2020.10.22 21:55 [1232165] smart account 3MvSeWWPQ3SRDtb2Qo4rkz9pyrnpaNA8NCi > SELF 0.00000000 Waves

{ "type": 13, "id": "FmVtoDvWeLj6T3QDwN7p9hC9MpjpSHiETZK2KZBBgPTc", "fee": 1400000, "feeAssetId": null, "timestamp": 1603392961987, "version": 1, "sender": "3MvSeWWPQ3SRDtb2Qo4rkz9pyrnpaNA8NCi", "senderPublicKey": "7MxUNoh26E6Vy6YgSQCdu9iEnSKNTwEMGg9Ps94r8eyW", "proofs": [ "4gUgvd9YJCy5E5AtxtGthKEfyKzMQWru5S8Ycwz5U9qowbTHH211MN6JdRmhnrEErbhwM1dwg9svJTqa4o2BpQvp" ], "script": "base64:AAIEAAAAAAAAAA8IAhIAEgASABIAEgMKAQEAAAARAAAAAAhJZFRva2VuQQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwIAAAANYXNzZXRJZFRva2VuQQAAAAAISWRUb2tlbkIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMCAAAADWFzc2V0SWRUb2tlbkIAAAAADGFtb3VudFRva2VuQgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAMYW1vdW50VG9rZW5CAAAAAAxhbW91bnRUb2tlbkEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQQAAAAAMSWRUb2tlblNoYXJlCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAA5zaGFyZV90b2tlbl9pZAAAAAAQdG9rZW5TaGFyZVN1cHBseQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAASc2hhcmVfdG9rZW5fc3VwcGx5AAAAAAljb21pc3Npb24AAAAAAAAAAfQAAAAAF2NvbWlzc2lvblNjYWxlRGVsaW1pdGVyAAAAAAAAD0JAAAAAAAd2ZXJzaW9uAgAAAAUxLjAuMAAAAAALc2NhbGVWYWx1ZTgAAAAAAAX14QAAAAAAEXJhdGlvVGhyZXNob2xkTWF4AAAAAAAF9eEAAAAAABFyYXRpb1RocmVzaG9sZE1pbgAAAAAABfXdGAAAAAARc2NhbGVWYWx1ZThEaWdpdHMAAAAAAAAAAAgBAAAAB2Fzc2V0SWQAAAABAAAABWFzc2V0AwkAAAAAAAACBQAAAAVhc3NldAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAFYXNzZXQAAAAADWFzc2V0SWRUb2tlbkEJAQAAAAdhc3NldElkAAAAAQUAAAAISWRUb2tlbkEAAAAADWFzc2V0SWRUb2tlbkIJAQAAAAdhc3NldElkAAAAAQUAAAAISWRUb2tlbkIAAAAAEWFzc2V0SWRUb2tlblNoYXJlCQACWQAAAAEFAAAADElkVG9rZW5TaGFyZQAAAAUAAAAKY29udGV4dE9iagEAAAAEZnVuZAAAAAAEAAAACHBheW1lbnRBCQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAApjb250ZXh0T2JqAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAhwYXltZW50QgkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAAQYXNzZXRJZFJlY2VpdmVkQQgFAAAACHBheW1lbnRBAAAAB2Fzc2V0SWQEAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEIBQAAAAhwYXltZW50QQAAAAZhbW91bnQEAAAAEGFzc2V0SWRSZWNlaXZlZEIIBQAAAAhwYXltZW50QgAAAAdhc3NldElkBAAAABN0b2tlblJlY2VpdmVBbW91bnRCCAUAAAAIcGF5bWVudEIAAAAGYW1vdW50BAAAAAtkaWdpdFRva2VuQQQAAAAHJG1hdGNoMAUAAAAQYXNzZXRJZFJlY2VpdmVkQQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABcAUAAAAHJG1hdGNoMAAAAAAAAAAACAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABcAUAAAAHJG1hdGNoMAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAABcAAAAAhkZWNpbWFscwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgQAAAALZGlnaXRUb2tlbkIEAAAAByRtYXRjaDAFAAAAEGFzc2V0SWRSZWNlaXZlZEIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXAFAAAAByRtYXRjaDAAAAAAAAAAAAgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAXAFAAAAByRtYXRjaDAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAXAAAAAIZGVjaW1hbHMJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBsAAAACBQAAAAR0aGlzAgAAAAZzdGF0dXMJAAACAAAAAQIAAAAOYWxyZWFkeSBhY3RpdmUEAAAADnNoYXJlVG9rZW5OYW1lCQABLAAAAAICAAAAB1NoYXJlVF8JAQAAAAl0YWtlUmlnaHQAAAACCQAEJQAAAAEFAAAABHRoaXMAAAAAAAAAAAUEAAAAEmRpZ2l0c0luU2hhcmVUb2tlbgkAAGkAAAACCQAAZAAAAAIFAAAAC2RpZ2l0VG9rZW5BBQAAAAtkaWdpdFRva2VuQgAAAAAAAAAAAgQAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQJAABrAAAAAwkAAGwAAAAGBQAAABN0b2tlblJlY2VpdmVBbW91bnRBBQAAAAtkaWdpdFRva2VuQQAAAAAAAAAABQAAAAAAAAAAAQUAAAALZGlnaXRUb2tlbkEFAAAACEhBTEZET1dOCQAAbAAAAAYFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEIFAAAAC2RpZ2l0VG9rZW5CAAAAAAAAAAAFAAAAAAAAAAABBQAAAAtkaWdpdFRva2VuQgUAAAAISEFMRkRPV04JAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAASZGlnaXRzSW5TaGFyZVRva2VuAAAAAAAAAAAAAAAAAAAAAAAABQAAAAhIQUxGRE9XTgQAAAARc2hhcmVUb2tlbkFzc2V0SWQJAAQ4AAAAAQkABEIAAAAFBQAAAA5zaGFyZVRva2VuTmFtZQUAAAAOc2hhcmVUb2tlbk5hbWUFAAAAF3NoYXJlVG9rZW5Jbml0aWFsQW1vdW50BQAAABJkaWdpdHNJblNoYXJlVG9rZW4GBAAAABNhc3NldElkVG9rZW5TdHJpbmdBBAAAAAckbWF0Y2gwBQAAABBhc3NldElkUmVjZWl2ZWRBAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAF0BQAAAAckbWF0Y2gwAgAAAAVXQVZFUwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABdAUAAAAHJG1hdGNoMAkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAABBhc3NldElkUmVjZWl2ZWRBCQAAAgAAAAECAAAAC01hdGNoIGVycm9yBAAAABNhc3NldElkVG9rZW5TdHJpbmdCBAAAAAckbWF0Y2gwBQAAABBhc3NldElkUmVjZWl2ZWRCAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAF0BQAAAAckbWF0Y2gwAgAAAAVXQVZFUwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABdAUAAAAHJG1hdGNoMAkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAABBhc3NldElkUmVjZWl2ZWRCCQAAAgAAAAECAAAAC01hdGNoIGVycm9yCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkEFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQgUAAAATdG9rZW5SZWNlaXZlQW1vdW50QgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA1hc3NldElkVG9rZW5BBQAAABNhc3NldElkVG9rZW5TdHJpbmdBCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADWFzc2V0SWRUb2tlbkIFAAAAE2Fzc2V0SWRUb2tlblN0cmluZ0IJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADmV4Y2hhbmdlX2NvdW50AAAAAAAAAAAACQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACAgAAAAZzdGF0dXMGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAljb21pc3Npb24FAAAACWNvbWlzc2lvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAXY29taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAAF2NvbWlzc2lvblNjYWxlRGVsaW1pdGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAB3ZlcnNpb24FAAAAB3ZlcnNpb24JAARMAAAAAgkABEIAAAAFBQAAAA5zaGFyZVRva2VuTmFtZQUAAAAOc2hhcmVUb2tlbk5hbWUFAAAAF3NoYXJlVG9rZW5Jbml0aWFsQW1vdW50BQAAABJkaWdpdHNJblNoYXJlVG9rZW4GCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQFAAAAEXNoYXJlVG9rZW5Bc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADnNoYXJlX3Rva2VuX2lkCQACWAAAAAEFAAAAEXNoYXJlVG9rZW5Bc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJzaGFyZV90b2tlbl9zdXBwbHkFAAAAF3NoYXJlVG9rZW5Jbml0aWFsQW1vdW50BQAAAANuaWwAAAAKY29udGV4dE9iagEAAAANcmVwbGVuaXNobWVudAAAAAAEAAAACHBheW1lbnRBCQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAApjb250ZXh0T2JqAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAhwYXltZW50QgkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAAQYXNzZXRJZFJlY2VpdmVkQQgFAAAACHBheW1lbnRBAAAAB2Fzc2V0SWQEAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEIBQAAAAhwYXltZW50QQAAAAZhbW91bnQEAAAAEGFzc2V0SWRSZWNlaXZlZEIIBQAAAAhwYXltZW50QgAAAAdhc3NldElkBAAAABN0b2tlblJlY2VpdmVBbW91bnRCCAUAAAAIcGF5bWVudEIAAAAGYW1vdW50BAAAABFkQXBwVG9rZW5zQW1vdW50QQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAMYW1vdW50VG9rZW5BBAAAABFkQXBwVG9rZW5zQW1vdW50QgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAMYW1vdW50VG9rZW5CAwMJAQAAAAIhPQAAAAIFAAAAEGFzc2V0SWRSZWNlaXZlZEEFAAAADWFzc2V0SWRUb2tlbkEGCQEAAAACIT0AAAACBQAAABBhc3NldElkUmVjZWl2ZWRCBQAAAA1hc3NldElkVG9rZW5CCQAAAgAAAAECAAAAEGluY29ycmVjdCBhc3NldHMEAAAACnRva2VuUmF0aW8JAABpAAAAAgkAAGsAAAADBQAAABN0b2tlblJlY2VpdmVBbW91bnRBCQAAaAAAAAIAAAAA6NSlEAAAAAAAAAABhqAFAAAAEWRBcHBUb2tlbnNBbW91bnRBCQAAawAAAAMFAAAAEWRBcHBUb2tlbnNBbW91bnRCAAAAAOjUpRAABQAAABN0b2tlblJlY2VpdmVBbW91bnRCAwkBAAAAASEAAAABAwkAAGYAAAACBQAAAAp0b2tlblJhdGlvAAAAAAAAAYaWCQAAZgAAAAIAAAAAAAABhqoFAAAACnRva2VuUmF0aW8HCQAAAgAAAAECAAAAF2luY29ycmVjdCBhc3NldHMgYW1vdW50BAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwUAAAATdG9rZW5SZWNlaXZlQW1vdW50QQUAAAAQdG9rZW5TaGFyZVN1cHBseQUAAAARZEFwcFRva2Vuc0Ftb3VudEEDCQAAAAAAAAIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAAAAAAAAAAAAAkAAAIAAAABAgAAACl5b3UgdHJ5IHJlcGxhbnNpc2ggd2l0aCB2ZXJ5IHNtYWxsIGFtb3VudAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAAEWFzc2V0SWRUb2tlblNoYXJlBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BQAAABFhc3NldElkVG9rZW5TaGFyZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAASc2hhcmVfdG9rZW5fc3VwcGx5CQAAZAAAAAIFAAAAEHRva2VuU2hhcmVTdXBwbHkFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5BCQAAZAAAAAIFAAAAEWRBcHBUb2tlbnNBbW91bnRBBQAAABN0b2tlblJlY2VpdmVBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkIJAABkAAAAAgUAAAARZEFwcFRva2Vuc0Ftb3VudEIFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEIFAAAAA25pbAAAAApjb250ZXh0T2JqAQAAABlyZXBsYW5pc2htZW50V2l0aE9uZVRva2VuAAAAAAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAPYXNzZXRJZFJlY2VpdmVkCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBAAAABJ0b2tlblJlY2VpdmVBbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAMJAAAAAAAAAgUAAAAPYXNzZXRJZFJlY2VpdmVkBQAAAA1hc3NldElkVG9rZW5BBAAAAA9uZXdBbW91bnRUb2tlbkEJAABkAAAAAgUAAAAMYW1vdW50VG9rZW5BBQAAABJ0b2tlblJlY2VpdmVBbW91bnQEAAAAFHByaWNlQXRvQndpdGg4ZGlnaXRzCQAAawAAAAMFAAAAD25ld0Ftb3VudFRva2VuQQUAAAALc2NhbGVWYWx1ZTgFAAAADGFtb3VudFRva2VuQgQAAAAgdG9rZW5BbW91bnRCTmV3UHJpY2VPbGRJbnZhcmlhbnQJAABsAAAABgkAAGsAAAADBQAAAAxhbW91bnRUb2tlbkEFAAAADGFtb3VudFRva2VuQgUAAAAUcHJpY2VBdG9Cd2l0aDhkaWdpdHMAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAEAAAAAAAAAAAAFAAAACEhBTEZET1dOBAAAABNuZXdUb2tlblNoYXJlU3VwcGx5CQAAawAAAAMFAAAADGFtb3VudFRva2VuQgUAAAAQdG9rZW5TaGFyZVN1cHBseQUAAAAgdG9rZW5BbW91bnRCTmV3UHJpY2VPbGRJbnZhcmlhbnQEAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAAGUAAAACBQAAABNuZXdUb2tlblNoYXJlU3VwcGx5BQAAABB0b2tlblNoYXJlU3VwcGx5CQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAARYXNzZXRJZFRva2VuU2hhcmUFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAACmNvbnRleHRPYmoAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAAEWFzc2V0SWRUb2tlblNoYXJlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJzaGFyZV90b2tlbl9zdXBwbHkJAABkAAAAAgUAAAAQdG9rZW5TaGFyZVN1cHBseQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkEFAAAAD25ld0Ftb3VudFRva2VuQQUAAAADbmlsAwkAAAAAAAACBQAAAA9hc3NldElkUmVjZWl2ZWQFAAAADWFzc2V0SWRUb2tlbkIEAAAAD25ld0Ftb3VudFRva2VuQgkAAGQAAAACBQAAAAxhbW91bnRUb2tlbkIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAQAAAAUcHJpY2VBdG9Cd2l0aDhkaWdpdHMJAABrAAAAAwUAAAAMYW1vdW50VG9rZW5BBQAAAAtzY2FsZVZhbHVlOAUAAAAPbmV3QW1vdW50VG9rZW5CBAAAACB0b2tlbkFtb3VudEJOZXdQcmljZU9sZEludmFyaWFudAkAAGwAAAAGCQAAawAAAAMFAAAADGFtb3VudFRva2VuQQUAAAAMYW1vdW50VG9rZW5CBQAAABRwcmljZUF0b0J3aXRoOGRpZ2l0cwAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAISEFMRkRPV04EAAAAE25ld1Rva2VuU2hhcmVTdXBwbHkJAABrAAAAAwUAAAAMYW1vdW50VG9rZW5CBQAAABB0b2tlblNoYXJlU3VwcGx5BQAAACB0b2tlbkFtb3VudEJOZXdQcmljZU9sZEludmFyaWFudAQAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAAZQAAAAIFAAAAE25ld1Rva2VuU2hhcmVTdXBwbHkFAAAAEHRva2VuU2hhcmVTdXBwbHkJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAABFhc3NldElkVG9rZW5TaGFyZQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAARYXNzZXRJZFRva2VuU2hhcmUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnNoYXJlX3Rva2VuX3N1cHBseQkAAGQAAAACBQAAABB0b2tlblNoYXJlU3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQgUAAAAPbmV3QW1vdW50VG9rZW5CBQAAAANuaWwJAAACAAAAAQIAAAAbaW5jb3JyZWN0IGFzc2V0cyBpbiBwYXltZW50AAAACmNvbnRleHRPYmoBAAAACHdpdGhkcmF3AAAAAAQAAAARZEFwcFRva2Vuc0Ftb3VudEEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQQQAAAARZEFwcFRva2Vuc0Ftb3VudEIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQgQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAPYXNzZXRJZFJlY2VpdmVkCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBAAAABJ0b2tlblJlY2VpdmVBbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAAEWFzc2V0SWRUb2tlblNoYXJlBQAAAA9hc3NldElkUmVjZWl2ZWQJAAACAAAAAQkAASwAAAACAgAAAC15b3UgbmVlZCB0byBhdHRhY2ggc2hhcmUgdG9rZW4gZm9yIHRoaXMgZEFwcCAJAAJYAAAAAQUAAAARYXNzZXRJZFRva2VuU2hhcmUEAAAADHRva2Vuc1RvUGF5QQkAAGsAAAADBQAAABJ0b2tlblJlY2VpdmVBbW91bnQFAAAAEWRBcHBUb2tlbnNBbW91bnRBBQAAABB0b2tlblNoYXJlU3VwcGx5BAAAAAx0b2tlbnNUb1BheUIJAABrAAAAAwUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAABFkQXBwVG9rZW5zQW1vdW50QgUAAAAQdG9rZW5TaGFyZVN1cHBseQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAADHRva2Vuc1RvUGF5QQUAAAANYXNzZXRJZFRva2VuQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAADHRva2Vuc1RvUGF5QgUAAAANYXNzZXRJZFRva2VuQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5BCQAAZQAAAAIFAAAAEWRBcHBUb2tlbnNBbW91bnRBBQAAAAx0b2tlbnNUb1BheUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQgkAAGUAAAACBQAAABFkQXBwVG9rZW5zQW1vdW50QgUAAAAMdG9rZW5zVG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJzaGFyZV90b2tlbl9zdXBwbHkJAABlAAAAAgUAAAAQdG9rZW5TaGFyZVN1cHBseQUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAARYXNzZXRJZFRva2VuU2hhcmUFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAUAAAADbmlsAAAACmNvbnRleHRPYmoBAAAACWV4Y2hhbmdlcgAAAAEAAAAPbWluVG9rZW5SZWNpZXZlBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAApjb250ZXh0T2JqAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAA9hc3NldElkUmVjZWl2ZWQIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQEAAAAEnRva2VuUmVjZWl2ZUFtb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAAAVjb3VudAkBAAAABXZhbHVlAAAAAQkABBoAAAACBQAAAAR0aGlzAgAAAA5leGNoYW5nZV9jb3VudAMJAAAAAAAAAgUAAAAPYXNzZXRJZFJlY2VpdmVkBQAAAA1hc3NldElkVG9rZW5CBAAAAA90b2tlblNlbmRBbW91bnQJAABpAAAAAgkAAGgAAAACCQAAawAAAAMFAAAADGFtb3VudFRva2VuQQUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAAZAAAAAIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAUAAAAMYW1vdW50VG9rZW5CCQAAZQAAAAIFAAAAF2NvbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAAljb21pc3Npb24FAAAAF2NvbWlzc2lvblNjYWxlRGVsaW1pdGVyAwkAAGYAAAACBQAAAA9taW5Ub2tlblJlY2lldmUFAAAAD3Rva2VuU2VuZEFtb3VudAkAAAIAAAABAgAAAFlQcmljZSBoYXMgY2hhbmdlZCBkcmFtYXRpY2FseS4gUmVjZWl2aW5nIHRva2VuIGFtb3VudCBkb24ndCBzYXRpc2Z5IHNwZWNpZmllZCBwcmljZSBsZXZlbAQAAAALYXNzZXRJZFNlbnQFAAAADWFzc2V0SWRUb2tlbkEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQQkAAGUAAAACBQAAAAxhbW91bnRUb2tlbkEFAAAAD3Rva2VuU2VuZEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CCQAAZAAAAAIFAAAADGFtb3VudFRva2VuQgUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA5leGNoYW5nZV9jb3VudAkAAGQAAAACBQAAAAVjb3VudAAAAAAAAAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAAD3Rva2VuU2VuZEFtb3VudAUAAAALYXNzZXRJZFNlbnQFAAAAA25pbAMJAAAAAAAAAgUAAAAPYXNzZXRJZFJlY2VpdmVkBQAAAA1hc3NldElkVG9rZW5BBAAAAA90b2tlblNlbmRBbW91bnQJAABpAAAAAgkAAGgAAAACCQAAawAAAAMFAAAADGFtb3VudFRva2VuQgUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAAZAAAAAIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAUAAAAMYW1vdW50VG9rZW5BCQAAZQAAAAIFAAAAF2NvbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAAljb21pc3Npb24FAAAAF2NvbWlzc2lvblNjYWxlRGVsaW1pdGVyAwkAAGYAAAACBQAAAA9taW5Ub2tlblJlY2lldmUFAAAAD3Rva2VuU2VuZEFtb3VudAkAAAIAAAABAgAAAFlQcmljZSBoYXMgY2hhbmdlZCBkcmFtYXRpY2FseS4gUmVjZWl2aW5nIHRva2VuIGFtb3VudCBkb24ndCBzYXRpc2Z5IHNwZWNpZmllZCBwcmljZSBsZXZlbAQAAAALYXNzZXRJZFNlbnQFAAAADWFzc2V0SWRUb2tlbkIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQQkAAGQAAAACBQAAAAxhbW91bnRUb2tlbkEFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CCQAAZQAAAAIFAAAADGFtb3VudFRva2VuQgUAAAAPdG9rZW5TZW5kQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA5leGNoYW5nZV9jb3VudAkAAGQAAAACBQAAAAVjb3VudAAAAAAAAAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAAD3Rva2VuU2VuZEFtb3VudAUAAAALYXNzZXRJZFNlbnQFAAAAA25pbAkAAAIAAAABAgAAABRBc3NldCBpcyBub3QgYWxsb3dlZAAAAAAUbkBy", "chainId": 84, "height": 1232165, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: EMn9FnsZ9BaoXdUQWYcfGqyaVvEZFDPenDgrG2mc2iD6 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let IdTokenA = getStringValue(this, "assetIdTokenA")
5+
6+let IdTokenB = getStringValue(this, "assetIdTokenB")
7+
8+let amountTokenB = getIntegerValue(this, "amountTokenB")
9+
10+let amountTokenA = getIntegerValue(this, "amountTokenA")
11+
12+let IdTokenShare = getStringValue(this, "share_token_id")
13+
14+let tokenShareSupply = getIntegerValue(this, "share_token_supply")
15+
16+let comission = 500
17+
18+let comissionScaleDelimiter = 1000000
19+
20+let version = "1.0.0"
21+
22+let scaleValue8 = 100000000
23+
24+let ratioThresholdMax = 100000000
25+
26+let ratioThresholdMin = 99999000
27+
28+let scaleValue8Digits = 8
29+
30+func assetId (asset) = if ((asset == "WAVES"))
31+ then unit
32+ else fromBase58String(asset)
33+
34+
35+let assetIdTokenA = assetId(IdTokenA)
36+
37+let assetIdTokenB = assetId(IdTokenB)
38+
39+let assetIdTokenShare = fromBase58String(IdTokenShare)
40+
41+@Callable(contextObj)
42+func fund () = {
43+ let paymentA = value(contextObj.payments[0])
44+ let paymentB = value(contextObj.payments[1])
45+ let assetIdReceivedA = paymentA.assetId
46+ let tokenReceiveAmountA = paymentA.amount
47+ let assetIdReceivedB = paymentB.assetId
48+ let tokenReceiveAmountB = paymentB.amount
49+ let digitTokenA = match assetIdReceivedA {
50+ case p: Unit =>
51+ 8
52+ case p: ByteVector =>
53+ value(assetInfo(p)).decimals
54+ case _ =>
55+ throw("Match error")
56+ }
57+ let digitTokenB = match assetIdReceivedB {
58+ case p: Unit =>
59+ 8
60+ case p: ByteVector =>
61+ value(assetInfo(p)).decimals
62+ case _ =>
63+ throw("Match error")
64+ }
65+ if (isDefined(getBoolean(this, "status")))
66+ then throw("already active")
67+ else {
68+ let shareTokenName = ("ShareT_" + takeRight(toString(this), 5))
69+ let digitsInShareToken = ((digitTokenA + digitTokenB) / 2)
70+ let shareTokenInitialAmount = fraction(pow(tokenReceiveAmountA, digitTokenA, 5, 1, digitTokenA, HALFDOWN), pow(tokenReceiveAmountB, digitTokenB, 5, 1, digitTokenB, HALFDOWN), pow(10, 0, digitsInShareToken, 0, 0, HALFDOWN))
71+ let shareTokenAssetId = calculateAssetId(Issue(shareTokenName, shareTokenName, shareTokenInitialAmount, digitsInShareToken, true))
72+ let assetIdTokenStringA = match assetIdReceivedA {
73+ case t: Unit =>
74+ "WAVES"
75+ case t: ByteVector =>
76+ toBase58String(value(assetIdReceivedA))
77+ case _ =>
78+ throw("Match error")
79+ }
80+ let assetIdTokenStringB = match assetIdReceivedB {
81+ case t: Unit =>
82+ "WAVES"
83+ case t: ByteVector =>
84+ toBase58String(value(assetIdReceivedB))
85+ case _ =>
86+ throw("Match error")
87+ }
88+[IntegerEntry("amountTokenA", tokenReceiveAmountA), IntegerEntry("amountTokenB", tokenReceiveAmountB), StringEntry("assetIdTokenA", assetIdTokenStringA), StringEntry("assetIdTokenB", assetIdTokenStringB), IntegerEntry("exchange_count", 0), BooleanEntry("status", true), IntegerEntry("comission", comission), IntegerEntry("comissionScaleDelimiter", comissionScaleDelimiter), StringEntry("version", version), Issue(shareTokenName, shareTokenName, shareTokenInitialAmount, digitsInShareToken, true), ScriptTransfer(contextObj.caller, shareTokenInitialAmount, shareTokenAssetId), StringEntry("share_token_id", toBase58String(shareTokenAssetId)), IntegerEntry("share_token_supply", shareTokenInitialAmount)]
89+ }
90+ }
91+
92+
93+
94+@Callable(contextObj)
95+func replenishment () = {
96+ let paymentA = value(contextObj.payments[0])
97+ let paymentB = value(contextObj.payments[1])
98+ let assetIdReceivedA = paymentA.assetId
99+ let tokenReceiveAmountA = paymentA.amount
100+ let assetIdReceivedB = paymentB.assetId
101+ let tokenReceiveAmountB = paymentB.amount
102+ let dAppTokensAmountA = getIntegerValue(this, "amountTokenA")
103+ let dAppTokensAmountB = getIntegerValue(this, "amountTokenB")
104+ if (if ((assetIdReceivedA != assetIdTokenA))
105+ then true
106+ else (assetIdReceivedB != assetIdTokenB))
107+ then throw("incorrect assets")
108+ else {
109+ let tokenRatio = (fraction(tokenReceiveAmountA, (1000000000000 * 100000), dAppTokensAmountA) / fraction(dAppTokensAmountB, 1000000000000, tokenReceiveAmountB))
110+ if (!(if ((tokenRatio > 99990))
111+ then (100010 > tokenRatio)
112+ else false))
113+ then throw("incorrect assets amount")
114+ else {
115+ let shareTokenToPayAmount = fraction(tokenReceiveAmountA, tokenShareSupply, dAppTokensAmountA)
116+ if ((shareTokenToPayAmount == 0))
117+ then throw("you try replansish with very small amount")
118+ else [Reissue(assetIdTokenShare, shareTokenToPayAmount, true), ScriptTransfer(contextObj.caller, shareTokenToPayAmount, assetIdTokenShare), IntegerEntry("share_token_supply", (tokenShareSupply + shareTokenToPayAmount)), IntegerEntry("amountTokenA", (dAppTokensAmountA + tokenReceiveAmountA)), IntegerEntry("amountTokenB", (dAppTokensAmountB + tokenReceiveAmountB))]
119+ }
120+ }
121+ }
122+
123+
124+
125+@Callable(contextObj)
126+func replanishmentWithOneToken () = {
127+ let payment = value(contextObj.payments[0])
128+ let assetIdReceived = payment.assetId
129+ let tokenReceiveAmount = payment.amount
130+ if ((assetIdReceived == assetIdTokenA))
131+ then {
132+ let newAmountTokenA = (amountTokenA + tokenReceiveAmount)
133+ let priceAtoBwith8digits = fraction(newAmountTokenA, scaleValue8, amountTokenB)
134+ let tokenAmountBNewPriceOldInvariant = pow(fraction(amountTokenA, amountTokenB, priceAtoBwith8digits), 0, 5, 1, 0, HALFDOWN)
135+ let newTokenShareSupply = fraction(amountTokenB, tokenShareSupply, tokenAmountBNewPriceOldInvariant)
136+ let shareTokenToPayAmount = (newTokenShareSupply - tokenShareSupply)
137+[Reissue(assetIdTokenShare, shareTokenToPayAmount, true), ScriptTransfer(contextObj.caller, shareTokenToPayAmount, assetIdTokenShare), IntegerEntry("share_token_supply", (tokenShareSupply + shareTokenToPayAmount)), IntegerEntry("amountTokenA", newAmountTokenA)]
138+ }
139+ else if ((assetIdReceived == assetIdTokenB))
140+ then {
141+ let newAmountTokenB = (amountTokenB + tokenReceiveAmount)
142+ let priceAtoBwith8digits = fraction(amountTokenA, scaleValue8, newAmountTokenB)
143+ let tokenAmountBNewPriceOldInvariant = pow(fraction(amountTokenA, amountTokenB, priceAtoBwith8digits), 0, 5, 1, 0, HALFDOWN)
144+ let newTokenShareSupply = fraction(amountTokenB, tokenShareSupply, tokenAmountBNewPriceOldInvariant)
145+ let shareTokenToPayAmount = (newTokenShareSupply - tokenShareSupply)
146+[Reissue(assetIdTokenShare, shareTokenToPayAmount, true), ScriptTransfer(contextObj.caller, shareTokenToPayAmount, assetIdTokenShare), IntegerEntry("share_token_supply", (tokenShareSupply + shareTokenToPayAmount)), IntegerEntry("amountTokenB", newAmountTokenB)]
147+ }
148+ else throw("incorrect assets in payment")
149+ }
150+
151+
152+
153+@Callable(contextObj)
154+func withdraw () = {
155+ let dAppTokensAmountA = getIntegerValue(this, "amountTokenA")
156+ let dAppTokensAmountB = getIntegerValue(this, "amountTokenB")
157+ let payment = value(contextObj.payments[0])
158+ let assetIdReceived = payment.assetId
159+ let tokenReceiveAmount = payment.amount
160+ if ((assetIdTokenShare != assetIdReceived))
161+ then throw(("you need to attach share token for this dApp " + toBase58String(assetIdTokenShare)))
162+ else {
163+ let tokensToPayA = fraction(tokenReceiveAmount, dAppTokensAmountA, tokenShareSupply)
164+ let tokensToPayB = fraction(tokenReceiveAmount, dAppTokensAmountB, tokenShareSupply)
165+[ScriptTransfer(contextObj.caller, tokensToPayA, assetIdTokenA), ScriptTransfer(contextObj.caller, tokensToPayB, assetIdTokenB), IntegerEntry("amountTokenA", (dAppTokensAmountA - tokensToPayA)), IntegerEntry("amountTokenB", (dAppTokensAmountB - tokensToPayB)), IntegerEntry("share_token_supply", (tokenShareSupply - tokenReceiveAmount)), Burn(assetIdTokenShare, tokenReceiveAmount)]
166+ }
167+ }
168+
169+
170+
171+@Callable(contextObj)
172+func exchanger (minTokenRecieve) = {
173+ let payment = value(contextObj.payments[0])
174+ let assetIdReceived = payment.assetId
175+ let tokenReceiveAmount = payment.amount
176+ let count = value(getInteger(this, "exchange_count"))
177+ if ((assetIdReceived == assetIdTokenB))
178+ then {
179+ let tokenSendAmount = ((fraction(amountTokenA, tokenReceiveAmount, (tokenReceiveAmount + amountTokenB)) * (comissionScaleDelimiter - comission)) / comissionScaleDelimiter)
180+ if ((minTokenRecieve > tokenSendAmount))
181+ then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
182+ else {
183+ let assetIdSent = assetIdTokenA
184+[IntegerEntry("amountTokenA", (amountTokenA - tokenSendAmount)), IntegerEntry("amountTokenB", (amountTokenB + tokenReceiveAmount)), IntegerEntry("exchange_count", (count + 1)), ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]
185+ }
186+ }
187+ else if ((assetIdReceived == assetIdTokenA))
188+ then {
189+ let tokenSendAmount = ((fraction(amountTokenB, tokenReceiveAmount, (tokenReceiveAmount + amountTokenA)) * (comissionScaleDelimiter - comission)) / comissionScaleDelimiter)
190+ if ((minTokenRecieve > tokenSendAmount))
191+ then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
192+ else {
193+ let assetIdSent = assetIdTokenB
194+[IntegerEntry("amountTokenA", (amountTokenA + tokenReceiveAmount)), IntegerEntry("amountTokenB", (amountTokenB - tokenSendAmount)), IntegerEntry("exchange_count", (count + 1)), ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]
195+ }
196+ }
197+ else throw("Asset is not allowed")
198+ }
199+
200+

github/deemru/w8io/3ef1775 
32.00 ms