mirror of
https://github.com/status-im/nimbus-eth2.git
synced 2025-02-10 21:46:32 +00:00
- we have a new binary which connects via RPC to the respective BN and has an internal clock - waking it up on every slot - the BN has a new option called --external-validators and currently in order to have the VC binaries to run we need to pass EXTERNAL_VALIDATORS=yes to make - factored some code out of beacon_node.nim for easier reuse in validator_api.nim and validator_client.nim - the VC loads its associated private keys from the datadir for its BN - most of the validator API calls have been implemented as a stub. - the VC polls its BN at the start of each epoch - getting a list of all active validators for the current epoch - and then continues to request blocks and sign them with its appropriate validators when necessary
45 lines
1.2 KiB
Nim
45 lines
1.2 KiB
Nim
import
|
|
# Standard library
|
|
tables, json,
|
|
|
|
# Nimble packages
|
|
stew/[bitseqs],
|
|
json_rpc/jsonmarshal,
|
|
|
|
# Local modules
|
|
spec/[datatypes, digest, crypto]
|
|
|
|
proc fromJson*(n: JsonNode, argName: string, result: var ValidatorPubKey) =
|
|
result = ValidatorPubKey.fromHex(n.getStr()).tryGet()
|
|
|
|
proc `%`*(pubkey: ValidatorPubKey): JsonNode =
|
|
result = newJString($pubkey)
|
|
|
|
proc fromJson*(n: JsonNode, argName: string, result: var List) =
|
|
fromJson(n, argName, asSeq result)
|
|
|
|
proc `%`*(list: List): JsonNode = %(asSeq(list))
|
|
|
|
proc fromJson*(n: JsonNode, argName: string, result: var BitList) =
|
|
fromJson(n, argName, seq[byte](BitSeq(result)))
|
|
|
|
proc `%`*(bitlist: BitList): JsonNode = %(seq[byte](BitSeq(bitlist)))
|
|
|
|
proc fromJson*(n: JsonNode, argName: string, result: var ValidatorSig) =
|
|
result = ValidatorSig.fromHex(n.getStr()).tryGet()
|
|
|
|
proc `%`*(value: ValidatorSig): JsonNode =
|
|
result = newJString($value)
|
|
|
|
template genFromJsonForIntType(t: untyped) =
|
|
proc fromJson*(n: JsonNode, argName: string, result: var t) =
|
|
n.kind.expect(JInt, argName)
|
|
result = n.getInt().t
|
|
|
|
genFromJsonForIntType(Epoch)
|
|
genFromJsonForIntType(Slot)
|
|
genFromJsonForIntType(CommitteeIndex)
|
|
|
|
proc `%`*(value: CommitteeIndex): JsonNode =
|
|
result = newJInt(value.int)
|