tx · 8WWe7GKw65YkkjbWjNc713Gzpz7sAW9XqcVRA9deNNFQ 3P65HWsxZtnrBW3D4jVtuiv67aDwmUkcZMQ: -0.00200000 Waves 2022.11.03 12:06 [3366086] smart account 3P65HWsxZtnrBW3D4jVtuiv67aDwmUkcZMQ > SELF 0.00000000 Waves
{ "type": 13, "id": "8WWe7GKw65YkkjbWjNc713Gzpz7sAW9XqcVRA9deNNFQ", "fee": 200000, "feeAssetId": null, "timestamp": 1667466385405, "version": 1, "sender": "3P65HWsxZtnrBW3D4jVtuiv67aDwmUkcZMQ", "senderPublicKey": "5d4wPNJknDnzUufWViFo1hGEoFPqtZw9XEjbuAvCjM8t", "proofs": [ "2qGXUsLMuipWQRuC3SR3apwpCYqDXQ3xdTxEcmXh55wUc4dEjQErqnfKFKfAjJEpiPmKhqfpA7Xt1wka3QWHpM5V" ], "script": "base64:BgIJCAISAwoBCBIAFgEGYXNJbnQzAQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIPKEludCwgSW50LCBJbnQpBAF4BQckbWF0Y2gwBQF4BAF0BQckbWF0Y2gwCQACAQIBMgEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AAtwZXJpb2RIb3VycwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAgtwZXJpb2RIb3VycwkAaAIAGAADAA9yZWd1bGFyTW9kZU5hbWUCB3JlZ3VsYXIAD3JlZ3VsYXJBdmdQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAg9yZWd1bGFyQXZnUHJpY2UAoOg7AA9yZWdWZXN0aW5nVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIPcmVnVmVzdGluZ1RvdGFsCQBoAgkAaAIJAGgCAGQA6AcA6AcA6AcADXJlZ1Zlc3RpbmdNaW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwINcmVnVmVzdGluZ01pbgkAaAIJAGgCAGQA6AcA6AcAEXJlZ1Zlc3RpbmdNYXhEYXlzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMCEXJlZ1Zlc3RpbmdNYXhEYXlzAPQDAAhyZWdUb3RhbAkAlgoEBQ1yZWdWZXN0aW5nTWluBQ9yZWdWZXN0aW5nVG90YWwFEXJlZ1Zlc3RpbmdNYXhEYXlzBQ9yZWd1bGFyTW9kZU5hbWUADHNsb3dNb2RlTmFtZQIEc2xvdwAMc2xvd01pblByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMCDHNsb3dNaW5QcmljZQDw/TkAEHNsb3dWZXN0aW5nVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIPcmVnVmVzdGluZ1RvdGFsCQBoAgkAaAIJAGgCAAoA6AcA6AcA6AcADnNsb3dWZXN0aW5nTWluCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMCDXJlZ1Zlc3RpbmdNaW4JAGgCCQBoAgAKAOgHAOgHABJzbG93VmVzdGluZ01heERheXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIRcmVnVmVzdGluZ01heERheXMAiCcACXNsb3dUb3RhbAkAlgoEBQ5zbG93VmVzdGluZ01pbgUQc2xvd1Zlc3RpbmdUb3RhbAUSc2xvd1Zlc3RpbmdNYXhEYXlzBQxzbG93TW9kZU5hbWUAD3N0b3JlZE1vZGVTdG9yZQIKc3RvcmVkTW9kZQAKc3RvcmVkTW9kZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQ9zdG9yZWRNb2RlU3RvcmUFD3JlZ3VsYXJNb2RlTmFtZQAKdXNkbk9yYWNsZQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMCCnVzZG5PcmFjbGUCFG5vIG9yYWNsZSBjb25maWd1cmVkAAskdDAxNjEzMTcwMwkBBmFzSW50MwEJAPwHBAUKdXNkbk9yYWNsZQIFcHJpY2UJAMwIAgULcGVyaW9kSG91cnMFA25pbAUDbmlsAAlzcG90UHJpY2UIBQskdDAxNjEzMTcwMwJfMQAIYXZnUHJpY2UIBQskdDAxNjEzMTcwMwJfMgAIbWluUHJpY2UIBQskdDAxNjEzMTcwMwJfMwIBaQEEaW5pdAEHdU9yYWNsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEm9ubHkgc2VsZiBjYW4gaW5pdAkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwICCnVzZG5PcmFjbGUFB3VPcmFjbGUFA25pbAFpAQZsaW1pdHMABAtzdG9yZWRUb3RhbAMJAAACBQpzdG9yZWRNb2RlBQ9yZWd1bGFyTW9kZU5hbWUFCHJlZ1RvdGFsBQlzbG93VG90YWwEDGN1cnJlbnRUb3RhbAMJAGcCBQxzbG93TWluUHJpY2UFCG1pblByaWNlBQlzbG93VG90YWwDCQBnAgUIYXZnUHJpY2UFD3JlZ3VsYXJBdmdQcmljZQUIcmVnVG90YWwFC3N0b3JlZFRvdGFsCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUPc3RvcmVkTW9kZVN0b3JlCAUMY3VycmVudFRvdGFsAl80BQNuaWwFDGN1cnJlbnRUb3RhbADC/DmE", "chainId": 87, "height": 3366086, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: F7c7ouTZ59uKK9KWPWav2fXEgxXz8JvuEk4BNHGcwZo3 Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func asInt3 (value) = match value { | |
5 | + | case x: (Int, Int, Int) => | |
6 | + | x | |
7 | + | case t => | |
8 | + | throw("2") | |
9 | + | } | |
10 | + | ||
11 | + | ||
12 | + | func writeConstString (key,value) = if (!(isDefined(getString(this, key)))) | |
13 | + | then StringEntry(key, value) | |
14 | + | else throw(("already initialized: " + key)) | |
15 | + | ||
16 | + | ||
17 | + | let periodHours = valueOrElse(getInteger(this, "periodHours"), (24 * 3)) | |
18 | + | ||
19 | + | let regularModeName = "regular" | |
20 | + | ||
21 | + | let regularAvgPrice = valueOrElse(getInteger(this, "regularAvgPrice"), 980000) | |
22 | + | ||
23 | + | let regVestingTotal = valueOrElse(getInteger(this, "regVestingTotal"), (((100 * 1000) * 1000) * 1000)) | |
24 | + | ||
25 | + | let regVestingMin = valueOrElse(getInteger(this, "regVestingMin"), ((100 * 1000) * 1000)) | |
26 | + | ||
27 | + | let regVestingMaxDays = valueOrElse(getInteger(this, "regVestingMaxDays"), 500) | |
28 | + | ||
29 | + | let regTotal = $Tuple4(regVestingMin, regVestingTotal, regVestingMaxDays, regularModeName) | |
30 | + | ||
31 | + | let slowModeName = "slow" | |
32 | + | ||
33 | + | let slowMinPrice = valueOrElse(getInteger(this, "slowMinPrice"), 950000) | |
34 | + | ||
35 | + | let slowVestingTotal = valueOrElse(getInteger(this, "regVestingTotal"), (((10 * 1000) * 1000) * 1000)) | |
36 | + | ||
37 | + | let slowVestingMin = valueOrElse(getInteger(this, "regVestingMin"), ((10 * 1000) * 1000)) | |
38 | + | ||
39 | + | let slowVestingMaxDays = valueOrElse(getInteger(this, "regVestingMaxDays"), 5000) | |
40 | + | ||
41 | + | let slowTotal = $Tuple4(slowVestingMin, slowVestingTotal, slowVestingMaxDays, slowModeName) | |
42 | + | ||
43 | + | let storedModeStore = "storedMode" | |
44 | + | ||
45 | + | let storedMode = valueOrElse(getString(storedModeStore), regularModeName) | |
46 | + | ||
47 | + | let usdnOracle = addressFromStringValue(valueOrErrorMessage(getString(this, "usdnOracle"), "no oracle configured")) | |
48 | + | ||
49 | + | let $t016131703 = asInt3(invoke(usdnOracle, "price", [periodHours], nil)) | |
50 | + | ||
51 | + | let spotPrice = $t016131703._1 | |
52 | + | ||
53 | + | let avgPrice = $t016131703._2 | |
54 | + | ||
55 | + | let minPrice = $t016131703._3 | |
56 | + | ||
57 | + | @Callable(i) | |
58 | + | func init (uOracle) = if ((i.caller != this)) | |
59 | + | then throw("only self can init") | |
60 | + | else [writeConstString("usdnOracle", uOracle)] | |
61 | + | ||
62 | + | ||
63 | + | ||
64 | + | @Callable(i) | |
65 | + | func limits () = { | |
66 | + | let storedTotal = if ((storedMode == regularModeName)) | |
67 | + | then regTotal | |
68 | + | else slowTotal | |
69 | + | let currentTotal = if ((slowMinPrice >= minPrice)) | |
70 | + | then slowTotal | |
71 | + | else if ((avgPrice >= regularAvgPrice)) | |
72 | + | then regTotal | |
73 | + | else storedTotal | |
74 | + | $Tuple2([StringEntry(storedModeStore, currentTotal._4)], currentTotal) | |
75 | + | } | |
76 | + | ||
77 | + |
github/deemru/w8io/3ef1775 28.94 ms ◑![]()