Merge remote-tracking branch 'origin/master' into epoch-state-2
This commit is contained in:
commit
eba4f18f71
|
@ -1,7 +1,7 @@
|
|||
import
|
||||
os, net,
|
||||
os, net, sequtils,
|
||||
asyncdispatch2, chronicles, confutils, eth_p2p, eth_keys,
|
||||
spec/[beaconstate, datatypes, helpers], conf, time, fork_choice,
|
||||
spec/[beaconstate, datatypes, helpers, crypto], conf, time, fork_choice,
|
||||
beacon_chain_db, validator_pool, mainchain_monitor,
|
||||
sync_protocol, gossipsub_protocol, trusted_state_snapshots
|
||||
|
||||
|
@ -67,16 +67,30 @@ proc sync*(node: BeaconNode): Future[bool] {.async.} =
|
|||
|
||||
return true
|
||||
|
||||
template findIt(s: openarray, predicate: untyped): int =
|
||||
var res = -1
|
||||
for i, it {.inject.} in s:
|
||||
if predicate:
|
||||
res = i
|
||||
break
|
||||
res
|
||||
|
||||
proc addLocalValidators*(node: BeaconNode) =
|
||||
for validator in node.config.validatorKeys:
|
||||
# TODO:
|
||||
# 1. Parse the validator keys
|
||||
#
|
||||
let privKey = loadPrivKey(validator)
|
||||
let pubKey = privKey.pubKey()
|
||||
|
||||
# 2. Check whether the validators exist in the beacon state.
|
||||
# (Report a warning otherwise)
|
||||
#
|
||||
# 3. Add the validators to node.attachedValidators
|
||||
discard
|
||||
let idx = node.beaconState.validator_registry.findIt(it.pubKey == pubKey)
|
||||
if idx == -1:
|
||||
warn "Validator not in registry", pubKey
|
||||
else:
|
||||
# 3. Add the validators to node.attachedValidators
|
||||
# TODO: Parse randao secret
|
||||
node.attachedValidators.addLocalValidator(idx, pubKey, privKey, @[])
|
||||
|
||||
|
||||
proc getAttachedValidator(node: BeaconNode, idx: int): AttachedValidator =
|
||||
let validatorKey = node.beaconState.validator_registry[idx].pubkey
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import
|
||||
confutils/defs
|
||||
confutils/defs, spec/crypto, milagro_crypto
|
||||
|
||||
type
|
||||
ValidatorKeyPath* = distinct string
|
||||
|
@ -25,9 +25,14 @@ type
|
|||
"Nimbus will automatically add the extensions .privkey and .pubkey.",
|
||||
shorthand: "v".}: seq[ValidatorKeyPath]
|
||||
|
||||
proc loadPrivKey*(p: ValidatorKeyPath): ValidatorPrivKey =
|
||||
initSigKey(cast[seq[byte]](readFile(string(p) & ".privkey")))
|
||||
|
||||
proc parse*(T: type ValidatorKeyPath, input: TaintedString): T =
|
||||
discard loadPrivKey(ValidatorKeyPath(input))
|
||||
|
||||
# TODO:
|
||||
# Check that the entered string is a valid base file name and
|
||||
# that it has matching .privkey, .pubkey and .randaosecret files
|
||||
# that it has matching .privkey, and .randaosecret files
|
||||
T(input)
|
||||
|
||||
|
|
|
@ -20,3 +20,5 @@ type
|
|||
template hash*(k: ValidatorPubKey|ValidatorPrivKey): Hash =
|
||||
hash(k.getRaw)
|
||||
|
||||
proc pubKey*(pk: ValidatorPrivKey): ValidatorPubKey = fromSigKey(pk)
|
||||
|
||||
|
|
|
@ -10,4 +10,6 @@ import
|
|||
./test_block_processing,
|
||||
./test_helpers,
|
||||
./test_ssz,
|
||||
./test_validator
|
||||
./test_validator,
|
||||
./test_beacon_node,
|
||||
./test_sync_protocol
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
# beacon_chain
|
||||
# Copyright (c) 2018 Status Research & Development GmbH
|
||||
# Licensed and distributed under either of
|
||||
# * MIT license (license terms in the root directory or at http://opensource.org/licenses/MIT).
|
||||
# * Apache v2 license (license terms in the root directory or at http://www.apache.org/licenses/LICENSE-2.0).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
import
|
||||
unittest,
|
||||
../beacon_chain/beacon_node
|
||||
|
||||
suite "Beacon node":
|
||||
# Compile test
|
||||
|
||||
test "Compile":
|
||||
discard
|
|
@ -0,0 +1,16 @@
|
|||
# beacon_chain
|
||||
# Copyright (c) 2018 Status Research & Development GmbH
|
||||
# Licensed and distributed under either of
|
||||
# * MIT license (license terms in the root directory or at http://opensource.org/licenses/MIT).
|
||||
# * Apache v2 license (license terms in the root directory or at http://www.apache.org/licenses/LICENSE-2.0).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
import
|
||||
unittest,
|
||||
../beacon_chain/sync_protocol
|
||||
|
||||
suite "Sync protocol":
|
||||
# Compile test
|
||||
|
||||
test "Compile":
|
||||
discard
|
Loading…
Reference in New Issue