Canister smart contracts are computational units that include both program and state. A software canister is similar to a container in that both are deployed as a software unit that contains compiled code and dependencies for a dapp or system.
Containerization allows for applications to be decoupled from the environment, allowing for easy and reliable deployment. The canister differs from a container, however, in that it also stores information about the current software state with a record of preceding events and user interactions.
While a containerized application might include information about the state of the environment in which the application runs, a software canister is able to persist a record of state changes that resulted from an application’s functions being used.
This concept of a canister consisting of both program and state is an important one because when a smart contract function is invoked by sending a message to one of its entry points, there are only two types of calls: non-committing query calls and committing update calls.
Below are some related articles on how to interact with canister smart contracts:
- How can I check the status of a canister smart contract?
- How do I install or deploy a canister smart contract?
- How can I restart a stopped canister smart contract?
- How can I stop a running canister smart contract?
- How do I create a new canister smart contract?
- How can I delete a canister smart contract?