Development resources at your finger tips
Build with the coolest Web3 projects
Recurring funding for 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.
Discover great web3 organizations, work on meaningful projects and build relationships with like minded people. Browse Tribes
Meet the top hunters and contributors from our community.
Hello, Gitcoiners! At Gitcoin, we love bringing good news — new projects built, relationships formed, skills learned. Even better when we find …
Hello, Gitcoiners & Gitcoinerettes! It’s happening again – happy blockchain times are coming to San Francisco 🎉, as the San Francisco…
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