tx · EMf7Ue6wDNoRXi72YWhYrb8Hutkf7NjMs9HcoyV8c1Bq 3PDHaUcRCwK2FBBTGjNMcRHfEVUBp4x5sdB: -0.00300000 Waves 2022.10.19 10:08 [3344360] smart account 3PDHaUcRCwK2FBBTGjNMcRHfEVUBp4x5sdB > SELF 0.00000000 Waves
{ "type": 13, "id": "EMf7Ue6wDNoRXi72YWhYrb8Hutkf7NjMs9HcoyV8c1Bq", "fee": 300000, "feeAssetId": null, "timestamp": 1666163301391, "version": 1, "sender": "3PDHaUcRCwK2FBBTGjNMcRHfEVUBp4x5sdB", "senderPublicKey": "FmYSUr4fKcA2Si9LiVwc41bUdVJv5RggvbLAfojA8UZ5", "proofs": [ "nHVoDcQARy8HiioL6EnZEjz98Qq1LwRZniarBQaAUK7ASfu2yEevoJkMHTTX11X7cjv4BXnC9faTHm93DmJy6GY" ], "script": "base64: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", "chainId": 87, "height": 3344360, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GQJvcbDBc5wTQbrRMoPAPjmwWTCztQM51T1oDT6GUUqp Next: none Diff:
Old | New | Differences | |
---|---|---|---|
5 | 5 | then StringEntry(key, value) | |
6 | 6 | else throw(("already initialized: " + key)) | |
7 | 7 | ||
8 | - | ||
9 | - | let admin = valueOrErrorMessage(getString(this, "admin"), "no admin") | |
10 | 8 | ||
11 | 9 | let reserve = valueOrErrorMessage(getString(this, "reserve"), "neutrino-staker: no reserve") | |
12 | 10 | ||
19 | 17 | let sp = valueOrErrorMessage(getString(this, "sp"), "no sp") | |
20 | 18 | ||
21 | 19 | @Callable(i) | |
22 | - | func initialize (admin,reserve,node,neutrinoId,sp) = [writeConstString("admin", admin), writeConstString("reserve", reserve), writeConstString("node", node), writeConstString("neutrinoId", neutrinoId), writeConstString("sp", sp)] | |
23 | - | ||
24 | - | ||
25 | - | ||
26 | - | @Callable(i) | |
27 | - | func setAddress (a) = if ((toString(i.caller) != admin)) | |
28 | - | then throw("only self can do") | |
29 | - | else [StringEntry("node", a)] | |
20 | + | func initialize (reserve,node,neutrinoId,sp) = [writeConstString("reserve", reserve), writeConstString("node", node), writeConstString("neutrinoId", neutrinoId), writeConstString("sp", sp)] | |
30 | 21 | ||
31 | 22 | ||
32 | 23 | ||
60 | 51 | } | |
61 | 52 | ||
62 | 53 | ||
54 | + | ||
55 | + | @Callable(i) | |
56 | + | func info () = $Tuple2(nil, valueOrElse(getInteger(nodeAddress, ((("rpd_balance_" + neutrinoId) + "_") + toString(this))), 0)) | |
57 | + | ||
58 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func writeConstString (key,value) = if (!(isDefined(getString(this, key)))) | |
5 | 5 | then StringEntry(key, value) | |
6 | 6 | else throw(("already initialized: " + key)) | |
7 | 7 | ||
8 | - | ||
9 | - | let admin = valueOrErrorMessage(getString(this, "admin"), "no admin") | |
10 | 8 | ||
11 | 9 | let reserve = valueOrErrorMessage(getString(this, "reserve"), "neutrino-staker: no reserve") | |
12 | 10 | ||
13 | 11 | let node = valueOrErrorMessage(getString(this, "node"), "no node") | |
14 | 12 | ||
15 | 13 | let nodeAddress = valueOrErrorMessage(addressFromString(node), "bad node address") | |
16 | 14 | ||
17 | 15 | let neutrinoId = valueOrErrorMessage(getString(this, "neutrinoId"), "no neutrino id") | |
18 | 16 | ||
19 | 17 | let sp = valueOrErrorMessage(getString(this, "sp"), "no sp") | |
20 | 18 | ||
21 | 19 | @Callable(i) | |
22 | - | func initialize (admin,reserve,node,neutrinoId,sp) = [writeConstString("admin", admin), writeConstString("reserve", reserve), writeConstString("node", node), writeConstString("neutrinoId", neutrinoId), writeConstString("sp", sp)] | |
23 | - | ||
24 | - | ||
25 | - | ||
26 | - | @Callable(i) | |
27 | - | func setAddress (a) = if ((toString(i.caller) != admin)) | |
28 | - | then throw("only self can do") | |
29 | - | else [StringEntry("node", a)] | |
20 | + | func initialize (reserve,node,neutrinoId,sp) = [writeConstString("reserve", reserve), writeConstString("node", node), writeConstString("neutrinoId", neutrinoId), writeConstString("sp", sp)] | |
30 | 21 | ||
31 | 22 | ||
32 | 23 | ||
33 | 24 | @Callable(i) | |
34 | 25 | func put () = if ((toString(i.caller) != reserve)) | |
35 | 26 | then throw("reserve only") | |
36 | 27 | else { | |
37 | 28 | let attachedAssetId = toBase58String(value(i.payments[0].assetId)) | |
38 | 29 | if ((attachedAssetId != neutrinoId)) | |
39 | 30 | then throw(((("usdn only: " + neutrinoId) + ", but got ") + attachedAssetId)) | |
40 | 31 | else { | |
41 | 32 | let action = invoke(nodeAddress, "lockNeutrinoSP", [sp, 100], [AttachedPayment(fromBase58String(neutrinoId), i.payments[0].amount)]) | |
42 | 33 | if ((action == action)) | |
43 | 34 | then nil | |
44 | 35 | else throw("Strict value is not equal to itself.") | |
45 | 36 | } | |
46 | 37 | } | |
47 | 38 | ||
48 | 39 | ||
49 | 40 | ||
50 | 41 | @Callable(i) | |
51 | 42 | func get (removedAmount) = if ((toString(i.caller) != reserve)) | |
52 | 43 | then throw("reserve only") | |
53 | 44 | else if ((0 > removedAmount)) | |
54 | 45 | then throw("pulling negative amount") | |
55 | 46 | else { | |
56 | 47 | let action = invoke(nodeAddress, "unlockNeutrino", [removedAmount, neutrinoId], nil) | |
57 | 48 | if ((action == action)) | |
58 | 49 | then [ScriptTransfer(i.caller, removedAmount, fromBase58String(neutrinoId))] | |
59 | 50 | else throw("Strict value is not equal to itself.") | |
60 | 51 | } | |
61 | 52 | ||
62 | 53 | ||
54 | + | ||
55 | + | @Callable(i) | |
56 | + | func info () = $Tuple2(nil, valueOrElse(getInteger(nodeAddress, ((("rpd_balance_" + neutrinoId) + "_") + toString(this))), 0)) | |
57 | + | ||
58 | + |
github/deemru/w8io/3ef1775 46.95 ms ◑