diff --git a/build/runtime.wasm b/build/runtime.wasm index 5af509f2..facebaaf 100755 Binary files a/build/runtime.wasm and b/build/runtime.wasm differ diff --git a/goscale b/goscale index aa38c840..1e39cea9 160000 --- a/goscale +++ b/goscale @@ -1 +1 @@ -Subproject commit aa38c84062bd6fa217a9914de53759d3061bcb3c +Subproject commit 1e39cea981032e79a6263833746150d012b5795e diff --git a/primitives/types/extra.go b/primitives/types/extra.go index b38b34cb..724ba500 100644 --- a/primitives/types/extra.go +++ b/primitives/types/extra.go @@ -174,8 +174,7 @@ func generateExtraMetadata(extra SignedExtension, metadataIds map[string]int, me if !ok { extraMetadataId = buildMetadataTypeRecursively(extraType, metadataIds, metadataTypes, true) } else { - extraMetadata := getExtraMetadata(extraMetadataId, metadataTypes) - *metadataTypes = append(*metadataTypes, extraMetadata) + getExtraMetadata(extraMetadataId, metadataTypes) } constructExtension(extraValue, extraMetadataId, extensions, metadataIds, metadataTypes) @@ -183,13 +182,13 @@ func generateExtraMetadata(extra SignedExtension, metadataIds map[string]int, me return extraMetadataId } -func getExtraMetadata(id int, metadataTypes *sc.Sequence[MetadataType]) MetadataType { +func getExtraMetadata(id int, metadataTypes *sc.Sequence[MetadataType]) { for _, t := range *metadataTypes { if t.Id.ToBigInt().Int64() == int64(id) { - return t + *metadataTypes = append(*metadataTypes, t) + break } } - return MetadataType{} } // buildMetadataTypeRecursively build the metadata of the type recursively. diff --git a/primitives/types/extra_test.go b/primitives/types/extra_test.go index dee160c7..c4ab47e0 100644 --- a/primitives/types/extra_test.go +++ b/primitives/types/extra_test.go @@ -117,6 +117,7 @@ var ( var ( expectedH512MetadataId = lastIndex + 1 expectedEd25519PublicKeyMetadataId = lastIndex + 2 + expectedWeightId = lastIndex + 3 // A map that contains the ids of all additional signed complex checks metadataIdsComplexAll = map[string]int{ @@ -136,6 +137,7 @@ var ( "H256": metadata.TypesH256, "H512": expectedH512MetadataId, "Ed25519PublicKey": expectedEd25519PublicKeyMetadataId, + "Weight": expectedWeightId, } lastIndexComplexChecks = len(metadataIdsComplexAll) @@ -183,13 +185,14 @@ var ( metadataSignedExtensionComplex, } - tupleAdditionalSignedMetadataType = NewMetadataType(expectedTupleAdditionalSignedMetadataId, "H256U32U64H512Ed25519PublicKey", + tupleAdditionalSignedMetadataType = NewMetadataType(expectedTupleAdditionalSignedMetadataId, "H256U32U64H512Ed25519PublicKeyWeight", NewMetadataTypeDefinitionTuple(sc.Sequence[sc.Compact]{ sc.ToCompact(metadata.TypesH256), sc.ToCompact(metadata.PrimitiveTypesU32), sc.ToCompact(metadata.PrimitiveTypesU64), sc.ToCompact(expectedH512MetadataId), - sc.ToCompact(expectedEd25519PublicKeyMetadataId)})) + sc.ToCompact(expectedEd25519PublicKeyMetadataId), + sc.ToCompact(expectedWeightId)})) signedExtraMdType = MetadataType{ Id: sc.ToCompact(metadata.SignedExtra), @@ -281,7 +284,8 @@ var ( expectedCheckEraMetadataIdSome = lastIndexComplexChecksSome + 2 expectedEraMetadataIdSome = lastIndexComplexChecksSome + 3 expectedExtraCheckComplexIdSome = lastIndexComplexChecksSome + 4 - expectedTupleAdditionalSignedMetadataIdSome = lastIndexComplexChecksSome + 5 + expectedWeightIdSome = lastIndexComplexChecksSome + 5 + expectedTupleAdditionalSignedMetadataIdSome = lastIndexComplexChecksSome + 6 testExtraCheckEmptyMetadataTypeSome = MetadataType{ Id: sc.ToCompact(expectedEmptyCheckMetadataIdSome), @@ -313,13 +317,19 @@ var ( }), ) - tupleAdditionalSignedMetadataTypeSome = NewMetadataType(expectedTupleAdditionalSignedMetadataIdSome, "H256U32U64H512Ed25519PublicKey", + weightMetadataTypeSome = NewMetadataType(expectedWeightIdSome, "Weight", NewMetadataTypeDefinitionComposite(sc.Sequence[MetadataTypeDefinitionField]{ + NewMetadataTypeDefinitionFieldWithName(metadata.PrimitiveTypesU64, "RefTime"), + NewMetadataTypeDefinitionFieldWithName(metadata.PrimitiveTypesU64, "ProofSize"), + })) + + tupleAdditionalSignedMetadataTypeSome = NewMetadataType(expectedTupleAdditionalSignedMetadataIdSome, "H256U32U64H512Ed25519PublicKeyWeight", NewMetadataTypeDefinitionTuple(sc.Sequence[sc.Compact]{ sc.ToCompact(metadata.TypesH256), sc.ToCompact(metadata.PrimitiveTypesU32), sc.ToCompact(metadata.PrimitiveTypesU64), sc.ToCompact(metadata.TypesFixedSequence64U8), - sc.ToCompact(metadata.TypesFixedSequence64U8)})) + sc.ToCompact(metadata.TypesFixedSequence64U8), + sc.ToCompact(expectedWeightIdSome)})) testExtraCheckComplexMetadataTypeSome = MetadataType{ Id: sc.ToCompact(expectedExtraCheckComplexIdSome), @@ -348,6 +358,7 @@ var ( eraMetadataTypeSome, testExtraCheckEraMetadataTypeSome, testExtraCheckComplexMetadataTypeSome, + weightMetadataTypeSome, tupleAdditionalSignedMetadataTypeSome, signedExtraMdTypeSome, } diff --git a/primitives/types/testExtraCheckComplex_test.go b/primitives/types/testExtraCheckComplex_test.go index 3d50835b..0c539a68 100644 --- a/primitives/types/testExtraCheckComplex_test.go +++ b/primitives/types/testExtraCheckComplex_test.go @@ -18,7 +18,7 @@ type testExtraCheckComplex struct { func newtTestExtraCheckComplex() SignedExtension { return &testExtraCheckComplex{ era: Era{}, - additionalSignedData: sc.NewVaryingData(H256{}, sc.U32(0), sc.U64(0), H512{}, Ed25519PublicKey{}), + additionalSignedData: sc.NewVaryingData(H256{}, sc.U32(0), sc.U64(0), H512{}, Ed25519PublicKey{}, Weight{}), } }