fix ssz list, protocol names (#405)

This commit is contained in:
Jacek Sieka 2019-09-08 16:54:31 +02:00 committed by GitHub
parent bb0e9de09d
commit 5f58af2112
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 15 deletions

View File

@ -241,7 +241,7 @@ func initialize_beacon_state_from_eth1*(
for i, deposit in deposits: for i, deposit in deposits:
let deposit_data_list = leaves[0..i] let deposit_data_list = leaves[0..i]
state.eth1_data.deposit_root = hash_tree_root( state.eth1_data.deposit_root = hash_tree_root(
sszList(deposit_data_list, 2'i64^DEPOSIT_CONTRACT_TREE_DEPTH)) sszList(deposit_data_list, (2'i64^DEPOSIT_CONTRACT_TREE_DEPTH) + 1))
discard process_deposit(state, deposit, flags) discard process_deposit(state, deposit, flags)
@ -262,7 +262,7 @@ func initialize_beacon_state_from_eth1*(
let active_index_root = hash_tree_root( let active_index_root = hash_tree_root(
sszList( sszList(
get_active_validator_indices(state, GENESIS_EPOCH), get_active_validator_indices(state, GENESIS_EPOCH),
VALIDATOR_REGISTRY_LIMIT)) VALIDATOR_REGISTRY_LIMIT + 1))
let committee_root = get_compact_committees_root(state, GENESIS_EPOCH) let committee_root = get_compact_committees_root(state, GENESIS_EPOCH)
for index in 0 ..< EPOCHS_PER_HISTORICAL_VECTOR: for index in 0 ..< EPOCHS_PER_HISTORICAL_VECTOR:

View File

@ -158,23 +158,21 @@ p2pProtocol BeaconSync(version = 1,
latestFinalizedEpoch: Epoch, latestFinalizedEpoch: Epoch,
bestRoot: Eth2Digest, bestRoot: Eth2Digest,
bestSlot: Slot) {. bestSlot: Slot) {.
libp2pProtocol("/eth2/beacon_chain/req/hello", 1).} libp2pProtocol("/eth2/beacon_chain/req/hello/1/ssz", 1).}
proc goodbye( proc goodbye(
peer: Peer, peer: Peer,
reason: DisconnectionReason) {. reason: DisconnectionReason) {.
libp2pProtocol("/eth2/beacon_chain/req/goodbye", 1).} libp2pProtocol("/eth2/beacon_chain/req/goodbye/1/ssz", 1).}
requestResponse: requestResponse:
proc getBeaconBlocksReq( proc beaconBlocksByRange(
peer: Peer, peer: Peer,
headBlockRoot: Eth2Digest, headBlockRoot: Eth2Digest,
start_slot: uint64, start_slot: uint64,
count: uint64, count: uint64,
step: uint64) {. step: uint64) {.
libp2pProtocol("/eth2/beacon_chain/req/beacon_blocks", 1).} = libp2pProtocol("/eth2/beacon_chain/req/beacon_blocks_by_range/1/ssz", 1).} =
## TODO: procedure was renamed from `getBeaconBlocks()` to
## `getBeaconBlocksReq()`, because `getBeaconBlocks()` already exists.
var blocks: seq[BeaconBlock] var blocks: seq[BeaconBlock]
# `step == 0` has no sense, so we will return empty array of blocks. # `step == 0` has no sense, so we will return empty array of blocks.
# `count == 0` means that empty array of blocks requested. # `count == 0` means that empty array of blocks requested.
@ -202,10 +200,10 @@ p2pProtocol BeaconSync(version = 1,
await response.send(blocks) await response.send(blocks)
proc getRecentBeaconBlocks( proc beaconBlocksByRoot(
peer: Peer, peer: Peer,
blockRoots: openarray[Eth2Digest]) {. blockRoots: openarray[Eth2Digest]) {.
libp2pProtocol("/eth2/beacon_chain/req/recent_beacon_blocks", 1).} = libp2pProtocol("/eth2/beacon_chain/req/beacon_blocks_by_root/1/ssz", 1).} =
let pool = peer.networkState.node.blockPool let pool = peer.networkState.node.blockPool
var blocks = newSeq[BeaconBlock](len(blockRoots)) var blocks = newSeq[BeaconBlock](len(blockRoots))
@ -227,7 +225,7 @@ p2pProtocol BeaconSync(version = 1,
peer: Peer, peer: Peer,
fromSlot: Slot, fromSlot: Slot,
maxRoots: uint64) {. maxRoots: uint64) {.
libp2pProtocol("/eth2/beacon_chain/req/beacon_block_roots", 1).} = libp2pProtocol("/eth2/beacon_chain/req/beacon_block_roots/1/ssz", 1).} =
let maxRoots = min(MaxRootsToRequest, maxRoots) let maxRoots = min(MaxRootsToRequest, maxRoots)
var s = fromSlot var s = fromSlot
var roots = newSeqOfCap[BlockRootSlot](maxRoots) var roots = newSeqOfCap[BlockRootSlot](maxRoots)
@ -252,7 +250,7 @@ p2pProtocol BeaconSync(version = 1,
maxHeaders: uint64, maxHeaders: uint64,
skipSlots: uint64, skipSlots: uint64,
backward: bool) {. backward: bool) {.
libp2pProtocol("/eth2/beacon_chain/req/beacon_block_headers", 1).} = libp2pProtocol("/eth2/beacon_chain/req/beacon_block_headers/1/ssz", 1).} =
let maxHeaders = min(MaxHeadersToRequest, maxHeaders) let maxHeaders = min(MaxHeadersToRequest, maxHeaders)
var headers: seq[BeaconBlockHeader] var headers: seq[BeaconBlockHeader]
let db = peer.networkState.db let db = peer.networkState.db
@ -305,7 +303,7 @@ p2pProtocol BeaconSync(version = 1,
proc getAncestorBlocks( proc getAncestorBlocks(
peer: Peer, peer: Peer,
needed: openarray[FetchRecord]) {. needed: openarray[FetchRecord]) {.
libp2pProtocol("/eth2/beacon_chain/req/ancestor_blocks", 1).} = libp2pProtocol("/eth2/beacon_chain/req/ancestor_blocks/1/ssz", 1).} =
var resp = newSeqOfCap[BeaconBlock](needed.len) var resp = newSeqOfCap[BeaconBlock](needed.len)
let db = peer.networkState.db let db = peer.networkState.db
var neededRoots = initSet[Eth2Digest]() var neededRoots = initSet[Eth2Digest]()
@ -343,7 +341,7 @@ p2pProtocol BeaconSync(version = 1,
proc getBeaconBlockBodies( proc getBeaconBlockBodies(
peer: Peer, peer: Peer,
blockRoots: openarray[Eth2Digest]) {. blockRoots: openarray[Eth2Digest]) {.
libp2pProtocol("/eth2/beacon_chain/req/beacon_block_bodies", 1).} = libp2pProtocol("/eth2/beacon_chain/req/beacon_block_bodies/1/ssz", 1).} =
# TODO: Validate blockRoots.len # TODO: Validate blockRoots.len
var bodies = newSeqOfCap[BeaconBlockBody](blockRoots.len) var bodies = newSeqOfCap[BeaconBlockBody](blockRoots.len)
let db = peer.networkState.db let db = peer.networkState.db
@ -393,7 +391,7 @@ proc getBeaconBlocksSpec*(peer: Peer, blockRoot: Eth2Digest, slot: Slot,
## specification. ## specification.
doAssert(maxBlocks <= MaxHeadersToRequest) doAssert(maxBlocks <= MaxHeadersToRequest)
var startSlot = uint64(slot) + skipSlots var startSlot = uint64(slot) + skipSlots
var blocksResp = await peer.getBeaconBlocksReq(blockRoot, startSlot, var blocksResp = await peer.beaconBlocksByRange(blockRoot, startSlot,
maxBlocks, 1'u64) maxBlocks, 1'u64)
let blocks = blocksResp.get.blocks let blocks = blocksResp.get.blocks
info "Peer returned blocks", peer, count = len(blocks) info "Peer returned blocks", peer, count = len(blocks)