Provider

A thin JSON-RPC wrapper for interacting with chains and Blocto wallet.

Blocto SDK comes with an EIP-1193 compatible provider, you can use it to interact with EVM-compatible chains.

Note that Blocto SDK for EVM-compatible chains is still in Beta. APIs are subject to breaking changes.

Installation

Install from npm/yarn/pnpm

npm i @blocto/sdk

... or via CDN

<script src="https://unpkg.com/@blocto/sdk" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

Usage

Initiate Blocto SDK

After SDK 0.9.0, you can load all evm-compatiable chains once when initiating.

ParameterTypeDescriptionRequired

defaultChainId

string (hex)

Hexadecimal chainId

Yes

switchableChains

Array

AddEthereumChainParameter {
  chainId: string;
  rpcUrls: string[];
}

Array of AddEthereumChainParameter

Yes

const bloctoSDK = new BloctoSDK({
  ethereum: {
    defaultChainId: '0x1',
    switchableChains: [
      {
        chainId: '0x1',
        rpcUrls: ['https://mainnet.infura.io/v3/...'],
      },
      {
        chainId: '0xa4b1',
        rpcUrls: ['https://arb1.arbitrum.io/rpc'],
      },
      ...
    ],
  },
  
  // (optional) Blocto app ID
  appId: 'YOUR_BLOCTO_APP_ID',
})

Initiate Blocto SDK before v0.9.0

Before 0.9.0 , you can only initiate with one evm-compatiable chain.

ParameterTypeDescriptionRequired

ethereum.chainId

String (hex) Number

EVM chain ID to connect to

Reference: EVM Networks

Yes

ethereum.rpc

String

JSON RPC endpoint

Yes

appId

String

Blocto dApp ID

No

import BloctoSDK from '@blocto/sdk'

const bloctoSDK = new BloctoSDK({
    ethereum: {
        // (required) chainId to be used
        chainId: '0x1', 
        // (required) JSON RPC endpoint
        rpc: 'https://mainnet.infura.io/v3/YOUR_INFURA_ID',
    },
    
    // (optional) Blocto app ID
    appId: 'YOUR_BLOCTO_APP_ID',
});

Support Chains

NetworkChain ID

Ethereum Mainnet

1

Ethereum Sepolia Testnet

11155111

Arbitrum Mainnet

42161

Arbitrum Sepolia

421614

Optimism Mainnet

10

Optimism Sepolia

11155420

Polygon Mainnet

137

Polygon Amoy Testnet

80002

BSC Mainnet

56

BSC Chapel Testnet

97

Avalanche Mainnet

43114

Avalanche Fuji Testnet

43113

Base Mainnet

8453

Base Sepolia

84532

Zora Mainnet

7777777

Zora Sepolia

999999999

Scroll Mainnet

534352

Scroll Sepolia Testnet

534351

Connect to Blocto wallet

Once the connection request is fired, there would be a prompt modal to guide user to register/login to Blocto wallet

// EIP-1193 way (recommended)
const accounts = bloctoSDK.ethereum.request({ method: 'eth_requestAccounts' })

// Alternative: EIP-1102 way
// CAVEATS! it's deprecated and may be removed from future version
const accounts = await bloctoSDK.ethereum.enable()

After connected with Blocto wallet, you can start to send JSON-RPC request with blocto provider

// sign a message
bloctoSDK.ethereum.request({
  method: 'eth_sign', 
  params: ["0xyourethaddress", "0x48656c6c6f20776f726c64"]
})

Last updated