从Python角度了解以太坊

区块链基础

以太坊(Ethereum)的底层是区块链技术,而区块链简单而言就是由Hash值串联起来的链表结构,链表中的节点会记录交易信息,如果将节点中的信息以JSON格式描述,看起来是这个样子:

{
   "number": 1234567,
   "hash": "0xabc123...",
   "parentHash": "0xdef456...",
   "miner": "0xa1b2c3...",
   ...,
   "transactions": [...]
}
  • hash:当前节点的Hash值

  • parentHash:前一个节点的Hash值

  • miner:矿工地址

  • transactions:当前节点包含的交易数据

8644fde65ec2ba53941ef3bacd1a79c0.png

矿工接收交易数据后,会将其封装到一个区块里,并将区块信息广播到以太坊网络中,这里会有很多细节,建议找本书看看,这里想强调的是,想让矿工干活,需要花钱,在以太坊上,其货币称为「ether」。

使用Web3.py

Web3.py是一个用于与以太坊网络交互的Python库,它封装了很多操作,便于我们进行交易、与智能合约交互、读取区块中的数据等等。

Web3.py官方文档:https://web3py.readthedocs.io/en/stable/index.html

通过一张图,可以很清晰的知道我们开发的应用、Web3.py以及是以太坊网络的关系。

99044afa7b9c6f03b92225b7b5fe943c.png

从上图可知,Web3.py其实就是中间层,它可以通过HTTP、IPC(进程间通信)、WebSocket的方法连接到以太坊节点,从而实现与整个以太坊网络的交互。

使用前,我们需要安装Web3.py:

pip install web3
pip install 'web3[tester]'

安装web3[tester]的目的时,使用Web3.py提供的模拟节点进行测试,如果我们要同步真正的节点需要做:

  • 1.下载Geth构建以太坊节点。

  • 2.启动Geth并等待它同步以太坊网络中的数据,Geth默认会启动HTTP服务,端口为8545.

  • 3.使用Web3.py通过HTTP连接到刚刚构建好的节点。

  • 4.使用Web3.py提供的API与节点进行交互

Geth是使用Go实现Ethereum协议的程序,与之类似的还是使用C++或Python实现的,只是Geth势头第一。

同步过程需要拉取数据,可能需要几个小时。

这里只是演示,所以直接使用模拟节点就好了,如下图:

de04fd32de5867fa5a70e31410f5f5cd.png

上图中,Web3.py提供了4种接入以太坊节点的方式,其中第4种便是通过TesterProvider接入模拟的以太坊节点,要使用这个功能,你需要安装web3[tester]。

安装好web3后,先通过TesterProvider方法连接到模拟节点中。

In [1]: from web3 import Web3

# 使用EthereumTesterProvider,连接模拟节点
In [2]: w3 = Web3(Web3.EthereumTesterProvider())

# 判断连接是否正常
In [3]: w3.isConnected()
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒编程-二两

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值