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:
OldNewDifferences
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