Request Network Docs
WebsiteGithubStatusDiscord
  • Request Network Docs
  • Request Network API
    • Create and Pay Requests
    • Crosschain Payments
    • EasyInvoice: API Demo App
    • API Portal: Manage API Keys and Webhooks
      • Manage API Keys and Webhooks programmatically
    • Full API Reference
  • General
    • Lifecycle of a Request
    • Request Scan
    • Supported Chains
      • Smart Contract Addresses
    • Request Network Token List
  • Advanced
    • Request Network SDK
      • Get Started
        • Quickstart - Browser
        • Quickstart - Node.js
        • Installation
        • SDK Injector
        • Request Node Gateways
      • SDK Demo Apps
        • Request Invoicing
          • Pay from Safe Multisig
        • Request Checkout
        • Components
          • Create Invoice Form
          • Invoice Dashboard
          • Payment Widget
          • Add Stakeholder
      • SDK Guides
        • Request Client
          • Configure the Request Client
          • Updating a Request
          • Payment Reference
          • Compute a Request ID without creating the request
          • Use your own signature mechanism
          • Support a new currency
          • In-Memory Requests
        • Encryption and Decryption
          • Encrypt with a wallet signature using Lit Protocol
          • Encrypt with an Ethereum private key
          • Share an encrypted request
        • Payment
          • Detect a payment
          • Native Payment
          • Conversion Payment
          • Declarative Payment
          • Configuring Payment Fees
          • Single Request Forwarder
          • Batch Payment
          • Swap-to-Pay Payment
          • Swap-to-Conversion Payment
          • Transferable Receivable Payment
          • Meta Payments
          • Escrow Payment
          • Streaming Payment
          • Pay through a proxy-contract with a multisig
          • Hinkal Private Payments
        • Mobile using Expo
      • SDK Reference
        • request-client.js
          • RequestNetwork
            • createRequest()
            • computeRequestId()
            • fromRequestId()
            • fromIdentity()
            • fromTopic()
          • Request
            • waitForConfirmation()
            • getData()
            • refresh()
            • cancel()
            • accept()
            • increaseExpectedAmountRequest()
            • reduceExpectedAmountRequest()
          • IIdentity
          • IRequestDataWithEvents
          • PaymentReferenceCalculator
        • payment-processor
          • payRequest()
        • web3-signature
          • Web3SignatureProvider
        • epk-signature
          • EthereumPrivateKeySignatureProvider
        • epk-decryption
          • EthereumPrivateKeyDecryptionProvider
    • Protocol Overview
      • SDK and Request Node Overview
      • Payment Networks
      • Private Requests using Encryption
      • Smart Contracts Overview
    • Internal SDK Architecture
      • Request Logic
      • Advanced Logic
      • Transaction
      • Data-access
      • Storage
      • Data flow
      • Request IPFS network
  • FAQ
  • Glossary
  • Contributing
Powered by GitBook
On this page
  • Contracts Overview
  • Contracts type
  • Storage
  • Payments

Was this helpful?

Edit on GitHub
Export as PDF
  1. Advanced
  2. Protocol Overview

Smart Contracts Overview

PreviousPrivate Requests using EncryptionNextInternal SDK Architecture

Last updated 2 months ago

Was this helpful?

This page is missing the RequestToken, DAIbasedREQBurner, lockForREQBurn, ChainlinkConversionPath contracts

Contracts Overview

Request Network smart contracts are available .

Contracts type

There are three types of contracts

  • Storage - These store for Requests stored in IPFS.

  • Payments - These process various payment types, also known as , and are deployed across many .

  • REQ Token and Burn Mechanism - These lock, bridge, and burn REQ tokens each time a Request is stored.

Storage

Declares data hashes and collects the fees.

After a request has been sent to IPFS, the hash is declared to the whole request network system through the RequestHashStorage.

Anyone can submit hashes.

Manages the fees for the creation of a request.

This contract is the entry point to retrieve all the hashes of the request network system.

Payments

Performs an ERC20 token transfer with a payment reference and a transfer to a second address for the payment of a fee.

Performs an ERC20 token transfer with a payment reference and a transfer to a second address.

This contract performs an Ethereum transfer with a Fee sent to a third address and stores a reference.

This contract performs an Ethereum transfer sent to a third address and stores a reference.

This contract allows users to lock funds in an escrow and perform payments in ERC20. It contains a refund and emergency feature to unlock funds if needed.

This contract makes multiple conversion payments with a payment references, in one transaction.

This contract makes multiple payments with payment references, in one transaction.

This contract makes multiple payments with references, in one transaction, without conversion.

This contract swaps ERC20 tokens before paying a request such that the payer sends currency A, but payee receives currency B.

This contract uses a chainlink price feed to pay a request denominated in one currency (usually a fiat currency like USD) but paid in an on-chain currency. This variant supports ERC20 payments.

This contract uses a chainlink price feed to pay a request denominated in one currency (usually a fiat currency like USD) but paid in an on-chain currency. This variant supports native currency payments.

This contract combines "conversion" and "swap-to-pay". It executes an ERC20 swap before paying a request denominated in one currency (usually a fiat currency like USD) but paid in an on-chain currency. This variant supports ERC20 payments.

This contract allows minting requests as NFTs thus allowing them to be transferred. The owner of the request NFT receives the payment.

A contract that allows payment through the ERC20FeeProxy without having to make a function call.

A contract that allows payment through EthereumFeeProxy without having to make a function call.

A factory smart contract responsible for deploying ERC20SingleRequestProxy and EthereumSingleRequestProxy contracts.

Swap-to-Pay is different from Conversion. For details see

StorageFeeCollector
RequestHashStorage
ERC20FeeProxy
ERC20Proxy
EthereumFeeProxy
EthereumProxy
ERC20EscrowToPay
BatchConversionPayments
BatchNoConversionPayments
ERC20SwapToPay
ERC20ConversionProxy
ETHConversionProxy
ERC20SwapToConversion
ERC20TransferableReceivable
ERC20SingleRequestProxy
EthereumSingleRequestProxy
SingleRequestProxyFactory

here
Content Identifiers (CIDs)
Payment Networks
Supported Chains
RequestOpenHashSubmitter

Smart Contract Addresses

Smart Contract Source

📫
ℹ️
Difference between Conversion, Swap-to-Pay, and Swap-to-Conversion