2021.06.14 16:30 [2634815] smart account 3P4uD6v496SpXfAWHb5sgGf9g82mauwsyNp > SELF 0.00000000 Waves
{ "type": 13, "id": "2barPYeK4vSDK2ZEa4Aonqy1FcYur9CGTChaz3hQ6dZ3", "fee": 1400000, "feeAssetId": null, "timestamp": 1623677432655, "version": 2, "chainId": 87, "sender": "3P4uD6v496SpXfAWHb5sgGf9g82mauwsyNp", "senderPublicKey": "CMdUD9Q6ZXB7MYocQx11ptq5g8RWDPJ7YDiB3HvgYubJ", "proofs": [ "5PPgZNdxXgtmCnamDMxPAbJj5FVht9MXQx5xYXzbTqKARiMZNP84FnvusbzKVVmMgoFSDkX5HpQJawSfE5f6WRCB" ], "script": "base64:AAIEAAAAAAAAAAQIAhIAAAAABwAAAAAFc2NhbGUAAAAAAAAAJxABAAAAEWdldFJld2FyZFBlckJsb2NrAAAAAAAAAAAAAAAABwEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAN2YWwEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAAFAAAAA3ZhbAEAAAAUZ2V0QXNzZXRGYXJtaW5nUG93ZXIAAAABAAAAB2Fzc2V0SWQAAAAAAAAAAGQBAAAADGNhbGNJbnRlcmVzdAAAAAMAAAAQcHJldmlvdXNJbnRlcmVzdAAAABZwcmV2aW91c0ludGVyZXN0SGVpZ2h0AAAAEXRvdGFsRmFybWluZ1Bvd2VyCQAAZAAAAAIFAAAAEHByZXZpb3VzSW50ZXJlc3QJAABpAAAAAgkAAGgAAAACCQAAaAAAAAIFAAAABXNjYWxlCQEAAAARZ2V0UmV3YXJkUGVyQmxvY2sAAAAACQAAZQAAAAIFAAAABmhlaWdodAUAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAUAAAARdG90YWxGYXJtaW5nUG93ZXIBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAADCQAAZgAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAASdG90YWxfZmFybWluZ1Bvd2VyAAAAAAAAAAAABAAAABBwcmV2aW91c0ludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0BAAAABZwcmV2aW91c0ludGVyZXN0SGVpZ2h0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BAAAABF0b3RhbEZhcm1pbmdQb3dlcgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIJAQAAAAxjYWxjSW50ZXJlc3QAAAADBQAAABBwcmV2aW91c0ludGVyZXN0BQAAABZwcmV2aW91c0ludGVyZXN0SGVpZ2h0BQAAABF0b3RhbEZhcm1pbmdQb3dlcgAAAAAAAAAAAAEAAAATY2FsY1VzZXJSZXdhcmREZWx0YQAAAAEAAAAHYWRkcmVzcwQAAAAVbGFzdENoZWNrVXNlckludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAASX2xhc3RDaGVja0ludGVyZXN0BAAAABB1c2VyRmFybWluZ1Bvd2VyCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAANX2Zhcm1pbmdQb3dlcgQAAAAPY3VycmVudEludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkAAGgAAAACBQAAABB1c2VyRmFybWluZ1Bvd2VyCQAAZQAAAAIFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAAVbGFzdENoZWNrVXNlckludGVyZXN0AAAAAQAAAAFpAQAAAAhzdGFrZU5GVAAAAAAEAAAAB2Fzc2V0SWQJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABFhc3NldEZhcm1pbmdQb3dlcgkBAAAAFGdldEFzc2V0RmFybWluZ1Bvd2VyAAAAAQUAAAAHYXNzZXRJZAQAAAAPdXNlclJld2FyZERlbHRhCQEAAAATY2FsY1VzZXJSZXdhcmREZWx0YQAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAddG90YWxfbGFzdENoZWNrSW50ZXJlc3RIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAA1fZmFybWluZ1Bvd2VyCQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAA1fZmFybWluZ1Bvd2VyBQAAABFhc3NldEZhcm1pbmdQb3dlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAABJfbGFzdENoZWNrSW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQFAAAAD3VzZXJSZXdhcmREZWx0YQUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXmx/Ht/", "height": 2634815, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7KQLjKodB4QNqPSxc5tXiReA5R8SSPwzUKTkw4cCJmFU Next: BpNADSCaEiBjhL96g6mrbvc9DE4BpJzjBfMKfNziHE66 Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let scale = 10000 | |
5 | + | ||
4 | 6 | func getRewardPerBlock () = 7 | |
5 | 7 | ||
6 | 8 | ||
18 | 20 | func getAssetFarmingPower (assetId) = 100 | |
19 | 21 | ||
20 | 22 | ||
21 | - | func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + ((getRewardPerBlock() * (height - previousInterestHeight)) / totalFarmingPower)) | |
23 | + | func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + (((scale * getRewardPerBlock()) * (height - previousInterestHeight)) / totalFarmingPower)) | |
22 | 24 | ||
23 | 25 | ||
24 | 26 | func getCurrentInterest () = if ((tryGetInteger("total_farmingPower") > 0)) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let scale = 10000 | |
5 | + | ||
4 | 6 | func getRewardPerBlock () = 7 | |
5 | 7 | ||
6 | 8 | ||
7 | 9 | func tryGetInteger (key) = { | |
8 | 10 | let val = match getInteger(this, key) { | |
9 | 11 | case b: Int => | |
10 | 12 | b | |
11 | 13 | case _ => | |
12 | 14 | 0 | |
13 | 15 | } | |
14 | 16 | val | |
15 | 17 | } | |
16 | 18 | ||
17 | 19 | ||
18 | 20 | func getAssetFarmingPower (assetId) = 100 | |
19 | 21 | ||
20 | 22 | ||
21 | - | func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + ((getRewardPerBlock() * (height - previousInterestHeight)) / totalFarmingPower)) | |
23 | + | func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + (((scale * getRewardPerBlock()) * (height - previousInterestHeight)) / totalFarmingPower)) | |
22 | 24 | ||
23 | 25 | ||
24 | 26 | func getCurrentInterest () = if ((tryGetInteger("total_farmingPower") > 0)) | |
25 | 27 | then { | |
26 | 28 | let previousInterest = tryGetInteger("total_lastCheckInterest") | |
27 | 29 | let previousInterestHeight = tryGetInteger("total_lastCheckInterestHeight") | |
28 | 30 | let totalFarmingPower = tryGetInteger("total_farmingPower") | |
29 | 31 | calcInterest(previousInterest, previousInterestHeight, totalFarmingPower) | |
30 | 32 | } | |
31 | 33 | else 0 | |
32 | 34 | ||
33 | 35 | ||
34 | 36 | func calcUserRewardDelta (address) = { | |
35 | 37 | let lastCheckUserInterest = tryGetInteger((("address_" + address) + "_lastCheckInterest")) | |
36 | 38 | let userFarmingPower = tryGetInteger((("address_" + address) + "_farmingPower")) | |
37 | 39 | let currentInterest = getCurrentInterest() | |
38 | 40 | (userFarmingPower * (currentInterest - lastCheckUserInterest)) | |
39 | 41 | } | |
40 | 42 | ||
41 | 43 | ||
42 | 44 | @Callable(i) | |
43 | 45 | func stakeNFT () = { | |
44 | 46 | let assetId = value(value(i.payments[0]).assetId) | |
45 | 47 | let address = toString(i.caller) | |
46 | 48 | let assetFarmingPower = getAssetFarmingPower(assetId) | |
47 | 49 | let userRewardDelta = calcUserRewardDelta(address) | |
48 | 50 | [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") + assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((("address_" + address) + "_farmingPower"), (tryGetInteger((("address_" + address) + "_farmingPower")) + assetFarmingPower)), IntegerEntry((("address_" + address) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((("address_" + address) + "_lastCheckFarmedAmount"), (tryGetInteger((("address_" + address) + "_lastCheckFarmedAmount")) + userRewardDelta))] | |
49 | 51 | } | |
50 | 52 | ||
51 | 53 | ||
52 | 54 | @Verifier(tx) | |
53 | 55 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
54 | 56 |
github/deemru/w8io/786bc32 35.28 ms ◑