tx · DAXZQfHjV3Fv1ohBnSkfWTa4voThuwbp5ZHQ7narcJBQ

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.01400000 Waves

2022.04.19 23:53 [3081255] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "DAXZQfHjV3Fv1ohBnSkfWTa4voThuwbp5ZHQ7narcJBQ", "fee": 1400000, "feeAssetId": null, "timestamp": 1650401577911, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "4mSBPA9W5KDSindbDo9hXti3AQBbeohwWnWEp7QgVRT9ZW31eT6HtgdjweomoMAYzpJFm3bAxMGefHrgkYWdCgAn" ], "script": "base64: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", "height": 3081255, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Ba5XMiZYyC4PkWJWSYgccQWTtLG1f6TiszZcZ4WoBo16 Next: 7Af23YRMx5tM4S3KM95CZLCd7LzAkf9PHQ43k2omRvhC Diff:
OldNewDifferences
111111 let wrapAddress = getAddressForUnwrap(nftId)
112112 if (isNftFromMarketplace(asset))
113113 then {
114- let cancelArgs = if (isDefined(wrapAddress))
115- then [nftId, toString(i.caller)]
116- else [nftId, ""]
117- let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", cancelArgs, nil) {
114+ let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
118115 case s: String =>
119116 s
120117 case _ =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let nftCreationAddress = base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By'
55
66 let signArtNftCreationAddress = base58'3PDBLdsUrcsiPxNbt8g2gQVoefKgzt3kJzV'
77
88 let nftDuckWrapper = base58'3P3pDosq4GCwfJkvq4yqKvvoTwmoqc9qPmo'
99
1010 let nftSignArtWrapper = base58'3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC'
1111
1212 let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
1313
1414 let breederAddress = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
1515
1616 let marketplaceContractAddress = base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc'
1717
1818 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
1919 then (asset.decimals == 0)
2020 else false)
2121 then (asset.reissuable == false)
2222 else false)
2323 then (asset.quantity == 1)
2424 else false
2525
2626
2727 func ifDuckNft (asset) = if (if (if (if ((asset.issuer.bytes == incubatorAddress))
2828 then true
2929 else (asset.issuer.bytes == breederAddress))
3030 then (asset.decimals == 0)
3131 else false)
3232 then (asset.reissuable == false)
3333 else false)
3434 then (asset.quantity == 1)
3535 else false
3636
3737
3838 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
3939 then (asset.decimals == 0)
4040 else false)
4141 then (asset.reissuable == false)
4242 else false)
4343 then (asset.quantity == 1)
4444 else false
4545
4646
4747 func getAddressForWrap (asset) = if (ifSignArtNft(asset))
4848 then Address(nftSignArtWrapper)
4949 else if (ifDuckNft(asset))
5050 then Address(nftDuckWrapper)
5151 else unit
5252
5353
5454 func getAddressForUnwrap (nftStr) = {
5555 let isSignArt = match getString(Address(nftSignArtWrapper), (("signArtNft_" + nftStr) + "_assetId")) {
5656 case s: String =>
5757 (size(s) > 0)
5858 case _ =>
5959 false
6060 }
6161 let isDuck = match getString(Address(nftDuckWrapper), (("nft_" + nftStr) + "_duckId")) {
6262 case s: String =>
6363 (size(s) > 0)
6464 case _ =>
6565 false
6666 }
6767 if (isSignArt)
6868 then Address(nftSignArtWrapper)
6969 else if (isDuck)
7070 then Address(nftDuckWrapper)
7171 else unit
7272 }
7373
7474
7575 @Callable(i)
7676 func lockAndSellNFT (buyOutPrice,buyOutAssetId) = {
7777 let assetId = value(value(i.payments[0]).assetId)
7878 let asset = value(assetInfo(assetId))
7979 let wrapAddress = getAddressForWrap(asset)
8080 let stakedNFTIdStr = if (isDefined(wrapAddress))
8181 then {
8282 let lockedNftStr = match invoke(value(wrapAddress), "lock", nil, [i.payments[0]]) {
8383 case s: String =>
8484 s
8585 case _ =>
8686 throw(("Somthing wrong when lock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
8787 }
8888 if ((lockedNftStr == lockedNftStr))
8989 then lockedNftStr
9090 else throw("Strict value is not equal to itself.")
9191 }
9292 else toBase58String(asset.id)
9393 let sellArgs = if (isDefined(wrapAddress))
9494 then [buyOutPrice, buyOutAssetId, toString(i.caller)]
9595 else [buyOutPrice, buyOutAssetId, ""]
9696 if ((size(stakedNFTIdStr) > 0))
9797 then {
9898 let inv = invoke(Address(marketplaceContractAddress), "sellNFT", sellArgs, [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
9999 if ((inv == inv))
100100 then nil
101101 else throw("Strict value is not equal to itself.")
102102 }
103103 else throw("The created NFT is invalid")
104104 }
105105
106106
107107
108108 @Callable(i)
109109 func cancelSellAndUnlock (nftId) = {
110110 let asset = value(assetInfo(fromBase58String(nftId)))
111111 let wrapAddress = getAddressForUnwrap(nftId)
112112 if (isNftFromMarketplace(asset))
113113 then {
114- let cancelArgs = if (isDefined(wrapAddress))
115- then [nftId, toString(i.caller)]
116- else [nftId, ""]
117- let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", cancelArgs, nil) {
114+ let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
118115 case s: String =>
119116 s
120117 case _ =>
121118 throw("Somthing wrong when cancel sell NFT")
122119 }
123120 if ((canceledNftStr == canceledNftStr))
124121 then if (isDefined(wrapAddress))
125122 then {
126123 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
127124 case s: String =>
128125 s
129126 case _ =>
130127 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
131128 }
132129 if ((unlockedNftStr == unlockedNftStr))
133130 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
134131 else throw("Strict value is not equal to itself.")
135132 }
136133 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
137134 else throw("Strict value is not equal to itself.")
138135 }
139136 else throw("Ivalid NFT attached")
140137 }
141138
142139
143140
144141 @Callable(i)
145142 func buy (nftId) = {
146143 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
147144 case s: String =>
148145 s
149146 case _ =>
150147 throw("Somthing wrong when buy NFT")
151148 }
152149 if ((boughtNft == boughtNft))
153150 then {
154151 let asset = value(assetInfo(fromBase58String(boughtNft)))
155152 if (if ((size(boughtNft) > 0))
156153 then isNftFromMarketplace(asset)
157154 else false)
158155 then {
159156 let wrapAddress = getAddressForUnwrap(nftId)
160157 if (isDefined(wrapAddress))
161158 then {
162159 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
163160 case s: String =>
164161 s
165162 case _ =>
166163 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
167164 }
168165 if ((unlockedNftStr == unlockedNftStr))
169166 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
170167 else throw("Strict value is not equal to itself.")
171168 }
172169 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
173170 }
174171 else throw("Ivalid bought NFT")
175172 }
176173 else throw("Strict value is not equal to itself.")
177174 }
178175
179176
180177 @Verifier(tx)
181178 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
182179

github/deemru/w8io/3ef1775 
34.93 ms