Skip to content

Commit

Permalink
[feat] Optimized code return
Browse files Browse the repository at this point in the history
  • Loading branch information
maxufeng committed Nov 21, 2024
1 parent e4179c2 commit 430008d
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 36 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bifproject/hardhat-bif-tool",
"version": "1.1.0",
"version": "1.2.1",
"description": "Hardhat plugin to bif-chain tool",
"main": "dist/index.js",
"files": [
Expand Down
11 changes: 10 additions & 1 deletion src/hardhat-bif/internal/bif-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { BigNumber, BigNumberish } from "../external/bignumber";

export interface BlockNumber {
errorCode: number;
errorDesc: string;
header?: {
blockNumber: string;
};
Expand Down Expand Up @@ -64,6 +65,7 @@ export class EthBlock implements Block {

export interface BifBlock {
errorCode: number;
errorDesc: string;
header?: {
confirmTime?: string;
number?: number;
Expand Down Expand Up @@ -105,6 +107,7 @@ export class EthTransaction implements TransactionResponse {

export interface BifTransaction {
errorCode: number;
errorDesc: string;
result?: {
total_count?: number;
transactions?: [
Expand Down Expand Up @@ -163,6 +166,7 @@ export interface BifTransaction {

export interface BifBlockTransaction {
error_code: number;
error_desc: string;
result?: {
total_count?: number;
transactions?: [
Expand Down Expand Up @@ -220,6 +224,7 @@ export interface contractInfo {

export interface checkContractAddress {
errorCode: number;
errorDesc: string;
result: {
isValid: boolean;
};
Expand Down Expand Up @@ -279,6 +284,8 @@ export interface BifHashResponse {
}

export interface BifTransactionResponse {
errorCode?: number;
errorDesc?: string;
results: BifHashResponse[];
success_count: number;
}
Expand Down Expand Up @@ -307,5 +314,7 @@ export interface BifContractRet {
}

export interface BifContractQueryResponse {
query_rets: BifContractRet[];
errorCode?: number;
errorDesc?: string;
query_rets?: BifContractRet[];
}
6 changes: 6 additions & 0 deletions src/hardhat-bif/internal/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ export class NetworkNotSupport extends HardhatBifError {
}
}

export class NetworkSessionError extends HardhatBifError {
constructor(desc: string) {
super(`Error with chain: ${desc}`);
}
}

export class BifAccountsFormatError extends HardhatBifError {
constructor(pri: string) {
super(`plugine bif accounts privateKey:${pri} format error`);
Expand Down
116 changes: 85 additions & 31 deletions src/hardhat-bif/internal/hardhat-bif-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import {
BifContractQuery,
BifContractQueryResponse,
} from "./bif-types";
import { HardhatBifError } from "./errors";
import { NetworkSessionError } from "./errors";

const log = debug("hardhat:hardhat-bif:provider");

Expand All @@ -60,11 +60,14 @@ export class HardhatBifProvider extends Provider {
})) as BlockNumber;
log("getBlockNumber() : ", JSON.stringify(response));
if (response.errorCode !== 0) {
return -1;
log(
`getBlockNumber errorCode: ${response.errorCode}, desc:${response.errorDesc}`,
);
throw new Error(`${response.errorDesc}`);
}
return Number(response.header?.blockNumber ?? "0");
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to get block number from Hardhat provider: ${(error as Error).message}`,
);
}
Expand Down Expand Up @@ -94,11 +97,14 @@ export class HardhatBifProvider extends Provider {
})) as AccountBalance;
log("getBalance(address) : ", JSON.stringify(response));
if (response.errorCode !== 0) {
return BigNumber.from(-1);
log(
`getBalance errorCode: ${response.errorCode}, desc:${response.errorDesc}`,
);
throw new Error(`${response.errorDesc}`);
}
return BigNumber.from(response.result?.balance ?? "0");
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to getBalance ${addressOrName} from Hardhat provider: ${(error as Error).message}`,
);
}
Expand All @@ -119,11 +125,14 @@ export class HardhatBifProvider extends Provider {
})) as AccountNonce;
log("getTransactionCount(address) : ", JSON.stringify(response));
if (response.errorCode !== 0) {
return -1;
log(
`getTransactionCount errorCode: ${response.errorCode}, desc:${response.errorDesc}`,
);
throw new Error(`${response.errorDesc}`);
}
return Number(response.result?.nonce ?? "0");
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to getTransactionCount ${addressOrName} from Hardhat provider: ${(error as Error).message}`,
);
}
Expand All @@ -144,11 +153,14 @@ export class HardhatBifProvider extends Provider {
})) as AccountPayload;
log("getCode(address) : ", JSON.stringify(response));
if (response.errorCode !== 0) {
return "";
log(
`getCode errorCode: ${response.errorCode}, desc:${response.errorDesc}`,
);
throw new Error(`${response.errorDesc}`);
}
return response.result?.contract?.payload ?? "";
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to getCode ${addressOrName} from Hardhat provider: ${(error as Error).message}`,
);
}
Expand Down Expand Up @@ -178,6 +190,13 @@ export class HardhatBifProvider extends Provider {

log("sendTransaction(hash) : ", JSON.stringify(response));

if ((response?.errorCode ?? 0) !== 0) {
log(
`sendTransaction errorCode: ${response?.errorCode}, desc:${response?.errorDesc}`,
);
throw new Error(`${response?.errorDesc}`);
}

if (response?.success_count !== 1) {
return tmpTransaction;
}
Expand Down Expand Up @@ -223,7 +242,7 @@ export class HardhatBifProvider extends Provider {
};
return tmpTransaction;
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to sendTransaction from Hardhat provider: ${(error as Error).message}`,
);
}
Expand All @@ -244,13 +263,21 @@ export class HardhatBifProvider extends Provider {
params: [tmpTransaction],
})) as BifContractQueryResponse;
log("call(transaction) : ", JSON.stringify(response));

if ((response?.errorCode??0) != 0) {
log(
`call errorCode: ${response?.errorCode??""}, desc:${response?.errorDesc??""}`,
);
throw new Error(`${response.errorDesc??""}`);
}

if (response?.query_rets[0]?.result?.code !== 0) {
return "";
}

return "0x" + response?.query_rets[0]?.result?.evmcode;
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to call from Hardhat provider: ${(error as Error).message}`,
);
}
Expand Down Expand Up @@ -301,9 +328,6 @@ export class HardhatBifProvider extends Provider {
let res = new EthBlock();
if (blockHashOrBlockTag === "latest") {
blockHashOrBlockTag = (await this.getBlockNumber()).toString();
if (blockHashOrBlockTag === "-1") {
return res;
}
}
const responseBig = (await this._hardhatProvider.request({
method: "block.getBlockInfo",
Expand All @@ -314,26 +338,32 @@ export class HardhatBifProvider extends Provider {
},
],
})) as BifBlock;
log("getBlock() : ", JSON.stringify(responseBig));
log("getBlock(first) :", JSON.stringify(responseBig));
if (responseBig.errorCode !== 0) {
return res;
log(
`getBlock errorCode: ${responseBig.errorCode}, desc:${responseBig.errorDesc}`,
);
throw new Error(`${responseBig.errorDesc}`);
}

if (responseBig?.header?.number === 1) {
if (blockHashOrBlockTag === "1") {
res.parentHash = "";
} else {
const responseSmall = (await this._hardhatProvider.request({
method: "block.getBlockInfo",
params: [
{
blockNumber: (responseBig?.header?.number ?? 1 - 1).toString(),
blockNumber: ((responseBig?.header?.number ?? 1) - 1).toString(),
withLeader: false,
},
],
})) as BifBlock;

log("getBlock(second) :", JSON.stringify(responseBig));
if (responseSmall.errorCode !== 0) {
return res;
log(
`getBlock errorCode: ${responseSmall.errorCode}, desc:${responseSmall.errorDesc}`,
);
throw new Error(`${responseSmall.errorDesc}`);
}
res.parentHash = responseSmall?.header?.hash ?? "";
}
Expand All @@ -355,7 +385,10 @@ export class HardhatBifProvider extends Provider {
})) as BifBlockTransaction;
log("block.getTransactions ", JSON.stringify(responseTrans));
if (responseTrans.error_code !== 0) {
return res;
log(
`getBlock errorCode: ${responseTrans.error_code}, desc:${responseTrans.error_desc}`,
);
throw new Error(`${responseTrans.error_desc}`);
}
const totalCount = responseTrans.result?.total_count ?? 0;
for (let i = 0; i < totalCount; i++) {
Expand All @@ -366,7 +399,7 @@ export class HardhatBifProvider extends Provider {
}
return res;
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to getBlock ${blockHashOrBlockTag} from Hardhat provider: ${(error as Error).message}`,
);
}
Expand Down Expand Up @@ -395,7 +428,7 @@ export class HardhatBifProvider extends Provider {

return blockWithTransactions;
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to getBlockWithTransactions ${blockHashOrBlockTag} from Hardhat provider: ${(error as Error).message}`,
);
}
Expand All @@ -415,7 +448,10 @@ export class HardhatBifProvider extends Provider {
log("getTransaction(hash) : ", JSON.stringify(response));
let tmpTransaction = new EthTransaction();
if (response.errorCode !== 0) {
return tmpTransaction;
log(
`getTransaction errorCode: ${response.errorCode}, desc:${response.errorDesc}`,
);
throw new Error(`${response.errorDesc}`);
}

if (
Expand Down Expand Up @@ -483,9 +519,12 @@ export class HardhatBifProvider extends Provider {
},
],
})) as BifBlock;

log("getTransaction(hash) : ", JSON.stringify(responseBlock));
if (responseBlock.errorCode !== 0) {
return tmpTransaction;
log(
`getTransaction errorCode: ${responseBlock.errorCode}, desc:${responseBlock.errorDesc}`,
);
throw new Error(`${responseBlock.errorDesc}`);
}

tmpTransaction.blockHash = responseBlock?.header?.hash ?? "";
Expand All @@ -496,7 +535,7 @@ export class HardhatBifProvider extends Provider {

return tmpTransaction;
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to getTransaction ${transactionHash} from Hardhat provider: ${(error as Error).message}`,
);
}
Expand All @@ -518,6 +557,13 @@ export class HardhatBifProvider extends Provider {
return null;
}

if (response.errorCode !== 0) {
log(
`getTransactionReceipt errorCode: ${response.errorCode}, desc:${response.errorDesc}`,
);
throw new Error(`${response.errorDesc}`);
}

let tmpTransaction = new EthTransactionReceipt();
tmpTransaction.transactionHash =
response?.result?.transactions[0]?.hash ?? "";
Expand Down Expand Up @@ -550,7 +596,10 @@ export class HardhatBifProvider extends Provider {
})) as checkContractAddress;

if (responsecheckContractAddress.errorCode !== 0) {
return tmpTransaction;
log(
`getTransactionReceipt errorCode: ${responsecheckContractAddress.errorCode}, desc:${responsecheckContractAddress.errorDesc}`,
);
throw new Error(`${responsecheckContractAddress.errorDesc}`);
}
tmpTransaction.contractAddress = tmpTransaction.to;
} else {
Expand Down Expand Up @@ -585,8 +634,12 @@ export class HardhatBifProvider extends Provider {
},
],
})) as BifBlock;
log("getTransactionReceipt(hash) : ", JSON.stringify(responseBlock));
if (responseBlock.errorCode !== 0) {
return tmpTransaction;
log(
`getTransactionReceipt errorCode: ${responseBlock.errorCode}, desc:${responseBlock.errorDesc}`,
);
throw new Error(`${responseBlock.errorDesc}`);
}
tmpTransaction.blockHash = responseBlock?.header?.hash ?? "";
tmpTransaction.root = "";
Expand Down Expand Up @@ -622,7 +675,8 @@ export class HardhatBifProvider extends Provider {
"getTransactionReceipt(hash) error-hash : ",
response?.result?.transactions[0]?.contract_tx_hashes[i],
);
continue;
throw new Error(`getTransactionReceipt(hash) error-hash : ",
${response?.result?.transactions[0]?.contract_tx_hashes[i]}`);
}

if (
Expand Down Expand Up @@ -671,7 +725,7 @@ export class HardhatBifProvider extends Provider {

return tmpTransaction;
} catch (error) {
throw new Error(
throw new NetworkSessionError(
`Failed to getTransactionReceipt ${transactionHash} from Hardhat provider: ${(error as Error).message}`,
);
}
Expand Down
Loading

0 comments on commit 430008d

Please sign in to comment.