Comments (3)
Actually... digging into this more. Seems like the issue goes a bit deeper than I thought. The way this repo compiles the contracts is... a bit odd.
Why?
We have javascript magic like this:
uint160 constant SYSTEM_CONTRACTS_OFFSET = {{SYSTEM_CONTRACTS_OFFSET}}; // 2^15
Which it looks like is fixed when we compile with the precompiles, but it prevents our foundry friends from having a good time, and sort of vendor locks people into Hardhat.
The preprocess-system-contracts.ts
seems to do some clever stuff, which is "fine" but it might not be acceptable to use as a package that users use. It might make sense to have a separate repo where users can import the systems contract library so they can mock interacting with the system contracts.
Or, you could have foundry-zksync
deal with processing these contracts.
So... we have a few options:
- Increase the scope of foundry-zksync to handle this
- Split out this repo so there is a repo that mirrors this one but "packagifies" everything so that users can mock interacting with system contracts in their local environments
- Reduce the javascript magic
I'm leaning towards number 2, but not sure how others feel
from era-contracts.
We actually used to have this repo as a mirror of the contracts that can be easily imported. While it is somewhat outdated, we generally ensure backward compatibility, so if the functionality provided by that repo is enough for you, you can use it temporarily. We will soon update it though
from era-contracts.
Still not fixed.
@StanislavBreadless is it still safe to use the repo you mentioned?
from era-contracts.
Related Issues (14)
- L2StandardERC20 not being initialized correctly HOT 4
- proveL2MessageInclusion reverted "xx" code HOT 1
- [Proposal] Custom base token support HOT 9
- Regarding fees HOT 8
- Script Bug Report for SystemContractsCaller.sol HOT 1
- TransactionHelper -> `generateBasicTransaction`
- Add running tests to the `README`
- Introduce memory based `TransactionHelper` HOT 3
- Update to newer version of openzeppelin HOT 2
- Since this repo is intended to be a package, you need a floating point pragma
- Include audits
- Update natspec for `IContractDeployer`
- Interaface abstraction
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from era-contracts.