Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added .changelog/6481.trivial.md
Empty file.
20 changes: 20 additions & 0 deletions go/oasis-node/cmd/debug/byzantine/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ import (
beacon "github.com/oasisprotocol/oasis-core/go/beacon/api"
"github.com/oasisprotocol/oasis-core/go/common"
"github.com/oasisprotocol/oasis-core/go/common/crypto/signature"
"github.com/oasisprotocol/oasis-core/go/common/entity"
"github.com/oasisprotocol/oasis-core/go/common/identity"
"github.com/oasisprotocol/oasis-core/go/common/logging"
"github.com/oasisprotocol/oasis-core/go/common/node"
"github.com/oasisprotocol/oasis-core/go/config"
consensus "github.com/oasisprotocol/oasis-core/go/consensus/api"
genesis "github.com/oasisprotocol/oasis-core/go/genesis/file"
cmdCommon "github.com/oasisprotocol/oasis-core/go/oasis-node/cmd/common"
Expand Down Expand Up @@ -124,6 +126,23 @@ func initializeAndRegisterByzantineNode(
"id", b.identity.NodeSigner.Public(),
)

var entityID *signature.PublicKey
if cmdFlags.DebugTestEntity() {
testEntity, _, _ := entity.TestEntity()
entityID = &testEntity.ID
} else {
entityID, err = config.GlobalConfig.Registration.ResolveEntityID()
if err != nil {
return nil, fmt.Errorf("failed to resolve entity ID: %w", err)
}
}
if entityID == nil {
return nil, fmt.Errorf("no entity ID configured")
}
if !entityID.IsValid() {
return nil, fmt.Errorf("invalid entity ID")
}

// Initialize the genesis provider.
genesis := genesis.NewProvider(cmdFlags.GenesisFile())

Expand Down Expand Up @@ -172,6 +191,7 @@ func initializeAndRegisterByzantineNode(
if err = registryRegisterNode(
b.cometbft.service,
b.identity,
*entityID,
b.p2p.service.Addresses(),
b.runtimeID,
b.capabilities,
Expand Down
29 changes: 15 additions & 14 deletions go/oasis-node/cmd/debug/byzantine/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,17 @@ import (
"github.com/oasisprotocol/oasis-core/go/common/node"
consensus "github.com/oasisprotocol/oasis-core/go/consensus/api"
registry "github.com/oasisprotocol/oasis-core/go/registry/api"
"github.com/oasisprotocol/oasis-core/go/worker/registration"
)

func registryRegisterNode(svc consensus.Service, id *identity.Identity, p2pAddresses []node.Address, runtimeID common.Namespace, capabilities *node.Capabilities, roles node.RolesMask) error {
entityID, registrationSigner, err := registration.GetRegistrationSigner(id)
if err != nil {
return fmt.Errorf("registration GetRegistrationSigner: %w", err)
}
if registrationSigner == nil {
return fmt.Errorf("nil registrationSigner")
}

func registryRegisterNode(
svc consensus.Service,
id *identity.Identity,
entityID signature.PublicKey,
p2pAddresses []node.Address,
runtimeID common.Namespace,
capabilities *node.Capabilities,
roles node.RolesMask,
) error {
var runtimes []*node.Runtime
if roles&registry.RuntimesRequiredRoles != 0 {
runtimes = []*node.Runtime{
Expand Down Expand Up @@ -57,13 +56,15 @@ func registryRegisterNode(svc consensus.Service, id *identity.Identity, p2pAddre
nodeDesc.Runtimes[0].Capabilities = *capabilities
}
if roles&node.RoleValidator != 0 {
if nodeDesc.Consensus.Addresses, err = svc.GetAddresses(); err != nil {
return fmt.Errorf("consensus GetAddresses: %w", err)
addrs, err := svc.GetAddresses()
if err != nil {
return fmt.Errorf("failed to get consensus backend addresses: %w", err)
}
nodeDesc.Consensus.Addresses = addrs
}
signedNode, err := node.MultiSignNode(
[]signature.Signer{
registrationSigner,
id.NodeSigner,
id.P2PSigner,
id.ConsensusSigner,
id.VRFSigner,
Expand All @@ -77,7 +78,7 @@ func registryRegisterNode(svc consensus.Service, id *identity.Identity, p2pAddre
}

tx := registry.NewRegisterNodeTx(0, nil, signedNode)
if err := consensus.SignAndSubmitTx(context.Background(), svc, registrationSigner, tx); err != nil {
if err := consensus.SignAndSubmitTx(context.Background(), svc, id.NodeSigner, tx); err != nil {
return fmt.Errorf("consensus RegisterNode tx: %w", err)
}
return nil
Expand Down
44 changes: 37 additions & 7 deletions go/oasis-node/cmd/node/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ import (

beacon "github.com/oasisprotocol/oasis-core/go/beacon/api"
"github.com/oasisprotocol/oasis-core/go/common/crash"
"github.com/oasisprotocol/oasis-core/go/common/crypto/signature"
"github.com/oasisprotocol/oasis-core/go/common/entity"
"github.com/oasisprotocol/oasis-core/go/common/grpc"
"github.com/oasisprotocol/oasis-core/go/common/identity"
"github.com/oasisprotocol/oasis-core/go/common/logging"
"github.com/oasisprotocol/oasis-core/go/common/node"
"github.com/oasisprotocol/oasis-core/go/common/persistent"
"github.com/oasisprotocol/oasis-core/go/common/version"
"github.com/oasisprotocol/oasis-core/go/config"
Expand Down Expand Up @@ -72,6 +75,7 @@ type Node struct {

Upgrader upgradeAPI.Backend
Identity *identity.Identity
EntityID *signature.PublicKey
Sentry sentryAPI.Backend

RuntimeRegistry runtimeRegistry.Registry
Expand Down Expand Up @@ -190,9 +194,18 @@ func (n *Node) startRuntimeServices(genesisDoc *genesisAPI.Document) error {
}

func (n *Node) initRuntimeWorkers(genesisDoc *genesisAPI.Document) error {
var err error
// Parse sentry configuration.
var sentryAddresses []node.TLSAddress
for _, v := range config.GlobalConfig.Runtime.SentryAddresses {
Comment thread
peternose marked this conversation as resolved.
var tlsAddr node.TLSAddress
if err := tlsAddr.UnmarshalText([]byte(v)); err != nil {
return fmt.Errorf("bad sentry address (%s): %w", v, err)
}
sentryAddresses = append(sentryAddresses, tlsAddr)
}

// Initialize runtime provisioner.
var err error
n.Provisioner, err = provisioner.New(n.dataDir, n.commonStore, n.Identity, n.Consensus, genesisDoc)
if err != nil {
return err
Expand All @@ -206,9 +219,11 @@ func (n *Node) initRuntimeWorkers(genesisDoc *genesisAPI.Document) error {
n.svcMgr.Register(n.RuntimeRegistry)

// Initialize the common worker.
commonCfg := workerCommon.Config{
TxPool: config.GlobalConfig.Runtime.TxPool,
}
n.CommonWorker, err = workerCommon.New(
n,
n.dataDir,
commonCfg,
Comment thread
peternose marked this conversation as resolved.
n.chainContext,
n.Identity,
n.Consensus,
Expand All @@ -226,16 +241,15 @@ func (n *Node) initRuntimeWorkers(genesisDoc *genesisAPI.Document) error {
}
n.svcMgr.Register(n.CommonWorker)

workerCommonCfg := n.CommonWorker.GetConfig()

// Initialize the registration worker.
n.RegistrationWorker, err = workerRegistration.New(
n.Consensus.Beacon(),
n.Consensus.Registry(),
n.Identity,
n.EntityID,
n.Consensus,
n.P2P,
&workerCommonCfg,
sentryAddresses,
n.commonStore,
n, // the delegate to be called on registration shutdown
n.RuntimeRegistry,
Expand All @@ -255,7 +269,7 @@ func (n *Node) initRuntimeWorkers(genesisDoc *genesisAPI.Document) error {
n.BeaconWorker, err = workerBeacon.New(
n.Identity,
n.Consensus,
n.RegistrationWorker,
n.EntityID != nil,
)
if err != nil {
return err
Expand Down Expand Up @@ -445,6 +459,22 @@ func NewNode() (node *Node, err error) { // nolint: gocyclo
return nil, err
}

// Load the owning node's entity ID.
var entityID *signature.PublicKey
if flags.DebugTestEntity() {
testEntity, _, _ := entity.TestEntity()
entityID = &testEntity.ID
} else {
entityID, err = config.GlobalConfig.Registration.ResolveEntityID()
if err != nil {
return nil, fmt.Errorf("failed to resolve entity ID: %w", err)
}
}
if entityID != nil && !entityID.IsValid() {
return nil, fmt.Errorf("invalid entity ID")
}
node.EntityID = entityID

// Load configured values for all registered crash points.
crash.LoadViperArgValues()

Expand Down
8 changes: 3 additions & 5 deletions go/worker/beacon/worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"github.com/oasisprotocol/oasis-core/go/common/identity"
"github.com/oasisprotocol/oasis-core/go/common/logging"
consensus "github.com/oasisprotocol/oasis-core/go/consensus/api"
"github.com/oasisprotocol/oasis-core/go/worker/registration"
)

const workerName = "worker/beacon"
Expand Down Expand Up @@ -60,7 +59,7 @@ func (w *Worker) Name() string {
func New(
identity *identity.Identity,
consensus consensus.Service,
registrationWorker *registration.Worker,
enabled bool,
) (*Worker, error) {
var (
err error
Expand All @@ -74,9 +73,8 @@ func New(
}

initLogger := logging.GetLogger(workerName)
if registrationWorker.WillNeverRegister() {
// Some node configurations never register, and that's ok.
initLogger.Info("registration worker disabled, also disabling beacon worker")
if !enabled {
initLogger.Info("beacon worker disabled")
close(w.allQuitCh)
return w, nil
}
Expand Down
5 changes: 0 additions & 5 deletions go/worker/common/committee/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (
"github.com/oasisprotocol/oasis-core/go/common/version"
"github.com/oasisprotocol/oasis-core/go/config"
consensus "github.com/oasisprotocol/oasis-core/go/consensus/api"
control "github.com/oasisprotocol/oasis-core/go/control/api"
keymanager "github.com/oasisprotocol/oasis-core/go/keymanager/api"
cmmetrics "github.com/oasisprotocol/oasis-core/go/oasis-node/cmd/common/metrics"
p2pAPI "github.com/oasisprotocol/oasis-core/go/p2p/api"
Expand Down Expand Up @@ -56,8 +55,6 @@ type Node struct {
Runtime runtimeRegistry.Runtime
RuntimeRegistry runtimeRegistry.Registry

HostNode control.NodeController

Identity *identity.Identity
KeyManager keymanager.Backend
KeyManagerClient *KeyManagerClientWrapper
Expand Down Expand Up @@ -632,7 +629,6 @@ func (n *Node) handleDispatchInfo() {

func NewNode(
chainContext string,
hostNode control.NodeController,
runtime runtimeRegistry.Runtime,
provisioner host.Provisioner,
rtRegistry runtimeRegistry.Registry,
Expand Down Expand Up @@ -660,7 +656,6 @@ func NewNode(

n := &Node{
ChainContext: chainContext,
HostNode: hostNode,
Runtime: runtime,
RuntimeRegistry: rtRegistry,
Identity: identity,
Expand Down
30 changes: 0 additions & 30 deletions go/worker/common/config.go
Original file line number Diff line number Diff line change
@@ -1,40 +1,10 @@
package common

import (
"fmt"

"github.com/oasisprotocol/oasis-core/go/common/logging"
"github.com/oasisprotocol/oasis-core/go/common/node"
"github.com/oasisprotocol/oasis-core/go/config"
tpConfig "github.com/oasisprotocol/oasis-core/go/runtime/txpool/config"
)

// Config contains common worker config.
type Config struct {
SentryAddresses []node.TLSAddress

TxPool tpConfig.Config

logger *logging.Logger
}

// NewConfig creates a new worker config.
func NewConfig() (*Config, error) {
// Parse sentry configuration.
var sentryAddresses []node.TLSAddress
for _, v := range config.GlobalConfig.Runtime.SentryAddresses {
var tlsAddr node.TLSAddress
if err := tlsAddr.UnmarshalText([]byte(v)); err != nil {
return nil, fmt.Errorf("worker: bad sentry address (%s): %w", v, err)
}
sentryAddresses = append(sentryAddresses, tlsAddr)
}

cfg := Config{
SentryAddresses: sentryAddresses,
TxPool: config.GlobalConfig.Runtime.TxPool,
logger: logging.GetLogger("worker/config"),
}

return &cfg, nil
}
21 changes: 2 additions & 19 deletions go/worker/common/worker.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package common

import (
"fmt"

"github.com/oasisprotocol/oasis-core/go/common"
"github.com/oasisprotocol/oasis-core/go/common/identity"
"github.com/oasisprotocol/oasis-core/go/common/logging"
Expand All @@ -22,7 +20,6 @@ type Worker struct {
cfg Config

HostNode control.NodeController
DataDir string
ChainContext string
Identity *identity.Identity
Consensus consensus.Service
Expand Down Expand Up @@ -131,11 +128,6 @@ func (w *Worker) Initialized() <-chan struct{} {
return w.initCh
}

// GetConfig returns the worker's configuration.
func (w *Worker) GetConfig() Config {
return w.cfg
}

// GetRuntimes returns a map of configured runtimes.
func (w *Worker) GetRuntimes() map[common.Namespace]*committee.Node {
return w.runtimes
Expand All @@ -156,7 +148,6 @@ func (w *Worker) registerRuntime(runtime runtimeRegistry.Runtime) error {

node, err := committee.NewNode(
w.ChainContext,
w.HostNode,
runtime,
w.Provisioner,
w.RuntimeRegistry,
Expand All @@ -181,8 +172,7 @@ func (w *Worker) registerRuntime(runtime runtimeRegistry.Runtime) error {

// New creates a new worker.
func New(
hostNode control.NodeController,
dataDir string,
cfg Config,
chainContext string,
identity *identity.Identity,
consensus consensus.Service,
Expand All @@ -203,16 +193,9 @@ func New(
enabled = true
}

cfg, err := NewConfig()
if err != nil {
return nil, fmt.Errorf("worker/common: failed to initialize config: %w", err)
}

w := &Worker{
enabled: enabled,
cfg: *cfg,
HostNode: hostNode,
DataDir: dataDir,
cfg: cfg,
ChainContext: chainContext,
Identity: identity,
Consensus: consensus,
Expand Down
Loading
Loading