Development resources at your finger tips
Build with the coolest Web3 projects
Recurring funding for Open Source
Ethical ads to power Open Source
Learn about Web3 & earn rewards
Show appreciation for each other
Meet fellow developers, designers, futurists and more. Collaborate and BUIDL awesome projects together.
Follow the orgs you like more with tribes and build relationships and meaningful projects.
Meet the top hunters and contributors from our community.
Most people working with Ethereum have questions about ETH2.0. Kevin Owocki hosted some developers working on the project for a recent episode of the…
Sia recently ran the Skynet Hackathon with Gitcoin for Skynet’s launch, leading to over 40 project submissions in a 2 week period. This piece, …
Gitcoin is GDPR complaint. Learn more in
Gitcoin's Terms & Conditions.
Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
IdentityDeployProxy.js: look into ways of generating bytecode w/o solc
### Challenge description:
(for the previous challenge, and previous discussion, see #62)
We use an Identity contract that reprensets each user (similar to multisig contracts, e.g. Gnosis safe); to save gas when deploying an identity for each user, we use delegatecall-based proxies.
The proxy contract bytecode is generated by the following JS: https://github.com/AdExNetwork/adex-protocol-eth/blob/master/js/IdentityProxyDeploy.js, for each user
There are comprehensive tests in `test/TestIdentity` that show how that API is supposed to be used.
However, this JS library uses the full solc, which has some issues:
* shipping full emscripten/solc binaries imposes runtime overhead and more load time
* we ran into crashes/other issues while using solc.js in a web browser environment
* https://github.com/ethereum/solc-js/issues/34 ; it's definitely not fixed, they just fixed it in the binary
* it is an engineering overkill to ship the full solc for compiling a few bits of assembly
* this will be ran server-side and on the front-end, so performance matters
So, the challenge is to rewrite that JS to generate bytecode that does the same, but without having to ship solc
The best solution would be use a simple EVM assembler, and to our knowledge, there's no such solution that's lightweight, embeddable in a web-based front-end, and well maintained
Such an assembler could be implemented in a web-friendly language (JS, TypeScript) or a language that compiles to WASM (Rust). Any solutions in languages other than JS/TypeScript/Rust will not be accepted.
### Submission requirements:
* Tests in `test/TestIdentity` pass without modification
* the functionality of `js/IdentityProxyDeploy.js` is preserved
* dependency graph is reduced and/or heavyweight solc.js is removed
### Submission deadline:
* August 19
### Judging criteria:
* Best submission
* Correctness and elegance of the solution
* Performance of the solution
* contributions to other open-source packages will be appreciated
### Judging date:
* August 19
* 2000 DAI