Java implementation of the Ethereum yellowpaper

Welcome to ethereumj

Slack Status Gitter Build Status Coverage Status


ethereumj is a pure-Java implementation of the Ethereum protocol. For high-level information about Ethereum and its goals, visit The ethereum white paper provides a complete conceptual overview, and the yellow paper provides a formal definition of the protocol.

Check our blog

Running EthereumJ

Adding as maven artifact to your project:
       <name>Repository from Bintray</name>


or gradle:

   repositories {
       maven {url ""}
   compile ("org.ethereum:ethereumj-core:1.3.+")

As a starting point for your own project take a look at

Building an executable JAR
git clone
cd ethereumj
cp ethereumj-core/src/main/resources/ethereumj.conf ethereumj-core/src/main/resources/user.conf
vim ethereumj-core/src/main/resources/user.conf # adjust user.conf to your needs
./gradlew clean shadowJar
java -jar ethereumj-core/build/libs/ethereumj-core-*-all.jar
Running from command line:
> git clone
> cd ethereumj
> ./gradlew run [-PmainClass=<sample class>]
Optional samples to try:
./gradlew run -PmainClass=org.ethereum.samples.BasicSample
./gradlew run -PmainClass=org.ethereum.samples.FollowAccount
./gradlew run -PmainClass=org.ethereum.samples.PendingStateSample
./gradlew run -PmainClass=org.ethereum.samples.PriceFeedSample
./gradlew run -PmainClass=org.ethereum.samples.PrivateMinerSample
./gradlew run -PmainClass=org.ethereum.samples.TestNetSample
./gradlew run -PmainClass=org.ethereum.samples.TransactionBomb
Importing project to IntelliJ IDEA:
> git clone
> cd ethereumj
> gradlew build


  • File -> New -> Project from existing sources…
  • Select ethereumj/build.gradle
  • Dialog “Import Project from gradle”: press “OK”
  • After building run either org.ethereum.Start, one of org.ethereum.samples.* or create your own main.

Configuring EthereumJ

For reference on all existing options, their description and defaults you may refer to the default config ethereumj.conf (you may find it in either the library jar or in the source tree ethereum-core/src/main/resources) To override needed options you may use one of the following ways:

  • put your options to the <working dir>/config/ethereumj.conf file
  • put user.conf to the root of your classpath (as a resource)
  • put your options to any file and supply it via -Dethereumj.conf.file=<your config>
  • programmatically by using SystemProperties.CONFIG.override*()
  • programmatically using by overriding Spring SystemProperties bean

Note that don’t need to put all the options to your custom config, just those you want to override.


Chat with us via Gitter


ethereumj is released under the MIT license.