open-bounty/doc/decisions/0003-include-compiled-web3j...

45 lines
1.6 KiB
Markdown

# 0003. Include Compiled Web3j Contracts in Git
| Date | Tags |
|---|---|
| 2018-03-20 | contracts, tooling |
## Status
Accepted
## Context
The OpenBounty project utilizes smart contracts to make certain core
aspects of it's product work without centralized trust.
In order to develop the platform a Java interface to these contracts needs to
be built beforehand. To create those interfaces various tools are required
(`web3j` & `solc`), often in specific versions that are not easily available
via widespread package managers.
This hurdle also applies to any other situations where the application is set
up from scratch, e.g. continuous integration.
## Decision
Instead of forcing every contributor to install those tools we will include
the compiled Java interfaces in our Git repository. This removes a significant
setup cost and hopefully allows people to get going much faster.
Installing `web3j` and `solc` will only be required when hacking on the
contracts itself which are much more stable than the majority of the code.
An alternative would be implementing scripts that install those tools in a
platform independent manner but this would require more work. Once we have
the time or someone wants to work on creating those scripts we can easily
revert the decision outlined in this document.
## Consequences
- The compiled Java interfaces may get out of date.
This could perhaps be addressed by some clever use of checksums.
- By having changes to the contract interfaces be part of a changeset it may
be easier to spot what changes are required/how APIs are changing.