tx · ADwUwZt46GXqmNFm6aB8tigsE1zvVdWLtWCCpEgB9N4i

3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9:  -0.01000000 Waves

2022.05.06 15:13 [2039824] smart account 3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9 > SELF 0.00000000 Waves

{ "type": 13, "id": "ADwUwZt46GXqmNFm6aB8tigsE1zvVdWLtWCCpEgB9N4i", "fee": 1000000, "feeAssetId": null, "timestamp": 1651839256670, "version": 2, "chainId": 84, "sender": "3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9", "senderPublicKey": "HwnFy5MZJ9eyVKF9GSXN8nuA5uT2rcvnVqHw9vCv3DNn", "proofs": [ "4c7nR5bH64biNjQWW24FN2Z6WexoWDt8ahtmtiHA6a6pUUEuyybTFcR2NCunGs9Gqqmc8CqzZRPbebJz48RzUtyZ" ], "script": "base64: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", "height": 2039824, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: awNDGK57pcQw1xv6whzkv2TLUQKijGrHNaKKDf7ZXp4 Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let shinywggid = base58'AFQS5E4ELtxex3iANtWtUU2V2oWJZSo8VVnK8z3VFmqf'
5+
6+let adminAddress = addressFromStringValue("3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9")
7+
8+func tryGetString (key) = match getString(this, key) {
9+ case b: String =>
10+ b
11+ case _ =>
12+ ""
13+}
14+
15+
16+func tryGetInteger (key) = match getInteger(this, key) {
17+ case b: Int =>
18+ b
19+ case _ =>
20+ 0
21+}
22+
23+
24+func tryGetBoolean (key) = match getBoolean(this, key) {
25+ case b: Boolean =>
26+ b
27+ case _ =>
28+ false
29+}
30+
31+
32+func internalDeposit (addressStr,amountIn) = {
33+ let amount = tryGetInteger((addressStr + "_Deposit"))
34+[IntegerEntry((addressStr + "_Deposit"), (amount + amountIn))]
35+ }
36+
37+
38+func internalPay (addressStr,amount) = {
39+ let deposited = tryGetInteger((addressStr + "_Deposit"))
40+ if ((0 > (deposited - amount)))
41+ then throw("Not enough deposit to build.")
42+ else if (((deposited - amount) == 0))
43+ then [DeleteEntry((addressStr + "_Deposit"))]
44+ else [IntegerEntry((addressStr + "_Deposit"), (deposited - amount))]
45+ }
46+
47+
48+func internalReserve (addressStr,amount) = {
49+ let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
50+[IntegerEntry((addressStr + "_Reserved"), (reservedAmount + amount))]
51+ }
52+
53+
54+func internalTransfer (fromAddress,toAddress,amount) = (internalPay(fromAddress, amount) ++ internalDeposit(toAddress, amount))
455
556
657 @Callable(i)
7-func calc (amountIn) = {
8- let mult = fraction(100000000, (43712474710 / 15), (9277155342 / 10))
9- let reservedAmount = amountIn
10- if ((reservedAmount == reservedAmount))
58+func setAssetAddress (assetAddr) = if (if ((i.caller != this))
59+ then (i.caller != adminAddress)
60+ else false)
61+ then throw("you are not authorized to perform this operation")
62+ else [StringEntry("AssetAddress", assetAddr)]
63+
64+
65+
66+@Callable(i)
67+func Deposit () = {
68+ let addressStr = toString(i.originCaller)
69+ let pmt = i.payments[0]
70+ if ((pmt == pmt))
1171 then {
12- let convertedAmount = fraction(reservedAmount, mult, 1000000)
13- if ((convertedAmount == convertedAmount))
14- then [IntegerEntry("result", convertedAmount)]
72+ let amountIn = value(i.payments[0].amount)
73+ if ((amountIn == amountIn))
74+ then {
75+ let assetIn = pmt.assetId
76+ if ((assetIn == assetIn))
77+ then if ((assetIn != shinywggid))
78+ then throw("Only $HEG payments allowed")
79+ else {
80+ let amount = tryGetInteger((addressStr + "_Deposit"))
81+ internalDeposit(addressStr, (amount + amountIn))
82+ }
83+ else throw("Strict value is not equal to itself.")
84+ }
1585 else throw("Strict value is not equal to itself.")
1686 }
1787 else throw("Strict value is not equal to itself.")
88+ }
89+
90+
91+
92+@Callable(i)
93+func Pay (addressStr,amount) = {
94+ let assetsAddress = tryGetString("AssetAddress")
95+ if (if (if ((i.caller != this))
96+ then (i.caller != adminAddress)
97+ else false)
98+ then (toString(i.caller) != assetsAddress)
99+ else false)
100+ then throw("you are not authorized to perform this operation")
101+ else internalPay(addressStr, amount)
102+ }
103+
104+
105+
106+@Callable(i)
107+func CallerPay (amount) = {
108+ let callerAddr = toString(i.caller)
109+ internalPay(callerAddr, amount)
110+ }
111+
112+
113+
114+@Callable(i)
115+func transferCoins (fromAddress,toAddress,amount) = {
116+ let assetsAddress = tryGetString("AssetAddress")
117+ if (if ((i.caller != adminAddress))
118+ then (toString(i.caller) != assetsAddress)
119+ else false)
120+ then throw("you are not authorized to perform this operation")
121+ else internalTransfer(fromAddress, toAddress, amount)
122+ }
123+
124+
125+
126+@Callable(i)
127+func Redeem () = {
128+ let addressStr = toString(i.caller)
129+ let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
130+ if ((reservedAmount == 0))
131+ then throw("Nothing to redeem")
132+ else [DeleteEntry((addressStr + "_Reserved")), ScriptTransfer(i.caller, reservedAmount, shinywggid)]
18133 }
19134
20135

github/deemru/w8io/169f3d6 
24.76 ms