5/5
## ZK Sync Contract Deployment ZK Sync contract deployment is a little different than Ethereum deployments. Instead of having a blank to address, ZK Sync has a to address that's actually another contract, the Contract Deployer contract. This is the contract we used to send our contract to. We can find the Contract Deployer's address under the "to" field on the Block Explorer, which we can verify by searching for the address in our MetaMask Wallet. The address we found in our MetaMask Wallet is `0x0000000000000000000000000000000000000006`. The Contract Deployer contract is actually written in Solidity, and we can find the code using the block explorer. Here's an example of how to write the code to call the `ContractDeployer` contract: ```python contract_deployer_contract = ContractDeployer.at("0x0000000000000000000000000000000000000006") contract_deployer_contract.create(bytes_salt, bytes_bytecodeHash, bytes_input) ``` The code above shows the necessary parameters to call the `ContractDeployer` contract's `create` function, and the `bytes_salt`, `bytes_bytecodeHash` and `bytes_input` parameters are ones that we would have to convert our Vyper code to. The `ContractDeployer` contract will handle this conversion for us, under the hood.
ZK Sync contract deployment is a little different than Ethereum deployments. Instead of having a blank to address, ZK Sync has a to address that's actually another contract, the Contract Deployer contract. This is the contract we used to send our contract to.
We can find the Contract Deployer's address under the "to" field on the Block Explorer, which we can verify by searching for the address in our MetaMask Wallet.
The address we found in our MetaMask Wallet is 0x0000000000000000000000000000000000000006
.
The Contract Deployer contract is actually written in Solidity, and we can find the code using the block explorer.
Here's an example of how to write the code to call the ContractDeployer
contract:
The code above shows the necessary parameters to call the ContractDeployer
contract's create
function, and the bytes_salt
, bytes_bytecodeHash
and bytes_input
parameters are ones that we would have to convert our Vyper code to. The ContractDeployer
contract will handle this conversion for us, under the hood.
A comprehensive guide to understanding ZkSync smart contract deployment - This lesson explains how ZkSync deployment differs from standard Ethereum deployment, highlighting the role of the ContractDeployer contract and the unique way ZkSync handles contract creation through function calls.
Previous lesson
Previous
Next lesson
Next
Give us feedback
Course Overview
About the course
Python basics
Introduction to Web3.py
Introduction to Titanoboa
Introduction to Moccasin
How to create an ERC-20
How to test Python code and Vyper smart contract
How to deploy Vyper smart contracts on ZKsync using Moccasin
Smart Contract Auditor
$100,000 - $200,000 (avg. salary)
On-chain Data Analyst
$59,000 - $139,000 (avg. salary)
DeFi Developer
$75,000 - $200,000 (avg. salary)
Smart Contract Engineer
$100,000 - $150,000 (avg. salary)
Web3 developer
$60,000 - $150,000 (avg. salary)
Web3 Developer Relations
$85,000 - $125,000 (avg. salary)
Last updated on June 10, 2025
Duration: 2h 20min
Duration: 1h 51min
Duration: 58min
Duration: 2h 23min
Duration: 53min
Duration: 2h 24min
Duration: 28min
Duration: 1h 54min
Duration: 11min
Course Overview
About the course
Python basics
Introduction to Web3.py
Introduction to Titanoboa
Introduction to Moccasin
How to create an ERC-20
How to test Python code and Vyper smart contract
How to deploy Vyper smart contracts on ZKsync using Moccasin
Smart Contract Auditor
$100,000 - $200,000 (avg. salary)
On-chain Data Analyst
$59,000 - $139,000 (avg. salary)
DeFi Developer
$75,000 - $200,000 (avg. salary)
Smart Contract Engineer
$100,000 - $150,000 (avg. salary)
Web3 developer
$60,000 - $150,000 (avg. salary)
Web3 Developer Relations
$85,000 - $125,000 (avg. salary)
Last updated on June 10, 2025