From 1c1ad9dc6ec37499f510bcfc5da584ff5f67ebeb Mon Sep 17 00:00:00 2001 From: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> Date: Thu, 12 Sep 2024 16:35:45 -0400 Subject: [PATCH] remove type alias for actions and auth registry Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> --- api/dependencies.go | 7 ++++--- api/jsonrpc/server.go | 5 ++--- api/ws/server.go | 8 ++++---- chain/dependencies.go | 12 +++--------- chain/transaction.go | 8 ++++---- examples/morpheusvm/vm/client.go | 6 +++--- examples/vmwithcontracts/vm/client.go | 6 +++--- internal/gossiper/dependencies.go | 5 +++-- tests/integration/integration.go | 2 +- vm/defaultvm/vm.go | 7 ++++--- vm/resolutions.go | 7 ++++--- vm/vm.go | 13 +++++++------ 12 files changed, 42 insertions(+), 44 deletions(-) diff --git a/api/dependencies.go b/api/dependencies.go index f89258528d..874be7d6cb 100644 --- a/api/dependencies.go +++ b/api/dependencies.go @@ -12,6 +12,7 @@ import ( "github.com/ava-labs/avalanchego/utils/logging" "github.com/ava-labs/hypersdk/chain" + "github.com/ava-labs/hypersdk/codec" "github.com/ava-labs/hypersdk/fees" "github.com/ava-labs/hypersdk/genesis" "github.com/ava-labs/hypersdk/state" @@ -24,9 +25,9 @@ type VM interface { SubnetID() ids.ID Tracer() trace.Tracer Logger() logging.Logger - ActionRegistry() chain.ActionRegistry - OutputRegistry() chain.OutputRegistry - AuthRegistry() chain.AuthRegistry + ActionRegistry() *codec.TypeParser[chain.Action] + OutputRegistry() *codec.TypeParser[codec.Typed] + AuthRegistry() *codec.TypeParser[chain.Auth] Rules(t int64) chain.Rules Submit( ctx context.Context, diff --git a/api/jsonrpc/server.go b/api/jsonrpc/server.go index dcb1293aa1..39bbf7629e 100644 --- a/api/jsonrpc/server.go +++ b/api/jsonrpc/server.go @@ -152,8 +152,7 @@ type GetABIReply struct { func (j *JSONRPCServer) GetABI(_ *http.Request, _ *GetABIArgs, reply *GetABIReply) error { actionRegistry, outputRegistry := j.vm.ActionRegistry(), j.vm.OutputRegistry() - // Must dereference aliased type to call GetRegisteredTypes - vmABI, err := abi.NewABI((*actionRegistry).GetRegisteredTypes(), (*outputRegistry).GetRegisteredTypes()) + vmABI, err := abi.NewABI(actionRegistry.GetRegisteredTypes(), (*outputRegistry).GetRegisteredTypes()) if err != nil { return err } @@ -180,7 +179,7 @@ func (j *JSONRPCServer) Execute( defer span.End() actionRegistry := j.vm.ActionRegistry() - action, err := (*actionRegistry).Unmarshal(codec.NewReader(args.Action, len(args.Action))) + action, err := actionRegistry.Unmarshal(codec.NewReader(args.Action, len(args.Action))) if err != nil { return fmt.Errorf("failed to unmashal action: %w", err) } diff --git a/api/ws/server.go b/api/ws/server.go index 434f2b5742..c4896f3ff3 100644 --- a/api/ws/server.go +++ b/api/ws/server.go @@ -106,8 +106,8 @@ type WebSocketServer struct { vm api.VM logger logging.Logger tracer trace.Tracer - actionRegistry chain.ActionRegistry - authRegistry chain.AuthRegistry + actionRegistry *codec.TypeParser[chain.Action] + authRegistry *codec.TypeParser[chain.Auth] s *pubsub.Server @@ -122,8 +122,8 @@ func NewWebSocketServer( vm api.VM, log logging.Logger, tracer trace.Tracer, - actionRegistry chain.ActionRegistry, - authRegistry chain.AuthRegistry, + actionRegistry *codec.TypeParser[chain.Action], + authRegistry *codec.TypeParser[chain.Auth], maxPendingMessages int, ) (*WebSocketServer, *pubsub.Server) { w := &WebSocketServer{ diff --git a/chain/dependencies.go b/chain/dependencies.go index 3884670a4b..2e0d215d84 100644 --- a/chain/dependencies.go +++ b/chain/dependencies.go @@ -21,17 +21,11 @@ import ( "github.com/ava-labs/hypersdk/state" ) -type ( - ActionRegistry *codec.TypeParser[Action] - OutputRegistry *codec.TypeParser[codec.Typed] - AuthRegistry *codec.TypeParser[Auth] -) - type Parser interface { Rules(int64) Rules - ActionRegistry() ActionRegistry - OutputRegistry() OutputRegistry - AuthRegistry() AuthRegistry + ActionRegistry() *codec.TypeParser[Action] + OutputRegistry() *codec.TypeParser[codec.Typed] + AuthRegistry() *codec.TypeParser[Auth] } type Metrics interface { diff --git a/chain/transaction.go b/chain/transaction.go index e132598445..f435bd49e1 100644 --- a/chain/transaction.go +++ b/chain/transaction.go @@ -75,8 +75,8 @@ func (t *Transaction) Digest() ([]byte, error) { func (t *Transaction) Sign( factory AuthFactory, - actionRegistry ActionRegistry, - authRegistry AuthRegistry, + actionRegistry *codec.TypeParser[Action], + authRegistry *codec.TypeParser[Auth], ) (*Transaction, error) { msg, err := t.Digest() if err != nil { @@ -416,8 +416,8 @@ func MarshalTxs(txs []*Transaction) ([]byte, error) { func UnmarshalTxs( raw []byte, initialCapacity int, - actionRegistry ActionRegistry, - authRegistry AuthRegistry, + actionRegistry *codec.TypeParser[Action], + authRegistry *codec.TypeParser[Auth], ) (map[uint8]int, []*Transaction, error) { p := codec.NewReader(raw, consts.NetworkSizeLimit) txCount := p.UnpackInt(true) diff --git a/examples/morpheusvm/vm/client.go b/examples/morpheusvm/vm/client.go index af51a84140..a3d24f4bb4 100644 --- a/examples/morpheusvm/vm/client.go +++ b/examples/morpheusvm/vm/client.go @@ -106,15 +106,15 @@ func (p *Parser) Rules(_ int64) chain.Rules { return p.genesis.Rules } -func (*Parser) ActionRegistry() chain.ActionRegistry { +func (*Parser) ActionRegistry() *codec.TypeParser[chain.Action]{ return ActionParser } -func (*Parser) OutputRegistry() chain.OutputRegistry { +func (*Parser) OutputRegistry() *codec.TypeParser[chain.Output] { return OutputParser } -func (*Parser) AuthRegistry() chain.AuthRegistry { +func (*Parser) AuthRegistry() *codec.TypeParser[chain.Auth] { return AuthParser } diff --git a/examples/vmwithcontracts/vm/client.go b/examples/vmwithcontracts/vm/client.go index 75ad994846..aadec9c22d 100644 --- a/examples/vmwithcontracts/vm/client.go +++ b/examples/vmwithcontracts/vm/client.go @@ -109,15 +109,15 @@ func (p *Parser) Rules(_ int64) chain.Rules { return p.genesis.Rules } -func (*Parser) ActionRegistry() chain.ActionRegistry { +func (*Parser) ActionRegistry() *codec.TypeParser[chain.Action] { return ActionParser } -func (*Parser) OutputRegistry() chain.OutputRegistry { +func (*Parser) OutputRegistry() *codec.TypeParser[codec.Typed] { return OutputParser } -func (*Parser) AuthRegistry() chain.AuthRegistry { +func (*Parser) AuthRegistry() *codec.TypeParser[chain.Auth] { return AuthParser } diff --git a/internal/gossiper/dependencies.go b/internal/gossiper/dependencies.go index f9afed5ad1..dc408a3378 100644 --- a/internal/gossiper/dependencies.go +++ b/internal/gossiper/dependencies.go @@ -13,6 +13,7 @@ import ( "github.com/ava-labs/avalanchego/utils/set" "github.com/ava-labs/hypersdk/chain" + "github.com/ava-labs/hypersdk/codec" ) type VM interface { @@ -26,8 +27,8 @@ type VM interface { IsValidator(context.Context, ids.NodeID) (bool, error) Logger() logging.Logger PreferredBlock(context.Context) (*chain.StatefulBlock, error) - ActionRegistry() chain.ActionRegistry - AuthRegistry() chain.AuthRegistry + ActionRegistry() *codec.TypeParser[chain.Action] + AuthRegistry() *codec.TypeParser[chain.Auth] NodeID() ids.NodeID Rules(int64) chain.Rules Submit(ctx context.Context, verify bool, txs []*chain.Transaction) []error diff --git a/tests/integration/integration.go b/tests/integration/integration.go index a1105c7aca..acdcfbd040 100644 --- a/tests/integration/integration.go +++ b/tests/integration/integration.go @@ -306,7 +306,7 @@ var _ = ginkgo.Describe("[HyperSDK APIs]", func() { ginkgo.By("Gets ABI") actionRegistry, outputRegistry := instances[0].vm.ActionRegistry(), instances[0].vm.OutputRegistry() - expectedABI, err := abi.NewABI((*actionRegistry).GetRegisteredTypes(), (*outputRegistry).GetRegisteredTypes()) + expectedABI, err := abi.NewABI(actionRegistry.GetRegisteredTypes(), (*outputRegistry).GetRegisteredTypes()) require.NoError(err) workload.GetABI(ctx, require, uris, expectedABI) diff --git a/vm/defaultvm/vm.go b/vm/defaultvm/vm.go index 3ee7d30f1a..a0851aca7e 100644 --- a/vm/defaultvm/vm.go +++ b/vm/defaultvm/vm.go @@ -10,6 +10,7 @@ import ( "github.com/ava-labs/hypersdk/api/jsonrpc" "github.com/ava-labs/hypersdk/api/ws" "github.com/ava-labs/hypersdk/chain" + "github.com/ava-labs/hypersdk/codec" "github.com/ava-labs/hypersdk/extension/externalsubscriber" "github.com/ava-labs/hypersdk/genesis" "github.com/ava-labs/hypersdk/vm" @@ -35,9 +36,9 @@ func New( v *version.Semantic, genesisFactory genesis.GenesisAndRuleFactory, stateManager chain.StateManager, - actionRegistry chain.ActionRegistry, - authRegistry chain.AuthRegistry, - outputRegistry chain.OutputRegistry, + actionRegistry *codec.TypeParser[chain.Action], + authRegistry *codec.TypeParser[chain.Auth], + outputRegistry *codec.TypeParser[codec.Typed], authEngine map[uint8]vm.AuthEngine, options ...vm.Option, ) (*vm.VM, error) { diff --git a/vm/resolutions.go b/vm/resolutions.go index 577c0233e0..c109630aba 100644 --- a/vm/resolutions.go +++ b/vm/resolutions.go @@ -18,6 +18,7 @@ import ( "go.uber.org/zap" "github.com/ava-labs/hypersdk/chain" + "github.com/ava-labs/hypersdk/codec" "github.com/ava-labs/hypersdk/fees" "github.com/ava-labs/hypersdk/genesis" "github.com/ava-labs/hypersdk/internal/builder" @@ -50,15 +51,15 @@ func (vm *VM) SubnetID() ids.ID { return vm.snowCtx.SubnetID } -func (vm *VM) ActionRegistry() chain.ActionRegistry { +func (vm *VM) ActionRegistry() *codec.TypeParser[chain.Action]{ return vm.actionRegistry } -func (vm *VM) OutputRegistry() chain.OutputRegistry { +func (vm *VM) OutputRegistry() *codec.TypeParser[codec.Typed]{ return vm.outputRegistry } -func (vm *VM) AuthRegistry() chain.AuthRegistry { +func (vm *VM) AuthRegistry() *codec.TypeParser[chain.Auth]{ return vm.authRegistry } diff --git a/vm/vm.go b/vm/vm.go index 826b21822b..1dd81e6fd4 100644 --- a/vm/vm.go +++ b/vm/vm.go @@ -28,6 +28,7 @@ import ( "github.com/ava-labs/hypersdk/api" "github.com/ava-labs/hypersdk/chain" + "github.com/ava-labs/hypersdk/codec" "github.com/ava-labs/hypersdk/event" "github.com/ava-labs/hypersdk/fees" "github.com/ava-labs/hypersdk/genesis" @@ -90,9 +91,9 @@ type VM struct { vmDB database.Database handlers map[string]http.Handler stateManager chain.StateManager - actionRegistry chain.ActionRegistry - authRegistry chain.AuthRegistry - outputRegistry chain.OutputRegistry + actionRegistry *codec.TypeParser[chain.Action] + authRegistry *codec.TypeParser[chain.Auth] + outputRegistry *codec.TypeParser[codec.Typed] authEngine map[uint8]AuthEngine tracer avatrace.Tracer @@ -150,9 +151,9 @@ func New( v *version.Semantic, genesisFactory genesis.GenesisAndRuleFactory, stateManager chain.StateManager, - actionRegistry chain.ActionRegistry, - authRegistry chain.AuthRegistry, - outputRegistry chain.OutputRegistry, + actionRegistry *codec.TypeParser[chain.Action], + authRegistry *codec.TypeParser[chain.Auth], + outputRegistry *codec.TypeParser[codec.Typed], authEngine map[uint8]AuthEngine, options ...Option, ) (*VM, error) {