Verified Network
  • What is the Verified Network
  • How to use it
  • Reference
    • Verified SDK
      • Using the SDK
      • Wallet and Contracts
      • Know your Customer
        • Using the KYC plugin
      • Delegated permissions
      • Investment products
        • Product lifecycle
        • Example of a Product
      • Security tokens
        • Issuing functions
      • Liquidity pools
        • Buy and Sell Orders workflow
        • Buy and Sell Order Complete workflow example
      • Secondary issues
      • Primary issues
        • Primary offer function
      • Margin traded issues
        • Offering collateral
      • Adding money to wallet
        • Paying in supported tokens
      • Issuing cash tokens
        • Issuing and Exchange functions
      • Making payments
        • Transferring cash tokens
      • Withdrawals
        • Redeeming cash tokens
      • Custody of Assets
        • Custody functions
      • Staking to invest
        • Liquidity functions
        • Market maker functions
      • Staking to borrow
        • Bond issuing function
      • Lending
        • Bond purchase function
      • Repayments
        • Bond redemption function
      • Claiming collateral
        • Defaults and Unsold bonds
      • Returns on Investment
        • Manager and Platform returns
    • Verified REST API
      • Market data
        • Get all assets
        • Get Tradable Asset Pairs
        • Get Ticker Information
        • Get Orderbook
      • Order data
        • Get Account Balance
        • Get Trade Balance
        • Get Open Orders
        • Get Closed Orders
        • Query Orders Info
        • Query Trades Info
        • Get Trades History
      • Order Management
        • Add Order
        • Edit Order
        • Cancel Order
    • Verified Subgraphs
    • Verified Applications
      • Doing KYC
        • Creating wallet
        • Using the Verified Dapp
        • Doing KYC
      • Primary issues
        • Creating a new issue
        • Subscribing to issue
        • Closing issue
      • Secondary trading
        • Market orders
        • Limit orders
        • Edit, Cancel, Settle orders
      • Margin trading
        • Post Margin collateral
        • Swaps
        • Edit, Cancel, Settle orders
      • Portfolio
        • Account statement
        • Corporate actions
        • Underwriting liquidity
Powered by GitBook
On this page
  1. Reference
  2. Verified SDK

Wallet and Contracts

Creating wallets and using contracts

Verified wallets for users can be created either using a dynamically generated mnemonic or by importing mnemonics for an existing private key for the user on a supported ethereum network.

//Common Js
const { VerifiedWallet, Provider } = require('@verified-network/verified-sdk'); 
//ES Module
import { VerifiedWallet, Provider } from '@verified-network/verified-sdk'

/** Step 1: Create Verified Wallet **/
    //Option 1: Generate new Mnemonics and Wallet
    const investorMnemonics = await VerifiedWallet.generateMnemonics()
    const investorWallet = await VerifiedWallet.importWallet(menmonics)
   
     //Option 2: using existing wallet mnemonics
    const investorMnemonics = 'your wallet mnemonics'
    const investorWallet = await VerifiedWallet.importWallet(investorMnemonics); 
    
/** Step 2: Set Provider for Wallet **/ 
    //Option 1: using Default Providers by ethers.js(for networks like mainnet, sepolia, ropstan, polygon e.t.c)
    const defaultProviderNetwork = 'sepolia' // or any other default provider network of your choice.
    //Network/chain id(number) can be used in place of network name, for example:
    const defaultProviderNetwork = 11155111 // where number 11155111 is chain id for sepolia. any other chain id of default provider network can be used.    
    const investorWalletProvider = investorWallet.setProvider(
        Provider.defaultProvider(defaultProviderNetwork)
    )
    
    //Option 2: using custom providers(infura and alchemy)
    const network = 'sepolia' // or any other network of your choice.
    //Network/chain id(number) can be used in place of network name, for example:
    const network = 11155111 // where number 11155111 is chain id for sepolia, any other chain id can be used.
    
    //For infura; to get api key and enable networks checout: https://www.infura.io/
    const INFURA_API_KEY = 'your infura api key'
    const investorWalletProvider = investorWallet.setProvider(
        Provider.infuraProvider(network, INFURA_API_KEY)
    )
    
    //For alchemy; to get api key and enable networks checout: https://www.alchemy.com/
    const ALCHEMY_API_KEY = 'your alchemy api key'
    const investorWalletProvider = investorWallet.setProvider(
        Provider.alchemyProvider(network, ALCHEMY_API_KEY)
    )

Above, the investor wallet provider can be used to initialize Verified contracts and interact with them by calling various functions on contracts.

/** Import contract **/

//Common Js
const { Client, contractAddress } = require('@verified-network/verified-sdk'); 
//ES Module
import { Client, contractAddress } from '@verified-network/verified-sdk'

/** get chainId **/
    const conectedNetwork = await investorWalletProvider.getNetwork();
    const chainId = conectedNetwork.chainId;
/** fetch contract address **/
//All verified contracts addresses can be fetched from contractAddress object
    const networkContractAddresses = contractAddress[chainId]; //All verified contract addresses on connected network
    const clientContractaddress = networkContractAddresses.Client; //Client contract address
/** Initialize Contract **/
    const clientContract = new Client(investorWalletProvider, clientContractaddress);
/** Interact with contract **/
    const investorAddres = await investorWallet.getAddress() //get user address
    await clientContract.getRole(investorAddres);

Wallets from web brower extensions/wallets of any choice like Metamask, Coinbase wallet e.t.c can be used with Verified Sdk to interact with Verified Contracts.

/** install ethers: npm install --save ethers **/

//Common Js
const { ethers } = require('ethers');
//ES Module
import { ethers } from 'ethers';

/** Step 1: Get Proider from browser wallet **/
    //MetaMask injects provider as window.ethereum
    //Any provider by web wallet of choice can be used
    const webWalletProvider = window.ethereum; 
    //convert to ethers.js provider
    const provider = new ethers.providers.Web3Provider(webWalletProvider);
    //other ethers provider methods exists that will work 
    //with any provider of choice checkout: https://docs.ethers.org/v5/getting-started/
    
/** Step 2: Connect and get signer to initialise contracts **/
    // MetaMask requires requesting permission to connect users accounts
    //Any connection method for any web browser of choice can be used;
    const connectedAccounts = await provider.send("eth_requestAccounts", []); 
    const signer = provider.getSigner()

Above, the signer can be used to initialize Verified contracts and interact with them by calling various functions on contracts.

/** Import contract **/

//Common Js
const { Client, contractAddress } = require('@verified-network/verified-sdk'); 
//ES Module
import { Client, contractAddress } from '@verified-network/verified-sdk'

/** get chainId **/
    const conectedNetwork = await provider.getNetwork();
    const chainId = conectedNetwork.chainId;
/** fetch contract address **/
//All verified contracts addresses can be fetched from contractAddress object
    const networkContractAddresses = contractAddress[chainId]; //All verified contract addresses on connected network
    const clientContractaddress = networkContractAddresses.Client; //Client contract address
/** Initialize Contract **/
    const clientContract = new Client(signer, clientContractaddress);
/** Interact with contract **/
    const investorAddres = connectedAccounts[0] //get first account connected from web wallet
    await clientContract.getRole(investorAddres);

Certain contracts are proxies that indirect calls to concrete implementations. For example, cash tokens representing different currencies all have the same behavior and are produced by a cash token factory. In such cases, the contract needs to be parameterized (in this case, with a currency contract's address) before use.

const cashUSDIssuer = new CashContract(issuerWallet, VXUSD);
await cashUSDIssuer.payIn('10', investorWallet.address, 'VXUSD')

Optionally, all the contract Calls take in an additional parameter: options?: { gasPrice: number, gasLimit: number } You can configure the gasPrice and gasLimit using this parameter as the last parameter to the contractCall function. Example: contract.function(arg 1, arg2, options) Where, options = {gasPrice: XXX, gasLimit: YYY}

PreviousUsing the SDKNextKnow your Customer

Last updated 1 year ago