KVStoreClient
@human-protocol/sdk / kvstore / KVStoreClient
Class: KVStoreClient
Defined in: kvstore.ts:99
Introduction
This client enables performing actions on KVStore contract and obtaining information from both the contracts and subgraph.
Internally, the SDK will use one network or another according to the network ID of the runner
. To use this client, it is recommended to initialize it using the static build
method.
static async build(runner: ContractRunner): Promise<KVStoreClient>;
A Signer
or a Provider
should be passed depending on the use case of this module:
Signer: when the user wants to use this model to send transactions calling the contract functions.
Provider: when the user wants to use this model to get information from the contracts or subgraph.
Installation
npm
npm install @human-protocol/sdk
yarn
yarn install @human-protocol/sdk
Code example
Signer
Using private key (backend)
import { KVStoreClient } from '@human-protocol/sdk';
import { Wallet, providers } from 'ethers';
const rpcUrl = 'YOUR_RPC_URL';
const privateKey = 'YOUR_PRIVATE_KEY';
const provider = new providers.JsonRpcProvider(rpcUrl);
const signer = new Wallet(privateKey, provider);
const kvstoreClient = await KVStoreClient.build(signer);
Using Wagmi (frontend)
import { useSigner, useChainId } from 'wagmi';
import { KVStoreClient } from '@human-protocol/sdk';
const { data: signer } = useSigner();
const kvstoreClient = await KVStoreClient.build(signer);
Provider
import { KVStoreClient } from '@human-protocol/sdk';
import { providers } from 'ethers';
const rpcUrl = 'YOUR_RPC_URL';
const provider = new providers.JsonRpcProvider(rpcUrl);
const kvstoreClient = await KVStoreClient.build(provider);
Extends
Constructors
Constructor
new KVStoreClient(
runner
,networkData
):KVStoreClient
Defined in: kvstore.ts:108
KVStoreClient constructor
Parameters
runner
ContractRunner
The Runner object to interact with the Ethereum network
networkData
The network information required to connect to the KVStore contract
Returns
KVStoreClient
Overrides
Properties
networkData
networkData:
NetworkData
Defined in: base.ts:12
Inherited from
runner
protected
runner:ContractRunner
Defined in: base.ts:11
Inherited from
Methods
set()
set(
key
,value
,txOptions?
):Promise
<void
>
Defined in: kvstore.ts:171
This function sets a key-value pair associated with the address that submits the transaction.
Parameters
key
string
Key of the key-value pair
value
string
Value of the key-value pair
txOptions?
Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Need to have available stake.
import { Wallet, providers } from 'ethers';
import { KVStoreClient } from '@human-protocol/sdk';
const rpcUrl = 'YOUR_RPC_URL';
const privateKey = 'YOUR_PRIVATE_KEY';
const provider = new providers.JsonRpcProvider(rpcUrl);
const signer = new Wallet(privateKey, provider);
const kvstoreClient = await KVStoreClient.build(signer);
await kvstoreClient.set('Role', 'RecordingOracle');
setBulk()
setBulk(
keys
,values
,txOptions?
):Promise
<void
>
Defined in: kvstore.ts:214
This function sets key-value pairs in bulk associated with the address that submits the transaction.
Parameters
keys
string
[]
Array of keys (keys and value must have the same order)
values
string
[]
Array of values
txOptions?
Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Need to have available stake.
import { Wallet, providers } from 'ethers';
import { KVStoreClient } from '@human-protocol/sdk';
const rpcUrl = 'YOUR_RPC_URL';
const privateKey = 'YOUR_PRIVATE_KEY';
const provider = new providers.JsonRpcProvider(rpcUrl);
const signer = new Wallet(privateKey, provider);
const kvstoreClient = await KVStoreClient.build(signer);
const keys = ['role', 'webhook_url'];
const values = ['RecordingOracle', 'http://localhost'];
await kvstoreClient.setBulk(keys, values);
setFileUrlAndHash()
setFileUrlAndHash(
url
,urlKey
,txOptions?
):Promise
<void
>
Defined in: kvstore.ts:257
Sets a URL value for the address that submits the transaction, and its hash.
Parameters
url
string
URL to set
urlKey
string
= 'url'
Configurable URL key. url
by default.
txOptions?
Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
import { Wallet, providers } from 'ethers';
import { KVStoreClient } from '@human-protocol/sdk';
const rpcUrl = 'YOUR_RPC_URL';
const privateKey = 'YOUR_PRIVATE_KEY';
const provider = new providers.JsonRpcProvider(rpcUrl);
const signer = new Wallet(privateKey, provider);
const kvstoreClient = await KVStoreClient.build(signer);
await kvstoreClient.setFileUrlAndHash('example.com');
await kvstoreClient.setFileUrlAndHash('linkedin.com/example', 'linkedin_url');
build()
static
build(runner
):Promise
<KVStoreClient
>
Defined in: kvstore.ts:126
Creates an instance of KVStoreClient from a runner.
Parameters
runner
ContractRunner
The Runner object to interact with the Ethereum network
Returns
Promise
<KVStoreClient
>
An instance of KVStoreClient
Throws
Thrown if the provider does not exist for the provided Signer
Throws
Thrown if the network's chainId is not supported
Last updated