Penumbra supports the IBC protocol for interoperating with other counterparty blockchains. Unlike most blockchains that currently deploy IBC, Penumbra is not based on the Cosmos SDK. IBC as a protocol supports replication of data between two communicating blockchains. It provides basic building blocks for building higher-level cross chain applications, as well as a protocol specification for the most commonly used IBC applications, the ICS-20 transfer protocol.
In order to support the IBC protocol, Penumbra adds a single additional Action
IBCAction. an IBCAction can contain any of the IBC datagrams:
These datagrams are implemented as protocol buffers, with the enclosing
IBCAction type using profobuf’s
OneOf directive to encapsulate all possible
IBC datagram types.
Penumbra’s native state model uses notes, which contain an amount of a
particular asset. Amounts in Penumbra are 128-bit unsigned integers, in order
to support assets which have potentially large base denoms (such as Ethereum).
When receiving an IBC transfer, if the amount being transferred is greater than
u128, we return an error.