@@ -8,14 +8,12 @@ use tracing::{debug, info, instrument};
88use { hyperlane_base:: cache:: FunctionCallCache , tracing:: warn} ;
99
1010use hyperlane_core:: {
11- AggregationIsm , HyperlaneMessage , InterchainSecurityModule , ModuleType , H256 , U256 ,
11+ AggregationIsm , HyperlaneMessage , InterchainSecurityModule , Metadata , ModuleType , H256 , U256 ,
1212} ;
1313
1414use crate :: msg:: metadata:: { base:: MetadataBuildError , message_builder} ;
1515
16- use super :: {
17- IsmCachePolicy , MessageMetadataBuildParams , MessageMetadataBuilder , Metadata , MetadataBuilder ,
18- } ;
16+ use super :: { IsmCachePolicy , MessageMetadataBuildParams , MessageMetadataBuilder , MetadataBuilder } ;
1917
2018/// Bytes used to store one member of the (start, end) range tuple
2119/// Copied from `AggregationIsmMetadata.sol`
@@ -31,7 +29,7 @@ struct SubModuleMetadata {
3129 /// The index of the sub-module (ISM) in the aggregation ISM.
3230 index : usize ,
3331 /// The metadata for the sub-module.
34- metadata : Vec < u8 > ,
32+ metadata : Metadata ,
3533}
3634
3735#[ derive( Debug ) ]
@@ -41,7 +39,7 @@ struct IsmAndMetadata {
4139}
4240
4341impl IsmAndMetadata {
44- fn new ( ism : Box < dyn InterchainSecurityModule > , index : usize , metadata : Vec < u8 > ) -> Self {
42+ fn new ( ism : Box < dyn InterchainSecurityModule > , index : usize , metadata : Metadata ) -> Self {
4543 Self {
4644 ism,
4745 meta : SubModuleMetadata :: new ( index, metadata) ,
@@ -67,7 +65,7 @@ impl AggregationIsmMetadataBuilder {
6765 let mut buffer = vec ! [ 0 ; range_tuples_size] ;
6866 for SubModuleMetadata { index, metadata } in metadatas. iter_mut ( ) {
6967 let range_start = buffer. len ( ) ;
70- buffer. append ( metadata) ;
68+ buffer. extend_from_slice ( metadata. as_ref ( ) ) ;
7169 let range_end = buffer. len ( ) ;
7270
7371 // The new tuple starts at the end of the previous ones.
@@ -269,7 +267,7 @@ impl AggregationIsmMetadataBuilder {
269267 )
270268 . await ?;
271269
272- let metadata = sub_module_and_meta. metadata . to_vec ( ) ;
270+ let metadata = sub_module_and_meta. metadata ;
273271
274272 // return an error if delivering with this metadata fails
275273 if sub_module_and_meta
@@ -357,7 +355,7 @@ impl MetadataBuilder for AggregationIsmMetadataBuilder {
357355 Ok ( sub_module_and_meta) => Either :: Left ( IsmAndMetadata :: new (
358356 sub_module_and_meta. ism ,
359357 index,
360- sub_module_and_meta. metadata . to_vec ( ) ,
358+ sub_module_and_meta. metadata ,
361359 ) ) ,
362360 Err ( _) => Either :: Right ( ( * ism_address, None ) ) ,
363361 } ) ;
@@ -381,24 +379,30 @@ mod test {
381379 let mut metadatas = vec ! [
382380 SubModuleMetadata :: new(
383381 0 ,
384- Vec :: from_hex( "290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" )
385- . unwrap( ) ,
382+ Metadata :: from_hex(
383+ "290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ,
384+ )
385+ . unwrap( ) ,
386386 ) ,
387387 SubModuleMetadata :: new(
388388 1 ,
389- Vec :: from_hex( "510e4e770828ddbf7f7b00ab00a9f6adaf81c0dc9cc85f1f8249c256942d61d9" )
390- . unwrap( ) ,
389+ Metadata :: from_hex(
390+ "510e4e770828ddbf7f7b00ab00a9f6adaf81c0dc9cc85f1f8249c256942d61d9" ,
391+ )
392+ . unwrap( ) ,
391393 ) ,
392394 SubModuleMetadata :: new(
393395 2 ,
394- Vec :: from_hex( "356e5a2cc1eba076e650ac7473fccc37952b46bc2e419a200cec0c451dce2336" )
395- . unwrap( ) ,
396+ Metadata :: from_hex(
397+ "356e5a2cc1eba076e650ac7473fccc37952b46bc2e419a200cec0c451dce2336" ,
398+ )
399+ . unwrap( ) ,
396400 ) ,
397401 ] ;
398- let expected = Vec :: from_hex ( "000000180000003800000038000000580000005800000078290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563510e4e770828ddbf7f7b00ab00a9f6adaf81c0dc9cc85f1f8249c256942d61d9356e5a2cc1eba076e650ac7473fccc37952b46bc2e419a200cec0c451dce2336" ) . unwrap ( ) ;
402+ let expected = Metadata :: from_hex ( "000000180000003800000038000000580000005800000078290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563510e4e770828ddbf7f7b00ab00a9f6adaf81c0dc9cc85f1f8249c256942d61d9356e5a2cc1eba076e650ac7473fccc37952b46bc2e419a200cec0c451dce2336" ) . unwrap ( ) ;
399403 assert_eq ! (
400404 AggregationIsmMetadataBuilder :: format_metadata( & mut metadatas, 3 ) ,
401- expected
405+ * expected
402406 ) ;
403407 }
404408
@@ -408,23 +412,31 @@ mod test {
408412 let mut metadatas = vec ! [
409413 SubModuleMetadata :: new(
410414 0 ,
411- Vec :: from_hex( "290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" )
412- . unwrap( ) ,
415+ Metadata :: from_hex(
416+ "290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ,
417+ )
418+ . unwrap( ) ,
413419 ) ,
414420 SubModuleMetadata :: new(
415421 1 ,
416- Vec :: from_hex( "510e4e770828ddbf7f7b00ab00a9f6adaf81c0dc9cc85f1f8249c256942d61d9" )
417- . unwrap( ) ,
422+ Metadata :: from_hex(
423+ "510e4e770828ddbf7f7b00ab00a9f6adaf81c0dc9cc85f1f8249c256942d61d9" ,
424+ )
425+ . unwrap( ) ,
418426 ) ,
419427 SubModuleMetadata :: new(
420428 2 ,
421- Vec :: from_hex( "356e5a2cc1eba076e650ac7473fccc37952b46bc2e419a200cec0c451dce2336" )
422- . unwrap( ) ,
429+ Metadata :: from_hex(
430+ "356e5a2cc1eba076e650ac7473fccc37952b46bc2e419a200cec0c451dce2336" ,
431+ )
432+ . unwrap( ) ,
423433 ) ,
424434 SubModuleMetadata :: new(
425435 4 ,
426- Vec :: from_hex( "f2e59013a0a379837166b59f871b20a8a0d101d1c355ea85d35329360e69c000" )
427- . unwrap( ) ,
436+ Metadata :: from_hex(
437+ "f2e59013a0a379837166b59f871b20a8a0d101d1c355ea85d35329360e69c000" ,
438+ )
439+ . unwrap( ) ,
428440 ) ,
429441 ] ;
430442 let expected = Vec :: from_hex ( "000000280000004800000048000000680000006800000088000000000000000000000088000000a8290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563510e4e770828ddbf7f7b00ab00a9f6adaf81c0dc9cc85f1f8249c256942d61d9356e5a2cc1eba076e650ac7473fccc37952b46bc2e419a200cec0c451dce2336f2e59013a0a379837166b59f871b20a8a0d101d1c355ea85d35329360e69c000" ) . unwrap ( ) ;
@@ -436,7 +448,7 @@ mod test {
436448
437449 #[ test]
438450 fn test_format_empty_metadata_works_correctly ( ) {
439- let mut metadatas = vec ! [ SubModuleMetadata :: new( 0 , Vec :: from_hex( "" ) . unwrap( ) ) ] ;
451+ let mut metadatas = vec ! [ SubModuleMetadata :: new( 0 , Metadata :: from_hex( "" ) . unwrap( ) ) ] ;
440452 let expected = Vec :: from_hex ( "0000000800000008" ) . unwrap ( ) ;
441453 assert_eq ! (
442454 AggregationIsmMetadataBuilder :: format_metadata( & mut metadatas, 1 ) ,
@@ -448,23 +460,23 @@ mod test {
448460 fn test_n_cheapest_metas_works ( ) {
449461 let metas_and_gas = vec ! [
450462 (
451- SubModuleMetadata :: new( 3 , vec![ ] ) ,
463+ SubModuleMetadata :: new( 3 , Metadata :: new ( vec![ ] ) ) ,
452464 U256 :: from_dec_str( "3" ) . unwrap( ) ,
453465 ) ,
454466 (
455- SubModuleMetadata :: new( 2 , vec![ ] ) ,
467+ SubModuleMetadata :: new( 2 , Metadata :: new ( vec![ ] ) ) ,
456468 U256 :: from_dec_str( "2" ) . unwrap( ) ,
457469 ) ,
458470 (
459- SubModuleMetadata :: new( 1 , vec![ ] ) ,
471+ SubModuleMetadata :: new( 1 , Metadata :: new ( vec![ ] ) ) ,
460472 U256 :: from_dec_str( "1" ) . unwrap( ) ,
461473 ) ,
462474 ] ;
463475 assert_eq ! (
464476 AggregationIsmMetadataBuilder :: n_cheapest_metas( metas_and_gas, 2 ) ,
465477 vec![
466- SubModuleMetadata :: new( 1 , vec![ ] ) ,
467- SubModuleMetadata :: new( 2 , vec![ ] )
478+ SubModuleMetadata :: new( 1 , Metadata :: new ( vec![ ] ) ) ,
479+ SubModuleMetadata :: new( 2 , Metadata :: new ( vec![ ] ) )
468480 ]
469481 )
470482 }
0 commit comments