Request Network Docs
WebsiteGithubStatusDiscord
  • Request Network Docs
  • Request Network API
    • Create and Pay Requests
    • Crosschain Payments
    • Crypto-to-fiat Payments
    • Batch Payments
    • EasyInvoice: API Demo App
    • API Portal: Manage API Keys and Webhooks
    • Full API Reference
    • Migrate to V2
  • 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 1 month ago

Was this helpful?

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

Contracts Overview

Request Network smart contracts are available here.

Contracts type

There are three types of contracts

  • Storage - These store Content Identifiers (CIDs) for Requests stored in IPFS.

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

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

Storage

RequestOpenHashSubmitter

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.

StorageFeeCollector

Manages the fees for the creation of a request.

RequestHashStorage

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

Payments

ERC20FeeProxy

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

ERC20Proxy

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

EthereumFeeProxy

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

EthereumProxy

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

ERC20EscrowToPay

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.

BatchConversionPayments

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

BatchNoConversionPayments

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

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

ERC20SwapToPay

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

ERC20ConversionProxy

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.

ETHConversionProxy

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.

ERC20SwapToConversion

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.

ERC20TransferableReceivable

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

ERC20SingleRequestProxy

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

EthereumSingleRequestProxy

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

SingleRequestProxyFactory

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

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

Smart Contract Addresses

Smart Contract Source

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