# The Agoric Platform
A physical machine can run one or several vats. A blockchain can run one or several communicating vats.
The internal state of a vat can be stored in a persistent memory so that the vat can be turned off and later turned back on (on the same or a different physical machine) by loading the stored state.
A SwingSet instance also handles communication between the vats it provides and the outside world. On a blockchain, this means writing to a part of the state that is intended to serve as an outbox. On a non-blockchain machine, this might mean sending a message to a remote machine.
SwingSet provides orthogonal persistence (opens new window).
# Cosmos SDK
# Dynamic IBC
IBC is the protocol for Inter-Blockchain Communication (opens new window). IBC enables messages to be sent from one blockchain to another with the use of intermediary relayers.
Dynamic IBC (dIBC) is a solution to the problem of rolling out a new protocol without needing a platform upgrade or chain governance vote.
In essence, dIBC is the idea of using a smart contract or VM platform to deploy new contracts that support new protocols, all on an existing chain without having to wait for chain upgrades.
For more information, check out a recent article on dIBC (opens new window).
Tendermint is a consensus engine, defining how blocks are agreed upon and created. Effectively, Tendermint is the lowest level layer that defines the blockchain itself.