Transactions

Transactions describe an atomic collection of changes to the ledger state. Each transaction consist of a sequence of descriptions for various actions. Each description adds or subtracts (typed) value from the transaction’s value balance, which must net to zero. Penumbra uses Sapling’s spend description, which spends a note and adds to the transaction’s value balance, and output description, which creates a new note and subtracts from the transaction’s value balance, and adds many new descriptions to support additional functionality:

  • FeeDescriptions declare and burn transaction fees;

  • TransferDescriptions transfer value out of Penumbra by IBC, consuming value from the transaction’s value balance, and producing an ICS20 FungibleTokenPacketData;

  • DelegateDescriptions convert unbonded stake to bonded stake, consuming unbonded stake from the transaction’s value balance and producing new notes recording bonded stake;

  • UndelegateDescriptions convert bonded stake to unbonded stake, consuming bonded stake from the transaction’s value balance and producing new notes recording unbonded stake;

  • CommissionDescriptions are used by validators to sweep commission on staking rewards into shielded notes, adding unbonded stake to the transaction’s value balance;

  • ProposalDescriptions are used to propose measures for on-chain governance and supply a deposit, consuming bonded stake from the transaction’s value balance and producing a new note that holds the deposit in escrow;

  • VoteDescriptions perform private voting for on-chain governance and declare a vote, consuming bonded stake from the transaction’s value balance and producing a new note with the same amount of bonded stake;

  • SwapDescriptions consume and burn tokens of one type from a transaction’s value balance and produce a swap commitment that permits the user to later mint tokens of a different type;

  • SweepDescriptions allow a user who burned tokens of one type to mint tokens of a different type at a chain-specified clearing price, and adds the new tokens to a transaction’s value balance.

  • DepositDescriptions deposit funds into the liquidity pool for a trading pair, and produce liquidity pool shares, consuming value of the traded types and producing value of the shares’ type;

  • WithdrawDescriptions redeem liquidity pool shares and withdraw funds from a liquidity pool, consuming the shares’ type and producing value of the traded types;

TODO

  • add links to specifications in the Cryptography section