tx · 5AZnZNrPfJHxeUof6RP26roFzCV5hvsCEoBKAuRg86Gh

3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb:  -0.01000000 Waves

2022.05.10 16:17 [2045618] smart account 3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb > SELF 0.00000000 Waves

{ "type": 13, "id": "5AZnZNrPfJHxeUof6RP26roFzCV5hvsCEoBKAuRg86Gh", "fee": 1000000, "feeAssetId": null, "timestamp": 1652188677022, "version": 2, "chainId": 84, "sender": "3N8WDKbqGox5Eky326PHHT7rUyrby5MXdmb", "senderPublicKey": "FWSsBbeCwLVkekWhvNKtX6JkrZiruRybKKVuiS3F4bqN", "proofs": [ "5SW4sX5GmhYy7LMhMhMa9Frjcj1gKvPdhyJPLi8gWc8AbY3B6nnRTUbVQM3wc3hfGfN3BKWRxS6Bdsp8cPGdTg9J" ], "script": "base64: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BAAAAAFyBQAAAAckbWF0Y2gwCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABRnZXRCdWlsZGluZ1N0YXR1c0tleQAAAAMJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAAxzdHJBc3NldFR5cGUFAAAADEJ1aWxkU3RhcnRlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQZ2V0QXNzZXRPd25lcktleQAAAAIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAADHN0ckFzc2V0VHlwZQkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABpnZXRCdWlsZGluZ0ZpbmlzaEhlaWdodEtleQAAAAMJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAAxzdHJBc3NldFR5cGUJAABkAAAAAgUAAAAGaGVpZ2h0BQAAABBkZWxheUZvckJ1aWxkaW5nBQAAAANuaWwJAAACAAAAAQIAAAAXSW5jb3JyZWN0IGludm9rZSByZXN1bHQAAAABaQEAAAALRmluaXNoQnVpbGQAAAACAAAAB3R4SWRTdHIAAAAIYXNzZXRTdHIEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAARQnVpbGRpbmdTdGF0dXNLZXkJAQAAABRnZXRCdWlsZGluZ1N0YXR1c0tleQAAAAMJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBQAAAAhhc3NldFN0cgQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAaZ2V0QnVpbGRpbmdGaW5pc2hIZWlnaHRLZXkAAAADCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAUAAAAIYXNzZXRTdHIEAAAACGFzc2V0S2V5CQEAAAANZ2V0QXNzZXRJZEtleQAAAAIFAAAABHR4SWQFAAAACGFzc2V0U3RyBAAAAAphc3NldE93bmVyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAEGdldEFz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", "height": 2045618, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2S1B8H8oL9TMGtcjUebattE24gUbqq2HsKp3A4b183ZB Next: GhTKvW4kjgvmc79URq2qU5mkaddWjT3aafYZF4piqkmY Diff:
OldNewDifferences
1313
1414 let BuildFinished = "BUILD_FINISHED"
1515
16-let Assets = ["City", "Barrack", "Barn", "Warrior"]
16+let Assets = ["Nation", "City", "Barrack", "Barn", "Warrior"]
1717
18-let assetsCost = [1000000000, 1000000000, 1000000000, 500000000]
18+let assetsCost = [0, 1000000000, 1000000000, 1000000000, 500000000]
1919
20-let assetsDelay = [4, 4, 4, 2]
20+let assetsDelay = [0, 4, 4, 4, 2]
2121
22-let assetsPower = [1000, 500, 500, 0]
22+let assetsPower = [0, 1000, 500, 500, 0]
2323
2424 func treasuryTryGetInteger (key) = match getInteger(Address(treasuryAddress), key) {
2525 case b: Int =>
134134
135135
136136 @Callable(i)
137-func transferOwnership (assetId,newOwner,strAssetType) = if (if ((i.caller != adminAddress))
137+func transferOwnership (assetId,newOwner,strAssetType) = if (if (if ((i.caller != adminAddress))
138138 then (i.caller != this)
139+ else false)
140+ then (i.caller.bytes != nationsAddress)
139141 else false)
140142 then throw("Only the admin can perform this operation")
141143 else {
190192 }
191193
192194
195+
196+@Callable(i)
197+func setNationOwner (nationKey,newOwner) = if (if ((i.caller != adminAddress))
198+ then true
199+ else (i.caller.bytes != nationsAddress))
200+ then $Tuple2([StringEntry((nationKey + "_Owner"), newOwner)], true)
201+ else {
202+ let currentOwner = tryGetString((nationKey + "_Owner"))
203+ if ((currentOwner != toString(i.caller)))
204+ then throw("You are not the nation owner")
205+ else [StringEntry((nationKey + "_Owner"), newOwner)]
206+ }
207+
208+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let shinywggid = base58'AFQS5E4ELtxex3iANtWtUU2V2oWJZSo8VVnK8z3VFmqf'
55
66 let treasuryAddress = base58'3MyDGEoKp1gF4LSRknk9vSuDEyrwuYXcQEQ'
77
88 let nationsAddress = base58'3MvyzDtzWWV5MZ1GP8JfQhhQqiGU4Nbifdy'
99
1010 let adminAddress = addressFromStringValue("3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9")
1111
1212 let BuildStarted = "BUILD_STARTED"
1313
1414 let BuildFinished = "BUILD_FINISHED"
1515
16-let Assets = ["City", "Barrack", "Barn", "Warrior"]
16+let Assets = ["Nation", "City", "Barrack", "Barn", "Warrior"]
1717
18-let assetsCost = [1000000000, 1000000000, 1000000000, 500000000]
18+let assetsCost = [0, 1000000000, 1000000000, 1000000000, 500000000]
1919
20-let assetsDelay = [4, 4, 4, 2]
20+let assetsDelay = [0, 4, 4, 4, 2]
2121
22-let assetsPower = [1000, 500, 500, 0]
22+let assetsPower = [0, 1000, 500, 500, 0]
2323
2424 func treasuryTryGetInteger (key) = match getInteger(Address(treasuryAddress), key) {
2525 case b: Int =>
2626 b
2727 case _ =>
2828 0
2929 }
3030
3131
3232 func nationsTryGetInteger (key) = match getInteger(Address(treasuryAddress), key) {
3333 case b: Int =>
3434 b
3535 case _ =>
3636 0
3737 }
3838
3939
4040 func tryGetString (key) = match getString(this, key) {
4141 case b: String =>
4242 b
4343 case _ =>
4444 ""
4545 }
4646
4747
4848 func tryGetInteger (key) = match getInteger(this, key) {
4949 case b: Int =>
5050 b
5151 case _ =>
5252 0
5353 }
5454
5555
5656 func getAssetIdKey (txId,assetType) = ((assetType + "_") + toBase58String(txId))
5757
5858
5959 func getAssetOwnerKey (txId,assetType) = (getAssetIdKey(txId, assetType) + "_Owner")
6060
6161
6262 func getBuildingFinishHeightKey (address,txId,assetType) = (((address + "_") + getAssetIdKey(txId, assetType)) + "_fh")
6363
6464
6565 func getBuildingStatusKey (address,txId,assetType) = (((address + "_") + getAssetIdKey(txId, assetType)) + "_status")
6666
6767
6868 @Callable(i)
6969 func StartBuild (strAssetType) = if (!(containsElement(Assets, strAssetType)))
7070 then throw("This asset is not amanged by the system")
7171 else {
7272 let ind = value(indexOf(Assets, strAssetType))
7373 let delayForBuilding = assetsDelay[ind]
7474 let assetBuildCost = assetsCost[ind]
7575 let amountIn = value(i.payments[0].amount)
7676 if ((assetBuildCost > amountIn))
7777 then throw(("You provided less $heg than the needed cost for building this " + strAssetType))
7878 else if ((i.payments[0].assetId != shinywggid))
7979 then throw("Only $HEG payments allowed")
8080 else {
8181 let pw = invoke(Address(treasuryAddress), "Deposit", nil, i.payments)
8282 match pw {
8383 case r: Int =>
8484 [StringEntry(getBuildingStatusKey(toString(i.originCaller), i.transactionId, strAssetType), BuildStarted), StringEntry(getAssetOwnerKey(i.transactionId, strAssetType), toString(i.originCaller)), IntegerEntry(getBuildingFinishHeightKey(toString(i.originCaller), i.transactionId, strAssetType), (height + delayForBuilding))]
8585 case _ =>
8686 throw("Incorrect invoke result")
8787 }
8888 }
8989 }
9090
9191
9292
9393 @Callable(i)
9494 func FinishBuild (txIdStr,assetStr) = {
9595 let txId = fromBase58String(txIdStr)
9696 let BuildingStatusKey = getBuildingStatusKey(toString(i.caller), txId, assetStr)
9797 let finishHeightKey = getBuildingFinishHeightKey(toString(i.caller), txId, assetStr)
9898 let assetKey = getAssetIdKey(txId, assetStr)
9999 let assetOwner = tryGetString(getAssetOwnerKey(txId, assetStr))
100100 if ((assetOwner != toString(i.caller)))
101101 then throw(("You cannot claim other's players " + assetStr))
102102 else {
103103 let buildingTxStatus = tryGetString(BuildingStatusKey)
104104 if ((buildingTxStatus == ""))
105105 then throw("No pending operations for this asset")
106106 else {
107107 let buildingFinishHeight = getIntegerValue(this, finishHeightKey)
108108 if ((buildingFinishHeight > height))
109109 then throw((((("Building is not finished yet " + toString((buildingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((buildingFinishHeight - height))) + " minutes"))
110110 else {
111111 let idx = value(indexOf(Assets, assetStr))
112112 let assetPower = assetsPower[idx]
113113 let assetCoins = assetsCost[idx]
114114 let refCall = invoke(Address(treasuryAddress), "Pay", [toString(i.caller), assetCoins], nil)
115115 if ((refCall == refCall))
116116 then {
117117 let currentPower = nationsTryGetInteger((toString(i.caller) + "_Power"))
118118 let pw = invoke(Address(nationsAddress), "setUserPower", [toString(i.caller), (currentPower + assetPower)], nil)
119119 if ((pw == pw))
120120 then match pw {
121121 case r: Int =>
122122 [IntegerEntry(assetKey, assetCoins), DeleteEntry(BuildingStatusKey), DeleteEntry(finishHeightKey)]
123123 case _ =>
124124 throw("Incorrect invoke result")
125125 }
126126 else throw("Strict value is not equal to itself.")
127127 }
128128 else throw("Strict value is not equal to itself.")
129129 }
130130 }
131131 }
132132 }
133133
134134
135135
136136 @Callable(i)
137-func transferOwnership (assetId,newOwner,strAssetType) = if (if ((i.caller != adminAddress))
137+func transferOwnership (assetId,newOwner,strAssetType) = if (if (if ((i.caller != adminAddress))
138138 then (i.caller != this)
139+ else false)
140+ then (i.caller.bytes != nationsAddress)
139141 else false)
140142 then throw("Only the admin can perform this operation")
141143 else {
142144 let oldOwner = tryGetString((assetId + "_Owner"))
143145 let currentPower = nationsTryGetInteger((oldOwner + "_Power"))
144146 let assetPower = assetsPower[value(indexOf(Assets, strAssetType))]
145147 let pw = invoke(Address(nationsAddress), "setUserPower", [oldOwner, (currentPower - assetPower)], nil)
146148 if ((pw == pw))
147149 then if ((pw != (currentPower - assetPower)))
148150 then throw("Incorrect invoke result")
149151 else {
150152 let newcurrentPower = nationsTryGetInteger((newOwner + "_Power"))
151153 let pw2 = invoke(Address(nationsAddress), "setUserPower", [newOwner, (newcurrentPower + assetPower)], nil)
152154 if ((pw2 == pw2))
153155 then match pw2 {
154156 case r: Int =>
155157 [StringEntry((assetId + "_Owner"), newOwner)]
156158 case _ =>
157159 throw("Incorrect invoke result")
158160 }
159161 else throw("Strict value is not equal to itself.")
160162 }
161163 else throw("Strict value is not equal to itself.")
162164 }
163165
164166
165167
166168 @Callable(i)
167169 func destroyAssetAndTransfer (assetId,toAddress,strAssetType) = if (if ((i.caller != adminAddress))
168170 then (i.caller != this)
169171 else false)
170172 then throw("Only the admin can perform this operation")
171173 else {
172174 let oldOwner = tryGetString((assetId + "_Owner"))
173175 let assetCoins = tryGetInteger(assetId)
174176 let refCall = invoke(Address(treasuryAddress), "arbitraryAddCoins", [toAddress, assetCoins], nil)
175177 if ((refCall == refCall))
176178 then {
177179 let currentPower = nationsTryGetInteger((oldOwner + "_Power"))
178180 let assetPower = assetsPower[value(indexOf(Assets, strAssetType))]
179181 let pw = invoke(Address(nationsAddress), "setUserPower", [toString(i.caller), (currentPower - assetPower)], nil)
180182 if ((pw == pw))
181183 then match pw {
182184 case r: Int =>
183185 [DeleteEntry(assetId)]
184186 case _ =>
185187 throw("Incorrect invoke result")
186188 }
187189 else throw("Strict value is not equal to itself.")
188190 }
189191 else throw("Strict value is not equal to itself.")
190192 }
191193
192194
195+
196+@Callable(i)
197+func setNationOwner (nationKey,newOwner) = if (if ((i.caller != adminAddress))
198+ then true
199+ else (i.caller.bytes != nationsAddress))
200+ then $Tuple2([StringEntry((nationKey + "_Owner"), newOwner)], true)
201+ else {
202+ let currentOwner = tryGetString((nationKey + "_Owner"))
203+ if ((currentOwner != toString(i.caller)))
204+ then throw("You are not the nation owner")
205+ else [StringEntry((nationKey + "_Owner"), newOwner)]
206+ }
207+
208+

github/deemru/w8io/169f3d6 
43.00 ms