tx · 5cN8KwRFrNKWV9PJax3f99SbTiDCUqmtGEobBiGBr6A1

3NBGYJLwHsU6eJXLi74dB8cBbMfiTS2cTtu:  -0.01400000 Waves

2022.04.20 12:20 [2016678] smart account 3NBGYJLwHsU6eJXLi74dB8cBbMfiTS2cTtu > SELF 0.00000000 Waves

{ "type": 13, "id": "5cN8KwRFrNKWV9PJax3f99SbTiDCUqmtGEobBiGBr6A1", "fee": 1400000, "feeAssetId": null, "timestamp": 1650446464900, "version": 2, "chainId": 84, "sender": "3NBGYJLwHsU6eJXLi74dB8cBbMfiTS2cTtu", "senderPublicKey": "DqoxVw7QE15hy21jZuVxZXM9E7WXmheH1up4dwp57Yb8", "proofs": [ "39327yrHwoRs92upmmAm6cs7kTX78xyzhghNmLpx1DaEogfvFrBf3MHp7ArS92VWrDdN3kzALx4sHZXoXGMn6kzz" ], "script": "base64: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", "height": 2016678, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GFmqtDC9TgMPWG7aMnb4WCwTNDJhXdJPqHpFP3Ngb6Vf Next: 4uDHRyaYN55YQ2Cohjd94REj9PTdUmk4gzdGBVxd9be2 Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let oracleKey = "oracleKey"
55
66 let Scale = 1000000
77
88 func tryGetInteger (key) = match getInteger(this, key) {
99 case b: Int =>
1010 b
1111 case _ =>
1212 0
1313 }
1414
1515
1616 func tryGetString (key) = match getString(this, key) {
1717 case a: String =>
1818 a
1919 case _ =>
2020 ""
2121 }
2222
2323
2424 let oracle = tryGetString(oracleKey)
2525
2626 let oracleFee = value(addressFromString(oracle))
2727
2828 let SconexAssetId = fromBase58String(getStringValue(oracleFee, "SconexAssetId"))
2929
3030 func claimResult (address) = {
3131 let addressStr = toString(address)
3232 let currentInterest = tryGetInteger("global_lastCheck_SCONEX_interest")
3333 let lastCheckInterest = tryGetInteger((addressStr + "_lastCheck_SCONEX_interest"))
3434 let stakedAmount = tryGetInteger((addressStr + "_SCONEX_staked"))
3535 let reward = if ((lastCheckInterest > 0))
3636 then fraction((currentInterest - lastCheckInterest), stakedAmount, Scale)
3737 else 0
3838 [IntegerEntry((addressStr + "_lastCheck_SCONEX_interest"), currentInterest), IntegerEntry((addressStr + "_SCONEX_claimed"), (tryGetInteger((addressStr + "_SCONEX_claimed")) + reward)), ScriptTransfer(address, reward, SconexAssetId)]
3939 }
4040
4141
4242 @Callable(i)
4343 func initDapp (dappKey) = if ((i.caller != this))
4444 then throw("You cannot do this action")
4545 else if ((oracle != ""))
4646 then throw("oracle already set, you can't override!")
4747 else [StringEntry(oracleKey, dappKey)]
4848
4949
5050
5151 @Callable(i)
5252 func stake () = {
5353 let amount = i.payments[0].amount
5454 let addressStr = toString(i.caller)
5555 let totalStakedAmount = tryGetInteger("global_staked")
5656 if ((i.payments[0].assetId != SconexAssetId))
5757 then throw("wrong asset attached")
5858 else (claimResult(i.caller) ++ [IntegerEntry("global_staked", (totalStakedAmount + amount)), IntegerEntry((addressStr + "_SCONEX_staked"), (tryGetInteger((addressStr + "_SCONEX_staked")) + amount))])
5959 }
6060
6161
6262
6363 @Callable(i)
6464 func unStake (amount) = {
6565 let addressStr = toString(i.caller)
6666 let stakedAmount = tryGetInteger((addressStr + "_SCONEX_staked"))
6767 if ((amount > stakedAmount))
6868 then throw("you don't have tokens available")
6969 else (claimResult(i.caller) ++ [IntegerEntry((addressStr + "_SCONEX_staked"), (stakedAmount - amount)), IntegerEntry("global_staked", (tryGetInteger("global_staked") - amount)), ScriptTransfer(i.caller, amount, SconexAssetId)])
7070 }
7171
7272
7373
7474 @Callable(i)
7575 func claimReward () = claimResult(i.caller)
7676
7777
7878
7979 @Callable(i)
8080 func topUpReward () = {
8181 let amount = fraction(i.payments[0].amount, 9, 10)
8282 let currentInterest = tryGetInteger("global_lastCheck_SCONEX_interest")
8383 let totalStakedAmount = tryGetInteger("global_staked")
8484 let interestDelta = if ((totalStakedAmount > 0))
8585 then fraction(amount, Scale, totalStakedAmount)
8686 else 0
8787 if ((i.payments[0].assetId != SconexAssetId))
8888 then throw("wrong asset attached")
8989 else [IntegerEntry("global_SCONEX_earnings", (tryGetInteger("global_SCONEX_earnings") + amount)), IntegerEntry("global_lastCheck_SCONEX_interest", (currentInterest + interestDelta))]
9090 }
9191
9292
9393 @Verifier(tx)
9494 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
9595

github/deemru/w8io/169f3d6 
25.40 ms