2022.02.14 18:16 [2988542] smart account 3PGHgV42rDxknn1RBMQcwfAYZHjHYGxna7P > SELF 0.00000000 Waves
{ "type": 13, "id": "CYgqdgnWGQ88pPLpZLNAnymUHNeHU3CLBFe38Nkzjwhe", "fee": 1000000, "feeAssetId": null, "timestamp": 1644851773303, "version": 1, "sender": "3PGHgV42rDxknn1RBMQcwfAYZHjHYGxna7P", "senderPublicKey": "v1cNv62NYuVFBN4MhKbAoZ94Mfh4pj7Tu2LKfJnuFJn", "proofs": [ "4aN7WjWZHEuZT6Fx9Agu2mF2hhrGy7X1bv62iLBr7jcFYo3mdHjLMoB6g6WGUGZ6Uu45DqdU12doP2oKAWoEin9d" ], "script": "base64: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", "chainId": 87, "height": 2988542, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func writeConstString (key,value) = if (!(isDefined(getString(this, key)))) | |
5 | + | then StringEntry(key, value) | |
6 | + | else throw(("already initialized: " + key)) | |
7 | + | ||
8 | + | ||
9 | + | let reserve = valueOrErrorMessage(getString(this, "reserve"), "waves-staker: no reserve") | |
10 | + | ||
11 | + | let node = valueOrErrorMessage(getString(this, "node"), "no node") | |
12 | + | ||
13 | + | let activeLeaseAmount = valueOrElse(getInteger(this, "activeLeaseAmount"), 0) | |
14 | + | ||
15 | + | let activeLeaseId = valueOrElse(getString(this, "activeLeaseId"), "") | |
16 | + | ||
17 | + | func updateLease (newAmt) = { | |
18 | + | let newLease = Lease(addressFromStringValue(node), newAmt) | |
19 | + | let newLeaseId = calculateLeaseId(newLease) | |
20 | + | ((if ((activeLeaseId != "")) | |
21 | + | then [LeaseCancel(fromBase58String(activeLeaseId))] | |
22 | + | else nil) ++ (if ((newAmt > 0)) | |
23 | + | then [newLease, StringEntry("activeLeaseId", toBase58String(newLeaseId)), IntegerEntry("activeLeaseAmount", newAmt)] | |
24 | + | else [StringEntry("activeLeaseId", ""), IntegerEntry("activeLeaseAmount", 0)])) | |
25 | + | } | |
26 | + | ||
27 | + | ||
28 | + | @Callable(i) | |
29 | + | func initialize (reserve,node) = [writeConstString("reserve", reserve), writeConstString("node", node)] | |
30 | + | ||
31 | + | ||
32 | + | ||
33 | + | @Callable(i) | |
34 | + | func put () = if ((toString(i.caller) != reserve)) | |
35 | + | then throw("reserve only") | |
36 | + | else if ((i.payments[0].assetId != unit)) | |
37 | + | then throw("waves only") | |
38 | + | else { | |
39 | + | let addedAmount = i.payments[0].amount | |
40 | + | updateLease((activeLeaseAmount + addedAmount)) | |
41 | + | } | |
42 | + | ||
43 | + | ||
44 | + | ||
45 | + | @Callable(i) | |
46 | + | func get (removedAmount) = if ((toString(i.caller) != reserve)) | |
47 | + | then throw("reserve only") | |
48 | + | else if ((0 > removedAmount)) | |
49 | + | then throw("pulling negative amount") | |
50 | + | else (updateLease((activeLeaseAmount - removedAmount)) ++ [ScriptTransfer(i.caller, removedAmount, unit)]) | |
51 | + | ||
52 | + |
github/deemru/w8io/786bc32 32.15 ms ◑