tx · 7668XWWnCa8Ai6kvdvd7we67TSeqHgXeNkFWdVjjEyGB

3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW:  -0.01000000 Waves

2023.02.22 15:23 [3526349] smart account 3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW > SELF 0.00000000 Waves

{ "type": 13, "id": "7668XWWnCa8Ai6kvdvd7we67TSeqHgXeNkFWdVjjEyGB", "fee": 1000000, "feeAssetId": null, "timestamp": 1677068648237, "version": 2, "chainId": 87, "sender": "3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW", "senderPublicKey": "3zM4iabKGceAs2Q6qdZX3kAviP41X4VtGjHRAHd6oB2E", "proofs": [ "38UhTtxpyKpU5YzuEuPnKRp3NDJCAXit73jiaqheTymzeR1mMPnoAvXvEizuzQT3R6888W9SeTiwgw7E9wc11eVY" ], "script": "base64:BgINCAISABIDCgEIEgASAAoABnVzZG5JZAEgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEACXVzZG5JZFN0cgIsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHAACHB1enpsZUlkASDxGv4l/vaZOPRpKsTf4RLWR7LGyg66Nwmvd20fjqLlYwALcHV6emxlSWRTdHICLEhFQjhRYXc5eHJXcFdzOHRIc2lBVFlHQldEQnRQMlM3a2NQQUxyTXU0M0FTAAVTY2FsZQCAoJSljR0BDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEQY2xhaW1BbGlhc1Jlc3VsdAIHYWRkcmVzcwphc3NldElkU3RyBAphZGRyZXNzU3RyCQClCAEFB2FkZHJlc3MED2N1cnJlbnRJbnRlcmVzdAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAQMc3Rha2VkQW1vdW50CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgUKYWRkcmVzc1N0cgIHX3N0YWtlZAQYbGFzdENoZWNrSW50ZXJlc3RJblN0YXRlCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICCQCsAgIFCmFkZHJlc3NTdHICC19sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfaW50ZXJlc3QEEWxhc3RDaGVja0ludGVyZXN0AwkAAAIFGGxhc3RDaGVja0ludGVyZXN0SW5TdGF0ZQAABQVTY2FsZQUYbGFzdENoZWNrSW50ZXJlc3RJblN0YXRlBAZyZXdhcmQDCQBmAgURbGFzdENoZWNrSW50ZXJlc3QAAAkAawMJAGUCBQ9jdXJyZW50SW50ZXJlc3QFEWxhc3RDaGVja0ludGVyZXN0BQxzdGFrZWRBbW91bnQFBVNjYWxlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFCmFkZHJlc3NTdHICC19sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfaW50ZXJlc3QFD2N1cnJlbnRJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUKYWRkcmVzc1N0cgIBXwUKYXNzZXRJZFN0cgIIX2NsYWltZWQJAGQCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICCQCsAgIFCmFkZHJlc3NTdHICAV8FCmFzc2V0SWRTdHICCF9jbGFpbWVkBQZyZXdhcmQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUHYWRkcmVzcwUGcmV3YXJkCQDZBAEFCmFzc2V0SWRTdHIFA25pbAELY2xhaW1SZXN1bHQBB2FkZHJlc3MJARBjbGFpbUFsaWFzUmVzdWx0AgUHYWRkcmVzcwUJdXNkbklkU3RyARBjaGVja05GVFZhbGlkaXR5AQdhc3NldElkBAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQEaAVc6UWFHh6QXedxglaC2Zss83iUvrjDv+/YJAKwCAgkArAICAgRhcnRfCQDYBAEFB2Fzc2V0SWQCBV90eXBlAwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAAFAwkAAAIJAJ0IAgkBB0FkZHJlc3MBARoBV5PdxNIX5yAK/fchEk7w8HZnJoMDeNRcTAkArAICCQCsAgICBG5mdF8JANgEAQUHYXNzZXRJZAIHX2lzc3VlcgIjM1BNa2k1c0hCc1FiNEtnRGtuYlV3c0wzWWd4YUN6YVpuQ0oAAQAABAFpAQVzdGFrZQAECmFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBAVuZnRJZAMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAAIBAhFwbGVhc2UgYXR0YWNoIE5GVAQKYXNzZXRJZFN0cgkA2AQBBQZ1c2RuSWQED2N1cnJlbnRJbnRlcmVzdAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAQRdG90YWxTdGFrZWRBbW91bnQJAQ10cnlHZXRJbnRlZ2VyAQINZ2xvYmFsX3N0YWtlZAQKYXNzZXRQb3dlcgkAawMAkE4JARBjaGVja05GVFZhbGlkaXR5AQUFbmZ0SWQABQQHTkZUTmFtZQMJAAACBQphc3NldFBvd2VyAJBOAglFYWdsZSBORlQCCEFuaWEgTkZUAwkAAAIFCmFzc2V0UG93ZXIAAAkAAgECFm5vdCB2YWxpZCBORlQgYXR0YWNoZWQJAM4IAgkBC2NsYWltUmVzdWx0AQgFAWkGY2FsbGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1nbG9iYWxfc3Rha2VkCQBkAgURdG90YWxTdGFrZWRBbW91bnQFCmFzc2V0UG93ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUKYWRkcmVzc1N0cgIHX3N0YWtlZAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQkArAICBQphZGRyZXNzU3RyAgdfc3Rha2VkBQphc3NldFBvd2VyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkA2AQBBQVuZnRJZAIGX293bmVyBQphZGRyZXNzU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwkApQgBCAUBaQZjYWxsZXICBV9uZnRfCQDYBAEFBW5mdElkCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJANgEAQUFbmZ0SWQCBV9uYW1lBQdORlROYW1lBQNuaWwBaQEHdW5TdGFrZQEIbmZ0SWRTdHIECmFzc2V0UG93ZXIJAGsDAJBOCQEQY2hlY2tORlRWYWxpZGl0eQEJANkEAQUIbmZ0SWRTdHIABQQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEDHN0YWtlZEFtb3VudAkBDXRyeUdldEludGVnZXIBCQCsAgIFCmFkZHJlc3NTdHICB19zdGFrZWQECG5mdE93bmVyCQEMdHJ5R2V0U3RyaW5nAQkArAICBQhuZnRJZFN0cgIGX293bmVyAwkBAiE9AgUKYWRkcmVzc1N0cgUIbmZ0T3duZXIJAAIBAhx5b3UgZG9uJ3QgaGF2ZSBORlQgYXZhaWxhYmxlCQDOCAIJAQtjbGFpbVJlc3VsdAEIBQFpBmNhbGxlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphZGRyZXNzU3RyAgdfc3Rha2VkCQBlAgUMc3Rha2VkQW1vdW50BQphc3NldFBvd2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1nbG9iYWxfc3Rha2VkCQBlAgkBDXRyeUdldEludGVnZXIBAg1nbG9iYWxfc3Rha2VkBQphc3NldFBvd2VyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFCG5mdElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUIbmZ0SWRTdHICBl9vd25lcgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwkApQgBCAUBaQZjYWxsZXICBV9uZnRfBQhuZnRJZFN0cgUDbmlsAWkBC2NsYWltUmV3YXJkAAkBC2NsYWltUmVzdWx0AQgFAWkGY2FsbGVyAWkBC3RvcFVwUmV3YXJkAAQIcG10QXNzZXQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQGYW1vdW50AwkAAAIFCHBtdEFzc2V0BQZ1c2RuSWQEAmIwCQDwBwIFBHRoaXMFCHB1enpsZUlkAwkAAAIFAmIwBQJiMAQDaW52CQD8BwQJAQdBZGRyZXNzAQEaAVdmtaI7XK5yleZ8yvU69P91pKp0w9976x8CCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCAUBaQhwYXltZW50cwMJAAACBQNpbnYFA2ludgQCYjEJAPAHAgUEdGhpcwUIcHV6emxlSWQDCQAAAgUCYjEFAmIxCQBlAgUCYjEFAmIwCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFCHBtdEFzc2V0BQhwdXp6bGVJZAUJcG10QW1vdW50CQACAQIabm90IGNvcnJlY3QgYXNzZXQgYXR0YWNoZWQDCQAAAgUGYW1vdW50BQZhbW91bnQED2N1cnJlbnRJbnRlcmVzdAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FC3B1enpsZUlkU3RyAglfaW50ZXJlc3QEEXRvdGFsU3Rha2VkQW1vdW50CQENdHJ5R2V0SW50ZWdlcgECDWdsb2JhbF9zdGFrZWQEDWludGVyZXN0RGVsdGEDCQBmAgURdG90YWxTdGFrZWRBbW91bnQAAAkAawMFBmFtb3VudAUFU2NhbGUFEXRvdGFsU3Rha2VkQW1vdW50AAAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB2dsb2JhbF8FC3B1enpsZUlkU3RyAglfZWFybmluZ3MJAGQCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfBQtwdXp6bGVJZFN0cgIJX2Vhcm5pbmdzBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAhFnbG9iYWxfbGFzdENoZWNrXwULcHV6emxlSWRTdHICCV9pbnRlcmVzdAkAZAIFD2N1cnJlbnRJbnRlcmVzdAUNaW50ZXJlc3REZWx0YQUDbmlsBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5jJesJw==", "height": 3526349, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BMHi6aizuyHwz9BbGhJyb199w4CCePG7AS3dsqW9Aips Next: 2VeGmfsW6V4W4FadivcpX5zKRiFX85FMxhF9QQkjNpuW Diff:
OldNewDifferences
66 let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
77
88 let puzzleId = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
9+
10+let puzzleIdStr = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"
911
1012 let Scale = 1000000000000
1113
2830 func claimAliasResult (address,assetIdStr) = {
2931 let addressStr = toString(address)
3032 let currentInterest = tryGetInteger((("global_lastCheck_" + assetIdStr) + "_interest"))
31- let lastCheckInterest = tryGetInteger((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"))
32- let stakedAmount = if ((assetIdStr == usdnIdStr))
33- then tryGetInteger((addressStr + "_staked"))
34- else tryGetInteger((((addressStr + "_") + assetIdStr) + "_staked"))
33+ let stakedAmount = tryGetInteger((addressStr + "_staked"))
34+ let lastCheckInterestInState = tryGetInteger((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"))
35+ let lastCheckInterest = if ((lastCheckInterestInState == 0))
36+ then Scale
37+ else lastCheckInterestInState
3538 let reward = if ((lastCheckInterest > 0))
3639 then fraction((currentInterest - lastCheckInterest), stakedAmount, Scale)
3740 else 0
38-[IntegerEntry((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"), currentInterest), IntegerEntry((((addressStr + "_") + assetIdStr) + "_claimed"), (tryGetInteger((((addressStr + "_") + assetIdStr) + "_claimed")) + reward)), ScriptTransfer(address, reward, usdnId)]
41+[IntegerEntry((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"), currentInterest), IntegerEntry((((addressStr + "_") + assetIdStr) + "_claimed"), (tryGetInteger((((addressStr + "_") + assetIdStr) + "_claimed")) + reward)), ScriptTransfer(address, reward, fromBase58String(assetIdStr))]
3942 }
4043
4144
9295
9396 @Callable(i)
9497 func topUpReward () = {
95- let amount = i.payments[0].amount
96- let assetIdStr = usdnIdStr
97- let currentInterest = tryGetInteger((("global_lastCheck_" + assetIdStr) + "_interest"))
98- let totalStakedAmount = tryGetInteger("global_staked")
99- let interestDelta = if ((totalStakedAmount > 0))
100- then fraction(amount, Scale, totalStakedAmount)
101- else 0
102- let currentUltraInterest = tryGetInteger("global_lastCheck_ultra_interest")
103- let totalUltraStakedAmount = tryGetInteger("global_ultra_staked")
104- let ultraInterestDelta = if ((totalStakedAmount > 0))
105- then fraction(amount, Scale, totalStakedAmount)
106- else 0
107- if ((i.payments[0].assetId != usdnId))
108- then throw("wrong asset attached")
109- else [IntegerEntry((("global_" + assetIdStr) + "_earnings"), (tryGetInteger((("global_" + assetIdStr) + "_earnings")) + amount)), IntegerEntry((("global_lastCheck_" + assetIdStr) + "_interest"), (currentInterest + interestDelta))]
98+ let pmtAsset = value(i.payments[0].assetId)
99+ let pmtAmount = i.payments[0].amount
100+ let amount = if ((pmtAsset == usdnId))
101+ then {
102+ let b0 = assetBalance(this, puzzleId)
103+ if ((b0 == b0))
104+ then {
105+ let inv = invoke(Address(base58'3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee'), "exchange", [1], i.payments)
106+ if ((inv == inv))
107+ then {
108+ let b1 = assetBalance(this, puzzleId)
109+ if ((b1 == b1))
110+ then (b1 - b0)
111+ else throw("Strict value is not equal to itself.")
112+ }
113+ else throw("Strict value is not equal to itself.")
114+ }
115+ else throw("Strict value is not equal to itself.")
116+ }
117+ else if ((pmtAsset == puzzleId))
118+ then pmtAmount
119+ else throw("not correct asset attached")
120+ if ((amount == amount))
121+ then {
122+ let currentInterest = tryGetInteger((("global_lastCheck_" + puzzleIdStr) + "_interest"))
123+ let totalStakedAmount = tryGetInteger("global_staked")
124+ let interestDelta = if ((totalStakedAmount > 0))
125+ then fraction(amount, Scale, totalStakedAmount)
126+ else 0
127+ $Tuple2([IntegerEntry((("global_" + puzzleIdStr) + "_earnings"), (tryGetInteger((("global_" + puzzleIdStr) + "_earnings")) + amount)), IntegerEntry((("global_lastCheck_" + puzzleIdStr) + "_interest"), (currentInterest + interestDelta))], amount)
128+ }
129+ else throw("Strict value is not equal to itself.")
110130 }
111131
112132
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
55
66 let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
77
88 let puzzleId = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
9+
10+let puzzleIdStr = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"
911
1012 let Scale = 1000000000000
1113
1214 func tryGetInteger (key) = match getInteger(this, key) {
1315 case b: Int =>
1416 b
1517 case _ =>
1618 0
1719 }
1820
1921
2022 func tryGetString (key) = match getString(this, key) {
2123 case a: String =>
2224 a
2325 case _ =>
2426 ""
2527 }
2628
2729
2830 func claimAliasResult (address,assetIdStr) = {
2931 let addressStr = toString(address)
3032 let currentInterest = tryGetInteger((("global_lastCheck_" + assetIdStr) + "_interest"))
31- let lastCheckInterest = tryGetInteger((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"))
32- let stakedAmount = if ((assetIdStr == usdnIdStr))
33- then tryGetInteger((addressStr + "_staked"))
34- else tryGetInteger((((addressStr + "_") + assetIdStr) + "_staked"))
33+ let stakedAmount = tryGetInteger((addressStr + "_staked"))
34+ let lastCheckInterestInState = tryGetInteger((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"))
35+ let lastCheckInterest = if ((lastCheckInterestInState == 0))
36+ then Scale
37+ else lastCheckInterestInState
3538 let reward = if ((lastCheckInterest > 0))
3639 then fraction((currentInterest - lastCheckInterest), stakedAmount, Scale)
3740 else 0
38-[IntegerEntry((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"), currentInterest), IntegerEntry((((addressStr + "_") + assetIdStr) + "_claimed"), (tryGetInteger((((addressStr + "_") + assetIdStr) + "_claimed")) + reward)), ScriptTransfer(address, reward, usdnId)]
41+[IntegerEntry((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"), currentInterest), IntegerEntry((((addressStr + "_") + assetIdStr) + "_claimed"), (tryGetInteger((((addressStr + "_") + assetIdStr) + "_claimed")) + reward)), ScriptTransfer(address, reward, fromBase58String(assetIdStr))]
3942 }
4043
4144
4245 func claimResult (address) = claimAliasResult(address, usdnIdStr)
4346
4447
4548 func checkNFTValidity (assetId) = match getString(Address(base58'3P7FFQkgALLZDJpCf3smY517wjgPMswGoRP'), (("art_" + toBase58String(assetId)) + "_type")) {
4649 case x: String =>
4750 5
4851 case _ =>
4952 if ((getString(Address(base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By'), (("nft_" + toBase58String(assetId)) + "_issuer")) == "3PMki5sHBsQb4KgDknbUwsL3YgxaCzaZnCJ"))
5053 then 1
5154 else 0
5255 }
5356
5457
5558 @Callable(i)
5659 func stake () = {
5760 let addressStr = toString(i.caller)
5861 let nftId = if ((i.payments[0].amount == 1))
5962 then value(i.payments[0].assetId)
6063 else throw("please attach NFT")
6164 let assetIdStr = toBase58String(usdnId)
6265 let currentInterest = tryGetInteger((("global_lastCheck_" + assetIdStr) + "_interest"))
6366 let totalStakedAmount = tryGetInteger("global_staked")
6467 let assetPower = fraction(10000, checkNFTValidity(nftId), 5)
6568 let NFTName = if ((assetPower == 10000))
6669 then "Eagle NFT"
6770 else "Ania NFT"
6871 if ((assetPower == 0))
6972 then throw("not valid NFT attached")
7073 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)])
7174 }
7275
7376
7477
7578 @Callable(i)
7679 func unStake (nftIdStr) = {
7780 let assetPower = fraction(10000, checkNFTValidity(fromBase58String(nftIdStr)), 5)
7881 let addressStr = toString(i.caller)
7982 let stakedAmount = tryGetInteger((addressStr + "_staked"))
8083 let nftOwner = tryGetString((nftIdStr + "_owner"))
8184 if ((addressStr != nftOwner))
8285 then throw("you don't have NFT available")
8386 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))])
8487 }
8588
8689
8790
8891 @Callable(i)
8992 func claimReward () = claimResult(i.caller)
9093
9194
9295
9396 @Callable(i)
9497 func topUpReward () = {
95- let amount = i.payments[0].amount
96- let assetIdStr = usdnIdStr
97- let currentInterest = tryGetInteger((("global_lastCheck_" + assetIdStr) + "_interest"))
98- let totalStakedAmount = tryGetInteger("global_staked")
99- let interestDelta = if ((totalStakedAmount > 0))
100- then fraction(amount, Scale, totalStakedAmount)
101- else 0
102- let currentUltraInterest = tryGetInteger("global_lastCheck_ultra_interest")
103- let totalUltraStakedAmount = tryGetInteger("global_ultra_staked")
104- let ultraInterestDelta = if ((totalStakedAmount > 0))
105- then fraction(amount, Scale, totalStakedAmount)
106- else 0
107- if ((i.payments[0].assetId != usdnId))
108- then throw("wrong asset attached")
109- else [IntegerEntry((("global_" + assetIdStr) + "_earnings"), (tryGetInteger((("global_" + assetIdStr) + "_earnings")) + amount)), IntegerEntry((("global_lastCheck_" + assetIdStr) + "_interest"), (currentInterest + interestDelta))]
98+ let pmtAsset = value(i.payments[0].assetId)
99+ let pmtAmount = i.payments[0].amount
100+ let amount = if ((pmtAsset == usdnId))
101+ then {
102+ let b0 = assetBalance(this, puzzleId)
103+ if ((b0 == b0))
104+ then {
105+ let inv = invoke(Address(base58'3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee'), "exchange", [1], i.payments)
106+ if ((inv == inv))
107+ then {
108+ let b1 = assetBalance(this, puzzleId)
109+ if ((b1 == b1))
110+ then (b1 - b0)
111+ else throw("Strict value is not equal to itself.")
112+ }
113+ else throw("Strict value is not equal to itself.")
114+ }
115+ else throw("Strict value is not equal to itself.")
116+ }
117+ else if ((pmtAsset == puzzleId))
118+ then pmtAmount
119+ else throw("not correct asset attached")
120+ if ((amount == amount))
121+ then {
122+ let currentInterest = tryGetInteger((("global_lastCheck_" + puzzleIdStr) + "_interest"))
123+ let totalStakedAmount = tryGetInteger("global_staked")
124+ let interestDelta = if ((totalStakedAmount > 0))
125+ then fraction(amount, Scale, totalStakedAmount)
126+ else 0
127+ $Tuple2([IntegerEntry((("global_" + puzzleIdStr) + "_earnings"), (tryGetInteger((("global_" + puzzleIdStr) + "_earnings")) + amount)), IntegerEntry((("global_lastCheck_" + puzzleIdStr) + "_interest"), (currentInterest + interestDelta))], amount)
128+ }
129+ else throw("Strict value is not equal to itself.")
110130 }
111131
112132
113133 @Verifier(tx)
114134 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
115135

github/deemru/w8io/3ef1775 
41.07 ms