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