11use crate :: multiaddr:: Protocol ;
2- use crate :: rpc:: methods:: MetaDataV3 ;
3- use crate :: rpc:: { MetaData , MetaDataV1 , MetaDataV2 } ;
2+ use crate :: rpc:: { MetaData , MetaDataV2 , MetaDataV3 } ;
43use crate :: types:: { EnrAttestationBitfield , EnrSyncCommitteeBitfield , GossipEncoding , GossipKind } ;
54use crate :: { GossipTopic , NetworkConfig } ;
65use futures:: future:: Either ;
@@ -165,38 +164,41 @@ pub fn strip_peer_id(addr: &mut Multiaddr) {
165164/// Load metadata from persisted file. Return default metadata if loading fails.
166165pub fn load_or_build_metadata < E : EthSpec > (
167166 network_dir : & Path ,
168- custody_group_count_opt : Option < u64 > ,
167+ custody_group_count : u64 ,
169168) -> MetaData < E > {
170- // We load a V2 metadata version by default (regardless of current fork)
171- // since a V2 metadata can be converted to V1. The RPC encoder is responsible
169+ // We load a V3 metadata version by default (regardless of current fork)
170+ // since a V3 metadata can be converted to V1 or V2 . The RPC encoder is responsible
172171 // for sending the correct metadata version based on the negotiated protocol version.
173- let mut meta_data = MetaDataV2 {
172+ let mut meta_data = MetaDataV3 {
174173 seq_number : 0 ,
175174 attnets : EnrAttestationBitfield :: < E > :: default ( ) ,
176175 syncnets : EnrSyncCommitteeBitfield :: < E > :: default ( ) ,
176+ custody_group_count,
177177 } ;
178+
178179 // Read metadata from persisted file if available
179180 let metadata_path = network_dir. join ( METADATA_FILENAME ) ;
180181 if let Ok ( mut metadata_file) = File :: open ( metadata_path) {
181182 let mut metadata_ssz = Vec :: new ( ) ;
182183 if metadata_file. read_to_end ( & mut metadata_ssz) . is_ok ( ) {
183- // Attempt to read a MetaDataV2 version from the persisted file,
184- // if that fails, read MetaDataV1
185- match MetaDataV2 :: < E > :: from_ssz_bytes ( & metadata_ssz) {
184+ // Attempt to read a MetaDataV3 version from the persisted file,
185+ // if that fails, read MetaDataV2
186+ match MetaDataV3 :: < E > :: from_ssz_bytes ( & metadata_ssz) {
186187 Ok ( persisted_metadata) => {
187188 meta_data. seq_number = persisted_metadata. seq_number ;
188189 // Increment seq number if persisted attnet is not default
189190 if persisted_metadata. attnets != meta_data. attnets
190191 || persisted_metadata. syncnets != meta_data. syncnets
192+ || persisted_metadata. custody_group_count != meta_data. custody_group_count
191193 {
192194 meta_data. seq_number += 1 ;
193195 }
194196 debug ! ( "Loaded metadata from disk" ) ;
195197 }
196198 Err ( _) => {
197- match MetaDataV1 :: < E > :: from_ssz_bytes ( & metadata_ssz) {
199+ match MetaDataV2 :: < E > :: from_ssz_bytes ( & metadata_ssz) {
198200 Ok ( persisted_metadata) => {
199- let persisted_metadata = MetaData :: V1 ( persisted_metadata) ;
201+ let persisted_metadata = MetaData :: V2 ( persisted_metadata) ;
200202 // Increment seq number as the persisted metadata version is updated
201203 meta_data. seq_number = * persisted_metadata. seq_number ( ) + 1 ;
202204 debug ! ( "Loaded metadata from disk" ) ;
@@ -213,19 +215,8 @@ pub fn load_or_build_metadata<E: EthSpec>(
213215 }
214216 } ;
215217
216- // Wrap the MetaData
217- let meta_data = if let Some ( custody_group_count) = custody_group_count_opt {
218- MetaData :: V3 ( MetaDataV3 {
219- attnets : meta_data. attnets ,
220- seq_number : meta_data. seq_number ,
221- syncnets : meta_data. syncnets ,
222- custody_group_count,
223- } )
224- } else {
225- MetaData :: V2 ( meta_data)
226- } ;
227-
228- debug ! ( seq_num = meta_data. seq_number( ) , "Metadata sequence number" ) ;
218+ debug ! ( seq_num = meta_data. seq_number, "Metadata sequence number" ) ;
219+ let meta_data = MetaData :: V3 ( meta_data) ;
229220 save_metadata_to_disk ( network_dir, meta_data. clone ( ) ) ;
230221 meta_data
231222}
0 commit comments