@aztec/ethereum 1.0.0-staging.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/config.d.ts +0 -4
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +0 -5
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +6 -1
- package/dest/contracts/multicall.d.ts +1 -2
- package/dest/contracts/multicall.d.ts.map +1 -1
- package/dest/contracts/multicall.js +48 -79
- package/dest/contracts/rollup.d.ts +1 -12
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +0 -58
- package/dest/contracts/slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/slashing_proposer.js +6 -1
- package/dest/deploy_l1_contracts.d.ts +529 -410
- package/dest/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_l1_contracts.js +16 -27
- package/dest/l1_tx_utils.d.ts +1 -2
- package/dest/l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils.js +2 -9
- package/package.json +4 -4
- package/src/config.ts +0 -6
- package/src/contracts/governance_proposer.ts +6 -1
- package/src/contracts/multicall.ts +46 -73
- package/src/contracts/rollup.ts +1 -77
- package/src/contracts/slashing_proposer.ts +6 -1
- package/src/deploy_l1_contracts.ts +16 -34
- package/src/l1_tx_utils.ts +3 -9
package/dest/config.d.ts
CHANGED
|
@@ -51,10 +51,6 @@ export declare const DefaultL1ContractsConfig: {
|
|
|
51
51
|
};
|
|
52
52
|
export declare const DefaultRewardConfig: {
|
|
53
53
|
sequencerBps: number;
|
|
54
|
-
rewardDistributor: `0x${string}`;
|
|
55
|
-
booster: `0x${string}`;
|
|
56
|
-
};
|
|
57
|
-
export declare const DefaultRewardBoostConfig: {
|
|
58
54
|
increment: number;
|
|
59
55
|
maxScore: number;
|
|
60
56
|
a: number;
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,kBAAkB,CAAC;AAEjF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,wBAAwB,EAAE,MAAM,CAAC;IACjC,+EAA+E;IAC/E,0BAA0B,EAAE,MAAM,CAAC;IACnC,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,sCAAsC;IACtC,2BAA2B,EAAE,MAAM,CAAC;IACpC,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,eAAe,CAAC;AAEpB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;CAcR,CAAC;AAK9B,eAAO,MAAM,mBAAmB;;;;;;;CAO/B,CAAC;AAGF,eAAO,MAAM,uBAAuB;;;CAGnC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAmE3E,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAW7E,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,iBAAiB,CAE/D;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,CAEjE"}
|
package/dest/config.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { bigintConfigHelper, booleanConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
|
-
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
2
|
import { l1TxUtilsConfigMappings } from './l1_tx_utils.js';
|
|
4
3
|
export const DefaultL1ContractsConfig = {
|
|
5
4
|
ethereumSlotDuration: 12,
|
|
@@ -21,10 +20,6 @@ export const DefaultL1ContractsConfig = {
|
|
|
21
20
|
// for it seems overkill
|
|
22
21
|
export const DefaultRewardConfig = {
|
|
23
22
|
sequencerBps: 5000,
|
|
24
|
-
rewardDistributor: EthAddress.ZERO.toString(),
|
|
25
|
-
booster: EthAddress.ZERO.toString()
|
|
26
|
-
};
|
|
27
|
-
export const DefaultRewardBoostConfig = {
|
|
28
23
|
increment: 200000,
|
|
29
24
|
maxScore: 5000000,
|
|
30
25
|
a: 5000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAA8B,KAAK,GAAG,EAAE,KAAK,kBAAkB,EAAmC,MAAM,MAAM,CAAC;AAEtH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AAG1G,qBAAa,0BAA2B,YAAW,WAAW;aAI1C,MAAM,EAAE,UAAU;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkE;gBAGzE,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG;IAKd,IAAW,OAAO,eAEjB;IAEY,gBAAgB;IAKhB,kBAAkB;IAIxB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlC,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAA8B,KAAK,GAAG,EAAE,KAAK,kBAAkB,EAAmC,MAAM,MAAM,CAAC;AAEtH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AAG1G,qBAAa,0BAA2B,YAAW,WAAW;aAI1C,MAAM,EAAE,UAAU;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkE;gBAGzE,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG;IAKd,IAAW,OAAO,eAEjB;IAEY,gBAAgB;IAKhB,kBAAkB;IAIxB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlC,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IASzD,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAInF,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW;IAOtC,8BAA8B,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IASpG,eAAe,CAC1B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;QACT,OAAO,EAAE,kBAAkB,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CAYH"}
|
|
@@ -47,10 +47,15 @@ export class GovernanceProposerContract {
|
|
|
47
47
|
]);
|
|
48
48
|
}
|
|
49
49
|
async getRoundInfo(rollupAddress, round) {
|
|
50
|
-
|
|
50
|
+
const roundInfo = await this.proposer.read.rounds([
|
|
51
51
|
rollupAddress,
|
|
52
52
|
round
|
|
53
53
|
]);
|
|
54
|
+
return {
|
|
55
|
+
lastVote: roundInfo[0],
|
|
56
|
+
leader: roundInfo[1],
|
|
57
|
+
executed: roundInfo[2]
|
|
58
|
+
};
|
|
54
59
|
}
|
|
55
60
|
getProposalVotes(rollupAddress, round, proposal) {
|
|
56
61
|
return this.proposer.read.yeaCount([
|
|
@@ -2,10 +2,9 @@ import type { Logger } from '@aztec/foundation/log';
|
|
|
2
2
|
import { type Hex } from 'viem';
|
|
3
3
|
import type { L1BlobInputs, L1GasConfig, L1TxRequest, L1TxUtils } from '../l1_tx_utils.js';
|
|
4
4
|
import type { ExtendedViemWalletClient } from '../types.js';
|
|
5
|
-
import { FormattedViemError } from '../utils.js';
|
|
6
5
|
export declare const MULTI_CALL_3_ADDRESS: "0xcA11bde05977b3631167028862bE2a173976CA11";
|
|
7
6
|
export declare class Multicall3 {
|
|
8
|
-
static forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1GasConfig | undefined, blobConfig: L1BlobInputs | undefined, rollupAddress: Hex, logger: Logger): Promise<
|
|
7
|
+
static forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1GasConfig | undefined, blobConfig: L1BlobInputs | undefined, rollupAddress: Hex, logger: Logger): Promise<{
|
|
9
8
|
receipt: import("viem").TransactionReceipt;
|
|
10
9
|
gasPrice: import("../l1_tx_utils.js").GasPrice;
|
|
11
10
|
stats: import("../l1_tx_utils.js").TransactionStats | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../src/contracts/multicall.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAqC,KAAK,GAAG,EAAqC,MAAM,MAAM,CAAC;AAEtG,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../src/contracts/multicall.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAqC,KAAK,GAAG,EAAqC,MAAM,MAAM,CAAC;AAEtG,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG5D,eAAO,MAAM,oBAAoB,EAAG,4CAAqD,CAAC;AAE1F,qBAAa,UAAU;WACR,OAAO,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,UAAU,EAAE,YAAY,GAAG,SAAS,EACpC,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,MAAM;;;;;;;;;;;CAyEjB;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,iBAyBxF"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { toHex as toPaddedHex } from '@aztec/foundation/bigint-buffer';
|
|
2
2
|
import { encodeFunctionData, multicall3Abi } from 'viem';
|
|
3
|
-
import { FormattedViemError, formatViemError } from '../utils.js';
|
|
4
3
|
import { RollupContract } from './rollup.js';
|
|
5
4
|
export const MULTI_CALL_3_ADDRESS = '0xcA11bde05977b3631167028862bE2a173976CA11';
|
|
6
5
|
export class Multicall3 {
|
|
@@ -19,87 +18,57 @@ export class Multicall3 {
|
|
|
19
18
|
]
|
|
20
19
|
};
|
|
21
20
|
const encodedForwarderData = encodeFunctionData(forwarderFunctionData);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
errorMsg = 'maxFeePerBlobGas is required to get the error message';
|
|
47
|
-
} else {
|
|
48
|
-
logger.debug('Trying to get error from reverted tx with blob config');
|
|
49
|
-
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, {
|
|
50
|
-
blobs: blobConfig.blobs,
|
|
51
|
-
kzg: blobConfig.kzg,
|
|
52
|
-
maxFeePerBlobGas
|
|
53
|
-
}, [
|
|
54
|
-
{
|
|
55
|
-
address: rollupAddress,
|
|
56
|
-
stateDiff: [
|
|
57
|
-
{
|
|
58
|
-
slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
|
|
59
|
-
value: toPaddedHex(0n, true)
|
|
60
|
-
}
|
|
61
|
-
]
|
|
62
|
-
}
|
|
63
|
-
]);
|
|
64
|
-
}
|
|
21
|
+
const { receipt, gasPrice } = await l1TxUtils.sendAndMonitorTransaction({
|
|
22
|
+
to: MULTI_CALL_3_ADDRESS,
|
|
23
|
+
data: encodedForwarderData
|
|
24
|
+
}, gasConfig, blobConfig);
|
|
25
|
+
if (receipt.status === 'success') {
|
|
26
|
+
const stats = await l1TxUtils.getTransactionStats(receipt.transactionHash);
|
|
27
|
+
return {
|
|
28
|
+
receipt,
|
|
29
|
+
gasPrice,
|
|
30
|
+
stats
|
|
31
|
+
};
|
|
32
|
+
} else {
|
|
33
|
+
logger.error('Forwarder transaction failed', undefined, {
|
|
34
|
+
receipt
|
|
35
|
+
});
|
|
36
|
+
const args = {
|
|
37
|
+
...forwarderFunctionData,
|
|
38
|
+
address: MULTI_CALL_3_ADDRESS
|
|
39
|
+
};
|
|
40
|
+
let errorMsg;
|
|
41
|
+
if (blobConfig) {
|
|
42
|
+
const maxFeePerBlobGas = blobConfig.maxFeePerBlobGas ?? gasPrice.maxFeePerBlobGas;
|
|
43
|
+
if (maxFeePerBlobGas === undefined) {
|
|
44
|
+
errorMsg = 'maxFeePerBlobGas is required to get the error message';
|
|
65
45
|
} else {
|
|
66
|
-
logger.debug('Trying to get error from reverted tx
|
|
67
|
-
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
address: rollupAddress,
|
|
83
|
-
stateDiff: [
|
|
84
|
-
{
|
|
85
|
-
slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
|
|
86
|
-
value: toPaddedHex(0n, true)
|
|
87
|
-
}
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
]).catch((err)=>formatViemError(err, request.abi));
|
|
91
|
-
if (result instanceof FormattedViemError) {
|
|
92
|
-
logger.error('Found error in simulation', result, {
|
|
93
|
-
to: request.to ?? 'null',
|
|
94
|
-
data: request.data
|
|
95
|
-
});
|
|
96
|
-
return result;
|
|
46
|
+
logger.debug('Trying to get error from reverted tx with blob config');
|
|
47
|
+
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, {
|
|
48
|
+
blobs: blobConfig.blobs,
|
|
49
|
+
kzg: blobConfig.kzg,
|
|
50
|
+
maxFeePerBlobGas
|
|
51
|
+
}, [
|
|
52
|
+
{
|
|
53
|
+
address: rollupAddress,
|
|
54
|
+
stateDiff: [
|
|
55
|
+
{
|
|
56
|
+
slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
|
|
57
|
+
value: toPaddedHex(0n, true)
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
]);
|
|
97
62
|
}
|
|
63
|
+
} else {
|
|
64
|
+
logger.debug('Trying to get error from reverted tx without blob config');
|
|
65
|
+
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, undefined, []);
|
|
98
66
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
67
|
+
return {
|
|
68
|
+
receipt,
|
|
69
|
+
gasPrice,
|
|
70
|
+
errorMsg
|
|
71
|
+
};
|
|
103
72
|
}
|
|
104
73
|
}
|
|
105
74
|
}
|
|
@@ -12,10 +12,6 @@ export type ViemCommitteeAttestation = {
|
|
|
12
12
|
addr: `0x${string}`;
|
|
13
13
|
signature: ViemSignature;
|
|
14
14
|
};
|
|
15
|
-
export type ViemCommitteeAttestations = {
|
|
16
|
-
signatureIndices: `0x${string}`;
|
|
17
|
-
signaturesOrAddresses: `0x${string}`;
|
|
18
|
-
};
|
|
19
15
|
export type L1RollupContractAddresses = Pick<L1ContractAddresses, 'rollupAddress' | 'inboxAddress' | 'outboxAddress' | 'feeJuicePortalAddress' | 'feeJuiceAddress' | 'stakingAssetAddress' | 'rewardDistributorAddress' | 'slashFactoryAddress' | 'gseAddress'>;
|
|
20
16
|
export type EpochProofPublicInputArgs = {
|
|
21
17
|
previousArchive: `0x${string}`;
|
|
@@ -114,7 +110,7 @@ export declare class RollupContract {
|
|
|
114
110
|
getEpochProofPublicInputs(args: readonly [bigint, bigint, EpochProofPublicInputArgs, readonly `0x${string}`[], `0x${string}`]): Promise<readonly `0x${string}`[]>;
|
|
115
111
|
validateHeader(args: readonly [
|
|
116
112
|
ViemHeader,
|
|
117
|
-
|
|
113
|
+
ViemCommitteeAttestation[],
|
|
118
114
|
`0x${string}`,
|
|
119
115
|
`0x${string}`,
|
|
120
116
|
{
|
|
@@ -122,13 +118,6 @@ export declare class RollupContract {
|
|
|
122
118
|
ignoreSignatures: boolean;
|
|
123
119
|
}
|
|
124
120
|
], account: `0x${string}` | Account): Promise<void>;
|
|
125
|
-
/**
|
|
126
|
-
* Packs an array of committee attestations into the format expected by the Solidity contract
|
|
127
|
-
*
|
|
128
|
-
* @param attestations - Array of committee attestations with addresses and signatures
|
|
129
|
-
* @returns Packed attestations with bitmap and tightly packed signature/address data
|
|
130
|
-
*/
|
|
131
|
-
static packAttestations(attestations: ViemCommitteeAttestation[]): ViemCommitteeAttestations;
|
|
132
121
|
/**
|
|
133
122
|
* @notice Calls `canProposeAtTime` with the time of the next Ethereum block and the sender address
|
|
134
123
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI1D,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,GAAG,EAA+C,MAAM,MAAM,CAAC;AAGvH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG
|
|
1
|
+
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"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"}
|
package/dest/contracts/rollup.js
CHANGED
|
@@ -267,64 +267,6 @@ export class RollupContract {
|
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
269
|
/**
|
|
270
|
-
* Packs an array of committee attestations into the format expected by the Solidity contract
|
|
271
|
-
*
|
|
272
|
-
* @param attestations - Array of committee attestations with addresses and signatures
|
|
273
|
-
* @returns Packed attestations with bitmap and tightly packed signature/address data
|
|
274
|
-
*/ static packAttestations(attestations) {
|
|
275
|
-
const length = attestations.length;
|
|
276
|
-
// Calculate bitmap size (1 bit per attestation, rounded up to nearest byte)
|
|
277
|
-
const bitmapSize = Math.ceil(length / 8);
|
|
278
|
-
const signatureIndices = new Uint8Array(bitmapSize);
|
|
279
|
-
// Calculate total data size needed
|
|
280
|
-
let totalDataSize = 0;
|
|
281
|
-
for(let i = 0; i < length; i++){
|
|
282
|
-
const signature = attestations[i].signature;
|
|
283
|
-
// Check if signature is empty (v = 0)
|
|
284
|
-
const isEmpty = signature.v === 0;
|
|
285
|
-
if (!isEmpty) {
|
|
286
|
-
totalDataSize += 65; // v (1) + r (32) + s (32)
|
|
287
|
-
} else {
|
|
288
|
-
totalDataSize += 20; // address only
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
const signaturesOrAddresses = new Uint8Array(totalDataSize);
|
|
292
|
-
let dataIndex = 0;
|
|
293
|
-
// Pack the data
|
|
294
|
-
for(let i = 0; i < length; i++){
|
|
295
|
-
const attestation = attestations[i];
|
|
296
|
-
const signature = attestation.signature;
|
|
297
|
-
// Check if signature is empty
|
|
298
|
-
const isEmpty = signature.v === 0;
|
|
299
|
-
if (!isEmpty) {
|
|
300
|
-
// Set bit in bitmap (bit 7-0 in each byte, left to right)
|
|
301
|
-
const byteIndex = Math.floor(i / 8);
|
|
302
|
-
const bitIndex = 7 - i % 8;
|
|
303
|
-
signatureIndices[byteIndex] |= 1 << bitIndex;
|
|
304
|
-
// Pack signature: v + r + s
|
|
305
|
-
signaturesOrAddresses[dataIndex] = signature.v;
|
|
306
|
-
dataIndex++;
|
|
307
|
-
// Pack r (32 bytes)
|
|
308
|
-
const rBytes = Buffer.from(signature.r.slice(2), 'hex');
|
|
309
|
-
signaturesOrAddresses.set(rBytes, dataIndex);
|
|
310
|
-
dataIndex += 32;
|
|
311
|
-
// Pack s (32 bytes)
|
|
312
|
-
const sBytes = Buffer.from(signature.s.slice(2), 'hex');
|
|
313
|
-
signaturesOrAddresses.set(sBytes, dataIndex);
|
|
314
|
-
dataIndex += 32;
|
|
315
|
-
} else {
|
|
316
|
-
// Pack address only (20 bytes)
|
|
317
|
-
const addrBytes = Buffer.from(attestation.addr.slice(2), 'hex');
|
|
318
|
-
signaturesOrAddresses.set(addrBytes, dataIndex);
|
|
319
|
-
dataIndex += 20;
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
return {
|
|
323
|
-
signatureIndices: `0x${Buffer.from(signatureIndices).toString('hex')}`,
|
|
324
|
-
signaturesOrAddresses: `0x${Buffer.from(signaturesOrAddresses).toString('hex')}`
|
|
325
|
-
};
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
270
|
* @notice Calls `canProposeAtTime` with the time of the next Ethereum block and the sender address
|
|
329
271
|
*
|
|
330
272
|
* @dev Throws if unable to propose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slashing_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/slashing_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAGL,KAAK,GAAG,EAGT,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,KAAK,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AAE1G,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,KAAK,EAAE,MAAM;CAG1B;AAED,qBAAa,wBAAyB,SAAQ,YAAa,YAAW,WAAW;aAI7D,MAAM,EAAE,UAAU;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgE;gBAGvE,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG;IAMd,IAAW,OAAO,eAEjB;IAEM,aAAa;IAIb,YAAY;IAIZ,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlC,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"slashing_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/slashing_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAGL,KAAK,GAAG,EAGT,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,KAAK,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AAE1G,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,KAAK,EAAE,MAAM;CAG1B;AAED,qBAAa,wBAAyB,SAAQ,YAAa,YAAW,WAAW;aAI7D,MAAM,EAAE,UAAU;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgE;gBAGvE,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG;IAMd,IAAW,OAAO,eAEjB;IAEM,aAAa;IAIb,YAAY;IAIZ,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlC,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IASzD,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAInF,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW;IAOtC,8BAA8B,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAS1G,2BAA2B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO;IAiBnG,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO;IAgBhG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,GAAE,MAAU;IAYxD,YAAY,CACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,UAAU,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC;CA+CxD"}
|
|
@@ -41,10 +41,15 @@ export class SlashingProposerContract extends EventEmitter {
|
|
|
41
41
|
]);
|
|
42
42
|
}
|
|
43
43
|
async getRoundInfo(rollupAddress, round) {
|
|
44
|
-
|
|
44
|
+
const roundInfo = await this.proposer.read.rounds([
|
|
45
45
|
rollupAddress,
|
|
46
46
|
round
|
|
47
47
|
]);
|
|
48
|
+
return {
|
|
49
|
+
lastVote: roundInfo[0],
|
|
50
|
+
leader: roundInfo[1],
|
|
51
|
+
executed: roundInfo[2]
|
|
52
|
+
};
|
|
48
53
|
}
|
|
49
54
|
getProposalVotes(rollupAddress, round, proposal) {
|
|
50
55
|
return this.proposer.read.yeaCount([
|