Create new assets on a sidechain, with optional confidentiality.
Users can issue their own confidential assets which represent fungible ownership of the underlying asset type representing by the newly created units, which could theoretically represent any asset including vouchers, coupons, currencies, deposits, bonds, shares, etc. (subject to the respective jurisdiction’s regulatory requirements).
These assets can optionally be “blinded”, causing the data in the transactions (including amount and asset type) to be cryptographically obfuscated in such a way that only the participating parties can see. Participants may choose to reveal a “blinding key”, which grants visibility into the transaction.
This opens the door for building trustless exchanges, options, and other advanced smart contracts involving those arbitrary assets and a “hostcoin”.
Use the all-new
issueasset RPC command. Here, we’re issuing 1000 new tokens,
and creating 200 “reissuance” tokens.
$ elements-cli issueasset 1000 200
You can add convenient names for these assets by passing
-assetdir to Elements
Core, which accepts a
hexidstring:label map of the assets to their labels.
Re-issuing an asset is effectively a provable inflation in the asset type. To
do this, use
reissueasset. Let’s issue 20 of our tokens:
elements-cli reissueasset 8854427e5ffcb0b837e85832b901b1135cc4ac766f537e2a7f07b71a76c5b9cf 20
All outputs are tagged with an asset commitment. Like CT, the consensus rules
are such that instead of checking that amounts are balanced, the value
commitments are checked for balance. A new transaction type is added for
creating issued assets (asset definition transactions). Asset definition
transactions have explicit
assetIssuance fields embedded within transaction
inputs, up to one issuance per input, which denote the issuance of both the
asset itself and the reissuance tokens if desired. Embedding issuances within an
input allows us to re-use the entropy as a NUMS for the asset type itself.
This technology is similar to colored coins in many ways, but explicit and consensus-enforced tagging has many advantages:
- Supports SPV wallets much more efficiently.
- Allows more complex consensus-enforced contracts.
- Benefits from other consensus-enforced extensions (ie confidential transactions would not be compatible with colored coins on top of Alpha).
- Opens the door for further consensus-enforced extensions that rely on the chain being able to operate with multiple assets.
Currently only the hostcoin can be used to pay fees, but it should be possible to pay fees of different asset types simultaneously.