tx · CfzPho1k357tX7VFc1RgM8d8LuqNX9mK6yKegjxDcsUd

3N38SpkeVviCgRf2LWTpahvE6JKg3yrrkgN:  -0.01400000 Waves

2020.09.11 13:20 [1172527] smart account 3N38SpkeVviCgRf2LWTpahvE6JKg3yrrkgN > SELF 0.00000000 Waves

{ "type": 13, "id": "CfzPho1k357tX7VFc1RgM8d8LuqNX9mK6yKegjxDcsUd", "fee": 1400000, "feeAssetId": null, "timestamp": 1599819667068, "version": 1, "sender": "3N38SpkeVviCgRf2LWTpahvE6JKg3yrrkgN", "senderPublicKey": "AFxdzRLfjLbKYeqXAbCEK1b8bpLJqAF5HU4B8a8RmxDX", "proofs": [ "5n4uXJWGjkeeBocyhgJT1KV1DmGpLctXLiM1WmP4hTUdiWLgK4Ppx43biGNgM6PWif7p9fYSSrFfJsf92ugGwTMX" ], "script": "base64:AAIEAAAAAAAAAA0IAhIAEgASABIDCgEBAAAACQAAAAAISWRUb2tlbkEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMCAAAADWFzc2V0SWRUb2tlbkEAAAAACElkVG9rZW5CCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAA1hc3NldElkVG9rZW5CAAAAABFhc3NldElkVG9rZW5TaGFyZQkBAAAAEUBleHRyTmF0aXZlKDEwNTIpAAAAAgUAAAAEdGhpcwIAAAAOc2hhcmVfdG9rZW5faWQAAAAAEHRva2VuU2hhcmVTdXBwbHkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAAEnNoYXJlX3Rva2VuX3N1cHBseQAAAAAJY29taXNzaW9uAAAAAAAAAAAAAAAAAAd2ZXJzaW9uAgAAAAUwLjAuMgEAAAAHYXNzZXRJZAAAAAEAAAAFYXNzZXQDCQAAAAAAAAIFAAAABWFzc2V0AgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAAVhc3NldAAAAAANYXNzZXRJZFRva2VuQQkBAAAAB2Fzc2V0SWQAAAABBQAAAAhJZFRva2VuQQAAAAANYXNzZXRJZFRva2VuQgkBAAAAB2Fzc2V0SWQAAAABBQAAAAhJZFRva2VuQgAAAAQAAAAKY29udGV4dE9iagEAAAAEZnVuZAAAAAAEAAAACHBheW1lbnRBCQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAApjb250ZXh0T2JqAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAhwYXltZW50QgkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAAQYXNzZXRJZFJlY2VpdmVkQQgFAAAACHBheW1lbnRBAAAAB2Fzc2V0SWQEAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEIBQAAAAhwYXltZW50QQAAAAZhbW91bnQEAAAAEGFzc2V0SWRSZWNlaXZlZEIIBQAAAAhwYXltZW50QgAAAAdhc3NldElkBAAAABN0b2tlblJlY2VpdmVBbW91bnRCCAUAAAAIcGF5bWVudEIAAAAGYW1vdW50AwkBAAAACWlzRGVmaW5lZAAAAAEJAAQbAAAAAgUAAAAEdGhpcwIAAAAGc3RhdHVzCQAAAgAAAAECAAAADmFscmVhZHkgYWN0aXZlBAAAAA5zaGFyZVRva2VuTmFtZQIAAAAMc2hhcmVfdG9rZW5fBAAAABdzaGFyZVRva2VuSW5pdGlhbEFtb3VudAkAAGgAAAACCQAAbAAAAAYFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAEAAAAAAAAAAAAFAAAABERPV04JAABsAAAABgUAAAATdG9rZW5SZWNlaXZlQW1vdW50QgAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgQAAAARc2hhcmVUb2tlbkFzc2V0SWQJAAQ4AAAAAQkABEIAAAAFBQAAAA5zaGFyZVRva2VuTmFtZQUAAAAOc2hhcmVUb2tlbk5hbWUFAAAAF3NoYXJlVG9rZW5Jbml0aWFsQW1vdW50AAAAAAAAAAAABgQAAAATYXNzZXRJZFRva2VuU3RyaW5nQQQAAAAHJG1hdGNoMAUAAAAQYXNzZXRJZFJlY2VpdmVkQQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABdAUAAAAHJG1hdGNoMAIAAAAFV0FWRVMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAXQFAAAAByRtYXRjaDAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAQYXNzZXRJZFJlY2VpdmVkQQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgQAAAATYXNzZXRJZFRva2VuU3RyaW5nQgQAAAAHJG1hdGNoMAUAAAAQYXNzZXRJZFJlY2VpdmVkQgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABdAUAAAAHJG1hdGNoMAIAAAAFV0FWRVMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAXQFAAAAByRtYXRjaDAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAQYXNzZXRJZFJlY2VpdmVkQgkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5BBQAAABN0b2tlblJlY2VpdmVBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkIFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAANYXNzZXRJZFRva2VuQQUAAAATYXNzZXRJZFRva2VuU3RyaW5nQQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA1hc3NldElkVG9rZW5CBQAAABNhc3NldElkVG9rZW5TdHJpbmdCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA5leGNoYW5nZV9jb3VudAAAAAAAAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgIAAAAGc3RhdHVzBgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAJY29taXNzaW9uBQAAAAljb21pc3Npb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHdmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQAEQgAAAAUFAAAADnNoYXJlVG9rZW5OYW1lBQAAAA5zaGFyZVRva2VuTmFtZQUAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQAAAAAAAAAAAAGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAXc2hhcmVUb2tlbkluaXRpYWxBbW91bnQFAAAAEXNoYXJlVG9rZW5Bc3NldElkCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAICAAAADnNoYXJlX3Rva2VuX2lkBQAAABFzaGFyZVRva2VuQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAASc2hhcmVfdG9rZW5fc3VwcGx5BQAAABdzaGFyZVRva2VuSW5pdGlhbEFtb3VudAUAAAADbmlsAAAACmNvbnRleHRPYmoBAAAADXJlcGxlbmlzaG1lbnQAAAAABAAAAAhwYXltZW50QQkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAIcGF5bWVudEIJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAACmNvbnRleHRPYmoAAAAIcGF5bWVudHMAAAAAAAAAAAEEAAAAEGFzc2V0SWRSZWNlaXZlZEEIBQAAAAhwYXltZW50QQAAAAdhc3NldElkBAAAABN0b2tlblJlY2VpdmVBbW91bnRBCAUAAAAIcGF5bWVudEEAAAAGYW1vdW50BAAAABBhc3NldElkUmVjZWl2ZWRCCAUAAAAIcGF5bWVudEIAAAAHYXNzZXRJZAQAAAATdG9rZW5SZWNlaXZlQW1vdW50QggFAAAACHBheW1lbnRCAAAABmFtb3VudAQAAAARZEFwcFRva2Vuc0Ftb3VudEEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQQQAAAARZEFwcFRva2Vuc0Ftb3VudEIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQgMDCQEAAAACIT0AAAACBQAAABBhc3NldElkUmVjZWl2ZWRBBQAAAA1hc3NldElkVG9rZW5BBgkBAAAAAiE9AAAAAgUAAAAQYXNzZXRJZFJlY2VpdmVkQgUAAAANYXNzZXRJZFRva2VuQgkAAAIAAAABAgAAABBpbmNvcnJlY3QgYXNzZXRzBAAAAAp0b2tlblJhdGlvCQAAawAAAAMJAABoAAAAAgUAAAATdG9rZW5SZWNlaXZlQW1vdW50QQUAAAARZEFwcFRva2Vuc0Ftb3VudEIAAAAAAAAAA+gJAABoAAAAAgUAAAATdG9rZW5SZWNlaXZlQW1vdW50QgUAAAARZEFwcFRva2Vuc0Ftb3VudEEDCQEAAAABIQAAAAEDCQAAZgAAAAIFAAAACnRva2VuUmF0aW8AAAAAAAAAA94JAABmAAAAAgAAAAAAAAAD8gUAAAAKdG9rZW5SYXRpbwcJAAACAAAAAQIAAAAXaW5jb3JyZWN0IGFzc2V0cyBhbW91bnQEAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAAGkAAAACCQAAaAAAAAIFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEFAAAAEHRva2VuU2hhcmVTdXBwbHkFAAAAEWRBcHBUb2tlbnNBbW91bnRBCQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAARYXNzZXRJZFRva2VuU2hhcmUFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAACmNvbnRleHRPYmoAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAAEWFzc2V0SWRUb2tlblNoYXJlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJzaGFyZV90b2tlbl9zdXBwbHkJAABkAAAAAgUAAAAQdG9rZW5TaGFyZVN1cHBseQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkEJAABkAAAAAgUAAAARZEFwcFRva2Vuc0Ftb3VudEEFAAAAE3Rva2VuUmVjZWl2ZUFtb3VudEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQgkAAGQAAAACBQAAABFkQXBwVG9rZW5zQW1vdW50QgUAAAATdG9rZW5SZWNlaXZlQW1vdW50QgUAAAADbmlsAAAACmNvbnRleHRPYmoBAAAACHdpdGhkcmF3AAAAAAQAAAARZEFwcFRva2Vuc0Ftb3VudEEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQQQAAAARZEFwcFRva2Vuc0Ftb3VudEIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQgQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAPYXNzZXRJZFJlY2VpdmVkCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBAAAABJ0b2tlblJlY2VpdmVBbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAAEWFzc2V0SWRUb2tlblNoYXJlBQAAAA9hc3NldElkUmVjZWl2ZWQJAAACAAAAAQkAASwAAAACAgAAAC15b3UgbmVlZCB0byBhdHRhY2ggc2hhcmUgdG9rZW4gZm9yIHRoaXMgZEFwcCAJAAJYAAAAAQUAAAARYXNzZXRJZFRva2VuU2hhcmUEAAAADHRva2Vuc1RvUGF5QQkAAGkAAAACCQAAaAAAAAIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAUAAAARZEFwcFRva2Vuc0Ftb3VudEEFAAAAEHRva2VuU2hhcmVTdXBwbHkEAAAADHRva2Vuc1RvUGF5QgkAAGkAAAACCQAAaAAAAAIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAUAAAARZEFwcFRva2Vuc0Ftb3VudEIFAAAAEHRva2VuU2hhcmVTdXBwbHkJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAABFhc3NldElkVG9rZW5TaGFyZQUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkEJAABlAAAAAgUAAAARZEFwcFRva2Vuc0Ftb3VudEEFAAAADHRva2Vuc1RvUGF5QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CCQAAZQAAAAIFAAAAEWRBcHBUb2tlbnNBbW91bnRCBQAAAAx0b2tlbnNUb1BheUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnNoYXJlX3Rva2VuX3N1cHBseQkAAGUAAAACBQAAABB0b2tlblNoYXJlU3VwcGx5BQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAACmNvbnRleHRPYmoAAAAGY2FsbGVyBQAAABFkQXBwVG9rZW5zQW1vdW50QgUAAAANYXNzZXRJZFRva2VuQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAAEWRBcHBUb2tlbnNBbW91bnRCBQAAAA1hc3NldElkVG9rZW5CBQAAAANuaWwAAAAKY29udGV4dE9iagEAAAAJZXhjaGFuZ2VyAAAAAQAAAA9taW5Ub2tlblJlY2lldmUDAwkAAGYAAAACAAAAAAAAAAAABQAAAAljb21pc3Npb24GCQAAZgAAAAIFAAAACWNvbWlzc2lvbgAAAAAAAAAAZAkAAAIAAAABAgAAABlpbmNvcnJlY3QgY29taXNzaW9uIHZhbHVlBAAAAAxhbW91bnRUb2tlbkIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQgQAAAAMYW1vdW50VG9rZW5BCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAAAxhbW91bnRUb2tlbkEEAAAAB3BheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAACmNvbnRleHRPYmoAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAD2Fzc2V0SWRSZWNlaXZlZAgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAQAAAASdG9rZW5SZWNlaXZlQW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAABWNvdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAADmV4Y2hhbmdlX2NvdW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWkFAAAAByRtYXRjaDAJAABkAAAAAgkBAAAABXZhbHVlAAAAAQkABBoAAAACBQAAAAR0aGlzAgAAAA5leGNoYW5nZV9jb3VudAUAAAABaQAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPYXNzZXRJZFJlY2VpdmVkBQAAAA1hc3NldElkVG9rZW5CBAAAAA90b2tlblNlbmRBbW91bnQJAABpAAAAAgkAAGgAAAACCQAAawAAAAMFAAAADGFtb3VudFRva2VuQQUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAAZAAAAAIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAUAAAAMYW1vdW50VG9rZW5CCQAAZQAAAAIAAAAAAAAAAGQFAAAACWNvbWlzc2lvbgAAAAAAAAAAZAMJAABmAAAAAgUAAAAPbWluVG9rZW5SZWNpZXZlBQAAAA90b2tlblNlbmRBbW91bnQJAAACAAAAAQIAAABZUHJpY2UgaGFzIGNoYW5nZWQgZHJhbWF0aWNhbHkuIFJlY2VpdmluZyB0b2tlbiBhbW91bnQgZG9uJ3Qgc2F0aXNmeSBzcGVjaWZpZWQgcHJpY2UgbGV2ZWwEAAAAC2Fzc2V0SWRTZW50BQAAAA1hc3NldElkVG9rZW5BCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkEJAABlAAAAAgUAAAAMYW1vdW50VG9rZW5BBQAAAA90b2tlblNlbmRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQgkAAGQAAAACBQAAAAxhbW91bnRUb2tlbkIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOZXhjaGFuZ2VfY291bnQJAABkAAAAAgUAAAAFY291bnQAAAAAAAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAACmNvbnRleHRPYmoAAAAGY2FsbGVyBQAAAA90b2tlblNlbmRBbW91bnQFAAAAC2Fzc2V0SWRTZW50BQAAAANuaWwDCQAAAAAAAAIFAAAAD2Fzc2V0SWRSZWNlaXZlZAUAAAANYXNzZXRJZFRva2VuQQQAAAAPdG9rZW5TZW5kQW1vdW50CQAAaQAAAAIJAABoAAAAAgkAAGsAAAADBQAAAAxhbW91bnRUb2tlbkIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAkAAGQAAAACBQAAABJ0b2tlblJlY2VpdmVBbW91bnQFAAAADGFtb3VudFRva2VuQQkAAGUAAAACAAAAAAAAAABkBQAAAAljb21pc3Npb24AAAAAAAAAAGQDCQAAZgAAAAIFAAAAD21pblRva2VuUmVjaWV2ZQUAAAAPdG9rZW5TZW5kQW1vdW50CQAAAgAAAAECAAAAWVByaWNlIGhhcyBjaGFuZ2VkIGRyYW1hdGljYWx5LiBSZWNlaXZpbmcgdG9rZW4gYW1vdW50IGRvbid0IHNhdGlzZnkgc3BlY2lmaWVkIHByaWNlIGxldmVsBAAAAAthc3NldElkU2VudAUAAAANYXNzZXRJZFRva2VuQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5BCQAAZAAAAAIFAAAADGFtb3VudFRva2VuQQUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkIJAABlAAAAAgUAAAAMYW1vdW50VG9rZW5CBQAAAA90b2tlblNlbmRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADmV4Y2hhbmdlX2NvdW50CQAAZAAAAAIFAAAABWNvdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAPdG9rZW5TZW5kQW1vdW50BQAAAAthc3NldElkU2VudAUAAAADbmlsCQAAAgAAAAECAAAAFEFzc2V0IGlzIG5vdCBhbGxvd2VkAAAAALC7exw=", "chainId": 84, "height": 1172527, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none 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 assetIdTokenShare = getBinaryValue(this, "share_token_id")
9+
10+let tokenShareSupply = getIntegerValue(this, "share_token_supply")
11+
12+let comission = 0
13+
14+let version = "0.0.2"
15+
16+func assetId (asset) = if ((asset == "WAVES"))
17+ then unit
18+ else fromBase58String(asset)
19+
20+
21+let assetIdTokenA = assetId(IdTokenA)
22+
23+let assetIdTokenB = assetId(IdTokenB)
24+
25+@Callable(contextObj)
26+func fund () = {
27+ let paymentA = value(contextObj.payments[0])
28+ let paymentB = value(contextObj.payments[1])
29+ let assetIdReceivedA = paymentA.assetId
30+ let tokenReceiveAmountA = paymentA.amount
31+ let assetIdReceivedB = paymentB.assetId
32+ let tokenReceiveAmountB = paymentB.amount
33+ if (isDefined(getBoolean(this, "status")))
34+ then throw("already active")
35+ else {
36+ let shareTokenName = "share_token_"
37+ let shareTokenInitialAmount = (pow(tokenReceiveAmountA, 0, 5, 1, 0, DOWN) * pow(tokenReceiveAmountB, 0, 5, 1, 0, DOWN))
38+ let shareTokenAssetId = calculateAssetId(Issue(shareTokenName, shareTokenName, shareTokenInitialAmount, 0, true))
39+ let assetIdTokenStringA = match assetIdReceivedA {
40+ case t: Unit =>
41+ "WAVES"
42+ case t: ByteVector =>
43+ toBase58String(value(assetIdReceivedA))
44+ case _ =>
45+ throw("Match error")
46+ }
47+ let assetIdTokenStringB = match assetIdReceivedB {
48+ case t: Unit =>
49+ "WAVES"
50+ case t: ByteVector =>
51+ toBase58String(value(assetIdReceivedB))
52+ case _ =>
53+ throw("Match error")
54+ }
55+[IntegerEntry("amountTokenA", tokenReceiveAmountA), IntegerEntry("amountTokenB", tokenReceiveAmountB), StringEntry("assetIdTokenA", assetIdTokenStringA), StringEntry("assetIdTokenB", assetIdTokenStringB), IntegerEntry("exchange_count", 0), BooleanEntry("status", true), IntegerEntry("comission", comission), StringEntry("version", version), Issue(shareTokenName, shareTokenName, shareTokenInitialAmount, 0, true), ScriptTransfer(contextObj.caller, shareTokenInitialAmount, shareTokenAssetId), BinaryEntry("share_token_id", shareTokenAssetId), IntegerEntry("share_token_supply", shareTokenInitialAmount)]
56+ }
57+ }
58+
59+
60+
61+@Callable(contextObj)
62+func replenishment () = {
63+ let paymentA = value(contextObj.payments[0])
64+ let paymentB = value(contextObj.payments[1])
65+ let assetIdReceivedA = paymentA.assetId
66+ let tokenReceiveAmountA = paymentA.amount
67+ let assetIdReceivedB = paymentB.assetId
68+ let tokenReceiveAmountB = paymentB.amount
69+ let dAppTokensAmountA = getIntegerValue(this, "amountTokenA")
70+ let dAppTokensAmountB = getIntegerValue(this, "amountTokenB")
71+ if (if ((assetIdReceivedA != assetIdTokenA))
72+ then true
73+ else (assetIdReceivedB != assetIdTokenB))
74+ then throw("incorrect assets")
75+ else {
76+ let tokenRatio = fraction((tokenReceiveAmountA * dAppTokensAmountB), 1000, (tokenReceiveAmountB * dAppTokensAmountA))
77+ if (!(if ((tokenRatio > 990))
78+ then (1010 > tokenRatio)
79+ else false))
80+ then throw("incorrect assets amount")
81+ else {
82+ let shareTokenToPayAmount = ((tokenReceiveAmountA * tokenShareSupply) / dAppTokensAmountA)
83+[Reissue(assetIdTokenShare, shareTokenToPayAmount, true), ScriptTransfer(contextObj.caller, shareTokenToPayAmount, assetIdTokenShare), IntegerEntry("share_token_supply", (tokenShareSupply + shareTokenToPayAmount)), IntegerEntry("amountTokenA", (dAppTokensAmountA + tokenReceiveAmountA)), IntegerEntry("amountTokenB", (dAppTokensAmountB + tokenReceiveAmountB))]
84+ }
85+ }
86+ }
87+
88+
89+
90+@Callable(contextObj)
91+func withdraw () = {
92+ let dAppTokensAmountA = getIntegerValue(this, "amountTokenA")
93+ let dAppTokensAmountB = getIntegerValue(this, "amountTokenB")
94+ let payment = value(contextObj.payments[0])
95+ let assetIdReceived = payment.assetId
96+ let tokenReceiveAmount = payment.amount
97+ if ((assetIdTokenShare != assetIdReceived))
98+ then throw(("you need to attach share token for this dApp " + toBase58String(assetIdTokenShare)))
99+ else {
100+ let tokensToPayA = ((tokenReceiveAmount * dAppTokensAmountA) / tokenShareSupply)
101+ let tokensToPayB = ((tokenReceiveAmount * dAppTokensAmountB) / tokenShareSupply)
102+[Burn(assetIdTokenShare, tokenReceiveAmount), IntegerEntry("amountTokenA", (dAppTokensAmountA - tokensToPayA)), IntegerEntry("amountTokenB", (dAppTokensAmountB - tokensToPayB)), IntegerEntry("share_token_supply", (tokenShareSupply - tokenReceiveAmount)), ScriptTransfer(contextObj.caller, dAppTokensAmountB, assetIdTokenA), ScriptTransfer(contextObj.caller, dAppTokensAmountB, assetIdTokenB)]
103+ }
104+ }
105+
106+
107+
108+@Callable(contextObj)
109+func exchanger (minTokenRecieve) = if (if ((0 > comission))
110+ then true
111+ else (comission > 100))
112+ then throw("incorrect comission value")
113+ else {
114+ let amountTokenB = getIntegerValue(this, "amountTokenB")
115+ let amountTokenA = getIntegerValue(this, "amountTokenA")
116+ let payment = value(contextObj.payments[0])
117+ let assetIdReceived = payment.assetId
118+ let tokenReceiveAmount = payment.amount
119+ let count = match getInteger(this, "exchange_count") {
120+ case i: Int =>
121+ (value(getInteger(this, "exchange_count")) + i)
122+ case _ =>
123+ 0
124+ }
125+ if ((assetIdReceived == assetIdTokenB))
126+ then {
127+ let tokenSendAmount = ((fraction(amountTokenA, tokenReceiveAmount, (tokenReceiveAmount + amountTokenB)) * (100 - comission)) / 100)
128+ if ((minTokenRecieve > tokenSendAmount))
129+ then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
130+ else {
131+ let assetIdSent = assetIdTokenA
132+[IntegerEntry("amountTokenA", (amountTokenA - tokenSendAmount)), IntegerEntry("amountTokenB", (amountTokenB + tokenReceiveAmount)), IntegerEntry("exchange_count", (count + 1)), ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]
133+ }
134+ }
135+ else if ((assetIdReceived == assetIdTokenA))
136+ then {
137+ let tokenSendAmount = ((fraction(amountTokenB, tokenReceiveAmount, (tokenReceiveAmount + amountTokenA)) * (100 - comission)) / 100)
138+ if ((minTokenRecieve > tokenSendAmount))
139+ then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
140+ else {
141+ let assetIdSent = assetIdTokenB
142+[IntegerEntry("amountTokenA", (amountTokenA + tokenReceiveAmount)), IntegerEntry("amountTokenB", (amountTokenB - tokenSendAmount)), IntegerEntry("exchange_count", (count + 1)), ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]
143+ }
144+ }
145+ else throw("Asset is not allowed")
146+ }
147+
148+

github/deemru/w8io/026f985 
27.10 ms