Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Page Properties
label


Status

Status
colour

Grey

Green
title

Not started

decided

Stakeholders
Outcome
Due date
Owner


Background

We should declare the initial set of outOOB (Out-ofOf-the-box Box) Iroha Special Instructions for Hyperledger Iroha 2.0.0 release.

Action items

Problem

Iroha whitepaper, current implementation and users' expectations are differ different in terms of out-of-the-box Iroha Special Instructions set.

...

Split out-of-the-box instructions into the following categories:

  • Domain related
    •  Register/
    Unregister<Id, Identifiable>
    • Unregister<Identifiable>
    •  Mint/Burn<Id, Value>
    •  Transfer<Id, Value, Id>
  • Math
    • Integer
      •  Add/Substract
      <Value
      • <EvaluatesTo<u32>,
      Value>
      • EvaluatesTo<u32>>
      •  Multiply/
      Divide<Value, Value>
    • RaiseTo<Value, Value>
    • Mod<Value, Value>
  • Compositions
    • Sequence<Vec<Instruction>>
    • Pair<Instruction, Instruction>
    • If<Instruction, Instruction, Instruction>
    • Not<Instruction>
  • Queries
    • Execute<Query>

...

      • Divide<EvaluatesTo<u32>, EvaluatesTo<u32>>
      •  RaiseTo<EvaluatesTo<u32>, EvaluatesTo<u32>>
      •  Mod<EvaluatesTo<u32>, EvaluatesTo<u32>>
    • Comparison:
      •  Equate<Value, Value>
      •  Greater/Less<EvaluatesTo<u32>, EvaluatesTo<u32>>
    • Bool
      •  Not<EvaluatesTo<bool>>
      •  And/Or<EvaluatesTo<bool>, EvaluatesTo<bool>>
  • Compositions
    •  Sequence<Vec<Instruction>>
    •  Pair<Instruction, Instruction>
    •  If<EvaluatesTo<bool>, Instruction, Option<Instruction>>
  • Vectors
    •  Contains<EvaluatesTo<Vec<Value>>, EvaluatesTo<Value>>
    •  ContainsAny/ContainsAll<EvaluatesTo<Vec<Value>>, EvaluatesTo<Vec<Value>>>
  • Variables
    •  Where<Value, BTreeMap<String, Value>>
    •  ContextValue<String>
  • Queries
    •  Execute<Query>
  • Misc
    •  Fail<String>

Provide a set of possible domain-related instructions:

  • Register/Unregister
    •  Register or unregister Domain in Peer
    •  Register or unregister Account in Domain
    •  Register or unregister Asset Definition in Domain
    •  Register or unregister Peer Id in Peer 
    •  Register or unregister Signatory in Account
  • Mint
    •  Mint or burn value to or from an Asset 
  • Fees
    •  Register or unregister TransactionFee (e.g., fixed, percentage, DEX-swapped)


Provide a set of tools for DeFi:

  • Register DEX
    •  Register or unregister DEX (DEXManager) in Domain
  • Register Liquidity Source
    •  Register or unregister XYK Pool in DEX
    •  Register or unregister Order Book in DEX
  • Set liquidity fees
    •  Register or unregister LiquidityFee (e.g., buy back and burn, pool share, etc.)


Provide a set of tools for Digital Identity (https://ieeexplore.ieee.org/abstract/document/8377927/):

Alternatives 

  • Do not have categories and generic instructions using a plain set of instructions like "AddDomain, RegisterAccount" - as cons we can point out naming and extensibility problems
  • Do not have granularity and differences between register, mint, add - as cons we can point out different business-related meanings for similar actions and to a wide set of options in one bucket

Concerns 

  • Too A too big or too small set of out-of-the-box instructions can be hard to maintain or not sufficient for users needs
  • Iroha 1 users can struggle from the new naming

Assumptions - document any assumption that you made

  • We did not made make a final decision about "Iroha Modules" related instructions (DEX, Bridge, Permissions, etc.) and their inclusion into out-of-the-box set yet

...

  • Set will be incomplete from the users' perspective `[5;2]`
  • We missed some categories `[2;7]`

...