Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
TIP-18 Multi-Asset Ledger and ISC Support (#38)
* Adds output types RFC * Formatting fixes * Polishing text * Polishing text vol2 * Minor edit * Add RFC number * Add link to dust protection RFC * Formatting updates * Update output type bytes Do not use reserved output type numbers from chpt2. * Update text/0038-output-types-for-tokenization-and-sc/0038-output-types-for-tokenization-and-sc.md Co-authored-by: Thoralf-M <46689931+Thoralf-M@users.noreply.github.com> * One sig per unlock block * Clarify timelock condition Output can be unlocked if time is equal or past the timelock. * Add note about NFT burning * Change Indexation Tag Length to uint8 * Update Blocks Count to uint8 * Rename `Return Amount Block` to `Dust Deposit Return Block` The block should only be used to get back dust deposits. * Move new tx layout & validation to Transaction Payload RFC Update the original RFC with the new protocol rules, refernce them here. * Add Sender Block to alias, add missing NFTAddress to the block * Add white background to chain figure * Remove last ref to BLS * Clarify Indexation Block The ID of the output is indexed with the indexation tag. * Lift spending constraints when output is expired * Remove SimpleOutput * Add ref to RFC-41 for types and subschemas * Fix section link * Add alias & NFT unlock validation Unlock validation has two stages: - syntactic validation - semantic validation in transaction context * Sort native tokens in lexicographical order * Add native token uniqueness criteria Native tokens in outputs must be sorted in lexicographical order and must not contain duplicate Token IDs. * Fix typos * Sender Block of Alias can be changed by both transitions * Transform RFC-38 into TIP-18 * Update ref to protocol constants * Replaces occurences of RFC with TIP * Refactor outputs with unlock conditions * Merge time based unlock conditions, use Return Address * Fix typo * Fix unlock count validation rule for nft * Require Return Amount != 0 in DDRUC * Fix typos * Add Amount != 0 check to native token syntactic validation * Update address defs * Add amount checks to output validation * Add allowed block list to foundry * Unlock ref index < Max Inputs Count * Require Amount != 0 of any output * Polish alias/nft unlock blocks * Update table of content * Native Tokens Count is uint8 * Change data length from uint32 to uint16 * Refactor, addded: * Immutable Alias Address Unlock Condition for foundries * Immutable Blocks for UTXO state machines * Rename Extended Output to Basic Outpu * Rename inner `Address` fields of addresses The address digest is: * PubKeyHash for Ed25519 Addresses * Alias ID for Alias Addresses * NFT ID for NFT Adresses * Fix small typo * Rename Dust Deposit -> Storage Deposit * Add Amount <= Max Supply syntactic check * Update Storage Deposit Return UC syntactic validation * Make native tokens burnable by holders - Burning by users is equivalent to sending the tokens to the zero address, but without the need to cover the storage deposit. - Melting is the token burning operation performed by the foundry. - Foundry output can only be destroyed when it melts all previously minted tokens. - The update of the `Melted Tokens` field of the foundry determines whether the destroyed tokens are burned or melted. * Fix typo * Update tips/TIP-0018/tip-0018.md Co-authored-by: Sam Chen <sam.chen@iota.org> * Refactor some foundry fields into Token Scheme field - Validation logic does not change, but separated into Token Scheme validation steps * Clarifiy SDRUC semantic rules Return amount on the output side may be in one or more basic outputs with only an address UC. * Update to new dynamic byte array serializaiton primitives * Simplify SDRUC syntactic validation rules * Return payment can be more than `Return Amount` when consuming SDRUC outputs * Fix typo * Change Alias ID and NFT ID to 32 bytes length * Remove TokenTag from foundry and Token ID * Update ref to "Message" to "Block" to align with IOTA 2.0 terminology * Rename "feature blocks" to "features", "unlock blocks" to "unlocks" * Fix small typo * Use IOTA coins consistently * Reformat table * Add outcome table to Expiration Unlock Condition * Minor edit * Editing minor edit * Remove Milestone Index based timelocking, rely on Unix Timestamp * Update tips/TIP-0018/tip-0018.md Fix extra space Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Luca Moser <me+github@lucamoser.ch> * Update tips/TIP-0018/tip-0018.md Co-authored-by: Thoralf-M <46689931+Thoralf-M@users.noreply.github.com> * Add clarification for SDRUC refund outputs * Add definition of "Unlocked Address" for Sender and Issuer features * Fix table for expirration unlocks Table had reverse logic Co-authored-by: Thoralf-M <46689931+Thoralf-M@users.noreply.github.com> Co-authored-by: Sam Chen <sam.chen@iota.org> Co-authored-by: Luca Moser <me+github@lucamoser.ch>
- Loading branch information