其他
科普 | 如何开发出好用的轻量级客户端,Part-1
大约 5 年前,我们开始构建 Trinity —— 以太坊网络上的新型 “轻量级客户端”。那时候 Geth 刚刚发布了第一版 LES 协议,而我们曾心怀远大的梦想。
远大的梦想往往被现实所击倒。这些年来,我们得到了一些教训:
EVM 计算从根本上来说是 “繁重的”。 LES 如同茫茫沙漠,客户端就是沙漠中渴求数据的旅人。 同步并维护状态的难度过高。 区块链上的历史记录在绝大多数情况下是无用的,却是必不可少的。 核心以太坊协议在本质上对 “轻量级” 不友好。 Python 太慢了。
访问以太坊协议
自己运行客户端。 使用 Infura 等中心化提供商的服务。
自己托管邮件(难) vs. Gmail(易) 购买 DVD 或 CD(难)vs. 盗版(易) 盗版(难)vs. 流媒体(易) 自己运行以太坊节点(难)vs. Infura(易)
能够在资源有限的设备上运行(1 CPU / 1GB RAM / 磁盘占用量 <1GB) 公开标准 “钱包” 应用所需的 API 不需要同步
钱包
追踪区块链的最新区块 查看账户余额和 nonce 读取合约信息(如代币余额) 估算交易的 gas limit 发送交易 监控需要打包的待处理交易
eth_blockNumber
用来追踪链首块eth_getBalance
和eth_getTransactionCount
用来查看账户信息eth_call
用来读取合约信息eth_estimateGas
用来估算 gas limiteth_sendRawTransaction
用来发送交易eth_getTransactionReceipt
表示交易已经被挖出
访问账户和合约存储以支持 eth_call
、eth_estimateGas
、eth_getBalance
和eth_getTransactionCount
访问gossip网络来追踪链首块和 eth_sendRawTransaction
访问链上历史记录来获得 eth_getTransactionReceipt
如今的以太坊网络
解构以太坊协议
(未完)
(文内有许多超链接,可点击左下 ”阅读原文“ 从 EthFans 网站上获取)
原文链接:
https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients/
作者: Piper Merriam
你可能还喜欢: