You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We want to allow non-participants to create the cluster definition. We also want to make it explicit who created the cluster definition if it is one of the operators (who is the leader). Currently, it is implicitly the first operator.
Proposed solution
Add a creator nested top level field to the cluster definition with two fields itself, address and config_signature.
The address and config_signature fields are exactly the same as the operator address and config_signature fields. If the creator is also an operator, then the data is duplicated.
These fields will be left empty with charon create cluster, same as the operator fields.
This is part of new draft version v1.4.
Add the creator config_signature as part of definition signature verification.
The ssz spec:
type Definition struct {
// UUID is a human-readable random unique identifier. Max 64 chars.
UUID string `json:"uuid" ssz:"ByteList[64]" config_hash:"0" definition_hash:"0"`
// Name is a human-readable cosmetic identifier. Max 256 chars.
Name string `json:"name" ssz:"ByteList[256]" config_hash:"1" definition_hash:"1"`
// Version is the schema version of this definition. Max 16 chars.
Version string `json:"version" ssz:"ByteList[16]" config_hash:"2" definition_hash:"2"`
// Timestamp is the human-readable timestamp of this definition. Max 32 chars.
// Note that this was added in v1.1.0, so may be empty for older versions.
Timestamp string `json:"timestamp" ssz:"ByteList[32]" config_hash:"3" definition_hash:"3"`
// NumValidators is the number of DVs (n*32ETH) to be created in the cluster lock file.
NumValidators int `json:"num_validators" ssz:"uint64" config_hash:"4" definition_hash:"4"`
// Threshold required for signature reconstruction. Defaults to safe value for number of nodes/peers.
Threshold int `json:"threshold" ssz:"uint64" config_hash:"5" definition_hash:"5"`
// FeeRecipientAddress 20 byte Ethereum address.
FeeRecipientAddress string `json:"fee_recipient_address,0xhex" ssz:"Bytes20" config_hash:"6" definition_hash:"6"`
// WithdrawalAddress 20 byte Ethereum address.
WithdrawalAddress string `json:"withdrawal_address,0xhex" ssz:"Bytes20" config_hash:"7" definition_hash:"7"`
// DKGAlgorithm to use for key generation. Max 32 chars.
DKGAlgorithm string `json:"dkg_algorithm" ssz:"ByteList[32]" config_hash:"8" definition_hash:"8"`
// ForkVersion defines the cluster's 4 byte beacon chain fork version (network/chain identifier).
ForkVersion []byte `json:"fork_version,0xhex" ssz:"Bytes4" config_hash:"9" definition_hash:"9"`
// Operators define the charon nodes in the cluster and their operators. Max 256 operators.
Operators []Operator `json:"operators" ssz:"CompositeList[256]" config_hash:"10" definition_hash:"10"`
// Creator identifies the creator of the cluster definition.
Creator Creator `json:"creator" ssz:"Composite" config_hash:"11" definition_hash:"12"`
// ConfigHash uniquely identifies a cluster definition excluding operator ENRs and signatures.
ConfigHash []byte `json:"config_hash,0xhex" ssz:"Bytes32" config_hash:"-" definition_hash:"11"`
// DefinitionHash uniquely identifies a cluster definition including operator ENRs and signatures.
DefinitionHash []byte `json:"definition_hash,0xhex" ssz:"Bytes32" config_hash:"-" definition_hash:"-"`
}
// Creator identifies the creator of the cluster definition.
type Creator struct {
// The 20 byte Ethereum address of the creator
Address string `json:"address,0xhex" ssz:"Bytes20" config_hash:"0" definition_hash:"0"`
// ConfigSignature is an EIP712 signature of the config_hash using privkey corresponding to operator Ethereum Address.
ConfigSignature []byte `json:"config_signature,0xhex" ssz:"Bytes65" config_hash:"-" definition_hash:"1"`
}
Out of Scope
Only release v1.4 once launchpad has been upgrade and tested and everything works.
The text was updated successfully, but these errors were encountered:
Problem to be solved
We want to allow non-participants to create the cluster definition. We also want to make it explicit who created the cluster definition if it is one of the operators (who is the leader). Currently, it is implicitly the first operator.
Proposed solution
Add a
creator
nested top level field to the cluster definition with two fields itself,address
andconfig_signature
.The address and config_signature fields are exactly the same as the operator address and config_signature fields. If the creator is also an operator, then the data is duplicated.
These fields will be left empty with
charon create cluster
, same as the operator fields.This is part of new draft version v1.4.
Add the creator config_signature as part of definition signature verification.
The ssz spec:
Out of Scope
Only release v1.4 once launchpad has been upgrade and tested and everything works.
The text was updated successfully, but these errors were encountered: