Zoe API
Zoe v0.24.0. Last updated August 25, 2022.
The Zoe framework provides a way to write smart contracts without having to worry about offer safety. To use Zoe, we put things in terms of "offers". An offer proposal is a statement about what you want and what you're willing to offer. It turns out, many smart contracts (apart from gifts and one-way payments) involve an exchange of digital assets that can be put in terms of offer proposals.
Start creating your own contract or build on any of our existing contracts. Explore our pre-built contracts.
The Zoe API supports the following objects:
Object | Description |
---|---|
Zoe Service | Deploys and works with smart contracts. |
UserSeat | Used outside contracts to access or manipulate offers. |
Zoe Contract Facet | Accesses a running contract instance. |
ZCFSeat | Used within contracts to access or manipulate offers. |
ZCFMint | Used by a contract to issue digital assets. |
The Zoe API provides the following libraries:
Library | Description |
---|---|
ZoeHelpers | Functions that extract common contract code and patterns into reusable helpers. |
Ratio Math | Functions that let you create and manipulate Ratios. |
The Zoe API introduces and uses the following data types:
Data Type | Description |
---|---|
Allocation | The Amounts to be paid out to each seat upon exiting an Offer. |
AmountKeywordRecord | A record in which the property names are Keywords and the values are Amounts. |
Handle | A Far object without any methods whose only useful property is its unique identity. |
Instance | A handle to an opaque object that represents a contract instance. |
Invitation | A non-fungible eright that can be held in Payments or Purses, just like any other eright. |
InvitationIssuer | An Issuer for Invitations, which grant the right to participate in a contract. |
Keyword | An ASCII identifier string that must begin with an upper case letter. |
ParsableNumber | Defined as a bigint, number, or string. |
Ratio | Pass-by-value record that consists of a numerator Amount and a denominator Amount. |
TransferPart | Allocation changes for one or two existing ZCFSeats. TransferParts are the individual elements of the transfer array passed into the atomicRearrange() function. |