# Providers and Signers

Imagine this. You need to interact with a smart contract that is deployed in the blockchain. For that we first need an ethereum node which contains the complete state of the blockchain and makes it possible for us to interact with the blockchain. There are many ethereum node providers such as infura, alchemy etc...

Now what is a provider?

A `Provider` is an Ethereum node connection that allows you to read data from its state. You will use a `Provider` to do things like calling read-only functions in smart contracts, fetching balances of accounts, fetching transaction details, etc.

Ok so what if we need to write data to the blockchain?

A `Signer` is an Ethereum node connection that allows you to write data to the blockchain. You will use a `Signer` to do things like calling write functions in smart contracts, transferring ETH between accounts, etc. To do so, the `Signer` needs access to a `Private Key` it can use for making transactions on behalf of an account.
