Describe the Issue
EVMChainClient and BitcoinClient has a lot in common aside from the logic to actually observe transactions
We should consider grouping the common logic under a chain base, this would also be reused for future chains
This eventually can be defined in the chain_client package from #2020 by create a ChainClientBase
Some of the tasks:
- Group common logic in in
NewBitcoinClient and NewEVMChainClient
- A function initializing logger, core_context, etc..
Bonus: renaming client into observer, since this is the component observing external chain transaction