tx · DfsdQFDhuzMvMGaHuZWJJnxHk3cTGpRHZJs54xRC5XQZ

3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H:  -0.01000000 Waves

2022.11.15 15:38 [2318249] smart account 3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H > SELF 0.00000000 Waves

{ "type": 13, "id": "DfsdQFDhuzMvMGaHuZWJJnxHk3cTGpRHZJs54xRC5XQZ", "fee": 1000000, "feeAssetId": null, "timestamp": 1668515986698, "version": 2, "chainId": 84, "sender": "3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H", "senderPublicKey": "BDeCphaaC4MZvfmbJqQZ78EvuEBZTJ1VEW7fbxue8BUu", "proofs": [ "3reQMkPqV9yZDGkVzvFpyyHEK1gjRyBqenjvdERRPXvKVwENUXfXac8cfFSe1WyWHitBnGzyJnfpZ9NqjFHzdFBY" ], "script": "base64:BgIfCAISCwoJCAgICAgBCAgIEgQKAggIEgMKAQgSAwoBAQUACXNlcGFyYXRvcgIBXwAEa0J1eQIDYnV5AAVrU2VsbAIEc2VsbAAGa1ByaWNlAgVwcmljZQEFaXNOZnQBB2Fzc2V0SWQEByRtYXRjaDAJAOwHAQUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgVBc3NldAQFdG9rZW4FByRtYXRjaDADAwkAAAIIBQV0b2tlbghkZWNpbWFscwAACQAAAggFBXRva2VuCHF1YW50aXR5AAEHCQAAAggFBXRva2VuCnJlaXNzdWFibGUHBwcEAWkBCWNyZWF0ZU5mdAkIbmZ0X25hbWUJbmZ0X293bmVyD25mdF9kQXBwQWRkcmVzcwhuZnRfdHlwZQhuZnRfdGFncxFuZnRfc2VsbGluZ19wcmljZQ9uZnRfZGVzY3JpcHRpb24KbmZ0X29uU2VsbAhuZnRfZGF0YQQIbmV3VG9rZW4JAMIIBQUIbmZ0X25hbWUFD25mdF9kZXNjcmlwdGlvbgABAAAHBAdpc3N1ZUlkCQC4CAEFCG5ld1Rva2VuCQDMCAIFCG5ld1Rva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdpc3N1ZUlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIJbmZ0X293bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCG5mdF90eXBlBQhuZnRfdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCG5mdF90YWdzBQhuZnRfdGFncwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICD25mdF9kQXBwQWRkcmVzcwUPbmZ0X2RBcHBBZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICEW5mdF9zZWxsaW5nX3ByaWNlBRFuZnRfc2VsbGluZ19wcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCm5mdF9vblNlbGwFCm5mdF9vblNlbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfZGF0YQUIbmZ0X2RhdGEFA25pbAFpAQhpc3N1ZU5mdAIEbmFtZQRtZXRhBAhuZXdUb2tlbgkAwggFBQRuYW1lBQRtZXRhAAEAAAcEB2lzc3VlSWQJALgIAQUIbmV3VG9rZW4JAMwIAgUIbmV3VG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2lzc3VlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgVPd25lcgkApQgBCAUBaQZjYWxsZXIFA25pbAFpAQZidXlORlQBBW5mdElEBAdhc3NldElkCQDZBAEFBW5mdElEBAZhbW91bnQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAVwcmljZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAKwCAgkArAICBQZrUHJpY2UFCXNlcGFyYXRvcgUFbmZ0SUQCHlRoZXJlIGlzIG5vIHByaWNlIGZvciB0aGlzIE5GVAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQCsAgIFBW5mdElEBQlzZXBhcmF0b3ICBU93bmVyAghObyBvd25lcgMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAAgECDFBheSBpbiB3YXZlcwMJAGYCCQENcGFyc2VJbnRWYWx1ZQEFBXByaWNlBQZhbW91bnQJAAIBAg9JbnZhbGlkIHBheW1lbnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBBXZhbHVlAQkApggBBQVvd25lcgkBDXBhcnNlSW50VmFsdWUBBQVwcmljZQUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXIFCXNlcGFyYXRvcgUEa0J1eQkArAICCQCsAgIFBW5mdElEBQlzZXBhcmF0b3IJAKQDAQUGYW1vdW50BQNuaWwBaQEHc2VsbE5GVAEFcHJpY2UECyR0MDIzNzMyNDU4CQCUCgIJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEBnRva2VuMAgFCyR0MDIzNzMyNDU4Al8xBAdhbW91bnQwCAULJHQwMjM3MzI0NTgCXzIDCQEBIQEJAQVpc05mdAEFBnRva2VuMAkAAgECEFRva2VuIGlzIG5vdCBORlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBmtQcmljZQUJc2VwYXJhdG9yCQDYBAEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkApAMBBQVwcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXIFCXNlcGFyYXRvcgUFa1NlbGwJAKwCAgkArAICCQDYBAEFBnRva2VuMAUJc2VwYXJhdG9yCQCkAwEFB2Ftb3VudDAFA25pbAB13X53", "height": 2318249, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5uE2vW9iEFmqNoC62DKaDkhKz6WxV3cNcJK3XVnZqoRf Next: 642CYa7Zqrcn2jazPwJjJSkrCcMnM87PHvJX8Ahkm1cT Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let kUserPayment = "Payment"
5-
6-let kWon = "Won"
7-
84 let separator = "_"
95
10-func randomize (bytes,range) = {
11- let hash = sha256(bytes)
12- let index = toInt(hash)
13- (index % range)
14- }
6+let kBuy = "buy"
157
8+let kSell = "sell"
169
17-func counting (bytes) = {
18- let count = randomize(bytes, 10)
19- if ((count >= 3))
20- then false
21- else true
22- }
10+let kPrice = "price"
11+
12+func isNft (assetId) = match assetInfo(assetId) {
13+ case token: Asset =>
14+ if (if ((token.decimals == 0))
15+ then (token.quantity == 1)
16+ else false)
17+ then (token.reissuable == false)
18+ else false
19+ case _ =>
20+ false
21+}
2322
2423
2524 @Callable(i)
26-func parseStruct () = if ((i.caller != this))
27- then throw("Only owner")
28- else {
29- let winnerStruct = counting(i.transactionId)
30-[BooleanEntry((((kWon + separator) + toString(i.caller)) + toString(randomize(i.transactionId, 1000))), winnerStruct), BooleanEntry(kWon, winnerStruct)]
31- }
25+func createNft (nft_name,nft_owner,nft_dAppAddress,nft_type,nft_tags,nft_selling_price,nft_description,nft_onSell,nft_data) = {
26+ let newToken = Issue(nft_name, nft_description, 1, 0, false)
27+ let issueId = calculateAssetId(newToken)
28+[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), StringEntry(((toBase58String(issueId) + separator) + "nft_dAppAddress"), nft_dAppAddress), IntegerEntry(((toBase58String(issueId) + separator) + "nft_selling_price"), nft_selling_price), StringEntry(((toBase58String(issueId) + separator) + "nft_onSell"), nft_onSell), StringEntry(((toBase58String(issueId) + separator) + "nft_data"), nft_data)]
29+ }
3230
3331
3432
3533 @Callable(i)
36-func startGame () = {
34+func issueNft (name,meta) = {
35+ let newToken = Issue(name, meta, 1, 0, false)
36+ let issueId = calculateAssetId(newToken)
37+[newToken, ScriptTransfer(i.caller, 1, issueId), StringEntry(((toBase58String(issueId) + separator) + "Owner"), toString(i.caller))]
38+ }
39+
40+
41+
42+@Callable(i)
43+func buyNFT (nftID) = {
44+ let assetId = fromBase58String(nftID)
3745 let amount = value(i.payments[0].amount)
46+ let price = valueOrErrorMessage(getString(((kPrice + separator) + nftID)), "There is no price for this NFT")
47+ let owner = valueOrErrorMessage(getStringValue(((nftID + separator) + "Owner")), "No owner")
3848 if ((i.payments[0].assetId != unit))
3949 then throw("Pay in waves")
40- else if ((100000000 > amount))
41- then throw("Too much amount")
42- else {
43- let nullInitStore = invoke(this, "parseStruct", nil, nil)
44- if ((nullInitStore == nullInitStore))
45- then {
46- let won = valueOrErrorMessage(getBoolean(this, kWon), "Storage read error")
47- if (won)
48- then [ScriptTransfer(i.caller, (amount * 2), unit)]
49- else nil
50- }
51- else throw("Strict value is not equal to itself.")
52- }
50+ else if ((parseIntValue(price) > amount))
51+ then throw("Invalid payment")
52+ else [ScriptTransfer(i.caller, 1, assetId), ScriptTransfer(value(addressFromString(owner)), parseIntValue(price), unit), StringEntry(((toString(i.caller) + separator) + kBuy), ((nftID + separator) + toString(amount)))]
53+ }
54+
55+
56+
57+@Callable(i)
58+func sellNFT (price) = {
59+ let $t023732458 = $Tuple2(value(i.payments[0].assetId), value(i.payments[0].amount))
60+ let token0 = $t023732458._1
61+ let amount0 = $t023732458._2
62+ if (!(isNft(token0)))
63+ then throw("Token is not NFT")
64+ else [StringEntry(((kPrice + separator) + toBase58String(value(i.payments[0].assetId))), toString(price)), StringEntry(((toString(i.caller) + separator) + kSell), ((toBase58String(token0) + separator) + toString(amount0)))]
5365 }
5466
5567

github/deemru/w8io/169f3d6 
41.32 ms