tx · J6ts2bnM5TuKnLMsiBoNuiP8twd8Rei2vsd98pTJqDjt
3Mu3e7R5nEBrDEAzznC7h68ffzL5JouGszd: -0.01000000 Waves
2023.11.28 16:13 [2863291] smart account 3Mu3e7R5nEBrDEAzznC7h68ffzL5JouGszd > SELF 0.00000000 Waves
{
"type": 13,
"id": "J6ts2bnM5TuKnLMsiBoNuiP8twd8Rei2vsd98pTJqDjt",
"fee": 1000000,
"feeAssetId": null,
"timestamp": 1701177235853,
"version": 2,
"chainId": 84,
"sender": "3Mu3e7R5nEBrDEAzznC7h68ffzL5JouGszd",
"senderPublicKey": "B4bNSdbqghMi7FKwR3XuZzFQQS6wJABczdGZPWZe7Wj5",
"proofs": [
"5g2pUEmQqFHcnpRPveM32RwE7hzL76U3MKTFPzVjdj7TmuX6UnhpTT1cFtDHPNBJZjF7FcmxWSo5idpfnWPxypWg"
],
"script": "base64:BgInCAISBAoCCAgSBAoCCAESBQoDAgECEgQKAgIBEgQKAgICEgQKAggYEwAJc2VwYXJhdG9yAgJfXwAHY2hhaW5JZAkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQAIY2hhaW5JZFQBAVQACGNoYWluSWRXAQFXAQttdXN0QWRkcmVzcwIBaQdhZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUHYWRkcmVzcwYJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBAWkJAQttdXN0QWRkcmVzcwIFAWkFBHRoaXMAEWtGYWN0b3J5UHVibGljS2V5AhQlc19fZmFjdG9yeVB1YmxpY0tleQARa1NlcnZpY2VQdWJsaWNLZXkCFCVzX19zZXJ2aWNlUHVibGljS2V5AA9rT3duZXJQdWJsaWNLZXkCEiVzX19vd25lclB1YmxpY0tleQANa0JvdFB1YmxpY0tleQIQJXNfX2JvdFB1YmxpY0tleQEaa0FjY291bnRBZGRyZXNzVG9SZXF1ZXN0SWQBDmFjY291bnRBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQClCAEFDmFjY291bnRBZGRyZXNzCQDMCAICGWFjY291bnRBZGRyZXNzVG9SZXF1ZXN0SWQFA25pbAUJc2VwYXJhdG9yAQ1rQWNjb3VudE93bmVyAQlhY2NvdW50SWQJALkJAgkAzAgCAgQlcyVzCQDMCAIFCWFjY291bnRJZAkAzAgCAg5vd25lclB1YmxpY0tleQUDbmlsBQlzZXBhcmF0b3IADmZhY3RvcnlBZGRyZXNzCQCnCAEJARFAZXh0ck5hdGl2ZSgxMDUyKQIFBHRoaXMFEWtGYWN0b3J5UHVibGljS2V5AA5zZXJ2aWNlQWRkcmVzcwkApwgBCQERQGV4dHJOYXRpdmUoMTA1MikCBQ5mYWN0b3J5QWRkcmVzcwURa1NlcnZpY2VQdWJsaWNLZXkACWFjY291bnRJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUOZmFjdG9yeUFkZHJlc3MJARprQWNjb3VudEFkZHJlc3NUb1JlcXVlc3RJZAEFBHRoaXMADm93bmVyUHVibGljS2V5CQERQGV4dHJOYXRpdmUoMTA1MikCBQ5mYWN0b3J5QWRkcmVzcwkBDWtBY2NvdW50T3duZXIBBQlhY2NvdW50SWQADG93bmVyQWRkcmVzcwkApwgBBQ5vd25lclB1YmxpY0tleQELbXVzdFNlcnZpY2UBAWkJAQttdXN0QWRkcmVzcwIFAWkFDnNlcnZpY2VBZGRyZXNzAQltdXN0T3duZXIBAWkJAQttdXN0QWRkcmVzcwIFAWkFDG93bmVyQWRkcmVzcwYBaQELc3RyaW5nRW50cnkCA2tleQN2YWwDCQELbXVzdFNlcnZpY2UBBQFpCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQCUCgIFA25pbAUEdW5pdAFpAQxpbnRlZ2VyRW50cnkCA2tleQN2YWwDCQELbXVzdFNlcnZpY2UBBQFpCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQUDdmFsBQNuaWwFA2tleQkAlAoCBQNuaWwFBHVuaXQBaQENdHJhbnNmZXJBc3NldAMOcmVjaXBpZW50Qnl0ZXMGYW1vdW50B2Fzc2V0SWQDCQELbXVzdFNlcnZpY2UBBQFpCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQ5yZWNpcGllbnRCeXRlcwUGYW1vdW50BQdhc3NldElkBQNuaWwFBmFtb3VudAkAlAoCBQNuaWwFBHVuaXQBaQENdHJhbnNmZXJXYXZlcwIOcmVjaXBpZW50Qnl0ZXMGYW1vdW50AwkBC211c3RTZXJ2aWNlAQUBaQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjaXBpZW50Qnl0ZXMFBmFtb3VudAUEdW5pdAUDbmlsBQZhbW91bnQJAJQKAgUDbmlsBQR1bml0AWkBBGluaXQCEGZhY3RvcnlQdWJsaWNLZXkQY3JlYXRvclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBA9jb21wbGV0ZVJlcXVlc3QJAPwHBAkApwgBBRBmYWN0b3J5UHVibGljS2V5AgphZGRBY2NvdW50CQDMCAIFEGNyZWF0b3JQdWJsaWNLZXkFA25pbAUDbmlsAwkAAAIFD2NvbXBsZXRlUmVxdWVzdAUPY29tcGxldGVSZXF1ZXN0CQCUCgIJAMwIAgkBC0JpbmFyeUVudHJ5AgURa0ZhY3RvcnlQdWJsaWNLZXkFEGZhY3RvcnlQdWJsaWNLZXkFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRjYWxsAghmdW5jdGlvbgRhcmdzBAtjaGVja0NhbGxlcgkBCW11c3RPd25lcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAZyZXN1bHQJAP0HBAUOc2VydmljZUFkZHJlc3MFCGZ1bmN0aW9uCQDMCAIFBGFyZ3MFA25pbAgFAWkIcGF5bWVudHMJAJQKAgUDbmlsBQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAxib3RQdWJsaWNLZXkJARFAZXh0ck5hdGl2ZSgxMDUyKQIFDmZhY3RvcnlBZGRyZXNzBQ1rQm90UHVibGljS2V5BAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYm90UHVibGljS2V5AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uAwkBCWlzRGVmaW5lZAEJAJwIAgUEdGhpcwURa0ZhY3RvcnlQdWJsaWNLZXkHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5AwkAAAIFB2NoYWluSWQFCGNoYWluSWRXBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tled78w9w=",
"height": 2863291,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: 69QZEWwvi8EN6A2fHsCMUChc3S4xo1TJHfUjithqk1M3
Next: none
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | let a = "%s__factoryPublicKey" |
---|
| 4 | + | let a = "__" |
---|
5 | 5 | | |
---|
6 | | - | let b = "%s__servicePublicKey" |
---|
| 6 | + | let b = take(drop(this.bytes, 1), 1) |
---|
7 | 7 | | |
---|
8 | | - | let c = "%s__ownerPublicKey" |
---|
| 8 | + | let c = base58'2T' |
---|
9 | 9 | | |
---|
10 | | - | let d = "%s__botPublicKey" |
---|
| 10 | + | let d = base58'2W' |
---|
11 | 11 | | |
---|
12 | | - | let e = "%s__verified" |
---|
13 | | - | |
---|
14 | | - | let f = addressFromPublicKey(getBinaryValue(this, a)) |
---|
15 | | - | |
---|
16 | | - | let g = addressFromPublicKey(getBinaryValue(f, b)) |
---|
17 | | - | |
---|
18 | | - | let h = addressFromPublicKey(getBinaryValue(this, c)) |
---|
19 | | - | |
---|
20 | | - | let i = if (if (isDefined(getBinary(this, a))) |
---|
21 | | - | then isDefined(getBinary(this, c)) |
---|
22 | | - | else false) |
---|
23 | | - | then valueOrElse(getBoolean(this, e), false) |
---|
24 | | - | else false |
---|
25 | | - | |
---|
26 | | - | func j (k,l) = if ((k.caller == l)) |
---|
| 12 | + | func e (f,g) = if ((f.caller == g)) |
---|
27 | 13 | | then true |
---|
28 | | - | else throw() |
---|
| 14 | + | else throw("permission denied") |
---|
29 | 15 | | |
---|
30 | 16 | | |
---|
31 | | - | func m (k) = j(k, this) |
---|
| 17 | + | func h (f) = e(f, this) |
---|
32 | 18 | | |
---|
33 | 19 | | |
---|
34 | | - | func n (k) = j(k, g) |
---|
| 20 | + | let i = "%s__factoryPublicKey" |
---|
| 21 | + | |
---|
| 22 | + | let j = "%s__servicePublicKey" |
---|
| 23 | + | |
---|
| 24 | + | let k = "%s__ownerPublicKey" |
---|
| 25 | + | |
---|
| 26 | + | let l = "%s__botPublicKey" |
---|
| 27 | + | |
---|
| 28 | + | func m (n) = makeString(["%s%s", toString(n), "accountAddressToRequestId"], a) |
---|
35 | 29 | | |
---|
36 | 30 | | |
---|
37 | | - | func o (k) = j(k, h) |
---|
| 31 | + | func o (p) = makeString(["%s%s", p, "ownerPublicKey"], a) |
---|
38 | 32 | | |
---|
39 | 33 | | |
---|
40 | | - | func p (k) = j(k, f) |
---|
| 34 | + | let q = addressFromPublicKey(getBinaryValue(this, i)) |
---|
| 35 | + | |
---|
| 36 | + | let r = addressFromPublicKey(getBinaryValue(q, j)) |
---|
| 37 | + | |
---|
| 38 | + | let p = getStringValue(q, m(this)) |
---|
| 39 | + | |
---|
| 40 | + | let s = getBinaryValue(q, o(p)) |
---|
| 41 | + | |
---|
| 42 | + | let t = addressFromPublicKey(s) |
---|
| 43 | + | |
---|
| 44 | + | func u (f) = e(f, r) |
---|
41 | 45 | | |
---|
42 | 46 | | |
---|
43 | | - | @Callable(k) |
---|
44 | | - | func stringEntry (q,r) = if (n(k)) |
---|
45 | | - | then $Tuple2([StringEntry(q, r)], q) |
---|
| 47 | + | func v (f) = e(f, t) |
---|
| 48 | + | |
---|
| 49 | + | |
---|
| 50 | + | @Callable(f) |
---|
| 51 | + | func stringEntry (w,x) = if (u(f)) |
---|
| 52 | + | then $Tuple2([StringEntry(w, x)], w) |
---|
46 | 53 | | else $Tuple2(nil, unit) |
---|
47 | 54 | | |
---|
48 | 55 | | |
---|
49 | 56 | | |
---|
50 | | - | @Callable(k) |
---|
51 | | - | func integerEntry (q,r) = if (n(k)) |
---|
52 | | - | then $Tuple2([IntegerEntry(q, r)], q) |
---|
| 57 | + | @Callable(f) |
---|
| 58 | + | func integerEntry (w,x) = if (u(f)) |
---|
| 59 | + | then $Tuple2([IntegerEntry(w, x)], w) |
---|
53 | 60 | | else $Tuple2(nil, unit) |
---|
54 | 61 | | |
---|
55 | 62 | | |
---|
56 | 63 | | |
---|
57 | | - | @Callable(k) |
---|
58 | | - | func transferAsset (s,t,u) = if (n(k)) |
---|
59 | | - | then $Tuple2([ScriptTransfer(Address(s), t, u)], t) |
---|
| 64 | + | @Callable(f) |
---|
| 65 | + | func transferAsset (y,z,A) = if (u(f)) |
---|
| 66 | + | then $Tuple2([ScriptTransfer(Address(y), z, A)], z) |
---|
60 | 67 | | else $Tuple2(nil, unit) |
---|
61 | 68 | | |
---|
62 | 69 | | |
---|
63 | 70 | | |
---|
64 | | - | @Callable(k) |
---|
65 | | - | func transferWaves (s,t) = if (n(k)) |
---|
66 | | - | then $Tuple2([ScriptTransfer(Address(s), t, unit)], t) |
---|
| 71 | + | @Callable(f) |
---|
| 72 | + | func transferWaves (y,z) = if (u(f)) |
---|
| 73 | + | then $Tuple2([ScriptTransfer(Address(y), z, unit)], z) |
---|
67 | 74 | | else $Tuple2(nil, unit) |
---|
68 | 75 | | |
---|
69 | 76 | | |
---|
70 | 77 | | |
---|
71 | | - | @Callable(k) |
---|
72 | | - | func init (v,w) = { |
---|
73 | | - | let x = m(k) |
---|
74 | | - | if ((x == x)) |
---|
75 | | - | then $Tuple2([BinaryEntry(a, v), BinaryEntry(c, w)], unit) |
---|
76 | | - | else throw("Strict value is not equal to itself.") |
---|
77 | | - | } |
---|
78 | | - | |
---|
79 | | - | |
---|
80 | | - | |
---|
81 | | - | @Callable(k) |
---|
82 | | - | func complete (y,z) = { |
---|
83 | | - | let x = m(k) |
---|
84 | | - | if ((x == x)) |
---|
| 78 | + | @Callable(f) |
---|
| 79 | + | func init (B,C) = { |
---|
| 80 | + | let D = h(f) |
---|
| 81 | + | if ((D == D)) |
---|
85 | 82 | | then { |
---|
86 | | - | let A = reentrantInvoke(f, "complete", [y, z], nil) |
---|
87 | | - | $Tuple2(nil, A) |
---|
| 83 | + | let E = invoke(addressFromPublicKey(B), "addAccount", [C], nil) |
---|
| 84 | + | if ((E == E)) |
---|
| 85 | + | then $Tuple2([BinaryEntry(i, B)], unit) |
---|
| 86 | + | else throw("Strict value is not equal to itself.") |
---|
88 | 87 | | } |
---|
89 | 88 | | else throw("Strict value is not equal to itself.") |
---|
90 | 89 | | } |
---|
91 | 90 | | |
---|
92 | 91 | | |
---|
93 | 92 | | |
---|
94 | | - | @Callable(k) |
---|
95 | | - | func approve () = { |
---|
96 | | - | let x = p(k) |
---|
97 | | - | if ((x == x)) |
---|
98 | | - | then $Tuple2([BooleanEntry(e, true)], unit) |
---|
99 | | - | else throw("Strict value is not equal to itself.") |
---|
100 | | - | } |
---|
101 | | - | |
---|
102 | | - | |
---|
103 | | - | |
---|
104 | | - | @Callable(k) |
---|
105 | | - | func call (B,C) = { |
---|
106 | | - | let x = o(k) |
---|
107 | | - | if ((x == x)) |
---|
| 93 | + | @Callable(f) |
---|
| 94 | + | func call (F,G) = { |
---|
| 95 | + | let D = v(f) |
---|
| 96 | + | if ((D == D)) |
---|
108 | 97 | | then { |
---|
109 | | - | let A = reentrantInvoke(g, B, [C], k.payments) |
---|
110 | | - | $Tuple2(nil, A) |
---|
| 98 | + | let H = reentrantInvoke(r, F, [G], f.payments) |
---|
| 99 | + | $Tuple2(nil, H) |
---|
111 | 100 | | } |
---|
112 | 101 | | else throw("Strict value is not equal to itself.") |
---|
113 | 102 | | } |
---|
114 | 103 | | |
---|
115 | 104 | | |
---|
116 | | - | @Verifier(D) |
---|
117 | | - | func E () = { |
---|
118 | | - | let F = (take(drop(this.bytes, 1), 1) == base58'2T') |
---|
119 | | - | let G = getBinaryValue(f, d) |
---|
120 | | - | let H = D |
---|
121 | | - | if ($isInstanceOf(H, "Order")) |
---|
122 | | - | then sigVerify(D.bodyBytes, D.proofs[0], G) |
---|
123 | | - | else if ($isInstanceOf(H, "InvokeScriptTransaction")) |
---|
124 | | - | then if (i) |
---|
| 105 | + | @Verifier(I) |
---|
| 106 | + | func J () = { |
---|
| 107 | + | let K = getBinaryValue(q, l) |
---|
| 108 | + | let L = I |
---|
| 109 | + | if ($isInstanceOf(L, "Order")) |
---|
| 110 | + | then sigVerify(I.bodyBytes, I.proofs[0], K) |
---|
| 111 | + | else if ($isInstanceOf(L, "InvokeScriptTransaction")) |
---|
| 112 | + | then if (isDefined(getBinary(this, i))) |
---|
125 | 113 | | then false |
---|
126 | | - | else sigVerify(D.bodyBytes, D.proofs[0], D.senderPublicKey) |
---|
127 | | - | else if (!(F)) |
---|
| 114 | + | else sigVerify(I.bodyBytes, I.proofs[0], I.senderPublicKey) |
---|
| 115 | + | else if ((b == d)) |
---|
128 | 116 | | then false |
---|
129 | | - | else sigVerify(D.bodyBytes, D.proofs[0], D.senderPublicKey) |
---|
| 117 | + | else sigVerify(I.bodyBytes, I.proofs[0], I.senderPublicKey) |
---|
130 | 118 | | } |
---|
131 | 119 | | |
---|