From 8d8d88e1de2dc35ba06870e66838e2a0941e347e Mon Sep 17 00:00:00 2001 From: muXxer Date: Thu, 9 Nov 2023 12:19:46 +0100 Subject: [PATCH] Implement the changes discussed in the call --- api_v3.go | 28 +++++++-------- builder/output_builder_anchor.go | 22 ++++++------ builder/output_builder_test.go | 26 +++++++------- feat.go | 16 ++++----- ...ernor.gen.go => feat_metadata_state.gen.go | 34 +++++++++---------- gen/feat_metadata_gen.go | 2 +- output_test.go | 2 +- vm/nova/stvf_test.go | 32 ++++++++--------- vm/nova/vm.go | 4 +-- vm/nova/vm_test.go | 26 +++++++------- 10 files changed, 96 insertions(+), 96 deletions(-) rename feat_metadata_governor.gen.go => feat_metadata_state.gen.go (51%) diff --git a/api_v3.go b/api_v3.go index 0a7dbd06e..8fddbd814 100644 --- a/api_v3.go +++ b/api_v3.go @@ -90,7 +90,7 @@ var ( anchorOutputV3FeatBlocksArrRules = &serix.ArrayRules{ Min: 0, // Min: - - Max: 3, // Max: SenderFeature, MetadataFeature, GovernorMetadataFeature + Max: 3, // Max: SenderFeature, MetadataFeature, StateMetadataFeature ValidationMode: serializer.ArrayValidationModeNoDuplicates | serializer.ArrayValidationModeLexicalOrdering | serializer.ArrayValidationModeAtMostOneOfEachTypeByte, @@ -342,29 +342,29 @@ func V3API(protoParams ProtocolParameters) API { ) must(api.RegisterTypeSettings(MetadataFeatureEntriesKey(""), - serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithMinLen(1).WithMaxLen(64)), + serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte)), ) must(api.RegisterTypeSettings(MetadataFeatureEntriesValue{}, - serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsUint16).WithMinLen(0).WithMaxLen(1000)), + serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsUint16)), ) must(api.RegisterTypeSettings(MetadataFeatureEntries{}, - serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithMinLen(1).WithMaxLen(64).WithMaxByteSize(8192)), + serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithMinLen(1).WithMaxByteSize(8192)), ) must(api.RegisterTypeSettings(MetadataFeature{}, serix.TypeSettings{}.WithObjectType(uint8(FeatureMetadata))), ) - must(api.RegisterTypeSettings(GovernorMetadataFeatureEntriesKey(""), - serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithMinLen(1).WithMaxLen(64)), + must(api.RegisterTypeSettings(StateMetadataFeatureEntriesKey(""), + serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte)), ) - must(api.RegisterTypeSettings(GovernorMetadataFeatureEntriesValue{}, - serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsUint16).WithMinLen(0).WithMaxLen(1000)), + must(api.RegisterTypeSettings(StateMetadataFeatureEntriesValue{}, + serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsUint16)), ) - must(api.RegisterTypeSettings(GovernorMetadataFeatureEntries{}, - serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithMinLen(1).WithMaxLen(64).WithMaxByteSize(8192)), + must(api.RegisterTypeSettings(StateMetadataFeatureEntries{}, + serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithMinLen(1).WithMaxByteSize(8192)), ) - must(api.RegisterTypeSettings(GovernorMetadataFeature{}, - serix.TypeSettings{}.WithObjectType(uint8(FeatureMetadataGovernor))), + must(api.RegisterTypeSettings(StateMetadataFeature{}, + serix.TypeSettings{}.WithObjectType(uint8(FeatureStateMetadata))), ) must(api.RegisterTypeSettings(TagFeature{}, @@ -382,7 +382,7 @@ func V3API(protoParams ProtocolParameters) API { must(api.RegisterInterfaceObjects((*Feature)(nil), (*SenderFeature)(nil))) must(api.RegisterInterfaceObjects((*Feature)(nil), (*IssuerFeature)(nil))) must(api.RegisterInterfaceObjects((*Feature)(nil), (*MetadataFeature)(nil))) - must(api.RegisterInterfaceObjects((*Feature)(nil), (*GovernorMetadataFeature)(nil))) + must(api.RegisterInterfaceObjects((*Feature)(nil), (*StateMetadataFeature)(nil))) must(api.RegisterInterfaceObjects((*Feature)(nil), (*TagFeature)(nil))) must(api.RegisterInterfaceObjects((*Feature)(nil), (*NativeTokenFeature)(nil))) must(api.RegisterInterfaceObjects((*Feature)(nil), (*BlockIssuerFeature)(nil))) @@ -521,7 +521,7 @@ func V3API(protoParams ProtocolParameters) API { must(api.RegisterInterfaceObjects((*anchorOutputFeature)(nil), (*SenderFeature)(nil))) must(api.RegisterInterfaceObjects((*anchorOutputFeature)(nil), (*MetadataFeature)(nil))) - must(api.RegisterInterfaceObjects((*anchorOutputFeature)(nil), (*GovernorMetadataFeature)(nil))) + must(api.RegisterInterfaceObjects((*anchorOutputFeature)(nil), (*StateMetadataFeature)(nil))) must(api.RegisterTypeSettings(AnchorOutputImmFeatures{}, serix.TypeSettings{}.WithLengthPrefixType(serix.LengthPrefixTypeAsByte).WithArrayRules(anchorOutputV3ImmFeatBlocksArrRules), diff --git a/builder/output_builder_anchor.go b/builder/output_builder_anchor.go index 34323d7aa..978fe4d3a 100644 --- a/builder/output_builder_anchor.go +++ b/builder/output_builder_anchor.go @@ -96,15 +96,15 @@ func (builder *AnchorOutputBuilder) ImmutableSender(senderAddr iotago.Address) * // Metadata sets/modifies an iotago.MetadataFeature on the output. func (builder *AnchorOutputBuilder) Metadata(entries iotago.MetadataFeatureEntries) *AnchorOutputBuilder { builder.output.Features.Upsert(&iotago.MetadataFeature{Entries: entries}) - builder.stateCtrlReq = true + builder.govCtrlReq = true return builder } -// GovernorMetadata sets/modifies an iotago.GovernorMetadataFeature on the output. -func (builder *AnchorOutputBuilder) GovernorMetadata(entries iotago.GovernorMetadataFeatureEntries) *AnchorOutputBuilder { - builder.output.Features.Upsert(&iotago.GovernorMetadataFeature{Entries: entries}) - builder.govCtrlReq = true +// StateMetadata sets/modifies an iotago.StateMetadataFeature on the output. +func (builder *AnchorOutputBuilder) StateMetadata(entries iotago.StateMetadataFeatureEntries) *AnchorOutputBuilder { + builder.output.Features.Upsert(&iotago.StateMetadataFeature{Entries: entries}) + builder.stateCtrlReq = true return builder } @@ -170,9 +170,9 @@ func (trans *AnchorStateTransition) Mana(mana iotago.Mana) *AnchorStateTransitio return trans.builder.Mana(mana).StateTransition() } -// Metadata sets/modifies an iotago.MetadataFeature as a mutable feature on the output. -func (trans *AnchorStateTransition) Metadata(entries iotago.MetadataFeatureEntries) *AnchorStateTransition { - return trans.builder.Metadata(entries).StateTransition() +// StateMetadata sets/modifies an iotago.StateMetadataFeature on the output. +func (trans *AnchorStateTransition) StateMetadata(entries iotago.StateMetadataFeatureEntries) *AnchorStateTransition { + return trans.builder.StateMetadata(entries).StateTransition() } // Sender sets/modifies an iotago.SenderFeature as a mutable feature on the output. @@ -211,9 +211,9 @@ func (trans *AnchorGovernanceTransition) Sender(senderAddr iotago.Address) *Anch return trans.builder.Sender(senderAddr).GovernanceTransition() } -// GovernorMetadata sets/modifies an iotago.GovernorMetadataFeature on the output. -func (trans *AnchorGovernanceTransition) GovernorMetadata(entries iotago.GovernorMetadataFeatureEntries) *AnchorGovernanceTransition { - return trans.builder.GovernorMetadata(entries).GovernanceTransition() +// Metadata sets/modifies an iotago.MetadataFeature as a mutable feature on the output. +func (trans *AnchorGovernanceTransition) Metadata(entries iotago.MetadataFeatureEntries) *AnchorGovernanceTransition { + return trans.builder.Metadata(entries).GovernanceTransition() } // Builder returns the AnchorOutputBuilder. diff --git a/builder/output_builder_test.go b/builder/output_builder_test.go index 6f756ffab..72dd03e26 100644 --- a/builder/output_builder_test.go +++ b/builder/output_builder_test.go @@ -152,17 +152,17 @@ func TestAccountOutputBuilder(t *testing.T) { func TestAnchorOutputBuilder(t *testing.T) { var ( - stateCtrl = tpkg.RandEd25519Address() - stateCtrlNew = tpkg.RandEd25519Address() - gov = tpkg.RandEd25519Address() - amount iotago.BaseToken = 1337 - metadataEntries = iotago.MetadataFeatureEntries{"data": []byte("123456")} - immMetadataEntries = iotago.MetadataFeatureEntries{"data": []byte("654321")} - immSender = tpkg.RandEd25519Address() + stateCtrl = tpkg.RandEd25519Address() + stateCtrlNew = tpkg.RandEd25519Address() + gov = tpkg.RandEd25519Address() + amount iotago.BaseToken = 1337 + stateMetadataEntries = iotago.StateMetadataFeatureEntries{"data": []byte("123456")} + immMetadataEntries = iotago.MetadataFeatureEntries{"data": []byte("654321")} + immSender = tpkg.RandEd25519Address() ) anchorOutput, err := builder.NewAnchorOutputBuilder(stateCtrl, gov, amount). - Metadata(metadataEntries). + StateMetadata(stateMetadataEntries). ImmutableMetadata(immMetadataEntries). ImmutableSender(immSender). Build() @@ -176,7 +176,7 @@ func TestAnchorOutputBuilder(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: gov}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: metadataEntries}, + &iotago.StateMetadataFeature{Entries: stateMetadataEntries}, }, ImmutableFeatures: iotago.AnchorOutputImmFeatures{ &iotago.SenderFeature{Address: immSender}, @@ -186,17 +186,17 @@ func TestAnchorOutputBuilder(t *testing.T) { require.True(t, expected.Equal(anchorOutput), "anchor output should be equal") const newAmount iotago.BaseToken = 7331 - newMetadataEntries := iotago.MetadataFeatureEntries{"newData": []byte("newState")} + newMetadataEntries := iotago.StateMetadataFeatureEntries{"newData": []byte("newState")} //nolint:forcetypeassert // we can safely assume that this is an AnchorOutput expectedCpy := expected.Clone().(*iotago.AnchorOutput) expectedCpy.Amount = newAmount expectedCpy.StateIndex++ - expectedCpy.Features.Upsert(&iotago.MetadataFeature{Entries: newMetadataEntries}) + expectedCpy.Features.Upsert(&iotago.StateMetadataFeature{Entries: newMetadataEntries}) updatedOutput, err := builder.NewAnchorOutputBuilderFromPrevious(anchorOutput).StateTransition(). Amount(newAmount). - Metadata(newMetadataEntries). + StateMetadata(newMetadataEntries). Builder().Build() require.NoError(t, err) require.Equal(t, expectedCpy, updatedOutput) @@ -214,7 +214,7 @@ func TestAnchorOutputBuilder(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: gov}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: metadataEntries}, + &iotago.StateMetadataFeature{Entries: stateMetadataEntries}, }, ImmutableFeatures: iotago.AnchorOutputImmFeatures{ &iotago.SenderFeature{Address: immSender}, diff --git a/feat.go b/feat.go index 2a538359d..992f11ff9 100644 --- a/feat.go +++ b/feat.go @@ -39,8 +39,8 @@ const ( FeatureIssuer // FeatureMetadata denotes a MetadataFeature. FeatureMetadata - // FeatureMetadataGovernor denotes a GovernorMetadataFeature. - FeatureMetadataGovernor + // FeatureStateMetadata denotes a StateMetadataFeature. + FeatureStateMetadata // FeatureTag denotes a TagFeature. FeatureTag // NativeTokenFeature denotes a NativeTokenFeature. @@ -63,7 +63,7 @@ var featNames = [FeatureStaking + 1]string{ "SenderFeature", "IssuerFeature", "MetadataFeature", - "GovernorMetadataFeature", + "StateMetadataFeature", "TagFeature", "NativeTokenFeature", "BlockIssuerFeature", @@ -212,15 +212,15 @@ func (f FeatureSet) Metadata() *MetadataFeature { return b.(*MetadataFeature) } -// GovernorMetadata returns the GovernorMetadataFeature in the set or nil. -func (f FeatureSet) GovernorMetadata() *GovernorMetadataFeature { - b, has := f[FeatureMetadataGovernor] +// StateMetadata returns the StateMetadataFeature in the set or nil. +func (f FeatureSet) StateMetadata() *StateMetadataFeature { + b, has := f[FeatureStateMetadata] if !has { return nil } - //nolint:forcetypeassert // we can safely assume that this is a GovernorMetadataFeature - return b.(*GovernorMetadataFeature) + //nolint:forcetypeassert // we can safely assume that this is a StateMetadataFeature + return b.(*StateMetadataFeature) } // Tag returns the TagFeature in the set or nil. diff --git a/feat_metadata_governor.gen.go b/feat_metadata_state.gen.go similarity index 51% rename from feat_metadata_governor.gen.go rename to feat_metadata_state.gen.go index 43df76776..1ce69b499 100644 --- a/feat_metadata_governor.gen.go +++ b/feat_metadata_state.gen.go @@ -9,37 +9,37 @@ import ( "github.com/iotaledger/hive.go/serializer/v2" ) -type GovernorMetadataFeatureEntriesKey string -type GovernorMetadataFeatureEntriesValue []byte -type GovernorMetadataFeatureEntries map[GovernorMetadataFeatureEntriesKey]GovernorMetadataFeatureEntriesValue +type StateMetadataFeatureEntriesKey string +type StateMetadataFeatureEntriesValue []byte +type StateMetadataFeatureEntries map[StateMetadataFeatureEntriesKey]StateMetadataFeatureEntriesValue -// GovernorMetadataFeature is a feature which simply holds binary data to be freely +// StateMetadataFeature is a feature which simply holds binary data to be freely // interpreted by higher layer applications. -type GovernorMetadataFeature struct { - Entries GovernorMetadataFeatureEntries `serix:""` +type StateMetadataFeature struct { + Entries StateMetadataFeatureEntries `serix:""` } -func (m GovernorMetadataFeature) Clone() Feature { - copiedMap := make(GovernorMetadataFeatureEntries) +func (m StateMetadataFeature) Clone() Feature { + copiedMap := make(StateMetadataFeatureEntries) for key, value := range m.Entries { copiedMap[key] = lo.CopySlice(value) } - return &GovernorMetadataFeature{ + return &StateMetadataFeature{ Entries: copiedMap, } } -func (m GovernorMetadataFeature) StorageScore(_ *StorageScoreStructure, _ StorageScoreFunc) StorageScore { +func (m StateMetadataFeature) StorageScore(_ *StorageScoreStructure, _ StorageScoreFunc) StorageScore { return 0 } -func (m GovernorMetadataFeature) WorkScore(_ *WorkScoreParameters) (WorkScore, error) { +func (m StateMetadataFeature) WorkScore(_ *WorkScoreParameters) (WorkScore, error) { return 0, nil } -func (m GovernorMetadataFeature) Equal(other Feature) bool { - otherFeat, is := other.(*GovernorMetadataFeature) +func (m StateMetadataFeature) Equal(other Feature) bool { + otherFeat, is := other.(*StateMetadataFeature) if !is { return false } @@ -62,11 +62,11 @@ func (m GovernorMetadataFeature) Equal(other Feature) bool { return true } -func (m GovernorMetadataFeature) Type() FeatureType { - return FeatureMetadataGovernor +func (m StateMetadataFeature) Type() FeatureType { + return FeatureStateMetadata } -func (m GovernorMetadataFeature) mapSize() int { +func (m StateMetadataFeature) mapSize() int { var size int // Map Length @@ -79,7 +79,7 @@ func (m GovernorMetadataFeature) mapSize() int { return size } -func (m GovernorMetadataFeature) Size() int { +func (m StateMetadataFeature) Size() int { // FeatureType + Entries return serializer.SmallTypeDenotationByteSize + m.mapSize() } diff --git a/gen/feat_metadata_gen.go b/gen/feat_metadata_gen.go index e6a0e75fe..fbc87886d 100644 --- a/gen/feat_metadata_gen.go +++ b/gen/feat_metadata_gen.go @@ -3,4 +3,4 @@ package gen //go:generate go run github.com/iotaledger/hive.go/codegen/features/cmd@13da292 feat_metadata.tmpl ../feat_metadata.gen.go MetadataFeature m "" "FeatureType=FeatureMetadata," -//go:generate go run github.com/iotaledger/hive.go/codegen/features/cmd@13da292 feat_metadata.tmpl ../feat_metadata_governor.gen.go GovernorMetadataFeature m "" "FeatureType=FeatureMetadataGovernor," +//go:generate go run github.com/iotaledger/hive.go/codegen/features/cmd@13da292 feat_metadata.tmpl ../feat_metadata_state.gen.go StateMetadataFeature m "" "FeatureType=FeatureStateMetadata," diff --git a/output_test.go b/output_test.go index 850761d50..def1ccb72 100644 --- a/output_test.go +++ b/output_test.go @@ -89,7 +89,7 @@ func TestOutputsDeSerialize(t *testing.T) { }, Features: iotago.AnchorOutputFeatures{ &iotago.SenderFeature{Address: tpkg.RandEd25519Address()}, - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": tpkg.RandBytes(100)}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": tpkg.RandBytes(100)}}, }, ImmutableFeatures: iotago.AnchorOutputImmFeatures{ &iotago.IssuerFeature{Address: tpkg.RandEd25519Address()}, diff --git a/vm/nova/stvf_test.go b/vm/nova/stvf_test.go index 1b4a5719b..324c692f5 100644 --- a/vm/nova/stvf_test.go +++ b/vm/nova/stvf_test.go @@ -2045,7 +2045,7 @@ func TestAnchorOutput_ValidateStateTransition(t *testing.T) { }, StateIndex: 10, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("1337")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("1337")}}, }, }, }, @@ -2060,9 +2060,9 @@ func TestAnchorOutput_ValidateStateTransition(t *testing.T) { }, Features: iotago.AnchorOutputFeatures{ &iotago.SenderFeature{Address: exampleGovCtrl}, - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("1337")}}, - // adding governor metadata feature - &iotago.GovernorMetadataFeature{Entries: iotago.GovernorMetadataFeatureEntries{"data": []byte("1338")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("1337")}}, + // adding metadata feature + &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("1338")}}, }, }, transType: iotago.ChainTransitionTypeStateChange, @@ -2099,7 +2099,7 @@ func TestAnchorOutput_ValidateStateTransition(t *testing.T) { }, StateIndex: 10, Features: iotago.AnchorOutputFeatures{ - &iotago.GovernorMetadataFeature{Entries: iotago.GovernorMetadataFeatureEntries{"data": []byte("1338")}}, + &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("1338")}}, }, }, }, @@ -2113,9 +2113,9 @@ func TestAnchorOutput_ValidateStateTransition(t *testing.T) { StateIndex: 11, Features: iotago.AnchorOutputFeatures{ &iotago.SenderFeature{Address: exampleStateCtrl}, - // adding metadata feature - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("1337")}}, - &iotago.GovernorMetadataFeature{Entries: iotago.GovernorMetadataFeatureEntries{"data": []byte("1338")}}, + &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("1338")}}, + // adding state metadata feature + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("1337")}}, }, }, transType: iotago.ChainTransitionTypeStateChange, @@ -2239,8 +2239,8 @@ func TestAnchorOutput_ValidateStateTransition(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: exampleGovCtrl}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{ - Entries: iotago.MetadataFeatureEntries{ + &iotago.StateMetadataFeature{ + Entries: iotago.StateMetadataFeatureEntries{ "data": []byte("foo"), }, }, @@ -2251,10 +2251,10 @@ func TestAnchorOutput_ValidateStateTransition(t *testing.T) { "amount": { "Amount": iotago.BaseToken(1337), }, - "metadata_feature_changed": { + "state_metadata_feature_changed": { "Features": iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{ - Entries: iotago.MetadataFeatureEntries{ + &iotago.StateMetadataFeature{ + Entries: iotago.StateMetadataFeatureEntries{ "data": []byte("bar"), }, }, @@ -2288,7 +2288,7 @@ func TestAnchorOutput_ValidateStateTransition(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: exampleGovCtrl}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.GovernorMetadataFeature{Entries: iotago.GovernorMetadataFeatureEntries{"data": []byte("foo")}}, + &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("foo")}}, }, ImmutableFeatures: iotago.AnchorOutputImmFeatures{ &iotago.IssuerFeature{Address: exampleIssuer}, @@ -2316,10 +2316,10 @@ func TestAnchorOutput_ValidateStateTransition(t *testing.T) { "state_index_bigger_more_than_1": { "StateIndex": uint32(7), }, - "governance_metadata_feature_changed": { + "metadata_feature_changed": { "StateIndex": uint32(11), "Features": iotago.AnchorOutputFeatures{ - &iotago.GovernorMetadataFeature{Entries: iotago.GovernorMetadataFeatureEntries{"data": []byte("bar")}}, + &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("bar")}}, }, }, }, diff --git a/vm/nova/vm.go b/vm/nova/vm.go index 2020cf61d..d2bd2e377 100644 --- a/vm/nova/vm.go +++ b/vm/nova/vm.go @@ -735,7 +735,7 @@ func anchorGovernanceSTVF(input *vm.ChainOutputWithIDs, next *iotago.AnchorOutpu return ierrors.Wrapf(iotago.ErrInvalidAnchorGovernanceTransition, "state index changed, in %d / out %d", current.StateIndex, next.StateIndex) } - if err := iotago.FeatureUnchanged(iotago.FeatureMetadata, current.Features.MustSet(), next.Features.MustSet()); err != nil { + if err := iotago.FeatureUnchanged(iotago.FeatureStateMetadata, current.Features.MustSet(), next.Features.MustSet()); err != nil { return ierrors.Wrapf(iotago.ErrInvalidAnchorGovernanceTransition, "%w", err) } @@ -754,7 +754,7 @@ func anchorStateSTVF(input *vm.ChainOutputWithIDs, next *iotago.AnchorOutput) er return ierrors.Wrapf(iotago.ErrInvalidAnchorStateTransition, "state index %d on the input side but %d on the output side", current.StateIndex, next.StateIndex) } - if err := iotago.FeatureUnchanged(iotago.FeatureMetadataGovernor, current.Features.MustSet(), next.Features.MustSet()); err != nil { + if err := iotago.FeatureUnchanged(iotago.FeatureMetadata, current.Features.MustSet(), next.Features.MustSet()); err != nil { return ierrors.Wrapf(iotago.ErrInvalidAnchorStateTransition, "%w", err) } diff --git a/vm/nova/vm_test.go b/vm/nova/vm_test.go index 3372f618e..843f37040 100644 --- a/vm/nova/vm_test.go +++ b/vm/nova/vm_test.go @@ -368,7 +368,7 @@ func TestNovaTransactionExecution(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ident4}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("gov transitioning")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("gov transitioning")}}, }, }, @@ -383,7 +383,7 @@ func TestNovaTransactionExecution(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ident4}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("state transitioning")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("state transitioning")}}, }, }, @@ -398,7 +398,7 @@ func TestNovaTransactionExecution(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ident3}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("going to be destroyed")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("going to be destroyed")}}, }, }, @@ -655,8 +655,8 @@ func TestNovaTransactionExecution(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ident4}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("gov transitioning")}}, - &iotago.GovernorMetadataFeature{Entries: iotago.GovernorMetadataFeatureEntries{"data": []byte("the gov mutation on this output")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("gov transitioning")}}, + &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("the gov mutation on this output")}}, }, }, @@ -671,7 +671,7 @@ func TestNovaTransactionExecution(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ident4}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{ + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{ "data": []byte("state transitioning"), "added": []byte("next state"), }}, @@ -689,7 +689,7 @@ func TestNovaTransactionExecution(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ident4}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("a new anchor output")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("a new anchor output")}}, }, }, @@ -1646,7 +1646,7 @@ func TestNovaTransactionExecution_RestrictedAddress(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ed25519Addresses[1]}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("current state")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("current state")}}, }, }, // owned by restricted anchor address @@ -1670,7 +1670,7 @@ func TestNovaTransactionExecution_RestrictedAddress(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ed25519Addresses[1]}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("next state")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("next state")}}, }, }, &iotago.BasicOutput{ @@ -2416,7 +2416,7 @@ func TestNovaTransactionExecution_MultiAddress(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ed25519Addresses[1]}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("current state")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("current state")}}, }, }, &iotago.BasicOutput{ @@ -2446,7 +2446,7 @@ func TestNovaTransactionExecution_MultiAddress(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ed25519Addresses[1]}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("next state")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("next state")}}, }, }, &iotago.BasicOutput{ @@ -2553,7 +2553,7 @@ func TestNovaTransactionExecution_MultiAddress(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ed25519Addresses[1]}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("governance transition")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("governance transition")}}, }, }, &iotago.BasicOutput{ @@ -2583,7 +2583,7 @@ func TestNovaTransactionExecution_MultiAddress(t *testing.T) { &iotago.GovernorAddressUnlockCondition{Address: ed25519Addresses[1]}, }, Features: iotago.AnchorOutputFeatures{ - &iotago.MetadataFeature{Entries: iotago.MetadataFeatureEntries{"data": []byte("governance transition")}}, + &iotago.StateMetadataFeature{Entries: iotago.StateMetadataFeatureEntries{"data": []byte("governance transition")}}, }, }, &iotago.BasicOutput{