如何与以太坊交互
0x01 前言
学习区块链有一段时间了,一直有一个绕不开的点,如何与以太坊的公链进行交互。但是一直没有在网上找到合适的解决方案,大部分的教程都是与本地部署的私链交互,有一些的教程给出的脚本自己实践多次失败。前段时间积极探索实践出来,写一篇教程总结一下。
0x02 前期准备
环境准备,有一些容易安装失败的会介绍教程
Python3 WEB3库
windows
复现一些区块链的题目时,遇到了在window下无法使用Python Web3库的问题,搜索不到合适的解决方案
1 | python3 -m pip install --upgrade pip |
会遇到第一个错误
1 | Microsoft Visual C++ 14.0 is required. |
1 | pip install cytoolz |
继续安装,因为我的错误和不太一样,win10虚拟机复现没有成功
1 | sha3 pip install pysha3 |
遇到明明安装了某个库,却无法引用,多试试点带py前缀的库
Macos/Ubantu
1 | pip3 install web3 |
暂时没有遇到问题
IDE
都可以,不论是vscode还是pycharm,或者其他的一些都可以
Infura
Infura提供免费的以太坊节点RPC API服务、IPFS API服务以及整合了多个数字货币交易所数据的加密货币行情信息API服务。
Infura是一个托管的以太坊节点集群,可以将你编写的以太坊智能合约部署到infura提供的节点上,而无需自己搭建以太坊节点。
注册infura,之后新建免费的工程。进入之后在setting页面得到我们需要的
- PROJECT ID
- PROJECT SECRET
设置全局变量
编辑你的shell的配置文件
1 | vim .zshrc |
加入以下内容,注意替换,不需要加引号
1 | export WEB3_INFURA_API_KEY=PROJECT SECRET |
0x03 连接主网
1 | from web3.auto.infura import * |
如需要切换其他测试网络
0x04 简单验证一下
我的想法是找一个以太坊账户,查询一下余额,如果与区块链浏览器上面的相符,就代表正确,随便找一个账户
400多ETH啊,什么时候我也能拥有,直接财富自由
1 | print(w3.eth.getBalance('0xe206e3DCa498258f1B7EEc1c640B5AEE7BB88Fd0')) |
好家伙两次查的还不一样,回来再看一下
它转走了?我只是查询了一下你的余额,你就感觉到了危险?即使转移资产?
回归正题,395736143975672866293与395.736143975672866293 Ether刚好能对应,所以我们正确的连接上了主网!!!
0x05 总结
成功的一刻感动的不得了。更多功能自己探索吧!