Skip to content
Closed
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
d7324d0
refactor builder network
ceyonur Mar 15, 2023
778c99d
rework on tests
ceyonur Mar 16, 2023
f511e24
revert moving lock to builder
ceyonur Mar 16, 2023
7b29760
Merge branch 'dev' into network-refactor
ceyonur Mar 16, 2023
705122d
Merge branch 'dev' into network-refactor
ceyonur Mar 17, 2023
4877ebc
separate client and network
ceyonur Mar 17, 2023
7569c63
nits
ceyonur Mar 20, 2023
7344409
unexport newEnvironment
ceyonur Mar 20, 2023
1bd1bd7
add mock
ceyonur Mar 20, 2023
6ce3596
add type asserts
ceyonur Mar 21, 2023
631bfee
Merge branch 'dev' into network-refactor
ceyonur Mar 23, 2023
db47dfd
Merge branch 'dev' into network-refactor
ceyonur Mar 23, 2023
f12340f
rename test helpers
ceyonur Mar 23, 2023
381c0c4
Merge branch 'dev' into network-refactor
ceyonur Mar 26, 2023
c7e7c1f
Revert "rename test helpers"
ceyonur Mar 26, 2023
47677a3
review fixes
ceyonur Mar 28, 2023
e0a4163
Merge branch 'dev' into platformvm-network-refactor
ceyonur Apr 15, 2023
a33ab93
Merge branch 'dev' into platformvm-network-refactor
abi87 Apr 19, 2023
488c2fb
Merge branch 'dev' into platformvm-network-refactor
abi87 Apr 27, 2023
ba593ec
fix merge with dev
abi87 Apr 27, 2023
bd332b3
Fix typo
ceyonur Apr 28, 2023
f40c773
Merge branch 'dev' into platformvm-network-refactor
ceyonur May 24, 2023
d32b0f1
Merge branch 'dev' into platformvm-network-refactor
abi87 May 29, 2023
e2b0989
merged
StephenButtolph Jun 2, 2023
d092a86
Merge branch 'dev' into platformvm-network-refactor
ceyonur Jun 8, 2023
44863f5
fix err style in test
ceyonur Jun 8, 2023
6479f87
Merge branch 'dev' into platformvm-network-refactor
ceyonur Jun 9, 2023
078b9e7
fix error lint
ceyonur Jun 9, 2023
7064453
fix error lint
ceyonur Jun 9, 2023
6473167
Merge branch 'dev' into platformvm-network-refactor
abi87 Jun 14, 2023
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
1 change: 1 addition & 0 deletions scripts/mocks.mockgen.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ github.com/ava-labs/avalanchego/vms/components/avax=TransferableOut=vms/componen
github.com/ava-labs/avalanchego/vms/components/verify=Verifiable=vms/components/verify/mock_verifiable.go
github.com/ava-labs/avalanchego/vms/platformvm/blocks/executor=Manager=vms/platformvm/blocks/executor/mock_manager.go
github.com/ava-labs/avalanchego/vms/platformvm/blocks=Block=vms/platformvm/blocks/mock_block.go
github.com/ava-labs/avalanchego/vms/platformvm/blocks/builder=Builder=vms/platformvm/blocks/builder/mock_builder.go
github.com/ava-labs/avalanchego/vms/platformvm/fx=Fx,Owner=vms/platformvm/fx/mock_fx.go
github.com/ava-labs/avalanchego/vms/platformvm/state=Chain=vms/platformvm/state/mock_chain.go
github.com/ava-labs/avalanchego/vms/platformvm/state=Diff=vms/platformvm/state/mock_diff.go
Expand Down
4 changes: 2 additions & 2 deletions vms/avm/network/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func (n *network) AppGossip(ctx context.Context, nodeID ids.NodeID, msgBytes []b
return nil
}

msg, ok := msgIntf.(*message.Tx)
msg, ok := msgIntf.(*message.TxGossip)
if !ok {
n.ctx.Log.Debug("dropping unexpected message",
zap.Stringer("nodeID", nodeID),
Expand Down Expand Up @@ -125,7 +125,7 @@ func (n *network) IssueTx(ctx context.Context, tx *txs.Tx) error {
}

txBytes := tx.Bytes()
msg := &message.Tx{
msg := &message.TxGossip{
Tx: txBytes,
}
msgBytes, err := message.Build(msg)
Expand Down
6 changes: 3 additions & 3 deletions vms/avm/network/network_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func TestNetworkAppGossip(t *testing.T) {
// Shouldn't attempt to issue or gossip the tx
name: "invalid tx bytes",
msgBytesFunc: func() []byte {
msg := message.Tx{
msg := message.TxGossip{
Tx: []byte{0x00},
}
msgBytes, err := message.Build(&msg)
Expand All @@ -94,7 +94,7 @@ func TestNetworkAppGossip(t *testing.T) {
// Issue returns nil because mempool has tx. We should gossip the tx.
name: "issuance succeeds",
msgBytesFunc: func() []byte {
msg := message.Tx{
msg := message.TxGossip{
Tx: testTx.Bytes(),
}
msgBytes, err := message.Build(&msg)
Expand All @@ -116,7 +116,7 @@ func TestNetworkAppGossip(t *testing.T) {
// Issue returns error because tx was dropped. We shouldn't gossip the tx.
name: "issuance fails",
msgBytesFunc: func() []byte {
msg := message.Tx{
msg := message.TxGossip{
Tx: testTx.Bytes(),
}
msgBytes, err := message.Build(&msg)
Expand Down
2 changes: 1 addition & 1 deletion vms/components/message/codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ func init() {

errs := wrappers.Errs{}
errs.Add(
lc.RegisterType(&Tx{}),
lc.RegisterType(&TxGossip{}),
c.RegisterCodec(codecVersion, lc),
)
if errs.Errored() {
Expand Down
6 changes: 3 additions & 3 deletions vms/components/message/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@ import (

var _ Handler = NoopHandler{}

// Handler handles incoming gossip messages
type Handler interface {
HandleTx(nodeID ids.NodeID, requestID uint32, msg *Tx) error
HandleTxGossip(nodeID ids.NodeID, msg *TxGossip) error
}

type NoopHandler struct {
Log logging.Logger
}

func (h NoopHandler) HandleTx(nodeID ids.NodeID, requestID uint32, _ *Tx) error {
func (h NoopHandler) HandleTxGossip(nodeID ids.NodeID, _ *TxGossip) error {
h.Log.Debug("dropping unexpected Tx message",
zap.Stringer("nodeID", nodeID),
zap.Uint32("requestID", requestID),
)
return nil
}
8 changes: 4 additions & 4 deletions vms/components/message/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@ type CounterHandler struct {
Tx int
}

func (h *CounterHandler) HandleTx(ids.NodeID, uint32, *Tx) error {
func (h *CounterHandler) HandleTxGossip(ids.NodeID, *TxGossip) error {
h.Tx++
return nil
}

func TestHandleTx(t *testing.T) {
func TestHandleTxGossip(t *testing.T) {
require := require.New(t)

handler := CounterHandler{}
msg := Tx{}
msg := TxGossip{}

err := msg.Handle(&handler, ids.EmptyNodeID, 0)
require.NoError(err)
Expand All @@ -37,6 +37,6 @@ func TestNoopHandler(t *testing.T) {
Log: logging.NoLog{},
}

err := handler.HandleTx(ids.EmptyNodeID, 0, nil)
err := handler.HandleTxGossip(ids.EmptyNodeID, nil)
require.NoError(t, err)
}
4 changes: 2 additions & 2 deletions vms/components/message/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
)

var (
_ Message = (*Tx)(nil)
_ Message = (*TxGossip)(nil)

ErrUnexpectedCodecVersion = errors.New("unexpected codec version")
errUnknownMessageType = errors.New("unknown message type")
Expand Down Expand Up @@ -54,7 +54,7 @@ func Parse(bytes []byte) (Message, error) {
// This message was encoded with proto.
switch m := protoMsg.GetMessage().(type) {
case *pb.Message_Tx:
msg = &Tx{
msg = &TxGossip{
Tx: m.Tx.Tx,
}
default:
Expand Down
2 changes: 1 addition & 1 deletion vms/components/message/message_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func TestParseProto(t *testing.T) {
parsedMsgIntf, err := Parse(msgBytes)
require.NoError(err)

parsedMsg, ok := parsedMsgIntf.(*Tx)
parsedMsg, ok := parsedMsgIntf.(*TxGossip)
require.True(ok)

require.Equal(txBytes, parsedMsg.Tx)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ import (
"github.com/ava-labs/avalanchego/ids"
)

var _ Message = (*Tx)(nil)
var _ Message = (*TxGossip)(nil)

type Tx struct {
type TxGossip struct {
message

Tx []byte `serialize:"true"`
}

func (msg *Tx) Handle(handler Handler, nodeID ids.NodeID, requestID uint32) error {
return handler.HandleTx(nodeID, requestID, msg)
func (msg *TxGossip) Handle(handler Handler, nodeID ids.NodeID, _ uint32) error {
return handler.HandleTxGossip(nodeID, msg)
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ import (
"github.com/ava-labs/avalanchego/utils/units"
)

func TestTx(t *testing.T) {
func TestTxGossip(t *testing.T) {
require := require.New(t)

tx := utils.RandomBytes(256 * units.KiB)
builtMsg := Tx{
builtMsg := TxGossip{
Tx: tx,
}
builtMsgBytes, err := Build(&builtMsg)
Expand All @@ -27,7 +27,7 @@ func TestTx(t *testing.T) {
require.NoError(err)
require.Equal(builtMsgBytes, parsedMsgIntf.Bytes())

parsedMsg, ok := parsedMsgIntf.(*Tx)
parsedMsg, ok := parsedMsgIntf.(*TxGossip)
require.True(ok)

require.Equal(tx, parsedMsg.Tx)
Expand Down
26 changes: 11 additions & 15 deletions vms/platformvm/blocks/builder/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/ava-labs/avalanchego/utils/timer/mockable"
"github.com/ava-labs/avalanchego/utils/units"
"github.com/ava-labs/avalanchego/vms/platformvm/blocks"
"github.com/ava-labs/avalanchego/vms/platformvm/network/sender"
"github.com/ava-labs/avalanchego/vms/platformvm/state"
"github.com/ava-labs/avalanchego/vms/platformvm/txs"
"github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool"
Expand All @@ -42,7 +43,6 @@ var (
type Builder interface {
mempool.Mempool
mempool.BlockTimer
Network

// set preferred block on top of which we'll build next
SetPreference(blockID ids.ID)
Expand All @@ -64,7 +64,8 @@ type Builder interface {
// builder implements a simple builder to convert txs into valid blocks
type builder struct {
mempool.Mempool
Network

networkClient sender.Sender

txBuilder txbuilder.Builder
txExecutorBackend *txexecutor.Backend
Expand All @@ -83,30 +84,25 @@ type builder struct {
}

func New(
mempool mempool.Mempool,
txBuilder txbuilder.Builder,
txExecutorBackend *txexecutor.Backend,
blkManager blockexecutor.Manager,
toEngine chan<- common.Message,
appSender common.AppSender,
networkClient sender.Sender,
) Builder {
builder := &builder{
Mempool: mempool,
Mempool: txExecutorBackend.Mempool,
txBuilder: txBuilder,
txExecutorBackend: txExecutorBackend,
blkManager: blkManager,
toEngine: toEngine,
networkClient: networkClient,
}

builder.timer = timer.NewTimer(builder.setNextBuildBlockTime)

builder.Network = NewNetwork(
txExecutorBackend.Ctx,
builder,
appSender,
)
go builder.txExecutorBackend.Ctx.Log.RecoverAndPanic(builder.timer.Dispatch)

go txExecutorBackend.Ctx.Log.RecoverAndPanic(builder.timer.Dispatch)
return builder
}

Expand Down Expand Up @@ -150,7 +146,7 @@ func (b *builder) AddUnverifiedTx(tx *txs.Tx) error {
if err := b.Mempool.Add(tx); err != nil {
return err
}
return b.GossipTx(tx)
return b.networkClient.GossipTx(tx)
}

// BuildBlock builds a block to be added to consensus.
Expand All @@ -166,7 +162,7 @@ func (b *builder) BuildBlock(context.Context) (snowman.Block, error) {
ctx := b.txExecutorBackend.Ctx
ctx.Log.Debug("starting to attempt to build a block")

statelessBlk, err := b.buildBlock()
statelessBlk, err := b.buildNextBlock()
if err != nil {
return nil, err
}
Expand All @@ -180,7 +176,7 @@ func (b *builder) BuildBlock(context.Context) (snowman.Block, error) {

// Returns the block we want to build and issue.
// Only modifies state to remove expired proposal txs.
func (b *builder) buildBlock() (blocks.Block, error) {
func (b *builder) buildNextBlock() (blocks.Block, error) {
// Get the block to build on top of and retrieve the new block's context.
preferred, err := b.Preferred()
if err != nil {
Expand Down Expand Up @@ -285,7 +281,7 @@ func (b *builder) setNextBuildBlockTime() {
return
}

if _, err := b.buildBlock(); err == nil {
if _, err := b.buildNextBlock(); err == nil {
// We can build a block now
b.notifyBlockReady()
return
Expand Down
Loading