Contracts of official protocol contracts deployed by the core ZetaChain team.
The protocol contracts codebase is separated into two sections:
zevm
: contracts deployed on ZetaChainevm
: contracts deployed on EVM connected chains (Ethereum, Base, etc..)
ZEVM Contracts
GatewayZEVM
: entrypoints for interaction. The users call the gateway contract to initiate cctx. The gateway contract is also the contract calling the target when a smart contract call is initiated on a connected chainZRC20
: is a ERC20 compliant contract that represents fungible assets from connected chainsWZETA
: wrapped ZETA (fork of WETH)
EVM Contracts
GatewayEVM
: similar to GatewayZEVM for connected chains. Entrypoint for users.ERC20Custody
: hold ERC20 assets being sent to ZetaChainZetaConnector
: manage ZETA for connected chains. There are two version of the contract:- Native: when the ZETA tokens are native to the chain (ZETA where initially deployed as a ERC20 on Ethereum, not emitted fully on ZetaChain). Use lock/unlock model.
- Non-Native: when ZETA tokens where never native to the chains but withdrawn from ZetaChain. Use mint/burn model.
- TSS (EOA): Threshold-signature-scheme wallet, this address holds the gas token sent to ZetaChain (like Ethers)
Learn more about the Gateway contracts
Install dependencies
$ yarn
$ forge soldeer update
Build
$ forge build
Test
$ forge test
Format
$ forge fmt
Deploy
$ forge script script/<DeployScript>.s.sol:<DeployScript> --rpc-url <your_rpc_url> --private-key <your_private_key>
To view detailed instructions on how to deploy the contracts, please refer to the Deployment Guide.
This guide covers all steps required to deploy the contracts, including environment setup, commands, and best practices.