tx · 2xkBoxtYpMLebowMN4iaGcax9EpkcKuNYx2qmi5zLenD

3N4UhavKsWv4dPmmhtaYT573ALxuvsAp6M4:  -0.01500000 Waves

2022.06.08 19:05 [2087611] smart account 3N4UhavKsWv4dPmmhtaYT573ALxuvsAp6M4 > SELF 0.00000000 Waves

{ "type": 13, "id": "2xkBoxtYpMLebowMN4iaGcax9EpkcKuNYx2qmi5zLenD", "fee": 1500000, "feeAssetId": null, "timestamp": 1654704412805, "version": 2, "chainId": 84, "sender": "3N4UhavKsWv4dPmmhtaYT573ALxuvsAp6M4", "senderPublicKey": "5nJ4v4Wx6sdXhiDZNrpW7m1aSDsTgTgFJVBgmPMPtbUM", "proofs": [ "5BzKikGVwvgzPpcYHfZ7NJyPQ7HGjEWbH1FEtoTAJsWAFMWopMHgyrxDVMzxNJQSztFFaVB8KHETsvLasg4FiuFZ" ], "script": "base64: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", "height": 2087611, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GFUqudSot1opYVJPHuc8KKPDnuSv5VJGyU7o6KiSL57x Next: none Diff:
OldNewDifferences
195195 let stakerAddress = fromBase58String(getSV("staker"))
196196 let run = invoke(Address(stakerAddress), "_getDaysLeftToClaim", [userAddress, AssetTicker, EntryIndex], nil)
197197 match run {
198- case a: String =>
199-[StringEntry(daysLeft, a)]
198+ case a: Int =>
199+[IntegerEntry(daysLeft, a)]
200200 case _ =>
201201 nil
202202 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let staker = "staker"
55
66 let admin = "admin_"
77
88 let assetIdCall = "Asset ID"
99
1010 let daysLeft = "days_left_to_claim"
1111
1212 let entryIndex = "_Entry_Index"
1313
1414 let APY_Amount = "_APY_Amount"
1515
1616 func getI (key) = getInteger(this, key)
1717
1818
1919 func getS (key) = getString(this, key)
2020
2121
2222 func getIV (key) = value(getInteger(this, key))
2323
2424
2525 func getSV (key) = value(getString(this, key))
2626
2727
2828 func throwIf (condition,error) = if (condition)
2929 then throw(error)
3030 else true
3131
3232
3333 let thirtyDaysLockPeriod = 30
3434
3535 let sixtyDaysLockPeriod = 60
3636
3737 let ninetyDaysLockPeriod = 90
3838
3939 func throwOrReturnI (val,error) = match val {
4040 case val: Int =>
4141 val
4242 case _ =>
4343 throw(error)
4444 }
4545
4646
4747 func throwOrReturnS (val,error) = match val {
4848 case val: String =>
4949 val
5050 case _ =>
5151 throw(error)
5252 }
5353
5454
5555 func writeInt (key,value) = if ((0 > value))
5656 then throw(((("writing negative value " + toString(value)) + " for key ") + key))
5757 else IntegerEntry(key, value)
5858
5959
6060 func writeStr (key,value) = if ((" " == value))
6161 then throw(("writing an empty string " + value))
6262 else StringEntry(key, value)
6363
6464
6565 func writeConstString (key,value) = if (!(isDefined(getS(key))))
6666 then writeStr(key, value)
6767 else throw(("already initialized: " + key))
6868
6969
7070 func writeConstInteger (key,value) = if (!(isDefined(getS(key))))
7171 then writeInt(key, value)
7272 else throw(("already initialized: " + key))
7373
7474
7575 func adminOnly (i) = {
7676 let inputAddress = toBase58String(i.caller.bytes)
7777 let otherAdmin = (admin + inputAddress)
7878 match getS(admin) {
7979 case a: String =>
8080 if ((inputAddress != getS(admin)))
8181 then throw("unauthorized")
8282 else true
8383 case _ =>
8484 match getS(otherAdmin) {
8585 case b: String =>
8686 if ((inputAddress != getS(otherAdmin)))
8787 then throw("unauthorized")
8888 else true
8989 case _ =>
9090 throw("unauthorizd")
9191 }
9292 }
9393 }
9494
9595
9696 func stakerOnly (i) = {
9797 let inputAddress = toBase58String(i.caller.bytes)
9898 let check = if ((inputAddress != getS(staker)))
9999 then throw("unauthorized")
100100 else true
101101 check
102102 }
103103
104104
105105 func writeConfigValue (key,data) = match data {
106106 case data: String =>
107107 writeConstString(key, data)
108108 case data: Int =>
109109 writeConstInteger(key, data)
110110 case _ =>
111111 throw("unsupported config type")
112112 }
113113
114114
115115 func incrementEntryIndex (key) = {
116116 let uIndex = getI(key)
117117 if (isDefined(uIndex))
118118 then (value(uIndex) + 1)
119119 else 0
120120 }
121121
122122
123123 @Callable(i)
124124 func getAPYAmount (user,AssetTicker,EntryIndex) = {
125125 let check = stakerOnly(i)
126126 if ((check == check))
127127 then {
128128 let uEntryToString = ((((user + "_") + AssetTicker) + "_") + toString(EntryIndex))
129129 let uAPY = (uEntryToString + APY_Amount)
130130 let uAPYAmount = valueOrErrorMessage(getI(uAPY), ("APY not computed for " + user))
131131 $Tuple2(nil, uAPYAmount)
132132 }
133133 else throw("Strict value is not equal to itself.")
134134 }
135135
136136
137137
138138 @Callable(i)
139139 func storeAPYAmount (user,AssetTicker,APYAmount,EntryIndex) = {
140140 let check = adminOnly(i)
141141 if ((check == check))
142142 then {
143143 let uEntryToString = ((((user + "_") + AssetTicker) + "_") + toString(EntryIndex))
144144 let uAPY = (uEntryToString + APY_Amount)
145145 [writeConstInteger(uEntryToString, EntryIndex), writeConstInteger(uAPY, APYAmount)]
146146 }
147147 else throw("Strict value is not equal to itself.")
148148 }
149149
150150
151151
152152 @Callable(i)
153153 func deleteAPYAmount (user,AssetTicker,EntryIndex) = {
154154 let check = adminOnly(i)
155155 if ((check == check))
156156 then {
157157 let uEntryToString = ((((user + "_") + AssetTicker) + "_") + toString(EntryIndex))
158158 let uAPY = (uEntryToString + APY_Amount)
159159 [DeleteEntry(uAPY), DeleteEntry(uEntryToString)]
160160 }
161161 else throw("Strict value is not equal to itself.")
162162 }
163163
164164
165165
166166 @Callable(i)
167167 func init (stakerAddress) = [writeConstString(staker, stakerAddress), writeConstString(admin, toBase58String(this.bytes))]
168168
169169
170170
171171 @Callable(i)
172172 func getAssetIdByTicker (AssetTicker) = {
173173 let checks = adminOnly(i)
174174 if ((checks == checks))
175175 then {
176176 let stakerAddress = fromBase58String(getSV("staker"))
177177 let run = invoke(Address(stakerAddress), "_getAssetIdByTicker", [AssetTicker], nil)
178178 match run {
179179 case a: String =>
180180 [StringEntry(assetIdCall, a)]
181181 case _ =>
182182 nil
183183 }
184184 }
185185 else throw("Strict value is not equal to itself.")
186186 }
187187
188188
189189
190190 @Callable(i)
191191 func getDaysLeftToClaim (userAddress,AssetTicker,EntryIndex) = {
192192 let checks = adminOnly(i)
193193 if ((checks == checks))
194194 then {
195195 let stakerAddress = fromBase58String(getSV("staker"))
196196 let run = invoke(Address(stakerAddress), "_getDaysLeftToClaim", [userAddress, AssetTicker, EntryIndex], nil)
197197 match run {
198- case a: String =>
199-[StringEntry(daysLeft, a)]
198+ case a: Int =>
199+[IntegerEntry(daysLeft, a)]
200200 case _ =>
201201 nil
202202 }
203203 }
204204 else throw("Strict value is not equal to itself.")
205205 }
206206
207207

github/deemru/w8io/c3f4982 
30.91 ms