Skip to content

Commit 7b9912d

Browse files
Cleanup fx interface compliance (#1599)
1 parent 0f6b09d commit 7b9912d

19 files changed

+87
-68
lines changed

scripts/mocks.mockgen.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,9 @@ github.com/ava-labs/avalanchego/vms/avm/metrics=Metrics=vms/avm/metrics/mock_met
2929
github.com/ava-labs/avalanchego/vms/avm/states=Chain,State,Diff=vms/avm/states/mock_states.go
3030
github.com/ava-labs/avalanchego/vms/avm/txs/mempool=Mempool=vms/avm/txs/mempool/mock_mempool.go
3131
github.com/ava-labs/avalanchego/vms/components/avax=TransferableIn=vms/components/avax/mock_transferable_in.go
32-
github.com/ava-labs/avalanchego/vms/components/avax=TransferableOut=vms/components/avax/mock_transferable_out.go
3332
github.com/ava-labs/avalanchego/vms/components/verify=Verifiable=vms/components/verify/mock_verifiable.go
3433
github.com/ava-labs/avalanchego/vms/platformvm/blocks/executor=Manager=vms/platformvm/blocks/executor/mock_manager.go
3534
github.com/ava-labs/avalanchego/vms/platformvm/blocks=Block=vms/platformvm/blocks/mock_block.go
36-
github.com/ava-labs/avalanchego/vms/platformvm/fx=Fx,Owner=vms/platformvm/fx/mock_fx.go
3735
github.com/ava-labs/avalanchego/vms/platformvm/state=Chain=vms/platformvm/state/mock_chain.go
3836
github.com/ava-labs/avalanchego/vms/platformvm/state=Diff=vms/platformvm/state/mock_diff.go
3937
github.com/ava-labs/avalanchego/vms/platformvm/state=StakerIterator=vms/platformvm/state/mock_staker_iterator.go

vms/avm/state_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func TestSetsAndGets(t *testing.T) {
2929
Fx: &FxTest{
3030
InitializeF: func(vmIntf interface{}) error {
3131
vm := vmIntf.(secp256k1fx.VM)
32-
return vm.CodecRegistry().RegisterType(&avax.TestVerifiable{})
32+
return vm.CodecRegistry().RegisterType(&avax.TestState{})
3333
},
3434
},
3535
}},
@@ -51,7 +51,7 @@ func TestSetsAndGets(t *testing.T) {
5151
OutputIndex: 1,
5252
},
5353
Asset: avax.Asset{ID: ids.Empty},
54-
Out: &avax.TestVerifiable{},
54+
Out: &avax.TestState{},
5555
}
5656
utxoID := utxo.InputID()
5757

@@ -116,7 +116,7 @@ func TestFundingNoAddresses(t *testing.T) {
116116
Fx: &FxTest{
117117
InitializeF: func(vmIntf interface{}) error {
118118
vm := vmIntf.(secp256k1fx.VM)
119-
return vm.CodecRegistry().RegisterType(&avax.TestVerifiable{})
119+
return vm.CodecRegistry().RegisterType(&avax.TestState{})
120120
},
121121
},
122122
}},
@@ -138,7 +138,7 @@ func TestFundingNoAddresses(t *testing.T) {
138138
OutputIndex: 1,
139139
},
140140
Asset: avax.Asset{ID: ids.Empty},
141-
Out: &avax.TestVerifiable{},
141+
Out: &avax.TestState{},
142142
}
143143

144144
state.AddUTXO(utxo)

vms/avm/txs/initial_state_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ func TestInitialStateVerifyNilOutput(t *testing.T) {
135135

136136
func TestInitialStateVerifyInvalidOutput(t *testing.T) {
137137
c := linearcodec.NewDefault()
138-
if err := c.RegisterType(&avax.TestVerifiable{}); err != nil {
138+
if err := c.RegisterType(&avax.TestState{}); err != nil {
139139
t.Fatal(err)
140140
}
141141
m := codec.NewDefaultManager()
@@ -146,7 +146,7 @@ func TestInitialStateVerifyInvalidOutput(t *testing.T) {
146146

147147
is := InitialState{
148148
FxIndex: 0,
149-
Outs: []verify.State{&avax.TestVerifiable{Err: errTest}},
149+
Outs: []verify.State{&avax.TestState{Err: errTest}},
150150
}
151151
if err := is.Verify(m, numFxs); err == nil {
152152
t.Fatalf("Should have erred due to an invalid output")

vms/components/avax/mock_transferable_out.go

Lines changed: 3 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vms/components/avax/test_verifiable.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,31 @@
33

44
package avax
55

6-
import "github.com/ava-labs/avalanchego/snow"
6+
import (
7+
"github.com/ava-labs/avalanchego/snow"
8+
"github.com/ava-labs/avalanchego/vms/components/verify"
9+
)
710

8-
type TestVerifiable struct{ Err error }
11+
var (
12+
_ verify.State = (*TestState)(nil)
13+
_ TransferableOut = (*TestTransferable)(nil)
14+
_ Addressable = (*TestAddressable)(nil)
15+
)
916

10-
func (*TestVerifiable) InitCtx(*snow.Context) {}
17+
type TestState struct {
18+
verify.IsState `json:"-"`
1119

12-
func (v *TestVerifiable) Verify() error {
13-
return v.Err
20+
Err error
1421
}
1522

16-
func (v *TestVerifiable) VerifyState() error {
23+
func (*TestState) InitCtx(*snow.Context) {}
24+
25+
func (v *TestState) Verify() error {
1726
return v.Err
1827
}
1928

2029
type TestTransferable struct {
21-
TestVerifiable
30+
TestState
2231

2332
Val uint64 `serialize:"true"`
2433
}

vms/components/verify/verification.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,22 @@ package verify
55

66
import "github.com/ava-labs/avalanchego/snow"
77

8-
// Verifiable can be verified
98
type Verifiable interface {
109
Verify() error
1110
}
1211

13-
// State that can be verified
1412
type State interface {
1513
snow.ContextInitializable
1614
Verifiable
17-
VerifyState() error
15+
IsState
16+
}
17+
18+
type IsState interface {
19+
isState()
20+
}
21+
22+
type IsNotState interface {
23+
isState() error
1824
}
1925

2026
// All returns nil if all the verifiables were verified with no errors

vms/nftfx/mint_output.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,15 @@ package nftfx
66
import (
77
"encoding/json"
88

9+
"github.com/ava-labs/avalanchego/vms/components/verify"
910
"github.com/ava-labs/avalanchego/vms/secp256k1fx"
1011
)
1112

13+
var _ verify.State = (*MintOutput)(nil)
14+
1215
type MintOutput struct {
16+
verify.IsState `json:"-"`
17+
1318
GroupID uint32 `serialize:"true" json:"groupID"`
1419
secp256k1fx.OutputOwners `serialize:"true"`
1520
}

vms/nftfx/transfer_output.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ var (
2626
)
2727

2828
type TransferOutput struct {
29+
verify.IsState `json:"-"`
30+
2931
GroupID uint32 `serialize:"true" json:"groupID"`
3032
Payload types.JSONByteSlice `serialize:"true" json:"payload"`
3133
secp256k1fx.OutputOwners `serialize:"true"`
@@ -55,7 +57,3 @@ func (out *TransferOutput) Verify() error {
5557
return out.OutputOwners.Verify()
5658
}
5759
}
58-
59-
func (out *TransferOutput) VerifyState() error {
60-
return out.Verify()
61-
}

vms/platformvm/blocks/codec.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func init() {
3131
GenesisCodec = codec.NewManager(math.MaxInt32)
3232

3333
errs := wrappers.Errs{}
34-
for _, c := range []codec.Registry{c, gc} {
34+
for _, c := range []linearcodec.Codec{c, gc} {
3535
errs.Add(
3636
RegisterApricotBlockTypes(c),
3737
txs.RegisterUnsignedTxsTypes(c),

vms/platformvm/fx/fx.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ import (
99
"github.com/ava-labs/avalanchego/vms/secp256k1fx"
1010
)
1111

12-
var _ Fx = (*secp256k1fx.Fx)(nil)
12+
var (
13+
_ Fx = (*secp256k1fx.Fx)(nil)
14+
_ Owner = (*secp256k1fx.OutputOwners)(nil)
15+
_ Owned = (*secp256k1fx.TransferOutput)(nil)
16+
)
1317

1418
// Fx is the interface a feature extension must implement to support the
1519
// Platform Chain.
@@ -40,6 +44,8 @@ type Fx interface {
4044
}
4145

4246
type Owner interface {
47+
verify.IsNotState
48+
4349
verify.Verifiable
4450
snow.ContextInitializable
4551
}

0 commit comments

Comments
 (0)