tx · BxPZ7X4yufcYK1hqHP97UCHkYEURPJiebXpSkxG5oL1u

3N9fXabcuBDojzpVYcucAWK8Ys1vQmj7TNw:  -0.01800000 Waves

2020.08.26 12:36 [1149507] smart account 3N9fXabcuBDojzpVYcucAWK8Ys1vQmj7TNw > SELF 0.00000000 Waves

{ "type": 13, "id": "BxPZ7X4yufcYK1hqHP97UCHkYEURPJiebXpSkxG5oL1u", "fee": 1800000, "feeAssetId": null, "timestamp": 1598434637826, "version": 1, "sender": "3N9fXabcuBDojzpVYcucAWK8Ys1vQmj7TNw", "senderPublicKey": "JDHqBuFt75kbciu2V63iJuZoHvPwz5Hp4AWAi8W8YmiC", "proofs": [ "97X2LsB9pZXs4pkCYJjKzv34pnmw2xF5Hpn4nnrLX2FxN3kcLQRwQKvSmYQj6AicewsdFaQyFDUJuR5bDF6jhWt" ], "script": "base64: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dmVBbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAMDCQAAAAAAAAIFAAAAD2Fzc2V0SWRSZWNlaXZlZAUAAAANYXNzZXRJZFRva2VuQQkBAAAACWlzRGVmaW5lZAAAAAEJAAQbAAAAAgUAAAAEdGhpcwIAAAAFZnVuZEEHBAAAAAxhbW91bnRUb2tlbkEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5BCQAAZAAAAAIFAAAADGFtb3VudFRva2VuQQUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAAANuaWwDAwkAAAAAAAACBQAAAA9hc3NldElkUmVjZWl2ZWQFAAAADWFzc2V0SWRUb2tlbkIJAQAAAAlpc0RlZmluZWQAAAABCQAEGwAAAAIFAAAABHRoaXMCAAAABWZ1bmRCBwQAAAAMYW1vdW50VG9rZW5CCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAAAxhbW91bnRUb2tlbkIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQgkAAGQAAAACBQAAAAxhbW91bnRUb2tlbkIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAUAAAADbmlsCQAAAgAAAAECAAAAJ3RoZXJlIHdhcyBhbiBlcnJvciBpbiB0aGUgcmVwbGVuaXNobWVudAAAAApjb250ZXh0T2JqAQAAAAlleGNoYW5nZXIAAAABAAAAD21pblRva2VuUmVjaWV2ZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAACWNvbWlzc2lvbgYJAABmAAAAAgUAAAAJY29taXNzaW9uAAAAAAAAAABkCQAAAgAAAAECAAAAGWluY29ycmVjdCBjb21pc3Npb24gdmFsdWUEAAAADGFtb3VudFRva2VuQgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAMYW1vdW50VG9rZW5CBAAAAAxhbW91bnRUb2tlbkEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADGFtb3VudFRva2VuQQQAAAAHcGF5bWVudAQAAAAHJG1hdGNoMAgFAAAACmNvbnRleHRPYmoAAAAHcGF5bWVudAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPQXR0YWNoZWRQYXltZW50BAAAAAFwBQAAAAckbWF0Y2gwBQAAAAFwCQAAAgAAAAECAAAAFFBheW1lbnQgbm90IGF0dGFjaGVkBAAAAA9hc3NldElkUmVjZWl2ZWQIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQEAAAAEnRva2VuUmVjZWl2ZUFtb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAAAVjb3VudAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAAA5leGNoYW5nZV9jb3VudAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwCQAAZAAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQaAAAAAgUAAAAEdGhpcwIAAAAOZXhjaGFuZ2VfY291bnQFAAAAAWkAAAAAAAAAAAADCQAAAAAAAAIFAAAAD2Fzc2V0SWRSZWNlaXZlZAUAAAANYXNzZXRJZFRva2VuQgQAAAAPdG9rZW5TZW5kQW1vdW50CQAAaQAAAAIJAABoAAAAAgkAAGsAAAADBQAAAAxhbW91bnRUb2tlbkEFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAkAAGQAAAACBQAAABJ0b2tlblJlY2VpdmVBbW91bnQFAAAADGFtb3VudFRva2VuQgkAAGUAAAACAAAAAAAAAABkBQAAAAljb21pc3Npb24AAAAAAAAAAGQDCQAAZgAAAAIFAAAAD21pblRva2VuUmVjaWV2ZQUAAAAPdG9rZW5TZW5kQW1vdW50CQAAAgAAAAECAAAAWVByaWNlIGhhcyBjaGFuZ2VkIGRyYW1hdGljYWx5LiBSZWNlaXZpbmcgdG9rZW4gYW1vdW50IGRvbid0IHNhdGlzZnkgc3BlY2lmaWVkIHByaWNlIGxldmVsBAAAAAthc3NldElkU2VudAUAAAANYXNzZXRJZFRva2VuQQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQQkAAGUAAAACBQAAAAxhbW91bnRUb2tlbkEFAAAAD3Rva2VuU2VuZEFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAMYW1vdW50VG9rZW5CCQAAZAAAAAIFAAAADGFtb3VudFRva2VuQgUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAA5leGNoYW5nZV9jb3VudAkAAGQAAAACBQAAAAVjb3VudAAAAAAAAAAAAQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAPdG9rZW5TZW5kQW1vdW50BQAAAAthc3NldElkU2VudAUAAAADbmlsAwkAAAAAAAACBQAAAA9hc3NldElkUmVjZWl2ZWQFAAAADWFzc2V0SWRUb2tlbkEEAAAAD3Rva2VuU2VuZEFtb3VudAkAAGkAAAACCQAAaAAAAAIJAABrAAAAAwUAAAAMYW1vdW50VG9rZW5CBQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAABkAAAAAgUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAAAxhbW91bnRUb2tlbkEJAABlAAAAAgAAAAAAAAAAZAUAAAAJY29taXNzaW9uAAAAAAAAAABkAwkAAGYAAAACBQAAAA9taW5Ub2tlblJlY2lldmUFAAAAD3Rva2VuU2VuZEFtb3VudAkAAAIAAAABAgAAAFlQcmljZSBoYXMgY2hhbmdlZCBkcmFtYXRpY2FseS4gUmVjZWl2aW5nIHRva2VuIGFtb3VudCBkb24ndCBzYXRpc2Z5IHNwZWNpZmllZCBwcmljZSBsZXZlbAQAAAALYXNzZXRJZFNlbnQFAAAADWFzc2V0SWRUb2tlbkIJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkEJAABkAAAAAgUAAAAMYW1vdW50VG9rZW5BBQAAABJ0b2tlblJlY2VpdmVBbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQgkAAGUAAAACBQAAAAxhbW91bnRUb2tlbkIFAAAAD3Rva2VuU2VuZEFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAOZXhjaGFuZ2VfY291bnQJAABkAAAAAgUAAAAFY291bnQAAAAAAAAAAAEFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAAD3Rva2VuU2VuZEFtb3VudAUAAAALYXNzZXRJZFNlbnQFAAAAA25pbAkAAAIAAAABAgAAABRBc3NldCBpcyBub3QgYWxsb3dlZAAAAApjb250ZXh0T2JqAQAAAAh3aXRoZHJhdwAAAAAEAAAADUJhbGFuY2VUb2tlbkEJAAPrAAAAAgUAAAAEdGhpcwUAAAANYXNzZXRJZFRva2VuQQQAAAANQmFsYW5jZVRva2VuQgkAA+sAAAACBQAAAAR0aGlzBQAAAA1hc3NldElkVG9rZW5CAwkAAAAAAAACCAgFAAAACmNvbnRleHRPYmoAAAAGY2FsbGVyAAAABWJ5dGVzBQAAAAVvd25lcgkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADGFtb3VudFRva2VuQQIAAAAJd2l0aGRyYXduCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAxhbW91bnRUb2tlbkICAAAACXdpdGhkcmF3bgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAGc3RhdHVzBwUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAANQmFsYW5jZVRva2VuQQUAAAANYXNzZXRJZFRva2VuQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAADUJhbGFuY2VUb2tlbkIFAAAADWFzc2V0SWRUb2tlbkIFAAAAA25pbAkAAAIAAAABAgAAAB1Zb3UgYXJlIG5vdCBleGNoYW5nZXIncyBvd25lcgAAAAC/V0Ag", "chainId": 84, "height": 1149507, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let owner = base58'3N3AeA5FWm7EHheHoik8BBEA3GXXJosnVY8'
5+
6+let IdTokenA = "WAVES"
7+
8+let IdTokenB = "DWgwcZTMhSvnyYCoWLRUXXSH1RSkzThXLJhww9gwkqdn"
9+
10+let comission = 0
11+
12+let version = "0.0.1"
13+
14+func assetId (asset) = if ((asset == "WAVES"))
15+ then unit
16+ else fromBase58String(asset)
17+
18+
19+let assetIdTokenA = assetId(IdTokenA)
20+
21+let assetIdTokenB = assetId(IdTokenB)
22+
23+@Callable(contextObj)
24+func fund () = {
25+ let payment = match contextObj.payment {
26+ case p: AttachedPayment =>
27+ p
28+ case _ =>
29+ throw("Payment not attached")
30+ }
31+ let assetIdReceived = payment.assetId
32+ let tokenReceiveAmount = payment.amount
33+ if (isDefined(assetIdTokenA))
34+ then throw("aaaa")
35+ else if (if ((assetIdReceived == assetIdTokenA))
36+ then !(isDefined(getBoolean(this, "fundA")))
37+ else false)
38+ then if (isDefined(getBoolean(this, "fundB")))
39+ then WriteSet([DataEntry("amountTokenA", tokenReceiveAmount), DataEntry("fundA", true), DataEntry("exchange_count", 0), DataEntry("status", true), DataEntry("assetIdTokenA", IdTokenA), DataEntry("assetIdTokenB", IdTokenB), DataEntry("comission", comission), DataEntry("version", version), DataEntry("owner", toBase58String(owner))])
40+ else WriteSet([DataEntry("amountTokenA", tokenReceiveAmount), DataEntry("assetIdTokenA", IdTokenA), DataEntry("fundA", true)])
41+ else if (if ((assetIdReceived == assetIdTokenB))
42+ then !(isDefined(getBoolean(this, "fundB")))
43+ else false)
44+ then if (isDefined(getBoolean(this, "fundA")))
45+ then WriteSet([DataEntry("amountTokenB", tokenReceiveAmount), DataEntry("fundB", true), DataEntry("exchange_count", 0), DataEntry("status", true), DataEntry("assetIdTokenB", IdTokenB), DataEntry("assetIdTokenB", IdTokenB), DataEntry("comission", comission), DataEntry("version", version), DataEntry("owner", toBase58String(owner))])
46+ else WriteSet([DataEntry("amountTokenB", tokenReceiveAmount), DataEntry("assetIdTokenB", IdTokenB), DataEntry("fundB", true)])
47+ else throw("already funded or you try to fund with incorrect asset")
48+ }
49+
50+
51+
52+@Callable(contextObj)
53+func replenishment () = {
54+ let payment = match contextObj.payment {
55+ case p: AttachedPayment =>
56+ p
57+ case _ =>
58+ throw("Payment not attached")
59+ }
60+ let assetIdReceived = payment.assetId
61+ let tokenReceiveAmount = payment.amount
62+ if (if ((assetIdReceived == assetIdTokenA))
63+ then isDefined(getBoolean(this, "fundA"))
64+ else false)
65+ then {
66+ let amountTokenA = getIntegerValue(this, "amountTokenA")
67+ WriteSet([DataEntry("amountTokenA", (amountTokenA + tokenReceiveAmount))])
68+ }
69+ else if (if ((assetIdReceived == assetIdTokenB))
70+ then isDefined(getBoolean(this, "fundB"))
71+ else false)
72+ then {
73+ let amountTokenB = getIntegerValue(this, "amountTokenB")
74+ WriteSet([DataEntry("amountTokenB", (amountTokenB + tokenReceiveAmount))])
75+ }
76+ else throw("there was an error in the replenishment")
77+ }
78+
79+
80+
81+@Callable(contextObj)
82+func exchanger (minTokenRecieve) = if (if ((0 > comission))
83+ then true
84+ else (comission > 100))
85+ then throw("incorrect comission value")
86+ else {
87+ let amountTokenB = getIntegerValue(this, "amountTokenB")
88+ let amountTokenA = getIntegerValue(this, "amountTokenA")
89+ let payment = match contextObj.payment {
90+ case p: AttachedPayment =>
91+ p
92+ case _ =>
93+ throw("Payment not attached")
94+ }
95+ let assetIdReceived = payment.assetId
96+ let tokenReceiveAmount = payment.amount
97+ let count = match getInteger(this, "exchange_count") {
98+ case i: Int =>
99+ (value(getInteger(this, "exchange_count")) + i)
100+ case _ =>
101+ 0
102+ }
103+ if ((assetIdReceived == assetIdTokenB))
104+ then {
105+ let tokenSendAmount = ((fraction(amountTokenA, tokenReceiveAmount, (tokenReceiveAmount + amountTokenB)) * (100 - comission)) / 100)
106+ if ((minTokenRecieve > tokenSendAmount))
107+ then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
108+ else {
109+ let assetIdSent = assetIdTokenA
110+ ScriptResult(WriteSet([DataEntry("amountTokenA", (amountTokenA - tokenSendAmount)), DataEntry("amountTokenB", (amountTokenB + tokenReceiveAmount)), DataEntry("exchange_count", (count + 1))]), TransferSet([ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]))
111+ }
112+ }
113+ else if ((assetIdReceived == assetIdTokenA))
114+ then {
115+ let tokenSendAmount = ((fraction(amountTokenB, tokenReceiveAmount, (tokenReceiveAmount + amountTokenA)) * (100 - comission)) / 100)
116+ if ((minTokenRecieve > tokenSendAmount))
117+ then throw("Price has changed dramaticaly. Receiving token amount don't satisfy specified price level")
118+ else {
119+ let assetIdSent = assetIdTokenB
120+ ScriptResult(WriteSet([DataEntry("amountTokenA", (amountTokenA + tokenReceiveAmount)), DataEntry("amountTokenB", (amountTokenB - tokenSendAmount)), DataEntry("exchange_count", (count + 1))]), TransferSet([ScriptTransfer(contextObj.caller, tokenSendAmount, assetIdSent)]))
121+ }
122+ }
123+ else throw("Asset is not allowed")
124+ }
125+
126+
127+
128+@Callable(contextObj)
129+func withdraw () = {
130+ let BalanceTokenA = assetBalance(this, assetIdTokenA)
131+ let BalanceTokenB = assetBalance(this, assetIdTokenB)
132+ if ((contextObj.caller.bytes == owner))
133+ then ScriptResult(WriteSet([DataEntry("amountTokenA", "withdrawn"), DataEntry("amountTokenB", "withdrawn"), DataEntry("status", false)]), TransferSet([ScriptTransfer(contextObj.caller, BalanceTokenA, assetIdTokenA), ScriptTransfer(contextObj.caller, BalanceTokenB, assetIdTokenB)]))
134+ else throw("You are not exchanger's owner")
135+ }
136+
137+

github/deemru/w8io/026f985 
17.06 ms