Switch to 30 seconds slot duration; UX improvements
* On the testnet site, the first N instead of the last N validators will be considered reserved for users * The number of validators is consistently named `totalValidators` in all commands * Proper keys are generated by default in validator_keygen
This commit is contained in:
parent
a3ce9d17ec
commit
b3d23c052c
|
@ -704,7 +704,7 @@ when isMainModule:
|
||||||
case config.cmd
|
case config.cmd
|
||||||
of createTestnet:
|
of createTestnet:
|
||||||
var deposits: seq[Deposit]
|
var deposits: seq[Deposit]
|
||||||
for i in config.firstValidator.int ..< config.numValidators.int:
|
for i in config.firstValidator.int ..< config.totalValidators.int:
|
||||||
let depositFile = config.validatorsDir /
|
let depositFile = config.validatorsDir /
|
||||||
validatorFileBaseName(i) & ".deposit.json"
|
validatorFileBaseName(i) & ".deposit.json"
|
||||||
deposits.add Json.loadFile(depositFile, Deposit)
|
deposits.add Json.loadFile(depositFile, Deposit)
|
||||||
|
@ -728,8 +728,8 @@ when isMainModule:
|
||||||
numShards: SHARD_COUNT,
|
numShards: SHARD_COUNT,
|
||||||
slotDuration: SECONDS_PER_SLOT,
|
slotDuration: SECONDS_PER_SLOT,
|
||||||
slotsPerEpoch: SLOTS_PER_EPOCH,
|
slotsPerEpoch: SLOTS_PER_EPOCH,
|
||||||
totalValidators: config.numValidators,
|
totalValidators: config.totalValidators,
|
||||||
firstUserValidator: config.firstUserValidator)
|
lastUserValidator: config.lastUserValidator)
|
||||||
|
|
||||||
Json.saveFile(config.outputNetwork.string, testnetMetadata, pretty = true)
|
Json.saveFile(config.outputNetwork.string, testnetMetadata, pretty = true)
|
||||||
echo "Wrote ", config.outputNetwork.string
|
echo "Wrote ", config.outputNetwork.string
|
||||||
|
|
|
@ -250,8 +250,8 @@ type
|
||||||
slotDuration*: uint64
|
slotDuration*: uint64
|
||||||
slotsPerEpoch*: uint64
|
slotsPerEpoch*: uint64
|
||||||
totalValidators*: uint64
|
totalValidators*: uint64
|
||||||
firstUserValidator*: uint64
|
lastUserValidator*: uint64
|
||||||
|
|
||||||
proc userValidatorsRange*(d: NetworkMetadata): HSlice[int, int] =
|
proc userValidatorsRange*(d: NetworkMetadata): HSlice[int, int] =
|
||||||
d.firstUserValidator.int ..< d.totalValidators.int
|
0 .. d.lastUserValidator.int
|
||||||
|
|
||||||
|
|
|
@ -85,15 +85,15 @@ type
|
||||||
desc: "Directory containing validator descriptors named vXXXXXXX.deposit.json"
|
desc: "Directory containing validator descriptors named vXXXXXXX.deposit.json"
|
||||||
shortform: "d".}: InputDir
|
shortform: "d".}: InputDir
|
||||||
|
|
||||||
numValidators* {.
|
totalValidators* {.
|
||||||
desc: "The number of validators in the newly created chain".}: uint64
|
desc: "The number of validators in the newly created chain".}: uint64
|
||||||
|
|
||||||
firstValidator* {.
|
firstValidator* {.
|
||||||
desc: "Index of first validator to add to validator list"
|
desc: "Index of first validator to add to validator list"
|
||||||
defaultValue: 0 .}: uint64
|
defaultValue: 0 .}: uint64
|
||||||
|
|
||||||
firstUserValidator* {.
|
lastUserValidator* {.
|
||||||
desc: "The first validator index that will free for taking from a testnet participant"
|
desc: "The last validator index that will free for taking from a testnet participant"
|
||||||
defaultValue: 0 .}: uint64
|
defaultValue: 0 .}: uint64
|
||||||
|
|
||||||
bootstrapAddress* {.
|
bootstrapAddress* {.
|
||||||
|
|
|
@ -12,11 +12,11 @@ proc writeFile(filename: string, value: auto) =
|
||||||
Json.saveFile(filename, value, pretty = true)
|
Json.saveFile(filename, value, pretty = true)
|
||||||
echo "Wrote ", filename
|
echo "Wrote ", filename
|
||||||
|
|
||||||
cli do (validators: int = 125000,
|
cli do (totalValidators: int = 125000,
|
||||||
outputDir: string = "validators",
|
outputDir: string = "validators",
|
||||||
generateFakeKeys = true):
|
generateFakeKeys = false):
|
||||||
|
|
||||||
for i in 0 ..< validators:
|
for i in 0 ..< totalValidators:
|
||||||
let
|
let
|
||||||
v = validatorFileBaseName(i)
|
v = validatorFileBaseName(i)
|
||||||
depositFn = outputDir / v & ".deposit.json"
|
depositFn = outputDir / v & ".deposit.json"
|
||||||
|
|
|
@ -19,8 +19,8 @@ The `beacon_node` binary has a `createTestnet` command.
|
||||||
createTestnet \
|
createTestnet \
|
||||||
--networkId=$NETWORK_ID \
|
--networkId=$NETWORK_ID \
|
||||||
--validatorsDir=$NETWORK_DIR \
|
--validatorsDir=$NETWORK_DIR \
|
||||||
--numValidators=$VALIDATOR_COUNT \
|
--totalValidators=$VALIDATOR_COUNT \
|
||||||
--firstUserValidator=$FIRST_USER_VALIDATOR \
|
--lastUserValidator=$LAST_USER_VALIDATOR \
|
||||||
--outputGenesis=$NETWORK_DIR/genesis.json \
|
--outputGenesis=$NETWORK_DIR/genesis.json \
|
||||||
--outputNetwork=$NETWORK_DIR/$NETWORK_FLAVOUR-network.json \
|
--outputNetwork=$NETWORK_DIR/$NETWORK_FLAVOUR-network.json \
|
||||||
--bootstrapAddress=$PUBLIC_IP \
|
--bootstrapAddress=$PUBLIC_IP \
|
||||||
|
|
|
@ -8,7 +8,7 @@ source "$NETWORK_NAME.env"
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
NIM_FLAGS="-d:release --lineTrace:on -d:SHARD_COUNT=$SHARD_COUNT -d:SLOTS_PER_EPOCH=$SLOTS_PER_EPOCH"
|
NIM_FLAGS="-d:release --lineTrace:on -d:SECONDS_PER_SLOT=$SECONDS_PER_SLOT -d:SHARD_COUNT=$SHARD_COUNT -d:SLOTS_PER_EPOCH=$SLOTS_PER_EPOCH"
|
||||||
nim c $NIM_FLAGS beacon_chain/beacon_node
|
nim c $NIM_FLAGS beacon_chain/beacon_node
|
||||||
|
|
||||||
if [ ! -d ~/.cache/nimbus/BeaconNode/$NETWORK_NAME/validators ]; then
|
if [ ! -d ~/.cache/nimbus/BeaconNode/$NETWORK_NAME/validators ]; then
|
||||||
|
|
|
@ -18,14 +18,13 @@ PUBLIC_IP=$(curl -s ifconfig.me)
|
||||||
NETWORK_DIR=$WWW_DIR/$NETWORK_NAME
|
NETWORK_DIR=$WWW_DIR/$NETWORK_NAME
|
||||||
|
|
||||||
regenTestnetFiles() {
|
regenTestnetFiles() {
|
||||||
NIM_FLAGS="-d:release -d:SHARD_COUNT=$SHARD_COUNT -d:SLOTS_PER_EPOCH=$SLOTS_PER_EPOCH ${2:-}"
|
NIM_FLAGS="-d:release -d:SECONDS_PER_SLOT=$SECONDS_PER_SLOT -d:SHARD_COUNT=$SHARD_COUNT -d:SLOTS_PER_EPOCH=$SLOTS_PER_EPOCH ${2:-}"
|
||||||
NETWORK_FLAVOUR=$1
|
NETWORK_FLAVOUR=$1
|
||||||
|
|
||||||
if [ ! -f $NETWORK_DIR/genesis.json ]; then
|
if [ ! -f $NETWORK_DIR/genesis.json ]; then
|
||||||
rm -f $NETWORK_DIR/*
|
rm -f $NETWORK_DIR/*
|
||||||
nim c -r $NIM_FLAGS beacon_chain/validator_keygen \
|
nim c -r $NIM_FLAGS beacon_chain/validator_keygen \
|
||||||
--generateFakeKeys=no \
|
--totalValidators=$VALIDATOR_COUNT \
|
||||||
--validators=$VALIDATOR_COUNT \
|
|
||||||
--outputDir="$NETWORK_DIR"
|
--outputDir="$NETWORK_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -35,8 +34,8 @@ regenTestnetFiles() {
|
||||||
createTestnet \
|
createTestnet \
|
||||||
--networkId=$NETWORK_ID \
|
--networkId=$NETWORK_ID \
|
||||||
--validatorsDir=$NETWORK_DIR \
|
--validatorsDir=$NETWORK_DIR \
|
||||||
--numValidators=$VALIDATOR_COUNT \
|
--totalValidators=$VALIDATOR_COUNT \
|
||||||
--firstUserValidator=$FIRST_USER_VALIDATOR \
|
--lastUserValidator=$LAST_USER_VALIDATOR \
|
||||||
--outputGenesis=$NETWORK_DIR/genesis.json \
|
--outputGenesis=$NETWORK_DIR/genesis.json \
|
||||||
--outputNetwork=$NETWORK_DIR/$NETWORK_FLAVOUR-network.json \
|
--outputNetwork=$NETWORK_DIR/$NETWORK_FLAVOUR-network.json \
|
||||||
--bootstrapAddress=$PUBLIC_IP \
|
--bootstrapAddress=$PUBLIC_IP \
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
NETWORK_ID=1000000
|
NETWORK_ID=1000000
|
||||||
SHARD_COUNT=8
|
SHARD_COUNT=8
|
||||||
SLOTS_PER_EPOCH=8
|
SLOTS_PER_EPOCH=8
|
||||||
|
SECONDS_PER_SLOT=30
|
||||||
VALIDATOR_COUNT=400
|
VALIDATOR_COUNT=400
|
||||||
FIRST_USER_VALIDATOR=340
|
LAST_USER_VALIDATOR=49
|
||||||
BOOTSTRAP_PORT=9000
|
BOOTSTRAP_PORT=9000
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
NETWORK_ID=2000000
|
NETWORK_ID=2000000
|
||||||
SHARD_COUNT=128
|
SHARD_COUNT=128
|
||||||
SLOTS_PER_EPOCH=64
|
SLOTS_PER_EPOCH=64
|
||||||
|
SECONDS_PER_SLOT=30
|
||||||
VALIDATOR_COUNT=20000
|
VALIDATOR_COUNT=20000
|
||||||
FIRST_USER_VALIDATOR=19000
|
LAST_USER_VALIDATOR=1999
|
||||||
BOOTSTRAP_PORT=9100
|
BOOTSTRAP_PORT=9100
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,10 @@ if [ ! -f $LAST_VALIDATOR ]; then
|
||||||
nim c -o:"$VALIDATOR_KEYGEN_BIN" $DEFS -d:release beacon_chain/validator_keygen
|
nim c -o:"$VALIDATOR_KEYGEN_BIN" $DEFS -d:release beacon_chain/validator_keygen
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$VALIDATOR_KEYGEN_BIN --validators=$NUM_VALIDATORS --outputDir="$VALIDATORS_DIR"
|
$VALIDATOR_KEYGEN_BIN \
|
||||||
|
--totalValidators=$NUM_VALIDATORS \
|
||||||
|
--outputDir="$VALIDATORS_DIR" \
|
||||||
|
--generateFakeKeys=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "$SKIP_BUILDS" ]]; then
|
if [[ -z "$SKIP_BUILDS" ]]; then
|
||||||
|
@ -41,10 +44,11 @@ if [[ -z "$SKIP_BUILDS" ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $SNAPSHOT_FILE ]; then
|
if [ ! -f $SNAPSHOT_FILE ]; then
|
||||||
$BEACON_NODE_BIN --dataDir=$SIMULATION_DIR/node-0 createTestnet \
|
$BEACON_NODE_BIN createTestnet \
|
||||||
|
--dataDir=$SIMULATION_DIR/node-0 \
|
||||||
--networkId=1000 \
|
--networkId=1000 \
|
||||||
--validatorsDir=$VALIDATORS_DIR \
|
--validatorsDir=$VALIDATORS_DIR \
|
||||||
--numValidators=$NUM_VALIDATORS \
|
--totalValidators=$NUM_VALIDATORS \
|
||||||
--outputGenesis=$SNAPSHOT_FILE \
|
--outputGenesis=$SNAPSHOT_FILE \
|
||||||
--outputNetwork=$NETWORK_METADATA_FILE \
|
--outputNetwork=$NETWORK_METADATA_FILE \
|
||||||
--bootstrapAddress=127.0.0.1 \
|
--bootstrapAddress=127.0.0.1 \
|
||||||
|
|
Loading…
Reference in New Issue