/FreeEthereum

Kotlin implementation of the Ethereum yellowpaper

Primary LanguageJavaMIT LicenseMIT

Support this work

PayPal Donate Flattr Donate Gratipay Donate

Support this work with crypto-currencies like BitCoin, Ethereum, Ardor, and Komodo!

FreeEthereum

This is the last commit of the MIT-licensed version of the Java implementation of the Ethereum protocol. The original EthereumJ Ethereum implemetation is now licensed under a commercially problematic GPL v3 license. This version is supposed to stay MIT.

Key differentiators compared to EthereumJ

FreeEthereum EthereumJ
MIT License GPL v3 License
Java 8 (porting to Kotlin) Java 7
Building an executable JAR
git clone https://github.com/ethereum/ethereumj
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
  • build a standalone executable jar with ../gradlew shadow and execute the -all jar in build/libs using java -jar [jarfile].
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

Configuring FreeEthereum

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.