tx · ArLxYcb6pUpVmyfyyzwchaUv41kL3VY3YjYXxAvBnSMZ 3PAuTLuchPr3N8mDaoN2wMb2JtHe5MBE7g2: -0.00300000 Waves 2022.08.05 12:43 [3236527] smart account 3PAuTLuchPr3N8mDaoN2wMb2JtHe5MBE7g2 > SELF 0.00000000 Waves
{ "type": 13, "id": "ArLxYcb6pUpVmyfyyzwchaUv41kL3VY3YjYXxAvBnSMZ", "fee": 300000, "feeAssetId": null, "timestamp": 1659692643705, "version": 1, "sender": "3PAuTLuchPr3N8mDaoN2wMb2JtHe5MBE7g2", "senderPublicKey": "7hQKEVCKLNemvXdXDzHCqBh5MVBYfF4SNRVuWgK3g45d", "proofs": [ "5sApPzzj6KfJVcddDhVKvRrM3PLjNE3oRyMG1furTGoEv7jGoDZMCjM9DQgjqGVjQg7gK4MVUTZTvLFiDLUCMnD9" ], "script": "base64:BgIWCAISBgoECAgIARIDCgEBEgASAwoBARcBBWFzSW50AQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAFA2ludAkAAgECGXdyb25nIHR5cGUsIGV4cGVjdGVkOiBJbnQBC2FzSW50U3RySW50AQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAISKEludCwgU3RyaW5nLCBJbnQpBAlpbnRTdHJJbnQFByRtYXRjaDAFCWludFN0ckludAMJAAECBQckbWF0Y2gwAg0oSW50LCBTdHJpbmcpBAZpbnRTdHIFByRtYXRjaDAJAJUKAwgFBmludFN0cgJfMQgFBmludFN0cgJfMgAACQACAQIjd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IChJbnQsIFN0cmluZykAC2NvbmZpZ1N0b3JlAgZjb25maWcADWNvbmZpZ0FkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwULY29uZmlnU3RvcmUCH2V4cC1kaXZpZGVuZHM6IG5vIGNvbmZpZ0FkZHJlc3MCFmludmFsaWQgY29uZmlnIGFkZHJlc3MAEm1heWJlT3JhY2xlQWRkcmVzcwQHJG1hdGNoMAkAnQgCBQ1jb25maWdBZGRyZXNzAg5vcmFjbGVfYWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwUEdW5pdAAGSEVJR0hUBQZoZWlnaHQBB3Rocm93SWYCCWNvbmRpdGlvbgVlcnJvcgMFCWNvbmRpdGlvbgkAAgEFBWVycm9yBgEId3JpdGVJbnQCA2tleQV2YWx1ZQMJAGYCAAAFBXZhbHVlCQACAQkArAICCQCsAgIJAKwCAgIXd3JpdGluZyBuZWdhdGl2ZSB2YWx1ZSAJAKQDAQUFdmFsdWUCCSBmb3Iga2V5IAUDa2V5CQEMSW50ZWdlckVudHJ5AgUDa2V5BQV2YWx1ZQELd3JpdGVTdHJJbnQCA2tleQV2YWx1ZQMJAGYCAAAFBXZhbHVlCQACAQkArAICCQCsAgIJAKwCAgIXd3JpdGluZyBuZWdhdGl2ZSB2YWx1ZSAJAKQDAQUFdmFsdWUCCSBmb3Iga2V5IAUDa2V5CQELU3RyaW5nRW50cnkCBQNrZXkJAKQDAQUFdmFsdWUBEHdyaXRlQ29uc3RTdHJpbmcCA2tleQV2YWx1ZQMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUDa2V5CQELU3RyaW5nRW50cnkCBQNrZXkFBXZhbHVlCQACAQkArAICAhVhbHJlYWR5IGluaXRpYWxpemVkOiAFA2tleQEIY2hhbmdlQnkCA2tleQV2YWx1ZQkBCHdyaXRlSW50AgUDa2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAUFdmFsdWUACXVzZG5TdG9yZQIHYXNzZXRJZAAEdXNkbgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUJdXNkblN0b3JlABFleHBEaXZpZGVuZHNTdG9yZQIMZXhwRGl2aWRlbmRzAAxleHBEaXZpZGVuZHMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRFleHBEaXZpZGVuZHNTdG9yZQIWZGFvLWI6IG5vIGV4cERpdmlkZW5kcwASaW5pdGlhbEhlaWdodFN0b3JlAg1pbml0aWFsSGVpZ2h0AA1pbml0aWFsSGVpZ2h0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRJpbml0aWFsSGVpZ2h0U3RvcmUAEHRvdGFsQW1vdW50U3RvcmUCC3RvdGFsQW1vdW50AAt0b3RhbEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUQdG90YWxBbW91bnRTdG9yZQANdmVzdGluZ1BlcmlvZAkAaAIAPACgCwAMY2xhaW1lZFN0b3JlAgtkaXN0cmlidXRlZAAHY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQxjbGFpbWVkU3RvcmUAAAAJYXZhaWxhYmxlAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzBRJpbml0aWFsSGVpZ2h0U3RvcmUAAAMJAGYCBQ1pbml0aWFsSGVpZ2h0BQZIRUlHSFQAAAQGdmVzdGVkCQCXAwEJAMwIAgULdG90YWxBbW91bnQJAMwIAgkAawMFC3RvdGFsQW1vdW50CQBlAgUGSEVJR0hUBQ1pbml0aWFsSGVpZ2h0BQ12ZXN0aW5nUGVyaW9kBQNuaWwJAJYDAQkAzAgCCQBlAgUGdmVzdGVkBQdjbGFpbWVkCQDMCAIAAAUDbmlsBAFpAQRpbml0BA1jb25maWdBZGRyZXNzC3VzZG5Bc3NldElkCWRpdmlkZW5kcwltaW5BbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhZvbmx5IHNlbGYgY2FuIGNvbnRpbnVlCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgULY29uZmlnU3RvcmUFDWNvbmZpZ0FkZHJlc3MJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCBQl1c2RuU3RvcmUJAKwCAgULdXNkbkFzc2V0SWQCCV9kYW9Cb251cwkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIFEWV4cERpdmlkZW5kc1N0b3JlBQlkaXZpZGVuZHMJAMwIAgkBDEludGVnZXJFbnRyeQICDG1pblVzZG5TdGFydAUJbWluQW1vdW50BQNuaWwBaQEHc3RhcnRBdAEBaAMJAQlpc0RlZmluZWQBCQCfCAEFEmluaXRpYWxIZWlnaHRTdG9yZQkAAgECE2FscmVhZHkgaW5pdGlhbGl6ZWQDCQECIT0CCQDYBAEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkAkQMCCQC1CQIFBHVzZG4CAV8AAAkAAgECDmV4cGVjdGVkOiBVU0ROAwkAZgIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzAgxtaW5Vc2RuU3RhcnQCCG5vdCBpbml0CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAAgECD3RvbyBsaXR0bGUgdXNkbgkAzAgCCQEId3JpdGVJbnQCBRJpbml0aWFsSGVpZ2h0U3RvcmUFAWgJAMwIAgkBCHdyaXRlSW50AgUQdG90YWxBbW91bnRTdG9yZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA25pbAFpARJnZXRSZXNlcnZlRGl2c0luZm8ACQCUCgIFA25pbAkAlQoDBQlhdmFpbGFibGUFBHVzZG4AAAFpARN3aXRoZHJhd0Zyb21SZXNlcnZlAQF2AwkBAiE9AgUBdgD///////////8BCQACAQIHLTEgb25seQMJAQIhPQIIBQFpBmNhbGxlcgUMZXhwRGl2aWRlbmRzCQACAQIeb25seSBleHBEaXZpZGVuZHMgY2FuIHdpdGhkcmF3CQCUCgIJAMwIAgkBCGNoYW5nZUJ5AgUMY2xhaW1lZFN0b3JlBQlhdmFpbGFibGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQlhdmFpbGFibGUJANkEAQkAkQMCCQC1CQIFBHVzZG4CAV8AAAUDbmlsBQlhdmFpbGFibGUAB5va0A==", "chainId": 87, "height": 3236527, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func a (b) = { | |
5 | + | let c = b | |
6 | + | if ($isInstanceOf(c, "Int")) | |
7 | + | then { | |
8 | + | let d = c | |
9 | + | d | |
10 | + | } | |
11 | + | else throw("wrong type, expected: Int") | |
12 | + | } | |
13 | + | ||
14 | + | ||
15 | + | func e (b) = { | |
16 | + | let c = b | |
17 | + | if ($isInstanceOf(c, "(Int, String, Int)")) | |
18 | + | then { | |
19 | + | let f = c | |
20 | + | f | |
21 | + | } | |
22 | + | else if ($isInstanceOf(c, "(Int, String)")) | |
23 | + | then { | |
24 | + | let g = c | |
25 | + | $Tuple3(g._1, g._2, 0) | |
26 | + | } | |
27 | + | else throw("wrong type, expected: (Int, String)") | |
28 | + | } | |
29 | + | ||
30 | + | ||
31 | + | let h = "config" | |
32 | + | ||
33 | + | let i = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, h), "exp-dividends: no configAddress")), "invalid config address") | |
34 | + | ||
35 | + | let j = { | |
36 | + | let c = getString(i, "oracle_address") | |
37 | + | if ($isInstanceOf(c, "String")) | |
38 | + | then { | |
39 | + | let k = c | |
40 | + | addressFromString(k) | |
41 | + | } | |
42 | + | else unit | |
43 | + | } | |
44 | + | ||
45 | + | let l = height | |
46 | + | ||
47 | + | func m (n,o) = if (n) | |
48 | + | then throw(o) | |
49 | + | else true | |
50 | + | ||
51 | + | ||
52 | + | func p (q,b) = if ((0 > b)) | |
53 | + | then throw(((("writing negative value " + toString(b)) + " for key ") + q)) | |
54 | + | else IntegerEntry(q, b) | |
55 | + | ||
56 | + | ||
57 | + | func r (q,b) = if ((0 > b)) | |
58 | + | then throw(((("writing negative value " + toString(b)) + " for key ") + q)) | |
59 | + | else StringEntry(q, toString(b)) | |
60 | + | ||
61 | + | ||
62 | + | func s (q,b) = if (!(isDefined(getString(this, q)))) | |
63 | + | then StringEntry(q, b) | |
64 | + | else throw(("already initialized: " + q)) | |
65 | + | ||
66 | + | ||
67 | + | func t (q,b) = p(q, (valueOrElse(getInteger(this, q), 0) + b)) | |
68 | + | ||
69 | + | ||
70 | + | let u = "assetId" | |
71 | + | ||
72 | + | let v = getStringValue(this, u) | |
73 | + | ||
74 | + | let w = "expDividends" | |
75 | + | ||
76 | + | let x = addressFromStringValue(valueOrErrorMessage(getString(this, w), "dao-b: no expDividends")) | |
77 | + | ||
78 | + | let y = "initialHeight" | |
79 | + | ||
80 | + | let z = getIntegerValue(this, y) | |
81 | + | ||
82 | + | let A = "totalAmount" | |
83 | + | ||
84 | + | let B = getIntegerValue(this, A) | |
85 | + | ||
86 | + | let C = (60 * 1440) | |
87 | + | ||
88 | + | let D = "distributed" | |
89 | + | ||
90 | + | let E = valueOrElse(getInteger(this, D), 0) | |
91 | + | ||
92 | + | let F = if (!(isDefined(getInteger(this, y)))) | |
93 | + | then 0 | |
94 | + | else if ((z > l)) | |
95 | + | then 0 | |
96 | + | else { | |
97 | + | let G = min([B, fraction(B, (l - z), C)]) | |
98 | + | max([(G - E), 0]) | |
99 | + | } | |
100 | + | ||
101 | + | @Callable(H) | |
102 | + | func init (i,I,J,K) = if ((H.caller != this)) | |
103 | + | then throw("only self can continue") | |
104 | + | else [s(h, i), s(u, (I + "_daoBonus")), s(w, J), IntegerEntry("minUsdnStart", K)] | |
105 | + | ||
106 | + | ||
107 | + | ||
108 | + | @Callable(H) | |
109 | + | func startAt (L) = if (isDefined(getInteger(y))) | |
110 | + | then throw("already initialized") | |
111 | + | else if ((toBase58String(value(H.payments[0].assetId)) != split(v, "_")[0])) | |
112 | + | then throw("expected: USDN") | |
113 | + | else if ((valueOrErrorMessage(getInteger(this, "minUsdnStart"), "not init") > H.payments[0].amount)) | |
114 | + | then throw("too little usdn") | |
115 | + | else [p(y, L), p(A, H.payments[0].amount)] | |
116 | + | ||
117 | + | ||
118 | + | ||
119 | + | @Callable(H) | |
120 | + | func getReserveDivsInfo () = $Tuple2(nil, $Tuple3(F, v, 0)) | |
121 | + | ||
122 | + | ||
123 | + | ||
124 | + | @Callable(H) | |
125 | + | func withdrawFromReserve (M) = if ((M != -1)) | |
126 | + | then throw("-1 only") | |
127 | + | else if ((H.caller != x)) | |
128 | + | then throw("only expDividends can withdraw") | |
129 | + | else $Tuple2([t(D, F), ScriptTransfer(H.caller, F, fromBase58String(split(v, "_")[0]))], F) | |
130 | + | ||
131 | + |
github/deemru/w8io/3ef1775 17.86 ms ◑