2 unstable releases
new 0.5.0 | Nov 18, 2024 |
---|---|
0.1.0 | Oct 8, 2024 |
#330 in Magic Beans
24 downloads per month
125KB
2.5K
SLoC
alloy-zksync
This crate provides implementation of the ZKsync network support for the alloy ecosystem.
[!WARNING]
This crate is under heavy development and is not suitable for production use. For now, it's being maintained as a personal pet project and not something maintained by Matter Labs.Functionality is lacking. Tests are lacking. PRs are appreciated.
Overview
The main part of this crate is Zksync
network
implementation, which makes it possible to use all of the alloy
functionality in L1-compatible way.
Where possible, all the technicalities (including, for example, signing EIP712 transactions) are hidden under the hood, so that interfaces remain unchanged. In some cases, it means that some magic happens under the hood (one example is that user doesn't have to manually specify the contract deployer address in deploy transactions).
Where existing interfaces cannot be used (for example, adding factory dependencies to deployment, or specifying
paymaster parameters),
the functionality is added in a way that is aligned with overall alloy
design, either as methods on the types
specific to the Zksync
network, or via extension traits (in case of Provider
, for example).
Similarly to anvil
bindings, alloy-zksync
provides bindings for
era-test-node.
For usage, the best reference currently is examples:
Progress
- It compiles
- Bindings for test node
- Zksync network definition
- Example of sending tx to era test node via era binding
- Eip712 tx (works partially)
- [in progress] API extensions (
zks
namespace) - L1->L2 txs (deposits)
- L2->L1 txs (withdrawals)
- Fillers
- Mirrored crate structure
- Mirrored features from upstream crates (e.g. serde)
- Comprehensive documentation
Acknowledgements
Parts of the codebase for this repository were based on the zksync-web3-rs crate by LambdaClass, as well as alloy codebase.
License
alloy-zksync is distributed under the terms of either
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/blog/license/mit/)
at your option.
Dependencies
~20–32MB
~566K SLoC