2021.04.21 13:40 [2556694] smart account 3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp > SELF 0.00000000 Waves
{
"type": 13,
"id": "9E1chLu73D4ZGoPJfJv46dgh1cmvjTfbX56nKjaGDJim",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1619001553523,
"version": 2,
"chainId": 87,
"sender": "3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp",
"senderPublicKey": "GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw",
"proofs": [
"",
"rZmLtxXLcsPRs1LLSjSzmvpgSktopS6e4NgipbrocUWRgeQHrR6UG2rQ1At8DG9b1W9pbjQCELKrf4YVhj1YnAC",
"46v3Vhd4QSdMEoRuMB5xqPVufTKcHrbAB9RNpfTgXa9pnmmAZACn2f6vtft8bAoHBXMhP6sZTJzw5ENYxS9KGfis"
],
"script": "base64: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",
"height": 2556694,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: 4gJ4pg5doqQi5mRxFz6YPnxCwtvWWsAVeCi1N2qmM4EH
Next: 6UVYzr5hs3QArauPgqXXCYawkzEjUgTKDDxU2EteLood
Diff:
Old | New | | Differences |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let governanceAddress = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS') |
---|
| 5 | + | |
---|
| 6 | + | let farmingAddress = Address(base58'3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw') |
---|
5 | 7 | | |
---|
6 | 8 | | let oracleAddress = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') |
---|
7 | 9 | | |
---|
|
28 | 30 | | let isUpdateWeightsCall = if ((invoke.dApp == governanceAddress)) |
---|
29 | 31 | | then (invoke.function == "updateWeights") |
---|
30 | 32 | | else false |
---|
| 33 | + | let isUpdatePoolInterest = if ((invoke.dApp == farmingAddress)) |
---|
| 34 | + | then (invoke.function == "updatePoolInterest") |
---|
| 35 | + | else false |
---|
31 | 36 | | let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke) |
---|
32 | 37 | | if (if (if (if (isExchangeCall) |
---|
33 | 38 | | then true |
---|
|
35 | 40 | | then (size(invoke.payments) == 1) |
---|
36 | 41 | | else false) |
---|
37 | 42 | | then true |
---|
38 | | - | else if (isUpdateWeightsCall) |
---|
| 43 | + | else if (if (isUpdateWeightsCall) |
---|
| 44 | + | then true |
---|
| 45 | + | else isUpdatePoolInterest) |
---|
39 | 46 | | then (size(invoke.payments) == 0) |
---|
40 | 47 | | else false) |
---|
41 | 48 | | then signedByAdmin |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 4 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let governanceAddress = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS') |
---|
| 5 | + | |
---|
| 6 | + | let farmingAddress = Address(base58'3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw') |
---|
5 | 7 | | |
---|
6 | 8 | | let oracleAddress = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') |
---|
7 | 9 | | |
---|
8 | 10 | | let adminInvoke = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h' |
---|
9 | 11 | | |
---|
10 | 12 | | let adminPubKey1 = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA' |
---|
11 | 13 | | |
---|
12 | 14 | | let adminPubKey2 = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7' |
---|
13 | 15 | | |
---|
14 | 16 | | let adminPubKey3 = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ' |
---|
15 | 17 | | |
---|
16 | 18 | | let keyPrefixPoolName = "pool_" |
---|
17 | 19 | | |
---|
18 | 20 | | |
---|
19 | 21 | | @Verifier(tx) |
---|
20 | 22 | | func verify () = match tx { |
---|
21 | 23 | | case invoke: InvokeScriptTransaction => |
---|
22 | 24 | | let isExchangeCall = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(invoke.dApp)))))) |
---|
23 | 25 | | then (invoke.function == "exchange") |
---|
24 | 26 | | else false |
---|
25 | 27 | | let isAirdropCall = if ((invoke.dApp == governanceAddress)) |
---|
26 | 28 | | then (invoke.function == "airDrop") |
---|
27 | 29 | | else false |
---|
28 | 30 | | let isUpdateWeightsCall = if ((invoke.dApp == governanceAddress)) |
---|
29 | 31 | | then (invoke.function == "updateWeights") |
---|
30 | 32 | | else false |
---|
| 33 | + | let isUpdatePoolInterest = if ((invoke.dApp == farmingAddress)) |
---|
| 34 | + | then (invoke.function == "updatePoolInterest") |
---|
| 35 | + | else false |
---|
31 | 36 | | let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke) |
---|
32 | 37 | | if (if (if (if (isExchangeCall) |
---|
33 | 38 | | then true |
---|
34 | 39 | | else isAirdropCall) |
---|
35 | 40 | | then (size(invoke.payments) == 1) |
---|
36 | 41 | | else false) |
---|
37 | 42 | | then true |
---|
38 | | - | else if (isUpdateWeightsCall) |
---|
| 43 | + | else if (if (isUpdateWeightsCall) |
---|
| 44 | + | then true |
---|
| 45 | + | else isUpdatePoolInterest) |
---|
39 | 46 | | then (size(invoke.payments) == 0) |
---|
40 | 47 | | else false) |
---|
41 | 48 | | then signedByAdmin |
---|
42 | 49 | | else false |
---|
43 | 50 | | case _ => |
---|
44 | 51 | | let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1)) |
---|
45 | 52 | | then 1 |
---|
46 | 53 | | else 0 |
---|
47 | 54 | | let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2)) |
---|
48 | 55 | | then 1 |
---|
49 | 56 | | else 0 |
---|
50 | 57 | | let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3)) |
---|
51 | 58 | | then 1 |
---|
52 | 59 | | else 0 |
---|
53 | 60 | | (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2) |
---|
54 | 61 | | } |
---|
55 | 62 | | |
---|