tx · JBh9X6BFyQNzCqyM7nDkXR89NnGaTMAXWAnNthFzfq2o

3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS:  -0.01000000 Waves

2021.11.24 17:33 [2870279] smart account 3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS > SELF 0.00000000 Waves

{ "type": 13, "id": "JBh9X6BFyQNzCqyM7nDkXR89NnGaTMAXWAnNthFzfq2o", "fee": 1000000, "feeAssetId": null, "timestamp": 1637764414754, "version": 2, "chainId": 87, "sender": "3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS", "senderPublicKey": "AQM5JR46VkucVkx5RVXDtku22Yf6j1v16ekWmdXYyXMT", "proofs": [ "3GsRqMHr9NFT7NtRqjWdhv4WgqvAtskQdmpMmxgc7j7apsLcv55HvtxxYMM7hHXdbWT4Mqemyk9wGXUew4RqxjN7" ], "script": "base64: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AAduYW1lS2V5CQEAAAAKa2V5TmFtZU5GVAAAAAEFAAAAB2Fzc2V0SWQEAAAACWlzc3VlcktleQkBAAAAC2tleUlzc3VlTkZUAAAAAQUAAAAHYXNzZXRJZAQAAAAJYXNzZXRUeElkCQEAAAAMa2V5QXNzZXRUeElkAAAAAQUAAAAEdHhJZAMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAVzdGF0ZQkAAAIAAAABCQABLAAAAAICAAAAJERvbid0IHlvdSBkYXJlIHRvIHRlbXBlciB3aXRoIGRhdGEhIAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAAIc3RhdGVLZXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAOZGVzdGluYXRpb25LZXkFAAAAC2Rlc3RpbmF0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAB2Rlc2NLZXkFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAB25hbWVLZXkFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAIc3RhdGVLZXkCAAAABkxPR0dFRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAApzdGF0ZUtleVR4AgAAAAZMT0dHRUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJaXNzdWVyS2V5BQAAAAZpc3N1ZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJYXNzZXRUeElkBQAAAAdhc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAMRGlydHkgaGFja2VyAAAAAWkBAAAAD3JlbGVhc2VPbk5hdGl2ZQAAAAEAAAAEdHhJZAQAAAAMYXNzZXRUeElkS2V5CQEAAAAMa2V5QXNzZXRUeElkAAAAAQUAAAAEdHhJZAQAAAAJdHhJZFN0YXRlCQEAAAAMa2V5U3RhdGVUeElkAAAAAQUAAAAEdHhJZAQAAAAHYXNzZXRJZAkBAAAADGdldERhdGFCeUtleQAAAAEFAAAADGFzc2V0VHhJZEtleQQAAAAOZGVzdGluYXRpb25LZXkJAQAAAAprZXlEZXN0TkZUAAAAAQUAAAAHYXNzZXRJZAQAAAANb3RoZXJTdGF0ZUtleQkBAAAAC2tleVN0YXRlTkZUAAAAAQUAAAAHYXNzZXRJZAQAAAAFc3RhdGUJAQAAAAxnZXREYXRhQnlLZXkAAAABBQAAAAl0eElkU3RhdGUDCQAAAAAAAAIFAAAABXN0YXRlAgAAAAZMT0dHRUQEAAAAC2Rlc3RpbmF0aW9uCQEAAAAMZ2V0RGF0YUJ5S2V5AAAAAQUAAAAOZGVzdGluYXRpb25LZXkEAAAADnJlY2VpdmVORlRBZGR5CQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALZGVzdGluYXRpb24EAAAACW5hdGl2ZUtleQkBAAAADGtleU5hdGl2ZU5GVAAAAAEFAAAAB2Fzc2V0SWQEAAAABGRhdGEJAQAAAAxnZXRPck1pbnRORlQAAAABBQAAAAdhc3NldElkBAAAAAVuZnRJZAgFAAAABGRhdGEAAAACXzEEAAAACG1pbnREYXRhCAUAAAAEZGF0YQAAAAJfMgQAAAAIb3RoZXJLZXkJAQAAAAtrZXlPdGhlck5GVAAAAAEFAAAABW5mdElkBAAAABRuYXRpdmVEZXN0aW5hdGlvbktleQkBAAAACmtleURlc3RORlQAAAABBQAAAAVuZnRJZAQAAAARbmF0aXZlU3RhdGVLZXlORlQJAQAAAAtrZXlTdGF0ZU5GVAAAAAEFAAAABW5mdElkAwkAAAAAAAACBQAAAAR0aGlzCAUAAAABaQAAAAZjYWxsZXIJAAROAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhvdGhlcktleQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAluYXRpdmVLZXkFAAAABW5mdElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAFG5hdGl2ZURlc3RpbmF0aW9uS2V5BQAAAAtkZXN0aW5hdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFuYXRpdmVTdGF0ZUtleU5GVAIAAAAJQ09NUExFVEVECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADW90aGVyU3RhdGVLZXkCAAAACUNPTVBMRVRFRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAl0eElkU3RhdGUCAAAACUNPTVBMRVRFRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA5yZWNlaXZlTkZUQWRkeQAAAAAAAAAAAQkAAlkAAAABBQAAAAVuZnRJZAUAAAADbmlsBQAAAAhtaW50RGF0YQkABE4AAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACG90aGVyS2V5BQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACW5hdGl2ZUtleQUAAAAFbmZ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAUbmF0aXZlRGVzdGluYXRpb25LZXkFAAAAC2Rlc3RpbmF0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEW5hdGl2ZVN0YXRlS2V5TkZUAgAAAAlDT01QTEVURUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANb3RoZXJTdGF0ZUtleQIAAAAJQ09NUExFVEVECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACXR4SWRTdGF0ZQIAAAAJQ09NUExFVEVECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADnJlY2VpdmVORlRBZGR5AAAAAAAAAAABCQACWQAAAAEFAAAABW5mdElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAATEtAAUAAAAEdW5pdAUAAAADbmlsBQAAAAhtaW50RGF0YQkAAAIAAAABAgAAACFUcmFuc2FjdGlvbiBpcyBhbHJlYWR5IHByb2Nlc3NlZCEAAAABaQEAAAALc2VuZFRvT3RoZXIAAAABAAAAC2Rlc3RpbmF0aW9uBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAVSXQgbmVlZHMgdG8gYmUgYW4gTkZUBAAAAAhzdGF0ZUtleQkBAAAAC2tleVN0YXRlTkZUAAAAAQkBAAAAD2Fzc2V0SWRUb1N0cmluZwAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAOZGVzdGluYXRpb25LZXkJAQAAABFrZXlEZXN0aW5hdGlvbk5GVAAAAAIJAQAAAA9hc3NldElkVG9TdHJpbmcAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQFAAAABmhlaWdodAQAAAAEdHhJZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAl0eElkU3RhdGUJAQAAAAxrZXlTdGF0ZVR4SWQAAAABBQAAAAR0eElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACHN0YXRlS2V5AgAAAA1TRU5ELVRPLU9USEVSCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACXR4SWRTdGF0ZQIAAAANU0VORC1UTy1PVEhFUgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA5kZXN0aW5hdGlvbktleQUAAAALZGVzdGluYXRpb24FAAAAA25pbAAAAAFpAQAAABpTdG9yZURhdGFGaW5pc2hTZW5kVG9PdGhlcgAAAAQAAAAEdHhJZAAAAAZtaW50SWQAAAAFbmZ0SWQAAAAKbmZ0SWRPdGhlcgMJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBAAAAAl0eElkU3RhdGUJAQAAAAxrZXlTdGF0ZVR4SWQAAAABBQAAAAR0eElkBAAAAAhzdGF0ZUtleQkAASwAAAACBQAAAAVuZnRJZAIAAAAGX3N0YXRlBAAAAAVzdGF0ZQkABB0AAAACBQAAAAR0aGlzBQAAAAl0eElkU3RhdGUDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAFc3RhdGUEAAAABXRuS2V5CQEAAAALa2V5T3RoZXJORlQAAAABBQAAAAVuZnRJZAQAAAAHbGlua0tleQkBAAAADGtleU5hdGl2ZU5GVAAAAAEFAAAACm5mdElkT3RoZXIEAAAACW1pbnRJZEtleQkAASwAAAACBQAAAAVuZnRJZAIAAAAHX21pbnRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhzdGF0ZUtleQIAAAAJQ09NUExFVEVECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACXR4SWRTdGF0ZQIAAAAJQ09NUExFVEVECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAABXRuS2V5BQAAAApuZnRJZE90aGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAB2xpbmtLZXkFAAAABW5mdElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACW1pbnRJZEtleQUAAAAGbWludElkBQAAAANuaWwJAAACAAAAAQkAASwAAAACAgAAACZXZSBjYW4ndCB1cGRhdGUgYSBub24tZXhpc3Rpbmcgc3RhdGUhIAUAAAAJdHhJZFN0YXRlCQAAAgAAAAECAAAADURpcnR5IGhhY2tlciEAAAAAf+W/xw==", "height": 2870279, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3FGanfXZtV21LzYUS3sGi63xoqZUE8Kdokp7iE45Wt9y Next: 6pysLj5dM9e6nwnu1fff3ZtY6BfikFkJ4eMNpc5U4UnG Diff:
OldNewDifferences
4545 let name = getDataByKey(nameKey)
4646 if (isDefined(getString(this, nativeKey)))
4747 then $Tuple2(getStringValue(this, nativeKey), nil)
48- else throw("error")
48+ else {
49+ let issueNFT = Issue(name, description, 1, 0, false)
50+ let idNFT = calculateAssetId(issueNFT)
51+ $Tuple2(toBase58String(idNFT), [issueNFT])
52+ }
4953 }
5054
5155
5458 then {
5559 let stateKey = keyStateNFT(assetId)
5660 let stateKeyTx = keyStateTxId(txId)
57- let state = getString(this, stateKey)
61+ let state = getString(this, stateKeyTx)
5862 let destinationKey = keyDestNFT(assetId)
5963 let descKey = keyDescNFT(assetId)
6064 let nameKey = keyNameNFT(assetId)
6165 let issuerKey = keyIssueNFT(assetId)
6266 let assetTxId = keyAssetTxId(txId)
6367 if (isDefined(state))
64- then if ((getStringValue(this, stateKeyTx) == "COMPLETED"))
65- then [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer), StringEntry(assetTxId, assetId)]
66- else throw(("Don't you dare to temper with data! " + getStringValue(this, stateKey)))
68+ then throw(("Don't you dare to temper with data! " + getStringValue(this, stateKey)))
6769 else [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer), StringEntry(assetTxId, assetId)]
6870 }
6971 else throw("Dirty hacker")
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
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 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)
48- else throw("error")
48+ else {
49+ let issueNFT = Issue(name, description, 1, 0, false)
50+ let idNFT = calculateAssetId(issueNFT)
51+ $Tuple2(toBase58String(idNFT), [issueNFT])
52+ }
4953 }
5054
5155
5256 @Callable(i)
5357 func storeDataSendToNative (txId,destination,description,name,assetId,issuer) = if ((i.caller == this))
5458 then {
5559 let stateKey = keyStateNFT(assetId)
5660 let stateKeyTx = keyStateTxId(txId)
57- let state = getString(this, stateKey)
61+ let state = getString(this, stateKeyTx)
5862 let destinationKey = keyDestNFT(assetId)
5963 let descKey = keyDescNFT(assetId)
6064 let nameKey = keyNameNFT(assetId)
6165 let issuerKey = keyIssueNFT(assetId)
6266 let assetTxId = keyAssetTxId(txId)
6367 if (isDefined(state))
64- then if ((getStringValue(this, stateKeyTx) == "COMPLETED"))
65- then [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer), StringEntry(assetTxId, assetId)]
66- else throw(("Don't you dare to temper with data! " + getStringValue(this, stateKey)))
68+ then throw(("Don't you dare to temper with data! " + getStringValue(this, stateKey)))
6769 else [StringEntry(destinationKey, destination), StringEntry(descKey, description), StringEntry(nameKey, name), StringEntry(stateKey, "LOGGED"), StringEntry(stateKeyTx, "LOGGED"), StringEntry(issuerKey, issuer), StringEntry(assetTxId, assetId)]
6870 }
6971 else throw("Dirty hacker")
7072
7173
7274
7375 @Callable(i)
7476 func releaseOnNative (txId) = {
7577 let assetTxIdKey = keyAssetTxId(txId)
7678 let txIdState = keyStateTxId(txId)
7779 let assetId = getDataByKey(assetTxIdKey)
7880 let destinationKey = keyDestNFT(assetId)
7981 let otherStateKey = keyStateNFT(assetId)
8082 let state = getDataByKey(txIdState)
8183 if ((state == "LOGGED"))
8284 then {
8385 let destination = getDataByKey(destinationKey)
8486 let receiveNFTAddy = Address(fromBase58String(destination))
8587 let nativeKey = keyNativeNFT(assetId)
8688 let data = getOrMintNFT(assetId)
8789 let nftId = data._1
8890 let mintData = data._2
8991 let otherKey = keyOtherNFT(nftId)
9092 let nativeDestinationKey = keyDestNFT(nftId)
9193 let nativeStateKeyNFT = keyStateNFT(nftId)
9294 if ((this == i.caller))
9395 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)
9496 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)
9597 }
9698 else throw("Transaction is already processed!")
9799 }
98100
99101
100102
101103 @Callable(i)
102104 func sendToOther (destination) = {
103105 let pmt = value(i.payments[0])
104106 if (!(isDefined(pmt.assetId)))
105107 then throw("It needs to be an NFT")
106108 else {
107109 let stateKey = keyStateNFT(assetIdToString(pmt.assetId))
108110 let destinationKey = keyDestinationNFT(assetIdToString(pmt.assetId), height)
109111 let txId = toBase58String(i.transactionId)
110112 let txIdState = keyStateTxId(txId)
111113 [StringEntry(stateKey, "SEND-TO-OTHER"), StringEntry(txIdState, "SEND-TO-OTHER"), StringEntry(destinationKey, destination)]
112114 }
113115 }
114116
115117
116118
117119 @Callable(i)
118120 func StoreDataFinishSendToOther (txId,mintId,nftId,nftIdOther) = if ((i.caller == this))
119121 then {
120122 let txIdState = keyStateTxId(txId)
121123 let stateKey = (nftId + "_state")
122124 let state = getString(this, txIdState)
123125 if (isDefined(state))
124126 then {
125127 let tnKey = keyOtherNFT(nftId)
126128 let linkKey = keyNativeNFT(nftIdOther)
127129 let mintIdKey = (nftId + "_mintId")
128130 [StringEntry(stateKey, "COMPLETED"), StringEntry(txIdState, "COMPLETED"), StringEntry(tnKey, nftIdOther), StringEntry(linkKey, nftId), StringEntry(mintIdKey, mintId)]
129131 }
130132 else throw(("We can't update a non-existing state! " + txIdState))
131133 }
132134 else throw("Dirty hacker!")
133135
134136

github/deemru/w8io/3ef1775 
42.14 ms