tx · 3K92hmf8Uj3vdqpZ3seYndg43tegzPuGkPjprZbJiPJR

3MyDGEoKp1gF4LSRknk9vSuDEyrwuYXcQEQ:  -0.01000000 Waves

2022.05.11 13:48 [2046900] smart account 3MyDGEoKp1gF4LSRknk9vSuDEyrwuYXcQEQ > SELF 0.00000000 Waves

{ "type": 13, "id": "3K92hmf8Uj3vdqpZ3seYndg43tegzPuGkPjprZbJiPJR", "fee": 1000000, "feeAssetId": null, "timestamp": 1652266135600, "version": 2, "chainId": 84, "sender": "3MyDGEoKp1gF4LSRknk9vSuDEyrwuYXcQEQ", "senderPublicKey": "BhRnrwd6wVHSkSaWXCjQRjaoXcpCdUW2hkJD6V7uVDxN", "proofs": [ "4EVwg6gGgyUDwng2bnxPaJZBUzBhtpf2GisKgD2pgkwYyfLtJyyk5qYdpU7ZUYfCz6yKeZRv5aSJT2cztDemsyXq" ], "script": "base64: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", "height": 2046900, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6oKHoYqen3jz29SpjWYHWYtrn3aQcty9Yc9e5kERP2Qv Next: 71MsKjrx7rDqJ9qwAxhKeY59D7SuaycTWjPuHvBz2e57 Diff:
OldNewDifferences
2525 }
2626
2727
28+func getTreasuryKey (nationid) = (nationid + "_Treasury")
29+
30+
2831 func internalDeposit (addressStr,amountIn) = {
2932 let amount = tryGetInteger((addressStr + "_Deposit"))
3033 [IntegerEntry((addressStr + "_Deposit"), (amount + amountIn))]
5053 func internalTransfer (fromAddress,toAddress,amount) = (internalPay(fromAddress, amount) ++ internalDeposit(toAddress, amount))
5154
5255
53-func addRewardEntry (accum,nextValue) = {
54- let L = split(nextValue, "_")
55- let addressStr = L[0]
56- let amount = parseIntValue(L[1])
57- let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
58- (accum :+ IntegerEntry((addressStr + "_Reserved"), (reservedAmount + amount)))
59- }
56+func checkAdmin (caller) = if (if (if ((caller == adminAddress))
57+ then true
58+ else (caller == this))
59+ then true
60+ else (caller.bytes == nationsAddress))
61+ then true
62+ else (caller.bytes == assetsAddress)
6063
6164
6265 @Callable(i)
8689
8790
8891 @Callable(i)
89-func Pay (addressStr,amount) = if (if (if ((i.caller != this))
90- then (i.caller != adminAddress)
91- else false)
92- then (i.caller.bytes != assetsAddress)
93- else false)
92+func Pay (addressStr,amount) = if (!(checkAdmin(i.caller)))
9493 then throw("you are not authorized to perform this operation")
9594 else $Tuple2(internalPay(addressStr, amount), amount)
9695
141140
142141
143142 @Callable(i)
144-func setRewards (rewards) = if (if ((i.caller != adminAddress))
145- then (i.caller.bytes != assetsAddress)
146- else false)
143+func addReward (addressStr,amount) = if (!(checkAdmin(i.caller)))
147144 then throw("you are not authorized to perform this operation")
148145 else {
149- let it = size(rewards)
150- if ((it > 60))
151- then throw("you can write max 60 records per call")
152- else {
153- let $l = rewards
154- let $s = size($l)
155- let $acc0 = nil
156- func $f0_1 ($a,$i) = if (($i >= $s))
157- then $a
158- else addRewardEntry($a, $l[$i])
146+ let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
147+ $Tuple2([IntegerEntry((addressStr + "_Reserved"), (reservedAmount + amount))], (reservedAmount + amount))
148+ }
159149
160- func $f0_2 ($a,$i) = if (($i >= $s))
161- then $a
162- else throw("List size exceeds 60")
163150
164- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
165- }
151+
152+@Callable(i)
153+func increaseNationWallet (NationKey,amount) = if (!(checkAdmin(i.caller)))
154+ then throw("you are not authorized to perform this operation")
155+ else {
156+ let key = getTreasuryKey(NationKey)
157+ let reservedAmount = tryGetInteger(key)
158+ $Tuple2([IntegerEntry(key, (reservedAmount + amount))], (reservedAmount + amount))
159+ }
160+
161+
162+
163+@Callable(i)
164+func decreaseNationWallet (NationKey,amount) = if (!(checkAdmin(i.caller)))
165+ then throw("you are not authorized to perform this operation")
166+ else {
167+ let key = getTreasuryKey(NationKey)
168+ let reservedAmount = tryGetInteger(key)
169+ $Tuple2([IntegerEntry(key, (reservedAmount - amount))], (reservedAmount - amount))
166170 }
167171
168172
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let shinywggid = base58'AFQS5E4ELtxex3iANtWtUU2V2oWJZSo8VVnK8z3VFmqf'
55
66 let adminAddress = addressFromStringValue("3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9")
77
88 let assetsAddress = base58'3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb'
99
1010 let nationsAddress = base58'3MvyzDtzWWV5MZ1GP8JfQhhQqiGU4Nbifdy'
1111
1212 func tryGetInteger (key) = match getInteger(this, key) {
1313 case b: Int =>
1414 b
1515 case _ =>
1616 0
1717 }
1818
1919
2020 func tryGetBoolean (key) = match getBoolean(this, key) {
2121 case b: Boolean =>
2222 b
2323 case _ =>
2424 false
2525 }
2626
2727
28+func getTreasuryKey (nationid) = (nationid + "_Treasury")
29+
30+
2831 func internalDeposit (addressStr,amountIn) = {
2932 let amount = tryGetInteger((addressStr + "_Deposit"))
3033 [IntegerEntry((addressStr + "_Deposit"), (amount + amountIn))]
3134 }
3235
3336
3437 func internalPay (addressStr,amount) = {
3538 let deposited = tryGetInteger((addressStr + "_Deposit"))
3639 if ((0 > (deposited - amount)))
3740 then throw("Not enough deposit.")
3841 else if (((deposited - amount) == 0))
3942 then [DeleteEntry((addressStr + "_Deposit"))]
4043 else [IntegerEntry((addressStr + "_Deposit"), (deposited - amount))]
4144 }
4245
4346
4447 func internalReserve (addressStr,amount) = {
4548 let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
4649 [IntegerEntry((addressStr + "_Reserved"), (reservedAmount + amount))]
4750 }
4851
4952
5053 func internalTransfer (fromAddress,toAddress,amount) = (internalPay(fromAddress, amount) ++ internalDeposit(toAddress, amount))
5154
5255
53-func addRewardEntry (accum,nextValue) = {
54- let L = split(nextValue, "_")
55- let addressStr = L[0]
56- let amount = parseIntValue(L[1])
57- let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
58- (accum :+ IntegerEntry((addressStr + "_Reserved"), (reservedAmount + amount)))
59- }
56+func checkAdmin (caller) = if (if (if ((caller == adminAddress))
57+ then true
58+ else (caller == this))
59+ then true
60+ else (caller.bytes == nationsAddress))
61+ then true
62+ else (caller.bytes == assetsAddress)
6063
6164
6265 @Callable(i)
6366 func Deposit () = {
6467 let addressStr = toString(i.originCaller)
6568 let pmt = i.payments[0]
6669 if ((pmt == pmt))
6770 then {
6871 let amountIn = value(i.payments[0].amount)
6972 if ((amountIn == amountIn))
7073 then {
7174 let assetIn = pmt.assetId
7275 if ((assetIn == assetIn))
7376 then if ((assetIn != shinywggid))
7477 then throw("Only $HEG payments allowed")
7578 else {
7679 let amount = tryGetInteger((addressStr + "_Deposit"))
7780 $Tuple2(internalDeposit(addressStr, (amount + amountIn)), (amount + amountIn))
7881 }
7982 else throw("Strict value is not equal to itself.")
8083 }
8184 else throw("Strict value is not equal to itself.")
8285 }
8386 else throw("Strict value is not equal to itself.")
8487 }
8588
8689
8790
8891 @Callable(i)
89-func Pay (addressStr,amount) = if (if (if ((i.caller != this))
90- then (i.caller != adminAddress)
91- else false)
92- then (i.caller.bytes != assetsAddress)
93- else false)
92+func Pay (addressStr,amount) = if (!(checkAdmin(i.caller)))
9493 then throw("you are not authorized to perform this operation")
9594 else $Tuple2(internalPay(addressStr, amount), amount)
9695
9796
9897
9998 @Callable(i)
10099 func CallerPay (amount) = {
101100 let callerAddr = toString(i.caller)
102101 internalPay(callerAddr, amount)
103102 }
104103
105104
106105
107106 @Callable(i)
108107 func transferCoins (fromAddress,toAddress,amount) = if (if ((i.caller != adminAddress))
109108 then (i.caller.bytes != assetsAddress)
110109 else false)
111110 then throw("you are not authorized to perform this operation")
112111 else internalTransfer(fromAddress, toAddress, amount)
113112
114113
115114
116115 @Callable(i)
117116 func callerTransferCoins (toAddress,amount) = internalTransfer(toString(i.caller), toAddress, amount)
118117
119118
120119
121120 @Callable(i)
122121 func arbitraryAddCoins (toAddress,amount) = if (if (if ((i.caller != adminAddress))
123122 then (i.caller.bytes != assetsAddress)
124123 else false)
125124 then (i.caller.bytes != nationsAddress)
126125 else false)
127126 then throw("you are not authorized to perform this operation")
128127 else internalDeposit(toAddress, amount)
129128
130129
131130
132131 @Callable(i)
133132 func Redeem () = {
134133 let addressStr = toString(i.caller)
135134 let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
136135 if ((reservedAmount == 0))
137136 then throw("Nothing to redeem")
138137 else [DeleteEntry((addressStr + "_Reserved")), ScriptTransfer(i.caller, reservedAmount, shinywggid)]
139138 }
140139
141140
142141
143142 @Callable(i)
144-func setRewards (rewards) = if (if ((i.caller != adminAddress))
145- then (i.caller.bytes != assetsAddress)
146- else false)
143+func addReward (addressStr,amount) = if (!(checkAdmin(i.caller)))
147144 then throw("you are not authorized to perform this operation")
148145 else {
149- let it = size(rewards)
150- if ((it > 60))
151- then throw("you can write max 60 records per call")
152- else {
153- let $l = rewards
154- let $s = size($l)
155- let $acc0 = nil
156- func $f0_1 ($a,$i) = if (($i >= $s))
157- then $a
158- else addRewardEntry($a, $l[$i])
146+ let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
147+ $Tuple2([IntegerEntry((addressStr + "_Reserved"), (reservedAmount + amount))], (reservedAmount + amount))
148+ }
159149
160- func $f0_2 ($a,$i) = if (($i >= $s))
161- then $a
162- else throw("List size exceeds 60")
163150
164- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
165- }
151+
152+@Callable(i)
153+func increaseNationWallet (NationKey,amount) = if (!(checkAdmin(i.caller)))
154+ then throw("you are not authorized to perform this operation")
155+ else {
156+ let key = getTreasuryKey(NationKey)
157+ let reservedAmount = tryGetInteger(key)
158+ $Tuple2([IntegerEntry(key, (reservedAmount + amount))], (reservedAmount + amount))
159+ }
160+
161+
162+
163+@Callable(i)
164+func decreaseNationWallet (NationKey,amount) = if (!(checkAdmin(i.caller)))
165+ then throw("you are not authorized to perform this operation")
166+ else {
167+ let key = getTreasuryKey(NationKey)
168+ let reservedAmount = tryGetInteger(key)
169+ $Tuple2([IntegerEntry(key, (reservedAmount - amount))], (reservedAmount - amount))
166170 }
167171
168172

github/deemru/w8io/169f3d6 
54.08 ms