User:MatthewLM/ImprovedBlockRelayingProposal

From Bitcoin Wiki
Revision as of 14:10, 28 August 2012 by MatthewLM (talk | contribs) (Created page with "{{bip}} <pre> Title: Segmented Block Relaying Author: Matthew Mitchell <cbitcoin@thelibertyportal.com> Status: Draft Type: Standards Track Created: 28-08-2012 </pre...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page describes a BIP (Bitcoin Improvement Proposal).
Please see BIP 2 for more information about BIPs and creating them. Please do not just create a wiki page.

  Title: Segmented Block Relaying
  Author: Matthew Mitchell <cbitcoin@thelibertyportal.com>
  Status: Draft
  Type: Standards Track
  Created: 28-08-2012

Abstract

This BIP describes four new bitcoin messages, "gettreelevel", "treelevel", "getsegment" and "segment" which provide a method for downloading, validating and relaying segments of bitcoin blocks.

Motivation

Currently the bitcoin protocol is designed so that it is only possible to download an entire block from a single peer. This may have been effective when block sizes were small but as blocks increase in size there should be methods for increasing parallelism, dealing with communication failure and removing redundancy to improve the efficiency of the bitcoin network.

Specification

Rationale

By allowing for nodes to download blocks in segments as described in this BIP there are these advantages:

  • Nodes can complete validation of block segments before the download of other segments are completed.
  • Nodes can relay block segments before the download of other segments are completed.
  • Nodes can download different block segments from different peers at the same time.
  • If a connection is lost to a peer, a node can continue to download segments from other peers without needing to restart from nothing.
  • By requesting the transaction hashes, a node then only needs to download transactions it does not already have.