tx · KxeNzrMhp4EsChMTVU7HAWStTu45vwiDoBBMLACbQGh

3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy:  -0.01000000 Waves

2023.01.17 03:30 [2408218] smart account 3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy > SELF 0.00000000 Waves

{ "type": 13, "id": "KxeNzrMhp4EsChMTVU7HAWStTu45vwiDoBBMLACbQGh", "fee": 1000000, "feeAssetId": null, "timestamp": 1673915457322, "version": 2, "chainId": 84, "sender": "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy", "senderPublicKey": "C3PaRKeL8AUKbwUqdniMQtThgcTh5DYHV1777Hkxy7rp", "proofs": [ "5xgfj5cUjs4PJJNgPbxCwsDd8kotVj9j1EdpnDksmcYcXkcuudHhe8QcPhokErxvNq2h3BF4h8Ksa7MeZbEZgMus" ], "script": "base64:BgINCAISAwoBCBIECgIICA4ABWNoYWluCQCwCQEJAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZG5Bc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAgFXBQckbWF0Y2gwASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QMJAAACAgFUBQckbWF0Y2gwASD3dur394PKZdtuE+4CO89YKZWpwdGN8kvabNgdYoDI3gkAAgECDVVua25vd24gY2hhaW4AD2Vjb25vbXlDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQQHJG1hdGNoMAUFY2hhaW4DCQAAAgIBVwUHJG1hdGNoMAIjM1Ayc2sxS25jU3hSYVpzOGI0Q1dHUHcyamt2dmF2NzR1NEQDCQAAAgIBVAUHJG1hdGNoMAIjM044eTR3eFgzSkM0VGRyQ0pCWFgxNlNqV2Y2WDI1NmhyZXAJAAIBAg1Vbmtub3duIGNoYWluAA9zdGFraW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEEByRtYXRjaDAFBWNoYWluAwkAAAICAVcFByRtYXRjaDACIzNQTG5jWHRTMVU4M0Q2Y1FiRkQzSDhyQkhQTGd6eFNGS1oxAwkAAAICAVQFByRtYXRjaDACIzNOREN5Qkc1cTg1SnVhUmlpZ1VlRXRhaW55akNRVDNYcFptCQACAQINVW5rbm93biBjaGFpbgAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIgc3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcl8FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEOd2FsbGV0SW50ZXJuYWwBDnVzZXJBZGRyZXNzT3B0BARhZGRyCQCmCAEFDnVzZXJBZGRyZXNzT3B0BAdiYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAO8HAQkBBXZhbHVlAQUEYWRkcgkBDkJhbGFuY2VEZXRhaWxzBAAAAAAAAAAABAt1c2RuQmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFC3VzZG5Bc3NldElkAAAJAMwIAggFB2JhbGFuY2UJYXZhaWxhYmxlCQDMCAIFC3VzZG5CYWxhbmNlBQNuaWwCAWkBEndhbGxldEluZm9SRUFET05MWQEOdXNlckFkZHJlc3NPcHQECGJhbGFuY2VzCQEOd2FsbGV0SW50ZXJuYWwBBQ51c2VyQWRkcmVzc09wdAkAlAoCBQNuaWwJALkJAgkAzAgCAg4lcyVkJWRfX3dhbGxldAkAzAgCCQCkAwEJAJEDAgUIYmFsYW5jZXMAAAkAzAgCCQCkAwEJAJEDAgUIYmFsYW5jZXMAAQUDbmlsAgJfXwFpARBkdWNrSW5mb1JFQURPTkxZAgtkdWNrQXNzZXRJZA51c2VyQWRkcmVzc09wdAQEYWRkcgkApggBBQ51c2VyQWRkcmVzc09wdAQJZHVja0Fzc2V0CQDZBAEFC2R1Y2tBc3NldElkAwkAAAIFC2R1Y2tBc3NldElkAgAJAAIBAhdkdWNrQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULZHVja0Fzc2V0SWQAAAQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAMDCQEJaXNEZWZpbmVkAQUEYWRkcgkAAAIJAPAHAgkBBXZhbHVlAQUEYWRkcgUJZHVja0Fzc2V0AAEHBQ51c2VyQWRkcmVzc09wdAkAAgECDXVua25vd24gb3duZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFCWR1Y2tBc3NldAQEbmFtZQgFBWFzc2V0BG5hbWUEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkAgAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQA////////////AQQIYmFja3BhY2sJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoECGJhbGFuY2VzCQEOd2FsbGV0SW50ZXJuYWwBBQ51c2VyQWRkcmVzc09wdAkAlAoCBQNuaWwJAMwIAgkArAICAhIlcyVkX19zdGFrZWRUaW1lX18JAKQDAQUKc3Rha2VkVGltZQkAzAgCCQCsAgICDSVzJXNfX293bmVyX18FBW93bmVyCQDMCAIJAKwCAgIMJXMlc19fbmFtZV9fBQRuYW1lCQDMCAIJAKwCAgIQJXMlc19fbG9jYXRpb25fXwULY3VyTG9jYXRpb24JAMwIAgkArAICAg4lcyVkX19oZWFsdGhfXwkApAMBBQZoZWFsdGgJAMwIAgkArAICAhAlcyVzX19iYWNrUGFja19fBQhiYWNrcGFjawkAzAgCCQC5CQIJAMwIAgIOJXMlZCVkX193YWxsZXQJAMwIAgkApAMBCQCRAwIFCGJhbGFuY2VzAAAJAMwIAgkApAMBCQCRAwIFCGJhbGFuY2VzAAEFA25pbAICX18FA25pbAADmNlL", "height": 2408218, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BzAL94caPBNHrJANpPWPh5JiWNeJJbnpUyHVJWT3CkyM Next: fjM7qt9tfLoajfYJBzDKRimZRsEEdtmshVnhCrQcFPy Diff:
OldNewDifferences
1212 else throw("Unknown chain")
1313 }
1414
15-@Callable(i)
16-func walletInfoREADONLY (userAddressStrOpt) = {
17- let addr = addressFromString(userAddressStrOpt)
15+let economyContract = addressFromStringValue(match chain {
16+ case _ =>
17+ if (("W" == $match0))
18+ then "3P2sk1KncSxRaZs8b4CWGPw2jkvvav74u4D"
19+ else if (("T" == $match0))
20+ then "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep"
21+ else throw("Unknown chain")
22+})
23+
24+let stakingContract = addressFromStringValue(match chain {
25+ case _ =>
26+ if (("W" == $match0))
27+ then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
28+ else if (("T" == $match0))
29+ then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm"
30+ else throw("Unknown chain")
31+})
32+
33+let LANDPREFIX = "LAND"
34+
35+let DUCKPREFIX = "DUCK"
36+
37+func keyDuckIdToOwner (assetId) = ("duckOwner_" + assetId)
38+
39+
40+func keyStakedTimeByAssetId (assetId) = ("stakedTime_" + assetId)
41+
42+
43+func keyStakedDuckByOwner (ownerAddr) = ("stakedDuckByOwner_" + ownerAddr)
44+
45+
46+func keyStakedTimeByTypeAssetIdAndOwner (nftType,assetId,ownerAddr) = ((((("stakedTimeByTypeAssetIdAndOwner_" + nftType) + "_") + assetId) + "_") + ownerAddr)
47+
48+
49+func keyBackpackByDuck (duckAssetId) = ("backPack_" + duckAssetId)
50+
51+
52+func keyDuckLocation (duckAssetId) = ("duckLocation_" + duckAssetId)
53+
54+
55+func keyDuckHealth (duckAssetId) = ("duckHealth_" + duckAssetId)
56+
57+
58+func walletInternal (userAddressOpt) = {
59+ let addr = addressFromString(userAddressOpt)
1860 let balance = if (isDefined(addr))
1961 then wavesBalance(value(addr))
2062 else BalanceDetails(0, 0, 0, 0)
2163 let usdnBalance = if (isDefined(addr))
2264 then assetBalance(value(addr), usdnAssetId)
2365 else 0
24- $Tuple2(nil, makeString(["%d%d%d%d%d", toString(balance.regular), toString(balance.available), toString(balance.generating), toString(balance.effective), toString(usdnBalance)], "_"))
66+[balance.available, usdnBalance]
67+ }
68+
69+
70+@Callable(i)
71+func walletInfoREADONLY (userAddressOpt) = {
72+ let balances = walletInternal(userAddressOpt)
73+ $Tuple2(nil, makeString(["%s%d%d__wallet", toString(balances[0]), toString(balances[1])], "__"))
74+ }
75+
76+
77+
78+@Callable(i)
79+func duckInfoREADONLY (duckAssetId,userAddressOpt) = {
80+ let addr = addressFromString(userAddressOpt)
81+ let duckAsset = fromBase58String(duckAssetId)
82+ if ((duckAssetId == ""))
83+ then throw("duckAssetId is required")
84+ else {
85+ let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(duckAssetId)), 0)
86+ let owner = if ((stakedTime > 0))
87+ then value(getString(stakingContract, keyDuckIdToOwner(duckAssetId)))
88+ else if (if (isDefined(addr))
89+ then (assetBalance(value(addr), duckAsset) == 1)
90+ else false)
91+ then userAddressOpt
92+ else throw("unknown owner")
93+ let asset = value(assetInfo(duckAsset))
94+ let name = asset.name
95+ let curLocation = valueOrElse(getString(stakingContract, keyDuckLocation(duckAssetId)), "")
96+ let health = valueOrElse(getInteger(stakingContract, keyDuckHealth(duckAssetId)), -1)
97+ let backpack = valueOrElse(getString(stakingContract, keyBackpackByDuck(duckAssetId)), "0:0_0_0_0_0_0:0_0_0_0_0_0:")
98+ let balances = walletInternal(userAddressOpt)
99+ $Tuple2(nil, [("%s%d__stakedTime__" + toString(stakedTime)), ("%s%s__owner__" + owner), ("%s%s__name__" + name), ("%s%s__location__" + curLocation), ("%s%d__health__" + toString(health)), ("%s%s__backPack__" + backpack), makeString(["%s%d%d__wallet", toString(balances[0]), toString(balances[1])], "__")])
100+ }
25101 }
26102
27103
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let chain = toUtf8String(take(drop(this.bytes, 1), 1))
55
66 let usdnAssetId = match chain {
77 case _ =>
88 if (("W" == $match0))
99 then base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1010 else if (("T" == $match0))
1111 then base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
1212 else throw("Unknown chain")
1313 }
1414
15-@Callable(i)
16-func walletInfoREADONLY (userAddressStrOpt) = {
17- let addr = addressFromString(userAddressStrOpt)
15+let economyContract = addressFromStringValue(match chain {
16+ case _ =>
17+ if (("W" == $match0))
18+ then "3P2sk1KncSxRaZs8b4CWGPw2jkvvav74u4D"
19+ else if (("T" == $match0))
20+ then "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep"
21+ else throw("Unknown chain")
22+})
23+
24+let stakingContract = addressFromStringValue(match chain {
25+ case _ =>
26+ if (("W" == $match0))
27+ then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
28+ else if (("T" == $match0))
29+ then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm"
30+ else throw("Unknown chain")
31+})
32+
33+let LANDPREFIX = "LAND"
34+
35+let DUCKPREFIX = "DUCK"
36+
37+func keyDuckIdToOwner (assetId) = ("duckOwner_" + assetId)
38+
39+
40+func keyStakedTimeByAssetId (assetId) = ("stakedTime_" + assetId)
41+
42+
43+func keyStakedDuckByOwner (ownerAddr) = ("stakedDuckByOwner_" + ownerAddr)
44+
45+
46+func keyStakedTimeByTypeAssetIdAndOwner (nftType,assetId,ownerAddr) = ((((("stakedTimeByTypeAssetIdAndOwner_" + nftType) + "_") + assetId) + "_") + ownerAddr)
47+
48+
49+func keyBackpackByDuck (duckAssetId) = ("backPack_" + duckAssetId)
50+
51+
52+func keyDuckLocation (duckAssetId) = ("duckLocation_" + duckAssetId)
53+
54+
55+func keyDuckHealth (duckAssetId) = ("duckHealth_" + duckAssetId)
56+
57+
58+func walletInternal (userAddressOpt) = {
59+ let addr = addressFromString(userAddressOpt)
1860 let balance = if (isDefined(addr))
1961 then wavesBalance(value(addr))
2062 else BalanceDetails(0, 0, 0, 0)
2163 let usdnBalance = if (isDefined(addr))
2264 then assetBalance(value(addr), usdnAssetId)
2365 else 0
24- $Tuple2(nil, makeString(["%d%d%d%d%d", toString(balance.regular), toString(balance.available), toString(balance.generating), toString(balance.effective), toString(usdnBalance)], "_"))
66+[balance.available, usdnBalance]
67+ }
68+
69+
70+@Callable(i)
71+func walletInfoREADONLY (userAddressOpt) = {
72+ let balances = walletInternal(userAddressOpt)
73+ $Tuple2(nil, makeString(["%s%d%d__wallet", toString(balances[0]), toString(balances[1])], "__"))
74+ }
75+
76+
77+
78+@Callable(i)
79+func duckInfoREADONLY (duckAssetId,userAddressOpt) = {
80+ let addr = addressFromString(userAddressOpt)
81+ let duckAsset = fromBase58String(duckAssetId)
82+ if ((duckAssetId == ""))
83+ then throw("duckAssetId is required")
84+ else {
85+ let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(duckAssetId)), 0)
86+ let owner = if ((stakedTime > 0))
87+ then value(getString(stakingContract, keyDuckIdToOwner(duckAssetId)))
88+ else if (if (isDefined(addr))
89+ then (assetBalance(value(addr), duckAsset) == 1)
90+ else false)
91+ then userAddressOpt
92+ else throw("unknown owner")
93+ let asset = value(assetInfo(duckAsset))
94+ let name = asset.name
95+ let curLocation = valueOrElse(getString(stakingContract, keyDuckLocation(duckAssetId)), "")
96+ let health = valueOrElse(getInteger(stakingContract, keyDuckHealth(duckAssetId)), -1)
97+ let backpack = valueOrElse(getString(stakingContract, keyBackpackByDuck(duckAssetId)), "0:0_0_0_0_0_0:0_0_0_0_0_0:")
98+ let balances = walletInternal(userAddressOpt)
99+ $Tuple2(nil, [("%s%d__stakedTime__" + toString(stakedTime)), ("%s%s__owner__" + owner), ("%s%s__name__" + name), ("%s%s__location__" + curLocation), ("%s%d__health__" + toString(health)), ("%s%s__backPack__" + backpack), makeString(["%s%d%d__wallet", toString(balances[0]), toString(balances[1])], "__")])
100+ }
25101 }
26102
27103

github/deemru/w8io/c3f4982 
27.05 ms