@aztec/ethereum 2.1.0-rc.9 → 3.0.0-devnet.2
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/client.d.ts +1 -1
- package/dest/client.d.ts.map +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +13 -3
- package/dest/contracts/rollup.d.ts +2 -2
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +9 -6
- package/dest/contracts/tally_slashing_proposer.d.ts +7 -1
- package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/tally_slashing_proposer.js +12 -2
- package/dest/deploy_l1_contracts.d.ts +4 -3
- package/dest/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_l1_contracts.js +241 -205
- package/dest/l1_artifacts.d.ts +730 -192
- package/dest/l1_artifacts.d.ts.map +1 -1
- package/dest/l1_artifacts.js +5 -5
- package/dest/l1_reader.d.ts +1 -1
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +1 -1
- package/dest/test/eth_cheat_codes.d.ts +15 -6
- package/dest/test/eth_cheat_codes.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes.js +17 -9
- package/dest/test/rollup_cheat_codes.d.ts +8 -8
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
- package/dest/test/rollup_cheat_codes.js +36 -4
- package/dest/test/upgrade_utils.d.ts.map +1 -1
- package/dest/test/upgrade_utils.js +2 -1
- package/dest/zkPassportVerifierAddress.js +1 -1
- package/package.json +6 -6
- package/src/client.ts +1 -1
- package/src/config.ts +14 -4
- package/src/contracts/rollup.ts +9 -8
- package/src/contracts/tally_slashing_proposer.ts +12 -3
- package/src/deploy_l1_contracts.ts +221 -152
- package/src/l1_artifacts.ts +6 -6
- package/src/l1_reader.ts +2 -2
- package/src/test/eth_cheat_codes.ts +25 -12
- package/src/test/rollup_cheat_codes.ts +49 -12
- package/src/test/upgrade_utils.ts +2 -1
- package/src/zkPassportVerifierAddress.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/rollup_cheat_codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAGjF,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"rollup_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/rollup_cheat_codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAGjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,GAAG,EAMT,MAAM,MAAM,CAAC;AAGd,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,8CAA8C;AAC9C,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,aAAa;IANvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAA4D;IAE1E,OAAO,CAAC,MAAM,CAAuC;gBAG3C,aAAa,EAAE,aAAa,EACpC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC;IAavD,MAAM,CAAC,MAAM,CACX,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,EACrD,YAAY,EAAE,YAAY,GACzB,gBAAgB;IAKnB,+BAA+B;IAClB,OAAO;IAKpB,gCAAgC;IACnB,QAAQ;IAKrB;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC;QAC9B,4BAA4B,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7C,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC;KAC5C,CAAC;IAQF;;OAEG;IACU,WAAW;IAmBxB,0EAA0E;IAC7D,SAAS,IAAI,OAAO,CAAC;QAChC,qBAAqB,CAAC,aAAa,EAAE,MAAM,CAAC;QAC5C,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC;KAC3C,CAAC;IAQF;;;;OAIG;IACU,cAAc,CACzB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,IAAI,GAAE;QACJ,wBAAwB;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ;IAcR,4CAA4C;IAC/B,kBAAkB;IAa/B,6DAA6D;IAChD,iBAAiB;IAQ9B;;;OAGG;IACU,YAAY,CAAC,OAAO,EAAE,MAAM;IASzC;;;OAGG;IACI,YAAY,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;IAiCtD;;;OAGG;IACI,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqCxE;;;OAGG;IACU,OAAO,CAClB,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAQ1G;;OAEG;IACU,UAAU;IASvB,4CAA4C;IAC/B,oBAAoB;IAQjC;;;OAGG;IACU,sBAAsB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM;IAMtE;;;OAGG;IACU,qBAAqB,CAAC,QAAQ,EAAE,MAAM;CAWpD"}
|
|
@@ -23,8 +23,8 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
23
23
|
client: this.client
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
-
static create(rpcUrls, addresses) {
|
|
27
|
-
const ethCheatCodes = new EthCheatCodes(rpcUrls);
|
|
26
|
+
static create(rpcUrls, addresses, dateProvider) {
|
|
27
|
+
const ethCheatCodes = new EthCheatCodes(rpcUrls, dateProvider);
|
|
28
28
|
return new RollupCheatCodes(ethCheatCodes, addresses);
|
|
29
29
|
}
|
|
30
30
|
/** Returns the current slot */ async getSlot() {
|
|
@@ -99,14 +99,13 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
99
99
|
}
|
|
100
100
|
return timestamp;
|
|
101
101
|
}
|
|
102
|
-
/** Warps time in L1 until the next epoch */ async advanceToNextEpoch(
|
|
102
|
+
/** Warps time in L1 until the next epoch */ async advanceToNextEpoch() {
|
|
103
103
|
const slot = await this.getSlot();
|
|
104
104
|
const { epochDuration, slotDuration } = await this.getConfig();
|
|
105
105
|
const slotsUntilNextEpoch = epochDuration - slot % epochDuration + 1n;
|
|
106
106
|
const timeToNextEpoch = slotsUntilNextEpoch * slotDuration;
|
|
107
107
|
const l1Timestamp = BigInt((await this.client.getBlock()).timestamp);
|
|
108
108
|
await this.ethCheatCodes.warp(Number(l1Timestamp + timeToNextEpoch), {
|
|
109
|
-
...opts,
|
|
110
109
|
silent: true,
|
|
111
110
|
resetBlockInterval: true
|
|
112
111
|
});
|
|
@@ -173,6 +172,39 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
173
172
|
});
|
|
174
173
|
}
|
|
175
174
|
/**
|
|
175
|
+
* Overrides the inProgress field of the Inbox contract state
|
|
176
|
+
* @param howMuch - How many blocks to move it forward
|
|
177
|
+
*/ advanceInboxInProgress(howMuch) {
|
|
178
|
+
return this.ethCheatCodes.execWithPausedAnvil(async ()=>{
|
|
179
|
+
// Storage slot 2 contains the InboxState struct
|
|
180
|
+
const inboxStateSlot = 2n;
|
|
181
|
+
// Get inbox and its current state values
|
|
182
|
+
const inboxAddress = await this.rollup.read.getInbox();
|
|
183
|
+
const currentStateValue = await this.ethCheatCodes.load(EthAddress.fromString(inboxAddress), inboxStateSlot);
|
|
184
|
+
// Extract current values from the packed storage slot
|
|
185
|
+
// Storage layout: rollingHash (128 bits) | totalMessagesInserted (64 bits) | inProgress (64 bits)
|
|
186
|
+
const currentRollingHash = currentStateValue & (1n << 128n) - 1n;
|
|
187
|
+
const currentTotalMessages = currentStateValue >> 128n & (1n << 64n) - 1n;
|
|
188
|
+
const currentInProgress = currentStateValue >> 192n;
|
|
189
|
+
const newInProgress = currentInProgress + BigInt(howMuch);
|
|
190
|
+
// Pack new values: rollingHash (low 128 bits) | totalMessages (middle 64 bits) | inProgress (high 64 bits)
|
|
191
|
+
const newValue = BigInt(newInProgress) << 192n | currentTotalMessages << 128n | currentRollingHash;
|
|
192
|
+
await this.ethCheatCodes.store(EthAddress.fromString(inboxAddress), inboxStateSlot, newValue, {
|
|
193
|
+
silent: true
|
|
194
|
+
});
|
|
195
|
+
this.logger.warn(`Inbox inProgress advanced from ${currentInProgress} to ${newInProgress}`, {
|
|
196
|
+
inbox: inboxAddress,
|
|
197
|
+
oldValue: '0x' + currentStateValue.toString(16),
|
|
198
|
+
newValue: '0x' + newValue.toString(16),
|
|
199
|
+
rollingHash: currentRollingHash,
|
|
200
|
+
totalMessages: currentTotalMessages,
|
|
201
|
+
oldInProgress: currentInProgress,
|
|
202
|
+
newInProgress
|
|
203
|
+
});
|
|
204
|
+
return newInProgress;
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
176
208
|
* Executes an action impersonated as the owner of the Rollup contract.
|
|
177
209
|
* @param action - The action to execute
|
|
178
210
|
*/ async asOwner(action) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade_utils.d.ts","sourceRoot":"","sources":["../../src/test/upgrade_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"upgrade_utils.d.ts","sourceRoot":"","sources":["../../src/test/upgrade_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGlE,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAe,MAAM,MAAM,CAAC;AAGvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG9E,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,qBAAqB,CAAC,OAAO,aAAa,EAAE,gBAAgB,CAAC,EACzE,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,wBAAwB,EAClC,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,iBAmCf;AAED,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,KAAK,MAAM,EAAE,EAC7B,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EAAE,gBAAgB,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IACT,UAAU,EAAE,qBAAqB,CAAC,OAAO,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAyCD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
1
2
|
import { GovernanceAbi } from '@aztec/l1-artifacts/GovernanceAbi';
|
|
2
3
|
import { TestERC20Abi as StakingAssetAbi } from '@aztec/l1-artifacts/TestERC20Abi';
|
|
3
4
|
import { getContract } from 'viem';
|
|
@@ -15,7 +16,7 @@ export async function executeGovernanceProposal(proposalId, governance, voteAmou
|
|
|
15
16
|
value: 1n
|
|
16
17
|
});
|
|
17
18
|
};
|
|
18
|
-
const cheatCodes = new EthCheatCodes(rpcUrls, logger);
|
|
19
|
+
const cheatCodes = new EthCheatCodes(rpcUrls, new DateProvider(), logger);
|
|
19
20
|
const timeToActive = proposal.creation + proposal.config.votingDelay;
|
|
20
21
|
logger.info(`Warping to ${timeToActive + 1n}`);
|
|
21
22
|
await cheatCodes.warp(Number(timeToActive + 1n));
|
|
@@ -2,7 +2,7 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
2
2
|
/**
|
|
3
3
|
* The address of the zk passport verifier on sepolia
|
|
4
4
|
* get address from: ROOT/l1-contracts/lib/circuits/src/solidity/deployments/deployment-11155111.json
|
|
5
|
-
*/ export const ZK_PASSPORT_VERIFIER_ADDRESS = EthAddress.fromString('
|
|
5
|
+
*/ export const ZK_PASSPORT_VERIFIER_ADDRESS = EthAddress.fromString('0x3101Bad9eA5fACadA5554844a1a88F7Fe48D4DE0');
|
|
6
6
|
/**
|
|
7
7
|
* The default domain of the zk passport site
|
|
8
8
|
*/ export const ZK_PASSPORT_DOMAIN = 'testnet.aztec.network';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/ethereum",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-devnet.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -31,16 +31,16 @@
|
|
|
31
31
|
"../package.common.json"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@aztec/blob-lib": "
|
|
35
|
-
"@aztec/constants": "
|
|
36
|
-
"@aztec/foundation": "
|
|
37
|
-
"@aztec/l1-artifacts": "
|
|
34
|
+
"@aztec/blob-lib": "3.0.0-devnet.2",
|
|
35
|
+
"@aztec/constants": "3.0.0-devnet.2",
|
|
36
|
+
"@aztec/foundation": "3.0.0-devnet.2",
|
|
37
|
+
"@aztec/l1-artifacts": "3.0.0-devnet.2",
|
|
38
38
|
"@viem/anvil": "^0.0.10",
|
|
39
39
|
"dotenv": "^16.0.3",
|
|
40
40
|
"lodash.chunk": "^4.2.0",
|
|
41
41
|
"lodash.pickby": "^4.5.0",
|
|
42
42
|
"tslib": "^2.4.0",
|
|
43
|
-
"viem": "2.
|
|
43
|
+
"viem": "npm:@spalladino/viem@2.38.2-eip7594.0",
|
|
44
44
|
"zod": "^3.23.8"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
package/src/client.ts
CHANGED
|
@@ -19,7 +19,7 @@ import { createEthereumChain } from './chain.js';
|
|
|
19
19
|
import type { ExtendedViemWalletClient, ViemPublicClient } from './types.js';
|
|
20
20
|
|
|
21
21
|
type Config = {
|
|
22
|
-
/**
|
|
22
|
+
/** List of URLs of Ethereum RPC nodes that services will connect to (comma separated). */
|
|
23
23
|
l1RpcUrls: string[];
|
|
24
24
|
/** The chain ID of the ethereum host. */
|
|
25
25
|
l1ChainId: number;
|
package/src/config.ts
CHANGED
|
@@ -78,7 +78,7 @@ export const DefaultL1ContractsConfig = {
|
|
|
78
78
|
aztecEpochDuration: 32,
|
|
79
79
|
aztecTargetCommitteeSize: 48,
|
|
80
80
|
lagInEpochs: 2,
|
|
81
|
-
aztecProofSubmissionEpochs: 1, // you have
|
|
81
|
+
aztecProofSubmissionEpochs: 1, // you have a full epoch to submit a proof after the epoch to prove ends
|
|
82
82
|
activationThreshold: 100n * 10n ** 18n,
|
|
83
83
|
ejectionThreshold: 50n * 10n ** 18n,
|
|
84
84
|
localEjectionThreshold: 98n * 10n ** 18n,
|
|
@@ -128,7 +128,7 @@ const StagingPublicGovernanceConfiguration = {
|
|
|
128
128
|
|
|
129
129
|
const TestnetGovernanceConfiguration = {
|
|
130
130
|
proposeConfig: {
|
|
131
|
-
lockDelay:
|
|
131
|
+
lockDelay: 10n * 365n * 24n * 60n * 60n,
|
|
132
132
|
lockAmount: 1250n * 200_000n * 10n ** 18n,
|
|
133
133
|
},
|
|
134
134
|
|
|
@@ -143,7 +143,7 @@ const TestnetGovernanceConfiguration = {
|
|
|
143
143
|
|
|
144
144
|
const StagingIgnitionGovernanceConfiguration = {
|
|
145
145
|
proposeConfig: {
|
|
146
|
-
lockDelay:
|
|
146
|
+
lockDelay: 10n * 365n * 24n * 60n * 60n,
|
|
147
147
|
lockAmount: 1250n * 200_000n * 10n ** 18n,
|
|
148
148
|
},
|
|
149
149
|
|
|
@@ -160,6 +160,10 @@ export const getGovernanceConfiguration = (networkName: NetworkNames) => {
|
|
|
160
160
|
switch (networkName) {
|
|
161
161
|
case 'local':
|
|
162
162
|
return LocalGovernanceConfiguration;
|
|
163
|
+
case 'next-net':
|
|
164
|
+
return LocalGovernanceConfiguration;
|
|
165
|
+
case 'devnet':
|
|
166
|
+
return LocalGovernanceConfiguration;
|
|
163
167
|
case 'staging-public':
|
|
164
168
|
return StagingPublicGovernanceConfiguration;
|
|
165
169
|
case 'testnet':
|
|
@@ -185,6 +189,8 @@ const DefaultRewardConfig = {
|
|
|
185
189
|
export const getRewardConfig = (networkName: NetworkNames) => {
|
|
186
190
|
switch (networkName) {
|
|
187
191
|
case 'local':
|
|
192
|
+
case 'devnet':
|
|
193
|
+
case 'next-net':
|
|
188
194
|
case 'staging-public':
|
|
189
195
|
case 'testnet':
|
|
190
196
|
case 'staging-ignition':
|
|
@@ -212,7 +218,7 @@ const LocalEntryQueueConfig = {
|
|
|
212
218
|
bootstrapFlushSize: 0n,
|
|
213
219
|
normalFlushSizeMin: 48n,
|
|
214
220
|
normalFlushSizeQuotient: 2n,
|
|
215
|
-
maxQueueFlushSize:
|
|
221
|
+
maxQueueFlushSize: 48n,
|
|
216
222
|
};
|
|
217
223
|
|
|
218
224
|
const StagingPublicEntryQueueConfig = {
|
|
@@ -243,6 +249,10 @@ export const getEntryQueueConfig = (networkName: NetworkNames) => {
|
|
|
243
249
|
switch (networkName) {
|
|
244
250
|
case 'local':
|
|
245
251
|
return LocalEntryQueueConfig;
|
|
252
|
+
case 'next-net':
|
|
253
|
+
return LocalEntryQueueConfig;
|
|
254
|
+
case 'devnet':
|
|
255
|
+
return LocalEntryQueueConfig;
|
|
246
256
|
case 'staging-public':
|
|
247
257
|
return StagingPublicEntryQueueConfig;
|
|
248
258
|
case 'testnet':
|
package/src/contracts/rollup.ts
CHANGED
|
@@ -221,6 +221,7 @@ export class RollupContract {
|
|
|
221
221
|
return this.rollup.read.getEjectionThreshold();
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
+
@memoize
|
|
224
225
|
getLocalEjectionThreshold() {
|
|
225
226
|
return this.rollup.read.getLocalEjectionThreshold();
|
|
226
227
|
}
|
|
@@ -440,14 +441,6 @@ export class RollupContract {
|
|
|
440
441
|
return this.rollup.read.getEntryQueueLength();
|
|
441
442
|
}
|
|
442
443
|
|
|
443
|
-
getCurrentEpochNumber(): Promise<bigint> {
|
|
444
|
-
return this.rollup.read.getCurrentEpoch();
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
getEpochNumberForBlock(blockNumber: bigint) {
|
|
448
|
-
return this.rollup.read.getEpochForBlock([BigInt(blockNumber)]);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
444
|
getAvailableValidatorFlushes() {
|
|
452
445
|
return this.rollup.read.getAvailableValidatorFlushes();
|
|
453
446
|
}
|
|
@@ -456,6 +449,14 @@ export class RollupContract {
|
|
|
456
449
|
return this.rollup.read.getNextFlushableEpoch();
|
|
457
450
|
}
|
|
458
451
|
|
|
452
|
+
getCurrentEpochNumber(): Promise<bigint> {
|
|
453
|
+
return this.rollup.read.getCurrentEpoch();
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
getEpochNumberForBlock(blockNumber: bigint) {
|
|
457
|
+
return this.rollup.read.getEpochForBlock([BigInt(blockNumber)]);
|
|
458
|
+
}
|
|
459
|
+
|
|
459
460
|
async getRollupAddresses(): Promise<L1RollupContractAddresses> {
|
|
460
461
|
const [
|
|
461
462
|
inboxAddress,
|
|
@@ -85,11 +85,20 @@ export class TallySlashingProposerContract {
|
|
|
85
85
|
*/
|
|
86
86
|
public async getRound(round: bigint): Promise<{
|
|
87
87
|
isExecuted: boolean;
|
|
88
|
-
readyToExecute: boolean;
|
|
89
88
|
voteCount: bigint;
|
|
90
89
|
}> {
|
|
91
|
-
const [isExecuted,
|
|
92
|
-
return { isExecuted,
|
|
90
|
+
const [isExecuted, voteCount] = await this.contract.read.getRound([round]);
|
|
91
|
+
return { isExecuted, voteCount };
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Check if a round is ready to execute at a given slot
|
|
96
|
+
* @param round - The round number to check
|
|
97
|
+
* @param slot - The slot number to check at
|
|
98
|
+
* @returns Whether the round is ready to execute
|
|
99
|
+
*/
|
|
100
|
+
public async isRoundReadyToExecute(round: bigint, slot: bigint): Promise<boolean> {
|
|
101
|
+
return await this.contract.read.isRoundReadyToExecute([round, slot]);
|
|
93
102
|
}
|
|
94
103
|
|
|
95
104
|
/** Returns the slash actions and payload address for a given round (zero if no slash actions) */
|