tx · AxdnB73y4bmB5m4vaKLMBTNc3ccpbqwQ1jaez2kqcmdG

3N2FodsKP7M3AQ3k3XHbMggtKaeiJEv36gk:  -0.01000000 Waves

2023.05.21 13:18 [2587610] smart account 3N2FodsKP7M3AQ3k3XHbMggtKaeiJEv36gk > SELF 0.00000000 Waves

{ "type": 13, "id": "AxdnB73y4bmB5m4vaKLMBTNc3ccpbqwQ1jaez2kqcmdG", "fee": 1000000, "feeAssetId": null, "timestamp": 1684664332979, "version": 2, "chainId": 84, "sender": "3N2FodsKP7M3AQ3k3XHbMggtKaeiJEv36gk", "senderPublicKey": "78Bt5i3ukexi4JyJKXa9f3aGmpTT1t79wSaBXNy68zWU", "proofs": [ "JCsY42eB279Nddx7ectrVsopFxjvE8LY1e6B3EdcSvieS1cKqsYKt3f4jnLLFavg5FFBof8RXqHMZDBi8hUq6NV" ], "script": "base64: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", "height": 2587610, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 9UP8skMPuZzoWvFkgbTQiaaqhsQ8BvK2dtmDGyS5RmP1 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let adminmsg = "Only admin can call this function"
5+
6+func isAdmin (address) = {
7+ let c = toBase58String(address)
8+ if (isDefined(getString("admin")))
9+ then if (if ((c == getStringValue("admin")))
10+ then true
11+ else (c == toBase58String(this.bytes)))
12+ then true
13+ else false
14+ else if ((c == toBase58String(this.bytes)))
15+ then true
16+ else false
17+ }
18+
19+
20+func getValidPair (asset1,asset2) = if (isDefined(getString(((asset1 + "_") + asset2))))
21+ then ((asset1 + "_") + asset2)
22+ else if (isDefined(getString(((asset2 + "_") + asset1))))
23+ then ((asset2 + "_") + asset1)
24+ else ""
25+
26+
27+func isValidPair (asset1,asset2) = {
28+ let x = match getValidPair(asset1, asset2) {
29+ case c: String =>
30+ true
31+ case _ =>
32+ false
33+ }
34+ x
35+ }
36+
37+
38+func checkAssetId (asset) = {
39+ let a = match asset {
40+ case v: ByteVector =>
41+ toBase58String(v)
42+ case _ =>
43+ "WAVES"
44+ }
45+ a
46+ }
47+
48+
49+@Callable(i)
50+func addAdmin (address) = if (isAdmin(i.caller.bytes))
51+ then [StringEntry("admin", address)]
52+ else throw(adminmsg)
53+
54+
55+
56+@Callable(i)
57+func setOracle (address) = if (isAdmin(i.caller.bytes))
58+ then [StringEntry("oracle", address)]
59+ else throw(adminmsg)
60+
61+
62+
63+@Callable(i)
64+func addPair (asset1,asset2) = if (isAdmin(i.caller.bytes))
65+ then if (isValidPair(asset1, asset2))
66+ then throw("This pair has been previously added")
67+ else [BooleanEntry(((asset1 + "_") + asset2), true)]
68+ else throw(adminmsg)
69+
70+
71+
72+@Callable(i)
73+func feeSwap (fee) = if (isAdmin(i.caller.bytes))
74+ then [IntegerEntry("fee", fee)]
75+ else throw(adminmsg)
76+
77+
78+
79+@Callable(i)
80+func Swap (asset1,asset2,price) = {
81+ let D = match i.payments[0].assetId {
82+ case o: Unit =>
83+ pow(10, 0, 8, 0, 0, HALFUP)
84+ case x: ByteVector =>
85+ pow(10, 0, value(assetInfo(x)).decimals, 0, 0, HALFUP)
86+ case _ =>
87+ throw("Match error")
88+ }
89+ if (isValidPair(asset1, asset2))
90+ then if (!(isDefined(getString((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes))))))
91+ then if ((checkAssetId(i.payments[0].assetId) == getStringValue((getValidPair(asset1, asset2) + "_asset2"))))
92+ then if ((price == getIntegerValue((getValidPair(asset1, asset2) + "_price"))))
93+ then if (((i.payments[0].amount / price) > getIntegerValue((getValidPair(asset1, asset2) + "_total"))))
94+ then [ScriptTransfer(Address(i.caller.bytes), ((i.payments[0].amount * D) / price), fromBase58String(getStringValue((getValidPair(asset1, asset2) + "_asset1")))), IntegerEntry((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)), i.payments[0].amount), IntegerEntry(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_price"), price), IntegerEntry(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_height"), height), IntegerEntry(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_received"), ((i.payments[0].amount * D) / price)), StringEntry(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_asset"), checkAssetId(i.payments[0].assetId)), IntegerEntry((getValidPair(asset1, asset2) + "_total"), (getIntegerValue((getValidPair(asset1, asset2) + "_total")) - ((i.payments[0].amount * D) / price)))]
95+ else throw("Amount above that available for Swap. Try decreasing the value.")
96+ else throw("Invalid price.")
97+ else throw("Invalid payment asset. Use the second asset of the pair")
98+ else throw("You already have a Guaranteed Swap made before, cancel the previous one or withdraw the current one to create a new Swap.")
99+ else throw("Invalid Pair.")
100+ }
101+
102+
103+
104+@Callable(i)
105+func Withdraw (asset1,asset2) = if (isValidPair(asset1, asset2))
106+ then if (isDefined(getString((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)))))
107+ then if ((checkAssetId(i.payments[0].assetId) == getStringValue((getValidPair(asset1, asset2) + "_asset1"))))
108+ then if ((i.payments[0].amount == getIntegerValue(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_received"))))
109+ then if ((i.payments[1].amount == ((i.payments[0].amount / getIntegerValue("fee")) * 100)))
110+ then [DeleteEntry((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes))), DeleteEntry(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_price")), DeleteEntry(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_height")), DeleteEntry(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_received")), DeleteEntry(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_asset")), ScriptTransfer(Address(i.caller.bytes), getIntegerValue((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes))), fromBase58String(getStringValue((getValidPair(asset1, asset2) + "_asset2"))))]
111+ else throw("Invalid Amount Fee Payment.")
112+ else throw(("Invalid Amount. Try " + toString(getIntegerValue(((getValidPair(asset1, asset2) + toBase58String(i.caller.bytes)) + "_received")))))
113+ else throw("Invalid payment asset. Use the first asset of the pair")
114+ else throw("You do not have a Guaranteed swap for this pair. Create a new Swap.")
115+ else throw("Invalid Pair.")
116+
117+
118+
119+@Callable(i)
120+func depositOracle (assetValue,assetPrice,price) = {
121+ let oracleAddress = match getString("oracle") {
122+ case ix: String =>
123+ ix
124+ case _ =>
125+ throw("Oracle is not defined. Please contact the admin.")
126+ }
127+ let n = checkAssetId(i.payments[0].assetId)
128+ let a = match getInteger(((((assetValue + "_") + assetPrice) + "_") + n)) {
129+ case ix: Int =>
130+ ix
131+ case _ =>
132+ 0
133+ }
134+ let nn = match getInteger((((assetValue + "_") + assetPrice) + "_total")) {
135+ case xx: Int =>
136+ (xx + i.payments[0].amount)
137+ case _ =>
138+i.payments[0].amount
139+ }
140+ if ((toBase58String(i.caller.bytes) == oracleAddress))
141+ then [IntegerEntry(((((assetValue + "_") + assetPrice) + "_") + n), (a + i.payments[0].amount)), IntegerEntry((((assetValue + "_") + assetPrice) + "_price"), price), BooleanEntry(((assetValue + "_") + assetPrice), true), StringEntry((((assetValue + "_") + assetPrice) + "_asset1"), assetValue), StringEntry((((assetValue + "_") + assetPrice) + "_asset2"), assetPrice), IntegerEntry((((assetValue + "_") + assetPrice) + "_total"), nn)]
142+ else throw(adminmsg)
143+ }
144+
145+
146+@Verifier(tx)
147+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
148+

github/deemru/w8io/873ac7e 
18.50 ms