tx · 35kZrpgjRGUm8SshvLQNPaf9htHcSpCznvBeg85YV6Vs 3PHeFExuCuK2QkR64j83u2tVom4YJUUXYZA: -0.01000000 Waves 2023.01.19 19:12 [3477535] smart account 3PHeFExuCuK2QkR64j83u2tVom4YJUUXYZA > SELF 0.00000000 Waves
{ "type": 13, "id": "35kZrpgjRGUm8SshvLQNPaf9htHcSpCznvBeg85YV6Vs", "fee": 1000000, "feeAssetId": null, "timestamp": 1674144771880, "version": 2, "chainId": 87, "sender": "3PHeFExuCuK2QkR64j83u2tVom4YJUUXYZA", "senderPublicKey": "2HQLGX6a8xxw6QLPKVnKhR7WNTSNiw4XboN8pYoCfwzR", "proofs": [ "5hyWsrUaMXQ8RJkGRuv6huZevsuZw2gw8KymNavaJy8CPV4P14FdUqRUsxpMY3WNZ8B5iDzxoivR32jSEVHQ1jAa" ], "script": "base64:AAIFAAAAAAAAAAkIAhIAEgMKAQEAAAABAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAAAAAACAAAAAWkBAAAACHB1dFdhdmVzAAAAAAQAAAADcG10CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAAEdW5pdAYJAABnAAAAAgAAAAAAAAAAAAgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQIAAAAgcGxlYXNlIGF0dGFjaCBXQVZFUyBhcyBhIHBheW1lbnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAACV93YXZlc1B1dAkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAACV93YXZlc1B1dAgFAAAAA3BtdAAAAAZhbW91bnQFAAAAA25pbAAAAAFpAQAAAApjbGFpbVdhdmVzAAAAAQAAAAZhbW91bnQEAAAACHdhdmVzUHV0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAACV93YXZlc1B1dAMJAABmAAAAAgUAAAAId2F2ZXNQdXQFAAAABmFtb3VudAkAAAIAAAABAgAAACh5b3UgZG9uJ3QgaGF2ZSB0aGF0IG11Y2ggV0FWRVMgYXZhaWxhYmxlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAgAAAAlfd2F2ZXNQdXQJAABlAAAAAgUAAAAId2F2ZXNQdXQFAAAABmFtb3VudAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXloxwhE", "height": 3477535, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HHaHCxKCU111sf2rm6h8UrKPq5H3wkpzqQmd2wDg8okE Next: J2pfVtYh398qCRhyxLjYiZm48cWu39RCDWRDMiMuVrpj Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let wxId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
5 | - | ||
6 | - | let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
7 | - | ||
8 | - | let plutoId = base58'Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5' | |
9 | - | ||
10 | - | let plutoStakingAddress = "3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q" | |
11 | - | ||
12 | - | func tryGetString (key) = match getString(this, key) { | |
13 | - | case b: String => | |
4 | + | func tryGetInteger (key) = match getInteger(this, key) { | |
5 | + | case b: Int => | |
14 | 6 | b | |
15 | 7 | case _ => | |
16 | - | | |
8 | + | 0 | |
17 | 9 | } | |
18 | 10 | ||
19 | 11 | ||
20 | - | func getAssetString (assetId) = match assetId { | |
21 | - | case b: ByteVector => | |
22 | - | toBase58String(b) | |
23 | - | case _ => | |
24 | - | "WAVES" | |
25 | - | } | |
26 | - | ||
27 | - | ||
28 | - | func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES")) | |
29 | - | then unit | |
30 | - | else fromBase58String(assetIdStr) | |
31 | - | ||
32 | - | ||
33 | - | func getBalance (assetId) = match assetId { | |
34 | - | case x: Unit => | |
35 | - | wavesBalance(this).available | |
36 | - | case _ => | |
37 | - | assetBalance(this, value(assetId)) | |
38 | - | } | |
39 | - | ||
40 | - | ||
41 | - | func exchangeAnSendToStaking (asset0Id,asset1Id,amount0) = { | |
42 | - | let exchangeInvoke = invoke(Address(base58'3PLPCb3wF2H2gtzohoAjeWcGaMKEiJvtE5X'), "exchangeAndSendTo", [getAssetString(asset1Id), plutoStakingAddress], [AttachedPayment(asset0Id, amount0)]) | |
43 | - | if ((exchangeInvoke == exchangeInvoke)) | |
12 | + | @Callable(i) | |
13 | + | func putWaves () = { | |
14 | + | let pmt = i.payments[0] | |
15 | + | if (if ((pmt.assetId != unit)) | |
44 | 16 | then true | |
45 | - | else throw("Strict value is not equal to itself.") | |
17 | + | else (0 >= pmt.amount)) | |
18 | + | then throw("please attach WAVES as a payment") | |
19 | + | else [IntegerEntry((toString(i.caller) + "_wavesPut"), (tryGetInteger((toString(i.caller) + "_wavesPut")) + pmt.amount))] | |
46 | 20 | } | |
47 | 21 | ||
48 | 22 | ||
49 | - | func claimWX (lpId) = { | |
50 | - | let evaluation = split({ | |
51 | - | let @ = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "claimWxREADONLY", [lpId, toString(this)], nil) | |
52 | - | if ($isInstanceOf(@, "String")) | |
53 | - | then @ | |
54 | - | else throw("Couldn't cast Any to String") | |
55 | - | }, "__") | |
56 | - | if ((evaluation == evaluation)) | |
57 | - | then { | |
58 | - | let claimInv = if (((parseIntValue(evaluation[3]) - parseIntValue(evaluation[4])) > 0)) | |
59 | - | then invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "claimWx", [lpId], nil) | |
60 | - | else unit | |
61 | - | if ((claimInv == claimInv)) | |
62 | - | then true | |
63 | - | else throw("Strict value is not equal to itself.") | |
64 | - | } | |
65 | - | else throw("Strict value is not equal to itself.") | |
66 | - | } | |
67 | - | ||
68 | 23 | ||
69 | 24 | @Callable(i) | |
70 | - | func claimTreasuryRewards () = { | |
71 | - | let wxBalance0 = getBalance(wxId) | |
72 | - | if ((wxBalance0 == wxBalance0)) | |
73 | - | then { | |
74 | - | let inv1 = claimWX("97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf") | |
75 | - | if ((inv1 == inv1)) | |
76 | - | then { | |
77 | - | let inv2 = claimWX("EPhdEfmQaNcHyvDmRGhnLhgcJtKZ2a4k3ZBmKWtAEWyH") | |
78 | - | if ((inv2 == inv2)) | |
79 | - | then { | |
80 | - | let inv3 = claimWX("EMsZpqcT8NuMYZCEPHzvrhQCQKhfXjdeekZvcWpHsNvh") | |
81 | - | if ((inv3 == inv3)) | |
82 | - | then { | |
83 | - | let wxEarned = (getBalance(wxId) - wxBalance0) | |
84 | - | if ((wxEarned == wxEarned)) | |
85 | - | then { | |
86 | - | let exchangeResult = exchangeAnSendToStaking(wxId, plutoId, wxEarned) | |
87 | - | if ((exchangeResult == exchangeResult)) | |
88 | - | then [IntegerEntry(("stats_claimedAt_Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on_" + toString(height)), wxEarned), IntegerEntry("stats_lastClaim", height)] | |
89 | - | else throw("Strict value is not equal to itself.") | |
90 | - | } | |
91 | - | else throw("Strict value is not equal to itself.") | |
92 | - | } | |
93 | - | else throw("Strict value is not equal to itself.") | |
94 | - | } | |
95 | - | else throw("Strict value is not equal to itself.") | |
96 | - | } | |
97 | - | else throw("Strict value is not equal to itself.") | |
98 | - | } | |
99 | - | else throw("Strict value is not equal to itself.") | |
25 | + | func claimWaves (amount) = { | |
26 | + | let wavesPut = tryGetInteger((toString(i.caller) + "_wavesPut")) | |
27 | + | if ((wavesPut > amount)) | |
28 | + | then throw("you don't have that much WAVES available") | |
29 | + | else [IntegerEntry((toString(i.caller) + "_wavesPut"), (wavesPut - amount))] | |
100 | 30 | } | |
101 | 31 | ||
102 | 32 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let wxId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
5 | - | ||
6 | - | let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
7 | - | ||
8 | - | let plutoId = base58'Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5' | |
9 | - | ||
10 | - | let plutoStakingAddress = "3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q" | |
11 | - | ||
12 | - | func tryGetString (key) = match getString(this, key) { | |
13 | - | case b: String => | |
4 | + | func tryGetInteger (key) = match getInteger(this, key) { | |
5 | + | case b: Int => | |
14 | 6 | b | |
15 | 7 | case _ => | |
16 | - | | |
8 | + | 0 | |
17 | 9 | } | |
18 | 10 | ||
19 | 11 | ||
20 | - | func getAssetString (assetId) = match assetId { | |
21 | - | case b: ByteVector => | |
22 | - | toBase58String(b) | |
23 | - | case _ => | |
24 | - | "WAVES" | |
25 | - | } | |
26 | - | ||
27 | - | ||
28 | - | func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES")) | |
29 | - | then unit | |
30 | - | else fromBase58String(assetIdStr) | |
31 | - | ||
32 | - | ||
33 | - | func getBalance (assetId) = match assetId { | |
34 | - | case x: Unit => | |
35 | - | wavesBalance(this).available | |
36 | - | case _ => | |
37 | - | assetBalance(this, value(assetId)) | |
38 | - | } | |
39 | - | ||
40 | - | ||
41 | - | func exchangeAnSendToStaking (asset0Id,asset1Id,amount0) = { | |
42 | - | let exchangeInvoke = invoke(Address(base58'3PLPCb3wF2H2gtzohoAjeWcGaMKEiJvtE5X'), "exchangeAndSendTo", [getAssetString(asset1Id), plutoStakingAddress], [AttachedPayment(asset0Id, amount0)]) | |
43 | - | if ((exchangeInvoke == exchangeInvoke)) | |
12 | + | @Callable(i) | |
13 | + | func putWaves () = { | |
14 | + | let pmt = i.payments[0] | |
15 | + | if (if ((pmt.assetId != unit)) | |
44 | 16 | then true | |
45 | - | else throw("Strict value is not equal to itself.") | |
17 | + | else (0 >= pmt.amount)) | |
18 | + | then throw("please attach WAVES as a payment") | |
19 | + | else [IntegerEntry((toString(i.caller) + "_wavesPut"), (tryGetInteger((toString(i.caller) + "_wavesPut")) + pmt.amount))] | |
46 | 20 | } | |
47 | 21 | ||
48 | 22 | ||
49 | - | func claimWX (lpId) = { | |
50 | - | let evaluation = split({ | |
51 | - | let @ = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "claimWxREADONLY", [lpId, toString(this)], nil) | |
52 | - | if ($isInstanceOf(@, "String")) | |
53 | - | then @ | |
54 | - | else throw("Couldn't cast Any to String") | |
55 | - | }, "__") | |
56 | - | if ((evaluation == evaluation)) | |
57 | - | then { | |
58 | - | let claimInv = if (((parseIntValue(evaluation[3]) - parseIntValue(evaluation[4])) > 0)) | |
59 | - | then invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "claimWx", [lpId], nil) | |
60 | - | else unit | |
61 | - | if ((claimInv == claimInv)) | |
62 | - | then true | |
63 | - | else throw("Strict value is not equal to itself.") | |
64 | - | } | |
65 | - | else throw("Strict value is not equal to itself.") | |
66 | - | } | |
67 | - | ||
68 | 23 | ||
69 | 24 | @Callable(i) | |
70 | - | func claimTreasuryRewards () = { | |
71 | - | let wxBalance0 = getBalance(wxId) | |
72 | - | if ((wxBalance0 == wxBalance0)) | |
73 | - | then { | |
74 | - | let inv1 = claimWX("97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf") | |
75 | - | if ((inv1 == inv1)) | |
76 | - | then { | |
77 | - | let inv2 = claimWX("EPhdEfmQaNcHyvDmRGhnLhgcJtKZ2a4k3ZBmKWtAEWyH") | |
78 | - | if ((inv2 == inv2)) | |
79 | - | then { | |
80 | - | let inv3 = claimWX("EMsZpqcT8NuMYZCEPHzvrhQCQKhfXjdeekZvcWpHsNvh") | |
81 | - | if ((inv3 == inv3)) | |
82 | - | then { | |
83 | - | let wxEarned = (getBalance(wxId) - wxBalance0) | |
84 | - | if ((wxEarned == wxEarned)) | |
85 | - | then { | |
86 | - | let exchangeResult = exchangeAnSendToStaking(wxId, plutoId, wxEarned) | |
87 | - | if ((exchangeResult == exchangeResult)) | |
88 | - | then [IntegerEntry(("stats_claimedAt_Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on_" + toString(height)), wxEarned), IntegerEntry("stats_lastClaim", height)] | |
89 | - | else throw("Strict value is not equal to itself.") | |
90 | - | } | |
91 | - | else throw("Strict value is not equal to itself.") | |
92 | - | } | |
93 | - | else throw("Strict value is not equal to itself.") | |
94 | - | } | |
95 | - | else throw("Strict value is not equal to itself.") | |
96 | - | } | |
97 | - | else throw("Strict value is not equal to itself.") | |
98 | - | } | |
99 | - | else throw("Strict value is not equal to itself.") | |
25 | + | func claimWaves (amount) = { | |
26 | + | let wavesPut = tryGetInteger((toString(i.caller) + "_wavesPut")) | |
27 | + | if ((wavesPut > amount)) | |
28 | + | then throw("you don't have that much WAVES available") | |
29 | + | else [IntegerEntry((toString(i.caller) + "_wavesPut"), (wavesPut - amount))] | |
100 | 30 | } | |
101 | 31 | ||
102 | 32 | ||
103 | 33 | @Verifier(tx) | |
104 | 34 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
105 | 35 |
github/deemru/w8io/3ef1775 39.54 ms ◑