tx · GJF3MxpEhWGyoXSe5WYs9vmfSgwwbQQVxrXTvJsn6nzH

3MKvU5gtuaEGRZZzLaFZ5BKSQKGonX7QojQ:  -0.01000000 Waves

2025.12.03 05:18 [782813] smart account 3MKvU5gtuaEGRZZzLaFZ5BKSQKGonX7QojQ > SELF 0.00000000 Waves

{ "type": 13, "id": "GJF3MxpEhWGyoXSe5WYs9vmfSgwwbQQVxrXTvJsn6nzH", "fee": 1000000, "feeAssetId": null, "timestamp": 1764728312582, "version": 2, "chainId": 82, "sender": "3MKvU5gtuaEGRZZzLaFZ5BKSQKGonX7QojQ", "senderPublicKey": "9oFoXvXYVrsvMg9jAUsn2FMetmVXVypqDNWrfCQCu1GY", "proofs": [ "55i8QKeFmMvkoJzbkiJBeeQUxNUx5Vuf8MDbEgw1jao2yB4sp6MFRwFidiShws6UyvNUY853BTvXd2EdiLPV4t3r" ], "script": "base64:BgINCAISABIDCgEIEgASAAwACWNvbmZpZ1N0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzAg1jb25maWdBZGRyZXNzAiMzUE1vRWliZExlV3FjVVJRODM1MVhoYVd3eWFjRGM3RzRlNQAOQ09ORklHX0FERFJFU1MDCQAAAgUJY29uZmlnU3RyAgAFBHRoaXMJAQdBZGRyZXNzAQkA2QQBBQljb25maWdTdHIACXVzZG5JZFN0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5DT05GSUdfQUREUkVTUwIOdXNkbkFzc2V0SWRTdHICLERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAtwdXp6bGVJZFN0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5DT05GSUdfQUREUkVTUwIQcHV6emxlQXNzZXRJZFN0cgIsSEVCOFFhdzl4cldwV3M4dEhzaUFUWUdCV0RCdFAyUzdrY1BBTHJNdTQzQVMABnVzZG5JZAkA2QQBBQl1c2RuSWRTdHIACHB1enpsZUlkCQDZBAEFC3B1enpsZUlkU3RyAAVTY2FsZQCAoJSljR0BDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEQY2xhaW1BbGlhc1Jlc3VsdAIHYWRkcmVzcwphc3NldElkU3RyBAphZGRyZXNzU3RyCQClCAEFB2FkZHJlc3MED2N1cnJlbnRJbnRlcmVzdAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAQRbGFzdENoZWNrSW50ZXJlc3QJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgUKYWRkcmVzc1N0cgILX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAQMc3Rha2VkQW1vdW50AwkAAAIFCmFzc2V0SWRTdHIFCXVzZG5JZFN0cgkBDXRyeUdldEludGVnZXIBCQCsAgIFCmFkZHJlc3NTdHICB19zdGFrZWQJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgUKYWRkcmVzc1N0cgIBXwUKYXNzZXRJZFN0cgIHX3N0YWtlZAQGcmV3YXJkAwkAZgIFEWxhc3RDaGVja0ludGVyZXN0AAAJAGsDCQBlAgUPY3VycmVudEludGVyZXN0BRFsYXN0Q2hlY2tJbnRlcmVzdAUMc3Rha2VkQW1vdW50BQVTY2FsZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQphZGRyZXNzU3RyAgtfbGFzdENoZWNrXwUKYXNzZXRJZFN0cgIJX2ludGVyZXN0BQ9jdXJyZW50SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFCmFkZHJlc3NTdHICAV8FCmFzc2V0SWRTdHICCF9jbGFpbWVkCQBkAgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICBQphZGRyZXNzU3RyAgFfBQphc3NldElkU3RyAghfY2xhaW1lZAUGcmV3YXJkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFB2FkZHJlc3MFBnJld2FyZAUGdXNkbklkBQNuaWwBC2NsYWltUmVzdWx0AQdhZGRyZXNzCQEQY2xhaW1BbGlhc1Jlc3VsdAIFB2FkZHJlc3MFCXVzZG5JZFN0cgEQY2hlY2tORlRWYWxpZGl0eQEHYXNzZXRJZAAABAFpAQVzdGFrZQAECmFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBAVuZnRJZAMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAAIBAhFwbGVhc2UgYXR0YWNoIE5GVAQKYXNzZXRJZFN0cgkA2AQBBQZ1c2RuSWQED2N1cnJlbnRJbnRlcmVzdAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAQRdG90YWxTdGFrZWRBbW91bnQJAQ10cnlHZXRJbnRlZ2VyAQINZ2xvYmFsX3N0YWtlZAQKYXNzZXRQb3dlcgkAawMAkE4JARBjaGVja05GVFZhbGlkaXR5AQUFbmZ0SWQABQQHTkZUTmFtZQMJAAACBQphc3NldFBvd2VyAJBOAglFYWdsZSBORlQCCEFuaWEgTkZUAwkAAAIFCmFzc2V0UG93ZXIAAAkAAgECFm5vdCB2YWxpZCBORlQgYXR0YWNoZWQJAM4IAgkBC2NsYWltUmVzdWx0AQgFAWkGY2FsbGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1nbG9iYWxfc3Rha2VkCQBkAgURdG90YWxTdGFrZWRBbW91bnQFCmFzc2V0UG93ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUKYWRkcmVzc1N0cgIHX3N0YWtlZAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQkArAICBQphZGRyZXNzU3RyAgdfc3Rha2VkBQphc3NldFBvd2VyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkA2AQBBQVuZnRJZAIGX293bmVyBQphZGRyZXNzU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwkApQgBCAUBaQZjYWxsZXICBV9uZnRfCQDYBAEFBW5mdElkCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJANgEAQUFbmZ0SWQCBV9uYW1lBQdORlROYW1lBQNuaWwBaQEHdW5TdGFrZQEIbmZ0SWRTdHIECmFzc2V0UG93ZXIJAGsDAJBOCQEQY2hlY2tORlRWYWxpZGl0eQEJANkEAQUIbmZ0SWRTdHIABQQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEDHN0YWtlZEFtb3VudAkBDXRyeUdldEludGVnZXIBCQCsAgIFCmFkZHJlc3NTdHICB19zdGFrZWQECG5mdE93bmVyCQEMdHJ5R2V0U3RyaW5nAQkArAICBQhuZnRJZFN0cgIGX293bmVyAwkBAiE9AgUKYWRkcmVzc1N0cgUIbmZ0T3duZXIJAAIBAhx5b3UgZG9uJ3QgaGF2ZSBORlQgYXZhaWxhYmxlCQDOCAIJAQtjbGFpbVJlc3VsdAEIBQFpBmNhbGxlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphZGRyZXNzU3RyAgdfc3Rha2VkCQBlAgUMc3Rha2VkQW1vdW50BQphc3NldFBvd2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1nbG9iYWxfc3Rha2VkCQBlAgkBDXRyeUdldEludGVnZXIBAg1nbG9iYWxfc3Rha2VkBQphc3NldFBvd2VyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFCG5mdElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUIbmZ0SWRTdHICBl9vd25lcgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwkApQgBCAUBaQZjYWxsZXICBV9uZnRfBQhuZnRJZFN0cgUDbmlsAWkBC2NsYWltUmV3YXJkAAkBC2NsYWltUmVzdWx0AQgFAWkGY2FsbGVyAWkBC3RvcFVwUmV3YXJkAAQGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQKYXNzZXRJZFN0cgUJdXNkbklkU3RyBA9jdXJyZW50SW50ZXJlc3QJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICEWdsb2JhbF9sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfaW50ZXJlc3QEEXRvdGFsU3Rha2VkQW1vdW50CQENdHJ5R2V0SW50ZWdlcgECDWdsb2JhbF9zdGFrZWQEDWludGVyZXN0RGVsdGEDCQBmAgURdG90YWxTdGFrZWRBbW91bnQAAAkAawMFBmFtb3VudAUFU2NhbGUFEXRvdGFsU3Rha2VkQW1vdW50AAAEFGN1cnJlbnRVbHRyYUludGVyZXN0CQENdHJ5R2V0SW50ZWdlcgECH2dsb2JhbF9sYXN0Q2hlY2tfdWx0cmFfaW50ZXJlc3QEFnRvdGFsVWx0cmFTdGFrZWRBbW91bnQJAQ10cnlHZXRJbnRlZ2VyAQITZ2xvYmFsX3VsdHJhX3N0YWtlZAQSdWx0cmFJbnRlcmVzdERlbHRhAwkAZgIFEXRvdGFsU3Rha2VkQW1vdW50AAAJAGsDBQZhbW91bnQFBVNjYWxlBRF0b3RhbFN0YWtlZEFtb3VudAAAAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQZ1c2RuSWQJAAIBAhR3cm9uZyBhc3NldCBhdHRhY2hlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB2dsb2JhbF8FCmFzc2V0SWRTdHICCV9lYXJuaW5ncwkAZAIJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8FCmFzc2V0SWRTdHICCV9lYXJuaW5ncwUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAkAZAIFD2N1cnJlbnRJbnRlcmVzdAUNaW50ZXJlc3REZWx0YQUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleYsHdmU=", "height": 782813, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let configStr = valueOrElse(getString(this, "configAddress"), "3PMoEibdLeWqcURQ8351XhaWwyacDc7G4e5")
5+
6+let CONFIG_ADDRESS = if ((configStr == ""))
7+ then this
8+ else Address(fromBase58String(configStr))
9+
10+let usdnIdStr = valueOrElse(getString(CONFIG_ADDRESS, "usdnAssetIdStr"), "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")
11+
12+let puzzleIdStr = valueOrElse(getString(CONFIG_ADDRESS, "puzzleAssetIdStr"), "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS")
13+
14+let usdnId = fromBase58String(usdnIdStr)
15+
16+let puzzleId = fromBase58String(puzzleIdStr)
17+
18+let Scale = 1000000000000
19+
20+func tryGetInteger (key) = match getInteger(this, key) {
21+ case b: Int =>
22+ b
23+ case _ =>
24+ 0
25+}
26+
27+
28+func tryGetString (key) = match getString(this, key) {
29+ case a: String =>
30+ a
31+ case _ =>
32+ ""
33+}
34+
35+
36+func claimAliasResult (address,assetIdStr) = {
37+ let addressStr = toString(address)
38+ let currentInterest = tryGetInteger((("global_lastCheck_" + assetIdStr) + "_interest"))
39+ let lastCheckInterest = tryGetInteger((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"))
40+ let stakedAmount = if ((assetIdStr == usdnIdStr))
41+ then tryGetInteger((addressStr + "_staked"))
42+ else tryGetInteger((((addressStr + "_") + assetIdStr) + "_staked"))
43+ let reward = if ((lastCheckInterest > 0))
44+ then fraction((currentInterest - lastCheckInterest), stakedAmount, Scale)
45+ else 0
46+[IntegerEntry((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"), currentInterest), IntegerEntry((((addressStr + "_") + assetIdStr) + "_claimed"), (tryGetInteger((((addressStr + "_") + assetIdStr) + "_claimed")) + reward)), ScriptTransfer(address, reward, usdnId)]
47+ }
48+
49+
50+func claimResult (address) = claimAliasResult(address, usdnIdStr)
51+
52+
53+func checkNFTValidity (assetId) = 0
54+
55+
56+@Callable(i)
57+func stake () = {
58+ let addressStr = toString(i.caller)
59+ let nftId = if ((i.payments[0].amount == 1))
60+ then value(i.payments[0].assetId)
61+ else throw("please attach NFT")
62+ let assetIdStr = toBase58String(usdnId)
63+ let currentInterest = tryGetInteger((("global_lastCheck_" + assetIdStr) + "_interest"))
64+ let totalStakedAmount = tryGetInteger("global_staked")
65+ let assetPower = fraction(10000, checkNFTValidity(nftId), 5)
66+ let NFTName = if ((assetPower == 10000))
67+ then "Eagle NFT"
68+ else "Ania NFT"
69+ if ((assetPower == 0))
70+ then throw("not valid NFT attached")
71+ else (claimResult(i.caller) ++ [IntegerEntry("global_staked", (totalStakedAmount + assetPower)), IntegerEntry((addressStr + "_staked"), (tryGetInteger((addressStr + "_staked")) + assetPower)), StringEntry((toBase58String(nftId) + "_owner"), addressStr), IntegerEntry(((("address_" + toString(i.caller)) + "_nft_") + toBase58String(nftId)), lastBlock.timestamp), StringEntry((toBase58String(nftId) + "_name"), NFTName)])
72+ }
73+
74+
75+
76+@Callable(i)
77+func unStake (nftIdStr) = {
78+ let assetPower = fraction(10000, checkNFTValidity(fromBase58String(nftIdStr)), 5)
79+ let addressStr = toString(i.caller)
80+ let stakedAmount = tryGetInteger((addressStr + "_staked"))
81+ let nftOwner = tryGetString((nftIdStr + "_owner"))
82+ if ((addressStr != nftOwner))
83+ then throw("you don't have NFT available")
84+ else (claimResult(i.caller) ++ [IntegerEntry((addressStr + "_staked"), (stakedAmount - assetPower)), IntegerEntry("global_staked", (tryGetInteger("global_staked") - assetPower)), ScriptTransfer(i.caller, 1, fromBase58String(nftIdStr)), DeleteEntry((nftIdStr + "_owner")), DeleteEntry(((("address_" + toString(i.caller)) + "_nft_") + nftIdStr))])
85+ }
86+
87+
88+
89+@Callable(i)
90+func claimReward () = claimResult(i.caller)
91+
92+
93+
94+@Callable(i)
95+func topUpReward () = {
96+ let amount = i.payments[0].amount
97+ let assetIdStr = usdnIdStr
98+ let currentInterest = tryGetInteger((("global_lastCheck_" + assetIdStr) + "_interest"))
99+ let totalStakedAmount = tryGetInteger("global_staked")
100+ let interestDelta = if ((totalStakedAmount > 0))
101+ then fraction(amount, Scale, totalStakedAmount)
102+ else 0
103+ let currentUltraInterest = tryGetInteger("global_lastCheck_ultra_interest")
104+ let totalUltraStakedAmount = tryGetInteger("global_ultra_staked")
105+ let ultraInterestDelta = if ((totalStakedAmount > 0))
106+ then fraction(amount, Scale, totalStakedAmount)
107+ else 0
108+ if ((i.payments[0].assetId != usdnId))
109+ then throw("wrong asset attached")
110+ else [IntegerEntry((("global_" + assetIdStr) + "_earnings"), (tryGetInteger((("global_" + assetIdStr) + "_earnings")) + amount)), IntegerEntry((("global_lastCheck_" + assetIdStr) + "_interest"), (currentInterest + interestDelta))]
111+ }
112+
113+
114+@Verifier(tx)
115+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
116+

github/deemru/w8io
18.57 ms