tx · CsR1DrvcHYSyuZv9peDRaTJXuQSvDfULt5Vg63wkBwV2

3Mpv2qZ8P3tXj3uKwmw8ULr9yxANxbadQEW:  -0.01400000 Waves

2021.12.05 21:46 [1821339] smart account 3Mpv2qZ8P3tXj3uKwmw8ULr9yxANxbadQEW > SELF 0.00000000 Waves

{ "type": 13, "id": "CsR1DrvcHYSyuZv9peDRaTJXuQSvDfULt5Vg63wkBwV2", "fee": 1400000, "feeAssetId": null, "timestamp": 1638729987622, "version": 2, "chainId": 84, "sender": "3Mpv2qZ8P3tXj3uKwmw8ULr9yxANxbadQEW", "senderPublicKey": "J7yipDGS56f1CWQUaHM6k8TXt1iWw3DrzeqjSEUqL4Uv", "proofs": [ "66wANnKVAanDrbVz41UbRFzcGKaVd1tsLxtRvX2EMwTNJ3JE6deS14GGPtVHmVnDPcPuV6PB91vXvKro8PYPz8wo" ], "script": "base64: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", "height": 1821339, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HZAZHf4KVUKdno7zCL4vqxY7C4TDpkio9ESukgjrNZ9D Next: BuoKREhqKiQAThykyeFCT6KqZ6x1dMKyfW8oWfq7LaPK Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-
5-
6-@Callable(i)
7-func test (idx) = {
8- let c = "EhheQbMgpC7pW5YuW4uxFJyB6PMesiWufbWkqoVtR2fJ"
9- let d = toBytes(c)
10- let e = toBase58String(d)
11- let idy = fromBase58String(idx)
12- let x = match assetInfo(idy) {
13- case asset: Asset =>
14- asset.description
15- case _ =>
16- throw("Can't find asset")
4+func isPaymentOk (i,price) = {
5+ let acceptableAssetId = base58'3JmaWyFqWo8YSA8x3DXCBUW7veesxacvKx19dMv7wTMg'
6+ if ((size(i.payments) == 0))
7+ then throw("Payment not attached")
8+ else {
9+ let p = i.payments[0]
10+ match p.assetId {
11+ case assetId: ByteVector =>
12+ if ((assetId == acceptableAssetId))
13+ then (p.amount >= price)
14+ else false
15+ case _ =>
16+ throw("Bad asset or amount")
17+ }
18+ }
1719 }
18-[throw(("the x :" + x))]
19- }
20-
2120
2221
2322 @Callable(i)
3938
4039
4140 @Callable(i)
42-func buynft (cnt,idnftx) = {
43- let fname = "MDST-NFT-COPY"
41+func buynft (idnftx,cnt,newid) = {
42+ let st = toString(cnt)
43+ let fname = ("MDST-COPY#" + st)
4444 let info = "kiki bikit"
45- let c = toBytes(idnftx)
46- let e = toBase58String(c)
47- let idnft = fromBase58String(e)
48- let idnft2 = base58'EhheQbMgpC7pW5YuW4uxFJyB6PMesiWufbWkqoVtR2fJ'
45+ let idnft = fromBase58String(idnftx)
4946 let x = match assetInfo(idnft) {
5047 case asset: Asset =>
5148 asset.description
5249 case _ =>
53- throw("Can't find asset")
50+ throw("Can't find this NFT")
5451 }
55- let issue = Issue(fname, info, 1, 0, false)
52+ let y = split(x, ",")
53+ let spliturl = split(y[4], "=")
54+ let newurl = ((spliturl[0] + "=") + newid)
55+ let z = ((((((((((((((((((((((y[0] + ",") + y[1]) + ",") + y[2]) + ",") + y[3]) + ",") + y[4]) + ",") + newurl) + ",") + y[6]) + ",") + "false") + ",") + y[8]) + ",") + y[9]) + ",") + st) + ",") + y[11])
56+ let price = y[8]
57+ let money = (size(i.payments) * 10000)
58+ let moneyartist = (money / 2)
59+ let moneyowner = (money / 4)
60+ let moneyus = (money / 4)
61+ let mdstid = base58'3JmaWyFqWo8YSA8x3DXCBUW7veesxacvKx19dMv7wTMg'
62+ let walletartist = addressFromStringValue(y[0])
63+ let walletowner = addressFromStringValue(y[2])
64+ let wl = "3MzXqo2rBxc3XEKPVcYHDrsgP7jmE6cGg6C"
65+ let issue = Issue(fname, z, 1, 0, false)
5666 let id = calculateAssetId(issue)
57-[throw(("the x :" + x))]
67+ let maxcnt = parseIntValue(y[9])
68+ if ((cnt > maxcnt))
69+ then throw("Mint impossible, max NFT amount exceeded")
70+ else if (isPaymentOk(i, money))
71+ then [issue, ScriptTransfer(i.caller, 1, id), ScriptTransfer(walletartist, moneyartist, mdstid), ScriptTransfer(walletowner, moneyowner, mdstid)]
72+ else throw("Wrong payment amount or asset")
5873 }
5974
6075
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-
5-
6-@Callable(i)
7-func test (idx) = {
8- let c = "EhheQbMgpC7pW5YuW4uxFJyB6PMesiWufbWkqoVtR2fJ"
9- let d = toBytes(c)
10- let e = toBase58String(d)
11- let idy = fromBase58String(idx)
12- let x = match assetInfo(idy) {
13- case asset: Asset =>
14- asset.description
15- case _ =>
16- throw("Can't find asset")
4+func isPaymentOk (i,price) = {
5+ let acceptableAssetId = base58'3JmaWyFqWo8YSA8x3DXCBUW7veesxacvKx19dMv7wTMg'
6+ if ((size(i.payments) == 0))
7+ then throw("Payment not attached")
8+ else {
9+ let p = i.payments[0]
10+ match p.assetId {
11+ case assetId: ByteVector =>
12+ if ((assetId == acceptableAssetId))
13+ then (p.amount >= price)
14+ else false
15+ case _ =>
16+ throw("Bad asset or amount")
17+ }
18+ }
1719 }
18-[throw(("the x :" + x))]
19- }
20-
2120
2221
2322 @Callable(i)
2423 func mintme (info) = {
2524 let counter = match getInteger(this, "counter") {
2625 case a: Int =>
2726 (a + 1)
2827 case _ =>
2928 0
3029 }
3130 let st = toString(counter)
3231 let name = "MDST-NFT #"
3332 let fname = (name + st)
3433 let issue = Issue(fname, info, 1, 0, false)
3534 let id = calculateAssetId(issue)
3635 [issue, ScriptTransfer(i.caller, issue.quantity, id), IntegerEntry("counter", counter)]
3736 }
3837
3938
4039
4140 @Callable(i)
42-func buynft (cnt,idnftx) = {
43- let fname = "MDST-NFT-COPY"
41+func buynft (idnftx,cnt,newid) = {
42+ let st = toString(cnt)
43+ let fname = ("MDST-COPY#" + st)
4444 let info = "kiki bikit"
45- let c = toBytes(idnftx)
46- let e = toBase58String(c)
47- let idnft = fromBase58String(e)
48- let idnft2 = base58'EhheQbMgpC7pW5YuW4uxFJyB6PMesiWufbWkqoVtR2fJ'
45+ let idnft = fromBase58String(idnftx)
4946 let x = match assetInfo(idnft) {
5047 case asset: Asset =>
5148 asset.description
5249 case _ =>
53- throw("Can't find asset")
50+ throw("Can't find this NFT")
5451 }
55- let issue = Issue(fname, info, 1, 0, false)
52+ let y = split(x, ",")
53+ let spliturl = split(y[4], "=")
54+ let newurl = ((spliturl[0] + "=") + newid)
55+ let z = ((((((((((((((((((((((y[0] + ",") + y[1]) + ",") + y[2]) + ",") + y[3]) + ",") + y[4]) + ",") + newurl) + ",") + y[6]) + ",") + "false") + ",") + y[8]) + ",") + y[9]) + ",") + st) + ",") + y[11])
56+ let price = y[8]
57+ let money = (size(i.payments) * 10000)
58+ let moneyartist = (money / 2)
59+ let moneyowner = (money / 4)
60+ let moneyus = (money / 4)
61+ let mdstid = base58'3JmaWyFqWo8YSA8x3DXCBUW7veesxacvKx19dMv7wTMg'
62+ let walletartist = addressFromStringValue(y[0])
63+ let walletowner = addressFromStringValue(y[2])
64+ let wl = "3MzXqo2rBxc3XEKPVcYHDrsgP7jmE6cGg6C"
65+ let issue = Issue(fname, z, 1, 0, false)
5666 let id = calculateAssetId(issue)
57-[throw(("the x :" + x))]
67+ let maxcnt = parseIntValue(y[9])
68+ if ((cnt > maxcnt))
69+ then throw("Mint impossible, max NFT amount exceeded")
70+ else if (isPaymentOk(i, money))
71+ then [issue, ScriptTransfer(i.caller, 1, id), ScriptTransfer(walletartist, moneyartist, mdstid), ScriptTransfer(walletowner, moneyowner, mdstid)]
72+ else throw("Wrong payment amount or asset")
5873 }
5974
6075
6176 @Verifier(tx)
6277 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
6378

github/deemru/w8io/873ac7e 
29.09 ms