web3与ethers调用对比
web3 与 ethers 对比
合约对象返回
web3
const web3 = new Web3(window.ethereum);
const contractObj = new web3.eth.Contract(constractAbi, ontractAddress);
const contract = await contractObj(tokenJson, contractAddress.IPISTR);
ether
可读权限
import { ethers } from "ethers";
const provider = new ethers.providers.JsonRpcProvider(
contractAddress.baseURL
);
const Contract = new ethers.Contract(
contractAddress.IPISTR,
tokenJson,
provider
)
console.log(Contract, "ether");
可读可写权限
import { ethers } from "ethers";
/**
* @description: 基于ether.js返回的合约对象
* @param {*} tokenJson ABI文件
* @param {*} contractAddress 合约地址
* @return {*}
*/
export async function outContract(tokenJson, contractAddress) {
let ethersProvider = new ethers.providers.Web3Provider(
window.ethereum,
"any"
);
const Contract = new ethers.Contract(
contractAddress,
tokenJson,
ethersProvider.getSigner()
);
return Contract;
}
合约方法调用
查看
左侧 web3,右侧 ether
metamsk 交互
关于 web3 的数字类型返回
ether.js 返回 bignumber 类型
bignumber => ether.js
const { ethers } require("ethers")
var a = "0x03"
var b = ethers.BigNumber.from(a)
var c = b.toNumber()
console.log(c)
关于返回合约对象
export function getContract(address: string, ABI: any, library: Web3Provider, account?: string): Contract {
if (!isAddress(address) || address === AddressZero) {
throw Error(`Invalid 'address' parameter '${address}'.`)
}
return new Contract(address, ABI, getProviderOrSigner(library, account) as any)
}
// account is optional
export function getProviderOrSigner(library: Web3Provider, account?: string): Web3Provider | JsonRpcSigner {
return account ? getSigner(library, account) : library
}
链接跳转功能
export function getEtherscanLink(
chainId: ChainId,
data: string,
type: 'transaction' | 'token' | 'address' | 'block'
): string {
const prefix = `https://${ETHERSCAN_PREFIXES[chainId] || ETHERSCAN_PREFIXES[1]}etherscan.io`
switch (type) {
case 'transaction': {
return `${prefix}/tx/${data}`
}
case 'token': {
return `${prefix}/token/${data}`
}
case 'block': {
return `${prefix}/block/${data}`
}
case 'address':
default: {
return `${prefix}/address/${data}`
}
}
}
参考资料
猜你喜欢
比特币提现会被银行查吗?
比特币提现会被银行查吗? 首先,根据《中华人民共和国反洗钱法》、《金融机构大额交易和可疑交易报告管理办法》、《金融机构报告涉嫌恐怖融资的可疑交易管理办法》等法律法规的相关规定,银行会对大额资金的流动做监控,主要是审查来源是否合法,是否涉嫌洗钱。
2022-05-21
比特币暴跌50%!30岁老公玩比特币输了好多钱
比特币暴跌50%!30岁老公玩比特币输了好多钱 过去的一周里,作为一个游曳在币圈边缘的键盘侠,见识了币圈度日如年的跌宕后,仍可以笑看潮起潮落。
2022-05-21
UST爆雷之后,USDT也要爆雷了?
这几天的行情,证明了良心哥的推测非常准确。 首先是5月10日分析luna背后是被人开了黑枪,并且持续看空luna。 次日消息实锤,luna再次跌了个99%。 昨天分析说,luna的死亡螺旋会带崩大盘。
2022-05-21
Luna币7天蒸发2000亿,但更怕的是熊市即将到来!
心哥昨天虽然不知道这里边的细节,但依然非常确定的告诉大家,这是一场狙击战,找的就是这个空档,打出来的子弹是要人命的。 另外排队枪毙这个场景,估计今天很多人也领教了。
2022-05-21
一天蒸发400亿人民币,Luna是如何被狙击的?
你们也都知道良心哥炒币是个渣渣,但良心哥的判断大体还是准确的。 可能这就是从业时间久了的盘感吧。 有人说luna的暴跌,ust抛锚,都他吗赖孙宇晨。 从5月5号孙宇晨宣布进军算法稳定币之后,大盘就崩了
2022-05-21
上一篇
21个基于ethers的Dapp常用工具函数
下一篇
搞定EVM中的内存数据区
评论