Skip to content

Releases: ethereum/ethereumj

1.3.0 Release Candidate 4

07 Jul 18:04
Compare
Choose a tag to compare
Pre-release
  • Eliminated all references to static SystemProperties.CONFIG
  • Refactored PendingState
  • Bugs fixed

1.3.0 Release Candidate 3 (DAO rescue soft fork final version)

28 Jun 19:49
Compare
Choose a tag to compare
1.3.0-RC3-daoRescue2

Update version

1.3.0 Release Candidate 2 (DAO rescue soft fork)

21 Jun 13:48
Compare
Choose a tag to compare
Merge branch 'develop'

Conflicts:
	ethereumj-core/src/main/resources/version.properties

DAO Rescue HotFix 1.2.8 Release

21 Jun 11:44
Compare
Choose a tag to compare

For those who are not migrated to 1.3.0-RC this is 1.2 release with the critical Ethereum soft-fork update aimed to rescue stolen DAO funds

The motivation, offering the network to overcome significant submitted crime
by:

https://live.ether.camp/account/0x304a554a310c7e546dfe434669c62820b7d83490

stealing 3.6M ether.

The complete explanation can be studied in that diagram:

http://www.ether.camp/dao-thief.html

The proposed solution is to freeze all the transactions trying to
move any funds from the DAO or the child DAOs.

The rescue fix is still for the miners to vote about , they have to
lower the gas limit value for that fix to be activated.

1.3.0 Release Candidate 1

16 Jun 21:56
Compare
Choose a tag to compare
Pre-release
1.3.0-RC1

Updated version

Release 1.2.0

06 Apr 14:44
Compare
Choose a tag to compare
  • Full support for Homestead features
  • Further blocks import performance optimization: importing of the first 1M blocks can take less than 1hr (depending on the hardware)
  • Memory footprint reduced
  • More flexible blockchain parameters configuration API (BlockchainConfig and BlockchainNetConfig classes
  • StandaloneBlockchain helper class - makes it pretty easy to write Java unit tests for Solidity contracts (see StandaloneBlockchainSample)
  • solc compiler version updated to 0.3.1, resolved Mac issue
  • A number of issues fixed, improved stability

Let's chat about...

More info here:

Sponsored by:

 <ether.camp>

Release Candidate 1.2.0 Homestead

05 Mar 14:50
Compare
Choose a tag to compare
Pre-release

Homestead compatible release.

Other features:

  • Improved block import performance (~1.5 Hrs for 1M blocks)
  • Solidity compiler (from Ethereum++) bundled and can be invoked from Java code (see CreateContractSample sample on how to compile-deploy-call contract)
  • Windows LevelDB database upgraded to version 1.18 (more stable)
  • 60/61 Eth protocols were deprecated

Let's chat about...

More info here:

Sponsored by:

 <ether.camp>

Release 1.1.0

04 Mar 16:17
Compare
Choose a tag to compare
Pure Java Miner

We support mining now! It is currently implemented in pure Java and can
be used in private and test networks. You may even mine on the live Ethereum
network however it is not economically feasible of course.

The miner can run in two modes ‘cache-only’ and ‘full-dataset’. For the same
difficulty the first one requires much more time to calculate a block nonce but
takes only 16Mb of RAM while the latter takes 1Gb but runs much faster. The
first one can be used for testing with lowered difficulty.

The mining can be started by ‘mine.start’ config option which makes the miner started
either immediately on startup or when the blockchain is synced with the network. Another
option is starting the miner programmatically by invoking Ethereum.getBlockMiner().startMining().
To monitor miner events you may want to implement and add MinerListener

The PrivateMinerSample demonstrates creation of a simple 2 peer private network with a miner.

> ./gradlew run -PmainClass=org.ethereum.samples.PrivateMinerSample
Eth protocol 61/62 support

This release remains in line with the whole Ethereum network where 95% of peers moved to the latest Eth62 subprotocol. The most significant improvement of the Eth62 protocol is more flexible block exchange messages which improves the sync speed.

PendingState

PendingState is when you can see the state change immediately after transaction submit instead of waiting for a block where your transaction is included.
For example if you send the value transfer transaction the PendingState will immediately reflect balance changes of sender and receiver (including mining fees) or indicates that transaction will not be accepted. This transaction is stored as a pending transaction until a new block is arrived. If the block contains that transaction it is removed from the PendingState, else the transaction is recalculated based on the latest block and you may see the updated state.

Try running PendingStateSample to see how it works on practice.

> ./gradlew run -PmainClass=org.ethereum.samples.PendingStateSample
Contract invocations becomes easier

We have added utility classes to make the contract call transactions construction much easier. You may do this by either supplying a Solidity contract ABI or manually constructing each function by passing its name and input/output parameter types. You may pass functions arguments as a regular Java objects which are flexibly converted to Solidity types. The same way return values are parsed and represented as corresponding Java types.
The same way you may call constant function that is function invocation without propagating transaction to the network and without any changes to the contract state. So if you need to get some value from a contract you just do a constant call - that costs nothing, executed immediately and return you a value. To be completely precise you may call any function (not necessarily effectively constant) and get correct result but the contract state remains the same as before the call.

You may want to take a look at PriceFeedSample for introduction.

> ./gradlew run -PmainClass=org.ethereum.samples.PriceFeedSample
Finer and more flexible config

There are much more options now on how to configure your EthereumJ instance.
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.

Running several nodes in a single JVM

We removed the majority of statics in the EthereumJ code and substituted it with per Spring AppContext instances. That allows to create several separate instances of EthereumJ within a single JVM. So you can configure and start your small private network in a single JVM just from your main() method.

To see how that can be configured please refer to the PrivateMinerSample

> ./gradlew run -PmainClass=org.ethereum.samples.PrivateMinerSample
Whisper upgrade

Whisper protocol has been upgraded to version 3 so if your private network supports Whisper you can use EthereumJ implementation together with the latest C++ Whisper capable nodes.

Gas price calculator

Pretty tiny but quite convenient feature which just gives you a reasonable gas price for your transaction. This value is just a statistics of the latest N transaction gas prices.

See how PendingStateSample uses that feature.

> ./gradlew run -PmainClass=org.ethereum.samples.PendingStateSample