BaseDeployer
Deploys smart contracts and accounts
The BaseDeployer facilitates the deployment of smart contracts and smart accounts on the ZKsync Era network. It
provides methods to deploy contracts using both the CREATE and CREATE2 methods, ensuring flexibility and security in
contract deployment.
Init
Creates an instance of BaseDeployer based on provided AdapterL2.
func NewBaseDeployer(adapter *AdapterL2) *BaseDeployer
Deploy
Deploys smart contract using CREATE2 method.
Inputs
| Parameter | Type | Description | 
|---|---|---|
| auth | *TransactOpts(optional) | Transaction options. | 
| tx | Create2Transaction | CREATE2 transaction parameters. | 
Deploy(auth *TransactOpts, tx Create2Transaction) (common.Hash, error)
Example
bytecode, err := os.ReadFile("Storage.zbin")
if err != nil {
 log.Panic(err)
}
//Deploy smart contract
hash, err := wallet.Deploy(nil, accounts.Create2Transaction{Bytecode: bytecode})
if err != nil {
 panic(err)
}
fmt.Println("Transaction: ", hash)
DeployAccount
Deploys smart account using CREATE2 method.
Inputs
| Parameter | Type | Description | 
|---|---|---|
| auth | *TransactOpts(optional) | Transaction options. | 
| tx | Create2Transaction | CREATE2 transaction parameters. | 
DeployAccount(auth *TransactOpts, tx Create2Transaction) (common.Hash, error)
Example
# Crown token on testnet
TokenAddress := common.HexToAddress("0x927488F48ffbc32112F1fF721759649A89721F8F")
_, paymasterAbi, bytecode, err := utils.ReadStandardJson("Paymaster.json")
if err != nil {
 log.Panic(err)
}
// Encode paymaster constructor
constructor, err := paymasterAbi.Pack("", common.HexToAddress(TokenAddress))
if err != nil {
 log.Panic(err)
}
// Deploy paymaster contract
hash, err := wallet.DeployAccount(nil, accounts.Create2Transaction{Bytecode: bytecode, Calldata: constructor})
if err != nil {
 log.Panic(err)
}
if err != nil {
 log.Panic(err)
}
fmt.Println("Transaction: ", hash)
DeployAccountWithCreate
Deploys smart account using CREATE method.
Inputs
| Parameter | Type | Description | 
|---|---|---|
| auth | *TransactOpts(optional) | Transaction options. | 
| tx | CreateTransaction | CREATE transaction parameters. | 
DeployAccountWithCreate(auth *TransactOpts, tx CreateTransaction) (common.Hash, error)
Example
# Crown token on testnet
TokenAddress := common.HexToAddress("0x927488F48ffbc32112F1fF721759649A89721F8F")
_, paymasterAbi, bytecode, err := utils.ReadStandardJson("Paymaster.json")
if err != nil {
 log.Panic(err)
}
constructor, err := paymasterAbi.Pack("", common.HexToAddress(TokenAddress))
if err != nil {
 log.Panic(err)
}
// Deploy paymaster contract
hash, err := wallet.DeployAccountWithCreate(nil, accounts.CreateTransaction{
 Bytecode: bytecode,
 Calldata: constructor,
})
if err != nil {
 log.Panic(err)
}
fmt.Println("Transaction: ", hash)
DeployWithCreate
Deploys smart contract using CREATE method.
Inputs
| Parameter | Type | Description | 
|---|---|---|
| auth | *TransactOpts(optional) | Transaction options. | 
| tx | CreateTransaction | CREATE transaction parameters. | 
DeployWithCreate(auth *TransactOpts, tx CreateTransaction) (common.Hash, error)
Example
bytecode, err := os.ReadFile("Storage.zbin")
if err != nil {
 log.Panic(err)
}
//Deploy smart contract
hash, err := wallet.DeployWithCreate(nil, accounts.CreateTransaction{Bytecode: bytecode})
if err != nil {
 panic(err)
}
fmt.Println("Transaction: ", hash)