metamask获取的etherum,使用etherum自带方法实现,etherum参数都是16进制。web3js参数为10进制。
获取gasPrice
metamask:结果返回16进制
async getGasPrice() {
let ret;
await ethereum.request({
"method": "eth_gasPrice"}).then(res => {
ret = res;
}).catch(err => {
errorHandlerOfMetaMaskRequest(err)
});
return ret + "";
}
web3js:结果返回10进制bignumber,Number(num)
默认十进制
async getGasPrice() {
let ret;
await web3.eth.getGasPrice().then(res => {
ret = Number(res);
}).catch(err => {
errorHandlerOfMetaMaskRequest(err)
});
return ret + "";
}
ethersjs:结果返回16进制bignumber,Number(num)
默认十进制
async getGasPrice() {
let ret;
let provider = new ethers.providers.Web3Provider(ethereum);
await provider.getGasPrice().then(res => {
ret = Number(res);
}).catch(err => {
errorHandlerOfMetaMaskRequest(err)
});
return ret + "";
}
获取gasLimit
metamask:结果返回16进制
async estimateGas(param) {
let ret;
const myContract = this.getContract(param.abi, param.address);
await ethereum.request({
"method":"eth_estimateGas",
"params":[{
"form":param.from,
"to":param.address,
"value": toHex(param.amount * Math.pow(<