Polygon 也就是俗称的马蹄莲,作为测链来说,它的EVM和ETH的并不是完全一样,有些函数在polygon上是没有的。
brownie 是一个用python开发协议的工具库,用起来很好用。主要有以下几点:
- 有console功能,可以在console里进行交互,而不像js那样依赖网页
- 安装简单,依赖也简单,设置一次后以后就不需要设置了。
- 部署合约方便。写完合约后,编译一下,直接调用deploy方法就可以直接部署到目标网络上。而不需要设置abi什么的
不过有时间还是要学习下js的方法,这对于理解交易、合约的调用等很有帮助。
回归正题,在链接polygon的时候,需要做下配置。目前有两种方式,一种是使用infura的key,另一种是改config里的host.
使用infura
在命令行下输入
>>> WEB3_INFURA_PROJECT_ID=xxxx(替换你的infura的key) >>> brownie console --network ploygon-main >>> network.is_connected()查看网络是否已经链接上,如果返回True就是链接上了。不过我这里设置一直没成功,不知道为什么。
修改config
mac 下配置文件在
~/.brownie/network-config.yaml修改里面的name: Mainnet (Infura)这一项,将host改成你从别的地方申请的rpc地址。
申请rpc地址:maticvigil.com
替换后的host配置
host: https://rpc-mainnet.maticvigil.com/v1/(key 替换成你申请的key)然后保存,再次进入就可以了。
注意
毕竟不是100%的EVM,有一些函数马蹄上没有,例如探索合约的函数:
Contract.from_explorer(address)所以在马蹄上就不要使用这个函数了,可以从abi获取合约