tx · 9DCFNnHQ5Tf696ysBjpiG25jpmQshBPFxYfymbqv3LyM

3MyUDpTMG43mkmScfDKgG9gep4reUboH9YF:  -0.01000000 Waves

2024.05.02 00:23 [3087623] smart account 3MyUDpTMG43mkmScfDKgG9gep4reUboH9YF > SELF 0.00000000 Waves

{ "type": 13, "id": "9DCFNnHQ5Tf696ysBjpiG25jpmQshBPFxYfymbqv3LyM", "fee": 1000000, "feeAssetId": null, "timestamp": 1714598616010, "version": 2, "chainId": 84, "sender": "3MyUDpTMG43mkmScfDKgG9gep4reUboH9YF", "senderPublicKey": "5pPySirDYzGqBH24WnXUvbKDkDVA5qoNuUgCDvkKYJTT", "proofs": [ "4DdpZ9NwJh48Saj95QGfsHDzZjzyprhA2xJjKmfsbYof1SjWy56S1yWpLAzSHpjVZehC624EofEWGidihmPAcyk" ], "script": "base64:BgITCAISCAoGCAgICAEBEgUKAwgIARUAB1dhdmVzSWQCBVdBVkVTAAZIZWlnaHQFBmhlaWdodAAQQ2FsbGVyQWRkcmVzc0tleQITc2V0dXBfY2FsbGVyQWRkcmVzcwAaUHV6emxlQWdncmVnYXRvckFkZHJlc3NLZXkCHXNldHVwX3B1enpsZUFnZ3JlZ2F0b3JBZGRyZXNzABdQdXp6bGVTdGFraW5nQWRkcmVzc0tleQIac2V0dXBfcHV6emxlU3Rha2luZ0FkZHJlc3MAC1B1enpsZUlkS2V5Ag5zZXR1cF9wdXp6bGVJZAAUQnV5YmFja0l0ZXJhdGlvbnNLZXkCF3NldHVwX2J1eWJhY2tJdGVyYXRpb25zAA9CdXliYWNrRGVsYXlLZXkCEnNldHVwX2J1eWJhY2tEZWxheQAUVG90YWxCb3VnaHRQdXp6bGVLZXkCEXRvdGFsQm91Z2h0UHV6emxlAA1DYWxsZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRBDYWxsZXJBZGRyZXNzS2V5ABdQdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUaUHV6emxlQWdncmVnYXRvckFkZHJlc3NLZXkAFFB1enpsZVN0YWtpbmdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRdQdXp6bGVTdGFraW5nQWRkcmVzc0tleQAIUHV6emxlSWQJARFAZXh0ck5hdGl2ZSgxMDUyKQIFBHRoaXMFC1B1enpsZUlkS2V5ABFCdXliYWNrSXRlcmF0aW9ucwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUUQnV5YmFja0l0ZXJhdGlvbnNLZXkADEJ1eWJhY2tEZWxheQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUPQnV5YmFja0RlbGF5S2V5ABJCdXliYWNrRXBvY2hMZW5ndGgJAGgCBRFCdXliYWNrSXRlcmF0aW9ucwUMQnV5YmFja0RlbGF5ARhtYWtlTGFzdEJ1eWJhY2tIZWlnaHRLZXkBBWFzc2V0CQCsAgICEmxhc3RCdXliYWNrSGVpZ2h0XwUFYXNzZXQBE21ha2VCdXliYWNrSW5wdXRLZXkCBWFzc2V0C2Vwb2NoSGVpZ2h0CQCsAgIJAKwCAgkArAICAg1idXliYWNrSW5wdXRfBQVhc3NldAIBXwkApAMBBQtlcG9jaEhlaWdodAEMbWFrZVN0YXRzS2V5AwFpDGJ1eWJhY2tJbnB1dAVhc3NldAkAuQkCCQDMCAICBXN0YXRzCQDMCAIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkAzAgCCQCkAwEFBkhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUMYnV5YmFja0lucHV0CQDMCAIFBWFzc2V0BQNuaWwCAV8BFGdldExhc3RCdXliYWNrSGVpZ2h0AQVhc3NldAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEYbWFrZUxhc3RCdXliYWNrSGVpZ2h0S2V5AQUFYXNzZXQAAAEPZ2V0QnV5YmFja0lucHV0AgVhc3NldAtlcG9jaEhlaWdodAkAmggCBQR0aGlzCQETbWFrZUJ1eWJhY2tJbnB1dEtleQIFBWFzc2V0BQtlcG9jaEhlaWdodAIBaQEFc2V0dXAGDWNhbGxlckFkZHJlc3MXcHV6emxlQWdncmVnYXRvckFkZHJlc3MUcHV6emxlU3Rha2luZ0FkZHJlc3MIcHV6emxlSWQRYnV5YmFja0l0ZXJhdGlvbnMMYnV5YmFja0RlbGF5AwkBAiE9AgkAoQgBBQtQdXp6bGVJZEtleQUEdW5pdAkAAgECF0NhbiBiZSBjYWxsZWQgb25seSBvbmNlAwkAAAIJAKYIAQUNY2FsbGVyQWRkcmVzcwUEdW5pdAkAAgEJAKwCAgIXSW52YWxpZCBjYWxsZXJBZGRyZXNzOiAFDWNhbGxlckFkZHJlc3MDCQAAAgkApggBBRdwdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwUEdW5pdAkAAgEJAKwCAgIhSW52YWxpZCBwdXp6bGVBZ2dyZWdhdG9yQWRkcmVzczogBRdwdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwMJAAACCQCmCAEFFHB1enpsZVN0YWtpbmdBZGRyZXNzBQR1bml0CQACAQkArAICAh5JbnZhbGlkIHB1enpsZVN0YWtpbmdBZGRyZXNzOiAFFHB1enpsZVN0YWtpbmdBZGRyZXNzAwkAAAIJAOwHAQkA2QQBBQhwdXp6bGVJZAUEdW5pdAkAAgEJAKwCAgISVW5rbm93biBwdXp6bGVJZDogBQhwdXp6bGVJZAMJAGcCAAAFEWJ1eWJhY2tJdGVyYXRpb25zCQACAQkArAICAjVidXliYWNrSXRlcmF0aW9ucyBzaG91bGQgYmUgcG9zaXRpdmUsIGN1cnJlbnQgdmFsdWU6IAkApAMBBRFidXliYWNrSXRlcmF0aW9ucwMJAGcCAAAFDGJ1eWJhY2tEZWxheQkAAgEJAKwCAgIwYnV5YmFja0RlbGF5IHNob3VsZCBiZSBwb3NpdGl2ZSwgY3VycmVudCB2YWx1ZTogCQCkAwEFDGJ1eWJhY2tEZWxheQkAzAgCCQELU3RyaW5nRW50cnkCBRBDYWxsZXJBZGRyZXNzS2V5BQ1jYWxsZXJBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIFGlB1enpsZUFnZ3JlZ2F0b3JBZGRyZXNzS2V5BRdwdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCBRdQdXp6bGVTdGFraW5nQWRkcmVzc0tleQUUcHV6emxlU3Rha2luZ0FkZHJlc3MJAMwIAgkBC0JpbmFyeUVudHJ5AgULUHV6emxlSWRLZXkJANkEAQUIcHV6emxlSWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFEJ1eWJhY2tJdGVyYXRpb25zS2V5BRFidXliYWNrSXRlcmF0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPQnV5YmFja0RlbGF5S2V5BQxidXliYWNrRGVsYXkFA25pbAFpARxidXliYWNrUHV6emxlQW5kVG9wVXBSZXdhcmRzAwVhc3NldAVyb3V0ZQxtaW5Ub1JlY2VpdmUDCQECIT0CCAUBaQZjYWxsZXIFDUNhbGxlckFkZHJlc3MJAAIBAhBXaGl0ZWxpc3RlZCBvbmx5BBFsYXN0QnV5YmFja0hlaWdodAkBFGdldExhc3RCdXliYWNrSGVpZ2h0AQUFYXNzZXQDCQBmAgkAZAIFEWxhc3RCdXliYWNrSGVpZ2h0BQxCdXliYWNrRGVsYXkFBkhlaWdodAkAAgECB05vdCB5ZXQECyR0MDMyNzEzNTQyAwkAAAIFBWFzc2V0BQdXYXZlc0lkCQCUCgIFBHVuaXQICQDvBwEFBHRoaXMJYXZhaWxhYmxlBA5jdXJyZW50QXNzZXRJZAkA2QQBBQVhc3NldAQTY3VycmVudEFzc2V0QmFsYW5jZQkA8AcCBQR0aGlzBQ5jdXJyZW50QXNzZXRJZAkAlAoCBQ5jdXJyZW50QXNzZXRJZAUTY3VycmVudEFzc2V0QmFsYW5jZQQHYXNzZXRJZAgFCyR0MDMyNzEzNTQyAl8xBAdiYWxhbmNlCAULJHQwMzI3MTM1NDICXzIEC2Vwb2NoSGVpZ2h0CQBoAgkAaQIFBkhlaWdodAUSQnV5YmFja0Vwb2NoTGVuZ3RoBRJCdXliYWNrRXBvY2hMZW5ndGgEEWVwb2NoQnV5YmFja0lucHV0CQELdmFsdWVPckVsc2UCCQEPZ2V0QnV5YmFja0lucHV0AgUFYXNzZXQFC2Vwb2NoSGVpZ2h0CQBpAgUHYmFsYW5jZQURQnV5YmFja0l0ZXJhdGlvbnMEDGJ1eWJhY2tJbnB1dAMJAGYCBRFlcG9jaEJ1eWJhY2tJbnB1dAUHYmFsYW5jZQUHYmFsYW5jZQURZXBvY2hCdXliYWNrSW5wdXQDCQBnAgAABQxidXliYWNrSW5wdXQJAAIBCQCsAgICEUVtcHR5IGJhbGFuY2Ugb2YgBQVhc3NldAQKc3dhcEludm9rZQkA/AcEBRdQdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwIQc3dhcFdpdGhSZWZlcnJhbAkAzAgCBQVyb3V0ZQkAzAgCBQxtaW5Ub1JlY2VpdmUJAMwIAgIKcHV6emxlbm9kZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBQxidXliYWNrSW5wdXQFA25pbAMJAAACBQpzd2FwSW52b2tlBQpzd2FwSW52b2tlBAxib3VnaHRQdXp6bGUJAPAHAgUEdGhpcwUIUHV6emxlSWQDCQBnAgAABQxib3VnaHRQdXp6bGUJAAIBCQCsAgIJAKwCAgkArAICAh5QdXp6bGUgd2FzIG5vdCBib3VnaHQsIGFzc2V0OiAFBWFzc2V0AgksIHJvdXRlOiAFBXJvdXRlBAt0b3BVcEludm9rZQkA/AcEBRRQdXp6bGVTdGFraW5nQWRkcmVzcwILdG9wVXBSZXdhcmQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIUHV6emxlSWQFDGJvdWdodFB1enpsZQUDbmlsAwkAAAIFC3RvcFVwSW52b2tlBQt0b3BVcEludm9rZQQRdG90YWxCb3VnaHRQdXp6bGUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFFRvdGFsQm91Z2h0UHV6emxlS2V5AAAFDGJvdWdodFB1enpsZQQIc3RhdHNLZXkJAQxtYWtlU3RhdHNLZXkDBQFpBQxidXliYWNrSW5wdXQFBWFzc2V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYbWFrZUxhc3RCdXliYWNrSGVpZ2h0S2V5AQUFYXNzZXQFBkhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE21ha2VCdXliYWNrSW5wdXRLZXkCBQVhc3NldAULZXBvY2hIZWlnaHQFEWVwb2NoQnV5YmFja0lucHV0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhzdGF0c0tleQUMYm91Z2h0UHV6emxlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRUb3RhbEJvdWdodFB1enpsZUtleQURdG90YWxCb3VnaHRQdXp6bGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXn5bv6N", "height": 3087623, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: CaKDo4wPYe63FFW5TBzmubKcDEsiZxUdA3GGp7RTBg9v Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = "WAVES"
5+
6+let b = height
7+
8+let c = "setup_callerAddress"
9+
10+let d = "setup_puzzleAggregatorAddress"
11+
12+let e = "setup_puzzleStakingAddress"
13+
14+let f = "setup_puzzleId"
15+
16+let g = "setup_buybackIterations"
17+
18+let h = "setup_buybackDelay"
19+
20+let i = "totalBoughtPuzzle"
21+
22+let j = addressFromStringValue(getStringValue(this, c))
23+
24+let k = addressFromStringValue(getStringValue(this, d))
25+
26+let l = addressFromStringValue(getStringValue(this, e))
27+
28+let m = getBinaryValue(this, f)
29+
30+let n = getIntegerValue(this, g)
31+
32+let o = getIntegerValue(this, h)
33+
34+let p = (n * o)
35+
36+func q (r) = ("lastBuybackHeight_" + r)
37+
38+
39+func s (r,t) = ((("buybackInput_" + r) + "_") + toString(t))
40+
41+
42+func u (v,w,r) = makeString(["stats", toBase58String(v.transactionId), toString(b), toString(lastBlock.timestamp), toString(w), r], "_")
43+
44+
45+func x (r) = valueOrElse(getInteger(this, q(r)), 0)
46+
47+
48+func y (r,t) = getInteger(this, s(r, t))
49+
50+
51+@Callable(v)
52+func setup (z,A,B,C,D,E) = if ((getBinary(f) != unit))
53+ then throw("Can be called only once")
54+ else if ((addressFromString(z) == unit))
55+ then throw(("Invalid callerAddress: " + z))
56+ else if ((addressFromString(A) == unit))
57+ then throw(("Invalid puzzleAggregatorAddress: " + A))
58+ else if ((addressFromString(B) == unit))
59+ then throw(("Invalid puzzleStakingAddress: " + B))
60+ else if ((assetInfo(fromBase58String(C)) == unit))
61+ then throw(("Unknown puzzleId: " + C))
62+ else if ((0 >= D))
63+ then throw(("buybackIterations should be positive, current value: " + toString(D)))
64+ else if ((0 >= E))
65+ then throw(("buybackDelay should be positive, current value: " + toString(E)))
66+ else [StringEntry(c, z), StringEntry(d, A), StringEntry(e, B), BinaryEntry(f, fromBase58String(C)), IntegerEntry(g, D), IntegerEntry(h, E)]
67+
68+
69+
70+@Callable(v)
71+func buybackPuzzleAndTopUpRewards (r,F,G) = if ((v.caller != j))
72+ then throw("Whitelisted only")
73+ else {
74+ let H = x(r)
75+ if (((H + o) > b))
76+ then throw("Not yet")
77+ else {
78+ let I = if ((r == a))
79+ then $Tuple2(unit, wavesBalance(this).available)
80+ else {
81+ let J = fromBase58String(r)
82+ let K = assetBalance(this, J)
83+ $Tuple2(J, K)
84+ }
85+ let L = I._1
86+ let M = I._2
87+ let t = ((b / p) * p)
88+ let N = valueOrElse(y(r, t), (M / n))
89+ let w = if ((N > M))
90+ then M
91+ else N
92+ if ((0 >= w))
93+ then throw(("Empty balance of " + r))
94+ else {
95+ let O = invoke(k, "swapWithReferral", [F, G, "puzzlenode"], [AttachedPayment(L, w)])
96+ if ((O == O))
97+ then {
98+ let P = assetBalance(this, m)
99+ if ((0 >= P))
100+ then throw(((("Puzzle was not bought, asset: " + r) + ", route: ") + F))
101+ else {
102+ let Q = invoke(l, "topUpReward", nil, [AttachedPayment(m, P)])
103+ if ((Q == Q))
104+ then {
105+ let R = (valueOrElse(getInteger(this, i), 0) + P)
106+ let S = u(v, w, r)
107+[IntegerEntry(q(r), b), IntegerEntry(s(r, t), N), IntegerEntry(S, P), IntegerEntry(i, R)]
108+ }
109+ else throw("Strict value is not equal to itself.")
110+ }
111+ }
112+ else throw("Strict value is not equal to itself.")
113+ }
114+ }
115+ }
116+
117+
118+@Verifier(T)
119+func U () = sigVerify(T.bodyBytes, T.proofs[0], T.senderPublicKey)
120+

github/deemru/w8io/3ef1775 
26.02 ms