原文在这里
配置项参数
以下是一个配置参数列表,可以设置用于修改web3.js包中不同函数行为的参数。以下是配置选项的详细列表:
- handleRevert
- defaultAccount
- defaultBlock
- transactionBlockTimeout
- transactionConfirmationBlocks
- transactionPollingInterval
- transactionPollingTimeout
- transactionReceiptPollingInterval
- transactionSendTimeout
- transactionConfirmationPollingInterval
- blockHeaderTimeout
- maxListenersWarningThreshold
- contractDataInputFill
- defaultNetworkId
- defaultChain
- defaultHardfork
- defaultCommon
- defaultTransactionType
- defaultReturnFormat
全局配置
在实例化Web3时,有一个选项可以在全局级别修改上述任何配置参数,它将对所有包都可用。
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
对象设置全局配置。
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(...)
函数进行修改。
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包:
$ npm i web3-eth
可以通过在构造函数中传递来设置配置选项:
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(...)
函数。
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
,如下所示:
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',
...
*/
对于单独导入的包,可以使用相同的方法来获取当前的配置参数。
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
允许用户指定某些类型的数据应默认以何种格式返回。这是一个可以在全局级别设置的配置参数,影响整个库中数据的返回方式。
import { Web3, FMT_NUMBER, FMT_BYTES } from 'web3';
web3.defaultReturnFormat = {
number: FMT_NUMBER.BIGINT,
bytes: FMT_BYTES.HEX,
};
INFO defaultReturnFormat既可以在全局范围内配置,也可以在包级别进行配置:
import { Web3Eth, FMT_NUMBER, FMT_BYTES } from 'web3-eth'; const eth = new Web3Eth() eth.defaultReturnFormat = { number: FMT_NUMBER.BIGINT, bytes: FMT_BYTES.HEX, };
所有可用的数值数据选项:
export enum FMT_NUMBER {
NUMBER = 'NUMBER_NUMBER',
HEX = 'NUMBER_HEX',
STR = 'NUMBER_STR',
BIGINT = 'NUMBER_BIGINT',
}
所有可用的字节数据选项:
export enum FMT_BYTES {
HEX = 'BYTES_HEX',
UINT8ARRAY = 'BYTES_UINT8ARRAY',
}
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
腾讯云开发者社区:孟斯特