tx · Hy6haKnB43xDwac6dmTP8yGQDATQMna2g6LQWcmfZz65

3PNkQAzsSfguiMh2EHeithEbNzyAvZSNabf:  -0.01400000 Waves

2021.09.16 23:32 [2771006] smart account 3PNkQAzsSfguiMh2EHeithEbNzyAvZSNabf > SELF 0.00000000 Waves

{ "type": 13, "id": "Hy6haKnB43xDwac6dmTP8yGQDATQMna2g6LQWcmfZz65", "fee": 1400000, "feeAssetId": null, "timestamp": 1631824433186, "version": 2, "chainId": 87, "sender": "3PNkQAzsSfguiMh2EHeithEbNzyAvZSNabf", "senderPublicKey": "CPof1RUBgXHe7ErgeBRDVVcZJ1WRWx2EvDePQWroqWon", "proofs": [ "78o9rLUW5C2Sa5RxJXpRA7yifpeoUnHk75k9davBr9mtDRiWBu62Y6aQeoSahiLSjGcuoNZ5d9FDHqwiuh1T24Z" ], "script": "base64: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", "height": 2771006, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2kWM2gmTR78x4twKx3CKFwLvSRqCcyaPrQijeHJ9UwsA Next: none Diff:
OldNewDifferences
77
88 let kTotalSwapped = "totalSwapped"
99
10-let oldEggAssetId = base58'53bLXGQhnMxAoiWnza2SJQRp7hNQZVHnyrRziLmwdVjb'
10+let oldEggAssetId = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF'
11+
12+let whitelistAddress = Address(base58'3P24mKjNg8zH4z8QctmwobE7Hm1kwa8R1gi')
13+
14+func getWhitelistInteger (k) = match getInteger(whitelistAddress, k) {
15+ case b: Int =>
16+ b
17+ case _ =>
18+ 0
19+}
20+
21+
22+func tryGetInteger (k) = match getInteger(this, k) {
23+ case b: Int =>
24+ b
25+ case _ =>
26+ 0
27+}
28+
1129
1230 @Callable(i)
1331 func issueNewEgg () = if ((getBoolean(kEggIssued) != unit))
3452 }
3553 let newEggAssetId = fromBase58String(getStringValue(kAssetId))
3654 let toSwapAmount = value(i.payments[0]).amount
37- let swappedAmount = (toSwapAmount * 1000000)
38- let reissue = Reissue(newEggAssetId, swappedAmount, true)
39-[reissue, IntegerEntry((("swap_" + toBase58String(i.transactionId)) + "_amount"), toSwapAmount), IntegerEntry(kTotalSwapped, (totalSwappedVal + toSwapAmount)), ScriptTransfer(i.caller, swappedAmount, newEggAssetId)]
55+ let userToSwapAmount = (toSwapAmount + tryGetInteger((toString(i.caller) + "_swapped")))
56+ if ((getWhitelistInteger((toString(i.caller) + "_canswap")) == 0))
57+ then throw("This address is suspicious. Request needs to be moderated. Please contact support.")
58+ else if ((userToSwapAmount > getWhitelistInteger((toString(i.caller) + "_canswap"))))
59+ then {
60+ let allowed = (getWhitelistInteger((toString(i.caller) + "_canswap")) - tryGetInteger((toString(i.caller) + "_swapped")))
61+ throw((((("You can swap no more than " + toString((allowed / 100))) + ".") + takeRight(toString(allowed), 2)) + " EGG from this account"))
62+ }
63+ else {
64+ let swappedAmount = (toSwapAmount * 1000000)
65+ let reissue = Reissue(newEggAssetId, swappedAmount, true)
66+[reissue, IntegerEntry((("swap_" + toBase58String(i.transactionId)) + "_amount"), toSwapAmount), IntegerEntry((toString(i.caller) + "_swapped"), userToSwapAmount), IntegerEntry(kTotalSwapped, (totalSwappedVal + toSwapAmount)), ScriptTransfer(i.caller, swappedAmount, newEggAssetId)]
67+ }
4068 }
4169
4270
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let kEggIssued = "wasInited"
55
66 let kAssetId = "newEgg_assetId"
77
88 let kTotalSwapped = "totalSwapped"
99
10-let oldEggAssetId = base58'53bLXGQhnMxAoiWnza2SJQRp7hNQZVHnyrRziLmwdVjb'
10+let oldEggAssetId = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF'
11+
12+let whitelistAddress = Address(base58'3P24mKjNg8zH4z8QctmwobE7Hm1kwa8R1gi')
13+
14+func getWhitelistInteger (k) = match getInteger(whitelistAddress, k) {
15+ case b: Int =>
16+ b
17+ case _ =>
18+ 0
19+}
20+
21+
22+func tryGetInteger (k) = match getInteger(this, k) {
23+ case b: Int =>
24+ b
25+ case _ =>
26+ 0
27+}
28+
1129
1230 @Callable(i)
1331 func issueNewEgg () = if ((getBoolean(kEggIssued) != unit))
1432 then throw(("New EGG is already issued and its asset id is: " + getStringValue(kAssetId)))
1533 else {
1634 let newEgg = Issue("Duck Egg", "Utility and Reward token @ WavesDucks.com game. The duckiest token in the world.", 1, 8, true, unit, 0)
1735 let newEggId = calculateAssetId(newEgg)
1836 [newEgg, BooleanEntry(kEggIssued, true), StringEntry(kAssetId, toBase58String(newEggId))]
1937 }
2038
2139
2240
2341 @Callable(i)
2442 func swapEgg () = if ((size(i.payments) != 1))
2543 then throw("You can attach only EGG tokens")
2644 else if ((value(i.payments[0]).assetId != oldEggAssetId))
2745 then throw("You can attach only EGG tokens")
2846 else {
2947 let totalSwappedVal = match getInteger(kTotalSwapped) {
3048 case int: Int =>
3149 int
3250 case _ =>
3351 0
3452 }
3553 let newEggAssetId = fromBase58String(getStringValue(kAssetId))
3654 let toSwapAmount = value(i.payments[0]).amount
37- let swappedAmount = (toSwapAmount * 1000000)
38- let reissue = Reissue(newEggAssetId, swappedAmount, true)
39-[reissue, IntegerEntry((("swap_" + toBase58String(i.transactionId)) + "_amount"), toSwapAmount), IntegerEntry(kTotalSwapped, (totalSwappedVal + toSwapAmount)), ScriptTransfer(i.caller, swappedAmount, newEggAssetId)]
55+ let userToSwapAmount = (toSwapAmount + tryGetInteger((toString(i.caller) + "_swapped")))
56+ if ((getWhitelistInteger((toString(i.caller) + "_canswap")) == 0))
57+ then throw("This address is suspicious. Request needs to be moderated. Please contact support.")
58+ else if ((userToSwapAmount > getWhitelistInteger((toString(i.caller) + "_canswap"))))
59+ then {
60+ let allowed = (getWhitelistInteger((toString(i.caller) + "_canswap")) - tryGetInteger((toString(i.caller) + "_swapped")))
61+ throw((((("You can swap no more than " + toString((allowed / 100))) + ".") + takeRight(toString(allowed), 2)) + " EGG from this account"))
62+ }
63+ else {
64+ let swappedAmount = (toSwapAmount * 1000000)
65+ let reissue = Reissue(newEggAssetId, swappedAmount, true)
66+[reissue, IntegerEntry((("swap_" + toBase58String(i.transactionId)) + "_amount"), toSwapAmount), IntegerEntry((toString(i.caller) + "_swapped"), userToSwapAmount), IntegerEntry(kTotalSwapped, (totalSwappedVal + toSwapAmount)), ScriptTransfer(i.caller, swappedAmount, newEggAssetId)]
67+ }
4068 }
4169
4270
4371 @Verifier(tx)
4472 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
4573

github/deemru/w8io/3ef1775 
47.92 ms