ex_wire v0.1.1 ExWire.Packet.GetBlockHeaders

Requests block headers starting from a given hash.

**GetBlockHeaders** [`+0x03`: `P`, `block`: { `P` , `B_32` }, `maxHeaders`: `P`, `skip`: `P`, `reverse`: `P` in { `0` , `1` } ]
Require peer to return a BlockHeaders message. Reply
must contain a number of block headers, of rising number when reverse is 0,
falling when 1, skip blocks apart, beginning at block block (denoted by either
number or hash) in the canonical chain, and with at most maxHeaders items.

Link to this section Summary

Functions

Given an RLP-encoded GetBlockHeaders packet from Eth Wire Protocol, decodes into a GetBlockHeaders struct

Handles a GetBlockHeaders message. We shoud send the block headers to the peer if we have them. For now, we’ll do nothing

Given a GetBlockHeaders packet, serializes for transport over Eth Wire Protocol

Link to this section Types

Link to this type t()
t() :: %ExWire.Packet.GetBlockHeaders{block_identifier: ExWire.Packet.block_identifier, max_headers: integer, reverse: boolean, skip: integer}

Link to this section Functions

Link to this function deserialize(rlp)
deserialize(ExRLP.t) :: t

Given an RLP-encoded GetBlockHeaders packet from Eth Wire Protocol, decodes into a GetBlockHeaders struct.

Examples

iex> ExWire.Packet.GetBlockHeaders.deserialize([5, 10, 2, 1])
%ExWire.Packet.GetBlockHeaders{block_identifier: 5, max_headers: 10, skip: 2, reverse: true}

iex> ExWire.Packet.GetBlockHeaders.deserialize([<<5>>, 10, 2, 0])
%ExWire.Packet.GetBlockHeaders{block_identifier: <<5>>, max_headers: 10, skip: 2, reverse: false}

Handles a GetBlockHeaders message. We shoud send the block headers to the peer if we have them. For now, we’ll do nothing.

Examples

iex> %ExWire.Packet.GetBlockHeaders{block_identifier: 5, max_headers: 10, skip: 2, reverse: true}
...> |> ExWire.Packet.GetBlockHeaders.handle()
:ok
Link to this function serialize(packet)
serialize(t) :: ExRLP.t

Given a GetBlockHeaders packet, serializes for transport over Eth Wire Protocol.

Examples

iex> %ExWire.Packet.GetBlockHeaders{block_identifier: 5, max_headers: 10, skip: 2, reverse: true}
...> |> ExWire.Packet.GetBlockHeaders.serialize
[5, 10, 2, 1]

iex> %ExWire.Packet.GetBlockHeaders{block_identifier: <<5>>, max_headers: 10, skip: 2, reverse: false}
...> |> ExWire.Packet.GetBlockHeaders.serialize
[<<5>>, 10, 2, 0]