Skip to content

Releases: ethereum/go-ethereum

EDGE (1.4.6)

06 Jun 15:58
Compare
Choose a tag to compare

As Ethereum got more popular, the peer-to-peer networking infrastructure became extremely versatile (we have 3G peers in New Zealand and Satellite peers in the US). Certain assumptions that Geth made about the network when we've launched became untrue in the last months, especially with TheDAO bringing in an unexpected number of new users and environments. In this newly expanded network, the original assumptions caused Geth to be too aggressive with which peers are useful and which are not.

Geth 1.4.6 "EDGE" aims to solve the synchronization issues resulting from this newly found heterogeneity: it introduces a lot more download concurrency to avoid bottlenecks caused by badly connected remote machines, and also introduces adaptive quality-of-service tuning to make peer selection less aggressive for users with more restricted connectivity.

The result is a newly polished sync mechanism that can churn out a 7-8MB/s download speed in the current Ethereum main network (if your connectivity allows it), but also provide a solid and stable stream for all users, verified for as low as EDGE connections (440ms latency, 200 kbps upstream, 220kbps downstream).

We'd like to shout out a big thanks to @ellis2323 for the tireless benchmarking and re-benchmarking of our polishes on high end machines and connectivity (reaching 3 hours full sync times and 20 minutes fast sync times) as well as to @JasonCoombs for verifying connectivity and sync stability on extremely high latency satellite links.

A breakdown of the sync changes:

  • Concurrent header retrievals to prevent sync bottlenecks #2315
  • Disable transaction processing during initial sync cycle #2574, #2649
  • Download state trie concurrently with blockchain during fast sync #2627
  • Adaptive quality of service tuning for restricted connectivity #2630
  • Fast-sync critical-section download failure resiliency #2647
  • Enterprise grade hand-tuned multi-level heuristic smart caching :trollface: #2585

Polishes and bugfixes:

  • Refactor JavaScript console for external library reuse #2535, #2656
  • Re-enable bad block reporting to track any strange activity #2614
  • Fix a transaction pool data-race for extreme tests #2655
  • Fix eth_getTransactionCount on the testnet for non existent accounts #2626
  • Fix compiler path and listing for Solidity compilation #2613, #2612
  • Fix an extremely rare downloader hang after a successful sync #2637
  • Fix a CI server go vet annoyance with mutex copying #2580

drop table users (1.4.5)

24 May 09:39
Compare
Choose a tag to compare

This is a bug fix release and includes the following changes:

  • Fixed eth_estimateGas for non-contract accounts #2589
  • Fixed eth_signTransaction to return the signed transaction #2578
  • Fixed nil pointer crash for topics #2585
  • Excluded all personal namespace from history #2567
  • Added new personal_signAndSendTransaction method to the RPC #2564

Gethasaurus (1.4.4)

17 May 15:32
Compare
Choose a tag to compare

Credit for the release name goes to @sjalq. (See gitter discussion)

Security fixes

eth protocol vulnerabilities have been discovered by bounty hunters.
We'll give out more details at a later time along with the full report that we have received.

  • Fixed: DoS attack vector in the block downloader
  • Fixed: theoretical (but impractical) method of increasing the local minimum block difficulty

This release also fixes a couple of bugs:

  • Fixed: crash when assigning --rpcaddr #2555 (#2563)
  • Fixed: panic in the abigen tool #2519 (#2559 #2551)
  • Fixed: WebSocket HTTP origin (#2539)
  • Skip transaction processing during fast sync (#2574)

Gethy McGethface (1.4.3)

10 May 11:54
Compare
Choose a tag to compare

Note: 1.4.3 fixes a regression introduced at the very last minute that affected miners

Release 1.4 is a major release in the history of Go Ethereum and brings you about roughly 6 months worth of work and less crashes. This is the final release of the 1.4 series and marks the end of the release candidates.

This document will describe some of the major features included in this release and list most of the minor features. For a full rundown of features and fixes please refer to the 1.4.0 milestone, 1.4.1 milestone and 1.4.2 milestone.

On chain version update notifications

We've added a Geth release oracle contract to the network which holds the current version of geth with the release hash. All updated clients will check the contract and fetch the version number and check whether the version number is greater than the version you're running. It will emit a notice telling you there's a new client available. More info on #2497 .

New releases need to be signed off by 2 out of 3 current signers (@obscuren, @fjl and @karalabe) to be accepted by the oracle and users be notified of it. Note, that we do not do any automatic upgrades, only display a small CLI notification to the user every once in a while.

The verified contract is live at 0xFA7B9770Ca4cb04296Cac84F37736d4041251CDF. The full contract ABI is available here, but you can also use a reduced ABI that just contains the list of signers and the current release version.

Event Subscriptions

Over the past months we've significantly overhauled our RPC implementation and added several new capabilities and transport layers. At present geth supports the following transport layers:

  • WebSockets (available with the --ws flag)
  • HTTP (available with the --rpc flag)
  • IPC (available with the --ipc flag and enabled by default)

Previously when creating new filters you'd need to poll for them and query to see if there were any pending filter updates. With the new asynchronous implementation we've added an new additional subscription model where, instead of polling, you get notified by the client via pushed updates.

Please refer to the documentation about our new subscription model.

Native Go DApp Development

With the introduction of package accounts/abi which allowed you to create bindings between Ethereum Contracts and Go we've taken it one step further and developed a new tool which can do all the bindings for you given a ABI json structure. Our abigen (which is available in cmd/abigen) can create fully automated Go Bindings to any Ethereum contract without the need for manual fiddling. See our [step-by-step](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go bindings-to-Ethereum-contracts) tutorial for more information.

Private networks

With the interest of private networking growing we've added some new configuration utilities to geth and deprecated some flags that will be removed as of 1.5.

With the coming of Geth 1.4 we've deprecated the --genesis <json_file> flag and replaced with a geth init <json file> sub command. This means that you'll no longer be able to mix the destructive --genesis flag with other flags.

In addition to the above mentioned init subcommand we've added a new field to the genesis file: config which allows you to specify configuration options for the chain. At present the only available option is "homesteadBlock":"0x block_number" and may be extended with more options as we progress. The configuration option is not yet standardised and may not be implemented in other implementations.

Basic build support for iOS and Android platform

Geth should be buildable for iOS and Android platforms. While it's certainly not anywhere near feasible to run Geth in a production environment on an iPhone or on an Android device with the current full node implementation, however this will serve as a foundation for future updates, which will include LES (Light Ethereum Subprotocol) capabilities.

Debugging options

We've added several new debugging features that will allow you to get transaction traces and full block traces:

  • traceTransaction( hash )
  • traceBlockByHash( hash )
  • traceBlockByNumber( number )
  • traceBlockByFile( file_with_rlp_encoded_block )
  • traceBlock( rlp_hex_encoded_string )

The tracer functions can be found in the debug namespace. Please note that these functions are not available within web3 and may only be accessed through either HTTP, IPC, WebSocket RPC and the geth console.

Feature mentions

  • New EVM enabled for a few lucky ones
  • Node refactoring to allow using Geth as a library
  • Fully rewritten RPC layer
  • Pending transaction inspection
  • Many, many fixes other fixes
  • NTP time check
  • General optimisations

Gethy McGethface (1.4.2 final)

10 May 09:17
Compare
Choose a tag to compare

Gethy has moved on to 1.4.3.

Knoxjonesi (1.4.1)

04 May 07:10
Compare
Choose a tag to compare
Knoxjonesi (1.4.1) Pre-release
Pre-release

Note: all binaries have been cross compiled to the various platforms. If any of the binaries do not work for your platform please raise an issue.


Release 1.4 is a major release in the history of Go Ethereum and brings you about roughly 6 months worth of work. For this release we've planned several RCs (Release Candidates) so we can test the release together with our community and gather feedback for the final release.

If you want to build this release from source, please use the release/1.4 branch.

$ git checkout release/1.4

This document will describe some of the major features included in this release and list most of the minor features. For a full rundown of features and fixes please refer to the 1.4.0 milestone and 1.4.1 milestone.

On chain version update notifications

We've added a Geth release oracle contract to the network which holds the current version of geth with the release hash. All updated clients will check the contract and fetch the version number and check whether the version number is greater than the version you're running. It will emit a notice telling you there's a new client available. More info on #2497 .

New releases need to be signed off by 2 out of 3 current signers (@obscuren, @fjl and @karalabe) to be accepted by the oracle and users be notified of it. Note, that we do not do any automatic upgrades, only display a small CLI notification to the user every once in a while.

The verified contract is live at 0xFA7B9770Ca4cb04296Cac84F37736d4041251CDF. The full contract ABI is available here, but you can also use a reduced ABI that just contains the list of signers and the current release version.

Event Subscriptions

Over the past months we've significantly overhauled our RPC implementation and added several new capabilities and transport layers. At present geth supports the following transport layers:

  • WebSockets (available with the --ws flag)
  • HTTP (available with the --rpc flag)
  • IPC (available with the --ipc flag and enabled by default)

Previously when creating new filters you'd need to poll for them and query to see if there were any pending filter updates. With the new asynchronous implementation we've added an new additional subscription model where, instead of polling, you get notified by the client via pushed updates.

Please refer to the documentation about our new subscription model.

Native Go DApp Development

With the introduction of package accounts/abi which allowed you to create bindings between Ethereum Contracts and Go we've taken it one step further and developed a new tool which can do all the bindings for you given a ABI json structure. Our abigen (which is available in cmd/abigen) can create fully automated Go Bindings to any Ethereum contract without the need for manual fiddling. See our [step-by-step](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go bindings-to-Ethereum-contracts) tutorial for more information.

Private networks

With the interest of private networking growing we've added some new configuration utilities to geth and deprecated some flags that will be removed as of 1.5.

With the coming of Geth 1.4 we've deprecated the --genesis <json_file> flag and replaced with a geth init <json file> sub command. This means that you'll no longer be able to mix the destructive --genesis flag with other flags.

In addition to the above mentioned init subcommand we've added a new field to the genesis file: config which allows you to specify configuration options for the chain. At present the only available option is "homesteadBlock":"0x block_number" and may be extended with more options as we progress. The configuration option is not yet standardised and may not be implemented in other implementations.

Basic build support for iOS and Android platform

Geth should be buildable for iOS and Android platforms. While it's certainly not anywhere near feasible to run Geth in a production environment on an iPhone or on an Android device with the current full node implementation, however this will serve as a foundation for future updates, which will include LES (Light Ethereum Subprotocol) capabilities.

Debugging options

We've added several new debugging features that will allow you to get transaction traces and full block traces:

  • traceTransaction( hash )
  • traceBlockByHash( hash )
  • traceBlockByNumber( number )
  • traceBlockByFile( file_with_rlp_encoded_block )
  • traceBlock( rlp_hex_encoded_string )

The tracer functions can be found in the debug namespace. Please note that these functions are not available within web3 and may only be accessed through either HTTP, IPC, WebSocket RPC and the geth console.

Feature mentions

  • New EVM enabled for a few lucky ones
  • Node refactoring to allow using Geth as a library
  • Fully rewritten RPC layer
  • Pending transaction inspection
  • Many, many fixes other fixes
  • NTP time check
  • General optimisations

Bursarius (1.4.0)

20 Apr 10:31
Compare
Choose a tag to compare
Bursarius (1.4.0) Pre-release
Pre-release

Note: all binaries have been cross compiled to the various platforms. If any of the binaries do not work for your platform please raise an issue.


Release 1.4 is a major release in the history of Go Ethereum and brings you about roughly 6 months worth of work. For this release we've planned several RCs (Release Candidates) so we can test the release together with our community and gather feedback for the final release.

If you want to build this release from source, please use the release/1.4 branch.

$ git checkout release/1.4

This document will describe some of the major features included in this release and list most of the minor features. For a full rundown of features and fixes please refer to the 1.4 milestone.

Event Subscriptions

Over the past months we've significantly overhauled our RPC implementation and added several new capabilities and transport layers. At present geth supports the following transport layers:

  • WebSockets (available with the --ws flag)
  • HTTP (available with the --rpc flag)
  • IPC (available with the --ipc flag and enabled by default)

Previously when creating new filters you'd need to poll for them and query to see if there were any pending filter updates. With the new asynchronous implementation we've added an new additional subscription model where, instead of polling, you get notified by the client via pushed updates.

Please refer to the documentation about our new subscription model.

Native Go DApp Development

With the introduction of package accounts/abi which allowed you to create bindings between Ethereum Contracts and Go we've taken it one step further and developed a new tool which can do all the bindings for you given a ABI json structure. Our abigen (which is available in cmd/abigen) can create fully automated Go Bindings to any Ethereum contract without the need for manual fiddling. See our [step-by-step](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go bindings-to-Ethereum-contracts) tutorial for more information.

Private networks

With the interest of private networking growing we've added some new configuration utilities to geth and deprecated some flags that will be removed as of 1.5.

With the coming of Geth 1.4 we've deprecated the --genesis <json_file> flag and replaced with a geth init <json file> sub command. This means that you'll no longer be able to mix the destructive --genesis flag with other flags.

In addition to the above mentioned init subcommand we've added a new field to the genesis file: config which allows you to specify configuration options for the chain. At present the only available option is "homesteadBlock":"0x block_number" and may be extended with more options as we progress. The configuration option is not yet standardised and may not be implemented in other implementations.

Basic build support for iOS and Android platform

Geth should be buildable for iOS and Android platforms. While it's certainly not anywhere near feasible to run Geth in a production environment on an iPhone or on an Android device with the current full node implementation, however this will serve as a foundation for future updates, which will include LES (Light Ethereum Subprotocol) capabilities.

Debugging options

We've added several new debugging features that will allow you to get transaction traces and full block traces:

  • traceTransaction( hash )
  • traceBlockByHash( hash )
  • traceBlockByNumber( number )
  • traceBlockByFile( file_with_rlp_encoded_block )
  • traceBlock( rlp_hex_encoded_string )

The tracer functions can be found in the debug namespace. Please note that these functions are not available within web3 and may only be accessed through either HTTP, IPC, WebSocket RPC and the geth console.

Feature mentions

  • New EVM enabled for a few lucky ones
  • Node refactoring to allow using Geth as a library
  • Fully rewritten RPC layer
  • Pending transaction inspection
  • Many, many fixes other fixes
  • NTP time check
  • General optimisations

Release 1.3.6

01 Apr 10:52
Compare
Choose a tag to compare

This release fixes an issue that fails to strip eol in some cases where a password is required.

Release 1.3.5

03 Mar 14:35
Compare
Choose a tag to compare

This release contains a crucial network hotfix #2285

This release contains all changes from the homestead release (1.3.4).

Homestead (1.3.4)

29 Feb 14:07
Compare
Choose a tag to compare

UPDATE: Please use the 1.3.5 release which contains a network hotfix

This is the first minor protocol upgrade that will set in at 1.150.000's block (Testnet = 494.000). This release includes the following changes to the protocol and fixes:

Protocol changes

  • EIP-7: New EVM opcode DELEGATECALL
  • EIP-2: Consensus rules changes:
    1. The gas cost for creating contracts via a transaction is increased from 21000 to 53000;
    2. All transaction signatures whose s-value is greater than secp256k1n/2 are now considered invalid;
    3. OOG CREATE calls when there's insufficient gas for storing the code (as opposed to silently ignoring the code storage);
    4. Difficulty adjust algorithm has changed to block_diff = parent_diff + parent_diff // 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99) + int(2**((block.number // 100000) - 2))

Fixes / Other

  • Increased artificial gas floor #2266
  • Decreased minimum accepted gas price #2273
  • Fixed windows p2p discover bug #2146
  • Fixed transaction sorting #2143
  • Implement EIP-8 p2p protocol upgrade #2091
  • Fixed downloader OOM #2265

Miners

The minimum accepted gas price for both relaying and block inclusion has changed with #2273 to 20 Shannon (from 50 Shannon), this because of the recent changes in the price of Ether. You can change this setting with the --gasprice flag when starting up the client and restore the old gas price if desired.