tx · 8ECFKX1ZsHoGsRrZtj9FEtNd18usUEFxpPeRJid15Z9g

3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN:  -0.00800000 Waves

2022.08.22 18:13 [3261332] smart account 3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN > SELF 0.00000000 Waves

{ "type": 13, "id": "8ECFKX1ZsHoGsRrZtj9FEtNd18usUEFxpPeRJid15Z9g", "fee": 800000, "feeAssetId": null, "timestamp": 1661181240641, "version": 2, "chainId": 87, "sender": "3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN", "senderPublicKey": "ZEHv2auiMPiEJeZ2hEuVfbScRWWWjzG8DyrzbdGLeWc", "proofs": [ "3sEbkKxMx6NtyhXo2frdea7AFj2GRfPrRqWZ3Av7SMg3ppx39YGD2h5VSs7aMQwHzcnbxheg5QRuiwa196a87QoW" ], "script": "base64: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", "height": 3261332, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EvapyT1CEnjqzgNQDQgE9WbFPo2gtgN6QU3RZabAKEPG Next: none Diff:
OldNewDifferences
55
66 let waves = 100000000
77
8-func getPunkIDKey (id) = ("MadPunk_" + id)
8+func getPunkIDKey (id) = ("punk_" + id)
99
1010
1111 func tryGetInteger (key) = {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let maxSupply = 1000
55
66 let waves = 100000000
77
8-func getPunkIDKey (id) = ("MadPunk_" + id)
8+func getPunkIDKey (id) = ("punk_" + id)
99
1010
1111 func tryGetInteger (key) = {
1212 let val = match getInteger(this, key) {
1313 case b: Int =>
1414 b
1515 case _ =>
1616 0
1717 }
1818 val
1919 }
2020
2121
2222 func tryGetBoolean (key) = {
2323 let val = match getBoolean(this, key) {
2424 case b: Boolean =>
2525 b
2626 case _ =>
2727 false
2828 }
2929 val
3030 }
3131
3232
3333 func tryGetString (key) = {
3434 let val = match getString(this, key) {
3535 case b: String =>
3636 b
3737 case _ =>
3838 ""
3939 }
4040 val
4141 }
4242
4343
4444 func getURL (id) = if (containsElement(split(tryGetString("gif_punk"), ","), id))
4545 then (("https://images.wavespunks.com/mad/empire/" + id) + ".gif")
4646 else (("https://images.wavespunks.com/mad/empire/" + id) + ".png")
4747
4848
4949 func getTypePunk (id) = {
5050 let idINT = match parseInt(id) {
5151 case i: Int =>
5252 i
5353 case i: Unit =>
5454 0
5555 case _ =>
5656 throw("Match error")
5757 }
5858 if (containsElement(split(tryGetString("gif_punk"), ","), toString(idINT)))
5959 then "ultra-rare"
6060 else if ((29 >= idINT))
6161 then "rare"
6262 else "unique"
6363 }
6464
6565
6666 func getRandomNumber (variants,txId,heightBlock,offset) = {
6767 let randomSeedBlock = value(blockInfoByHeight((heightBlock - 1)))
6868 let randomHash = sha256_16Kb((txId + value(randomSeedBlock.vrf)))
6969 (toInt(randomHash, offset) % variants)
7070 }
7171
7272
7373 func calcWavesNeeded () = (waves * 6)
7474
7575
7676 func _mint (i,totalPunksSupply,availablePunks) = {
7777 let listAvailablePunks = split(availablePunks, ",")
7878 let rand = getRandomNumber((maxSupply - totalPunksSupply), i.transactionId, height, 0)
7979 let punkId = listAvailablePunks[rand]
8080 let name = ("MadPunk #" + punkId)
8181 let meta = tryGetString("collection_description")
8282 let asset = Issue(name, meta, 1, 0, false, unit, height)
8383 let assetId = calculateAssetId(asset)
8484 let tx = [IntegerEntry("punks_supply", (totalPunksSupply + 1)), StringEntry("available_punks", makeString(removeByIndex(listAvailablePunks, rand), ",")), asset, StringEntry(getPunkIDKey(punkId), toBase58String(assetId)), StringEntry((toBase58String(assetId) + "_id"), getPunkIDKey(punkId)), StringEntry((toBase58String(assetId) + "_type"), getTypePunk(punkId)), StringEntry((toBase58String(assetId) + "_url"), getURL(punkId)), StringEntry((toBase58String(assetId) + "_fraction"), tryGetString("fraction")), ScriptTransfer(i.caller, 1, assetId)]
8585 tx
8686 }
8787
8888
8989 @Callable(i)
9090 func mint () = {
9191 let totalPunksSupply = tryGetInteger("punks_supply")
9292 let availablePunks = tryGetString("available_punks")
9393 let preMintAddress = split(tryGetString("premint_address"), ",")
9494 let startMint = tryGetInteger("start_mint")
9595 let wavesNeeded = calcWavesNeeded()
9696 let firstPayment = value(i.payments[0])
9797 let firstPaymentBool = match firstPayment.assetId {
9898 case t: ByteVector =>
9999 true
100100 case w: Unit =>
101101 false
102102 case _ =>
103103 throw("Match error")
104104 }
105105 if ((totalPunksSupply == maxSupply))
106106 then throw("All punks are minted")
107107 else if ((availablePunks == ""))
108108 then throw("No punks available")
109109 else if (tryGetBoolean(toString(i.caller)))
110110 then {
111111 let temp = (_mint(i, totalPunksSupply, availablePunks) ++ [DeleteEntry(toString(i.caller))])
112112 temp
113113 }
114114 else if ((startMint > lastBlock.timestamp))
115115 then throw("Mint hasn`t yet begun")
116116 else if (firstPaymentBool)
117117 then throw("Payment must be in Waves tokens only")
118118 else if ((wavesNeeded > firstPayment.amount))
119119 then throw("Insufficient funds")
120120 else _mint(i, totalPunksSupply, availablePunks)
121121 }
122122
123123
124124 @Verifier(tx)
125125 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
126126

github/deemru/w8io/3ef1775 
30.92 ms