python以太坊开发的主要相关技术

使用 python 开发以太坊,有很多技术知识需要学习,也有很多资源可以推荐,我们来看几个主要的:

Web3.Py

web3.py代码库现在已经比较完善了。整个代码库已经被彻底检测,基本实现JavaScript web3.js库中用户熟悉使用的100%的功能。

这个库支持Python 2.7、3.4和3.5。

我最喜欢的一个部分是TestRPCProvider。它提供程序自动为你提供eth-testrpc服务,以便你可以测试Web3.Py代码像是在EVM内存中。这提供了一种快速测试方法,保证你编写的任何代码在与geth支持的JSON-RPC服务器直接进行交互时也能正常工作。

py-geth 和 py-solc

这两个库都提供了围绕底层可执行文件的Python包。

py-solc提供高级的compile_filescompile_sources函数为了使你可以用python代码编译solidity源程序。它还提供了一个link_code函数来处理库链接。如果你想做更底层的事情,你也可以深入代码,可以找到访问底层solc API的任何接口,你需要通过solc.wrapper.solc_wrappe函数来访问。

同样,py-geth提供了用于从Python代码运行 go-ethereum geth客户端的高级工具。它提供了预先配置好的类LiveGethProcessTestnetGethProcess用他们来运行主网或者测试网,以及用于运行测试的本地私有链DevGethProcess

所有以下这些类都有比较友好的API。

  • GethProcess.accounts:返回帐户地址列表
  • GethProcess.data_dir:返回geth进程的底层数据目录的路径。
  • GethProcess.rpc_enabled/rpc_port/rpc_host:关于JSON-RPC接口的信息。
  • GethProcess.is_rpc_ready:返回JSON-RPC服务器是否已启动并侦听。
  • GethProcess.wait_for_rpc(timeout=0):等待JSON-RPC服务器联机。
  • GethProcess.ipc_*/is_ipc_ready/wait_for_ipc(timeout=0):与相应的RPC方法和属性相同的功能。

py-geth库还提供了一些混合类,可以用来编写所有geth输出到stdout/stderr,或者通过geth.mixins模块将其写入日志记录器。项目说明文件中可用的示例。

这两个都支持Python 2.7、3.4和3.5。

以太坊测试相关的 TestRPC 和测试客户端

这两个库都是pyethereum存储库的ethereum.tester EVM 之上的抽象。

如果想直接通过Python代码与测试EVM进行交互,我建议使用thereum-tester-client库。它实现了绝大多数APIs的可以让我们使用geth的各种接口。

如果需要测试RPC交互,那么我建议使用eth-testrpc,它实现了绝大多数由geth公开的JSON-RPC逻辑接口。在以太坊引擎下它自己是一层,位于ethereum-tester-client库的顶部。

这两个库都支持Python 2.7、3.4和3.5。

Populus

Populus是一个以太坊智能合约开发框架,几乎可以做任何以太坊区块链开发相关的事。

大量的Populus代码库,可以更好地作为独立的Python程序包。py-solcpy-geth库都删除了大量复杂的子过程逻辑。基于Web3.Py开发可以从代码库中减少非常多的工作量,同时使以太坊区块链交互更加健壮和可靠。

如果你的目标是提供一个框架来自动化复杂的部署以及设置一个完整的打包和发布系统的话,Populus是一个很好的选择。

Populus依赖关系:

  • solidity 编译器:智能合约是以solidity语言编写的,然后编译到以太坊虚拟机(EVM)的字节码中。
  • geth:以太坊协议的go语言实现。geth客户端运行在区块链节点,让我们与区块链进行交互,并在开发过程中可以运行并部署到测试链。

此外,Populus需要一些系统依赖性,才能安装PyEthereum库。

Populus支持Python 2.7、3.4和3.5。

  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。