科普 | 如何开发出好用的轻量级客户端,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 limit -
eth_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
链得得仅提供相关信息展示,不构成任何投资建议
评论(0)
Oh! no
您是否确认要删除该条评论吗?