Skip to content

Commit

Permalink
TIP-18 Multi-Asset Ledger and ISC Support (#38)
Browse files Browse the repository at this point in the history
* 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
4 people authored Sep 8, 2022
1 parent d4bd651 commit 8de9a3c
Show file tree
Hide file tree
Showing 2 changed files with 3,839 additions and 0 deletions.
Binary file added tips/TIP-0018/chain-constraint.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 8de9a3c

Please sign in to comment.