@@ -30,29 +30,29 @@ use rlp::{Decodable, Rlp};
3030pub fn execute (
3131 bytes : & [ u8 ] ,
3232 state : & mut TopLevelState ,
33- fee_payer : & Address ,
33+ _fee_payer : & Address ,
3434 _sender_public : & Public ,
3535 current_block_number : u64 ,
3636) -> StateResult < ( ) > {
37+ let mut context = ibc_context:: TopLevelContext :: new ( state, current_block_number) ;
3738 let datagram = Datagram :: decode ( & Rlp :: new ( bytes) ) . expect ( "Verification passed" ) ;
3839 match datagram {
3940 Datagram :: CreateClient {
4041 id,
4142 kind,
4243 consensus_state,
43- } => create_client ( state , fee_payer , & id, kind, & consensus_state, current_block_number ) ,
44+ } => create_client ( & mut context , & id, kind, & consensus_state) ,
4445 Datagram :: UpdateClient {
4546 id,
4647 header,
47- } => update_client ( state , & id, & header, current_block_number ) ,
48+ } => update_client ( & mut context , & id, & header) ,
4849 Datagram :: ConnOpenInit {
4950 identifier,
5051 desired_counterparty_connection_identifier,
5152 counterparty_prefix,
5253 client_identifier,
5354 counterparty_client_identifier,
5455 } => {
55- let mut context = ibc_context:: TopLevelContext :: new ( state, current_block_number) ;
5656 let connection_manager = ibc_connection:: Manager :: new ( ) ;
5757 connection_manager
5858 . handle_open_init (
@@ -98,14 +98,11 @@ pub fn execute(
9898
9999
100100fn create_client (
101- state : & mut TopLevelState ,
102- _fee_payer : & Address ,
101+ ctx : & mut dyn ibc:: Context ,
103102 id : & str ,
104103 kind : ibc_client:: Kind ,
105104 consensus_state : & [ u8 ] ,
106- current_block_number : u64 ,
107105) -> StateResult < ( ) > {
108- let mut context = ibc_context:: TopLevelContext :: new ( state, current_block_number) ;
109106 let client_manager = ibc_client:: Manager :: new ( ) ;
110107 if kind != ibc_client:: KIND_FOUNDRY {
111108 return Err ( RuntimeError :: IBC ( format ! ( "CreateClient has invalid type {}" , kind) ) . into ( ) )
@@ -119,17 +116,16 @@ fn create_client(
119116 } ;
120117
121118 client_manager
122- . create ( & mut context , id, & foundry_consensus_state)
119+ . create ( ctx , id, & foundry_consensus_state)
123120 . map_err ( |err| RuntimeError :: IBC ( format ! ( "CreateClient: {:?}" , err) ) ) ?;
124121 Ok ( ( ) )
125122}
126123
127- fn update_client ( state : & mut TopLevelState , id : & str , header : & [ u8 ] , current_block_number : u64 ) -> StateResult < ( ) > {
128- let mut context = ibc_context:: TopLevelContext :: new ( state, current_block_number) ;
124+ fn update_client ( ctx : & mut dyn ibc:: Context , id : & str , header : & [ u8 ] ) -> StateResult < ( ) > {
129125 let client_manager = ibc_client:: Manager :: new ( ) ;
130- let client_state = client_manager. query ( & mut context , id) . map_err ( RuntimeError :: IBC ) ?;
126+ let client_state = client_manager. query ( ctx , id) . map_err ( RuntimeError :: IBC ) ?;
131127
132- client_state. update ( & mut context , header) . map_err ( RuntimeError :: IBC ) ?;
128+ client_state. update ( ctx , header) . map_err ( RuntimeError :: IBC ) ?;
133129
134130 Ok ( ( ) )
135131}
0 commit comments