@bnb-chain/greenfield-js-sdk
TypeScript icon, indicating that this package has built-in type declarations

2.2.0 • Public • Published

Greenfield Chain JS SDK

Install

npm install @bnb-chain/greenfield-js-sdk

Create Client

import {Client} from '@bnb-chain/greenfield-js-sdk'

const client = Client.create(GRPC_URL, GREEN_CHAIN_ID);

Usage

The SDK consists of two parts:

Chain

Tx

1. Tx construction

transfer tx for example:

const transferTx = await client.account.transfer({
  fromAddress: address,
  toAddress: transferInfo.to,
  amount: [
    {
      denom: 'BNB',
      amount: ethers.utils.parseEther(transferInfo.amount).toString(),
    },
  ],
});

2. Simulate Tx

// simulate tx
const simulateInfo = await transferTx.simulate({
  denom: 'BNB',
});

3. Boradcast Tx

// broadcast tx
const broadcastRes = await transferTx.broadcast({
  denom: 'BNB',
  gasLimit: Number(simulateInfo.gasLimit),
  gasPrice: simulateInfo.gasPrice,
  payer: address,
  granter: '',
});

NOTICE: Signature mode for Broadcast

broadcast use window.ethereum as signature provider by default.

If you want to use others, you can set signTypedDataCallback:

// trustwallet:
const broadcastRes = await transferTx.broadcast({
  // ...
  signTypedDataCallback: async (addr: string, message: string) => {
    return await window.trustwallet.request({
      method: 'eth_signTypedData_v4',
      params: [addr, message],
    });
  }
});

If you broadcast in Nodejs, you can broadcast a tx by privateKey:

const broadcastRes = await transferTx.broadcast({
  // ...
  privateKey: '0x.......'
});

Query

// get account info
await client.account.getAccount(address);

Examples:

Storage Provider Client

https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest

SDK support two authentication type:

  • ECDSA: It is usually used on Node.js(Because it need to use a private key)
  • EDDSA: It is usually used in a browser

getBucketReadQuota as example:

// browser:

// generate seed:
const allSps = await getAllSps();
const offchainAuthRes = await client.offchainauth.genOffChainAuthKeyPairAndUpload(
  {
    sps: allSps,
    chainId: GREEN_CHAIN_ID,
    expirationMs: 5 * 24 * 60 * 60 * 1000,
    domain: window.location.origin,
    address: 'your address',
  },
  provider: 'wallet provider',
);

// request sp api
const bucketQuota = await client.bucket.getBucketReadQuota(
  {
    bucketName,
  },
  {
    type: 'EDDSA',
    seed: offchainAuthRes.seedString,
    domain: window.location.origin,
    address: 'your address',
  },
);
// Node.js:
// request sp api
const bucketQuota = await client.bucket.getBucketReadQuota(
  {
    bucketName,
  },
  {
    type: 'ECDSA',
    privateKey: '0x....'
  },
);

Support Custom Http Request

It's actually an HTTP request, we use fetch by default, and if you want to use another http library like axios, we'll construct it for you as well.

// custom upload object
const { PUT_OBJECT: getPutObjectMetaInfo } = client.spClient.getMetaInfo(endpoint, payload);
const {reqMeta, url} = await getPutObjectMetaInfo(endpoint, params);

axios.put(...)

Readme

Keywords

Package Sidebar

Install

npm i @bnb-chain/greenfield-js-sdk

Weekly Downloads

167

Version

2.2.0

License

GPLv3

Unpacked Size

2.16 MB

Total Files

313

Last publish

Collaborators

  • robot-ux