-
Notifications
You must be signed in to change notification settings - Fork 361
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: zksync support #4725
base: main
Are you sure you want to change the base?
feat: zksync support #4725
Conversation
…txfusion/sending-messages
…perlane core deploy` command
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
some quick comments from first glance
export const HookTypeToContractNameMap: Record< | ||
Exclude<HookType, HookType.CUSTOM>, | ||
string | ||
> = { | ||
[HookType.MERKLE_TREE]: 'merkleTreeHook', | ||
[HookType.INTERCHAIN_GAS_PAYMASTER]: 'interchainGasPaymaster', | ||
[HookType.AGGREGATION]: 'staticAggregationHook', | ||
[HookType.PROTOCOL_FEE]: 'protocolFee', | ||
[HookType.OP_STACK]: 'opStackHook', | ||
[HookType.ROUTING]: 'domainRoutingHook', | ||
[HookType.FALLBACK_ROUTING]: 'fallbackDomainRoutingHook', | ||
[HookType.PAUSABLE]: 'pausableHook', | ||
[HookType.ARB_L2_TO_L1]: 'arbL2ToL1Hook', | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thank you so much - this has been on my wishlist for so long and it's great to have it fixed finally
): Promise<any> { | ||
const { apiUrl, family } = this.multiProvider.getExplorerApi(chain); | ||
|
||
const url = new URL(apiUrl); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see we're not switching on the explorer type anymore here, has this verifier been tested against the zksync instance of blockscout? https://zksync.blockscout.com/
would be good to check against zksync etherscan too https://era.zksync.network/
@@ -415,6 +420,7 @@ export class EvmIsmModule extends HyperlaneModule< | |||
factory: new TrustedRelayerIsm__factory(), | |||
contractName: IsmType.TRUSTED_RELAYER, | |||
constructorArgs: [this.args.addresses.mailbox, config.relayer], | |||
implementationAddress: undefined, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: omit if undefined
// TODO: handle logging part | ||
protected async deployStorageMessageIdMultisigIsm({ | ||
config, | ||
logger, | ||
}: { | ||
config: MultisigIsmConfig; | ||
logger: Logger; | ||
}): Promise<IMultisigIsm> { | ||
const signer = this.multiProvider.getSigner(this.chain); | ||
|
||
const contract = await this.deployer.deployContractFromFactory({ | ||
chain: this.chain, | ||
factory: new StorageMessageIdMultisigIsm__factory(), | ||
contractName: IsmType.STORAGE_MESSAGE_ID_MULTISIG, | ||
constructorArgs: [config.validators, config.threshold], | ||
}); | ||
return IMultisigIsm__factory.connect(contract.address, signer); | ||
} | ||
|
||
// TODO: handle logging part | ||
protected async deployStorageMultisigIsm({ | ||
config, | ||
logger, | ||
}: { | ||
config: MultisigIsmConfig; | ||
logger: Logger; | ||
}): Promise<IMultisigIsm> { | ||
const signer = this.multiProvider.getSigner(this.chain); | ||
|
||
const contract = await this.deployer.deployContractFromFactory({ | ||
chain: this.chain, | ||
factory: new StorageMerkleRootMultisigIsm__factory(), | ||
contractName: IsmType.STORAGE_MERKLE_ROOT_MULTISIG, | ||
constructorArgs: [config.validators, config.threshold], | ||
}); | ||
return IMultisigIsm__factory.connect(contract.address, signer); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd combine these two into a single deployStorageMultisigIsm
fn, similar to what the deployMultisigIsm
function does below
Description
This PR introduces a series of changes aimed at enhancing zkSync support within the codebase. Key updates include the addition of the zksolc compiler for zkSync, integration of contract artifacts, CLI automation for core deployment, and compatibility adjustments in tests for the zkSync environment. It also includes improvements in contract verification on zkSync explorer and handling gas limits for zkSync deployments.
Drive-by changes
Related issues
No related issue
Backward compatibility
Yes
Testing
Manual testing and some automated tests were performed, including end-to-end tests on zkSync for warp read and apply functionalities.