Key Terms & Concepts
A contract that has been created and not yet archived. In Daml's UTXO model, only active contracts can be exercised.
A validated blockchain address in CosmWasm. Use deps.api.addr_validate() to convert a string to an Addr.
To mark a contract as consumed/inactive. Archived contracts cannot be exercised. Most choices archive their contract by default (consuming choices).
Consensus mechanism that can tolerate up to 1/3 malicious nodes. Used by Tendermint/CometBFT in the Cosmos ecosystem.
A message type for transferring native tokens. Includes BankMsg::Send for transfers and BankMsg::Burn for burning tokens.
A privacy-enabled distributed ledger protocol that runs Daml smart contracts. Enables atomic transactions across multiple domains with sub-transaction privacy.
An action that can be performed on a contract. Defined with a controller (who can exercise), parameters, and a body of actions. Similar to methods in OOP.
A smart contract platform for Cosmos SDK blockchains. Contracts are written in Rust and compiled to WebAssembly (WASM).
A unique identifier for a specific contract instance. Type is ContractId a where a is the template type.
The party (or parties) authorized to exercise a choice. Defined in the choice declaration and enforced by the ledger.
The fungible token standard for CosmWasm, similar to ERC-20. Defines standard interfaces for token transfers, allowances, and queries.
The non-fungible token (NFT) standard for CosmWasm, similar to ERC-721.
Digital Asset Modeling Language. A purpose-built smart contract language for multi-party business workflows with built-in authorization.
The compiled package format for Daml code. Created by daml build and deployed to ledgers.
Dependency injection in CosmWasm providing access to storage, API (address validation), and querier. DepsMut allows writes, Deps is read-only.
A synchronization domain in Canton. Provides ordering and validation for transactions. Participants can connect to multiple domains for cross-domain atomic transactions.
Functions marked with #[entry_point] that the blockchain runtime can call: instantiate, execute, query, migrate, and IBC handlers.
Environment information provided to contract calls including block height, time, chain ID, and the contract's own address.
To invoke a choice on a contract. Requires the caller to be a valid controller. Use exercise or exerciseCmd in scripts.
Protocol for communication between Cosmos SDK blockchains. Enables token transfers and arbitrary message passing across chains via light client verification.
A Daml 2.0+ feature allowing templates to implement common behaviors. Enables polymorphism and reusable choice definitions.
A Canton component that validates transaction confirmations without seeing the transaction content. Enables privacy-preserving consensus.
Information about the message sender including their address (info.sender) and any funds sent with the message (info.funds).
Entry point for upgrading a contract to new code. Only callable by the contract admin. Used for schema migrations and bug fixes.
A party who can see a contract but is not a signatory. Observers can see the contract's existence and data but cannot exercise choices unless also a controller.
A node in the Canton network that hosts parties and executes Daml contracts. Participants connect to domains and can participate in multi-domain transactions.
An identity on the ledger that can create contracts, exercise choices, and observe data. Parties are the fundamental unit of authorization in Daml.
The return type from execute entry points. Contains messages to dispatch, sub-messages for replies, attributes for events, and optional data.
A Canton component that provides total ordering of messages within a domain. Does not see transaction contents, only encrypted envelopes.
A party whose authorization is required to create or archive a contract. Signatories implicitly observe the contract and guarantee its validity.
A message that can trigger a reply callback. Used for composing contract calls where you need to handle the response. Has reply modes: always, on_success, on_error, never.
A Daml contract type definition. Specifies the data fields, signatories, observers, choices, and other contract properties. Similar to a class in OOP.
A model where contracts are consumed and new ones created, rather than mutated. Daml uses a UTXO-like model where exercising a choice typically archives the contract.
A 128-bit unsigned integer type commonly used for token amounts in CosmWasm. Prevents overflow and provides safe arithmetic operations.
A binary instruction format that CosmWasm contracts compile to. Provides sandboxed execution, determinism, and portability across different blockchain implementations.
Message types for interacting with other CosmWasm contracts: Execute, Instantiate, Migrate, UpdateAdmin, ClearAdmin.