tx · DbVP2cPsh6EWpsU2o9XbWjLxjWmKieewrLeoRFHWuzFx 3MtgeA4XXgXJ8JUcFnX7U4X5GFzisbnoZcW: -0.01000000 Waves 2022.04.01 22:50 [1989962] smart account 3MtgeA4XXgXJ8JUcFnX7U4X5GFzisbnoZcW > SELF 0.00000000 Waves
{ "type": 13, "id": "DbVP2cPsh6EWpsU2o9XbWjLxjWmKieewrLeoRFHWuzFx", "fee": 1000000, "feeAssetId": null, "timestamp": 1648842604074, "version": 2, "chainId": 84, "sender": "3MtgeA4XXgXJ8JUcFnX7U4X5GFzisbnoZcW", "senderPublicKey": "3JY9vAw1X3RjuU83Lkd7Yq6JhZPkbNeuXbuE2pyvEnB3", "proofs": [ "27ocQyJ6fL8qwgumtUssJmmr1v4M7r3GGGCQx3AjRnkasPq6tFifo1VBAYyVXoVsBx31bDC5LoLe7p4MJYLBMz5z" ], "script": "base64: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", "height": 1989962, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7uouXWNjPXskm2GAdmV9ykMndJT9yCrfjmCeRiVhGKwh Next: CNm6PsJGTfca5VHvPPmyuy2paPBc7xcd9JDMCT5M9ZBs Diff:
Old | New | Differences | |
---|---|---|---|
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let usdN = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
5 | 5 | ||
6 | + | let staker = Address(base58'3MtgeA4XXgXJ8JUcFnX7U4X5GFzisbnoZcW') | |
7 | + | ||
8 | + | let leasePool = Address(base58'3MtgeA4XXgXJ8JUcFnX7U4X5GFzisbnoZcW') | |
9 | + | ||
10 | + | let shareToken = base58'496Ep8DDZwru81HjT5YAj7vUvYUi4zxyrHCgkD9GXmwe' | |
11 | + | ||
6 | 12 | @Callable(i) | |
7 | - | func stake () = if ((i.payments[0].assetId != usdN)) | |
8 | - | then throw("unexpected asset") | |
13 | + | func addLiquidity () = if (if ((i.payments[0].assetId != unit)) | |
14 | + | then true | |
15 | + | else (i.payments[1].assetId != usdN)) | |
16 | + | then throw("unexpected assets") | |
9 | 17 | else { | |
10 | - | let currentLiquidity = valueOrElse(getInteger(this, toString(i.originCaller)), 0) | |
11 | - | let newLiquidity = (currentLiquidity + i.payments[0].amount) | |
12 | - | $Tuple2([IntegerEntry(toString(i.originCaller), newLiquidity)], newLiquidity) | |
18 | + | let r = invoke(staker, "stake", nil, [i.payments[1]]) | |
19 | + | if ((r == r)) | |
20 | + | then { | |
21 | + | let stakingAmount = match r { | |
22 | + | case a: Int => | |
23 | + | a | |
24 | + | case _ => | |
25 | + | throw("unexpected result type from the staker") | |
26 | + | } | |
27 | + | let stakingAmountKey = ("STAKING_AMOUNT_" + toString(i.caller)) | |
28 | + | let leaseAmountKey = ("LEASE_AMOUNT_" + toString(i.caller)) | |
29 | + | let idKey = ("ID_" + toString(i.caller)) | |
30 | + | let leasedAmount = valueOrElse(getInteger(this, leaseAmountKey), 0) | |
31 | + | let leaseId = getString(this, idKey) | |
32 | + | let newLease = Lease(leasePool, (leasedAmount + i.payments[0].amount)) | |
33 | + | let newLeaseId = calculateLeaseId(newLease) | |
34 | + | let cancel = match leaseId { | |
35 | + | case id: String => | |
36 | + | [LeaseCancel(fromBase58String(id))] | |
37 | + | case _ => | |
38 | + | [StringEntry(idKey, toBase58String(newLeaseId))] | |
39 | + | } | |
40 | + | (cancel ++ [newLease, ScriptTransfer(i.caller, 1, shareToken), IntegerEntry(leaseAmountKey, (leasedAmount + i.payments[0].amount)), IntegerEntry(stakingAmountKey, stakingAmount)]) | |
41 | + | } | |
42 | + | else throw("Strict value is not equal to itself.") | |
13 | 43 | } | |
14 | 44 | ||
15 | 45 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let usdN = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
5 | 5 | ||
6 | + | let staker = Address(base58'3MtgeA4XXgXJ8JUcFnX7U4X5GFzisbnoZcW') | |
7 | + | ||
8 | + | let leasePool = Address(base58'3MtgeA4XXgXJ8JUcFnX7U4X5GFzisbnoZcW') | |
9 | + | ||
10 | + | let shareToken = base58'496Ep8DDZwru81HjT5YAj7vUvYUi4zxyrHCgkD9GXmwe' | |
11 | + | ||
6 | 12 | @Callable(i) | |
7 | - | func stake () = if ((i.payments[0].assetId != usdN)) | |
8 | - | then throw("unexpected asset") | |
13 | + | func addLiquidity () = if (if ((i.payments[0].assetId != unit)) | |
14 | + | then true | |
15 | + | else (i.payments[1].assetId != usdN)) | |
16 | + | then throw("unexpected assets") | |
9 | 17 | else { | |
10 | - | let currentLiquidity = valueOrElse(getInteger(this, toString(i.originCaller)), 0) | |
11 | - | let newLiquidity = (currentLiquidity + i.payments[0].amount) | |
12 | - | $Tuple2([IntegerEntry(toString(i.originCaller), newLiquidity)], newLiquidity) | |
18 | + | let r = invoke(staker, "stake", nil, [i.payments[1]]) | |
19 | + | if ((r == r)) | |
20 | + | then { | |
21 | + | let stakingAmount = match r { | |
22 | + | case a: Int => | |
23 | + | a | |
24 | + | case _ => | |
25 | + | throw("unexpected result type from the staker") | |
26 | + | } | |
27 | + | let stakingAmountKey = ("STAKING_AMOUNT_" + toString(i.caller)) | |
28 | + | let leaseAmountKey = ("LEASE_AMOUNT_" + toString(i.caller)) | |
29 | + | let idKey = ("ID_" + toString(i.caller)) | |
30 | + | let leasedAmount = valueOrElse(getInteger(this, leaseAmountKey), 0) | |
31 | + | let leaseId = getString(this, idKey) | |
32 | + | let newLease = Lease(leasePool, (leasedAmount + i.payments[0].amount)) | |
33 | + | let newLeaseId = calculateLeaseId(newLease) | |
34 | + | let cancel = match leaseId { | |
35 | + | case id: String => | |
36 | + | [LeaseCancel(fromBase58String(id))] | |
37 | + | case _ => | |
38 | + | [StringEntry(idKey, toBase58String(newLeaseId))] | |
39 | + | } | |
40 | + | (cancel ++ [newLease, ScriptTransfer(i.caller, 1, shareToken), IntegerEntry(leaseAmountKey, (leasedAmount + i.payments[0].amount)), IntegerEntry(stakingAmountKey, stakingAmount)]) | |
41 | + | } | |
42 | + | else throw("Strict value is not equal to itself.") | |
13 | 43 | } | |
14 | 44 | ||
15 | 45 |
github/deemru/w8io/169f3d6 36.04 ms ◑