tx · 6YvR8NKdSA75tphwqKyy5tLQUj9ZtE2wy6fFQMjuWZK2

3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS:  -0.01000000 Waves

2021.11.24 16:43 [2870228] smart account 3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS > SELF 0.00000000 Waves

{ "type": 13, "id": "6YvR8NKdSA75tphwqKyy5tLQUj9ZtE2wy6fFQMjuWZK2", "fee": 1000000, "feeAssetId": null, "timestamp": 1637761422969, "version": 2, "chainId": 87, "sender": "3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS", "senderPublicKey": "AQM5JR46VkucVkx5RVXDtku22Yf6j1v16ekWmdXYyXMT", "proofs": [ "5P6pGiKY53igAix2bsXcSJt3fcLisj8zVVNUEum5Svnj1a8Mcxqcrw75o5BXAeeur64mAFdpM4Vq2gUMrCvjCwCt" ], "script": "base64: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AAAAAgUAAAAHbmFtZUtleQUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhzdGF0ZUtleQIAAAAGTE9HR0VECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACnN0YXRlS2V5VHgCAAAABkxPR0dFRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlpc3N1ZXJLZXkFAAAABmlzc3VlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlhc3NldFR4SWQFAAAAB2Fzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAAAxEaXJ0eSBoYWNrZXIAAAABaQEAAAAPcmVsZWFzZU9uTmF0aXZlAAAAAQAAAAR0eElkBAAAAAxhc3NldFR4SWRLZXkJAQAAAAxrZXlBc3NldFR4SWQAAAABBQAAAAR0eElkBAAAAAl0eElkU3RhdGUJAQAAAAxrZXlTdGF0ZVR4SWQAAAABBQAAAAR0eElkBAAAAAdhc3NldElkCQEAAAAMZ2V0RGF0YUJ5S2V5AAAAAQUAAAAMYXNzZXRUeElkS2V5BAAAAA5kZXN0aW5hdGlvbktleQkBAAAACmtleURlc3RORlQAAAABBQAAAAdhc3NldElkBAAAAA1vdGhlclN0YXRlS2V5CQEAAAALa2V5U3RhdGVORlQAAAABBQAAAAdhc3NldElkBAAAAAVzdGF0ZQkBAAAADGdldERhdGFCeUtleQAAAAEFAAAACXR4SWRTdGF0ZQMJAAAAAAAAAgUAAAAFc3RhdGUCAAAABkxPR0dFRAQAAAALZGVzdGluYXRpb24JAQAAAAxnZXREYXRhQnlLZXkAAAABBQAAAA5kZXN0aW5hdGlvbktleQQAAAAOcmVjZWl2ZU5GVEFkZHkJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAtkZXN0aW5hdGlvbgQAAAAJbmF0aXZlS2V5CQEAAAAMa2V5TmF0aXZlTkZUAAAAAQUAAAAHYXNzZXRJZAQAAAAEZGF0YQkBAAAADGdldE9yTWludE5GVAAAAAEFAAAAB2Fzc2V0SWQEAAAABW5mdElkCAUAAAAEZGF0YQAAAAJfMQQAAAAIbWludERhdGEIBQAAAARkYXRhAAAAAl8yBAAAAAhvdGhlcktleQkBAAAAC2tleU90aGVyTkZUAAAAAQUAAAAFbmZ0SWQEAAAAFG5hdGl2ZURlc3RpbmF0aW9uS2V5CQEAAAAKa2V5RGVzdE5GVAAAAAEFAAAABW5mdElkBAAAABFuYXRpdmVTdGF0ZUtleU5GVAkBAAAAC2tleVN0YXRlTkZUAAAAAQUAAAAFbmZ0SWQDCQAAAAAAAAIFAAAABHRoaXMIBQAAAAFpAAAABmNhbGxlcgkABE4AAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACG90aGVyS2V5BQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACW5hdGl2ZUtleQUAAAAFbmZ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAUbmF0aXZlRGVzdGluYXRpb25LZXkFAAAAC2Rlc3RpbmF0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEW5hdGl2ZVN0YXRlS2V5TkZUAgAAAAlDT01QTEVURUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANb3RoZXJTdGF0ZUtleQIAAAAJQ09NUExFVEVECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACXR4SWRTdGF0ZQIAAAAJQ09NUExFVEVECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADnJlY2VpdmVORlRBZGR5AAAAAAAAAAABCQACWQAAAAEFAAAABW5mdElkBQAAAANuaWwFAAAACG1pbnREYXRhCQAETgAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAIb3RoZXJLZXkFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJbmF0aXZlS2V5BQAAAAVuZnRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABRuYXRpdmVEZXN0aW5hdGlvbktleQUAAAALZGVzdGluYXRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARbmF0aXZlU3RhdGVLZXlORlQCAAAACUNPTVBMRVRF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", "height": 2870228, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Bh5xwdo9GDqDN6smLNksuL2gv2oeDTwgAw7DwPTDpbTo Next: 9vWgmnaVrAGxq63ScUbnKcXooiEnmfsQaxWR9MYpFATS Diff:
OldNewDifferences
2828 func keyNativeNFT (assetId) = (assetId + "_idNative")
2929
3030
31-func getDataByKey (stateKey) = valueOrErrorMessage(getString(this, stateKey), "The assetId seems invalid!")
31+func getDataByKey (stateKey) = valueOrErrorMessage(getString(this, stateKey), ("Can't find key " + stateKey))
3232
3333
3434 func assetIdToString (assetId) = toBase58String(value(assetId))
4848 else {
4949 let issueNFT = Issue(name, description, 1, 0, false)
5050 let idNFT = calculateAssetId(issueNFT)
51- $Tuple2(toBase58String(idNFT), [issueNFT])
51+ $Tuple2(assetIdToString(idNFT), [issueNFT])
5252 }
5353 }
5454
6363 let descKey = keyDescNFT(assetId)
6464 let nameKey = keyNameNFT(assetId)
6565 let issuerKey = keyIssueNFT(assetId)
66+ let assetTxId = keyAssetTxId(txId)
6667 if (isDefined(state))
6768 then if ((getStringValue(this, stateKeyTx) == "COMPLETED"))
68- then [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer)]
69+ then [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer), StringEntry(assetTxId, assetId)]
6970 else throw(("Don't you dare to temper with data! " + getStringValue(this, stateKey)))
70- else [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer)]
71+ else [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer), StringEntry(assetTxId, assetId)]
7172 }
7273 else throw("Dirty hacker")
7374
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
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 keyDestNFT (assetId) = (assetId + "_dest")
1414
1515
1616 func keyDescNFT (assetId) = (assetId + "_descr")
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
31-func getDataByKey (stateKey) = valueOrErrorMessage(getString(this, stateKey), "The assetId seems invalid!")
31+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 keyDestinationNFT (assetId,height) = ((assetId + "_") + toString(height))
3838
3939
4040 func getOrMintNFT (assetId) = {
4141 let nativeKey = keyNativeNFT(assetId)
4242 let descKey = keyDescNFT(assetId)
4343 let nameKey = keyNameNFT(assetId)
4444 let description = getDataByKey(descKey)
4545 let name = getDataByKey(nameKey)
4646 if (isDefined(getString(this, nativeKey)))
4747 then $Tuple2(getStringValue(this, nativeKey), nil)
4848 else {
4949 let issueNFT = Issue(name, description, 1, 0, false)
5050 let idNFT = calculateAssetId(issueNFT)
51- $Tuple2(toBase58String(idNFT), [issueNFT])
51+ $Tuple2(assetIdToString(idNFT), [issueNFT])
5252 }
5353 }
5454
5555
5656 @Callable(i)
5757 func storeDataSendToNative (txId,destination,description,name,assetId,issuer) = if ((i.caller == this))
5858 then {
5959 let stateKey = keyStateNFT(assetId)
6060 let stateKeyTx = keyStateTxId(txId)
6161 let state = getString(this, stateKey)
6262 let destinationKey = keyDestNFT(assetId)
6363 let descKey = keyDescNFT(assetId)
6464 let nameKey = keyNameNFT(assetId)
6565 let issuerKey = keyIssueNFT(assetId)
66+ let assetTxId = keyAssetTxId(txId)
6667 if (isDefined(state))
6768 then if ((getStringValue(this, stateKeyTx) == "COMPLETED"))
68- then [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer)]
69+ then [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer), StringEntry(assetTxId, assetId)]
6970 else throw(("Don't you dare to temper with data! " + getStringValue(this, stateKey)))
70- else [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer)]
71+ else [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer), StringEntry(assetTxId, assetId)]
7172 }
7273 else throw("Dirty hacker")
7374
7475
7576
7677 @Callable(i)
7778 func releaseOnNative (txId) = {
7879 let assetTxIdKey = keyAssetTxId(txId)
7980 let txIdState = keyStateTxId(txId)
8081 let assetId = getDataByKey(assetTxIdKey)
8182 let destinationKey = keyDestNFT(assetId)
8283 let otherStateKey = keyStateNFT(assetId)
8384 let state = getDataByKey(txIdState)
8485 if ((state == "LOGGED"))
8586 then {
8687 let destination = getDataByKey(destinationKey)
8788 let receiveNFTAddy = Address(fromBase58String(destination))
8889 let nativeKey = keyNativeNFT(assetId)
8990 let data = getOrMintNFT(assetId)
9091 let nftId = data._1
9192 let mintData = data._2
9293 let otherKey = keyOtherNFT(nftId)
9394 let nativeDestinationKey = keyDestNFT(nftId)
9495 let nativeStateKeyNFT = keyStateNFT(nftId)
9596 if ((this == i.caller))
9697 then ([StringEntry(otherKey, assetId), StringEntry(nativeKey, nftId), StringEntry(nativeDestinationKey, destination), StringEntry(nativeStateKeyNFT, "COMPLETED"), StringEntry(otherStateKey, "COMPLETED"), StringEntry(txIdState, "COMPLETED"), ScriptTransfer(receiveNFTAddy, 1, fromBase58String(nftId))] ++ mintData)
9798 else ([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)] ++ mintData)
9899 }
99100 else throw("Transaction is already processed!")
100101 }
101102
102103
103104
104105 @Callable(i)
105106 func sendToOther (destination) = {
106107 let pmt = value(i.payments[0])
107108 if (!(isDefined(pmt.assetId)))
108109 then throw("It needs to be an NFT")
109110 else {
110111 let stateKey = keyStateNFT(assetIdToString(pmt.assetId))
111112 let destinationKey = keyDestinationNFT(assetIdToString(pmt.assetId), height)
112113 [StringEntry(stateKey, "SEND-TO-OTHER"), StringEntry(destinationKey, destination)]
113114 }
114115 }
115116
116117
117118
118119 @Callable(i)
119120 func StoreDataFinishSendToOther (txId,mintId,nftId,nftIdOther) = if ((i.caller == this))
120121 then {
121122 let txIdState = keyStateTxId(txId)
122123 let stateKey = (nftId + "_state")
123124 let state = getString(this, txIdState)
124125 if (isDefined(state))
125126 then {
126127 let tnKey = keyOtherNFT(nftId)
127128 let linkKey = keyNativeNFT(nftIdOther)
128129 let mintIdKey = (nftId + "_mintId")
129130 [StringEntry(stateKey, "COMPLETED"), StringEntry(txIdState, "COMPLETED"), StringEntry(tnKey, nftIdOther), StringEntry(linkKey, nftId), StringEntry(mintIdKey, mintId)]
130131 }
131132 else throw("We can't update a non-existing state!")
132133 }
133134 else throw("Dirty hacker!")
134135
135136

github/deemru/w8io/3ef1775 
36.95 ms