Skip to content

feat: add gasevm (Neo X) EVM chain support#368

Open
imkushagra12-bitgo wants to merge 1 commit into
masterfrom
feat/gasevm-contract-deployment
Open

feat: add gasevm (Neo X) EVM chain support#368
imkushagra12-bitgo wants to merge 1 commit into
masterfrom
feat/gasevm-contract-deployment

Conversation

@imkushagra12-bitgo

Copy link
Copy Markdown
Contributor

Summary

Adds Neo X (gasevm) EVM chain support to eth-multisig-v4 and deploys V4 wallet + Batcher contracts on testnet.

Changes

  • config/chainIds.ts — Added GASEVM (47763) and GASEVM_TESTNET (12227332)
  • scripts/chainConfig.ts — Gas config for gasevm (EIP-1559, maxFeePerGas: 50 Gwei, maxPriorityFeePerGas: 20 Gwei, gasLimit: 3_000_000). Neo X requires minGasTipCap of 20 Gwei.
  • hardhat.config.ts — Network entries, apiKey, and customChains for explorer verification
  • config/batcherDeployGasConfig.ts — manual-gas strategy with minPriorityFeeGwei: 20 for Neo X
  • deployUtils.ts — CHAIN_VERIFICATION_OVERRIDES: maxRetries: 0 (manual verification via Blockscout API)
  • .github/workflows/deploy_and_release.yml — Added gasevm/tgasevm to tag regex and deploy conditions
  • .github/workflows/deploy_batcher_contract.yml — Added gasevm/tgasevm to tag regex and deploy conditions

Deployed Addresses (Testnet: tgasevm, chainId: 12227332)

Contract Address
WalletSimple 0x6fd2b4c6dd1150fce228d02785cbf69f811b7e76
WalletFactory 0x654C828882eBb78F191129CD04C90635bB85258C
ForwarderV4 0xca07f6C84a787b38299c61c865ca526fF88f69bA
ForwarderFactoryV4 0xcA5944d45B5EA52a8bC50D011DcF6398327d66e9
Batcher 0x93a2299BcC9A55a886D74eE3447C787f38c3d988

Explorer

Testnet: https://neoxt4scan.ngd.network

Notes

  • Neo X requires a minimum gas tip (minGasTipCap) of 20 Gwei — both baseFee and priority fee must be ≥ 20 Gwei
  • Blockscout explorer uses a non-standard API port (8877); verification was performed manually via the Blockscout API
  • Batcher is Exact Match verified; WalletSimple, WalletFactory, ForwarderV4, ForwarderFactoryV4 are Partial Match (bytecode confirmed)

Ticket: CECHO-1465

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Neo X (gasevm) EVM chain support across deployment tooling so the V4 wallet + Batcher contracts can be deployed/verified and CI workflows can recognize gasevm/tgasevm release tags.

Changes:

  • Added GASEVM / GASEVM_TESTNET chain IDs and wired them into chain-specific gas configuration.
  • Added Hardhat network + explorer verification configuration entries for gasevm/tgasevm.
  • Updated deploy workflows to recognize gasevm / tgasevm tags and allow deploy jobs to run for those networks.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
scripts/chainConfig.ts Adds Neo X chain cases with explicit EIP-1559 gas params.
hardhat.config.ts Adds gasevm networks + explorer customChains and adjusts Sourcify config.
deployUtils.ts Adds Neo X verification overrides (confirmation blocks / retry behavior).
config/chainIds.ts Introduces GASEVM and GASEVM_TESTNET chain IDs.
config/batcherDeployGasConfig.ts Adds Neo X “manual-gas” strategy with minimum priority fee.
.github/workflows/deploy_batcher_contract.yml Extends tag parsing + deploy gating to include gasevm/tgasevm.
.github/workflows/deploy_and_release.yml Extends tag parsing + deploy gating to include gasevm/tgasevm.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread hardhat.config.ts Outdated
Comment on lines +1078 to +1080
sourcify: {
enabled: true
},
Comment thread deployUtils.ts
Comment on lines +21 to +24
[CHAIN_IDS.HOODETH]: { confirmationBlocks: 2, maxRetries: 2 },
// Neo X: Blockscout explorer does not support Etherscan-compatible verification API
[CHAIN_IDS.GASEVM]: { confirmationBlocks: 5, maxRetries: 0 },
[CHAIN_IDS.GASEVM_TESTNET]: { confirmationBlocks: 5, maxRetries: 0 }

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Comment thread deployUtils.ts Outdated
> = {
[CHAIN_IDS.HOODETH]: { confirmationBlocks: 2, maxRetries: 2 }
[CHAIN_IDS.HOODETH]: { confirmationBlocks: 2, maxRetries: 2 },
// Neo X: Blockscout explorer does not support Etherscan-compatible verification API
Comment thread hardhat.config.ts
Comment on lines 2156 to 2158
sourcify: {
enabled: false
enabled: true
},

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Comment thread hardhat.config.ts
Comment on lines +2139 to +2144
network: 'gasevmTestnet',
chainId: CHAIN_IDS.GASEVM_TESTNET,
urls: {
apiURL: 'https://xt4scan.ngd.network:8877/api',
browserURL: 'https://neoxt4scan.ngd.network'
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The different subdomain is intentional — xt4scan.ngd.network:8877 is the verified API endpoint for the Neo X testnet Blockscout instance.

Comment thread deployUtils.ts
Comment on lines +495 to +500
// maxRetries: 0 means verification is intentionally disabled for this chain
if (maxRetries === 0) {
logger.warn(
`Auto-verification disabled for ${contractName} on this chain. Please verify manually.`
);
return;

@manojkumar138 manojkumar138 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LG

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants