tx · 7KoKHebjbi7Sr441at7eCZRdJPqn2yJ9jhpet6wR4TNm

3NDFcJ3K5esyuknc2ngNcw59e8SJXtfgaHB:  -0.01000000 Waves

2023.09.22 21:26 [2766947] smart account 3NDFcJ3K5esyuknc2ngNcw59e8SJXtfgaHB > SELF 0.00000000 Waves

{ "type": 13, "id": "7KoKHebjbi7Sr441at7eCZRdJPqn2yJ9jhpet6wR4TNm", "fee": 1000000, "feeAssetId": null, "timestamp": 1695407237690, "version": 2, "chainId": 84, "sender": "3NDFcJ3K5esyuknc2ngNcw59e8SJXtfgaHB", "senderPublicKey": "8M2WuphuhMvTZMcpBocfLqUvkcFJisjdcCZaaPHxpwmS", "proofs": [ "3LREdLbPow6VCe5dCDJjn8bMAVmzaMfdggiGMCT1nhSQhB6PHhtB1ASGknMnG8JgooShnUY5bmec2WbLkqJEypUQ" ], "script": "base64:BgLRAggCEgASAwoBARIAEgAiBnVzZG5JZCIJdXNkbklkU3RyIghwdXp6bGVJZCILcHV6emxlSWRTdHIiBVNjYWxlIg10cnlHZXRJbnRlZ2VyIgNrZXkiByRtYXRjaDAiAWIiDHRyeUdldFN0cmluZyIBYSIQY2xhaW1BbGlhc1Jlc3VsdCIHYWRkcmVzcyIKYXNzZXRJZFN0ciIKYWRkcmVzc1N0ciIPY3VycmVudEludGVyZXN0IgxzdGFrZWRBbW91bnQiGGxhc3RDaGVja0ludGVyZXN0SW5TdGF0ZSIRbGFzdENoZWNrSW50ZXJlc3QiBnJld2FyZCILY2xhaW1SZXN1bHQiAWkiBmFtb3VudCIRdG90YWxTdGFrZWRBbW91bnQiCHBtdEFzc2V0IglwbXRBbW91bnQiDWludGVyZXN0RGVsdGEiAnR4IgZ2ZXJpZnkJAAFhASBvJKPKqzDcUimY6CxhWu5afyNNwi11u+mdqlTg0tAHwQABYgIsOFVyZkRWZDVHcmVlVXdtN3VQazdlWXoxZU12Mzc2a3pSNTJDNnNBTlBrd1MAAWMBIGEgR2q15TSU04z5reN5xPpwlT3ZqMMzGmk90konojdgAAFkAiw3WTk2VVRiQlE0NWNqV29IZUZqMkVobmpkZ0V0NmlLMkxuQTRlVGNmeGRvRAABZQCAoJSljR0BAWYBAWcEAWgJAJoIAgUEdGhpcwUBZwMJAAECBQFoAgNJbnQEAWkFAWgFAWkAAAEBagEBZwQBaAkAnQgCBQR0aGlzBQFnAwkAAQIFAWgCBlN0cmluZwQBawUBaAUBawIAAQFsAgFtAW4EAW8JAKUIAQUBbQQBcAkBAWYBCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FAW4CCV9pbnRlcmVzdAQBcQkBAWYBCQCsAgIFAW8CB19zdGFrZWQEAXIJAQFmAQkArAICCQCsAgIJAKwCAgUBbwILX2xhc3RDaGVja18FAW4CCV9pbnRlcmVzdAQBcwMJAAACBQFyAAAAAAUBcgQBdAkAawMJAGUCBQFwBQFzBQFxBQFlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQFvAgtfbGFzdENoZWNrXwUBbgIJX2ludGVyZXN0BQFwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQFvAgFfBQFuAghfY2xhaW1lZAkAZAIJAQFmAQkArAICCQCsAgIJAKwCAgUBbwIBXwUBbgIIX2NsYWltZWQFAXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBbQUBdAkA2QQBBQFuBQNuaWwBAXUBAW0JAM4IAgkBAWwCBQFtBQFiCQEBbAIFAW0FAWQEAXYBBXN0YWtlAAQBdwgJAJEDAggFAXYIcGF5bWVudHMAAAZhbW91bnQEAW8JAKUIAQgFAXYGY2FsbGVyBAFuCQDYBAEFAWEEAXgJAQFmAQINZ2xvYmFsX3N0YWtlZAMJAQIhPQIICQCRAwIIBQF2CHBheW1lbnRzAAAHYXNzZXRJZAUBYwkAAgECFHdyb25nIGFzc2V0IGF0dGFjaGVkCQDOCAIJAQF1AQgFAXYGY2FsbGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1nbG9iYWxfc3Rha2VkCQBkAgUBeAUBdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQFvAgdfc3Rha2VkCQBkAgkBAWYBCQCsAgIFAW8CB19zdGFrZWQFAXcFA25pbAF2AQd1blN0YWtlAQF3BAFvCQClCAEIBQF2BmNhbGxlcgQBcQkBAWYBCQCsAgIFAW8CB19zdGFrZWQDCQBmAgUBdwUBcQkAAgECH3lvdSBkb24ndCBoYXZlIHRva2VucyBhdmFpbGFibGUJAM4IAgkBAXUBCAUBdgZjYWxsZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUBbwIHX3N0YWtlZAkAZQIFAXEFAXcJAMwIAgkBDEludGVnZXJFbnRyeQICDWdsb2JhbF9zdGFrZWQJAGUCCQEBZgECDWdsb2JhbF9zdGFrZWQFAXcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAXYGY2FsbGVyBQF3BQFjBQNuaWwBdgELY2xhaW1SZXdhcmQACQEBdQEIBQF2BmNhbGxlcgF2AQt0b3BVcFJld2FyZAAEAXkJAQV2YWx1ZQEICQCRAwIIBQF2CHBheW1lbnRzAAAHYXNzZXRJZAQBeggJAJEDAggFAXYIcGF5bWVudHMAAAZhbW91bnQEAXcDCQAAAgUBeQUBYQAAAwkAAAIFAXkFAWMFAXoJAAIBAhpub3QgY29ycmVjdCBhc3NldCBhdHRhY2hlZAMJAAACBQF3BQF3BAFwCQEBZgEJAKwCAgkArAICAhFnbG9iYWxfbGFzdENoZWNrXwUBZAIJX2ludGVyZXN0BAF4CQEBZgECDWdsb2JhbF9zdGFrZWQEAUEDCQBmAgUBeAAACQBrAwUBdwUBZQUBeAAAAwkBAiE9AgUBeQUBYQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIHZ2xvYmFsXwUBZAIJX2Vhcm5pbmdzCQBkAgkBAWYBCQCsAgIJAKwCAgIHZ2xvYmFsXwUBZAIJX2Vhcm5pbmdzBQF3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FAWQCCV9pbnRlcmVzdAkAZAIFAXAFAUEFA25pbAUBdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQFCAQFDAAkA9AMDCAUBQglib2R5Qnl0ZXMJAJEDAggFAUIGcHJvb2ZzAAAIBQFCD3NlbmRlclB1YmxpY0tlebItLCE=", "height": 2766947, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DSdMaVasgRi8PCoaaq2ri7xwsWEjn81ztJjfdxVez3gY Next: 4QFAe2oPYS4e4Z4KN2gWsbDFj4nLc9XwtAxxhqaHim9h Diff:
OldNewDifferences
1616 b
1717 case _ =>
1818 0
19+}
20+
21+
22+func tryGetString (key) = match getString(this, key) {
23+ case a: String =>
24+ a
25+ case _ =>
26+ ""
1927 }
2028
2129
8088 let interestDelta = if ((totalStakedAmount > 0))
8189 then fraction(amount, Scale, totalStakedAmount)
8290 else 0
83- $Tuple2([IntegerEntry((("global_" + puzzleIdStr) + "_earnings"), (tryGetInteger((("global_" + puzzleIdStr) + "_earnings")) + amount)), IntegerEntry((("global_lastCheck_" + puzzleIdStr) + "_interest"), (currentInterest + interestDelta))], amount)
91+ if ((pmtAsset != usdnId))
92+ then $Tuple2([IntegerEntry((("global_" + puzzleIdStr) + "_earnings"), (tryGetInteger((("global_" + puzzleIdStr) + "_earnings")) + amount)), IntegerEntry((("global_lastCheck_" + puzzleIdStr) + "_interest"), (currentInterest + interestDelta))], amount)
93+ else nil
8494 }
8595 else throw("Strict value is not equal to itself.")
8696 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let usdnId = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
55
66 let usdnIdStr = "8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS"
77
88 let puzzleId = base58'7Y96UTbBQ45cjWoHeFj2EhnjdgEt6iK2LnA4eTcfxdoD'
99
1010 let puzzleIdStr = "7Y96UTbBQ45cjWoHeFj2EhnjdgEt6iK2LnA4eTcfxdoD"
1111
1212 let Scale = 1000000000000
1313
1414 func tryGetInteger (key) = match getInteger(this, key) {
1515 case b: Int =>
1616 b
1717 case _ =>
1818 0
19+}
20+
21+
22+func tryGetString (key) = match getString(this, key) {
23+ case a: String =>
24+ a
25+ case _ =>
26+ ""
1927 }
2028
2129
2230 func claimAliasResult (address,assetIdStr) = {
2331 let addressStr = toString(address)
2432 let currentInterest = tryGetInteger((("global_lastCheck_" + assetIdStr) + "_interest"))
2533 let stakedAmount = tryGetInteger((addressStr + "_staked"))
2634 let lastCheckInterestInState = tryGetInteger((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"))
2735 let lastCheckInterest = if ((lastCheckInterestInState == 0))
2836 then 0
2937 else lastCheckInterestInState
3038 let reward = fraction((currentInterest - lastCheckInterest), stakedAmount, Scale)
3139 [IntegerEntry((((addressStr + "_lastCheck_") + assetIdStr) + "_interest"), currentInterest), IntegerEntry((((addressStr + "_") + assetIdStr) + "_claimed"), (tryGetInteger((((addressStr + "_") + assetIdStr) + "_claimed")) + reward)), ScriptTransfer(address, reward, fromBase58String(assetIdStr))]
3240 }
3341
3442
3543 func claimResult (address) = (claimAliasResult(address, usdnIdStr) ++ claimAliasResult(address, puzzleIdStr))
3644
3745
3846 @Callable(i)
3947 func stake () = {
4048 let amount = i.payments[0].amount
4149 let addressStr = toString(i.caller)
4250 let assetIdStr = toBase58String(usdnId)
4351 let totalStakedAmount = tryGetInteger("global_staked")
4452 if ((i.payments[0].assetId != puzzleId))
4553 then throw("wrong asset attached")
4654 else (claimResult(i.caller) ++ [IntegerEntry("global_staked", (totalStakedAmount + amount)), IntegerEntry((addressStr + "_staked"), (tryGetInteger((addressStr + "_staked")) + amount))])
4755 }
4856
4957
5058
5159 @Callable(i)
5260 func unStake (amount) = {
5361 let addressStr = toString(i.caller)
5462 let stakedAmount = tryGetInteger((addressStr + "_staked"))
5563 if ((amount > stakedAmount))
5664 then throw("you don't have tokens available")
5765 else (claimResult(i.caller) ++ [IntegerEntry((addressStr + "_staked"), (stakedAmount - amount)), IntegerEntry("global_staked", (tryGetInteger("global_staked") - amount)), ScriptTransfer(i.caller, amount, puzzleId)])
5866 }
5967
6068
6169
6270 @Callable(i)
6371 func claimReward () = claimResult(i.caller)
6472
6573
6674
6775 @Callable(i)
6876 func topUpReward () = {
6977 let pmtAsset = value(i.payments[0].assetId)
7078 let pmtAmount = i.payments[0].amount
7179 let amount = if ((pmtAsset == usdnId))
7280 then 0
7381 else if ((pmtAsset == puzzleId))
7482 then pmtAmount
7583 else throw("not correct asset attached")
7684 if ((amount == amount))
7785 then {
7886 let currentInterest = tryGetInteger((("global_lastCheck_" + puzzleIdStr) + "_interest"))
7987 let totalStakedAmount = tryGetInteger("global_staked")
8088 let interestDelta = if ((totalStakedAmount > 0))
8189 then fraction(amount, Scale, totalStakedAmount)
8290 else 0
83- $Tuple2([IntegerEntry((("global_" + puzzleIdStr) + "_earnings"), (tryGetInteger((("global_" + puzzleIdStr) + "_earnings")) + amount)), IntegerEntry((("global_lastCheck_" + puzzleIdStr) + "_interest"), (currentInterest + interestDelta))], amount)
91+ if ((pmtAsset != usdnId))
92+ then $Tuple2([IntegerEntry((("global_" + puzzleIdStr) + "_earnings"), (tryGetInteger((("global_" + puzzleIdStr) + "_earnings")) + amount)), IntegerEntry((("global_lastCheck_" + puzzleIdStr) + "_interest"), (currentInterest + interestDelta))], amount)
93+ else nil
8494 }
8595 else throw("Strict value is not equal to itself.")
8696 }
8797
8898
8999 @Verifier(tx)
90100 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
91101

github/deemru/w8io/026f985 
26.22 ms