Skip to content

Releases: ethereum/ethereumj

1.4.0 Release

24 Jan 12:29
Compare
Choose a tag to compare

Ethereum Harmony Demo

.
Slack Status
.

Ethereum Harmony v2.0

  • Fast Sync based on EthereumJ v1.4
  • Tracing full data of smart contracts locally

watch video sample

Try it now: https://github.com/ether-camp/ethereum-harmony

Core

  • Eth63 protocol and FastSync are now supported! FastSync is turned off by default and could be enabled with config option sync.fast.enabled = true
    We divided FastSync process onto 3 stages. If the node is shut down during any fastsync stage after restart the previous completed stages are not reset and the node just restarts the sync of the interrupted stage:
    • UNSECURE: the node syncs to the latest state in several minutes (e.g. 4-15 minutes on live network depending on the network bandwidth and how fast peers are found) allowing to query accounts state and submitting transactions. However the state at this stage can not be trusted as it is not confirmed by the block chain yet. It is worth to wait for SECURE stage for performing any security sensitive tasks
    • SECURE: all the block headers are downloaded and the chain consistency is verified. It's safe to do any tasks at this stage. However the node is still missing Blocks and Receipts which are downloaded at the last stage
    • COMPLETE: all the data including Blocks and Receipts is downloaded. All functionality is available at this stage and the peer starts functioning as usual (i.e. Eth protocol reports proper total difficulty and latest block and is capable for blocks and receipts downloading)
  • Caching: completely new caching mechanism was implemented which is controlled by the config cache {} section. The central cache is state read cache: LRU cache bounded by memory size. The state DB as well as others have write caches which are also bound by their total memory, reaching this memory threshold triggers DB flush.
  • Memory optimization: new cache functionality added finer control over JVM heap usage:
    • with default cache config node works fine with -Xmx512M option (however it is recommended to reserve at least 1G of heap)
    • with minimal cache settings the node managed to work with -Xmx128M option (though this is not recommended due to possible extra-heavy blocks)
  • Add ETC and Ropsten support: add new test network support (check runRopsten gradle target) and implement both ETC forks
  • Solc upgrade: solc upgraded to the latest release and was extracted as a separate Java wrapper SolcJ project which makes it possible to switch solc version independently of EthereumJ release or just use it independently. As an option any other installed solc compiler can be specified with the solc.path config option.
    Also we supported latest ABI enhancements.
  • Unlimited pruning depth: due to new prune approach (use of ref counting DB) and using prune DB backing store the pruning depth can be set as large as desired
  • External miner capable: you may now use your favorite Ethereum miner (GPU or CPU) implementation with EthereumJ (check the Harmony project for details)
  • Database versioning: we are now tracking DB versions and warn the user or reset the DB (depending on the config) in case if an older incompatible DB version is detected. We will do our best to not upgrade the DB version in minor releases.
  • Adopted to run Hive test suite with EthereumJ implementation: more testing with the suite shared by all Ethereum clients (C++ eth, geth, Parity)
  • Moved to Logback logger implementation

Hotfix 1.3.9: Memleak fixed

28 Nov 15:26
Compare
Choose a tag to compare

Fixed the memory leak when pruning is off.
Also fix Transaction backward incompatible API changes from EIP155

Hotfix 1.3.8: conflict resolved

25 Nov 15:15
Compare
Choose a tag to compare

1.3.7 HardFork #4 (Spurious Dragon) Release

23 Nov 00:51
Compare
Choose a tag to compare

Implements the following EIPs:
ethereum/EIPs#155 (Tx replay protection)
ethereum/EIPs#160 (EXP cost increase)
ethereum/EIPs#161 (State trie clearing)
ethereum/EIPs#170 (Contract code size limit)

Added Ropsten config and the Gradle runRopsten target

Got quite bad side effect (spurious state trie breaking) from these changes, which we were unable to catch.
So in this version trie pruning is disabled by default as a temporary workaround.
(you may try to enable it back and it probably would work, but make sure to have the DB backed up)

EIP150 HardFork 1.3.6 Release (fix HF block number, Morden HF)

17 Oct 16:54
Compare
Choose a tag to compare

Hotfixes for 1.3.5 Release:

  • change main chain HF block number to #2 463 000
  • add Morden EIP150 HF at the block #1 783 000

EIP150 HardFork 1.3.5 Release

17 Oct 10:22
Compare
Choose a tag to compare

HotFix 1.3.2 Release

04 Oct 17:12
Compare
Choose a tag to compare

This hotfix release addresses Parity connectivity issue. The EthereumJ should now be able to connect Parity nodes.

Latest DoS attacks resulted in almost all Geth nodes are down or had out-dated blockchain, thus EthereumJ nodes had significant problems with finding peers to sync with.

HotFix 1.3.1 Release

29 Sep 09:53
Compare
Choose a tag to compare

Fixed numerous problems with state and storage trie DB which resulted in No parent on the chain for block.number errors
Also make sure you have at least 2.5G of heap memory for core for bypassing 'DoS blocks' (~ 2287K ...) with extensive EXTCODE* usage. This is temporary workaround.

Release 1.3.0

07 Sep 09:21
Compare
Choose a tag to compare
  • State Trie pruning: greatly reduces the state database size (from 50Gb to less than 500Mb). The state trie is intended to store the whole Ethereum state as well as all of its intermediate states. Older states are rarely needed, while latest states are required for rebranching. From this release by default the trie stores intermediate states for the latest 192 blocks only, older states are pruned. If your code is expected to use older state snapshots this feature should be either turned off or number of stored states should be adjusted (see database.prune options)
    NOTE: it is recommended to resync database from scratch to reduce its size and avoid possible sync performance problems
  • Transaction store: the blocks transactions info and their receipts are now stored in the DB and accessible via their hash. See the TransactionStore component
  • DAO hardfork: support the DAO rescue hardfork (1920K block funds transfer, peer fork side testing), though you still may run EthereumJ on each side of the fork (ETH and ETC) by adjusting config parameters
  • Block sync refactoring: long/short block sync became more reliable due to the new SyncManager implementation
  • Pending state refactoring: tracking a transaction life cycle became more convenient with the refactored PendingState component and EthereumListener.onPendingTransactionUpdate callback
  • Ethereum.close(): the node can be now gracefully shut down and started again without application restart
  • Config usage clean up: eliminated the rest of static references to the SystemProperties bean. The node (or several nodes in one JVM) can be now completely configured via the SystemProperties bean.
  • Dead code clean up: remove unused packages, classes and library dependencies
  • Bug fixes: and of course we are continuing to improve the library quality by fixing bugs

1.3.0 Release Candidate 5 (DAO rescue hard fork)

18 Jul 19:06
Compare
Choose a tag to compare

The 'Hotfix prerelease' which implements the DAO rescue hard fork spec (https://blog.slock.it/hard-fork-specification-24b889e70703#.igh9b62hy)
Essentially this is just a transfer from the set of predefined accounts (the DAO, its children and their extraBalance contracts) to the specially created Withdraw contract (https://live.ether.camp/account/bf4ed7b27f1d666546e30d74d50d173d20bca754) at the beginning of the block #1920000 (i.e. before processing any transactions from this block)