tx · 3RZ6ZnBgHeKoREten5xR15wRpwjGSa4nyjbhyF6e19Lc
3N61RYWc9QuqKUwLvowpZZLpgUnqpQSFwLq: -0.01000000 Waves
2024.03.04 11:56 [3003048] smart account 3N61RYWc9QuqKUwLvowpZZLpgUnqpQSFwLq > SELF 0.00000000 Waves
{
"type": 13,
"id": "3RZ6ZnBgHeKoREten5xR15wRpwjGSa4nyjbhyF6e19Lc",
"fee": 1000000,
"feeAssetId": null,
"timestamp": 1709542668826,
"version": 2,
"chainId": 84,
"sender": "3N61RYWc9QuqKUwLvowpZZLpgUnqpQSFwLq",
"senderPublicKey": "HdwFH8HPYu3HG27yK6bszu1CdR4uik4HgzyTimeSfcYf",
"proofs": [
"5UAkWPf9v3BQknZNjueCBUgFgJP6JyWG6CHQ4JFYzyHtUDNcAMudDNvXafbdzv2rxA5SQRTTCeDvWS23eunDXqKZ"
],
"script": "base64:BgIJCAISABIDCgEIEQAQYW1vdW50QXNzZXRJZEtleQINYW1vdW50QXNzZXRJZAAPcHJpY2VBc3NldElkS2V5AgxwcmljZUFzc2V0SWQACmZlZVJhdGVLZXkCB2ZlZVJhdGUBCmdldEFzc2V0SWQBDWFzc2V0SWRTdHJpbmcDCQAAAgUNYXNzZXRJZFN0cmluZwIFV0FWRVMFBHVuaXQJANkEAQUNYXNzZXRJZFN0cmluZwEPZ2V0QXNzZXRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDwBwIFBHRoaXMFAmlkCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQATYW1vdW50QXNzZXRJZFN0cmluZwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUQYW1vdW50QXNzZXRJZEtleQANYW1vdW50QXNzZXRJZAkBCmdldEFzc2V0SWQBBRNhbW91bnRBc3NldElkU3RyaW5nABJhbW91bnRBc3NldEJhbGFuY2UJAQ9nZXRBc3NldEJhbGFuY2UBBQ1hbW91bnRBc3NldElkABJwcmljZUFzc2V0SWRTdHJpbmcJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFD3ByaWNlQXNzZXRJZEtleQAMcHJpY2VBc3NldElkCQEKZ2V0QXNzZXRJZAEFEnByaWNlQXNzZXRJZFN0cmluZwARcHJpY2VBc3NldEJhbGFuY2UJAQ9nZXRBc3NldEJhbGFuY2UBBQxwcmljZUFzc2V0SWQABlNDQUxFOACAwtcvAAdmZWVSYXRlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCmZlZVJhdGVLZXkAwIQ9AQdhbW1DYWxjAwlpbml0QW1CYWwJaW5pdFByQmFsDXBheW1lbnRBbW91bnQECnNlbmRBbW91bnQJAGUCBQlpbml0QW1CYWwJAGsDBQlpbml0QW1CYWwFCWluaXRQckJhbAkAZAIFCWluaXRQckJhbAUNcGF5bWVudEFtb3VudAQIbmV3QW1CYWwJAGUCBQlpbml0QW1CYWwFCnNlbmRBbW91bnQECG5ld1ByQmFsCQBkAgUJaW5pdFByQmFsBQ1wYXltZW50QW1vdW50BARuZXdLCQBoAgUIbmV3QW1CYWwFCG5ld1ByQmFsBARvbGRLCQBoAgUJaW5pdEFtQmFsBQlpbml0UHJCYWwJAJkKBwUKc2VuZEFtb3VudAUJaW5pdEFtQmFsBQlpbml0UHJCYWwFBG9sZEsFCG5ld0FtQmFsBQhuZXdQckJhbAUEbmV3SwERY2FsY1Jhd1NlbmRBbW91bnQDCWluaXRBbUJhbAlpbml0UHJCYWwNcGF5bWVudEFtb3VudAQKc2VuZEFtb3VudAkAZQIFCWluaXRBbUJhbAkAawMFCWluaXRBbUJhbAUJaW5pdFByQmFsCQBkAgUJaW5pdFByQmFsBQ1wYXltZW50QW1vdW50BAhuZXdBbUJhbAkAZQIFCWluaXRBbUJhbAUKc2VuZEFtb3VudAQIbmV3UHJCYWwJAGQCBQlpbml0UHJCYWwFDXBheW1lbnRBbW91bnQFCnNlbmRBbW91bnQBDmNhbGNTZW5kQW1vdW50Ag5wYXltZW50QXNzZXRJZA1wYXltZW50QW1vdW50BAskdDAxODM5MTk5MQMJAAACBQ5wYXltZW50QXNzZXRJZAUNYW1vdW50QXNzZXRJZAkAlAoCBQxwcmljZUFzc2V0SWQFDWFtb3VudEFzc2V0SWQJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBAlhbUFzc2V0SWQIBQskdDAxODM5MTk5MQJfMQQJcHJBc3NldElkCAULJHQwMTgzOTE5OTECXzIECWluaXRBbUJhbAkBD2dldEFzc2V0QmFsYW5jZQEFCWFtQXNzZXRJZAQJaW5pdFByQmFsCQBlAgkBD2dldEFzc2V0QmFsYW5jZQEFCXByQXNzZXRJZAUNcGF5bWVudEFtb3VudAQNcmF3U2VuZEFtb3VudAkBEWNhbGNSYXdTZW5kQW1vdW50AwUJaW5pdEFtQmFsBQlpbml0UHJCYWwFDXBheW1lbnRBbW91bnQECWZlZUFtb3VudAkAawMFDXJhd1NlbmRBbW91bnQFB2ZlZVJhdGUFBlNDQUxFOAkAlQoDCQBlAgUNcmF3U2VuZEFtb3VudAUJZmVlQW1vdW50BQlmZWVBbW91bnQFCWFtQXNzZXRJZAEMc3dhcEludGVybmFsAgdhZGRyZXNzAWkEBmNoZWNrcwkAzAgCAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAAYJAAIBAhhzaG91bGQgYmUgd2l0aCAxIHBheW1lbnQJAMwIAgMDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQ1hbW91bnRBc3NldElkBgkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMcHJpY2VBc3NldElkBgkAAgEJALkJAgkAzAgCAhtwYXltZW50IGFzc2V0SWQgc2hvdWxkIGJlICgJAMwIAgUTYW1vdW50QXNzZXRJZFN0cmluZwkAzAgCAgYpIG9yICgJAMwIAgUScHJpY2VBc3NldElkU3RyaW5nCQDMCAICASkFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA5wYXltZW50QXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBA1wYXltZW50QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQLJHQwMjc2NTI4NTMJAQ5jYWxjU2VuZEFtb3VudAIFDnBheW1lbnRBc3NldElkBQ1wYXltZW50QW1vdW50BApzZW5kQW1vdW50CAULJHQwMjc2NTI4NTMCXzEECWZlZUFtb3VudAgFCyR0MDI3NjUyODUzAl8yBAtzZW5kQXNzZXRJZAgFCyR0MDI3NjUyODUzAl8zBAtzZW5kQWN0aW9ucwMJAQIhPQIFCWZlZUFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFB2FkZHJlc3MFCnNlbmRBbW91bnQFC3NlbmRBc3NldElkBQNuaWwJAAIBAhFhbW91bnQgaXMgdG9vIGxvdwQNdXNlclJlYWxQcmljZQkAawMFCnNlbmRBbW91bnQFBlNDQUxFOAUNcGF5bWVudEFtb3VudAkAlAoCBQtzZW5kQWN0aW9ucwkAlQoDBQpzZW5kQW1vdW50BQlmZWVBbW91bnQFDXVzZXJSZWFsUHJpY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CAWkBBHN3YXAACQEMc3dhcEludGVybmFsAggFAWkGY2FsbGVyBQFpAWkBB3N3YXBGb3IBB2FkZHJlc3MJAQxzd2FwSW50ZXJuYWwCCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzBQFpACJasW4=",
"height": 3003048,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: A5zAfuRbpe5U99bzkYtBmsXDnpgea8vhHjdzqqsppetT
Next: H6nozFM2yfZ3KB3F8zKweSGE18fi1PH9HA5cfpG858zS
Diff:
Old | New | | Differences |
---|
40 | 40 | | let q = valueOrElse(getInteger(this, c), 1000000) |
---|
41 | 41 | | |
---|
42 | 42 | | func r (s,t,u) = { |
---|
43 | | - | let v = ((s - fraction(s, t, (t + u))) - 1) |
---|
| 43 | + | let v = (s - fraction(s, t, (t + u))) |
---|
44 | 44 | | let w = (s - v) |
---|
45 | 45 | | let x = (t + u) |
---|
46 | 46 | | let y = (w * x) |
---|
|
49 | 49 | | } |
---|
50 | 50 | | |
---|
51 | 51 | | |
---|
52 | | - | func A (B) = { |
---|
53 | | - | let C = [if ((size(B.payments) > 0)) |
---|
| 52 | + | func A (s,t,u) = { |
---|
| 53 | + | let v = (s - fraction(s, t, (t + u))) |
---|
| 54 | + | let w = (s - v) |
---|
| 55 | + | let x = (t + u) |
---|
| 56 | + | v |
---|
| 57 | + | } |
---|
| 58 | + | |
---|
| 59 | + | |
---|
| 60 | + | func B (C,u) = { |
---|
| 61 | + | let D = if ((C == k)) |
---|
| 62 | + | then $Tuple2(n, k) |
---|
| 63 | + | else $Tuple2(k, n) |
---|
| 64 | + | let E = D._1 |
---|
| 65 | + | let F = D._2 |
---|
| 66 | + | let s = f(E) |
---|
| 67 | + | let t = (f(F) - u) |
---|
| 68 | + | let G = A(s, t, u) |
---|
| 69 | + | let H = fraction(G, q, p) |
---|
| 70 | + | $Tuple3((G - H), H, E) |
---|
| 71 | + | } |
---|
| 72 | + | |
---|
| 73 | + | |
---|
| 74 | + | func I (J,K) = { |
---|
| 75 | + | let L = [if ((size(K.payments) > 0)) |
---|
54 | 76 | | then true |
---|
55 | | - | else throw("should be with 1 payment"), if ((B.payments[0].assetId == n)) |
---|
| 77 | + | else throw("should be with 1 payment"), if (if ((K.payments[0].assetId == k)) |
---|
56 | 78 | | then true |
---|
57 | | - | else throw(makeString(["payment assetId should be: ", m], " "))] |
---|
58 | | - | if ((C == C)) |
---|
| 79 | + | else (K.payments[0].assetId == n)) |
---|
| 80 | + | then true |
---|
| 81 | + | else throw(makeString(["payment assetId should be (", j, ") or (", m, ")"], " "))] |
---|
| 82 | + | if ((L == L)) |
---|
59 | 83 | | then { |
---|
60 | | - | let u = B.payments[0].amount |
---|
61 | | - | let s = l |
---|
62 | | - | let t = (o - u) |
---|
63 | | - | 0 |
---|
| 84 | + | let C = K.payments[0].assetId |
---|
| 85 | + | let u = K.payments[0].amount |
---|
| 86 | + | let M = B(C, u) |
---|
| 87 | + | let v = M._1 |
---|
| 88 | + | let H = M._2 |
---|
| 89 | + | let N = M._3 |
---|
| 90 | + | let O = if ((H != 0)) |
---|
| 91 | + | then [ScriptTransfer(J, v, N)] |
---|
| 92 | + | else throw("amount is too low") |
---|
| 93 | + | let P = fraction(v, p, u) |
---|
| 94 | + | $Tuple2(O, $Tuple3(v, H, P)) |
---|
64 | 95 | | } |
---|
65 | 96 | | else throw("Strict value is not equal to itself.") |
---|
66 | 97 | | } |
---|
67 | 98 | | |
---|
68 | 99 | | |
---|
69 | | - | @Callable(B) |
---|
70 | | - | func foo () = $Tuple2(nil, 0) |
---|
| 100 | + | @Callable(K) |
---|
| 101 | + | func swap () = I(K.caller, K) |
---|
| 102 | + | |
---|
| 103 | + | |
---|
| 104 | + | |
---|
| 105 | + | @Callable(K) |
---|
| 106 | + | func swapFor (J) = I(addressFromStringValue(J), K) |
---|
71 | 107 | | |
---|
72 | 108 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = "amountAssetId" |
---|
5 | 5 | | |
---|
6 | 6 | | let b = "priceAssetId" |
---|
7 | 7 | | |
---|
8 | 8 | | let c = "feeRate" |
---|
9 | 9 | | |
---|
10 | 10 | | func d (e) = if ((e == "WAVES")) |
---|
11 | 11 | | then unit |
---|
12 | 12 | | else fromBase58String(e) |
---|
13 | 13 | | |
---|
14 | 14 | | |
---|
15 | 15 | | func f (g) = { |
---|
16 | 16 | | let h = g |
---|
17 | 17 | | if ($isInstanceOf(h, "ByteVector")) |
---|
18 | 18 | | then { |
---|
19 | 19 | | let i = h |
---|
20 | 20 | | assetBalance(this, i) |
---|
21 | 21 | | } |
---|
22 | 22 | | else wavesBalance(this).available |
---|
23 | 23 | | } |
---|
24 | 24 | | |
---|
25 | 25 | | |
---|
26 | 26 | | let j = getStringValue(this, a) |
---|
27 | 27 | | |
---|
28 | 28 | | let k = d(j) |
---|
29 | 29 | | |
---|
30 | 30 | | let l = f(k) |
---|
31 | 31 | | |
---|
32 | 32 | | let m = getStringValue(this, b) |
---|
33 | 33 | | |
---|
34 | 34 | | let n = d(m) |
---|
35 | 35 | | |
---|
36 | 36 | | let o = f(n) |
---|
37 | 37 | | |
---|
38 | 38 | | let p = 100000000 |
---|
39 | 39 | | |
---|
40 | 40 | | let q = valueOrElse(getInteger(this, c), 1000000) |
---|
41 | 41 | | |
---|
42 | 42 | | func r (s,t,u) = { |
---|
43 | | - | let v = ((s - fraction(s, t, (t + u))) - 1) |
---|
| 43 | + | let v = (s - fraction(s, t, (t + u))) |
---|
44 | 44 | | let w = (s - v) |
---|
45 | 45 | | let x = (t + u) |
---|
46 | 46 | | let y = (w * x) |
---|
47 | 47 | | let z = (s * t) |
---|
48 | 48 | | $Tuple7(v, s, t, z, w, x, y) |
---|
49 | 49 | | } |
---|
50 | 50 | | |
---|
51 | 51 | | |
---|
52 | | - | func A (B) = { |
---|
53 | | - | let C = [if ((size(B.payments) > 0)) |
---|
| 52 | + | func A (s,t,u) = { |
---|
| 53 | + | let v = (s - fraction(s, t, (t + u))) |
---|
| 54 | + | let w = (s - v) |
---|
| 55 | + | let x = (t + u) |
---|
| 56 | + | v |
---|
| 57 | + | } |
---|
| 58 | + | |
---|
| 59 | + | |
---|
| 60 | + | func B (C,u) = { |
---|
| 61 | + | let D = if ((C == k)) |
---|
| 62 | + | then $Tuple2(n, k) |
---|
| 63 | + | else $Tuple2(k, n) |
---|
| 64 | + | let E = D._1 |
---|
| 65 | + | let F = D._2 |
---|
| 66 | + | let s = f(E) |
---|
| 67 | + | let t = (f(F) - u) |
---|
| 68 | + | let G = A(s, t, u) |
---|
| 69 | + | let H = fraction(G, q, p) |
---|
| 70 | + | $Tuple3((G - H), H, E) |
---|
| 71 | + | } |
---|
| 72 | + | |
---|
| 73 | + | |
---|
| 74 | + | func I (J,K) = { |
---|
| 75 | + | let L = [if ((size(K.payments) > 0)) |
---|
54 | 76 | | then true |
---|
55 | | - | else throw("should be with 1 payment"), if ((B.payments[0].assetId == n)) |
---|
| 77 | + | else throw("should be with 1 payment"), if (if ((K.payments[0].assetId == k)) |
---|
56 | 78 | | then true |
---|
57 | | - | else throw(makeString(["payment assetId should be: ", m], " "))] |
---|
58 | | - | if ((C == C)) |
---|
| 79 | + | else (K.payments[0].assetId == n)) |
---|
| 80 | + | then true |
---|
| 81 | + | else throw(makeString(["payment assetId should be (", j, ") or (", m, ")"], " "))] |
---|
| 82 | + | if ((L == L)) |
---|
59 | 83 | | then { |
---|
60 | | - | let u = B.payments[0].amount |
---|
61 | | - | let s = l |
---|
62 | | - | let t = (o - u) |
---|
63 | | - | 0 |
---|
| 84 | + | let C = K.payments[0].assetId |
---|
| 85 | + | let u = K.payments[0].amount |
---|
| 86 | + | let M = B(C, u) |
---|
| 87 | + | let v = M._1 |
---|
| 88 | + | let H = M._2 |
---|
| 89 | + | let N = M._3 |
---|
| 90 | + | let O = if ((H != 0)) |
---|
| 91 | + | then [ScriptTransfer(J, v, N)] |
---|
| 92 | + | else throw("amount is too low") |
---|
| 93 | + | let P = fraction(v, p, u) |
---|
| 94 | + | $Tuple2(O, $Tuple3(v, H, P)) |
---|
64 | 95 | | } |
---|
65 | 96 | | else throw("Strict value is not equal to itself.") |
---|
66 | 97 | | } |
---|
67 | 98 | | |
---|
68 | 99 | | |
---|
69 | | - | @Callable(B) |
---|
70 | | - | func foo () = $Tuple2(nil, 0) |
---|
| 100 | + | @Callable(K) |
---|
| 101 | + | func swap () = I(K.caller, K) |
---|
| 102 | + | |
---|
| 103 | + | |
---|
| 104 | + | |
---|
| 105 | + | @Callable(K) |
---|
| 106 | + | func swapFor (J) = I(addressFromStringValue(J), K) |
---|
71 | 107 | | |
---|
72 | 108 | | |
---|