将数据存储在数据库中是任何软件应用程序不可或缺的一部分。无论如何控制该数据库都有一个该数据的主控。区块链技术将数据存储到区块链网络内的区块中。因此,只要某个节点与网络同步,它们就会获得区块中数据的副本。因此,该技术中没有特定的数据主控。
以太坊是一种可以在区块链上执行代码的加密货币。这个功能允许人们编写可以自动运行的“智能合约”。大概一年前,一个叫做DAO的智能合约炸锅了,有人找到方法操纵它去获取当时价值4100万美元的ETH。从而导致了网络的分裂,人们决定分叉区块链,生成一条从未发生DAO攻击的链。我一听说这件事,就寻思“这听上去真是太有趣了”,所以花时间深入了解了其运行机制。
以太坊是第一个实现了虚拟机的区块链,因此为智能合约 - Smart Contract - 的运行提供了良好的支持环境。也正因为这个原因,以太坊被称为区块链 2.0,以区别于比特币代表的以数字加密货币为核心特征的区块链1.0。
如果我们希望构造一个去中心化应用(DApp),除了智能合约的开发, 通常还需要使用其他开发语言为用户提供操作智能合约的用户接口,例如 开发一个网页、一个手机App或者一个桌面应用。这些代码都需要与以太坊 进行交互。
以太坊规定了每个节点需要实现的JSON RPC API 应用开发接口,该接口是传输无关的,应用程序可以通过HTTP、websocket或IPC等多种 通信机制来使用该接口协议操作以太坊节点:
理论上你可以使用任何语言基于JSON RPC接口开发出以太坊之上的 去中心化应用,不过为了提高开发效率,更好的办法是 使用特定语言的JSON RPC封装库,这些库封装了JSON RPC的协议细节, 有助于开发人员聚焦在业务逻辑的实现上。
Python官方提供了一系列的Python包用于支持在Python应用中访问 以太坊,其中最流行的就是
web3.py
—— 对JSON RPC接口的Python 封装包。想要快速掌握Python开发出一个DApp?那就搜索Q315346913加入我们学习交流Python的大家庭吧!
领取专属 10元无门槛券
私享最新 技术干货