my_address
is your address you use to post the asset-defining message. The address must be funded to pay at least the transaction fees (about 1000 bytes).asset
is a javascript object that describes the properties of your asset. Here is an example:cap
is the total number of coins that can be issued (money supply). If omitted, the number is unlimited.is_private
: indicates whether the asset is private (such as blackbytes) or publicly traceable (similar to bytes).is_transferrable
: indicates whether the asset can be freely transferred among arbitrary parties or all transfers should involve the definer address as either sender or recipient. The latter can be useful e.g. for loyalty points that cannot be resold.auto_destroy
: indicates whether the asset is destroyed when it is sent to the definer address.fixed_denominations
: indicates whether the asset exists as coins (banknotes) of a limited set of denominations, similar to blackbytes. If it is true
, the definition must also include property denominations
, which is an array of all denominations and the number of coins of that denomination:issued_by_definer_only
: indicates whether the asset can be issued only by the definer address. If false
, anyone can issue the asset, in this case cap
must be unlimited and it would make sense that issuing is limited by issue_condition
.cosigned_by_definer
: indicates whether each operation with the asset must be cosigned by the definer address. Useful for regulated assets where the issuer (bank) wants to perform various compliance checks (such as the funds are not arrested by a court order) prior to approving a transaction. This could also be used to allow fee-less asset transfers for users (paid by definer), but wallets don't support that yet.spender_attested
: indicates whether the spender of the asset must be attested by one of approved attestors. Also useful for regulated assets e.g. to limit the access to the asset only to KYC'ed users. If true
, the definition must also include the list of approved attestor addresses:issue_condition
and transfer_condition
which specify the restrictions when the asset can be issued and transferred. They evaluate to a boolean and are coded in the same smart contract language as address definitions.wallet.sendMultiPayment()
, headlessWallet.issueChangeAddressAndSendPayment()
and similar functions because they can do only transfers and they don't know about addresses that can issue new coins. Instead, you have to use lower level functions:composeAndSaveDivisibleAssetPaymentJoint
from ocore/divisible_asset.js
composeAndSaveIndivisibleAssetPaymentJoint
from ocore/indivisible_asset.js