Modules are the code components of the Provenance Blockchain that execute the majority of the business logic for applications.
The Cosmos SDK enables developers to build modules that utilize the core structure of the SDK to allow the modules to function together. To read more about creating modules, refer to the Cosmos documentation on modules.
Provenance Blockchain leverages inherited modules from Cosmos SDK, and additionally has purpose-built custom modules unique to Provenance Blockchain:
Attribute: Registry that allows an Address to store
<Name, Value>
pairs. Every Name must be registered by the Name Service, and a Name may have multiple Values associated with it. Values are required to have a type, and they can be set or retrieved by Name. This feature provides the blockchain with the capability to store and retrieve values by Name. It also allows an Address to create and store a named smart contract on the blockchain.Exchange: Facilitates the trading of on-chain assets. Funds being traded remain (on hold) in the buyers' and sellers' accounts. Settlement is done directly between the two parties without the funds touching a 3rd party's account.
Hold - Keeps track of funds in an account that have a hold placed on them, and are therefore locked. Designed for use by other modules that need to lock funds in place in an account. Funds with a hold on them remain in the owners account but cannot be spent, sent, delegated or otherwise removed from the account until they are released from hold. A hold can only be placed on funds that would otherwise be spendable. E.g. you can place a hold on vested funds, but not unvested funds.
IBC Hooks - IBC middleware used to allow ICS-20 token transfers to initiate contract calls. This allows cross-chain contract calls, that involve token movement. This is useful for a variety of use cases, primarily cross-chain swaps.
IBC Crate Limit - Forked from Osmosis Ibc Rate Limit. Is responsible for adding a governance-configurable rate limit to IBC transfers. This is a safety control, intended to protect assets on osmosis in event of a bug/hack on Osmosis, counter-party chain, or in IBC itself.
Marker - Provides the capability for creation and management of fungible tokens on the Provenance Blockchain. Various types of tokens can be represented including standard coins and restricted coins (securities).
Metadata - Provides a system for referencing off-chain information. It can be used to record and validate information as well as the processes that create the information.
Msg Fees - Manages additional fees that can be applied to transaction messages specified through governance.
Name - Provides a system for creating human-readable names as aliases for addresses and to imply ownership and control. These names can be used to provide a stable reference to a changing address or collection of addresses. One issue with a blockchain is that addresses are complex strings of characters that are difficult to type and remember. On the other hand the name service can provide a potentially shorter and easier to remember alias such as
provenance.pb
or attribute.user.pb
to use in place of the address.Oracle - Provides the Provenance Blockchain with the capability to dynamically expose query endpoints through Interchain Queries (ICQ). One challenge that the Provenance Blockchain faces is supporting each Provenance Blockchain Zone with a unique set of queries. It is not feasible to create an evolving set of queries for each chain. Furthermore, it is not desirable for other parties to request Provenance to build these endpoints for them and then upgrade. This module resolves these issues by enabling Provenance Blockchain zones to manage their own oracle.
Quarantine - Allows management of quarantined accounts and funds. It also injects restrictions into the
x/bank
module to enforce account quarantines.Sanction - Allows management of a list of sanctioned accounts that are prevented from sending or spending any funds. It injects a restriction into the
x/bank
module to enforce these sanctions.Trigger - Provides Provenance Blockchain users with the capability to schedule the execution of specific transactions to occur automatically after a predetermined event. This powerful feature creates a more sophisticated and responsive system that allows users to seamlessly react to Provenance Blockchain events and send transactions in response.