web3.js配置指南

2024-05-17 18:48:33 浏览数 (2)

原文在这里[1]

配置项参数

以下是一个配置参数列表,可以设置用于修改web3.js包中不同函数行为的参数。以下是配置选项的详细列表:

•handleRevert[2]•defaultAccount[3]•defaultBlock[4]•transactionBlockTimeout[5]•transactionConfirmationBlocks[6]•transactionPollingInterval[7]•transactionPollingTimeout[8]•transactionReceiptPollingInterval[9]•transactionSendTimeout[10]•transactionConfirmationPollingInterval[11]•blockHeaderTimeout[12]•maxListenersWarningThreshold[13]•contractDataInputFill[14]•defaultNetworkId[15]•defaultChain[16]•defaultHardfork[17]•defaultCommon[18]•defaultTransactionType[19]•defaultReturnFormat[20]

全局配置

在实例化Web3时,有一个选项可以在全局级别修改上述任何配置参数,它将对所有包都可用。

代码语言:javascript复制
import { Web3 } from 'web3';

const web3 = new Web3({
  provider: 'https://mainnet.infura.io/v3/YOURID',
  config: {
    defaultTransactionType: '0x0',
  },
});

//now default transaction type will be 0x0 so using following function in eth will send type 0x0 transaction

web3.eth
  .sendTransaction({
    from: '0x18532dF2Ab835d4E9D07a8b9B759bf5F8f890f49',
    to: '0xB2f70d8965e754cc07D343a9b5332876D3070155',
    value: 100,
    gasLimit: 21000,
  })
  .then((res) => console.log(res));

对于高级用户:也可以使用Web3Context对象设置全局配置。

代码语言:javascript复制
import { Web3, Web3Context } from 'web3';

const context = new Web3Context('http://127.0.0.1:7545');
context.setConfig({ defaultTransactionType: '0x0' });

const web3 = new Web3(context);

//it will not default to 0x0 type transactions
web3.eth.sendTransaction({
    from: '0x18532dF2Ab835d4E9D07a8b9B759bf5F8f890f49',
    to: '0x018e221145dE7cefAD09BD53F41c11A918Bf1Cb7',
    value: 100,
    gasLimit: 21000
}).then(res => console.log(res));

包级别配置

在Web3实例下的单个包中设置配置

一些影响选定包的配置选项可以使用setConfig(...)函数进行修改。

代码语言:javascript复制
import { Web3 } from 'web3';

const web3 = new Web3('https://mainnet.infura.io/v3/YOURID');

web3.eth.setConfig({ defaultTransactionType: '0x0'});

web3.eth
  .sendTransaction({
    from: '0x18532dF2Ab835d4E9D07a8b9B759bf5F8f890f49',
    to: '0xB2f70d8965e754cc07D343a9b5332876D3070155',
    value: 100,
    gasLimit: 21000,
  })
  .then((res) => console.log(res));

在单独导入的包中设置配置

如果是导入单个包而不是整个web3.js,那么可以通过在构造函数中传递配置或使用setConfig(...)函数来设置配置参数:

例如,如果只使用以下方式安装了web3Eth包:

代码语言:javascript复制
$ npm i web3-eth

可以通过在构造函数中传递来设置配置选项:

代码语言:javascript复制
import { Web3Eth } from 'web3-eth';

const web3EthObj = new Web3Eth({
  provider: 'http://127.0.0.1:7545',
  config: {
    defaultTransactionType: 0x0,
  },
});

web3EthObj
  .sendTransaction({
    from: '0x18532dF2Ab835d4E9D07a8b9B759bf5F8f890f49',
    to: '0x018e221145dE7cefAD09BD53F41c11A918Bf1Cb7',
    value: 100,
    gasLimit: 21000,
  })
  .then((res) => console.log(res));

为单独导入的包设置配置的另一种方式是使用setConfig(...)函数。

代码语言:javascript复制
import { Web3Eth } from 'web3-eth';

const web3EthObj = new Web3Eth('http://127.0.0.1:7545');

web3EthObj.setConfig({ defaultTransactionType: 0x0 });

web3EthObj
  .sendTransaction({
    from: '0x18532dF2Ab835d4E9D07a8b9B759bf5F8f890f49',
    to: '0x018e221145dE7cefAD09BD53F41c11A918Bf1Cb7',
    value: 100,
    gasLimit: 21000,
  })
  .then((res) => console.log(res));

获取当前配置

要获取当前配置参数的列表,可以使用getContextObject().config,如下所示:

代码语言:javascript复制
import { Web3 } from 'web3';

const web3 = new Web3('http://127.0.0.1:7545');

console.log(web3.getContextObject().config)
/* ↳
  handleRevert: false,
  defaultAccount: undefined,
  defaultBlock: 'latest',
  transactionBlockTimeout: 50,
  transactionConfirmationBlocks: 24,
  transactionPollingInterval: 1000,
  transactionPollingTimeout: 750000,
  transactionReceiptPollingInterval: undefined,
  transactionSendTimeout: 750000,
  transactionConfirmationPollingInterval: undefined,
  blockHeaderTimeout: 10,
  maxListenersWarningThreshold: 100,
  contractDataInputFill: 'input',
  defaultNetworkId: undefined,
  defaultChain: 'mainnet',
  defaultHardfork: 'london',
  defaultCommon: undefined,
  defaultTransactionType: '0x2',
  defaultMaxPriorityFeePerGas: '0x9502f900',
 ...
*/

对于单独导入的包,可以使用相同的方法来获取当前的配置参数。

代码语言:javascript复制
import { Web3Eth } from 'web3';

const web3 = new Web3Eth('http://127.0.0.1:7545');

console.log(web3.getContextObject().config)
/* ↳
  handleRevert: false,
  defaultAccount: undefined,
  defaultBlock: 'latest',
  transactionBlockTimeout: 50,
  transactionConfirmationBlocks: 24,
  transactionPollingInterval: 1000,
  transactionPollingTimeout: 750000,
  ...
*/

defaultReturnFormat

defaultReturnFormat允许用户指定某些类型的数据应默认以何种格式返回。这是一个可以在全局级别设置的配置参数,影响整个库中数据的返回方式。

代码语言:javascript复制
import { Web3, FMT_NUMBER, FMT_BYTES } from 'web3';

web3.defaultReturnFormat = {
    number: FMT_NUMBER.BIGINT,
    bytes: FMT_BYTES.HEX,
};

INFO defaultReturnFormat既可以在全局范围内配置,也可以在包级别进行配置:

代码语言:javascript复制
import { Web3Eth, FMT_NUMBER, FMT_BYTES } from 'web3-eth';

const eth = new Web3Eth()
eth.defaultReturnFormat = {
    number: FMT_NUMBER.BIGINT,
    bytes: FMT_BYTES.HEX,
};

所有可用的数值数据选项:

代码语言:javascript复制
export enum FMT_NUMBER {
    NUMBER = 'NUMBER_NUMBER',
    HEX = 'NUMBER_HEX',
    STR = 'NUMBER_STR',
    BIGINT = 'NUMBER_BIGINT',
}

所有可用的字节数据选项:

代码语言:javascript复制
export enum FMT_BYTES {
    HEX = 'BYTES_HEX',
    UINT8ARRAY = 'BYTES_UINT8ARRAY',
}

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)[21]进行许可,使用时请注明出处。 Author: mengbin[22] blog: mengbin[23] Github: mengbin92[24] cnblogs: 恋水无意[25] 腾讯云开发者社区:孟斯特[26]

References

[1] 这里: https://docs.web3js.org/guides/web3_config/ [2] handleRevert: https://docs.web3js.org/api/web3-core/class/Web3Config#handleRevert [3] defaultAccount: https://docs.web3js.org/api/web3-core/class/Web3Config#defaultAccount [4] defaultBlock: https://docs.web3js.org/api/web3-core/class/Web3Config#defaultBlock [5] transactionBlockTimeout: https://docs.web3js.org/api/web3-core/class/Web3Config#transactionBlockTimeout [6] transactionConfirmationBlocks: https://docs.web3js.org/api/web3-core/class/Web3Config#transactionConfirmationBlocks [7] transactionPollingInterval: https://docs.web3js.org/api/web3-core/class/Web3Config#transactionPollingInterval [8] transactionPollingTimeout: https://docs.web3js.org/api/web3-core/class/Web3Config#transactionPollingTimeout [9] transactionReceiptPollingInterval: https://docs.web3js.org/api/web3-core/class/Web3Config#transactionReceiptPollingInterval [10] transactionSendTimeout: https://docs.web3js.org/api/web3-core/class/Web3Config#transactionSendTimeout [11] transactionConfirmationPollingInterval: https://docs.web3js.org/api/web3-core/class/Web3Config#transactionConfirmationPollingInterval [12] blockHeaderTimeout: https://docs.web3js.org/api/web3-core/class/Web3Config#blockHeaderTimeout [13] maxListenersWarningThreshold: https://docs.web3js.org/api/web3-core/class/Web3Config#maxListenersWarningThreshold [14] contractDataInputFill: https://docs.web3js.org/api/web3-core/class/Web3Config#contractDataInputFill [15] defaultNetworkId: https://docs.web3js.org/api/web3-core/class/Web3Config#defaultNetworkId [16] defaultChain: https://docs.web3js.org/api/web3-core/class/Web3Config#defaultChain [17] defaultHardfork: https://docs.web3js.org/api/web3-core/class/Web3Config#defaultHardfork [18] defaultCommon: https://docs.web3js.org/api/web3-core/class/Web3Config#defaultCommon [19] defaultTransactionType: https://docs.web3js.org/api/web3-core/class/Web3Config#defaultTransactionType [20] defaultReturnFormat: https://docs.web3js.org/api/web3-core/class/Web3Config#defaultReturnFormat [21] 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh [22] mengbin: mengbin1992@outlook.com [23] mengbin: https://mengbin.top [24] mengbin92: https://mengbin92.github.io/ [25] 恋水无意: https://www.cnblogs.com/lianshuiwuyi/ [26] 孟斯特: https://cloud.tencent.com/developer/user/6649301

0 人点赞