O. Oluwapelumi. A.
  • NEW!
    NEW!  Connect Ideas Across Notes
    Save time and share insights. With Paragraph Citation, you can quote others’ work with source info built in. If someone cites your note, you’ll see a card showing where it’s used—bringing notes closer together.
    Got it
      • Create new note
      • Create a note from template
        • Sharing URL Link copied
        • /edit
        • View mode
          • Edit mode
          • View mode
          • Book mode
          • Slide mode
          Edit mode View mode Book mode Slide mode
        • Customize slides
        • Note Permission
        • Read
          • Only me
          • Signed-in users
          • Everyone
          Only me Signed-in users Everyone
        • Write
          • Only me
          • Signed-in users
          • Everyone
          Only me Signed-in users Everyone
        • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invite by email
        Invitee

        This note has no invitees

      • Publish Note

        Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

        Your note will be visible on your profile and discoverable by anyone.
        Your note is now live.
        This note is visible on your profile and discoverable online.
        Everyone on the web can find and read all notes of this public team.

        Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

        Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

        Explore these features while you wait
        Complete general settings
        Bookmark and like published notes
        Write a few more notes
        Complete general settings
        Write a few more notes
        See published notes
        Unpublish note
        Please check the box to agree to the Community Guidelines.
        View profile
      • Commenting
        Permission
        Disabled Forbidden Owners Signed-in users Everyone
      • Enable
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Suggest edit
        Permission
        Disabled Forbidden Owners Signed-in users Everyone
      • Enable
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
      • Emoji Reply
      • Enable
      • Versions and GitHub Sync
      • Note settings
      • Note Insights New
      • Engagement control
      • Make a copy
      • Transfer ownership
      • Delete this note
      • Save as template
      • Insert from template
      • Import from
        • Dropbox
        • Google Drive
        • Gist
        • Clipboard
      • Export to
        • Dropbox
        • Google Drive
        • Gist
      • Download
        • Markdown
        • HTML
        • Raw HTML
    Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
    Create Create new note Create a note from template
    Menu
    Options
    Engagement control Make a copy Transfer ownership Delete this note
    Import from
    Dropbox Google Drive Gist Clipboard
    Export to
    Dropbox Google Drive Gist
    Download
    Markdown HTML Raw HTML
    Back
    Sharing URL Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Customize slides
    Note Permission
    Read
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    Write
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Multi-chain Architecture and Prism The Findora blockchain is composed of two different blockchain architectures combined into a single model “multi-chain” model. These two architectures include a UTXO-based blockchain model (aka native chain) and an accounts-based blockchain model (aka smart chain). Prism is the name of the feature that enables users to bridge (aka transfer) assets from the UTXO-based side to the accounts-based side (and vice-versa) of the Findora blockchain. ## What is a UTXO Blockchain Model? UTXO stands for unspent transaction output. A UTXO model functions much like cash does in two respects: * all data necessary for the transaction are contained in the transaction itself * UTXO amounts cannot be changed For example, if you owed a store $22 but only had a $20 dollar bill and a $5 dollar bill, you’d need to give both bills to the store to pay for the transaction. Then, you’d then receive $3 back from the store as the spare change. In this example, the $20 bill and the $5 bill act like UTXO amounts. In a UTXO model, that $3 would become a new UTXO amount – i.e. unspent transaction output. Just as you can’t make bills smaller, you can’t make UTXOs smaller. New coins can come from mining or from the “leftovers” (i.e. spare change) from a transaction. In over-simplified bitcoin-centric terms, you might have a 3 BTC UTXO and a 5 BTC UTXO. In that case, if you wanted to buy something that cost 7 BTC, you’d have to give both the 5 BTC UTXO and the 3 BTC UTXO. In return, you would get a new UTXO of 1 BTC back. UTXO model blockchains, like Bitcoin and ZCash, work similarly. All transaction data is contained within the transaction including who is sending and receiving, and how much is spent. A UTXO model is considered stateless because the system does not remember, record, or store preceding events. You can’t spend the same BTC twice because you can’t break a UTXO unit into smaller portions without submitting a transaction that gets mined. Once a particular state change (Spending of UTXO ) is added to the blockchain, it negates any other transactions using the same UTXO ( The base check for UTXO being unspent would fail ) ### What is an Account-Based Blockchain Model? An account model, however, operates like a debit card. Account-based blockchains like Ethereum keep an account for every user, and when you conduct a transaction on Ethereum, your account in the global state is adjusted. This is known as statefulness, or state, because the network remembers, records, and stores preceding events. So if you had 30 ETH and you spent 23.5 on an NFT, your account in the global state would be updated to show you only had 6.5 ETH remaining. Account state data functions like a bank account when you use your debit card. Essentially, the merchant processor checks the bank to make sure the funds are available. If the funds are available, then the receiving account is credited with the funds sent, and the sender account is debited the same amount. Account models rely on global state to store the data necessary for a transaction, which allows for more complicated transactions and business logic via smart contracts. However, these transactions tend to be slower and harder to scale because all transactions have to happen in the correct order and the amount of state data that must be consulted is always growing. # Findora Structure Findora is a leading privacy-focused blockchain that combines an innovative hybrid of UTXO and Ethereum Virtual Machine (EVM) blockchain technologies to enable programmable privacy. Below we will discuss the key concepts and technical details behind both the UTXO and account-based blockchain architectures and how they are combined to power the Findora blockchain architecture. ## Two is Better than One Findora’s architecture features two built-in blockchains, one running on the UTXO model (aka native chain) and one using the account model (aka smart chain). Both chains are validated and secured at the native chain level using Tendermint consensus to achieve high throughput. Assets can be frictionlessly bridged between the native chain and the smart contract chain via Prism, a feature that is accessible via the Findora desktop wallet and Findora CLI. ## Findora Native Chain (UTXO model) The Findora native chain layer functions exactly as a UTXO model blockchain would. This is the protocol layer with no accounts or wallets. Instead, tokens are stored as a list of UTXOs. Each UTXO has a quantity attribute and criteria for spending it. Transactions are created by consuming existing UTXOs and producing new UTXOs in their place. ## Why Use the UTXO Model for the Native Chain? Below are the key benefits of the UTXO model: * Zero-Knowledge Proofs - The UTXO model allows Findora native chain to support zero-knowledge proofs (ZKPs). ZKPs make it possible to publicly generate and verify cryptographic proofs that do not reveal transaction details. * Privacy - Using the UTXO model, combined with ZKPs, provides users with privacy features, including confidential payments that can mask different fields, like the transaction amount, or the sender / receiver address, in the transaction body. * Scalability - The UTXO model means transactions can be easily verified in parallel. It is impossible for two transactions to affect the same UTXO. This is due to the stateless nature of UTXO transactions. Transactions do not refer to any input outside of the UTXOs consumed and the corresponding signatures. * Decentralization - The stateless nature of a UTXO format also allows for smaller storage requirements, which makes it less expensive for full nodes to be maintained, and thus increases the decentralization and fault tolerance of the network. # Findora Smart Chain (Account model) In an account model, instead of having each token be uniquely referenced, tokens are represented as a balance within an account in the global state. Accounts can either be controlled by a private key or a smart contract. Findora smart chain fully supports the Ethereum Virtual Machine (EVM). This augments the usability and programmability of Findora because the smart chain will be able to easily run code from existing smart contracts on chains like Ethereum. DEXs and Dapps can thus be deployed more quickly using existing tools and templates. With EVM compatibility, the smart chain creates a foundation that is easy to build on. With Findora native chain, developers can add more privacy using Prism. ## Why Use the Account Model for Smart Chain? Compatibility * Developers can easily port existing Ethereum Dapps, DEXs and cross-chain bridges using the Ethereum tool chain and pre-compiled smart contract templates. Simplicity * The account model is more intuitive, especially for developers writing complex smart contracts that require stateful information, or involve multiple parties. Efficiency * The account model is more efficient as each transaction only needs to validate that the sending account has enough balance to pay for the transaction, which also makes indexing simpler. Flexibility * The smart chain allows for more flexible transactions. Transactions on this layer will depend on the existing state and can interact with external inputs to achieve the desired results. This allows features like oracles and other logic to influence the resulting state of a transaction. ## Findora’s Multi-chain Architecture This multi-chain architecture provides the benefits of both the UTXO and account models. The two models complement each other allowing users to choose whether to store assets in the form of a UTXO or an account balance based on their needs. It does this by using separate storage methods for each chain while combining their hashes to maintain network integrity. ### What Does Prism Do? <img src={useBaseUrl("/img/prism/prism-1.png")} width="60%" height="40%"/> In general, most blockchains follow one of two record-keeping models: the UTXO model or the account model. Blockchains such as Bitcoin and ZCash use a UTXO model. Blockchains such as Ethereum and Polkadot use an account model. There are tradeoffs with either model. A lot of internet ink has been spilled fighting over which approach is better, but why choose one, when you can have both? Findora integrates both models inside its chain architecture to capitalize on the advantages of each. These parallel chains are united by Prism (fka internal transfer), which allows the two chains to atomically swap tokens and work together as one without having to trust a central intermediary. ### Differences between the UTXO and Account Model * A UTXO model stores its assets as a set of unspent transaction outputs whereas the account model stores a set of addresses with their associated balances. * UTXO transactions specify the resulting state but in an account model the resulting state is dependent on the previous one. * The account model simplifies UI/UX implementations in terms of displaying balances for specific addresses where it is a bit more complex to display this information from a UTXO based system. Since most users are familiar with accounts and balances, this needs to be generated by summing up the UTXO's of given addresses. * With a UTXO based system, the smart contracting abilities are limited. This is because of the nature of the conditions set within the UTXO for spending. This can require signatures that can be difficult to produce. * When executing transactions in an account based system, each transaction must be processed serially when dealing with the same address. The UTXO model can however process its transactions in parallel since it is impossible for two transactions to affect the same UTXO. * There is a precaution that must be made for Account based systems to ensure previously signed transactions are not replayed on the network. This is usually in the form of an incrementing nonce that ensures uniqueness. For UTXO based systems this is not an issue since every UTXO gets consumed and can't be spent again. ## Hybrid UTXO Model The hybrid model implemented by Findora allows users to store assets in the form of a UTXO or balance. It is able to do this by using separate storage methods while combining their hashes to maintain integrity within the network. There are two main transactions that a user can broadcast in order to translate the asset types from one to the other: 1. Transfer UTXO assets to account balance * The transaction is built with a Transfer and Convert operation * The UTXO is burnt by transferring to a burn address * Assets are minted for the owner address specified in the transaction 2. Transfer to UTXO assets from account balance * Assets are burnt from the specified address by subtracting the balance * Minting operations are queued to be processed by the chain * The Ledger mints UTXOs based on the amounts specified * Once Assets can be transferred between the different models, the system can take advantage of the capabilities provided by both Accounts and UTXO models. In other words, some of the disadvantages experienced by one model can be overcome by making use of the other. For example: * The accounts model can provide a contracting environment by integrating an EVM implementation. * The UTXO model can provide a level security by preventing replay attacks. * Confidential and anonymous functionality implemented on the Findora chain is available through the UTXO model * ### FRA Tokens on Native Chain and Smart Chain (FRC-20 FRA) FRA is the native token of the Findora blockchain. On the native chain, the tokens are called “FRA-native tokens,” and are used for staking to guarantee network security, paying transaction fees, and voting on Findora Improvement Proposals. On the smart chain, FRA tokens are called “FRA-smart tokens,” and are used to pay transaction fees and interact with Dapps built on the Findora EVM. Special Note: A key innovation of the Findora’s Smart Chain is the design of the Smart Chain token which is not only a token required to pay for gas transactions on the Smart Chain but it’s also been enhanced to follow the Smart Chain’s FRC-20 standard (i.e. Findora’s version of Ethereum’s ERC-20) by default. So unlike Ethereum, which requires the ETH tokens to be wrapped into ERC-20 form before they can work on an Ethereum DEX, Findora Smart Chain tokens will work automatically on any Findora DEX without the extra step of needing to wrap the FRA tokens first. ### Prism for FRA-native and FRA-smart With Prism, users can atomically and trustlessly convert their FRA-native tokens on the native chain to FRA-smart tokens on the smart chain. NOTE: Prism will soon support custom tokens ( i.e. any custom tokens issued on Findora native chain or Findora smart chain). Stay tuned! Here is a general overview of how Prism works: ### Native Chain -> Smart Chain * The transaction is built with a Transfer and Convert operation * The UTXO is burnt by transferring to a burn address * Assets are minted by adding to the owner’s balance (account specified in the transaction) * The transaction fees for this transaction are paid using FRA-native ### Smart Chain -> Native Chain * Assets are burnt from the specified address by subtracting the balance * Minting operations are queued to be processed by the chain * The ledger mints UTXOs based on the amounts specified * The transaction fees for this transaction are paid using FRA-smart tokens NOTE: The exact steps can be found here: https://wiki.findora.org/docs/dapp/wallet

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully