tx · 5umb5vahDZtLxMT269xKPfqptQhHXkf2ASHSm4dQBMQD

3N51W4fn1aAAdypU26EGUwNZPr3zikN3vwh:  -0.01000000 Waves

2021.07.20 19:45 [1622191] smart account 3N51W4fn1aAAdypU26EGUwNZPr3zikN3vwh > SELF 0.00000000 Waves

{ "type": 13, "id": "5umb5vahDZtLxMT269xKPfqptQhHXkf2ASHSm4dQBMQD", "fee": 1000000, "feeAssetId": null, "timestamp": 1626799513095, "version": 2, "chainId": 84, "sender": "3N51W4fn1aAAdypU26EGUwNZPr3zikN3vwh", "senderPublicKey": "D7edN6TZzQ6PbyWHGFdGMPJkkRNjR1Y32g7MmU7AXR73", "proofs": [ "5dZA11cewre5xHmtV2Y9fZgWt9h7DDCjZ2avN5Rkfg4eorXZWUqSbb7C6F33bGvv5DGTLxRjGxpHQqLgp7eNag36" ], "script": "base64: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", "height": 1622191, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3GmXrZzCkcfkC3n42RAn4SijJxTnx7sGk1pYpnCUbPCN Next: 3rAPA8vAmWiikuJ8Pos8bP9vSFsctvHCB8aHVNSXiZmJ Diff:
OldNewDifferences
4141
4242
4343 @Callable(i)
44-func craftIngot () = {
44+func craftIngot (count) = {
4545 let caller = toBase58String(i.caller.bytes)
4646 let craft = match getInteger(this, ("craft_" + caller)) {
4747 case a: Int =>
6565 let payment = i.payments[0]
6666 if ((payment.assetId != RES))
6767 then throw("PAY IN RES TOKEN ONLY")
68- else if ((payment.amount != INGOTCOST))
69- then throw((("PAY " + toString(INGOTCOST)) + " RES TOKEN ONLY"))
68+ else if (((payment.amount * count) != (INGOTCOST * count)))
69+ then throw((("PAY " + toString((INGOTCOST * count))) + " RES TOKEN ONLY"))
7070 else {
71- let issue = Issue(("INGOT" + toString(newIngots)), ("INGOT" + toString(newIngots)), 1, 0, false)
71+ let issueName = ("INGOT" + toString(newIngots))
72+ let issueDesc = (((((("{\"weight\":" + toString(count)) + ",\"uid\":") + toString(newIngots)) + ",\"made_by\":\"") + caller) + "\"}")
73+ let issue = Issue(issueName, issueDesc, 1, 0, false)
7274 let nft = calculateAssetId(issue)
73-[Burn(RES, 10), Issue(("INGOT" + toString(newIngots)), ("INGOT" + toString(newIngots)), 1, 0, false), ScriptTransfer(i.caller, 1, nft), IntegerEntry("ingots_count", newIngots), StringEntry(("ingot_" + toString(newIngots)), toBase58String(nft)), IntegerEntry(("craft_" + caller), newCraft)]
75+[Burn(RES, 10), Issue(issueName, issueDesc, 1, 0, false), ScriptTransfer(i.caller, 1, nft), IntegerEntry("ingots_count", newIngots), StringEntry(("ingot_" + toString(newIngots)), toBase58String(nft)), IntegerEntry(("craft_" + caller), newCraft)]
7476 }
7577 }
7678 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let BLOCKSTEP = 10
55
66 let INGOTCOST = 10
77
88 let RES = base58'HdveNhSzDRiEib9RfQ5EAxmpFVica4EqvBFd2S4pdbD4'
99
1010 func randomizer (inv) = {
1111 let lastPlay = match getBinary(this, "lastPlay") {
1212 case s: ByteVector =>
1313 s
1414 case _: Unit =>
1515 base58'TGCTLFoHxJ8U7rcUofN'
1616 case _ =>
1717 throw("Match error")
1818 }
1919 let rand = (((((lastPlay + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
2020 sha256(rand)
2121 }
2222
2323
2424 @Callable(i)
2525 func goToMine () = {
2626 let caller = toBase58String(i.caller.bytes)
2727 let wait = match getInteger(this, ("wait_" + caller)) {
2828 case a: Int =>
2929 a
3030 case _ =>
3131 0
3232 }
3333 let newWait = (lastBlock.height + BLOCKSTEP)
3434 let randhash = randomizer(i)
3535 let count = (toInt(randhash) % 1000)
3636 if ((wait > lastBlock.height))
3737 then throw((("Still wait block " + toString(wait)) + " for mining"))
3838 else [IntegerEntry(("wait_" + caller), newWait), ScriptTransfer(i.caller, count, RES)]
3939 }
4040
4141
4242
4343 @Callable(i)
44-func craftIngot () = {
44+func craftIngot (count) = {
4545 let caller = toBase58String(i.caller.bytes)
4646 let craft = match getInteger(this, ("craft_" + caller)) {
4747 case a: Int =>
4848 a
4949 case _ =>
5050 0
5151 }
5252 let ingots = match getInteger(this, "ingots_count") {
5353 case a: Int =>
5454 a
5555 case _ =>
5656 0
5757 }
5858 let newIngots = (ingots + 1)
5959 let newCraft = (lastBlock.height + BLOCKSTEP)
6060 if ((size(i.payments) == 0))
6161 then throw("Payment not attached")
6262 else if ((craft > lastBlock.height))
6363 then throw((("Still wait block " + toString(craft)) + " for crafting"))
6464 else {
6565 let payment = i.payments[0]
6666 if ((payment.assetId != RES))
6767 then throw("PAY IN RES TOKEN ONLY")
68- else if ((payment.amount != INGOTCOST))
69- then throw((("PAY " + toString(INGOTCOST)) + " RES TOKEN ONLY"))
68+ else if (((payment.amount * count) != (INGOTCOST * count)))
69+ then throw((("PAY " + toString((INGOTCOST * count))) + " RES TOKEN ONLY"))
7070 else {
71- let issue = Issue(("INGOT" + toString(newIngots)), ("INGOT" + toString(newIngots)), 1, 0, false)
71+ let issueName = ("INGOT" + toString(newIngots))
72+ let issueDesc = (((((("{\"weight\":" + toString(count)) + ",\"uid\":") + toString(newIngots)) + ",\"made_by\":\"") + caller) + "\"}")
73+ let issue = Issue(issueName, issueDesc, 1, 0, false)
7274 let nft = calculateAssetId(issue)
73-[Burn(RES, 10), Issue(("INGOT" + toString(newIngots)), ("INGOT" + toString(newIngots)), 1, 0, false), ScriptTransfer(i.caller, 1, nft), IntegerEntry("ingots_count", newIngots), StringEntry(("ingot_" + toString(newIngots)), toBase58String(nft)), IntegerEntry(("craft_" + caller), newCraft)]
75+[Burn(RES, 10), Issue(issueName, issueDesc, 1, 0, false), ScriptTransfer(i.caller, 1, nft), IntegerEntry("ingots_count", newIngots), StringEntry(("ingot_" + toString(newIngots)), toBase58String(nft)), IntegerEntry(("craft_" + caller), newCraft)]
7476 }
7577 }
7678 }
7779
7880

github/deemru/w8io/169f3d6 
183.06 ms