@bnb-chain/greenfield-js-sdk v2.2.0
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: https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest
- Storage Provider: https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest
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(...)
2 months ago
2 months ago
6 months ago
5 months ago
5 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
11 months ago
9 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago