tx · HX2qcsRGvSQgnaxXsFFtksiF2352Mj4QzarSYFrTa4XA

3MsU428UzSefm85q7jvBsRV66Du7E72xEkL:  -0.01000000 Waves

2022.06.10 10:59 [2090021] smart account 3MsU428UzSefm85q7jvBsRV66Du7E72xEkL > SELF 0.00000000 Waves

{ "type": 13, "id": "HX2qcsRGvSQgnaxXsFFtksiF2352Mj4QzarSYFrTa4XA", "fee": 1000000, "feeAssetId": null, "timestamp": 1654848021166, "version": 2, "chainId": 84, "sender": "3MsU428UzSefm85q7jvBsRV66Du7E72xEkL", "senderPublicKey": "58FFoU7LCj1DKboVntQXuE3KQDpf92NouXncN5b4vY8U", "proofs": [ "AsPqetPFPoDZ6g7NdZNzVXtCq6Bg8wneerZtG2xrGpaUNQDihAxDmUTw5gnyerrL4yXT4f4WuqTnYX7QXy74wPa" ], "script": "base64:AAIFAAAAAAAAAAsIAhIAEgMKAQESAAAAAAgAAAAACkRJU0NMQUlNRVICAAAAGnB1enpsZSBzdGFraW5nIHNjLiB0eXZtIDopAAAAAAVzY2FsZQAAAAAABfXhAAAAAAAIcHV6emxlSWQBAAAAIC03E4HTJDddn+FvdtPRD5PvLCz03YmtXEpW6HzJAXIbAAAAAAxlYXJuZWRBc3NldHMJAARMAAAAAgEAAAAgrZ1IFoWReWfvw0p6hpnR3VDpBUk85P5AREeM4YPEwvQFAAAAA25pbAAAAAASZWFybmVkQXNzZXRzQW1vdW50CQABkAAAAAEFAAAADGVhcm5lZEFzc2V0cwEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAAB1jYWxjdWxhdGVDdXJyZW50QXNzZXRJbnRlcmVzdAAAAAIAAAAHYXNzZXRJZAAAAAphc3NldElkU3RyBAAAAAt0b3RhbFN0YWtlZAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABNnbG9iYWxfcHV6emxlU3Rha2VkBAAAABV0b2tlbkJhbGFuY2VMYXN0Q2hlY2sJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAAEWdsb2JhbF9sYXN0Q2hlY2tfBQAAAAphc3NldElkU3RyAgAAAAlfZWFybmluZ3MEAAAAFGN1cnJlbnRUb2tlbkVhcm5pbmdzCQABlgAAAAEJAARMAAAAAgUAAAAVdG9rZW5CYWxhbmNlTGFzdENoZWNrCQAETAAAAAIJAAPwAAAAAgUAAAAEdGhpcwUAAAAHYXNzZXRJZAUAAAADbmlsBAAAAAtuZXdFYXJuaW5ncwkAAGUAAAACBQAAABRjdXJyZW50VG9rZW5FYXJuaW5ncwUAAAAVdG9rZW5CYWxhbmNlTGFzdENoZWNrBAAAAAtuZXdJbnRlcmVzdAMJAAAAAAAAAgUAAAALdG90YWxTdGFrZWQAAAAAAAAAAAAAAAAAAAAAAAAJAABrAAAAAwUAAAALbmV3RWFybmluZ3MFAAAABXNjYWxlBQAAAAt0b3RhbFN0YWtlZAQAAAARbGFzdENoZWNrSW50ZXJlc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAAEWdsb2JhbF9sYXN0Q2hlY2tfBQAAAAphc3NldElkU3RyAgAAAAlfaW50ZXJlc3QJAABkAAAAAgUAAAARbGFzdENoZWNrSW50ZXJlc3QFAAAAC25ld0ludGVyZXN0AQAAAAtjbGFpbVJlc3VsdAAAAAEAAAAHYWRkcmVzcwQAAAAKYWRkcmVzc1N0cgkABCUAAAABBQAAAAdhZGRyZXNzBAAAAAxwdXp6bGVBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACBQAAAAphZGRyZXNzU3RyAgAAAA1fcHV6emxlU3Rha2VkCgEAAAAHaGFuZGxlcgAAAAIAAAAFYWNjdW0AAAAHYXNzZXRJZAQAAAAKYXNzZXRJZFN0cgkAAlgAAAABBQAAAAdhc3NldElkBAAAABRjdXJyZW50VG9rZW5JbnRlcmVzdAkBAAAAHWNhbGN1bGF0ZUN1cnJlbnRBc3NldEludGVyZXN0AAAAAgUAAAAHYXNzZXRJZAUAAAAKYXNzZXRJZFN0cgQAAAAUY3VycmVudFRva2VuRWFybmluZ3MJAAGWAAAAAQkABEwAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABFnbG9iYWxfbGFzdENoZWNrXwUAAAAKYXNzZXRJZFN0cgIAAAAJX2Vhcm5pbmdzCQAETAAAAAIJAAPwAAAAAgUAAAAEdGhpcwUAAAAHYXNzZXRJZAUAAAADbmlsBAAAAAxyZXdhcmRBbW91bnQJAABrAAAAAwUAAAAMcHV6emxlQW1vdW50CQAAZQAAAAIFAAAAFGN1cnJlbnRUb2tlbkludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACmFkZHJlc3NTdHICAAAAC19sYXN0Q2hlY2tfBQAAAAphc3NldElkU3RyAgAAAAlfaW50ZXJlc3QFAAAABXNjYWxlAwkAAAAAAAACBQAAAAxyZXdhcmRBbW91bnQAAAAAAAAAAAAFAAAA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", "height": 2090021, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6eC7XpinLjD7ZWisd4M5TyHy41mSk9PgvHEUDHHc5UMq Next: none Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "testing PUZZLE staking smart contract with rewards in multiple assets"
4+let a = "puzzle staking sc. tyvm :)"
55
66 let b = 100000000
77
9797
9898
9999 @Callable(H)
100-func unstake (v) = {
100+func unstake (K) = {
101101 let u = toString(H.caller)
102- let K = f((u + "_puzzleStaked"))
103- if ((v > K))
102+ let L = f((u + "_puzzleStaked"))
103+ if ((K > L))
104104 then throw("you don't have PUZZLE available")
105- else (s(H.caller) ++ [IntegerEntry((u + "_puzzleStaked"), (K - v)), IntegerEntry("global_puzzleStaked", (f("global_puzzleStaked") - v))])
105+ else (s(H.caller) ++ [IntegerEntry((u + "_puzzleStaked"), (L - K)), IntegerEntry("global_puzzleStaked", (f("global_puzzleStaked") - K))])
106106 }
107107
108108
111111 func claim () = s(H.caller)
112112
113113
114-@Verifier(L)
115-func M () = sigVerify(L.bodyBytes, L.proofs[0], L.senderPublicKey)
114+@Verifier(M)
115+func N () = sigVerify(M.bodyBytes, M.proofs[0], M.senderPublicKey)
116116
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "testing PUZZLE staking smart contract with rewards in multiple assets"
4+let a = "puzzle staking sc. tyvm :)"
55
66 let b = 100000000
77
88 let c = base58'43W4FcqA1rEpSmUGHoGiXvpSLfhadws9LS5j3SJsKxxS'
99
1010 let d = [base58'CgidgEMbCKXXErgJXVyZCFRaK8SBNA73Jg8mNXALtVKh']
1111
1212 let e = size(d)
1313
1414 func f (g) = {
1515 let h = getInteger(this, g)
1616 if ($isInstanceOf(h, "Int"))
1717 then {
1818 let i = h
1919 i
2020 }
2121 else 0
2222 }
2323
2424
2525 func j (k,l) = {
2626 let m = f("global_puzzleStaked")
2727 let n = f((("global_lastCheck_" + l) + "_earnings"))
2828 let o = max([n, assetBalance(this, k)])
2929 let p = (o - n)
3030 let q = if ((m == 0))
3131 then 0
3232 else fraction(p, b, m)
3333 let r = f((("global_lastCheck_" + l) + "_interest"))
3434 (r + q)
3535 }
3636
3737
3838 func s (t) = {
3939 let u = toString(t)
4040 let v = f((u + "_puzzleStaked"))
4141 func w (x,k) = {
4242 let l = toBase58String(k)
4343 let y = j(k, l)
4444 let o = max([f((("global_lastCheck_" + l) + "_earnings")), assetBalance(this, k)])
4545 let z = fraction(v, (y - f((((u + "_lastCheck_") + l) + "_interest"))), b)
4646 if ((z == 0))
4747 then x
4848 else (x ++ [IntegerEntry((("global_lastCheck_" + l) + "_earnings"), (o - z)), IntegerEntry((("global_lastCheck_" + l) + "_interest"), y), IntegerEntry((((u + "_lastCheck_") + l) + "_interest"), y), ScriptTransfer(t, z, k)])
4949 }
5050
5151 let A = d
5252 let B = size(A)
5353 let C = nil
5454 func D (E,F) = if ((F >= B))
5555 then E
5656 else w(E, A[F])
5757
5858 func G (E,F) = if ((F >= B))
5959 then E
6060 else throw("List size exceeds 17")
6161
6262 G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
6363 }
6464
6565
6666 @Callable(H)
6767 func stake () = {
6868 let u = toString(H.caller)
6969 let I = H.payments[0]
7070 if ((value(I.assetId) != c))
7171 then throw("wrong asset attached")
7272 else {
7373 func w (x,k) = {
7474 let l = toBase58String(k)
7575 let y = j(k, l)
7676 (x ++ [IntegerEntry((("global_lastCheck_" + l) + "_earnings"), assetBalance(this, k)), IntegerEntry((("global_lastCheck_" + l) + "_interest"), y), IntegerEntry((((u + "_lastCheck_") + l) + "_interest"), y)])
7777 }
7878
7979 let J = {
8080 let A = d
8181 let B = size(A)
8282 let C = nil
8383 func D (E,F) = if ((F >= B))
8484 then E
8585 else w(E, A[F])
8686
8787 func G (E,F) = if ((F >= B))
8888 then E
8989 else throw("List size exceeds 17")
9090
9191 G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
9292 }
9393 (J ++ [IntegerEntry((u + "_puzzleStaked"), (f((u + "_puzzleStaked")) + I.amount)), IntegerEntry("global_puzzleStaked", (f("global_puzzleStaked") + I.amount))])
9494 }
9595 }
9696
9797
9898
9999 @Callable(H)
100-func unstake (v) = {
100+func unstake (K) = {
101101 let u = toString(H.caller)
102- let K = f((u + "_puzzleStaked"))
103- if ((v > K))
102+ let L = f((u + "_puzzleStaked"))
103+ if ((K > L))
104104 then throw("you don't have PUZZLE available")
105- else (s(H.caller) ++ [IntegerEntry((u + "_puzzleStaked"), (K - v)), IntegerEntry("global_puzzleStaked", (f("global_puzzleStaked") - v))])
105+ else (s(H.caller) ++ [IntegerEntry((u + "_puzzleStaked"), (L - K)), IntegerEntry("global_puzzleStaked", (f("global_puzzleStaked") - K))])
106106 }
107107
108108
109109
110110 @Callable(H)
111111 func claim () = s(H.caller)
112112
113113
114-@Verifier(L)
115-func M () = sigVerify(L.bodyBytes, L.proofs[0], L.senderPublicKey)
114+@Verifier(M)
115+func N () = sigVerify(M.bodyBytes, M.proofs[0], M.senderPublicKey)
116116

github/deemru/w8io/873ac7e 
32.06 ms