tx · 3bxs3NaozKasSL6Tkpo8fvbPTEHdRgXuDyBvp5nZYsaA

3N8AfuCywsTjJgFTnEzY6AVQwaB84sQTKRE:  -0.03700000 Waves

2023.03.04 14:27 [2475245] smart account 3N8AfuCywsTjJgFTnEzY6AVQwaB84sQTKRE > SELF 0.00000000 Waves

{ "type": 13, "id": "3bxs3NaozKasSL6Tkpo8fvbPTEHdRgXuDyBvp5nZYsaA", "fee": 3700000, "feeAssetId": null, "timestamp": 1677929233557, "version": 2, "chainId": 84, "sender": "3N8AfuCywsTjJgFTnEzY6AVQwaB84sQTKRE", "senderPublicKey": "2xKeXbdM9foVwuYZuNRHgp8YW7g3LowcCAg4pp6yu2Es", "proofs": [ "83m3cZP6qEMLHRZvdX9K1UgVr9R1w9WQVjV8ZRuFARBBYnHwvgVAbgC64828qLTXqnsiwNmGp6tndhtSGxELToF" ], "script": "base64:BgIPCAISAwoBCBIGCgQEBAQIDQANa19pbml0aWFsaXplZAINa19pbml0aWFsaXplZAAUa19jb29yZGluYXRvckFkZHJlc3MCFGtfY29vcmRpbmF0b3JBZGRyZXNzABFrX3N0YWtpbmdfYWRkcmVzcwIRa19zdGFraW5nX2FkZHJlc3MAEWtfZmFybWluZ19hZGRyZXNzAhFrX2Zhcm1pbmdfYWRkcmVzcwAPa192YXVsdF9hZGRyZXNzAg9rX3ZhdWx0X2FkZHJlc3MAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzAQlzdHJUb0xpc3QBBF9zdHIDCQAAAgUEX3N0cgIABQNuaWwJALUJAgUEX3N0cgIBLAELY29vcmRpbmF0b3IACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAhZDb29yZGluYXRvciBub3Qgc2V0IEhDAhtDb29yZGluYXRvciBhZGRyZXNzIGludmFsaWQBDGFkbWluQWRkcmVzcwAJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwIVQWRtaW4gYWRkcmVzcyBub3Qgc2V0AQ5zdGFraW5nQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAURa19zdGFraW5nX2FkZHJlc3MCF1N0YWtpbmcgYWRkcmVzcyBub3Qgc2V0AhdTdGFraW5nIGFkZHJlc3MgaW52YWxpZAEOZmFybWluZ0FkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFEWtfZmFybWluZ19hZGRyZXNzAhdGYXJtaW5nIGFkZHJlc3Mgbm90IHNldAIXRmFybWluZyBhZGRyZXNzIGludmFsaWQBDHZhdWx0QWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUPa192YXVsdF9hZGRyZXNzAhVWYXVsdCBhZGRyZXNzIG5vdCBzZXQCFVZhdWx0IGFkZHJlc3MgaW52YWxpZAELaW5pdGlhbGl6ZWQACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDWtfaW5pdGlhbGl6ZWQHAgFpAQppbml0aWFsaXplAQxfY29vcmRpbmF0b3IDAwkBC2luaXRpYWxpemVkAAYJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECFFVuYWJsZSB0byBpbml0aWFsaXplCQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzCQClCAEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDF9jb29yZGluYXRvcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa19pbml0aWFsaXplZAYFA25pbAFpARNwZXJmb3JtSG91c2VrZWVwaW5nBAZfdmF1bHQIX2Zhcm1pbmcIX3N0YWtpbmcLX3BheUZ1bmRpbmcEE2RvQWNrUmV3YXJkc1N0YWtpbmcDBQhfc3Rha2luZwkA/AcECQEOc3Rha2luZ0FkZHJlc3MAAgphY2tSZXdhcmRzBQNuaWwFA25pbAUDbmlsAwkAAAIFE2RvQWNrUmV3YXJkc1N0YWtpbmcFE2RvQWNrUmV3YXJkc1N0YWtpbmcEE2RvQWNrUmV3YXJkc0Zhcm1pbmcDBQhfZmFybWluZwkA/AcECQEOZmFybWluZ0FkZHJlc3MAAgphY2tSZXdhcmRzBQNuaWwFA25pbAUDbmlsAwkAAAIFE2RvQWNrUmV3YXJkc0Zhcm1pbmcFE2RvQWNrUmV3YXJkc0Zhcm1pbmcEEWRvQWNrUmV3YXJkc1ZhdWx0AwUGX3ZhdWx0CQD8BwQJAQx2YXVsdEFkZHJlc3MAAgphY2tSZXdhcmRzBQNuaWwFA25pbAUDbmlsAwkAAAIFEWRvQWNrUmV3YXJkc1ZhdWx0BRFkb0Fja1Jld2FyZHNWYXVsdAQEYW1tcwkBCXN0clRvTGlzdAEFC19wYXlGdW5kaW5nCgEHY29tcHV0ZQIEX2FjYwRfYW1tBAxkb1BheUZ1bmRpbmcJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUEX2FtbQIKcGF5RnVuZGluZwUDbmlsBQNuaWwDCQAAAgUMZG9QYXlGdW5kaW5nBQxkb1BheUZ1bmRpbmcFBF9hY2MJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4KAAIkbAUEYW1tcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHY29tcHV0ZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQOY29vcmRpbmF0b3JTdHIJAJ0IAgUEdGhpcwUUa19jb29yZGluYXRvckFkZHJlc3MDCQEJaXNEZWZpbmVkAQUOY29vcmRpbmF0b3JTdHIEBWFkbWluCQCdCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFDmNvb3JkaW5hdG9yU3RyBQ9rX2FkbWluX2FkZHJlc3MDCQEJaXNEZWZpbmVkAQUFYWRtaW4JAQt2YWx1ZU9yRWxzZQIJAJsIAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUFYWRtaW4JAKwCAgkArAICCQCsAgICB3N0YXR1c18JAKUIAQUEdGhpcwIBXwkA2AQBCAUCdHgCaWQHCQACAQIudW5hYmxlIHRvIHZlcmlmeTogYWRtaW4gbm90IHNldCBpbiBjb29yZGluYXRvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tlea2sWp8=", "height": 2475245, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F1tpRJsnLHJgYBhZHmp5yCh2whXLT6ahEhyQpKkKNSja Next: 7gwCjBecAVxf5RQScBGuezGiTAQqhWd4LExtpjx4fPcS Diff:
OldNewDifferences
99
1010 let d = "k_farming_address"
1111
12-let e = "k_gov_asset"
12+let e = "k_vault_address"
1313
14-let f = "k_quote_asset"
14+let f = "k_admin_address"
1515
16-let g = "k_admin_public_key"
17-
18-let h = "k_admin_address"
19-
20-func i (j) = if ((j == ""))
16+func g (h) = if ((h == ""))
2117 then nil
22- else split(j, ",")
18+ else split(h, ",")
2319
2420
25-func k () = valueOrErrorMessage(addressFromString(getStringValue(this, b)), "Coordinator not set")
21+func i () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, b), "Coordinator not set HC")), "Coordinator address invalid")
2622
2723
28-func l () = addressFromString(getStringValue(k(), h))
24+func j () = addressFromString(valueOrErrorMessage(getString(i(), f), "Admin address not set"))
2925
3026
31-func m () = fromBase58String(getStringValue(k(), g))
27+func k () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(i(), c), "Staking address not set")), "Staking address invalid")
3228
3329
34-func n () = fromBase58String(getStringValue(k(), e))
30+func l () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(i(), d), "Farming address not set")), "Farming address invalid")
3531
3632
37-func o () = fromBase58String(getStringValue(k(), f))
33+func m () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(i(), e), "Vault address not set")), "Vault address invalid")
3834
3935
40-func p () = valueOrErrorMessage(addressFromString(getStringValue(k(), c)), "Staking not set")
36+func n () = valueOrElse(getBoolean(this, a), false)
4137
4238
43-func q () = valueOrErrorMessage(addressFromString(getStringValue(k(), d)), "Staking not set")
44-
45-
46-func r () = valueOrElse(getBoolean(this, a), false)
47-
48-
49-@Callable(s)
50-func initialize (t) = if (r())
51- then throw("Already initialized")
52- else [StringEntry(b, t), BooleanEntry(a, true)]
39+@Callable(o)
40+func initialize (p) = if (if (n())
41+ then true
42+ else (o.caller != this))
43+ then throw("Unable to initialize")
44+ else [StringEntry(b, toString(addressFromStringValue(p))), BooleanEntry(a, true)]
5345
5446
5547
56-@Callable(s)
57-func performHousekeeping (u) = {
58- let v = invoke(p(), "ackRewards", nil, nil)
59- if ((v == v))
48+@Callable(o)
49+func performHousekeeping (q,r,s,t) = {
50+ let u = if (s)
51+ then invoke(k(), "ackRewards", nil, nil)
52+ else nil
53+ if ((u == u))
6054 then {
61- let w = invoke(q(), "ackRewards", nil, nil)
62- if ((w == w))
55+ let v = if (r)
56+ then invoke(l(), "ackRewards", nil, nil)
57+ else nil
58+ if ((v == v))
6359 then {
64- let x = i(u)
65- func y (z,A) = {
66- let B = invoke(addressFromStringValue(A), "payFunding", nil, nil)
67- if ((B == B))
68- then z
69- else throw("Strict value is not equal to itself.")
70- }
60+ let w = if (q)
61+ then invoke(m(), "ackRewards", nil, nil)
62+ else nil
63+ if ((w == w))
64+ then {
65+ let x = g(t)
66+ func y (z,A) = {
67+ let B = invoke(addressFromStringValue(A), "payFunding", nil, nil)
68+ if ((B == B))
69+ then z
70+ else throw("Strict value is not equal to itself.")
71+ }
7172
72- let C = x
73- let D = size(C)
74- let E = nil
75- func F (G,H) = if ((H >= D))
76- then G
77- else y(G, C[H])
73+ let C = x
74+ let D = size(C)
75+ let E = nil
76+ func F (G,H) = if ((H >= D))
77+ then G
78+ else y(G, C[H])
7879
79- func I (G,H) = if ((H >= D))
80- then G
81- else throw("List size exceeds 20")
80+ func I (G,H) = if ((H >= D))
81+ then G
82+ else throw("List size exceeds 20")
8283
83- I(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
84+ I(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
85+ }
86+ else throw("Strict value is not equal to itself.")
8487 }
8588 else throw("Strict value is not equal to itself.")
8689 }
8992
9093
9194 @Verifier(J)
92-func K () = sigVerify(J.bodyBytes, J.proofs[0], m())
95+func K () = {
96+ let L = getString(this, b)
97+ if (isDefined(L))
98+ then {
99+ let M = getString(addressFromStringValue(value(L)), f)
100+ if (isDefined(M))
101+ then valueOrElse(getBoolean(addressFromStringValue(value(M)), ((("status_" + toString(this)) + "_") + toBase58String(J.id))), false)
102+ else throw("unable to verify: admin not set in coordinator")
103+ }
104+ else sigVerify(J.bodyBytes, J.proofs[0], J.senderPublicKey)
105+ }
93106
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_initialized"
55
66 let b = "k_coordinatorAddress"
77
88 let c = "k_staking_address"
99
1010 let d = "k_farming_address"
1111
12-let e = "k_gov_asset"
12+let e = "k_vault_address"
1313
14-let f = "k_quote_asset"
14+let f = "k_admin_address"
1515
16-let g = "k_admin_public_key"
17-
18-let h = "k_admin_address"
19-
20-func i (j) = if ((j == ""))
16+func g (h) = if ((h == ""))
2117 then nil
22- else split(j, ",")
18+ else split(h, ",")
2319
2420
25-func k () = valueOrErrorMessage(addressFromString(getStringValue(this, b)), "Coordinator not set")
21+func i () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, b), "Coordinator not set HC")), "Coordinator address invalid")
2622
2723
28-func l () = addressFromString(getStringValue(k(), h))
24+func j () = addressFromString(valueOrErrorMessage(getString(i(), f), "Admin address not set"))
2925
3026
31-func m () = fromBase58String(getStringValue(k(), g))
27+func k () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(i(), c), "Staking address not set")), "Staking address invalid")
3228
3329
34-func n () = fromBase58String(getStringValue(k(), e))
30+func l () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(i(), d), "Farming address not set")), "Farming address invalid")
3531
3632
37-func o () = fromBase58String(getStringValue(k(), f))
33+func m () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(i(), e), "Vault address not set")), "Vault address invalid")
3834
3935
40-func p () = valueOrErrorMessage(addressFromString(getStringValue(k(), c)), "Staking not set")
36+func n () = valueOrElse(getBoolean(this, a), false)
4137
4238
43-func q () = valueOrErrorMessage(addressFromString(getStringValue(k(), d)), "Staking not set")
44-
45-
46-func r () = valueOrElse(getBoolean(this, a), false)
47-
48-
49-@Callable(s)
50-func initialize (t) = if (r())
51- then throw("Already initialized")
52- else [StringEntry(b, t), BooleanEntry(a, true)]
39+@Callable(o)
40+func initialize (p) = if (if (n())
41+ then true
42+ else (o.caller != this))
43+ then throw("Unable to initialize")
44+ else [StringEntry(b, toString(addressFromStringValue(p))), BooleanEntry(a, true)]
5345
5446
5547
56-@Callable(s)
57-func performHousekeeping (u) = {
58- let v = invoke(p(), "ackRewards", nil, nil)
59- if ((v == v))
48+@Callable(o)
49+func performHousekeeping (q,r,s,t) = {
50+ let u = if (s)
51+ then invoke(k(), "ackRewards", nil, nil)
52+ else nil
53+ if ((u == u))
6054 then {
61- let w = invoke(q(), "ackRewards", nil, nil)
62- if ((w == w))
55+ let v = if (r)
56+ then invoke(l(), "ackRewards", nil, nil)
57+ else nil
58+ if ((v == v))
6359 then {
64- let x = i(u)
65- func y (z,A) = {
66- let B = invoke(addressFromStringValue(A), "payFunding", nil, nil)
67- if ((B == B))
68- then z
69- else throw("Strict value is not equal to itself.")
70- }
60+ let w = if (q)
61+ then invoke(m(), "ackRewards", nil, nil)
62+ else nil
63+ if ((w == w))
64+ then {
65+ let x = g(t)
66+ func y (z,A) = {
67+ let B = invoke(addressFromStringValue(A), "payFunding", nil, nil)
68+ if ((B == B))
69+ then z
70+ else throw("Strict value is not equal to itself.")
71+ }
7172
72- let C = x
73- let D = size(C)
74- let E = nil
75- func F (G,H) = if ((H >= D))
76- then G
77- else y(G, C[H])
73+ let C = x
74+ let D = size(C)
75+ let E = nil
76+ func F (G,H) = if ((H >= D))
77+ then G
78+ else y(G, C[H])
7879
79- func I (G,H) = if ((H >= D))
80- then G
81- else throw("List size exceeds 20")
80+ func I (G,H) = if ((H >= D))
81+ then G
82+ else throw("List size exceeds 20")
8283
83- I(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
84+ I(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(F(E, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
85+ }
86+ else throw("Strict value is not equal to itself.")
8487 }
8588 else throw("Strict value is not equal to itself.")
8689 }
8790 else throw("Strict value is not equal to itself.")
8891 }
8992
9093
9194 @Verifier(J)
92-func K () = sigVerify(J.bodyBytes, J.proofs[0], m())
95+func K () = {
96+ let L = getString(this, b)
97+ if (isDefined(L))
98+ then {
99+ let M = getString(addressFromStringValue(value(L)), f)
100+ if (isDefined(M))
101+ then valueOrElse(getBoolean(addressFromStringValue(value(M)), ((("status_" + toString(this)) + "_") + toBase58String(J.id))), false)
102+ else throw("unable to verify: admin not set in coordinator")
103+ }
104+ else sigVerify(J.bodyBytes, J.proofs[0], J.senderPublicKey)
105+ }
93106

github/deemru/w8io/169f3d6 
53.42 ms