tx · DDmFH69Dc5JQnaktBgUa8YdfstQjayLD7cEiD6HWTwHQ 3PNYgBHYYGmBb4bT1vkSj8v1SpDUgtES74j: -0.01400000 Waves 2021.11.04 17:04 [2841390] smart account 3PNYgBHYYGmBb4bT1vkSj8v1SpDUgtES74j > SELF 0.00000000 Waves
{ "type": 13, "id": "DDmFH69Dc5JQnaktBgUa8YdfstQjayLD7cEiD6HWTwHQ", "fee": 1400000, "feeAssetId": null, "timestamp": 1636034688499, "version": 2, "chainId": 87, "sender": "3PNYgBHYYGmBb4bT1vkSj8v1SpDUgtES74j", "senderPublicKey": "6XzzYweByWCG3Xs41TWXKovsCJ9hvrjbS6WKhpLbk3fT", "proofs": [ "poibsBu9eeyXMiAtyw382aC2K3RscuNQriRFqpoBaggEBWtQqC26tWUDYuFe441AGpaZ8Eyjbh2zJ4Bx1SwRckc" ], "script": "base64:AAIFAAAAAAAAAAsIAhIAEgMKAQESAAAAAAgAAAAACkRJU0NMQUlNRVICAAAARXRlc3RpbmcgUFVaWkxFIHN0YWtpbmcgc21hcnQgY29udHJhY3Qgd2l0aCByZXdhcmRzIGluIG11bHRpcGxlIGFzc2V0cwAAAAAFc2NhbGUAAAAAAAX14QAAAAAACHB1enpsZUlkAQAAACBBIZuuyi0sxz5PbQQ6Yf0rAwLfOT2k4spe7CKuxSj1CQAAAAAMZWFybmVkQXNzZXRzCQAETAAAAAIBAAAAILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRBQAAAANuaWwAAAAAEmVhcm5lZEFzc2V0c0Ftb3VudAkAAZAAAAABBQAAAAxlYXJuZWRBc3NldHMBAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAdY2FsY3VsYXRlQ3VycmVudEFzc2V0SW50ZXJlc3QAAAABAAAAB2Fzc2V0SWQEAAAACmFzc2V0SWRTdHIJAAJYAAAAAQUAAAAHYXNzZXRJZAQAAAALdG90YWxTdGFrZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAATZ2xvYmFsX3B1enpsZVN0YWtlZAQAAAAUY3VycmVudFRva2VuRWFybmluZ3MJAAGWAAAAAQkABEwAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABFnbG9iYWxfbGFzdENoZWNrXwUAAAAKYXNzZXRJZFN0cgIAAAAJX2Vhcm5pbmdzCQAETAAAAAIJAAPwAAAAAgUAAAAEdGhpcwUAAAAHYXNzZXRJZAUAAAADbmlsBAAAAAtuZXdFYXJuaW5ncwkAAGUAAAACBQAAABRjdXJyZW50VG9rZW5FYXJuaW5ncwkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAARZ2xvYmFsX2xhc3RDaGVja18FAAAACmFzc2V0SWRTdHICAAAACV9lYXJuaW5ncwQAAAALbmV3SW50ZXJlc3QDCQAAAAAAAAIFAAAAC3RvdGFsU3Rha2VkAAAAAAAAAAAAAAAAAAAAAAAACQAAawAAAAMFAAAAC25ld0Vhcm5pbmdzBQAAAAVzY2FsZQUAAAALdG90YWxTdGFrZWQEAAAAEWxhc3RDaGVja0ludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABFnbG9iYWxfbGFzdENoZWNrXwUAAAAKYXNzZXRJZFN0cgIAAAAJX2ludGVyZXN0CQAAZAAAAAIFAAAAEWxhc3RDaGVja0ludGVyZXN0BQAAAAtuZXdJbnRlcmVzdAEAAAALY2xhaW1SZXN1bHQAAAABAAAAB2FkZHJlc3MEAAAACmFkZHJlc3NTdHIJAAQlAAAAAQUAAAAHYWRkcmVzcwoBAAAAB2hhbmRsZXIAAAACAAAABWFjY3VtAAAAB2Fzc2V0SWQEAAAACmFzc2V0SWRTdHIJAAJYAAAAAQUAAAAHYXNzZXRJZAQAAAAUY3VycmVudFRva2VuSW50ZXJlc3QJAQAAAB1jYWxjdWxhdGVDdXJyZW50QXNzZXRJbnRlcmVzdAAAAAEFAAAAB2Fzc2V0SWQEAAAAFGN1cnJlbnRUb2tlbkVhcm5pbmdzCQABlgAAAAEJAARMAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAARZ2xvYmFsX2xhc3RDaGVja18FAAAACmFzc2V0SWRTdHICAAAACV9lYXJuaW5ncwkABEwAAAACCQAD8AAAAAIFAAAABHRoaXMFAAAAB2Fzc2V0SWQFAAAAA25pbAQAAAAMcHV6emxlQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgUAAAAKYWRkcmVzc1N0cgIAAAANX3B1enpsZVN0YWtlZAQAAAAMcmV3YXJkQW1vdW50CQAAawAAAAMFAAAADHB1enpsZUFtb3VudAkAAGUAAAACBQAAABRjdXJyZW50VG9rZW5JbnRlcmVzdAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAphZGRyZXNzU3RyAgAAAAtfbGFzdENoZWNrXwUAAAAKYXNzZXRJZFN0cgIA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", "height": 2841390, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: HdotRvpeyD4Nw9885BRGFyFZNtVG7okpPEtJqAtFr8ZS Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = "testing PUZZLE staking smart contract with rewards in multiple assets" | |
5 | + | ||
6 | + | let b = 100000000 | |
7 | + | ||
8 | + | let c = base58'5PFDy4GuDdeKLfKwcdm65s9y3MiEB7w1yEiEDkXNSCSU' | |
9 | + | ||
10 | + | let d = [base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'] | |
11 | + | ||
12 | + | let e = size(d) | |
13 | + | ||
14 | + | func f (g) = { | |
15 | + | let h = getInteger(this, g) | |
16 | + | if ($isInstanceOf(h, "Int")) | |
17 | + | then { | |
18 | + | let i = h | |
19 | + | i | |
20 | + | } | |
21 | + | else 0 | |
22 | + | } | |
23 | + | ||
24 | + | ||
25 | + | func j (k) = { | |
26 | + | let l = toBase58String(k) | |
27 | + | let m = f("global_puzzleStaked") | |
28 | + | let n = max([f((("global_lastCheck_" + l) + "_earnings")), assetBalance(this, k)]) | |
29 | + | let o = (n - f((("global_lastCheck_" + l) + "_earnings"))) | |
30 | + | let p = if ((m == 0)) | |
31 | + | then 0 | |
32 | + | else fraction(o, b, m) | |
33 | + | let q = f((("global_lastCheck_" + l) + "_interest")) | |
34 | + | (q + p) | |
35 | + | } | |
36 | + | ||
37 | + | ||
38 | + | func r (s) = { | |
39 | + | let t = toString(s) | |
40 | + | func u (v,k) = { | |
41 | + | let l = toBase58String(k) | |
42 | + | let w = j(k) | |
43 | + | let n = max([f((("global_lastCheck_" + l) + "_earnings")), assetBalance(this, k)]) | |
44 | + | let x = f((t + "_puzzleStaked")) | |
45 | + | let y = fraction(x, (w - f((((t + "_lastCheck_") + l) + "_interest"))), b) | |
46 | + | if ((y == 0)) | |
47 | + | then v | |
48 | + | else (v ++ [IntegerEntry((("global_lastCheck_" + l) + "_earnings"), (n - y)), IntegerEntry((("global_lastCheck_" + l) + "_interest"), w), IntegerEntry((((t + "_lastCheck_") + l) + "_interest"), w), ScriptTransfer(s, y, k)]) | |
49 | + | } | |
50 | + | ||
51 | + | let z = d | |
52 | + | let A = size(z) | |
53 | + | let B = nil | |
54 | + | func C (D,E) = if ((E >= A)) | |
55 | + | then D | |
56 | + | else u(D, z[E]) | |
57 | + | ||
58 | + | func F (D,E) = if ((E >= A)) | |
59 | + | then D | |
60 | + | else throw("List size exceeds 10") | |
61 | + | ||
62 | + | F(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
63 | + | } | |
64 | + | ||
65 | + | ||
66 | + | @Callable(G) | |
67 | + | func stake () = { | |
68 | + | let t = toString(G.caller) | |
69 | + | let H = G.payments[0] | |
70 | + | if ((value(H.assetId) != c)) | |
71 | + | then throw("wrong asset attached") | |
72 | + | else { | |
73 | + | func u (v,k) = { | |
74 | + | let l = toBase58String(k) | |
75 | + | let w = j(k) | |
76 | + | (v ++ [IntegerEntry((("global_lastCheck_" + l) + "_earnings"), assetBalance(this, k)), IntegerEntry((("global_lastCheck_" + l) + "_interest"), w), IntegerEntry((((t + "_lastCheck_") + l) + "_interest"), w)]) | |
77 | + | } | |
78 | + | ||
79 | + | let I = { | |
80 | + | let z = d | |
81 | + | let A = size(z) | |
82 | + | let B = nil | |
83 | + | func C (D,E) = if ((E >= A)) | |
84 | + | then D | |
85 | + | else u(D, z[E]) | |
86 | + | ||
87 | + | func F (D,E) = if ((E >= A)) | |
88 | + | then D | |
89 | + | else throw("List size exceeds 10") | |
90 | + | ||
91 | + | F(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
92 | + | } | |
93 | + | (I ++ [IntegerEntry((t + "_puzzleStaked"), (f((t + "_puzzleStaked")) + H.amount)), IntegerEntry("global_puzzleStaked", (f("global_puzzleStaked") + H.amount))]) | |
94 | + | } | |
95 | + | } | |
96 | + | ||
97 | + | ||
98 | + | ||
99 | + | @Callable(G) | |
100 | + | func unstake (x) = { | |
101 | + | let t = toString(G.caller) | |
102 | + | let J = f((t + "_puzzleStaked")) | |
103 | + | if ((x > J)) | |
104 | + | then throw("you don't have PUZZLE available") | |
105 | + | else (r(G.caller) ++ [IntegerEntry((t + "_puzzleStaked"), (J - x)), IntegerEntry("global_puzzleStaked", (f("global_puzzleStaked") - x))]) | |
106 | + | } | |
107 | + | ||
108 | + | ||
109 | + | ||
110 | + | @Callable(G) | |
111 | + | func claim () = r(G.caller) | |
112 | + | ||
113 | + | ||
114 | + | @Verifier(K) | |
115 | + | func L () = sigVerify(K.bodyBytes, K.proofs[0], K.senderPublicKey) | |
116 | + |
github/deemru/w8io/3ef1775 21.99 ms ◑