tx · 5t1ZsHUpihAeFQBjG7BSDwL5RfKK6EFwRnGDDXJXPEF4

3MxbD7vwyGjwsRxT8fmMB9fngo59VfHcrea:  -0.00800000 Waves

2022.08.17 04:06 [2187788] smart account 3MxbD7vwyGjwsRxT8fmMB9fngo59VfHcrea > SELF 0.00000000 Waves

{ "type": 13, "id": "5t1ZsHUpihAeFQBjG7BSDwL5RfKK6EFwRnGDDXJXPEF4", "fee": 800000, "feeAssetId": null, "timestamp": 1660698343694, "version": 2, "chainId": 84, "sender": "3MxbD7vwyGjwsRxT8fmMB9fngo59VfHcrea", "senderPublicKey": "7kBiESqWjiW6nNeStcbrVX9XRQkWmUM51MZFRZNQEVfR", "proofs": [ "4TFRr3Uw9bf37L5GiAx8EqBPF5eE6f1V3FuNjXRDYxnv6at8xZ1fAtGcGXiRunmoyeHq7r5T8X8uH1wikm99CgDa" ], "script": "base64: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", "height": 2187788, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GG3pBfZBi9xF3EjMY6w6ZTvLKPA2KfhhXd2DD7fAJ87w Next: 8WkdyTnnCcFtXPLHSa4gKP5UKuwpkp2otiZL5o7z9Ghb Diff:
OldNewDifferences
8888 let rewardAsset = tryGetString((("furnace_" + furnaceId) + "_rewardAssetId"))
8989 let lastStoker = tryGetString((("furnace_" + furnaceId) + "_lastStoker"))
9090 let rewardAmount = tryGetInteger((("furnace_" + furnaceId) + "_rewardAmount"))
91+ let finishHeight = (lastBurn + lifetime)
9192 if (isFinished)
9293 then throw("Already finished")
9394 else if ((lifetime == 0))
9495 then throw("Cannot find furnace")
9596 else if ((lastBurn == 0))
9697 then throw("Furnace not found")
97- else if ((height > (lastBurn + lifetime)))
98+ else if ((finishHeight > height))
9899 then throw("Time has not run out")
99100 else if ((rewardAsset == ""))
100101 then throw("Cannot find reward asset")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let coalAssetId = base58'4MhpjsP1MPpC49v6zBr7eAAEPZdmHWcrSqcSv8tZcpjo'
55
66 func tryGetInteger (key) = match getInteger(this, key) {
77 case b: Int =>
88 b
99 case _ =>
1010 0
1111 }
1212
1313
1414 func tryGetBoolean (key) = match getBoolean(this, key) {
1515 case b: Boolean =>
1616 b
1717 case _ =>
1818 false
1919 }
2020
2121
2222 func getAssetString (assetId) = match assetId {
2323 case b: ByteVector =>
2424 toBase58String(b)
2525 case _ =>
2626 "WAVES"
2727 }
2828
2929
3030 func tryGetString (key) = match getString(this, key) {
3131 case b: String =>
3232 b
3333 case _ =>
3434 ""
3535 }
3636
3737
3838 func tryGetBinary (key) = match getBinary(this, key) {
3939 case b: ByteVector =>
4040 b
4141 case _ =>
4242 base58''
4343 }
4444
4545
4646 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
4747 then unit
4848 else fromBase58String(assetIdStr)
4949
5050
5151 @Callable(i)
5252 func createFurnace (lifetime) = if ((size(i.payments) != 1))
5353 then throw("You should to provide reward")
5454 else {
5555 let rewardAmount = i.payments[0].amount
5656 let rewardAssetId = i.payments[0].assetId
5757 let newFurnacesAmount = (tryGetInteger("global_furnacesAmount") + 1)
5858 let furnaceId = toString(newFurnacesAmount)
5959 [IntegerEntry("global_furnacesAmount", newFurnacesAmount), IntegerEntry((("furnace_" + furnaceId) + "_lifetime"), lifetime), IntegerEntry((("furnace_" + furnaceId) + "_rewardAmount"), rewardAmount), StringEntry((("furnace_" + furnaceId) + "_rewardAssetId"), getAssetString(rewardAssetId))]
6060 }
6161
6262
6363
6464 @Callable(i)
6565 func burn (furnaceId) = {
6666 let isFinished = tryGetBoolean((("furnace_" + furnaceId) + "_finished"))
6767 if (isFinished)
6868 then throw("Already finished")
6969 else if ((size(i.payments) != 1))
7070 then throw("You should to provide payment")
7171 else if ((i.payments[0].assetId != coalAssetId))
7272 then throw("Invalid coal")
7373 else if ((i.payments[0].amount != 1))
7474 then throw("You can burn only 1 coal")
7575 else {
7676 let callerAddress = toBase58String(i.caller.bytes)
7777 [Burn(coalAssetId, i.payments[0].amount), IntegerEntry((("furnace_" + furnaceId) + "_lastBurn"), height), StringEntry((("furnace_" + furnaceId) + "_lastStoker"), callerAddress)]
7878 }
7979 }
8080
8181
8282
8383 @Callable(i)
8484 func claim (furnaceId) = {
8585 let isFinished = tryGetBoolean((("furnace_" + furnaceId) + "_finished"))
8686 let lifetime = tryGetInteger((("furnace_" + furnaceId) + "_lifetime"))
8787 let lastBurn = tryGetInteger((("furnace_" + furnaceId) + "_lastBurn"))
8888 let rewardAsset = tryGetString((("furnace_" + furnaceId) + "_rewardAssetId"))
8989 let lastStoker = tryGetString((("furnace_" + furnaceId) + "_lastStoker"))
9090 let rewardAmount = tryGetInteger((("furnace_" + furnaceId) + "_rewardAmount"))
91+ let finishHeight = (lastBurn + lifetime)
9192 if (isFinished)
9293 then throw("Already finished")
9394 else if ((lifetime == 0))
9495 then throw("Cannot find furnace")
9596 else if ((lastBurn == 0))
9697 then throw("Furnace not found")
97- else if ((height > (lastBurn + lifetime)))
98+ else if ((finishHeight > height))
9899 then throw("Time has not run out")
99100 else if ((rewardAsset == ""))
100101 then throw("Cannot find reward asset")
101102 else if ((lastStoker == ""))
102103 then throw("Cannot find last stoker")
103104 else if ((rewardAmount == 0))
104105 then throw("Reward already sent to winner")
105106 else [BooleanEntry((("furnace_" + furnaceId) + "_finished"), true), ScriptTransfer(Address(fromBase58String(lastStoker)), rewardAmount, getAssetBytes(rewardAsset))]
106107 }
107108
108109
109110 @Verifier(tx)
110111 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
111112

github/deemru/w8io/169f3d6 
84.93 ms