tx · BqGX14kFrjnVZxSjFHaX5uoqNMF5KvaDeWjJNWb4TzGp

3MxZPzVdHQYNjp99N7VRuR4RLmJUqnDg9ok:  -0.00400000 Waves

2022.08.17 03:36 [2187754] smart account 3MxZPzVdHQYNjp99N7VRuR4RLmJUqnDg9ok > SELF 0.00000000 Waves

{ "type": 13, "id": "BqGX14kFrjnVZxSjFHaX5uoqNMF5KvaDeWjJNWb4TzGp", "fee": 400000, "feeAssetId": null, "timestamp": 1660696590323, "version": 2, "chainId": 84, "sender": "3MxZPzVdHQYNjp99N7VRuR4RLmJUqnDg9ok", "senderPublicKey": "A1pjoNRKAzNoU5LENmSXCwNcK2rfa9xvd3fzjagNw7ft", "proofs": [ "4gudbM2kzeNoyiMQ52rpM2z8qbayUbviwJ8Yq3DWYNbUS9qh1kUakYxH3Txqr2R1zEs7g2b7nupa1HieFPLkuCBD" ], "script": "base64:AAIFAAAAAAAAABEIAhIDCgEBEgMKAQgSAwoBCAAAAAcAAAAAC2NvYWxBc3NldElkAQAAACAx4NX1QLdx6YXseg5vt69SuiO8pkIcnZo7mSXoiYaO5gEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAAA10cnlHZXRCb29sZWFuAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiBwEAAAAOZ2V0QXNzZXRTdHJpbmcAAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAWIFAAAAByRtYXRjaDAJAAJYAAAAAQUAAAABYgIAAAAFV0FWRVMBAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAgAAAAABAAAADHRyeUdldEJpbmFyeQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHAAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgEAAAAAAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQAAAAphc3NldElkU3RyAwkAAAAAAAACBQAAAAphc3NldElkU3RyAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAAphc3NldElkU3RyAAAAAwAAAAFpAQAAAA1jcmVhdGVGdXJuYWNlAAAAAQAAAAhsaWZldGltZQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAcWW91IHNob3VsZCB0byBwcm92aWRlIHJld2FyZAQAAAAMcmV3YXJkQW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAADXJld2FyZEFzc2V0SWQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAEW5ld0Z1cm5hY2VzQW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAVZ2xvYmFsX2Z1cm5hY2VzQW1vdW50AAAAAAAAAAABBAAAAAlmdXJuYWNlSWQJAAGkAAAAAQUAAAARbmV3RnVybmFjZXNBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAFWdsb2JhbF9mdXJuYWNlc0Ftb3VudAUAAAARbmV3RnVybmFjZXNBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhmdXJuYWNlXwUAAAAJZnVybmFjZUlkAgAAAAlfbGlmZXRpbWUFAAAACGxpZmV0aW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIZnVybmFjZV8FAAAACWZ1cm5hY2VJZAIAAAANX3Jld2FyZEFtb3VudAUAAAAMcmV3YXJkQW1vdW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhmdXJuYWNlXwUAAAAJZnVybmFjZUlkAgAAAA5fcmV3YXJkQXNzZXRJZAkBAAAADmdldEFzc2V0U3RyaW5nAAAAAQUAAAANcmV3YXJkQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAABGJ1cm4AAAABAAAACWZ1cm5hY2VJZAQAAAAKaXNGaW5pc2hlZAkBAAAADXRyeUdldEJvb2xlYW4AAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIZnVybmFjZV8FAAAACWZ1cm5hY2VJZAIAAAAJX2ZpbmlzaGVkAwUAAAAKaXNGaW5pc2hlZAkAAAIAAAABAgAAABBBbHJlYWR5IGZpbmlzaGVkAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1Zb3Ugc2hvdWxkIHRvIHByb3ZpZGUgcGF5bWVudAMJAQAAAAIhPQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAAC2NvYWxBc3NldElkCQAAAgAAAAECAAAADEludmFsaWQgY29hbAMJAQAAAAIhPQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAAAAAAAAAAAAQkAAAIAAAABAgAAABhZb3UgY2FuIGJ1cm4gb25seSAxIGNvYWwEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAAC2NvYWxBc3NldElkCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhmdXJuYWNlXwUAAAAJZnVybmFjZUlkAgAAAAlfbGFzdEJ1cm4FAAAABmhlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIZnVybmFjZV8FAAAACWZ1cm5hY2VJZAIAAAALX2xhc3RTdG9rZXIFAAAADWNhbGxlckFkZHJlc3MFAAAAA25pbAAAAAFpAQAAAAVjbGFpbQAAAAEAAAAJZnVybmFjZUlkBAAAAAppc0ZpbmlzaGVkCQEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhmdXJuYWNlXwUAAAAJZnVybmFjZUlkAgAAAAlfZmluaXNoZWQEAAAACGxpZmV0aW1lCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhmdXJuYWNlXwUAAAAJZnVybmFjZUlkAgAAAAlfbGlmZXRpbWUEAAAACGxhc3RCdXJuCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhmdXJuYWNlXwUAAAAJZnVybmFjZUlkAgAAAAlfbGFzdEJ1cm4EAAAAC3Jld2FyZEFzc2V0CQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAACGZ1cm5hY2VfBQAAAAlmdXJuYWNlSWQCAAAADl9yZXdhcmRBc3NldElkBAAAAApsYXN0U3Rva2VyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAACGZ1cm5hY2VfBQAAAAlmdXJuYWNlSWQCAAAAC19sYXN0U3Rva2VyBAAAAAxyZXdhcmRBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAACGZ1cm5hY2VfBQAAAAlmdXJuYWNlSWQCAAAADV9yZXdhcmRBbW91bnQDBQAAAAppc0ZpbmlzaGVkCQAAAgAAAAECAAAAEEFscmVhZHkgZmluaXNoZWQDCQAAAAAAAAIFAAAACGxpZmV0aW1lAAAAAAAAAAAACQAAAgAAAAECAAAAE0Nhbm5vdCBmaW5kIGZ1cm5hY2UDCQAAAAAAAAIFAAAACGxhc3RCdXJuAAAAAAAAAAAACQAAAgAAAAECAAAAEUZ1cm5hY2Ugbm90IGZvdW5kAwkAAGYAAAACBQAAAAZoZWlnaHQJAABkAAAAAgUAAAAIbGFzdEJ1cm4FAAAACGxpZmV0aW1lCQAAAgAAAAECAAAAFFRpbWUgaGFzIG5vdCBydW4gb3V0AwkAAAAAAAACBQAAAAtyZXdhcmRBc3NldAIAAAAACQAAAgAAAAECAAAAGENhbm5vdCBmaW5kIHJld2FyZCBhc3NldAMJAAAAAAAAAgUAAAAKbGFzdFN0b2tlcgIAAAAACQAAAgAAAAECAAAAF0Nhbm5vdCBmaW5kIGxhc3Qgc3Rva2VyAwkAAAAAAAACBQAAAAxyZXdhcmRBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAdUmV3YXJkIGFscmVhZHkgc2VudCB0byB3aW5uZXIJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhmdXJuYWNlXwUAAAAJZnVybmFjZUlkAgAAAAlfZmluaXNoZWQGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAApsYXN0U3Rva2VyBQAAAAxyZXdhcmRBbW91bnQJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAALcmV3YXJkQXNzZXQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5PGlB6A==", "height": 2187754, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: C67cB3veXTJZU9uc7MDtg5KHwdarZHiHw5GRnUHG1eRz Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let coalAssetId = base58'4MhpjsP1MPpC49v6zBr7eAAEPZdmHWcrSqcSv8tZcpjo'
5+
6+func tryGetInteger (key) = match getInteger(this, key) {
7+ case b: Int =>
8+ b
9+ case _ =>
10+ 0
11+}
12+
13+
14+func tryGetBoolean (key) = match getBoolean(this, key) {
15+ case b: Boolean =>
16+ b
17+ case _ =>
18+ false
19+}
20+
21+
22+func getAssetString (assetId) = match assetId {
23+ case b: ByteVector =>
24+ toBase58String(b)
25+ case _ =>
26+ "WAVES"
27+}
28+
29+
30+func tryGetString (key) = match getString(this, key) {
31+ case b: String =>
32+ b
33+ case _ =>
34+ ""
35+}
36+
37+
38+func tryGetBinary (key) = match getBinary(this, key) {
39+ case b: ByteVector =>
40+ b
41+ case _ =>
42+ base58''
43+}
44+
45+
46+func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
47+ then unit
48+ else fromBase58String(assetIdStr)
49+
50+
51+@Callable(i)
52+func createFurnace (lifetime) = if ((size(i.payments) != 1))
53+ then throw("You should to provide reward")
54+ else {
55+ let rewardAmount = i.payments[0].amount
56+ let rewardAssetId = i.payments[0].assetId
57+ let newFurnacesAmount = (tryGetInteger("global_furnacesAmount") + 1)
58+ let furnaceId = toString(newFurnacesAmount)
59+[IntegerEntry("global_furnacesAmount", newFurnacesAmount), IntegerEntry((("furnace_" + furnaceId) + "_lifetime"), lifetime), IntegerEntry((("furnace_" + furnaceId) + "_rewardAmount"), rewardAmount), StringEntry((("furnace_" + furnaceId) + "_rewardAssetId"), getAssetString(rewardAssetId))]
60+ }
61+
62+
63+
64+@Callable(i)
65+func burn (furnaceId) = {
66+ let isFinished = tryGetBoolean((("furnace_" + furnaceId) + "_finished"))
67+ if (isFinished)
68+ then throw("Already finished")
69+ else if ((size(i.payments) != 1))
70+ then throw("You should to provide payment")
71+ else if ((i.payments[0].assetId != coalAssetId))
72+ then throw("Invalid coal")
73+ else if ((i.payments[0].amount != 1))
74+ then throw("You can burn only 1 coal")
75+ else {
76+ let callerAddress = toBase58String(i.caller.bytes)
77+[Burn(coalAssetId, i.payments[0].amount), IntegerEntry((("furnace_" + furnaceId) + "_lastBurn"), height), StringEntry((("furnace_" + furnaceId) + "_lastStoker"), callerAddress)]
78+ }
79+ }
80+
81+
82+
83+@Callable(i)
84+func claim (furnaceId) = {
85+ let isFinished = tryGetBoolean((("furnace_" + furnaceId) + "_finished"))
86+ let lifetime = tryGetInteger((("furnace_" + furnaceId) + "_lifetime"))
87+ let lastBurn = tryGetInteger((("furnace_" + furnaceId) + "_lastBurn"))
88+ let rewardAsset = tryGetString((("furnace_" + furnaceId) + "_rewardAssetId"))
89+ let lastStoker = tryGetString((("furnace_" + furnaceId) + "_lastStoker"))
90+ let rewardAmount = tryGetInteger((("furnace_" + furnaceId) + "_rewardAmount"))
91+ if (isFinished)
92+ then throw("Already finished")
93+ else if ((lifetime == 0))
94+ then throw("Cannot find furnace")
95+ else if ((lastBurn == 0))
96+ then throw("Furnace not found")
97+ else if ((height > (lastBurn + lifetime)))
98+ then throw("Time has not run out")
99+ else if ((rewardAsset == ""))
100+ then throw("Cannot find reward asset")
101+ else if ((lastStoker == ""))
102+ then throw("Cannot find last stoker")
103+ else if ((rewardAmount == 0))
104+ then throw("Reward already sent to winner")
105+ else [BooleanEntry((("furnace_" + furnaceId) + "_finished"), true), ScriptTransfer(Address(fromBase58String(lastStoker)), rewardAmount, getAssetBytes(rewardAsset))]
106+ }
107+
108+
109+@Verifier(tx)
110+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
111+

github/deemru/w8io/873ac7e 
29.60 ms