RGB FAQ
  • Welcome to RGB!
  • 💡What is RGB?
  • 📚RGB Resources
  • ⚙️RGB design principles
  • 🎓RGB paradigms
    • Single-use seals
    • Cryptographic commitments
    • Client-side validation
    • Strict encoding
  • 🔖RGB Smart contracts
    • What is a smart contract?
    • What is contract schema?
    • How does one program RGB smart contracts?
    • Do you define the validity of a state transition with Schema?
  • ☣️RGB & ₿itcoin
    • Will RGB require a fork of Bitcoin or Lightning?
    • RGB testnet & mainnet
    • Taproot, Schnorr signatures and RGB
    • Does anything need to happen in Lightning or Bitcoin to enable Lightning on RGB?
    • Is there a plan to work on channel factories?
  • 🎨RGB NFT
    • RGB NFT vs other NFT
    • What's the difference between RGB design of NFTs and common NFT approach?
  • ❓FAQ
    • What is RGB?
    • What does 'RGB' stand for?
    • Is RGB a new blockchain?
    • What can I do with RGB?
    • Is it possible to create a DAO with RGB?
    • RGB vs alternatives
    • Is RGB Turing-complete?
    • Does RGB require Taproot?
    • What RGB is compatible with?
    • Will Simplicity be used in RGB?
    • Why there is no RGB MVP with updates rolling out after?
    • How is confidentiality reached in RGB?
    • How is safety reached in RGB?
    • What is client-side validation?
    • How scalable is RGB?
    • Is there an RGB "Hello World" guide?
  • 📖Glossary
    • Contracts
      • ContractId
      • NodeId
      • Node
      • State
      • State assignment
      • State transition
      • Assignment
      • Assignment variant
      • State data
      • State type
      • Metadata fields
      • Metadata
      • Data type
      • Genesis
    • AluVM
    • Bifrost
    • Client-side validation
    • Contractum
    • Deterministic Bitcoin commitments
      • Container construction/deconstruction
      • Container
      • Commitment
      • Commitment embedding
      • LockScript
      • Proof
      • Protocol-specific entropy
      • Supplement
    • Right
    • Schema & Scripts
      • Schema
      • Field type
      • Assignment type
      • Bit dimensions
      • ABI
      • Script library
      • Occurence boundaries
      • Script extensibility
      • Transition type
    • Single-use seals
      • Witness
      • Seal definition
      • Seal blinding
      • Multimessage commitments
      • Seal closing over message
    • Stash
      • Stash
      • Consignment
      • Disclosure
      • Anchor
      • Forget procedure
      • Merge procedure
      • Validate procedure
      • Conceal procedure
      • Consign procedure
    • Encodings
      • Merklization commitment encoding
      • Storage encoding
      • Strict encoding
      • Pedersen commitments
      • Blinding factors
      • Buletproofs
      • Conceal
      • Commitment encoding
  • 🙋Community
    • Developer calls
    • Presentation slides
    • YouTube
    • Getting familiar with RGB
    • Articles & interviews on RGB
Powered by GitBook
On this page
  • What is a right in RGB?
  • Rights can be:
  • Main properties of rights in RGB:
  • Right transfer/state transition validation rules.
  • Security measures

Was this helpful?

  1. Glossary

Right

What is a right in RGB?

Right - type of action, defined in a smart contract, that can be taken only by a party owning some part of the smart contract state.

Rights can be:

  1. To have an asset(s)* - e.g. if you have shares, it gives you the right to distribute dividends, vote etc.

  2. To inflate asset supply - very different from p.1, as the person who owns the asset, doesn't have the right to inflate the supply of it, only the issuer decides and defines who will have this right. It also can be transferred to other party.

  3. To prune/burn assets.

  4. To own/do something with identity.

  5. To create child identity for identity management.

*Thus: Assets are actual digital rights, and they are represented as ownership rights under RGB schema.

Main properties of rights in RGB:

  • defined

  • assigned

  • transferred

  • owned

  • validated

Right transfer/state transition validation rules.

  1. Right transfer and state validation rules are defined by schema using 2 main instruments:

    a) schema structure - defines how rights can be divided among descendants.

    For example, if I have 100 assets and would like to give 10 of them to Alice and 90 of them to Bob, the fact that I can divide the asset like that is a part of schema structure.

    There also can be other rights: indivisible as in case with non-fungible assets, identity or a right to inflate: I can’t divide it and the schema must clearly say that this right is indivisible.

    b) Simplicity script - defines how to validate the rights/how the state of some rights may evolve.

    For example, when you have an initial state and the final state, simplicity script can run arbitrary complex logic to validate that the state change is correct. In case of an asset we are not just adding the sum of inputs and outputs, because we use confidential amounts, we are using zk proof constructed out of homomorphic sum of inputs and outputs and that is basically being done by the simplicity script. Also, if you want you can create an asset that would be deflationary, you can restrict the rules of the state transition validation to the fact that the sum of outputs must be 10% lower than the sum of inputs (and this is also defined by simplicity script as a part of a schema.

  2. Can be further restricted (and not extended) at the level of genesis and each state transitions.

  3. Validated by new owners backwards up to genesis within a particular subgraph.

  4. Violation of the rights in one smart contract ownership branch does not affect smart contract integrity in the other branch.

Security measures

  1. Each right (i.e. state) does not have direct access to the information on another state, under other rights.

For example, you have 2 different types of rights under smasr contract (inflationary and right to asset). At the level of validation of the history you are unable to take into account the information on whether some inflation happened or not (if it had been allowed by the issuer, of course). You can still validate that if the issuer hasn’t allowed the inflation, it did not happen. But if the issuer has allowed the inflation, you cannot see whether it already happened or not, while validating the amount that you received at your disposal. So one state is isolated from another in smart contract. It’s very different from how it works in Ethereum and brings strong security by default.

  1. If required, rights can have a “shared state” using metadata; schema and genesis must explicitly define whether this is allowed.

"Shared state" can be introduced only by the issuer and has to be defined at the level of schema, not at genesis. If the schema doesn’t allow you to share the state between different rights, as an issuer you need to stick to another schema that would allow that.

  1. State can be “hidden” (made confidential with zero knoweldge; which state MUST be hidden is defined by schema.

Amounts in fungible assets are always confidential and the schema can put the requirement that this state must always be confidential the way it does for fungible asset.

Owned right is a particular right (abstract concept); for instance in fungible assets these rights are:

  • asset ownership

  • inflation

  • renomination

  • burn epoch creation

  • burn / burn-and-replace operation

An owned right may have some state data attached. Some rights do not have state data, and this called “declarative” (or “Void” previously). Also, an owned right is always attached (we call that “assigned”) to a specific UTXO.

PreviousSupplementNextSchema & Scripts

Last updated 3 years ago

Was this helpful?

📖