tx · 8jtFTHsiNw6ENqBj3TXHTdJLPgT343XuM3Nzb4gUkcjk

3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS:  -0.01000000 Waves

2022.07.10 18:59 [3199451] smart account 3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS > SELF 0.00000000 Waves

{ "type": 13, "id": "8jtFTHsiNw6ENqBj3TXHTdJLPgT343XuM3Nzb4gUkcjk", "fee": 1000000, "feeAssetId": null, "timestamp": 1657468777700, "version": 2, "chainId": 87, "sender": "3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS", "senderPublicKey": "AQM5JR46VkucVkx5RVXDtku22Yf6j1v16ekWmdXYyXMT", "proofs": [ "26ivLLvLoJ4jnpLxZyNmdT76Z7s8MzxUA13bFiK7GBXadxJYuXyb69Ms7kp6Br31k7WBDWDV5vsp1sy4YQNEDCLX" ], "script": "base64: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AARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAHbmFtZUtleQUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhzdGF0ZUtleQIAAAAGTE9HR0VECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACnN0YXRlS2V5VHgCAAAABkxPR0dFRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlpc3N1ZXJLZXkFAAAABmlzc3VlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlhc3NldFR4SWQFAAAAB2Fzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAAAxEaXJ0eSBoYWNrZXIAAAABaQEAAAAPcmVsZWFzZU9uTmF0aXZlAAAAAQAAAAR0eElkBAAAAAxhc3NldFR4SWRLZXkJAQAAAAxrZXlBc3NldFR4SWQAAAABBQAAAAR0eElkBAAAAAl0eElkU3RhdGUJAQAAAAxrZXlTdGF0ZVR4SWQAAAABBQAAAAR0eElkBAAAAAdhc3NldElkCQEAAAAMZ2V0RGF0YUJ5S2V5AAAAAQUAAAAMYXNzZXRUeElkS2V5BAAAAA5kZXN0aW5hdGlvbktleQkBAAAAEWtleURlc3RpbmF0aW9uTkZUAAAAAQUAAAAHYXNzZXRJZAQAAAANb3RoZXJTdGF0ZUtleQkBAAAAC2tleVN0YXRlTkZUAAAAAQUAAAAHYXNzZXRJZAQAAAAFc3RhdGUJAQAAAAxnZXREYXRhQnlLZXkAAAABBQAAAAl0eElkU3RhdGUDCQAAAAAAAAIFAAAABXN0YXRlAgAAAAZMT0dHRUQEAAAAC2Rlc3RpbmF0aW9uCQEAAAAMZ2V0RGF0YUJ5S2V5AAAAAQUAAAAOZGVzdGluYXRpb25LZXkEAAAADnJlY2VpdmVORlRBZGR5CQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALZGVzdGluYXRpb24EAAAACW5hdGl2ZUtleQkBAAAADGtleU5hdGl2ZU5GVAAAAAEFAAAAB2Fzc2V0SWQEAAAABGRhdGEJAQAAAAxnZXRPck1pbnRORlQAAAABBQAAAAdhc3NldElkBAAAAAVuZnRJZAgFAAAABGRhdGEAAAACXzEEAAAACG1pbnREYXRhCAUAAAAEZGF0YQAAAAJfMgQAAAAIb3RoZXJLZXkJAQAAAAtrZXlPdGhlck5GVAAAAAEFAAAABW5mdElkBAAAABRuYXRpdmVEZXN0aW5hdGlvbktleQkBAAAAEWtleURlc3RpbmF0aW9uTkZUAAAAAQUAAAAFbmZ0SWQEAAAAEW5hdGl2ZVN0YXRlS2V5TkZUCQEAAAALa2V5U3RhdGVORlQAAAABBQAAAAVuZnRJZAMJAAAAAAAAAgUAAAAEdGhpcwgFAAAAAWkAAAAGY2FsbGVyCQAETgAAAAIFAAAACG1pbnREYXRhCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACG90aGVyS2V5BQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACW5hdGl2ZUtleQUAAAAFbmZ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAUbmF0aXZlRGVzdGluYXRpb25LZXkFAAAAC2Rlc3RpbmF0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEW5hdGl2ZVN0YXRlS2V5TkZUAgAAAAlDT01QTEVURUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANb3RoZXJTdGF0ZUtleQIAAAAJQ09NUExFVEVECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACXR4SWRTdGF0ZQIAAAAJQ09NUExFVEVECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADnJlY2VpdmVORlRBZGR5AAAAAAAAAAABCQACWQAAAAEFAAAABW5mdElkBQAAAANuaWwJAAROAAAAAgUAAAAIbWludERhdGEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAIb3RoZXJLZXkFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJbmF0aXZlS2V5BQAAAAVuZnRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABRuYXRpdmVEZXN0aW5hdGlvbktleQUAAAALZGVzdGluYXRpb24JAARMAAAAAgkBAAAA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", "height": 3199451, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8aWiw4gdvQg1duZnrjjC4Pog3qegf1mEBEMHgP4pWyHh Next: none Diff:
OldNewDifferences
4646 let issueNFT = Issue(name, description, 1, 0, false)
4747 let idNFT = calculateAssetId(issueNFT)
4848 $Tuple2(assetIdToString(idNFT), [issueNFT])
49+ }
50+ }
51+
52+
53+func validatePayment (payment) = {
54+ let pmt = value(payment)
55+ if (!(isDefined(pmt.assetId)))
56+ then throw("It needs to be an NFT")
57+ else {
58+ let assetDetails = value(assetInfo(value(pmt.assetId)))
59+ if (if (if ((assetDetails.quantity != 1))
60+ then true
61+ else (assetDetails.decimals != 0))
62+ then true
63+ else (assetDetails.reissuable != false))
64+ then throw("There was no NFT attached")
65+ else if ((pmt.amount != 1))
66+ then throw("You didnt attached an NFT")
67+ else assetIdToString(pmt.assetId)
4968 }
5069 }
5170
99118
100119 @Callable(i)
101120 func sendToOther (destination) = {
102- let pmt = value(i.payments[0])
103- if (!(isDefined(pmt.assetId)))
104- then throw("It needs to be an NFT")
105- else {
106- let stateKey = keyStateNFT(assetIdToString(pmt.assetId))
107- let txId = toBase58String(i.transactionId)
108- let txIdState = keyStateTxId(txId)
121+ let assetId = validatePayment(i.payments[0])
122+ let stateKey = keyStateNFT(assetId)
123+ let txId = toBase58String(i.transactionId)
124+ let txIdState = keyStateTxId(txId)
109125 [StringEntry(stateKey, "SEND-TO-OTHER"), StringEntry(txIdState, "SEND-TO-OTHER")]
110- }
111126 }
112127
113128
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func keyStateNFT (assetId) = (assetId + "_state")
55
66
77 func keyStateTxId (txId) = (txId + "_state")
88
99
1010 func keyAssetTxId (txId) = (txId + "_asset")
1111
1212
1313 func keyDestinationNFT (assetId) = (assetId + "_destination")
1414
1515
1616 func keyDescriptionNFT (assetId) = (assetId + "_description")
1717
1818
1919 func keyNameNFT (assetId) = (assetId + "_name")
2020
2121
2222 func keyIssueNFT (assetId) = (assetId + "_issuer")
2323
2424
2525 func keyOtherNFT (assetId) = (assetId + "_idOther")
2626
2727
2828 func keyNativeNFT (assetId) = (assetId + "_idNative")
2929
3030
3131 func getDataByKey (stateKey) = valueOrErrorMessage(getString(this, stateKey), ("Can't find key " + stateKey))
3232
3333
3434 func assetIdToString (assetId) = toBase58String(value(assetId))
3535
3636
3737 func getOrMintNFT (assetId) = {
3838 let nativeKey = keyNativeNFT(assetId)
3939 let descKey = keyDescriptionNFT(assetId)
4040 let nameKey = keyNameNFT(assetId)
4141 let description = getDataByKey(descKey)
4242 let name = getDataByKey(nameKey)
4343 if (isDefined(getString(this, nativeKey)))
4444 then $Tuple2(getStringValue(this, nativeKey), nil)
4545 else {
4646 let issueNFT = Issue(name, description, 1, 0, false)
4747 let idNFT = calculateAssetId(issueNFT)
4848 $Tuple2(assetIdToString(idNFT), [issueNFT])
49+ }
50+ }
51+
52+
53+func validatePayment (payment) = {
54+ let pmt = value(payment)
55+ if (!(isDefined(pmt.assetId)))
56+ then throw("It needs to be an NFT")
57+ else {
58+ let assetDetails = value(assetInfo(value(pmt.assetId)))
59+ if (if (if ((assetDetails.quantity != 1))
60+ then true
61+ else (assetDetails.decimals != 0))
62+ then true
63+ else (assetDetails.reissuable != false))
64+ then throw("There was no NFT attached")
65+ else if ((pmt.amount != 1))
66+ then throw("You didnt attached an NFT")
67+ else assetIdToString(pmt.assetId)
4968 }
5069 }
5170
5271
5372 @Callable(i)
5473 func storeDataSendToNative (txId,destination,description,name,assetId,issuer) = if ((i.caller == this))
5574 then {
5675 let stateKey = keyStateNFT(assetId)
5776 let stateKeyTx = keyStateTxId(txId)
5877 let state = getString(this, stateKeyTx)
5978 let destinationKey = keyDestinationNFT(assetId)
6079 let descKey = keyDescriptionNFT(assetId)
6180 let nameKey = keyNameNFT(assetId)
6281 let issuerKey = keyIssueNFT(assetId)
6382 let assetTxId = keyAssetTxId(txId)
6483 if (isDefined(state))
6584 then throw(("Don't you dare to temper with data! " + getStringValue(this, stateKey)))
6685 else [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer), StringEntry(assetTxId, assetId)]
6786 }
6887 else throw("Dirty hacker")
6988
7089
7190
7291 @Callable(i)
7392 func releaseOnNative (txId) = {
7493 let assetTxIdKey = keyAssetTxId(txId)
7594 let txIdState = keyStateTxId(txId)
7695 let assetId = getDataByKey(assetTxIdKey)
7796 let destinationKey = keyDestinationNFT(assetId)
7897 let otherStateKey = keyStateNFT(assetId)
7998 let state = getDataByKey(txIdState)
8099 if ((state == "LOGGED"))
81100 then {
82101 let destination = getDataByKey(destinationKey)
83102 let receiveNFTAddy = Address(fromBase58String(destination))
84103 let nativeKey = keyNativeNFT(assetId)
85104 let data = getOrMintNFT(assetId)
86105 let nftId = data._1
87106 let mintData = data._2
88107 let otherKey = keyOtherNFT(nftId)
89108 let nativeDestinationKey = keyDestinationNFT(nftId)
90109 let nativeStateKeyNFT = keyStateNFT(nftId)
91110 if ((this == i.caller))
92111 then (mintData ++ [StringEntry(otherKey, assetId), StringEntry(nativeKey, nftId), StringEntry(nativeDestinationKey, destination), StringEntry(nativeStateKeyNFT, "COMPLETED"), StringEntry(otherStateKey, "COMPLETED"), StringEntry(txIdState, "COMPLETED"), ScriptTransfer(receiveNFTAddy, 1, fromBase58String(nftId))])
93112 else (mintData ++ [StringEntry(otherKey, assetId), StringEntry(nativeKey, nftId), StringEntry(nativeDestinationKey, destination), StringEntry(nativeStateKeyNFT, "COMPLETED"), StringEntry(otherStateKey, "COMPLETED"), StringEntry(txIdState, "COMPLETED"), ScriptTransfer(receiveNFTAddy, 1, fromBase58String(nftId)), ScriptTransfer(i.caller, 20000000, unit)])
94113 }
95114 else throw("Transaction is already processed!")
96115 }
97116
98117
99118
100119 @Callable(i)
101120 func sendToOther (destination) = {
102- let pmt = value(i.payments[0])
103- if (!(isDefined(pmt.assetId)))
104- then throw("It needs to be an NFT")
105- else {
106- let stateKey = keyStateNFT(assetIdToString(pmt.assetId))
107- let txId = toBase58String(i.transactionId)
108- let txIdState = keyStateTxId(txId)
121+ let assetId = validatePayment(i.payments[0])
122+ let stateKey = keyStateNFT(assetId)
123+ let txId = toBase58String(i.transactionId)
124+ let txIdState = keyStateTxId(txId)
109125 [StringEntry(stateKey, "SEND-TO-OTHER"), StringEntry(txIdState, "SEND-TO-OTHER")]
110- }
111126 }
112127
113128
114129
115130 @Callable(i)
116131 func StoreDataFinishSendToOther (txId,mintId,nftId,nftIdOther) = if ((i.caller == this))
117132 then {
118133 let txIdState = keyStateTxId(txId)
119134 let stateKey = (nftId + "_state")
120135 let state = getString(this, txIdState)
121136 if (isDefined(state))
122137 then {
123138 let tnKey = keyOtherNFT(nftId)
124139 let linkKey = keyNativeNFT(nftIdOther)
125140 let mintIdKey = (nftId + "_mintId")
126141 [StringEntry(stateKey, "COMPLETED"), StringEntry(txIdState, "COMPLETED"), StringEntry(tnKey, nftIdOther), StringEntry(linkKey, nftId), StringEntry(mintIdKey, mintId)]
127142 }
128143 else throw("We can't update a non-existing state!")
129144 }
130145 else throw("Dirty hacker!")
131146
132147

github/deemru/w8io/3ef1775 
42.62 ms