如何与以太坊交互

0x01 前言

​ 学习区块链有一段时间了,一直有一个绕不开的点,如何与以太坊的公链进行交互。但是一直没有在网上找到合适的解决方案,大部分的教程都是与本地部署的私链交互,有一些的教程给出的脚本自己实践多次失败。前段时间积极探索实践出来,写一篇教程总结一下。

0x02 前期准备

环境准备,有一些容易安装失败的会介绍教程

Python3 WEB3库

windows

复现一些区块链的题目时,遇到了在window下无法使用Python Web3库的问题,搜索不到合适的解决方案

image-20210622220300703

1
2
python3 -m pip install --upgrade pip
pip install web3//记得换源

会遇到第一个错误

1
Microsoft Visual C++ 14.0 is required.

解决方法

image-20210623114837107

1
pip install cytoolz

继续安装,因为我的错误和不太一样,win10虚拟机复现没有成功

image-20210623120329820

1
2
sha3 pip install pysha3
z3 pip isnatll z3-solver

遇到明明安装了某个库,却无法引用,多试试点带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

截屏2021-07-29 16.32.46

设置全局变量

编辑你的shell的配置文件

1
2
3
vim .zshrc
vim .bashrc
//视个人情况而定

加入以下内容,注意替换,不需要加引号

1
2
export WEB3_INFURA_API_KEY=PROJECT SECRET
export WEB3_INFURA_PROJECT_ID=PROJECT_ID

0x03 连接主网

1
2
3
4
from web3.auto.infura import *
print(w3.isConnected())
➜ python python3 ./7.py
True

如需要切换其他测试网络

image-20210729164947421

0x04 简单验证一下

我的想法是找一个以太坊账户,查询一下余额,如果与区块链浏览器上面的相符,就代表正确,随便找一个账户

image-20210729165248919 400多ETH啊,什么时候我也能拥有,直接财富自由

1
2
3
4
5
print(w3.eth.getBalance('0xe206e3DCa498258f1B7EEc1c640B5AEE7BB88Fd0'))
//➜ python python3 ./7.py
423173643972433865216
//➜ python python3 ./7.py
395736143975672866293

好家伙两次查的还不一样,回来再看一下

截屏2021-07-29 17.03.40

它转走了?我只是查询了一下你的余额,你就感觉到了危险?即使转移资产?

回归正题,395736143975672866293与395.736143975672866293 Ether刚好能对应,所以我们正确的连接上了主网!!!

0x05 总结

成功的一刻感动的不得了。更多功能自己探索吧!