tx · 91t6MwCENtSTq864kxaZHMDYVR69NJEoHLuyivfx1DYB
3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4: -0.01400000 Waves
2022.01.13 17:22 [1877294] smart account 3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4 > SELF 0.00000000 Waves
{
"type": 13,
"id": "91t6MwCENtSTq864kxaZHMDYVR69NJEoHLuyivfx1DYB",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1642083748856,
"version": 2,
"chainId": 84,
"sender": "3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4",
"senderPublicKey": "5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw",
"proofs": [
"DaBVF4iNKeDtudXprKfrjZ2ua12XdGpQz98TCthwHGqghiN3gv1iHUfjCSvpJ5YNCVRswJTNa2tvyZQTYd1Np2g",
"3Ah8Jc3W58JLHdGErjAhWtQ7L9ggoWhgtAgSgZnk4Cfff9PgpNwrv9BW3kghunV3gwYFuNGtVtpK39pA9HVkPN7Y"
],
"script": "base64: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",
"height": 1877294,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: RSuFynWZP5qthAjRoCy2WHyEWJN6QfzL4TcGhLmzufU
Next: BFvYmLvnhrXDY1kgaRohJuLQP9uuaDQD1Pju5wb87tyA
Diff:
Old | New | | Differences |
---|
1 | | - | {-# STDLIB_VERSION 5 #-} |
---|
| 1 | + | {-# STDLIB_VERSION 4 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let governanceAddress = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU') |
---|
|
20 | 20 | | |
---|
21 | 21 | | @Verifier(tx) |
---|
22 | 22 | | func verify () = match tx { |
---|
23 | | - | case inv: InvokeScriptTransaction => |
---|
24 | | - | let isExchangeCall = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp)))))) |
---|
25 | | - | then (inv.function == "exchange") |
---|
| 23 | + | case invoke: InvokeScriptTransaction => |
---|
| 24 | + | let isExchangeCall = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(invoke.dApp)))))) |
---|
| 25 | + | then (invoke.function == "exchange") |
---|
26 | 26 | | else false |
---|
27 | | - | let isAirdropCall = if ((inv.dApp == governanceAddress)) |
---|
28 | | - | then (inv.function == "airDrop") |
---|
| 27 | + | let isAirdropCall = if ((invoke.dApp == governanceAddress)) |
---|
| 28 | + | then (invoke.function == "airDrop") |
---|
29 | 29 | | else false |
---|
30 | | - | let isUpdateWeightsCall = if ((inv.dApp == governanceAddress)) |
---|
31 | | - | then (inv.function == "updateWeights") |
---|
| 30 | + | let isUpdateWeightsCall = if ((invoke.dApp == governanceAddress)) |
---|
| 31 | + | then (invoke.function == "updateWeights") |
---|
32 | 32 | | else false |
---|
33 | | - | let isUpdatePoolInterest = if ((inv.dApp == farmingAddress)) |
---|
34 | | - | then (inv.function == "updatePoolInterest") |
---|
| 33 | + | let isUpdatePoolInterest = if ((invoke.dApp == farmingAddress)) |
---|
| 34 | + | then (invoke.function == "updatePoolInterest") |
---|
| 35 | + | else false |
---|
| 36 | + | let isTakenIntoAccount = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(invoke.dApp)))))) |
---|
| 37 | + | then (invoke.function == "takeIntoAccountExtraFunds") |
---|
35 | 38 | | else false |
---|
36 | 39 | | let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke) |
---|
37 | 40 | | if (if (if (if (isExchangeCall) |
---|
38 | 41 | | then true |
---|
39 | 42 | | else isAirdropCall) |
---|
40 | | - | then (size(inv.payments) == 1) |
---|
| 43 | + | then (size(invoke.payments) == 1) |
---|
41 | 44 | | else false) |
---|
42 | 45 | | then true |
---|
43 | | - | else if (if (isUpdateWeightsCall) |
---|
| 46 | + | else if (if (if (isUpdateWeightsCall) |
---|
44 | 47 | | then true |
---|
45 | 48 | | else isUpdatePoolInterest) |
---|
46 | | - | then (size(inv.payments) == 0) |
---|
| 49 | + | then true |
---|
| 50 | + | else isTakenIntoAccount) |
---|
| 51 | + | then (size(invoke.payments) == 0) |
---|
47 | 52 | | else false) |
---|
48 | 53 | | then signedByAdmin |
---|
49 | 54 | | else false |
---|
Full:
Old | New | | Differences |
---|
1 | | - | {-# STDLIB_VERSION 5 #-} |
---|
| 1 | + | {-# STDLIB_VERSION 4 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let governanceAddress = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU') |
---|
5 | 5 | | |
---|
6 | 6 | | let farmingAddress = Address(base58'3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT') |
---|
7 | 7 | | |
---|
8 | 8 | | let oracleAddress = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9') |
---|
9 | 9 | | |
---|
10 | 10 | | let adminInvoke = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK' |
---|
11 | 11 | | |
---|
12 | 12 | | let adminPubKey1 = base58'GFmKZ2naZFRoCvNbwKAQVGmLb1uBeWGDgFabdGBuZiuy' |
---|
13 | 13 | | |
---|
14 | 14 | | let adminPubKey2 = base58'GmJXRyhRA79g8yUGgKBAVdnFfQFDMjQG98b1MmLDh5kk' |
---|
15 | 15 | | |
---|
16 | 16 | | let adminPubKey3 = base58'CFhbV6h41hVjbGHudGtS3fYUv7QAKRxFQzKNtx4B5PqP' |
---|
17 | 17 | | |
---|
18 | 18 | | let keyPrefixPoolName = "pool_" |
---|
19 | 19 | | |
---|
20 | 20 | | |
---|
21 | 21 | | @Verifier(tx) |
---|
22 | 22 | | func verify () = match tx { |
---|
23 | | - | case inv: InvokeScriptTransaction => |
---|
24 | | - | let isExchangeCall = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp)))))) |
---|
25 | | - | then (inv.function == "exchange") |
---|
| 23 | + | case invoke: InvokeScriptTransaction => |
---|
| 24 | + | let isExchangeCall = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(invoke.dApp)))))) |
---|
| 25 | + | then (invoke.function == "exchange") |
---|
26 | 26 | | else false |
---|
27 | | - | let isAirdropCall = if ((inv.dApp == governanceAddress)) |
---|
28 | | - | then (inv.function == "airDrop") |
---|
| 27 | + | let isAirdropCall = if ((invoke.dApp == governanceAddress)) |
---|
| 28 | + | then (invoke.function == "airDrop") |
---|
29 | 29 | | else false |
---|
30 | | - | let isUpdateWeightsCall = if ((inv.dApp == governanceAddress)) |
---|
31 | | - | then (inv.function == "updateWeights") |
---|
| 30 | + | let isUpdateWeightsCall = if ((invoke.dApp == governanceAddress)) |
---|
| 31 | + | then (invoke.function == "updateWeights") |
---|
32 | 32 | | else false |
---|
33 | | - | let isUpdatePoolInterest = if ((inv.dApp == farmingAddress)) |
---|
34 | | - | then (inv.function == "updatePoolInterest") |
---|
| 33 | + | let isUpdatePoolInterest = if ((invoke.dApp == farmingAddress)) |
---|
| 34 | + | then (invoke.function == "updatePoolInterest") |
---|
| 35 | + | else false |
---|
| 36 | + | let isTakenIntoAccount = if (isDefined(getString(oracleAddress, (keyPrefixPoolName + toString(addressFromRecipient(invoke.dApp)))))) |
---|
| 37 | + | then (invoke.function == "takeIntoAccountExtraFunds") |
---|
35 | 38 | | else false |
---|
36 | 39 | | let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke) |
---|
37 | 40 | | if (if (if (if (isExchangeCall) |
---|
38 | 41 | | then true |
---|
39 | 42 | | else isAirdropCall) |
---|
40 | | - | then (size(inv.payments) == 1) |
---|
| 43 | + | then (size(invoke.payments) == 1) |
---|
41 | 44 | | else false) |
---|
42 | 45 | | then true |
---|
43 | | - | else if (if (isUpdateWeightsCall) |
---|
| 46 | + | else if (if (if (isUpdateWeightsCall) |
---|
44 | 47 | | then true |
---|
45 | 48 | | else isUpdatePoolInterest) |
---|
46 | | - | then (size(inv.payments) == 0) |
---|
| 49 | + | then true |
---|
| 50 | + | else isTakenIntoAccount) |
---|
| 51 | + | then (size(invoke.payments) == 0) |
---|
47 | 52 | | else false) |
---|
48 | 53 | | then signedByAdmin |
---|
49 | 54 | | else false |
---|
50 | 55 | | case _ => |
---|
51 | 56 | | let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1)) |
---|
52 | 57 | | then 1 |
---|
53 | 58 | | else 0 |
---|
54 | 59 | | let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2)) |
---|
55 | 60 | | then 1 |
---|
56 | 61 | | else 0 |
---|
57 | 62 | | let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3)) |
---|
58 | 63 | | then 1 |
---|
59 | 64 | | else 0 |
---|
60 | 65 | | (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2) |
---|
61 | 66 | | } |
---|
62 | 67 | | |
---|