45 lines
1.6 KiB
Markdown
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.
|