Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IOG Partner Chain Work stream #8

Open
wants to merge 22 commits into
base: main
Choose a base branch
from

Conversation

nhenin
Copy link

@nhenin nhenin commented May 22, 2024

Executable Specifications

Property 1 - Non Fungible Property Transitivity : EN Token is an NFT => the ENOP Token should be an NFT

  • Register
    • Property 1.0 : Tokens Quantities are verified
      • r.1.0.0 violation - No ENNOP Minted (can't be enforced)
      • r.1.0.1 violation - ENNOP Minted Quantity > 1
      • r.1.0.2 violation - No ENNFT on Registration validator output
      • r.1.0.3 violation - ENNFT Quantity > 1
    • Property 1.1 : NFTs Token Names & Cardinality equality : There is 1-1 relationship between the ENNFT and the ENOPNFT
      • r.1.1.0 violation - ENOPNFT TokenName =/ ENNFT TokenName
      • r.1.1.1 violation - |ENOP NFT| > 1 (Cardinality Violation)
      • r.1.1.2 violation - |EN NFT| > 1 (Cardinality Violation)
  • Update
    • Property 1.0 : Tokens Quantities are verified
      • u.1.0.0 violation - ENNOP Not Output to Operator
      • u.1.0.1 violation - No ENNFT on Registration validator output
      • u.1.0.2 violation - No Minting Allowed
      • u.1.0.3 violation - No Burning Allowed
    • Property 1.1 : NFTs Token Names & Cardinality equality : There is 1-1 relationship between the ENNFT and the ENOPNFT
      • u.1.1.0 violation - ENOPNFT TokenName =/ ENNFT TokenName:
      • u.1.1.1 violation - |ENOP NFT| > 1 (Cardinality Violation)
      • u.1.1.2 violation - |EN NFT| > 1 (Cardinality Violation)
  • Deregister
    • Property 1.0 : Tokens Quantities are verified
      • d.1.0.0 violation - No ENNOP NFT To Burn
      • d.1.0.1 violation - No Minting Allowed
      • d.1.0.2 violation - ENOP NFT Quantity to Burn > 1 (enforced by Non Fungible Property of EN Tokens )
      • d.1.0.3 violation - No ENNFT Released To Operator
    • Property 1.1 : NFTs Token Names & Cardinality equality : There is 1-1 relationship between the ENNFT and the ENOPNFT
      • d.1.1.0 violation - ENOPNFT TokenName =/ ENNFT TokenName:
      • d.1.1.1 violation - |ENOP NFT| > 1 (Cardinality Violation)
      • d.1.1.2 violation - |EN NFT| > 1 (Cardinality Violation)
      • d.1.1.3 violation - No Registration validator Output Allowed

Property 2 - Preserving NFTs ownership : ENOP and ENNFT can be swapped only between the operator and the registration smart contract

  • Register

    • Property 2.0 : ENOP NFT should be given to the operator
      • r.2.0.0 violation - ENNOP Minted Not Output to Operator
    • Property 2.1 : ENNFT should be output on script (Already Validated by - 1.0.2 violation - No ENNFT on Registration validator output )
  • Update

    • Property 2.0 : ENOP NFT should be spent and given back to the operator
      • u.2.0.0 violation -ENNOP Not Output to Operator(Already Validated by - u.1.0.0 violation )
    • Property 2.1 : ENNFT should be output on script (Already Validated by - u.1.0.2 violation - No ENNFT on Registration validator output )
  • Deregister

    • Property 2.0 : ENOP NFT should be spent from the operator and burnt
      • d.2.0.0 violation - No ENNOP Burn (Already Validated by - d.1.0.0 violation )
      • d.2.0.1 violation - Burn Without A Proper Registration Validator Input Not Allowed
    • Property 2.1 : ENNFT should be spent from Registration scipt and output to Operator (Already Validated by - d.1.0.1 violation )
  • Register & Update & Deregister

    • Property 2.2 : Only the operator should sign the transaction
      • 2.1.0 violation - No signer found (Enforced by Ledger Properties)
      • 2.1.1 violation - signer is not unique

Property 3 - Datum Authenticity & Validity : The registration details (datum) should be verifiable and Valid (Signed and Provided by the owner of the ENNFT)

  • Register & Update
    • 3.0.o violation - Registration datum Output should be valid
      • 3.0.1.o violation - ennftTokenName field should be equal to the spent ennft token Name
      • 3.0.2.o violation - enopNFTCurrencySymbol field should be equal to the ENOP NFT currency Symbol minted
    • 3.1.o violation - Registration datum Output can not be deserialized
    • 3.2.o violation - Registration datum Output is not Auhtentic
    • 3.3.o violation - Registration validator Output not found (not verifiable)
    • 3.4.o violation - Registration validator Output has no datum (not verifiable)
    • 3.5.o violation - Registration validator Output has only the hashed datum (not verifiable)
    • 3.6.o violation - More than one Registration validator Output is not allowed (Reducing complexity)

@nhenin nhenin changed the title Partner Chain SoW IOG Partner Chain Work stream May 22, 2024
@nhenin nhenin marked this pull request as draft June 6, 2024 14:16
Add cardano-node to flake and the corresponding start-up script
@nhenin nhenin marked this pull request as ready for review July 19, 2024 12:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants