tx · 7Af23YRMx5tM4S3KM95CZLCd7LzAkf9PHQ43k2omRvhC

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.01400000 Waves

2022.04.20 00:06 [3081268] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "7Af23YRMx5tM4S3KM95CZLCd7LzAkf9PHQ43k2omRvhC", "fee": 1400000, "feeAssetId": null, "timestamp": 1650402422784, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "2fCqCVpNTxY72r2pUcRB7nq4H7r84SDkQVJriRCTdPdtTWnsXT94hd6VvV1igEGmkFgR3edCSzhdtYdZVygCSMn7" ], "script": "base64:AAIFAAAAAAAAABIIAhIECgIBCBIDCgEIEgMKAQgAAAAMAAAAABJuZnRDcmVhdGlvbkFkZHJlc3MBAAAAGgFXk93E0hfnIAr99yESTvDwdmcmgwN41FxMAAAAABlzaWduQXJ0TmZ0Q3JlYXRpb25BZGRyZXNzAQAAABoBV3tk1VvWnhe5qtPmj/wDXMjEFvibuoYp4gAAAAAObmZ0RHVja1dyYXBwZXIBAAAAGgFXFK1EUpul/f9hF//YOufxZ4qAnBS4L88eAAAAABFuZnRTaWduQXJ0V3JhcHBlcgEAAAAaAVfuoRoVw/G2X0Rl/1/IFTnEeUXVGEVHMAcAAAAAEGluY3ViYXRvckFkZHJlc3MBAAAAGgFXjLVIn36eFdUYl44bd/sJf2di2uFtYyVJAAAAAA5icmVlZGVyQWRkcmVzcwEAAAAaAVd+57n5ccRMeFx9eHuGcYJDFaZ5ag+2Hx4AAAAAGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAQAAABoBV12L8V/LKCBrH2ajyG7aC6iX7Q/o/clE8QEAAAAMaWZTaWduQXJ0TmZ0AAAAAQAAAAVhc3NldAMDAwkAAAAAAAACCAgFAAAABWFzc2V0AAAABmlzc3VlcgAAAAVieXRlcwUAAAAZc2lnbkFydE5mdENyZWF0aW9uQWRkcmVzcwkAAAAAAAACCAUAAAAFYXNzZXQAAAAIZGVjaW1hbHMAAAAAAAAAAAAHCQAAAAAAAAIIBQAAAAVhc3NldAAAAApyZWlzc3VhYmxlBwcJAAAAAAAAAggFAAAABWFzc2V0AAAACHF1YW50aXR5AAAAAAAAAAABBwEAAAAJaWZEdWNrTmZ0AAAAAQAAAAVhc3NldAMDAwMJAAAAAAAAAggIBQAAAAVhc3NldAAAAAZpc3N1ZXIAAAAFYnl0ZXMFAAAAEGluY3ViYXRvckFkZHJlc3MGCQAAAAAAAAIICAUAAAAFYXNzZXQAAAAGaXNzdWVyAAAABWJ5dGVzBQAAAA5icmVlZGVyQWRkcmVzcwkAAAAAAAACCAUAAAAFYXNzZXQAAAAIZGVjaW1hbHMAAAAAAAAAAAAHCQAAAAAAAAIIBQAAAAVhc3NldAAAAApyZWlzc3VhYmxlBwcJAAAAAAAAAggFAAAABWFzc2V0AAAACHF1YW50aXR5AAAAAAAAAAABBwEAAAAUaXNOZnRGcm9tTWFya2V0cGxhY2UAAAABAAAABWFzc2V0AwMDCQAAAAAAAAIICAUAAAAFYXNzZXQAAAAGaXNzdWVyAAAABWJ5dGVzBQAAABJuZnRDcmVhdGlvbkFkZHJlc3MJAAAAAAAAAggFAAAABWFzc2V0AAAACGRlY2ltYWxzAAAAAAAAAAAABwkAAAAAAAACCAUAAAAFYXNzZXQAAAAKcmVpc3N1YWJsZQcHCQAAAAAAAAIIBQAAAAVhc3NldAAAAAhxdWFudGl0eQAAAAAAAAAAAQcBAAAAEWdldEFkZHJlc3NGb3JXcmFwAAAAAQAAAAVhc3NldAMJAQAAAAxpZlNpZ25BcnROZnQAAAABBQAAAAVhc3NldAkBAAAAB0FkZHJlc3MAAAABBQAAABFuZnRTaWduQXJ0V3JhcHBlcgMJAQAAAAlpZkR1Y2tOZnQAAAABBQAAAAVhc3NldAkBAAAAB0FkZHJlc3MAAAABBQAAAA5uZnREdWNrV3JhcHBlcgUAAAAEdW5pdAEAAAATZ2V0QWRkcmVzc0ZvclVud3JhcAAAAAEAAAAGbmZ0U3RyBAAAAAlpc1NpZ25BcnQEAAAAByRtYXRjaDAJAAQdAAAAAgkBAAAAB0FkZHJlc3MAAAABBQAAABFuZnRTaWduQXJ0V3JhcHBlcgkAASwAAAACCQABLAAAAAICAAAAC3NpZ25BcnROZnRfBQAAAAZuZnRTdHICAAAACF9hc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAJAABmAAAAAgkAATEAAAABBQAAAAFzAAAAAAAAAAAABwQAAAAGaXNEdWNrBAAAAAckbWF0Y2gwCQAEHQAAAAIJAQAAAAdBZGRyZXNzAAAAAQUAAAAObmZ0RHVja1dyYXBwZXIJAAEsAAAAAgkAASwAAAACAgAAAARuZnRfBQAAAAZuZnRTdHICAAAAB19kdWNrSWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAGYAAAACCQABMQAAAAEFAAAAAXMAAAAAAAAAAAAHAwUAAAAJaXNTaWduQXJ0CQEAAAAHQWRkcmVzcwAAAAEFAAAAEW5mdFNpZ25BcnRXcmFwcGVyAwUAAAAGaXNEdWNrCQEAAAAHQWRkcmVzcwAAAAEFAAAADm5mdER1Y2tXcmFwcGVyBQAAAAR1bml0AAAAAwAAAAFpAQAAAA5sb2NrQW5kU2VsbE5GVAAAAAIAAAALYnV5T3V0UHJpY2UAAAANYnV5T3V0QXNzZXRJZAQAAAAHYXNzZXRJZAkBAAAABXZhbHVlAAAAAQgJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAFYXNzZXQJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAHYXNzZXRJZAQAAAALd3JhcEFkZHJlc3MJAQAAABFnZXRBZGRyZXNzRm9yV3JhcAAAAAEFAAAABWFzc2V0BAAAAA5zdGFrZWRORlRJZFN0cgMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAt3cmFwQWRkcmVzcwQAAAAMbG9ja2VkTmZ0U3RyBAAAAAckbWF0Y2gwCQAD/AAAAAQJAQAAAAV2YWx1ZQAAAAEFAAAAC3dyYXBBZGRyZXNzAgAAAARsb2NrBQAAAANuaWwJAARMAAAAAgkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAUAAAADbmlsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMJAAACAAAAAQkAASwAAAACAgAAAClTb210aGluZyB3cm9uZyB3aGVuIGxvY2sgTkZUIGluIGFkZHJlc3M6IAkAAlgAAAABCAkBAAAABXZhbHVlAAAAAQUAAAALd3JhcEFkZHJlc3MAAAAFYnl0ZXMDCQAAAAAAAAIFAAAADGxvY2tlZE5mdFN0cgUAAAAMbG9ja2VkTmZ0U3RyBQAAAAxsb2NrZWROZnRTdHIJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACWAAAAAEIBQAAAAVhc3NldAAAAAJpZAMJAABmAAAAAgkAATEAAAABBQAAAA5zdGFrZWRORlRJZFN0cgAAAAAAAAAAAAQAAAADaW52CQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAAabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MCAAAAB3NlbGxORlQJAARMAAAAAgUAAAALYnV5T3V0UHJpY2UJAARMAAAAAgUAAAANYnV5T3V0QXNzZXRJZAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQACWQAAAAEFAAAADnN0YWtlZE5GVElkU3RyAAAAAAAAAAABBQAAAANuaWwDCQAAAAAAAAIFAAAAA2ludgUAAAADaW52BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAGlRoZSBjcmVhdGVkIE5GVCBpcyBpbnZhbGlkAAAAAWkBAAAAE2NhbmNlbFNlbGxBbmRVbmxvY2sAAAABAAAABW5mdElkBAAAAAVhc3NldAkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAABW5mdElkBAAAAAt3cmFwQWRkcmVzcwkBAAAAE2dldEFkZHJlc3NGb3JVbndyYXAAAAABBQAAAAVuZnRJZAMJAQAAABRpc05mdEZyb21NYXJrZXRwbGFjZQAAAAEFAAAABWFzc2V0BAAAAA5jYW5jZWxlZE5mdFN0cgQAAAAHJG1hdGNoMAkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAAGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgAAAApjYW5jZWxTZWxsCQAETAAAAAIFAAAABW5mdElkBQAAAANuaWwFAAAAA25pbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAI1NvbXRoaW5nIHdyb25nIHdoZW4gY2FuY2VsIHNlbGwgTkZUAwkAAAAAAAACBQAAAA5jYW5jZWxlZE5mdFN0cgUAAAAOY2FuY2VsZWROZnRTdHIDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAALd3JhcEFkZHJlc3MEAAAADnVubG9ja2VkTmZ0U3RyBAAAAAckbWF0Y2gwCQAD/AAAAAQJAQAAAAV2YWx1ZQAAAAEFAAAAC3dyYXBBZGRyZXNzAgAAAAZ1bmxvY2sFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAggFAAAABWFzc2V0AAAAAmlkAAAAAAAAAAABBQAAAANuaWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwkAAAIAAAABCQABLAAAAAICAAAAK1NvbXRoaW5nIHdyb25nIHdoZW4gdW5sb2NrIE5GVCBpbiBhZGRyZXNzOiAJAAJYAAAAAQgJAQAAAAV2YWx1ZQAAAAEFAAAAC3dyYXBBZGRyZXNzAAAABWJ5dGVzAwkAAAAAAAACBQAAAA51bmxvY2tlZE5mdFN0cgUAAAAOdW5sb2NrZWROZnRTdHIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAADnVubG9ja2VkTmZ0U3RyBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAA5jYW5jZWxlZE5mdFN0cgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAABNJdmFsaWQgTkZUIGF0dGFjaGVkAAAAAWkBAAAAA2J1eQAAAAEAAAAFbmZ0SWQEAAAACWJvdWdodE5mdAQAAAAHJG1hdGNoMAkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAAGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgAAAAZidXlORlQJAARMAAAAAgUAAAAFbmZ0SWQFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwkAAAIAAAABAgAAABtTb210aGluZyB3cm9uZyB3aGVuIGJ1eSBORlQDCQAAAAAAAAIFAAAACWJvdWdodE5mdAUAAAAJYm91Z2h0TmZ0BAAAAAVhc3NldAkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAACWJvdWdodE5mdAMDCQAAZgAAAAIJAAExAAAAAQUAAAAJYm91Z2h0TmZ0AAAAAAAAAAAACQEAAAAUaXNOZnRGcm9tTWFya2V0cGxhY2UAAAABBQAAAAVhc3NldAcEAAAAC3dyYXBBZGRyZXNzCQEAAAATZ2V0QWRkcmVzc0ZvclVud3JhcAAAAAEFAAAABW5mdElkAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAC3dyYXBBZGRyZXNzBAAAAA51bmxvY2tlZE5mdFN0cgQAAAAHJG1hdGNoMAkAA/wAAAAECQEAAAAFdmFsdWUAAAABBQAAAAt3cmFwQWRkcmVzcwIAAAAGdW5sb2NrBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIIBQAAAAVhc3NldAAAAAJpZAAAAAAAAAAAAQUAAAADbmlsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMJAAACAAAAAQkAASwAAAACAgAAACtTb210aGluZyB3cm9uZyB3aGVuIHVubG9jayBORlQgaW4gYWRkcmVzczogCQACWAAAAAEICQEAAAAFdmFsdWUAAAABBQAAAAt3cmFwQWRkcmVzcwAAAAVieXRlcwMJAAAAAAAAAgUAAAAOdW5sb2NrZWROZnRTdHIFAAAADnVubG9ja2VkTmZ0U3RyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAA51bmxvY2tlZE5mdFN0cgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEJAAJZAAAAAQUAAAAJYm91Z2h0TmZ0BQAAAANuaWwJAAACAAAAAQIAAAARSXZhbGlkIGJvdWdodCBORlQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkuOGGz", "height": 3081268, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DAXZQfHjV3Fv1ohBnSkfWTa4voThuwbp5ZHQ7narcJBQ Next: GKYzx5qgJZm742MXRWNHwDnWwtj7C6dSRyMAzu2gpAX4 Diff:
OldNewDifferences
9090 else throw("Strict value is not equal to itself.")
9191 }
9292 else toBase58String(asset.id)
93- let sellArgs = if (isDefined(wrapAddress))
94- then [buyOutPrice, buyOutAssetId, toString(i.caller)]
95- else [buyOutPrice, buyOutAssetId, ""]
9693 if ((size(stakedNFTIdStr) > 0))
9794 then {
98- let inv = invoke(Address(marketplaceContractAddress), "sellNFT", sellArgs, [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
95+ let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
9996 if ((inv == inv))
10097 then nil
10198 else throw("Strict value is not equal to itself.")
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)
93- let sellArgs = if (isDefined(wrapAddress))
94- then [buyOutPrice, buyOutAssetId, toString(i.caller)]
95- else [buyOutPrice, buyOutAssetId, ""]
9693 if ((size(stakedNFTIdStr) > 0))
9794 then {
98- let inv = invoke(Address(marketplaceContractAddress), "sellNFT", sellArgs, [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
95+ let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
9996 if ((inv == inv))
10097 then nil
10198 else throw("Strict value is not equal to itself.")
10299 }
103100 else throw("The created NFT is invalid")
104101 }
105102
106103
107104
108105 @Callable(i)
109106 func cancelSellAndUnlock (nftId) = {
110107 let asset = value(assetInfo(fromBase58String(nftId)))
111108 let wrapAddress = getAddressForUnwrap(nftId)
112109 if (isNftFromMarketplace(asset))
113110 then {
114111 let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
115112 case s: String =>
116113 s
117114 case _ =>
118115 throw("Somthing wrong when cancel sell NFT")
119116 }
120117 if ((canceledNftStr == canceledNftStr))
121118 then if (isDefined(wrapAddress))
122119 then {
123120 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
124121 case s: String =>
125122 s
126123 case _ =>
127124 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
128125 }
129126 if ((unlockedNftStr == unlockedNftStr))
130127 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
131128 else throw("Strict value is not equal to itself.")
132129 }
133130 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
134131 else throw("Strict value is not equal to itself.")
135132 }
136133 else throw("Ivalid NFT attached")
137134 }
138135
139136
140137
141138 @Callable(i)
142139 func buy (nftId) = {
143140 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
144141 case s: String =>
145142 s
146143 case _ =>
147144 throw("Somthing wrong when buy NFT")
148145 }
149146 if ((boughtNft == boughtNft))
150147 then {
151148 let asset = value(assetInfo(fromBase58String(boughtNft)))
152149 if (if ((size(boughtNft) > 0))
153150 then isNftFromMarketplace(asset)
154151 else false)
155152 then {
156153 let wrapAddress = getAddressForUnwrap(nftId)
157154 if (isDefined(wrapAddress))
158155 then {
159156 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
160157 case s: String =>
161158 s
162159 case _ =>
163160 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
164161 }
165162 if ((unlockedNftStr == unlockedNftStr))
166163 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
167164 else throw("Strict value is not equal to itself.")
168165 }
169166 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
170167 }
171168 else throw("Ivalid bought NFT")
172169 }
173170 else throw("Strict value is not equal to itself.")
174171 }
175172
176173
177174 @Verifier(tx)
178175 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
179176

github/deemru/w8io/3ef1775 
39.15 ms