ETH-CONTRACT-API is a java library on top of EthereumJ to make it easier to work with smart contracts from a JVM application (Java, Scala etc ...) 

The code is open source and accessible here:

The library solves 3 main pain points when working with Ethereum.


The first goal of ETH-CONTRACT-API is to make integration in your Java application as simple as possible. 

  • You can connect to any network declaratively
  • It uses the type system to detect error early
  • It let's you talk to any smart contract the same way you would talk to any other Java Service. All you need to do is create an Interface that represent your smart contract and create a proxy
  • It removes the need to handle the mechanisms of Ethereum.
    • You don't need to know how to define your Nonce
    • You don't need to know how to synchronize and wait for a transaction 
  • It is Domain Driven and every Ethereum Value has its own type, you don't work with String and BigInteger but rather with EthValue, EthAccount, EthAddress etc ...

Because the integration is made so simple, you can work with a team that is comfortable with  your Java environment and understand the Business Logic very well and have a specialized team working on the Smart Contract part of it.


Because integration is so easy, ETH-CONTRACT-API is a great tool to create deployment scripts. This means that you can integrate Smart Contract deployment and Bootstrap as part of your workflow and this is as easy as populating a database. 


It is especially important to test your smart contracts because they are immutable. ETH-CONTRACT-API has an environment to create unit, functional and integration tests as easily as with any other Java system. Testing has to be easy to write in order to invest enough in them