tx · Ccv7yPPWKSby2iymoHDCnsezwWdk9iXeWVCoseanDBAT 3P5x9RxuqbMaVFPsaycvXHeFZXPmcswxA1c: -0.01000000 Waves 2023.09.23 23:34 [3834324] smart account 3P5x9RxuqbMaVFPsaycvXHeFZXPmcswxA1c > SELF 0.00000000 Waves
{ "type": 13, "id": "Ccv7yPPWKSby2iymoHDCnsezwWdk9iXeWVCoseanDBAT", "fee": 1000000, "feeAssetId": null, "timestamp": 1695501297660, "version": 2, "chainId": 87, "sender": "3P5x9RxuqbMaVFPsaycvXHeFZXPmcswxA1c", "senderPublicKey": "9uEm8fN7ZMqn6sPuc39LRogUGXKNPPmRThGEL4GAqGa3", "proofs": [ "3H3PCAZptu9sMXfZpRz521F7yDkn59FfgWYCJ2YsfVjoXP2XytRGpovQgGVxFrAKp86E1M2AXMBuHHrpupWUhWMR" ], "script": "base64:BgIWCAISAwoBCBIDCgEBEgQKAgEBEgASABYAC1NUQVJUX1BSSUNFAKDCHgAIUVVPVElFTlQAAgAIREVDSU1BTFMAgMLXLwEXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAhRzdGF0aWNfb3JhY2xlQWRkcmVzcwEUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAAhFzdGF0aWNfZWdnQXNzZXRJZAESc3RhdGljS2V5X2V4dHJhRmVlAAIPc3RhdGljX2V4dHJhRmVlARdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgACFHN0YXRpY19mZWVBZ2dyZWdhdG9yARhzdGF0aWNLZXlfY291cG9uc0FkZHJlc3MAAhVzdGF0aWNfY291cG9uc0FkZHJlc3MBDmtleVVzZXJBZGRyZXNzAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCBl9sZXZlbAETa2V5VXNlclNwZW50T25MZXZlbAEHYWRkcmVzcwkArAICBQdhZGRyZXNzAg1fc3BlbnRPbkxldmVsARZrZXlVc2VyU2tpbGxSZXNldFRpbWVzAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCEV9za2lsbHNSZXNldFRpbWVzARNrZXlVc2VyU3BlbnRPblJlc2V0AQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCDV9zcGVudE9uUmVzZXQBDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABFHRyeUdldFN0cmluZ0V4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABDHRyeUdldFN0cmluZwEDa2V5CQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCBQR0aGlzBQNrZXkBCWdldE9yYWNsZQAJAQdBZGRyZXNzAQkA2QQBCQEMdHJ5R2V0U3RyaW5nAQkBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAENZ2V0RWdnQXNzZXRJZAAJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARRzdGF0aWNLZXlfZWdnQXNzZXRJZAABEGdldEZlZUFnZ3JlZ2F0b3IACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgABEWdldENvdXBvbnNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAEQY2FsY3VsYXRlTGV2ZWxVcAELZnV0dXJlTGV2ZWwEAnAxCQBsBgULU1RBUlRfUFJJQ0UACAkAaQIAkE4FC2Z1dHVyZUxldmVsAAQACAUHQ0VJTElORwQCcDIJAGwGBQtmdXR1cmVMZXZlbAAACQBpAgCQTgUIUVVPVElFTlQABAAIBQdDRUlMSU5HBAV0b3RhbAkAawMFAnAxBQJwMgUIREVDSU1BTFMEBWRlYnVnCQC5CQIJAMwIAgkArAICAgluZXdMZXZlbD0JAKQDAQULZnV0dXJlTGV2ZWwJAMwIAgkArAICAgNwMT0JAKQDAQUCcDEJAMwIAgkArAICAgNwMj0JAKQDAQUCcDIJAMwIAgkArAICAgZ0b3RhbD0JAKQDAQUFdG90YWwFA25pbAIBOwkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQICBURFQlVHBQVkZWJ1ZwUDbmlsBQV0b3RhbAEOY2FsY3VsYXRlUmVzZXQCDGN1cnJlbnRMZXZlbApyZXNldFRpbWVzBAdERVZJREVSAAQED3Jlc2V0VGltZXNUb1VzZQkAZAIFCnJlc2V0VGltZXMAAQQGcmVzdWx0CQBrAwUPcmVzZXRUaW1lc1RvVXNlCQBoAgUMY3VycmVudExldmVsBQhERUNJTUFMUwUHREVWSURFUgQFZGVidWcJALkJAgkAzAgCCQCsAgICBmxldmVsPQkApAMBBQxjdXJyZW50TGV2ZWwJAMwIAgkArAICAgtyZXNldFRpbWVzPQkApAMBBQpyZXNldFRpbWVzCQDMCAIJAKwCAgIQcmVzZXRUaW1lc1RvVXNlPQkApAMBBQ9yZXNldFRpbWVzVG9Vc2UJAMwIAgkArAICAgdyZXN1bHQ9CQCkAwEFBnJlc3VsdAUDbmlsAgE7CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgIFREVCVUcFBWRlYnVnBQNuaWwFBnJlc3VsdAEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEHcGF5bWVudAMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQACAQIaTFNDQVA6IFBsZWFzZSBhdHRhY2ggd2F2ZXMECWZlZUFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgkBCWdldE9yYWNsZQAJARJzdGF0aWNLZXlfZXh0cmFGZWUAAwkBAiE9AggFB3BheW1lbnQGYW1vdW50BQlmZWVBbW91bnQJAAIBCQCsAgIJAKwCAgIdTFNDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAKQDAQUJZmVlQW1vdW50AhMgYW1vdW50IG9mIHdhdmVsZXRzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARBnZXRGZWVBZ2dyZWdhdG9yAAUJZmVlQW1vdW50BQR1bml0BQNuaWwFAWkBD2NvbmZpZ3VyZU9yYWNsZQEGb3JhY2xlAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIPUkNPOiBhZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAFBm9yYWNsZQUDbmlsAWkBC2xldmVsVXBNYXRoAQtmdXR1cmVMZXZlbAkBEGNhbGN1bGF0ZUxldmVsVXABBQtmdXR1cmVMZXZlbAFpAQ9yZXNldFNraWxsc01hdGgCDGN1cnJlbnRMZXZlbApyZXNldFRpbWVzCQEOY2FsY3VsYXRlUmVzZXQCBQxjdXJyZW50TGV2ZWwFCnJlc2V0VGltZXMBaQEHbGV2ZWxVcAAEFGtleVVzZXJBZGRyZXNzRmlsbGVkCQEOa2V5VXNlckFkZHJlc3MBCQClCAEIBQFpBmNhbGxlcgQZa2V5VXNlclNwZW50T25MZXZlbEZpbGxlZAkBE2tleVVzZXJTcGVudE9uTGV2ZWwBCQClCAEIBQFpBmNhbGxlcgQLbGV2ZWxPZlVzZXIJAQ10cnlHZXRJbnRlZ2VyAQUUa2V5VXNlckFkZHJlc3NGaWxsZWQEDnRvdGFsU3BlbnRVc2VyCQENdHJ5R2V0SW50ZWdlcgEFGWtleVVzZXJTcGVudE9uTGV2ZWxGaWxsZWQECXByaWNlQ2FsYwkBEGNhbGN1bGF0ZUxldmVsVXABCQBkAgULbGV2ZWxPZlVzZXIAAQQFcHJpY2UIBQlwcmljZUNhbGMCXzIEDGZpcnN0UGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQIBQxmaXJzdFBheW1lbnQGYW1vdW50AwkBAiE9AggFDGZpcnN0UGF5bWVudAdhc3NldElkCQENZ2V0RWdnQXNzZXRJZAAJAAIBCQCsAgICQUxMVTogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQDYBAEJAQ1nZXRFZ2dBc3NldElkAAMJAQIhPQIFBmFtb3VudAUFcHJpY2UJAAIBCQCsAgICKUxMVTogUGxlYXNlIGF0dGFjaCB0aGUgZXhhY3QgYXNzZXQgYW1vdW50CQCkAwEFBXByaWNlBAxyZWNvcmRBY3Rpb24JAPwHBAkBEWdldENvdXBvbnNBZGRyZXNzAAIMcmVjb3JkQWN0aW9uCQDMCAICB0xFVkVMVVAFA25pbAUDbmlsAwkAAAIFDHJlY29yZEFjdGlvbgUMcmVjb3JkQWN0aW9uCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5VXNlckFkZHJlc3NGaWxsZWQJAGQCBQtsZXZlbE9mVXNlcgABCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRlrZXlVc2VyU3BlbnRPbkxldmVsRmlsbGVkCQBkAgUOdG90YWxTcGVudFVzZXIFBmFtb3VudAUDbmlsCAUJcHJpY2VDYWxjAl8xCQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEJAJEDAggFAWkIcGF5bWVudHMAAQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVyZXNldAAEFGtleVVzZXJBZGRyZXNzRmlsbGVkCQEOa2V5VXNlckFkZHJlc3MBCQClCAEIBQFpBmNhbGxlcgQLbGV2ZWxPZlVzZXIJAQ10cnlHZXRJbnRlZ2VyAQUUa2V5VXNlckFkZHJlc3NGaWxsZWQEHGtleVVzZXJTa2lsbFJlc2V0VGltZXNGaWxsZWQJARZrZXlVc2VyU2tpbGxSZXNldFRpbWVzAQkApQgBCAUBaQZjYWxsZXIEDHJlc2V0c09mVXNlcgkBDXRyeUdldEludGVnZXIBBRxrZXlVc2VyU2tpbGxSZXNldFRpbWVzRmlsbGVkBBlrZXlVc2VyU3BlbnRPblJlc2V0RmlsbGVkCQETa2V5VXNlclNwZW50T25SZXNldAEJAKUIAQgFAWkGY2FsbGVyBBRhbW91bnRPZlNwZW5kT25SZXNldAkBDXRyeUdldEludGVnZXIBBRlrZXlVc2VyU3BlbnRPblJlc2V0RmlsbGVkBBhjYWxjdWxhdGVSZXNldENhbGN1bGF0ZWQJAQ5jYWxjdWxhdGVSZXNldAIFC2xldmVsT2ZVc2VyBQxyZXNldHNPZlVzZXIEBXByaWNlCAUYY2FsY3VsYXRlUmVzZXRDYWxjdWxhdGVkAl8yBAxmaXJzdFBheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CAUMZmlyc3RQYXltZW50BmFtb3VudAMJAQIhPQIIBQxmaXJzdFBheW1lbnQHYXNzZXRJZAkBDWdldEVnZ0Fzc2V0SWQACQACAQkArAICAkBMUjogWW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQDYBAEJAQ1nZXRFZ2dBc3NldElkAAMJAQIhPQIFBmFtb3VudAUFcHJpY2UJAAIBCQCsAgICKExSOiBQbGVhc2UgYXR0YWNoIHRoZSBleGFjdCBhc3NldCBhbW91bnQJAKQDAQUFcHJpY2UJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRxrZXlVc2VyU2tpbGxSZXNldFRpbWVzRmlsbGVkCQBkAgUMcmVzZXRzT2ZVc2VyAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFGWtleVVzZXJTcGVudE9uUmVzZXRGaWxsZWQJAGQCBRRhbW91bnRPZlNwZW5kT25SZXNldAUGYW1vdW50BQNuaWwIBRhjYWxjdWxhdGVSZXNldENhbGN1bGF0ZWQCXzEJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQkAkQMCCAUBaQhwYXltZW50cwABAMnYnAc=", "height": 3834324, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FqzC8FRHCiRjgzSDc4gSbdSSNRiEG6bT9RtaXg4UkDiB Next: none Diff:
Old | New | Differences | |
---|---|---|---|
19 | 19 | func g () = "static_feeAggregator" | |
20 | 20 | ||
21 | 21 | ||
22 | - | func h ( | |
22 | + | func h () = "static_couponsAddress" | |
23 | 23 | ||
24 | 24 | ||
25 | - | func | |
25 | + | func i (j) = (j + "_level") | |
26 | 26 | ||
27 | 27 | ||
28 | - | func k ( | |
28 | + | func k (j) = (j + "_spentOnLevel") | |
29 | 29 | ||
30 | 30 | ||
31 | - | func l ( | |
31 | + | func l (j) = (j + "_skillsResetTimes") | |
32 | 32 | ||
33 | 33 | ||
34 | - | func m (n) = { | |
35 | - | let o = getInteger(this, n) | |
36 | - | if ($isInstanceOf(o, "Int")) | |
34 | + | func m (j) = (j + "_spentOnReset") | |
35 | + | ||
36 | + | ||
37 | + | func n (o) = { | |
38 | + | let p = getInteger(this, o) | |
39 | + | if ($isInstanceOf(p, "Int")) | |
37 | 40 | then { | |
38 | - | let | |
39 | - | | |
41 | + | let q = p | |
42 | + | q | |
40 | 43 | } | |
41 | 44 | else 0 | |
42 | 45 | } | |
43 | 46 | ||
44 | 47 | ||
45 | - | func | |
46 | - | let | |
47 | - | if ($isInstanceOf( | |
48 | + | func r (j,o) = { | |
49 | + | let p = getString(j, o) | |
50 | + | if ($isInstanceOf(p, "String")) | |
48 | 51 | then { | |
49 | - | let | |
50 | - | | |
52 | + | let s = p | |
53 | + | s | |
51 | 54 | } | |
52 | 55 | else "" | |
53 | 56 | } | |
54 | 57 | ||
55 | 58 | ||
56 | - | func | |
59 | + | func t (o) = r(this, o) | |
57 | 60 | ||
58 | 61 | ||
59 | - | func | |
62 | + | func u () = Address(fromBase58String(t(d()))) | |
60 | 63 | ||
61 | 64 | ||
62 | - | func | |
65 | + | func v () = fromBase58String(r(u(), e())) | |
63 | 66 | ||
64 | 67 | ||
65 | - | func | |
68 | + | func w () = Address(fromBase58String(r(u(), g()))) | |
66 | 69 | ||
67 | 70 | ||
68 | - | func w (x) = { | |
69 | - | let y = pow(a, 8, (10000 / x), 4, 8, CEILING) | |
70 | - | let z = pow(x, 0, (10000 / b), 4, 8, CEILING) | |
71 | - | let A = fraction(y, z, c) | |
72 | - | let B = makeString([("newLevel=" + toString(x)), ("p1=" + toString(y)), ("p2=" + toString(z)), ("total=" + toString(A))], ";") | |
73 | - | $Tuple2([StringEntry("DEBUG", B)], A) | |
71 | + | func x () = Address(fromBase58String(r(u(), h()))) | |
72 | + | ||
73 | + | ||
74 | + | func y (z) = { | |
75 | + | let A = pow(a, 8, (10000 / z), 4, 8, CEILING) | |
76 | + | let B = pow(z, 0, (10000 / b), 4, 8, CEILING) | |
77 | + | let C = fraction(A, B, c) | |
78 | + | let D = makeString([("newLevel=" + toString(z)), ("p1=" + toString(A)), ("p2=" + toString(B)), ("total=" + toString(C))], ";") | |
79 | + | $Tuple2([StringEntry("DEBUG", D)], C) | |
74 | 80 | } | |
75 | 81 | ||
76 | 82 | ||
77 | - | func | |
78 | - | let | |
79 | - | let | |
80 | - | let | |
81 | - | let | |
82 | - | $Tuple2([StringEntry("DEBUG", | |
83 | + | func E (F,G) = { | |
84 | + | let H = 4 | |
85 | + | let I = (G + 1) | |
86 | + | let J = fraction(I, (F * c), H) | |
87 | + | let D = makeString([("level=" + toString(F)), ("resetTimes=" + toString(G)), ("resetTimesToUse=" + toString(I)), ("result=" + toString(J))], ";") | |
88 | + | $Tuple2([StringEntry("DEBUG", D)], J) | |
83 | 89 | } | |
84 | 90 | ||
85 | 91 | ||
86 | - | func | |
92 | + | func K (L) = if (isDefined(L.assetId)) | |
87 | 93 | then throw("LSCAP: Please attach waves") | |
88 | 94 | else { | |
89 | - | let | |
90 | - | if (( | |
91 | - | then throw((("LSCAP: Please attach exactly " + toString( | |
92 | - | else [ScriptTransfer( | |
95 | + | let M = getIntegerValue(u(), f()) | |
96 | + | if ((L.amount != M)) | |
97 | + | then throw((("LSCAP: Please attach exactly " + toString(M)) + " amount of wavelets")) | |
98 | + | else [ScriptTransfer(w(), M, unit)] | |
93 | 99 | } | |
94 | 100 | ||
95 | 101 | ||
96 | - | @Callable( | |
97 | - | func configureOracle ( | |
102 | + | @Callable(N) | |
103 | + | func configureOracle (O) = if ((N.caller != this)) | |
98 | 104 | then throw("RCO: admin only") | |
99 | - | else [StringEntry(d(), | |
105 | + | else [StringEntry(d(), O)] | |
100 | 106 | ||
101 | 107 | ||
102 | 108 | ||
103 | - | @Callable( | |
104 | - | func levelUpMath ( | |
109 | + | @Callable(N) | |
110 | + | func levelUpMath (z) = y(z) | |
105 | 111 | ||
106 | 112 | ||
107 | 113 | ||
108 | - | @Callable( | |
109 | - | func resetSkillsMath ( | |
114 | + | @Callable(N) | |
115 | + | func resetSkillsMath (F,G) = E(F, G) | |
110 | 116 | ||
111 | 117 | ||
112 | 118 | ||
113 | - | @Callable( | |
119 | + | @Callable(N) | |
114 | 120 | func levelUp () = { | |
115 | - | let N = h(toString(L.caller)) | |
116 | - | let O = j(toString(L.caller)) | |
117 | - | let P = m(N) | |
118 | - | let Q = m(O) | |
119 | - | let R = w((P + 1)) | |
120 | - | let S = R._2 | |
121 | - | let T = value(L.payments[0]) | |
122 | - | let U = T.amount | |
123 | - | if ((T.assetId != u())) | |
124 | - | then throw(("LLU: You can attach only EGG tokens with the following asset id: " + toBase58String(u()))) | |
125 | - | else if ((U != S)) | |
126 | - | then throw(("LLU: Please attach the exact asset amount" + toString(S))) | |
127 | - | else (([IntegerEntry(N, (P + 1)), IntegerEntry(O, (Q + U))] ++ R._1) ++ I(L.payments[1])) | |
121 | + | let P = i(toString(N.caller)) | |
122 | + | let Q = k(toString(N.caller)) | |
123 | + | let R = n(P) | |
124 | + | let S = n(Q) | |
125 | + | let T = y((R + 1)) | |
126 | + | let U = T._2 | |
127 | + | let V = value(N.payments[0]) | |
128 | + | let W = V.amount | |
129 | + | if ((V.assetId != v())) | |
130 | + | then throw(("LLU: You can attach only EGG tokens with the following asset id: " + toBase58String(v()))) | |
131 | + | else if ((W != U)) | |
132 | + | then throw(("LLU: Please attach the exact asset amount" + toString(U))) | |
133 | + | else { | |
134 | + | let X = invoke(x(), "recordAction", ["LEVELUP"], nil) | |
135 | + | if ((X == X)) | |
136 | + | then (([IntegerEntry(P, (R + 1)), IntegerEntry(Q, (S + W))] ++ T._1) ++ K(N.payments[1])) | |
137 | + | else throw("Strict value is not equal to itself.") | |
138 | + | } | |
128 | 139 | } | |
129 | 140 | ||
130 | 141 | ||
131 | 142 | ||
132 | - | @Callable( | |
143 | + | @Callable(N) | |
133 | 144 | func reset () = { | |
134 | - | let | |
135 | - | let | |
136 | - | let | |
137 | - | let | |
138 | - | let | |
139 | - | let | |
140 | - | let | |
141 | - | let | |
142 | - | let | |
143 | - | let | |
144 | - | if (( | |
145 | - | then throw(("LR: You can attach only EGG tokens with the following asset id: " + toBase58String( | |
146 | - | else if (( | |
147 | - | then throw(("LR: Please attach the exact asset amount" + toString( | |
148 | - | else (([IntegerEntry( | |
145 | + | let P = i(toString(N.caller)) | |
146 | + | let R = n(P) | |
147 | + | let Y = l(toString(N.caller)) | |
148 | + | let Z = n(Y) | |
149 | + | let aa = m(toString(N.caller)) | |
150 | + | let ab = n(aa) | |
151 | + | let ac = E(R, Z) | |
152 | + | let U = ac._2 | |
153 | + | let V = value(N.payments[0]) | |
154 | + | let W = V.amount | |
155 | + | if ((V.assetId != v())) | |
156 | + | then throw(("LR: You can attach only EGG tokens with the following asset id: " + toBase58String(v()))) | |
157 | + | else if ((W != U)) | |
158 | + | then throw(("LR: Please attach the exact asset amount" + toString(U))) | |
159 | + | else (([IntegerEntry(Y, (Z + 1)), IntegerEntry(aa, (ab + W))] ++ ac._1) ++ K(N.payments[1])) | |
149 | 160 | } | |
150 | 161 | ||
151 | 162 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 500000 | |
5 | 5 | ||
6 | 6 | let b = 2 | |
7 | 7 | ||
8 | 8 | let c = 100000000 | |
9 | 9 | ||
10 | 10 | func d () = "static_oracleAddress" | |
11 | 11 | ||
12 | 12 | ||
13 | 13 | func e () = "static_eggAssetId" | |
14 | 14 | ||
15 | 15 | ||
16 | 16 | func f () = "static_extraFee" | |
17 | 17 | ||
18 | 18 | ||
19 | 19 | func g () = "static_feeAggregator" | |
20 | 20 | ||
21 | 21 | ||
22 | - | func h ( | |
22 | + | func h () = "static_couponsAddress" | |
23 | 23 | ||
24 | 24 | ||
25 | - | func | |
25 | + | func i (j) = (j + "_level") | |
26 | 26 | ||
27 | 27 | ||
28 | - | func k ( | |
28 | + | func k (j) = (j + "_spentOnLevel") | |
29 | 29 | ||
30 | 30 | ||
31 | - | func l ( | |
31 | + | func l (j) = (j + "_skillsResetTimes") | |
32 | 32 | ||
33 | 33 | ||
34 | - | func m (n) = { | |
35 | - | let o = getInteger(this, n) | |
36 | - | if ($isInstanceOf(o, "Int")) | |
34 | + | func m (j) = (j + "_spentOnReset") | |
35 | + | ||
36 | + | ||
37 | + | func n (o) = { | |
38 | + | let p = getInteger(this, o) | |
39 | + | if ($isInstanceOf(p, "Int")) | |
37 | 40 | then { | |
38 | - | let | |
39 | - | | |
41 | + | let q = p | |
42 | + | q | |
40 | 43 | } | |
41 | 44 | else 0 | |
42 | 45 | } | |
43 | 46 | ||
44 | 47 | ||
45 | - | func | |
46 | - | let | |
47 | - | if ($isInstanceOf( | |
48 | + | func r (j,o) = { | |
49 | + | let p = getString(j, o) | |
50 | + | if ($isInstanceOf(p, "String")) | |
48 | 51 | then { | |
49 | - | let | |
50 | - | | |
52 | + | let s = p | |
53 | + | s | |
51 | 54 | } | |
52 | 55 | else "" | |
53 | 56 | } | |
54 | 57 | ||
55 | 58 | ||
56 | - | func | |
59 | + | func t (o) = r(this, o) | |
57 | 60 | ||
58 | 61 | ||
59 | - | func | |
62 | + | func u () = Address(fromBase58String(t(d()))) | |
60 | 63 | ||
61 | 64 | ||
62 | - | func | |
65 | + | func v () = fromBase58String(r(u(), e())) | |
63 | 66 | ||
64 | 67 | ||
65 | - | func | |
68 | + | func w () = Address(fromBase58String(r(u(), g()))) | |
66 | 69 | ||
67 | 70 | ||
68 | - | func w (x) = { | |
69 | - | let y = pow(a, 8, (10000 / x), 4, 8, CEILING) | |
70 | - | let z = pow(x, 0, (10000 / b), 4, 8, CEILING) | |
71 | - | let A = fraction(y, z, c) | |
72 | - | let B = makeString([("newLevel=" + toString(x)), ("p1=" + toString(y)), ("p2=" + toString(z)), ("total=" + toString(A))], ";") | |
73 | - | $Tuple2([StringEntry("DEBUG", B)], A) | |
71 | + | func x () = Address(fromBase58String(r(u(), h()))) | |
72 | + | ||
73 | + | ||
74 | + | func y (z) = { | |
75 | + | let A = pow(a, 8, (10000 / z), 4, 8, CEILING) | |
76 | + | let B = pow(z, 0, (10000 / b), 4, 8, CEILING) | |
77 | + | let C = fraction(A, B, c) | |
78 | + | let D = makeString([("newLevel=" + toString(z)), ("p1=" + toString(A)), ("p2=" + toString(B)), ("total=" + toString(C))], ";") | |
79 | + | $Tuple2([StringEntry("DEBUG", D)], C) | |
74 | 80 | } | |
75 | 81 | ||
76 | 82 | ||
77 | - | func | |
78 | - | let | |
79 | - | let | |
80 | - | let | |
81 | - | let | |
82 | - | $Tuple2([StringEntry("DEBUG", | |
83 | + | func E (F,G) = { | |
84 | + | let H = 4 | |
85 | + | let I = (G + 1) | |
86 | + | let J = fraction(I, (F * c), H) | |
87 | + | let D = makeString([("level=" + toString(F)), ("resetTimes=" + toString(G)), ("resetTimesToUse=" + toString(I)), ("result=" + toString(J))], ";") | |
88 | + | $Tuple2([StringEntry("DEBUG", D)], J) | |
83 | 89 | } | |
84 | 90 | ||
85 | 91 | ||
86 | - | func | |
92 | + | func K (L) = if (isDefined(L.assetId)) | |
87 | 93 | then throw("LSCAP: Please attach waves") | |
88 | 94 | else { | |
89 | - | let | |
90 | - | if (( | |
91 | - | then throw((("LSCAP: Please attach exactly " + toString( | |
92 | - | else [ScriptTransfer( | |
95 | + | let M = getIntegerValue(u(), f()) | |
96 | + | if ((L.amount != M)) | |
97 | + | then throw((("LSCAP: Please attach exactly " + toString(M)) + " amount of wavelets")) | |
98 | + | else [ScriptTransfer(w(), M, unit)] | |
93 | 99 | } | |
94 | 100 | ||
95 | 101 | ||
96 | - | @Callable( | |
97 | - | func configureOracle ( | |
102 | + | @Callable(N) | |
103 | + | func configureOracle (O) = if ((N.caller != this)) | |
98 | 104 | then throw("RCO: admin only") | |
99 | - | else [StringEntry(d(), | |
105 | + | else [StringEntry(d(), O)] | |
100 | 106 | ||
101 | 107 | ||
102 | 108 | ||
103 | - | @Callable( | |
104 | - | func levelUpMath ( | |
109 | + | @Callable(N) | |
110 | + | func levelUpMath (z) = y(z) | |
105 | 111 | ||
106 | 112 | ||
107 | 113 | ||
108 | - | @Callable( | |
109 | - | func resetSkillsMath ( | |
114 | + | @Callable(N) | |
115 | + | func resetSkillsMath (F,G) = E(F, G) | |
110 | 116 | ||
111 | 117 | ||
112 | 118 | ||
113 | - | @Callable( | |
119 | + | @Callable(N) | |
114 | 120 | func levelUp () = { | |
115 | - | let N = h(toString(L.caller)) | |
116 | - | let O = j(toString(L.caller)) | |
117 | - | let P = m(N) | |
118 | - | let Q = m(O) | |
119 | - | let R = w((P + 1)) | |
120 | - | let S = R._2 | |
121 | - | let T = value(L.payments[0]) | |
122 | - | let U = T.amount | |
123 | - | if ((T.assetId != u())) | |
124 | - | then throw(("LLU: You can attach only EGG tokens with the following asset id: " + toBase58String(u()))) | |
125 | - | else if ((U != S)) | |
126 | - | then throw(("LLU: Please attach the exact asset amount" + toString(S))) | |
127 | - | else (([IntegerEntry(N, (P + 1)), IntegerEntry(O, (Q + U))] ++ R._1) ++ I(L.payments[1])) | |
121 | + | let P = i(toString(N.caller)) | |
122 | + | let Q = k(toString(N.caller)) | |
123 | + | let R = n(P) | |
124 | + | let S = n(Q) | |
125 | + | let T = y((R + 1)) | |
126 | + | let U = T._2 | |
127 | + | let V = value(N.payments[0]) | |
128 | + | let W = V.amount | |
129 | + | if ((V.assetId != v())) | |
130 | + | then throw(("LLU: You can attach only EGG tokens with the following asset id: " + toBase58String(v()))) | |
131 | + | else if ((W != U)) | |
132 | + | then throw(("LLU: Please attach the exact asset amount" + toString(U))) | |
133 | + | else { | |
134 | + | let X = invoke(x(), "recordAction", ["LEVELUP"], nil) | |
135 | + | if ((X == X)) | |
136 | + | then (([IntegerEntry(P, (R + 1)), IntegerEntry(Q, (S + W))] ++ T._1) ++ K(N.payments[1])) | |
137 | + | else throw("Strict value is not equal to itself.") | |
138 | + | } | |
128 | 139 | } | |
129 | 140 | ||
130 | 141 | ||
131 | 142 | ||
132 | - | @Callable( | |
143 | + | @Callable(N) | |
133 | 144 | func reset () = { | |
134 | - | let | |
135 | - | let | |
136 | - | let | |
137 | - | let | |
138 | - | let | |
139 | - | let | |
140 | - | let | |
141 | - | let | |
142 | - | let | |
143 | - | let | |
144 | - | if (( | |
145 | - | then throw(("LR: You can attach only EGG tokens with the following asset id: " + toBase58String( | |
146 | - | else if (( | |
147 | - | then throw(("LR: Please attach the exact asset amount" + toString( | |
148 | - | else (([IntegerEntry( | |
145 | + | let P = i(toString(N.caller)) | |
146 | + | let R = n(P) | |
147 | + | let Y = l(toString(N.caller)) | |
148 | + | let Z = n(Y) | |
149 | + | let aa = m(toString(N.caller)) | |
150 | + | let ab = n(aa) | |
151 | + | let ac = E(R, Z) | |
152 | + | let U = ac._2 | |
153 | + | let V = value(N.payments[0]) | |
154 | + | let W = V.amount | |
155 | + | if ((V.assetId != v())) | |
156 | + | then throw(("LR: You can attach only EGG tokens with the following asset id: " + toBase58String(v()))) | |
157 | + | else if ((W != U)) | |
158 | + | then throw(("LR: Please attach the exact asset amount" + toString(U))) | |
159 | + | else (([IntegerEntry(Y, (Z + 1)), IntegerEntry(aa, (ab + W))] ++ ac._1) ++ K(N.payments[1])) | |
149 | 160 | } | |
150 | 161 | ||
151 | 162 |
github/deemru/w8io/3ef1775 49.51 ms ◑