tx · 9UGFGc2NocXkWRJLgtRd8gYTP3EefaLMRcMr9TLizEwh

3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq:  -0.01000000 Waves

2022.11.21 14:41 [2326831] smart account 3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq > SELF 0.00000000 Waves

{ "type": 13, "id": "9UGFGc2NocXkWRJLgtRd8gYTP3EefaLMRcMr9TLizEwh", "fee": 1000000, "feeAssetId": null, "timestamp": 1669030932501, "version": 2, "chainId": 84, "sender": "3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq", "senderPublicKey": "H6UqxUDcJamDRg1uykVcWMn4zhAMTV7i1nfPq1moLWmJ", "proofs": [ "3pLsfVeHgNDQHMmxw4BhwqamcgUvAR5mt52YW4wZqqjz2EnaJdbBcCxTJFEmzoBRpBbrqhWz8zAHvYG5Xg2WM9cg" ], "script": "base64:BgIbCAISCwoJCAgICAgBCAgIEgMKAQESAwoBCBIABgAJc2VwYXJhdG9yAgFfAARrQnV5AgNidXkABWtTZWxsAgRzZWxsAAZrUHJpY2UCBXByaWNlAAlkQXBwT3duZXIBGgFUSrhPbN7C2pPt9I7pSjb41U9/ldVVW12gAQVpc05mdAEHYXNzZXRJZAQHJG1hdGNoMAkA7AcBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBUFzc2V0BAV0b2tlbgUHJG1hdGNoMAMDCQAAAggFBXRva2VuCGRlY2ltYWxzAAAJAAACCAUFdG9rZW4IcXVhbnRpdHkAAQcJAAACCAUFdG9rZW4KcmVpc3N1YWJsZQcHBwQBaQEIaXNzdWVOZnQJCG5mdF9uYW1lCW5mdF9vd25lcg9uZnRfZEFwcEFkZHJlc3MIbmZ0X3R5cGUIbmZ0X3RhZ3MRbmZ0X3NlbGxpbmdfcHJpY2UPbmZ0X2Rlc2NyaXB0aW9uCm5mdF9vblNlbGwJbmZ0X2ltYWdlBAR0eElkCAUBaQ10cmFuc2FjdGlvbklkBAdjcmVhdG9yCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDGNyZWF0b3JfbmFtZQUJbmZ0X293bmVyBA1pc3N1ZU1ldGFkYXRhCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIKe2NyZWF0b3I6IAUHY3JlYXRvcgIBLAkArAICAg5jcmVhdG9yX25hbWU6IAUMY3JlYXRvcl9uYW1lAgEsCQCsAgICDWRlc2NyaXB0aW9uOiAFD25mdF9kZXNjcmlwdGlvbgIBLAkArAICAgpuZnRfYXJ0X2lkCQDYBAEFBHR4SWQCAX0ECG5ld1Rva2VuCQDCCAUFCG5mdF9uYW1lBQ1pc3N1ZU1ldGFkYXRhAAEAAAcEB2lzc3VlSWQJALgIAQUIbmV3VG9rZW4JAMwIAgUIbmV3VG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2lzc3VlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgluZnRfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIIbmZ0X3R5cGUFCG5mdF90eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIIbmZ0X3RhZ3MFCG5mdF90YWdzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICEW5mdF9zZWxsaW5nX3ByaWNlBRFuZnRfc2VsbGluZ19wcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCm5mdF9vblNlbGwFCm5mdF9vblNlbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgluZnRfaW1hZ2UFCW5mdF9pbWFnZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCG5mdF9kYXRhBQ1pc3N1ZU1ldGFkYXRhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMFCXNlcGFyYXRvcgIJbmZ0X293bmVyBQdjcmVhdG9yCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFBHR4SWQFCXNlcGFyYXRvcgIJaXNzdWVfbmZ0CQDYBAEFB2lzc3VlSWQFA25pbAFpAQdzZWxsTkZUAQVwcmljZQQFdG9rZW4ICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQHYXNzZXRpZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAdhbW91bnQwCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMJAQEhAQkBBWlzTmZ0AQUHYXNzZXRpZAkAAgECEFRva2VuIGlzIG5vdCBORlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQDYBAEFB2Fzc2V0aWQCBl9vd25lcgkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQDYBAEFB2Fzc2V0aWQCEl9uZnRfc2VsbGluZ19wcmljZQkApAMBBQVwcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJANgEAQUHYXNzZXRpZAIHX29uc2VsbAIEdHJ1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUGa1ByaWNlBQlzZXBhcmF0b3IJANgEAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQCkAwEFBXByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQVrU2VsbAkArAICCQCsAgIJANgEAQUHYXNzZXRpZAUJc2VwYXJhdG9yCQCkAwEFB2Ftb3VudDAFA25pbAFpAQZidXlORlQBBW5mdElEBAZjYWxsZXIJANoEAQgIBQFpBmNhbGxlcgVieXRlcwQHYXNzZXRJZAkA2QQBBQVuZnRJRAQGYW1vdW50CQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQIbmZ0T3duZXIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkA2AQBBQdhc3NldElkAgZfb3duZXIEBXByaWNlBAckbWF0Y2gwCQCdCAIFBHRoaXMJAKwCAgkA2AQBBQdhc3NldElkAhJfbmZ0X3NlbGxpbmdfcHJpY2UDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgEwBAZpc3NlbGwEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICCQDYBAEFB2Fzc2V0SWQCB19vbnNlbGwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgVmYWxzZQMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAAgECDFBheSBpbiB3YXZlcwMDCQECIT0CCQENcGFyc2VJbnRWYWx1ZQEFBXByaWNlBQZhbW91bnQJAAACCQENcGFyc2VJbnRWYWx1ZQEFBXByaWNlAAAHCQACAQIPSW52YWxpZCBwYXltZW50AwkAAAIFBmNhbGxlcgUIbmZ0T3duZXIJAAIBAiNORlQgb3duZXIgd2lsbCBub3QgYWJsZSB0byBidXkgdGhpcwMJAAACBQZjYWxsZXIJANgEAQUJZEFwcE93bmVyCQACAQIwWW91IGFyZSBub3QgZWxpZ2libGUgZHVlIHRvIG93bmVyIGFjY291bnQgb2YgYXBwAwkBAiE9AgUGaXNzZWxsAgR0cnVlCQACAQILTm90IG9uIHNlbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQlzZXBhcmF0b3IFBGtCdXkJAKwCAgkArAICBQVuZnRJRAUJc2VwYXJhdG9yCQCkAwEFBmFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQRrQnV5AgVfZnJvbQUIbmZ0T3duZXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQDYBAEFB2Fzc2V0SWQCBl9vd25lcgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJANgEAQUHYXNzZXRJZAIHX29uc2VsbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQhuZnRPd25lcgkBDXBhcnNlSW50VmFsdWUBBQVwcmljZQUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsAWkBCWRlbGV0ZU5GVAAEBnRva2VuMAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIHZGVsZXRlXwkA2AQBCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQCCnRva2VuIGJ1cm4JAMwIAgkBBEJ1cm4CCQEFdmFsdWUBBQZ0b2tlbjAAAQUDbmlsADT06VI=", "height": 2326831, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AHUY7MBMus2KeVfKy6E8AahhiwVwg9qqPNi4NzAbbfFX Next: HTwPmPT7gjjXpB3tfEt71hucoWmRUGnHsXsqeNdX1Jo5 Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "_"
55
66 let kBuy = "buy"
77
88 let kSell = "sell"
99
1010 let kPrice = "price"
1111
1212 let dAppOwner = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq'
1313
1414 func isNft (assetId) = match assetInfo(assetId) {
1515 case token: Asset =>
1616 if (if ((token.decimals == 0))
1717 then (token.quantity == 1)
1818 else false)
1919 then (token.reissuable == false)
2020 else false
2121 case _ =>
2222 false
2323 }
2424
2525
2626 @Callable(i)
2727 func issueNft (nft_name,nft_owner,nft_dAppAddress,nft_type,nft_tags,nft_selling_price,nft_description,nft_onSell,nft_image) = {
2828 let txId = i.transactionId
2929 let creator = toBase58String(i.caller.bytes)
3030 let creator_name = nft_owner
3131 let issueMetadata = (((((((("{creator: " + creator) + ",") + ("creator_name: " + creator_name)) + ",") + ("description: " + nft_description)) + ",") + ("nft_art_id" + toBase58String(txId))) + "}")
3232 let newToken = Issue(nft_name, issueMetadata, 1, 0, false)
3333 let issueId = calculateAssetId(newToken)
3434 [newToken, ScriptTransfer(i.caller, 1, issueId), StringEntry(((toBase58String(issueId) + separator) + "nft_owner"), toString(i.caller)), StringEntry(((toBase58String(issueId) + separator) + "nft_type"), nft_type), StringEntry(((toBase58String(issueId) + separator) + "nft_tags"), nft_tags), IntegerEntry(((toBase58String(issueId) + separator) + "nft_selling_price"), nft_selling_price), StringEntry(((toBase58String(issueId) + separator) + "nft_onSell"), nft_onSell), StringEntry(((toBase58String(issueId) + separator) + "nft_image"), nft_image), StringEntry(((toBase58String(issueId) + separator) + "nft_data"), issueMetadata), StringEntry(((toBase58String(i.caller.bytes) + separator) + "nft_owner"), creator), StringEntry(((toBase58String(txId) + separator) + "issue_nft"), toBase58String(issueId))]
3535 }
3636
3737
3838
3939 @Callable(i)
4040 func sellNFT (price) = {
4141 let token = i.payments[0].assetId
4242 let assetid = value(i.payments[0].assetId)
4343 let amount0 = value(i.payments[0].amount)
4444 if (!(isNft(assetid)))
4545 then throw("Token is not NFT")
4646 else [StringEntry((toBase58String(assetid) + "_owner"), toString(i.caller)), StringEntry((toBase58String(assetid) + "_nft_selling_price"), toString(price)), StringEntry((toBase58String(assetid) + "_onsell"), "true"), StringEntry(((kPrice + separator) + toBase58String(value(i.payments[0].assetId))), toString(price)), StringEntry(((toString(i.caller) + separator) + kSell), ((toBase58String(assetid) + separator) + toString(amount0)))]
4747 }
4848
4949
5050
5151 @Callable(i)
5252 func buyNFT (nftID) = {
5353 let caller = toBase64String(i.caller.bytes)
5454 let assetId = fromBase58String(nftID)
5555 let amount = value(i.payments[0].amount)
5656 let nftOwner = getStringValue((toBase58String(assetId) + "_owner"))
5757 let price = match getString(this, (toBase58String(assetId) + "_nft_selling_price")) {
5858 case a: String =>
5959 a
6060 case _ =>
6161 "0"
6262 }
6363 let issell = match getString(this, (toBase58String(assetId) + "_onsell")) {
6464 case a: String =>
6565 a
6666 case _ =>
6767 "false"
6868 }
6969 if ((i.payments[0].assetId != unit))
7070 then throw("Pay in waves")
7171 else if (if ((parseIntValue(price) != amount))
7272 then (parseIntValue(price) == 0)
7373 else false)
7474 then throw("Invalid payment")
7575 else if ((caller == nftOwner))
7676 then throw("NFT owner will not able to buy this")
7777 else if ((caller == toBase58String(dAppOwner)))
7878 then throw("You are not eligible due to owner account of app")
7979 else if ((issell != "true"))
8080 then throw("Not on sell")
8181 else [StringEntry(((toString(i.caller) + separator) + kBuy), ((nftID + separator) + toString(amount))), StringEntry((((toString(i.caller) + separator) + kBuy) + "_from"), nftOwner), DeleteEntry((toBase58String(assetId) + "_owner")), DeleteEntry((toBase58String(assetId) + "_onsell")), ScriptTransfer(addressFromStringValue(nftOwner), parseIntValue(price), unit), ScriptTransfer(i.caller, 1, assetId)]
8282 }
8383
8484
8585
8686 @Callable(i)
8787 func deleteNFT () = {
8888 let token0 = i.payments[0].assetId
8989 [StringEntry(("delete_" + toBase58String(value(i.payments[0].assetId))), "token burn"), Burn(value(token0), 1)]
9090 }
9191
9292

github/deemru/w8io/873ac7e 
24.71 ms