下列代码实现,以typescript为例,使用\@bfchain/pc-sdk,来调用接口的方式
import { BFChainPC_SDK } from "@bfchain/pc-sdk";
export class BFChainPcSdkTest {
private __sdk: BFChainPC_SDK;
constructor() {
this.__sdk = new BFChainPC_SDK();
}
async execute() {
this.__sdk.init({ ip: "192.168.0.1", port: 19003, timeout: 10000 });
let promises: Promise<any>[] = [];
let funcNames: string[] = [];
const pushPromise = (funcName: string, promise: Promise<any>) => {
promises.push(promise);
funcNames.push(funcName);
};
// 基础接口
pushPromise("getLastBlock", this.getLastBlock());
pushPromise("getBlock", this.getBlock());
pushPromise("getTransactions", this.getTransactions());
// 交易类接口
pushPromise("trTransferAsset", this.trTransferAsset());
pushPromise("trVote", this.trVote());
const resp = await Promise.all(promises);
for (let idx = 0; idx < resp.length; idx++) {
const value = resp[idx];
let data = `idx: ${idx} name: ${funcNames[idx]} --- ${JSON.stringify(
value
)}`;
console.log(data);
}
}
async getLastBlock() {
/**
* 获取本地节点当前最新区块
*/
return this.__sdk.getLastBlock();
}
async getBlock() {
/**
* 查询区块高度为11的区块
*/
return this.__sdk.getBlock({
height: 11
});
}
async getTransactions() {
/**
*
查询区块高度为11,事件发起方地址为address1,事件接收方地址为address2的所有事件
*/
return this.__sdk.getTransactions({
height: 11,
senderId: address1,
recipientId: address2
});
}
async trTransferAsset(
request?: BFChainPcSdk.ApiRequest.TRANSACTION.TrTransferAsset
) {
/**
* 私钥为secret2的账户向地址为address3的账户转账50000本 BFT,手续费为50本 BFT
*/
return this.__sdk.trTransferAsset(
request ?? {
secret: secret2,
fee: "50",
amount: "50000",
recipientId: address3,
assetType: "BFT"
}
);
}
async trVote() {
/**
* 私钥为secret1的账户给地址为address2的账户投票,投票权益为10,手续费为50本 BFT
*/
return this.__sdk.trVote({
secret: secret1,
fee: "50",
recipientId: address2,
equity: "10"
});
}
}
(async () => {
const test = new BFChainPcSdkTest();
await test.execute();
})().catch(err => {
console.error(err);
});