tx · 3w2NjmvMnX57zRWwACBxQQ17qa1YLNx9SrtDKGzwCDU2

3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS:  -0.01000000 Waves

2021.10.18 20:19 [2816986] smart account 3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS > SELF 0.00000000 Waves

{ "type": 13, "id": "3w2NjmvMnX57zRWwACBxQQ17qa1YLNx9SrtDKGzwCDU2", "fee": 1000000, "feeAssetId": null, "timestamp": 1634577579002, "version": 2, "chainId": 87, "sender": "3P2KBLgyKAWUA8zCefafHK3HxLQB7ammDfS", "senderPublicKey": "AQM5JR46VkucVkx5RVXDtku22Yf6j1v16ekWmdXYyXMT", "proofs": [ "2DM5cnSoDmko3kKJkd9pMQevL4aF7mhLVUps61Wr7jkVibpmvntSefAZuQvEnP8HQpK44ZM9QZ4DfCeqkwKKox4N" ], "script": "base64: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dGUEAAAACGlkTmZ0a2V5CQABLAAAAAIFAAAABHRuSWQCAAAACF9uZnRJZFROBAAAAAdzdGF0ZVdECQAEHQAAAAIFAAAABHRoaXMFAAAAC3dpdGhkcmF3S2V5AwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAB3N0YXRlV0QJAAACAAAAAQIAAAAsV2l0aGRyYXdhbCBhbHJlYWR5IGluaXRpYWxpemVkIG9yIGNvbXBsZXRlZCEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAOZGVzdGluYXRpb25LZXkFAAAAC2Rlc3RpbmF0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGlkTmZ0a2V5BQAAAAduZnRJZFROCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAC3dpdGhkcmF3S2V5AgAAAA5XRC1JTklUSUFMSVpFRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhzdGF0ZUtleQIAAAAOV0QtSU5JVElBTElaRUQFAAAAA25pbAkAAAIAAAABAgAAABpBc3NldCB3YXMgbmV2ZXIgZGVwb3NpdGVkIQkAAAIAAAABAgAAAAxEaXJ0eSBoYWNrZXIAAAABaQEAAAAOcmVsZWFzZU9uV2F2ZXMAAAABAAAABHRuSWQEAAAADmRlc3RpbmF0aW9uS2V5CQABLAAAAAIFAAAABHRuSWQCAAAABV9kZXN0BAAAAAhzdGF0ZUtleQkAASwAAAACBQAAAAR0bklkAgAAAAZfc3RhdGUEAAAACGlkTmZ0a2V5CQABLAAAAAIFAAAABHRuSWQCAAAACF9uZnRJZFROBAAAAAVzdGF0ZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAACHN0YXRlS2V5AgAAABdUaGUgdG5JZCBzZWVtcyBpbnZhbGlkIQMJAAAAAAAAAgUAAAAFc3RhdGUCAAAADldELUlOSVRJQUxJWkVEBAAAAAtkZXN0aW5hdGlvbgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAADmRlc3RpbmF0aW9uS2V5AgAAABdUaGUgdG5JZCBzZWVtcyBpbnZhbGlkIQQAAAAOcmVjZWl2ZU5GVEFkZHkJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAtkZXN0aW5hdGlvbgQAAAAHaWRORlRUTgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAACGlkTmZ0a2V5AgAAABpUaGUgbmZ0SWRUTiBzZWVtcyBpbnZhbGlkIQQAAAAHbGlua0tleQkAASwAAAACBQAAAAdpZE5GVFROAgAAAAhfaWRXYXZlcwQAAAAFaWRORlQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAdsaW5rS2V5AgAAAB9UaGUgbGlua2VkIE5GVCBjYW5ub3QgYmUgZm91bmQhBAAAAAtzdGF0ZU5GVEtleQkAASwAAAACBQAAAAVpZE5GVAIAAAAGX3N0YXRlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACHN0YXRlS2V5AgAAAAlDT01QTEVURUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALc3RhdGVORlRLZXkCAAAACFJFTEVBU0VECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADnJlY2VpdmVORlRBZGR5AAAAAAAAAAABCQABmwAAAAEFAAAABWlkTkZUBQAAAANuaWwJAAACAAAAAQIAAAAhVHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBwcm9jZXNzZWQhAAAAAEwY7DM=", "height": 2816986, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7Nio4KWvivXAhjjw9ZLPEnj3wVSZZmHBKtM8HR3axNpt Next: 4VDLBuYMaU6jXKqfYjJ2XnoRmXi5DfU3rsa4zG9M91yP Diff:
OldNewDifferences
1111 else {
1212 let stateKey = (toBase58String(value(pmt.assetId)) + "_state")
1313 let destinationKey = ((toBase58String(value(pmt.assetId)) + "_") + toString(height))
14-[StringEntry(stateKey, "DEPOSITED"), StringEntry(destinationKey, destination)]
14+ let typeKey = (toBase58String(value(pmt.assetId)) + "_type")
15+[StringEntry(stateKey, "DEPOSITED"), StringEntry(typeKey, "UNKNOWN"), StringEntry(destinationKey, destination)]
1516 }
1617 }
1718
1819
1920
2021 @Callable(i)
21-func changeStatus (status,depositId,mintId,nftId,nftIdTN) = if ((i.caller == this))
22+func finishDeposit (depositId,mintId,nftId,nftIdTN) = if ((i.caller == this))
2223 then {
2324 let stateKey = (nftId + "_state")
24- let tnKey = (nftId + "_idTN")
25- let depositIdKey = (nftId + "_depositId")
26- let mintIdKey = (nftId + "_mintId")
27-[StringEntry(stateKey, status), StringEntry(tnKey, nftIdTN), StringEntry(depositIdKey, depositId), StringEntry(mintIdKey, mintId)]
25+ let state = getString(this, stateKey)
26+ if (isDefined(state))
27+ then {
28+ let tnKey = (nftId + "_idTN")
29+ let linkKey = (nftIdTN + "_idWaves")
30+ let depositIdKey = (nftId + "_depositId")
31+ let mintIdKey = (nftId + "_mintId")
32+[StringEntry(stateKey, "MINTED"), StringEntry(tnKey, nftIdTN), StringEntry(linkKey, nftId), StringEntry(depositIdKey, depositId), StringEntry(mintIdKey, mintId)]
33+ }
34+ else throw("We can't update a non-existing state!")
2835 }
2936 else throw("Dirty hacker!")
37+
38+
39+
40+@Callable(i)
41+func storeData (nftIdTN,tnId,destination) = if ((i.caller == this))
42+ then {
43+ let linkKey = (nftIdTN + "_idWaves")
44+ let nftId = getStringValue(this, linkKey)
45+ let stateKey = (nftId + "_state")
46+ let state = getString(this, stateKey)
47+ if (isDefined(state))
48+ then {
49+ let destinationKey = (tnId + "_dest")
50+ let withdrawKey = (tnId + "_state")
51+ let idNftkey = (tnId + "_nftIdTN")
52+ let stateWD = getString(this, withdrawKey)
53+ if (isDefined(stateWD))
54+ then throw("Withdrawal already initialized or completed!")
55+ else [StringEntry(destinationKey, destination), StringEntry(idNftkey, nftIdTN), StringEntry(withdrawKey, "WD-INITIALIZED"), StringEntry(stateKey, "WD-INITIALIZED")]
56+ }
57+ else throw("Asset was never deposited!")
58+ }
59+ else throw("Dirty hacker")
60+
61+
62+
63+@Callable(i)
64+func releaseOnWaves (tnId) = {
65+ let destinationKey = (tnId + "_dest")
66+ let stateKey = (tnId + "_state")
67+ let idNftkey = (tnId + "_nftIdTN")
68+ let state = valueOrErrorMessage(getString(this, stateKey), "The tnId seems invalid!")
69+ if ((state == "WD-INITIALIZED"))
70+ then {
71+ let destination = valueOrErrorMessage(getString(this, destinationKey), "The tnId seems invalid!")
72+ let receiveNFTAddy = Address(fromBase58String(destination))
73+ let idNFTTN = valueOrErrorMessage(getString(this, idNftkey), "The nftIdTN seems invalid!")
74+ let linkKey = (idNFTTN + "_idWaves")
75+ let idNFT = valueOrErrorMessage(getString(this, linkKey), "The linked NFT cannot be found!")
76+ let stateNFTKey = (idNFT + "_state")
77+[StringEntry(stateKey, "COMPLETED"), StringEntry(stateNFTKey, "RELEASED"), ScriptTransfer(receiveNFTAddy, 1, toBytes(idNFT))]
78+ }
79+ else throw("Transaction is already processed!")
80+ }
3081
3182
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44
55
66 @Callable(i)
77 func deposit (destination) = {
88 let pmt = value(i.payments[0])
99 if (!(isDefined(pmt.assetId)))
1010 then throw("It needs to be an NFT")
1111 else {
1212 let stateKey = (toBase58String(value(pmt.assetId)) + "_state")
1313 let destinationKey = ((toBase58String(value(pmt.assetId)) + "_") + toString(height))
14-[StringEntry(stateKey, "DEPOSITED"), StringEntry(destinationKey, destination)]
14+ let typeKey = (toBase58String(value(pmt.assetId)) + "_type")
15+[StringEntry(stateKey, "DEPOSITED"), StringEntry(typeKey, "UNKNOWN"), StringEntry(destinationKey, destination)]
1516 }
1617 }
1718
1819
1920
2021 @Callable(i)
21-func changeStatus (status,depositId,mintId,nftId,nftIdTN) = if ((i.caller == this))
22+func finishDeposit (depositId,mintId,nftId,nftIdTN) = if ((i.caller == this))
2223 then {
2324 let stateKey = (nftId + "_state")
24- let tnKey = (nftId + "_idTN")
25- let depositIdKey = (nftId + "_depositId")
26- let mintIdKey = (nftId + "_mintId")
27-[StringEntry(stateKey, status), StringEntry(tnKey, nftIdTN), StringEntry(depositIdKey, depositId), StringEntry(mintIdKey, mintId)]
25+ let state = getString(this, stateKey)
26+ if (isDefined(state))
27+ then {
28+ let tnKey = (nftId + "_idTN")
29+ let linkKey = (nftIdTN + "_idWaves")
30+ let depositIdKey = (nftId + "_depositId")
31+ let mintIdKey = (nftId + "_mintId")
32+[StringEntry(stateKey, "MINTED"), StringEntry(tnKey, nftIdTN), StringEntry(linkKey, nftId), StringEntry(depositIdKey, depositId), StringEntry(mintIdKey, mintId)]
33+ }
34+ else throw("We can't update a non-existing state!")
2835 }
2936 else throw("Dirty hacker!")
37+
38+
39+
40+@Callable(i)
41+func storeData (nftIdTN,tnId,destination) = if ((i.caller == this))
42+ then {
43+ let linkKey = (nftIdTN + "_idWaves")
44+ let nftId = getStringValue(this, linkKey)
45+ let stateKey = (nftId + "_state")
46+ let state = getString(this, stateKey)
47+ if (isDefined(state))
48+ then {
49+ let destinationKey = (tnId + "_dest")
50+ let withdrawKey = (tnId + "_state")
51+ let idNftkey = (tnId + "_nftIdTN")
52+ let stateWD = getString(this, withdrawKey)
53+ if (isDefined(stateWD))
54+ then throw("Withdrawal already initialized or completed!")
55+ else [StringEntry(destinationKey, destination), StringEntry(idNftkey, nftIdTN), StringEntry(withdrawKey, "WD-INITIALIZED"), StringEntry(stateKey, "WD-INITIALIZED")]
56+ }
57+ else throw("Asset was never deposited!")
58+ }
59+ else throw("Dirty hacker")
60+
61+
62+
63+@Callable(i)
64+func releaseOnWaves (tnId) = {
65+ let destinationKey = (tnId + "_dest")
66+ let stateKey = (tnId + "_state")
67+ let idNftkey = (tnId + "_nftIdTN")
68+ let state = valueOrErrorMessage(getString(this, stateKey), "The tnId seems invalid!")
69+ if ((state == "WD-INITIALIZED"))
70+ then {
71+ let destination = valueOrErrorMessage(getString(this, destinationKey), "The tnId seems invalid!")
72+ let receiveNFTAddy = Address(fromBase58String(destination))
73+ let idNFTTN = valueOrErrorMessage(getString(this, idNftkey), "The nftIdTN seems invalid!")
74+ let linkKey = (idNFTTN + "_idWaves")
75+ let idNFT = valueOrErrorMessage(getString(this, linkKey), "The linked NFT cannot be found!")
76+ let stateNFTKey = (idNFT + "_state")
77+[StringEntry(stateKey, "COMPLETED"), StringEntry(stateNFTKey, "RELEASED"), ScriptTransfer(receiveNFTAddy, 1, toBytes(idNFT))]
78+ }
79+ else throw("Transaction is already processed!")
80+ }
3081
3182

github/deemru/w8io/3ef1775 
49.40 ms