tx · 7ypagv9w9kBvxMsMGPyzJuh98vkaJt6emL2Rg96KLEtZ

3PD1sd55PYzmGUrQ896Qt3uvdbtgjCVpajE:  -0.00400000 Waves

2022.08.23 20:39 [3262914] smart account 3PD1sd55PYzmGUrQ896Qt3uvdbtgjCVpajE > SELF 0.00000000 Waves

{ "type": 13, "id": "7ypagv9w9kBvxMsMGPyzJuh98vkaJt6emL2Rg96KLEtZ", "fee": 400000, "feeAssetId": null, "timestamp": 1661276434024, "version": 2, "chainId": 87, "sender": "3PD1sd55PYzmGUrQ896Qt3uvdbtgjCVpajE", "senderPublicKey": "GokNVLddb43BhUkdo2fpeMvk9yczRjnasz6pFVha7u1n", "proofs": [ "z9uZZoAha6R6ud6jEZ2Y7Q82nCFTRzMPFS7xdSQDHQbXn9vm2KaYFiVjvL89BiCxqcTmZFPHyGHMLXgV3XB176u" ], "script": "base64:BgIGCAISABIACQAQY3JlYXRlTkZUQWRkcmVzcwkBB0FkZHJlc3MBARoBV5PdxNIX5yAK/fchEk7w8HZnJoMDeNRcTAATem9tYmllSXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBVzwia2+DPLzn0NsAUzuxeI+PJBHmuBOukwAScHVua3NJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXS+xPjera0gSnSXFRUVq2krtB1F+FwuxoABNhbGllbnNJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXa8tPpNumumqoNfvKdRF0dc6oz4cuF9IYABVtYWRQdW5rc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVe2FZAHGGJgl+unSJcp8qs1zX7kAqoNhtkBD2lzVmFsaWROZnRBc3NldAEFYXNzZXQDAwkAAAIIBQVhc3NldAhkZWNpbWFscwAACQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwESaXNXYXZlc1B1bmtzSXNzdWVyAQVhc3NldAQHJG1hdGNoMAkAzwgCCQDMCAIFE3pvbWJpZUlzc3VlckFkZHJlc3MJAMwIAgUScHVua3NJc3N1ZXJBZGRyZXNzCQDMCAIFE2FsaWVuc0lzc3VlckFkZHJlc3MJAMwIAgUVbWFkUHVua3NJc3N1ZXJBZGRyZXNzBQNuaWwIBQVhc3NldAZpc3N1ZXIDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBgcBCnZhbHVlQnlLZXkCBGRhdGEDa2V5CgEEZmluZAIFYWNjdW0EbmV4dAMJAQhjb250YWlucwIFBG5leHQJAKwCAgkArAICAgEiBQNrZXkCAyI6IAkAswICCQCwAgIJAJEDAgkAtQkCBQRuZXh0AgI6IAABAAEAAQUFYWNjdW0KAAIkbAUEZGF0YQoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEZmluZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUBD2dldElzc3VlclBhcmFtcwEFYXNzZXQDCQAAAggFBWFzc2V0Bmlzc3VlcgUVbWFkUHVua3NJc3N1ZXJBZGRyZXNzBAVpbWFnZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUVbWFkUHVua3NJc3N1ZXJBZGRyZXNzCQCsAgIJANgEAQgFBWFzc2V0AmlkAgRfdXJsBAR0eXBlCQERQGV4dHJOYXRpdmUoMTA1MykCBRVtYWRQdW5rc0lzc3VlckFkZHJlc3MJAKwCAgkA2AQBCAUFYXNzZXQCaWQCBV90eXBlCQDMCAIIBQVhc3NldARuYW1lCQDMCAIJAKwCAgkArAICCQCsAgICBlR5cGU6IAUEdHlwZQICLiAIBQVhc3NldAtkZXNjcmlwdGlvbgkAzAgCBQVpbWFnZQkAzAgCAg1XYXZlc01hZFB1bmtzBQNuaWwECnBhcnNlZERhdGEJALUJAgkAswICCQCwAgIIBQVhc3NldAtkZXNjcmlwdGlvbgABAAECAiwgAwkAAAIIBQVhc3NldAZpc3N1ZXIFEnB1bmtzSXNzdWVyQWRkcmVzcwkAzAgCCAUFYXNzZXQEbmFtZQkAzAgCAkhXQVZFUyBQVU5LUyBpcyB0aGUgZmlyc3QgY29sbGVjdGlvbiBvZiBkaWdpdGFsIHB1bmtzIG9uIFdhdmVzIGJsb2NrY2hhaW4JAMwIAgkBCnZhbHVlQnlLZXkCBQpwYXJzZWREYXRhAgN1cmwJAMwIAgIKV2F2ZXNQdW5rcwUDbmlsAwkAAAIIBQVhc3NldAZpc3N1ZXIFE3pvbWJpZUlzc3VlckFkZHJlc3MJAMwIAggFBWFzc2V0BG5hbWUJAMwIAgI+U2Vjb25kIENoYXB0ZXIgb2YgdGhlIGZpcnN0LWV2ZXIgTkZULXB1bmtzIG9uIFdBVkVTIGJsb2NrY2hhaW4JAMwIAgkBCnZhbHVlQnlLZXkCBQpwYXJzZWREYXRhAgN1cmwJAMwIAgIRV2F2ZXNQdW5rcyBab21iaWUFA25pbAMJAAACCAUFYXNzZXQGaXNzdWVyBRNhbGllbnNJc3N1ZXJBZGRyZXNzCQDMCAIIBQVhc3NldARuYW1lCQDMCAICO1dlIGhhcyB0YWtlbiByb290cyBhbW9uZyB5b3UgYW5kIGZlZWQgb24geW91ciBjdWx0dXJhbCBjb2RlCQDMCAIJAQp2YWx1ZUJ5S2V5AgUKcGFyc2VkRGF0YQIDdXJsCQDMCAICFFdhdmVzUHVua3MgTWVtYWxpZW5zBQNuaWwJAAIBAhlXcm9uZyBORlQgYXNzZXQgZm9yIGlzc3VlAgFpAQRsb2NrAAQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEB2Fzc2V0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQJYXNzZXREZXNjCAUFYXNzZXQLZGVzY3JpcHRpb24DAwMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABCQEPaXNWYWxpZE5mdEFzc2V0AQUFYXNzZXQHCQESaXNXYXZlc1B1bmtzSXNzdWVyAQUFYXNzZXQHBAtpc3N1ZVBhcmFtcwkBD2dldElzc3VlclBhcmFtcwEFBWFzc2V0BA5mYWtlSXNzdWVJZFN0cgQHJG1hdGNoMAkA/AcEBRBjcmVhdGVORlRBZGRyZXNzAgljcmVhdGVORlQFC2lzc3VlUGFyYW1zBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIrU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNyZWF0aW9uIG9mIE5GVAMJAAACBQ5mYWtlSXNzdWVJZFN0cgUOZmFrZUlzc3VlSWRTdHIJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ5mYWtlSXNzdWVJZFN0cgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgIEbmZ0XwUOZmFrZUlzc3VlSWRTdHICCF9hc3NldElkCQDYBAEIBQVhc3NldAJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgIEbmZ0XwUOZmFrZUlzc3VlSWRTdHICB19jYWxsZXIFCmFkZHJlc3NTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBG5mdF8FDmZha2VJc3N1ZUlkU3RyAgZfb3duZXIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBQNuaWwFDmZha2VJc3N1ZUlkU3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQITSXZhbGlkIE5GVCBhdHRhY2hlZAFpAQZ1bmxvY2sABAphZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgQHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBA1jYWxsZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgIEbmZ0XwkA2AQBBQdhc3NldElkAgdfY2FsbGVyBAxvd25lckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkArAICAgRuZnRfCQDYBAEFB2Fzc2V0SWQCBl9vd25lcgQVb3JpZ2luYWxOZnRBc3NldElkU3RyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgIEbmZ0XwkA2AQBBQdhc3NldElkAghfYXNzZXRJZAQIbmZ0QXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEJAQ9pc1ZhbGlkTmZ0QXNzZXQBBQhuZnRBc3NldAcJAAACBQphZGRyZXNzU3RyBQ1jYWxsZXJBZGRyZXNzBwQHaW52QnVybgkA/AcEBRBjcmVhdGVORlRBZGRyZXNzAgdidXJuTkZUBQNuaWwJAMwIAgkAkQMCCAUBaQhwYXltZW50cwAABQNuaWwDCQAAAgUHaW52QnVybgUHaW52QnVybgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFFW9yaWdpbmFsTmZ0QXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgIEbmZ0XwkA2AQBBQdhc3NldElkAghfYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgIEbmZ0XwkA2AQBBQdhc3NldElkAgdfY2FsbGVyCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgRuZnRfCQDYBAEFB2Fzc2V0SWQCBl9vd25lcgUDbmlsBRVvcmlnaW5hbE5mdEFzc2V0SWRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAhNJdmFsaWQgTkZUIGF0dGFjaGVkAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleT3HY1o=", "height": 3262914, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: cUohQiFDAALEssTkG2hY4qdYAqkneWKMDN8YcRV3dVe Next: BYpqW2mQuzDYuk8yDeXioxjwdBVC5hYzVbz4XmFx2aSq Diff:
OldNewDifferences
4949 func getIssuerParams (asset) = if ((asset.issuer == madPunksIssuerAddress))
5050 then {
5151 let image = getStringValue(madPunksIssuerAddress, (toBase58String(asset.id) + "_url"))
52- let fract = getStringValue(madPunksIssuerAddress, (toBase58String(asset.id) + "_fraction"))
5352 let type = getStringValue(madPunksIssuerAddress, (toBase58String(asset.id) + "_type"))
54-[asset.name, (((((("Type: " + type) + ". ") + "Fraction: ") + fract) + ". ") + asset.description), image, "WavesMadPunks"]
53+[asset.name, ((("Type: " + type) + ". ") + asset.description), image, "WavesMadPunks"]
5554 }
5655 else {
5756 let parsedData = split(dropRight(drop(asset.description, 1), 1), ", ")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let createNFTAddress = Address(base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By')
55
66 let zombieIssuerAddress = Address(base58'3P7QrWH1ETLfKAJcFHYPJmQusNbDuW98Hop')
77
88 let punksIssuerAddress = Address(base58'3P8rLVnwrTf4k5AB3emuduhZZb1yKcitTHy')
99
1010 let aliensIssuerAddress = Address(base58'3PBkrb5LrGDvCwkx4VHZzZkqMNvvGqrJJWj')
1111
1212 let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
1313
1414 func isValidNftAsset (asset) = if (if ((asset.decimals == 0))
1515 then (asset.reissuable == false)
1616 else false)
1717 then (asset.quantity == 1)
1818 else false
1919
2020
2121 func isWavesPunksIssuer (asset) = match indexOf([zombieIssuerAddress, punksIssuerAddress, aliensIssuerAddress, madPunksIssuerAddress], asset.issuer) {
2222 case x: Int =>
2323 true
2424 case _ =>
2525 false
2626 }
2727
2828
2929 func valueByKey (data,key) = {
3030 func find (accum,next) = if (contains(next, (("\"" + key) + "\": ")))
3131 then dropRight(drop(split(next, ": ")[1], 1), 1)
3232 else accum
3333
3434 let $l = data
3535 let $s = size($l)
3636 let $acc0 = ""
3737 func $f0_1 ($a,$i) = if (($i >= $s))
3838 then $a
3939 else find($a, $l[$i])
4040
4141 func $f0_2 ($a,$i) = if (($i >= $s))
4242 then $a
4343 else throw("List size exceeds 5")
4444
4545 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
4646 }
4747
4848
4949 func getIssuerParams (asset) = if ((asset.issuer == madPunksIssuerAddress))
5050 then {
5151 let image = getStringValue(madPunksIssuerAddress, (toBase58String(asset.id) + "_url"))
52- let fract = getStringValue(madPunksIssuerAddress, (toBase58String(asset.id) + "_fraction"))
5352 let type = getStringValue(madPunksIssuerAddress, (toBase58String(asset.id) + "_type"))
54-[asset.name, (((((("Type: " + type) + ". ") + "Fraction: ") + fract) + ". ") + asset.description), image, "WavesMadPunks"]
53+[asset.name, ((("Type: " + type) + ". ") + asset.description), image, "WavesMadPunks"]
5554 }
5655 else {
5756 let parsedData = split(dropRight(drop(asset.description, 1), 1), ", ")
5857 if ((asset.issuer == punksIssuerAddress))
5958 then [asset.name, "WAVES PUNKS is the first collection of digital punks on Waves blockchain", valueByKey(parsedData, "url"), "WavesPunks"]
6059 else if ((asset.issuer == zombieIssuerAddress))
6160 then [asset.name, "Second Chapter of the first-ever NFT-punks on WAVES blockchain", valueByKey(parsedData, "url"), "WavesPunks Zombie"]
6261 else if ((asset.issuer == aliensIssuerAddress))
6362 then [asset.name, "We has taken roots among you and feed on your cultural code", valueByKey(parsedData, "url"), "WavesPunks Memaliens"]
6463 else throw("Wrong NFT asset for issue")
6564 }
6665
6766
6867 @Callable(i)
6968 func lock () = {
7069 let addressStr = toString(i.caller)
7170 let assetId = value(i.payments[0].assetId)
7271 let asset = value(assetInfo(assetId))
7372 let assetDesc = asset.description
7473 if (if (if ((i.payments[0].amount == 1))
7574 then isValidNftAsset(asset)
7675 else false)
7776 then isWavesPunksIssuer(asset)
7877 else false)
7978 then {
8079 let issueParams = getIssuerParams(asset)
8180 let fakeIssueIdStr = match invoke(createNFTAddress, "createNFT", issueParams, nil) {
8281 case s: String =>
8382 s
8483 case _ =>
8584 throw("Something went wrong during creation of NFT")
8685 }
8786 if ((fakeIssueIdStr == fakeIssueIdStr))
8887 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(fakeIssueIdStr)), StringEntry((("nft_" + fakeIssueIdStr) + "_assetId"), toBase58String(asset.id)), StringEntry((("nft_" + fakeIssueIdStr) + "_caller"), addressStr), StringEntry((("nft_" + fakeIssueIdStr) + "_owner"), toString(i.originCaller))], fakeIssueIdStr)
8988 else throw("Strict value is not equal to itself.")
9089 }
9190 else throw("Ivalid NFT attached")
9291 }
9392
9493
9594
9695 @Callable(i)
9796 func unlock () = {
9897 let addressStr = toString(i.caller)
9998 let assetId = value(i.payments[0].assetId)
10099 let callerAddress = getStringValue(this, (("nft_" + toBase58String(assetId)) + "_caller"))
101100 let ownerAddress = getStringValue(this, (("nft_" + toBase58String(assetId)) + "_owner"))
102101 let originalNftAssetIdStr = getStringValue(this, (("nft_" + toBase58String(assetId)) + "_assetId"))
103102 let nftAsset = value(assetInfo(assetId))
104103 if (if (if ((i.payments[0].amount == 1))
105104 then isValidNftAsset(nftAsset)
106105 else false)
107106 then (addressStr == callerAddress)
108107 else false)
109108 then {
110109 let invBurn = invoke(createNFTAddress, "burnNFT", nil, [i.payments[0]])
111110 if ((invBurn == invBurn))
112111 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(originalNftAssetIdStr)), DeleteEntry((("nft_" + toBase58String(assetId)) + "_assetId")), DeleteEntry((("nft_" + toBase58String(assetId)) + "_caller")), DeleteEntry((("nft_" + toBase58String(assetId)) + "_owner"))], originalNftAssetIdStr)
113112 else throw("Strict value is not equal to itself.")
114113 }
115114 else throw("Ivalid NFT attached")
116115 }
117116
118117
119118 @Verifier(tx)
120119 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
121120

github/deemru/w8io/873ac7e 
44.17 ms