KVStoreClient

@human-protocol/sdkDocs


@human-protocol/sdk / kvstore / KVStoreClient

Class: KVStoreClient

Introduction

This client enables to perform actions on KVStore contract and obtain 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);

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 in order to send transactions caling the contract functions.

  • Provider: when the user wants to use this model in order 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(signer);

Extends

Constructors

new KVStoreClient()

new KVStoreClient(runner, networkData): KVStoreClient

KVStoreClient constructor

Parameters

runner: ContractRunner

The Runner object to interact with the Ethereum network

networkData: NetworkData

Returns

KVStoreClient

Overrides

BaseEthersClient.constructor

Source

kvstore.ts:104

Properties

contract

private contract: KVStore

Source

kvstore.ts:96


networkData

networkData: NetworkData

Inherited from

BaseEthersClient.networkData

Source

base.ts:12


runner

protected runner: ContractRunner

Inherited from

BaseEthersClient.runner

Source

base.ts:11

Methods

get()

get(address, key): Promise<string>

Gets the value of a key-value pair in the contract.

Parameters

address: string

Address from which to get the key value.

key: string

Key to obtain the value.

Returns

Promise<string>

Value of the key.

Code example

Need to have available stake.

import { providers } from 'ethers';
import { KVStoreClient } from '@human-protocol/sdk';

const rpcUrl = 'YOUR_RPC_URL';

const provider = new providers.JsonRpcProvider(rpcUrl);
const kvstoreClient = await KVStoreClient.build(provider);

const value = await kvstoreClient.get('0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', 'Role');

Source

kvstore.ts:305


getFileUrlAndVerifyHash()

getFileUrlAndVerifyHash(address, urlKey): Promise<string>

Gets the URL value of the given entity, and verify its hash.

Parameters

address: string

Address from which to get the URL value.

urlKey: string= 'url'

Configurable URL key. url by default.

Returns

Promise<string>

URL value for the given address if exists, and the content is valid

Code example

import { providers } from 'ethers';
import { KVStoreClient } from '@human-protocol/sdk';

const rpcUrl = 'YOUR_RPC_URL';

const provider = new providers.JsonRpcProvider(rpcUrl);
const kvstoreClient = await KVStoreClient.build(provider);

const url = await kvstoreClient.getFileUrlAndVerifyHash('0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266');
const linkedinUrl = await kvstoreClient.getFileUrlAndVerifyHash(
   '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
   'linkedin_url'
);

Source

kvstore.ts:344


getPublicKey()

getPublicKey(address): Promise<string>

Gets the public key of the given entity, and verify its hash.

Parameters

address: string

Address from which to get the public key.

Returns

Promise<string>

Public key for the given address if exists, and the content is valid

Code example

import { providers } from 'ethers';
import { KVStoreClient } from '@human-protocol/sdk';

const rpcUrl = 'YOUR_RPC_URL';

const provider = new providers.JsonRpcProvider(rpcUrl);
const kvstoreClient = await KVStoreClient.build(provider);

const publicKey = await kvstoreClient.getPublicKey('0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266');

Source

kvstore.ts:402


set()

set(key, value, txOptions?): Promise<void>

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');

Source

kvstore.ts:167


setBulk()

setBulk(keys, values, txOptions?): Promise<void>

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.set(keys, values);

Source

kvstore.ts:210


setFileUrlAndHash()

setFileUrlAndHash(url, urlKey, txOptions?): Promise<void>

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);

Source

kvstore.ts:253


build()

static build(runner): Promise<KVStoreClient>

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

Source

kvstore.ts:122

Last updated