RPCh Ethereum-Provider Adapter
Description
The RPCh ethereum provider adaptor is an extension of the ethereum-provider. The goal of this adaptor is to provide a plug-and-play experience for projects that currently use the ethereum provider.
How to Use the RPCh Ethereum Provider Adaptor
You will need to have Node.js and npm/yarn installed on your computer. You can download them from their official website or use a package manager like Homebrew (for Mac) or Chocolatey (for Windows).
Install Necessary Packages
yarn add @rpch/crypto-for-nodejs @rpch/ethereum-provider
Get your rpch client by running
curl --request GET \
--url https://staging.discovery.rpch.tech/api/v1/request/trial
or go to https://access.rpch.net/ and follow the docker guide
Using the Adapter
You can create an instance of this adaptor by passing in the required options and key-value store functions:
import * as RPChCrypto from "@rpch/crypto-for-nodejs";
import { RPChEthereumProvider } from "@rpch/ethereum-provider";
const PROVIDER_URL = 'https://primary.gnosis-chain.rpc.hoprtech.net';
const TIMEOUT = 10000;
const DISCOVERY_PLATFORM_API_ENDPOINT = 'https://staging.discovery.rpch.tech';
const provider = new RPChEthereumProvider(
PROVIDER_URL,
{
crypto: RPChCrypto,
client: "your_client_name",
timeout: TIMEOUT,
discoveryPlatformApiEndpoint: DISCOVERY_PLATFORM_API_ENDPOINT,
},
setKeyValFunction,
getKeyValFunction
);
- PROVIDER_URL: a string representing the URL of the provider we want to connect to.
- HoprSdkOps: an object containing the options for the RPCh SDK instance. It includes:
- crypto: The RPChCrypto module is required for cryptographic operations. Learn more about what module to pass here
- client: A string that identifies the client using the SDK. This is used for statistics and logging.
- timeout: The timeout for requests in milliseconds.
- discoveryPlatformApiEndpoint: The URL for the discovery platform API.
- setKeyVal: a function that sets a key-value pair in storage.
- getKeyVal: a function that retrieves the value corresponding to a key from storage.
The setKeyValFunction and getKeyValFunction functions are used to store and retrieve key-value pairs for the SDK. These are used to store counters for outgoing requests and responses.
// This is an example of a simple way to set these functions
async function setKeyVal(key: string, val: string): Promise<void> {
localStorage.setItem(key, val);
}
async function getKeyVal(key: string): Promise<string | undefined> {
return localStorage.getItem(key);
}
After creating the instance, you can use the provider just like you would use a regular Ethereum provider:
provider.send(
{
method: "eth_accounts",
params: [],
id: 1,
jsonrpc: "2.0"
},
(error, response) => {
if (error) {
console.error(error);
} else {
// do whatever you want with the response
return response
}
}
);
In addition, the adaptor emits the following events:
- connect: Emitted when the provider is connected.
- payload: Emitted when a payload is received from RPCh.
- close: Emitted when the provider is closed.