2019年6月29日,由CSDN、灵钛科技主办,区块链大本营、Unitimes、ETHPLANET、以太坊爱好者社区、火星财经协办的“2019第二届以太坊技术及应用大会”在北京·长城饭店隆重举行。
本次大会围绕以太坊生态全景、以太坊未来发展、以太坊开发实战、优质项目案例等多方面展开,邀请以太坊创始人及核心技术开发者、海内外知名项目负责人、行业领军人物及以太坊生态精英专家齐聚于此,共同助力中国以太坊技术深度交流和社区发展。
作为本届大会的重要嘉宾之一,Go-Ethereum核心开发者Gary Rong在上午的会议中分享了题为《Deep into ethereum light client protocol》的主题演讲。
以下为Gary Rong的演讲实录:
今天我为大家带来的内容是《以太坊的轻节点协议》。第一是轻节点协议基本概念 ,第二是Merkle Trie和Merkle Proof,第三是算法 ,第四是用户用轻节点能做哪些事情,第五是关于流量控制和流量管理模型。
轻节点协议基本概念
以太坊设计的轻节点协议有两个目标,首先,对资源要求足够低,必须能够运行在IoT或者手机这种小型终端设备,其次,它必须有能力验证从网络中收取到证据的正确性。在我们的协议里轻节点设计了垃圾回收机制,始终只需要维护最近的Block headers,存储压力非常小,而且我们只同步Block headers。此外,它不会同步去做状态变更的正确性,否则你必须要在本地维护全量账本,这显然不是轻节点能接受的。
工具有可能在一段时间之内推送一些对应状态是错误的Header,只要能够最终连接到全时并且分享最新的Block header,就能够自动检测出工具,保证它自身的安全性。
综合来看,它是在Block header基础上对其他部分的数据(例如交易或回值),在真正使用到时才会向网络进行请求并且进行验证,它把P2P数据库当成它自己的数据库 。
目前有两类,一类是Les端实现的,第二类是PIP客户端进行实现,我们主要介绍第一类协议。
目前以太坊中的节点根据类别主要分为三类,第一类是Archive node,用来维护全量区块链数据,同时维护每个版本状态数据,它已经超过两个T。第二类节点是Full node,对中间版本或过期进行垃圾回收,有100多个GB。
我们进行了优化,目前最快可以在40分钟之内完成以太坊的同步。最后一个是light client,有垃圾回收机制,可以将本地数据库控制在很小值,大约只有50兆左右。它可以选择从可信的点同步,而不必要每次都从block进行同步,同步最新的几万个header 就可以同步,1分钟之内就可以完成区块链的工作。