tx · Vja8KeavLZvHAwp5ZcxanT4xx7P7Z9va937yhkmXNo5

3NCz3oCc3PNdauKDJEiPLzQwpBXXYEBc9p2:  -0.00200000 Waves

2022.08.02 16:21 [2166919] smart account 3NCz3oCc3PNdauKDJEiPLzQwpBXXYEBc9p2 > SELF 0.00000000 Waves

{ "type": 13, "id": "Vja8KeavLZvHAwp5ZcxanT4xx7P7Z9va937yhkmXNo5", "fee": 200000, "feeAssetId": null, "timestamp": 1659446548577, "version": 2, "chainId": 84, "sender": "3NCz3oCc3PNdauKDJEiPLzQwpBXXYEBc9p2", "senderPublicKey": "3rvQsNbK5fc274oTJXxit5LUfVpNUHyPrKiaJZbmJ7zx", "proofs": [ "2rgY7rKx2eBoFmbT9LTqo9BXCjCSL49LptV4raNjRdLhaWBN79h7HGpUqDgL8Rp55iJSuSVT9Y3E8gvdQrQbniTQ" ], "script": "base64:BgIRCAISBgoECAgICBIDCgEIEgAOAAdrQ29tbW9uAgZjb21tb24ABWtSYXJlAgRyYXJlAAprTGVnZW5kYXJ5AglsZWdlbmRhcnkABmtQcmljZQIKcHJpY2VMZXZlcgAJc2VwYXJhdG9yAgF8AAdrQWN0aXZlAgZhY3RpdmUABmFjdGl2ZQkBEUBleHRyTmF0aXZlKDEwNTEpAgUEdGhpcwUHa0FjdGl2ZQAJY291bnRSYXJlCQBkAgABCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFBWtSYXJlAAAAC2NvdW50Q29tbW9uCQBkAgABCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFB2tDb21tb24AAAAOY291bnRMZWdlbmRhcnkJAGQCAAEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUKa0xlZ2VuZGFyeQAAAQhpc0FjdGl2ZQADBQZhY3RpdmUFBHVuaXQJAAIBAg9TdG9yZSBpcyBhY3RpdmUBCXJhbmRvbWl6ZQIFYnl0ZXMFcmFuZ2UEBGhhc2gJAPcDAQUFYnl0ZXMEBWluZGV4CQCxCQEFBGhhc2gJAGoCBQVpbmRleAUFcmFuZ2UBCmV4dHJhQ291bnQBBHJhcmUDCQAAAgUEcmFyZQUHa0NvbW1vbgkBDEludGVnZXJFbnRyeQIFB2tDb21tb24FC2NvdW50Q29tbW9uAwkAAAIFBHJhcmUFBWtSYXJlCQEMSW50ZWdlckVudHJ5AgUFa1JhcmUFC2NvdW50Q29tbW9uCQEMSW50ZWdlckVudHJ5AgUKa0xlZ2VuZGFyeQUOY291bnRMZWdlbmRhcnkBEWNhbGN1bGF0aW9uUmFyaXR5AQ10cmFuc2FjdGlvbklkBAl0b2tlblJhcmUJAQlyYW5kb21pemUCBQ10cmFuc2FjdGlvbklkAGQDCQBnAgAFBQl0b2tlblJhcmUFCmtMZWdlbmRhcnkDCQBnAgUJdG9rZW5SYXJlAFAFBWtSYXJlBQdrQ29tbW9uAwFpAQhpc3N1ZU5mdAQEbmFtZQRkZXNjBnJhcml0eQZwcmVmaXgDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgpPbmx5IG93bmVyBAhuZXdUb2tlbgkAwggFBQRuYW1lBQRkZXNjAAEAAAcEB2lzc3VlSWQJALgIAQUIbmV3VG9rZW4JAMwIAgUIbmV3VG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCAUIbmV3VG9rZW4IcXVhbnRpdHkFB2lzc3VlSWQFA25pbAFpAQhzZXRQcmljZQEFcHJpY2UDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgpPbmx5IG93bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmtQcmljZQUFcHJpY2UFA25pbAFpAQxwdWxsVGhlTGV2ZXIAAwkBASEBBQZhY3RpdmUJAAIBAg1Ob3QgYWN0aXZhdGVkBAZhbW91bnQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0CQACAQIMUGF5IGluIHdhdmVzBAxjb3JyZWN0UHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFBmtQcmljZQMJAGYCBQxjb3JyZWN0UHJpY2UFBmFtb3VudAkAAgECFlBheW1lbnQgYW1vdW50IDwgcHJpY2UEBnJhcml0eQkBEWNhbGN1bGF0aW9uUmFyaXR5AQgFAWkNdHJhbnNhY3Rpb25JZAQKc3RydWN0UmFyZQkBCmV4dHJhQ291bnQBBQZyYXJpdHkJAMwIAgUKc3RydWN0UmFyZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgUGcmFyaXR5BQlzZXBhcmF0b3IJAKQDAQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUGcmFyaXR5BQNuaWwAfNP9gQ==", "height": 2166919, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 676bakyFA99q3eahNLFUsBr24aKyg4e6C1PCtzGj86h2 Next: 4XQo9vUurvxsoaFXLMJE2bnnHDJCTf2J6Jago5N4M3wa Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let kCommon = "common"
5+
6+let kRare = "rare"
7+
8+let kLegendary = "legendary"
9+
410 let kPrice = "priceLever"
511
612 let separator = "|"
713
814 let kActive = "active"
15+
16+let active = getBooleanValue(this, kActive)
17+
18+let countRare = (1 + valueOrElse(getInteger(this, kRare), 0))
19+
20+let countCommon = (1 + valueOrElse(getInteger(this, kCommon), 0))
21+
22+let countLegendary = (1 + valueOrElse(getInteger(this, kLegendary), 0))
23+
24+func isActive () = if (active)
25+ then unit
26+ else throw("Store is active")
27+
928
1029 func randomize (bytes,range) = {
1130 let hash = sha256(bytes)
1433 }
1534
1635
36+func extraCount (rare) = if ((rare == kCommon))
37+ then IntegerEntry(kCommon, countCommon)
38+ else if ((rare == kRare))
39+ then IntegerEntry(kRare, countCommon)
40+ else IntegerEntry(kLegendary, countLegendary)
41+
42+
1743 func calculationRarity (transactionId) = {
1844 let tokenRare = randomize(transactionId, 100)
19- let numberToken = randomize(transactionId, 3)
20- let common = "common"
21- let rare = "rare"
22- let legendary = "legendary"
2345 if ((5 >= tokenRare))
24- then ((legendary + separator) + toString(numberToken))
46+ then kLegendary
2547 else if ((tokenRare >= 80))
26- then ((rare + separator) + toString(numberToken))
27- else ((common + separator) + toString(numberToken))
48+ then kRare
49+ else kCommon
2850 }
2951
3052
3456 else {
3557 let newToken = Issue(name, desc, 1, 0, false)
3658 let issueId = calculateAssetId(newToken)
37-[StringEntry(((rarity + separator) + prefix), toBase58String(issueId)), newToken]
59+[newToken, ScriptTransfer(i.caller, newToken.quantity, issueId)]
3860 }
3961
4062
4769
4870
4971 @Callable(i)
50-func pullTheLever () = {
51- let rarity = calculationRarity(i.transactionId)
52-[ScriptTransfer(i.caller, 1, fromBase58String(getStringValue(this, rarity)))]
53- }
72+func pullTheLever () = if (!(active))
73+ then throw("Not activated")
74+ else {
75+ let amount = value(i.payments[0].amount)
76+ if ((i.payments[0].assetId != unit))
77+ then throw("Pay in waves")
78+ else {
79+ let correctPrice = getIntegerValue(this, kPrice)
80+ if ((correctPrice > amount))
81+ then throw("Payment amount < price")
82+ else {
83+ let rarity = calculationRarity(i.transactionId)
84+ let structRare = extraCount(rarity)
85+[structRare, ScriptTransfer(i.caller, 1, fromBase58String(getStringValue(this, ((rarity + separator) + toString(getIntegerValue(this, rarity))))))]
86+ }
87+ }
88+ }
5489
5590
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let kCommon = "common"
5+
6+let kRare = "rare"
7+
8+let kLegendary = "legendary"
9+
410 let kPrice = "priceLever"
511
612 let separator = "|"
713
814 let kActive = "active"
15+
16+let active = getBooleanValue(this, kActive)
17+
18+let countRare = (1 + valueOrElse(getInteger(this, kRare), 0))
19+
20+let countCommon = (1 + valueOrElse(getInteger(this, kCommon), 0))
21+
22+let countLegendary = (1 + valueOrElse(getInteger(this, kLegendary), 0))
23+
24+func isActive () = if (active)
25+ then unit
26+ else throw("Store is active")
27+
928
1029 func randomize (bytes,range) = {
1130 let hash = sha256(bytes)
1231 let index = toInt(hash)
1332 (index % range)
1433 }
1534
1635
36+func extraCount (rare) = if ((rare == kCommon))
37+ then IntegerEntry(kCommon, countCommon)
38+ else if ((rare == kRare))
39+ then IntegerEntry(kRare, countCommon)
40+ else IntegerEntry(kLegendary, countLegendary)
41+
42+
1743 func calculationRarity (transactionId) = {
1844 let tokenRare = randomize(transactionId, 100)
19- let numberToken = randomize(transactionId, 3)
20- let common = "common"
21- let rare = "rare"
22- let legendary = "legendary"
2345 if ((5 >= tokenRare))
24- then ((legendary + separator) + toString(numberToken))
46+ then kLegendary
2547 else if ((tokenRare >= 80))
26- then ((rare + separator) + toString(numberToken))
27- else ((common + separator) + toString(numberToken))
48+ then kRare
49+ else kCommon
2850 }
2951
3052
3153 @Callable(i)
3254 func issueNft (name,desc,rarity,prefix) = if ((i.caller != this))
3355 then throw("Only owner")
3456 else {
3557 let newToken = Issue(name, desc, 1, 0, false)
3658 let issueId = calculateAssetId(newToken)
37-[StringEntry(((rarity + separator) + prefix), toBase58String(issueId)), newToken]
59+[newToken, ScriptTransfer(i.caller, newToken.quantity, issueId)]
3860 }
3961
4062
4163
4264 @Callable(i)
4365 func setPrice (price) = if ((i.caller != this))
4466 then throw("Only owner")
4567 else [StringEntry(kPrice, price)]
4668
4769
4870
4971 @Callable(i)
50-func pullTheLever () = {
51- let rarity = calculationRarity(i.transactionId)
52-[ScriptTransfer(i.caller, 1, fromBase58String(getStringValue(this, rarity)))]
53- }
72+func pullTheLever () = if (!(active))
73+ then throw("Not activated")
74+ else {
75+ let amount = value(i.payments[0].amount)
76+ if ((i.payments[0].assetId != unit))
77+ then throw("Pay in waves")
78+ else {
79+ let correctPrice = getIntegerValue(this, kPrice)
80+ if ((correctPrice > amount))
81+ then throw("Payment amount < price")
82+ else {
83+ let rarity = calculationRarity(i.transactionId)
84+ let structRare = extraCount(rarity)
85+[structRare, ScriptTransfer(i.caller, 1, fromBase58String(getStringValue(this, ((rarity + separator) + toString(getIntegerValue(this, rarity))))))]
86+ }
87+ }
88+ }
5489
5590

github/deemru/w8io/03bedc9 
40.38 ms