石墨烯核心技术介绍
发布于 6 个月前 作者 stvenyin 1751 次浏览 最后一次编辑是 2 个月前 来自 分享
  • 石墨烯区块链官网
  • 工业性能和可扩展性
  • 当我们支付网络支付时,石墨烯能够达到10万TPS
  • 高性能区块链技术对于加密货币和智能合约平台来说是必不可少的,可为现有金融平台提供可行的替代方案。BitShares从头开始设计,每秒处理更多交易,而不是VISA和MasterCard合并。通过委托股权证明,比特股网络可平均确认交易仅1秒,仅受光速限制。
  • image.png
  • 概观
  • 为了实现这一行业领先的性能,BitShares借鉴了 LMAX Exchange的经验教训LMAX Exchange能够每秒处理600万笔交易。这些课程中有以下几个关键点:
  • 1.记住所有的事
  • 2.将核心业务逻辑保持在单个线程中。
  • 3.保持加密操作(散列和签名)不在核心业务逻辑之内。
  • 4.将验证分为依赖状态和独立于状态的检查。
  • 5.使用面向对象的数据模型。
  • 通过遵循这些简单的规则,BitShares能够每秒处理100,000次事务,而无需投入大量精力进行优化。预计未来的优化将使BitShares的性能达到与LMAX类似的水平。
  • 背景
  • 区块链是一个全球分类帐,可以对交易进行排序,从而每个交易都可以确定性地修改指定时间戳处的共享全局状态。交易处理的顺序可能会改变其他交易的有效性。例如,直到您的工资存入清除后,才能从您的银行帐户提款。在影响特定账户的所有先前交易已经被处理之前,不可能知道交易是否有效。
  • 理论上,两个不相关账户的交易可以同时处理,只要它们不共享任何共同的依赖关系。在实践中,通过具有任意条件的智能合约授权的分类账中确定哪些交易真正相互独立的成本是棘手的。确保两笔交易真正独立的唯一方法是保持完全独立的分类账,然后定期在它们之间转移价值。可以比较设计非均匀内存访问(NUMA)与统一内存访问的性能折衷。
  • 实际上,开发人员可以更轻松地进行统一内存访问,并且成本更低。建设超级计算机或巨型群集时,通常采用NUMA架构作为最后的手段。
  • 计算机行业已经意识到,通过并行处理来扩展性能远不如早期那样容易,当时所有必要的是提高CPU的时钟速度。正是出于这个原因,CPU设计者在尝试采用多线程方法来提高性能之前,将单线程性能推向了极限。当多线程不够时,那么只有在这种情况下,集群计算才算是一种选择。
  • 加密货币行业的许多企业都试图通过立即转向“集群”解决方案来解决可扩展性问题,而没有充分研究单个计算机的单个核心上技术上可行的内容。
  • LMAX干扰器
  • LMAX Disruptor提供了一个高度可伸缩性和高性能架构的案例研究,展示了在单个执行线程内可实现的功能。LMAX是一个零售交易平台,旨在成为世界上最快的交易所。他们非常慷慨地分享他们公开学习的内容。
  • 以下简要介绍其架构:
  • 业务逻辑处理器是处理所有顺序事务和订单匹配的地方。它是一个能够处理数百万次订单的单线程。这种架构很容易移植到加密货币和区块链设计的领域。
  • 输入干扰器的作用是从许多不同来源的用户收集订单并为其分配确定性的订单。分配给订单后,它们被复制,记录并广播给许多冗余的业务逻辑处理器。输入干扰器的任务是令人尴尬并行的,并且很容易被扩展到一组计算机。
  • 业务逻辑处理器处理完输入后,输出干扰程序负责通知关心结果的任何人。这也是一个令人尴尬的并行任务。
  • 最终,LMAX能够通过使用Java虚拟机的商用CPU的单个核心通过业务逻辑处理器每秒处理600万笔交易。如果LMAX每秒可以达到600万笔交易,那么当加密货币和智能合约平台甚至不需要每秒处理10笔交易时,就不需要集群解决方案。
  • 高性能区块链
  • 要实现高性能区块链,BitShares必须采用与LMAX相同的技术。必须满足几个关键的功能:
  • 记住所有的事
  • 避免同步原语(锁,原子操作)。
  • 最大限度地减少业务逻辑处理器中不必要的计算。
  • 记忆日益变得越来越便宜,因为它的设计非常平行。跟踪每个人在互联网上的帐户余额和权限所需的信息量少于1TB的RAM,可购买价格低于15,000美元,并安装在商品(高端)服务器主板上。在30亿人采用该系统之前,这种硬件将会在普通桌面上。
  • 真正的瓶颈不是内存需求,而是带宽需求。在每秒100万笔交易和每笔交易256字节的情况下,网络将需要每秒256兆字节(1千兆位/秒)。这种带宽并不普遍适用于普通桌面; 然而,这种带宽水平仅是互联网2为超过210家美国教育机构,70家公司和45家非营利性和政府机构提供的100 Gbit / s的一小部分。
  • 因此,区块链技术可以轻松地将所有内容保存在RAM中,并且如果设计正确,则可以扩展到每秒处理数百万次事务。
  • 避免哈希,而是分配ID
  • 在单线程系统中,CPU周期是需要保存的稀缺资源。传统的区块链设计使用密码哈希来生成全球唯一的ID,这些ID在统计上保证永不碰撞。这些哈希值的问题是它们需要更多的内存和更多的CPU周期来操作。与直接数组索引相比,使用哈希查找帐户记录需要更多的CPU时间。例如,64位整数比160 +位ID更易于比较和操作。较大的散列ID意味着CPU缓存空间较少,需要更多的内存。在现代操作系统上,不常访问的RAM被压缩,但哈希标识符是不可压缩的随机数据。
  • 幸运的是,区块链给我们提供了一种手段来全局分配唯一的ID,这些ID不会相互冲突,因此可以完全消除使用基于散列的标识符(比特币地址)来引用帐户,余额或权限的需要。
  • 从业务逻辑处理器中删除签名验证
  • 加密货币网络上的所有交易都依赖于加密签名来验证权限。在一般情况下,所需的权限可能因其他事务而改变。这意味着权限需要按照业务逻辑处理器内不需要加密计算的方式进行定义。
  • 为此,每个公钥都需要分配一个唯一且不可变的ID。在分配了ID之后,输入干扰器可以验证提供的签名与指定的ID相匹配。在事务处理到业务逻辑处理器时,剩下的唯一步骤是检查ID。
  • 可以使用这种相同的技术来删除任何具有静态ID的不可变对象的前置条件检查。
  • 用于静态验证的设计事务
  • 许多事务属性可以静态检查,而不需要引用当前的全局状态。
  • 这些检查包括参数的范围检查,输入的重复数据删除,数组的排序顺序等。一般而言,如果事务包含其“假定”有关全局状态的数据,则可以执行许多检查。在执行这些检查之后,业务逻辑处理器所需做的一切就是确保“假设”仍然为真,通常可以归结为检查相对于交易签署时间引用的对象的修改时间戳。
  • 智能合约
  • 许多区块链采用通用脚本语言来定义所有操作。这些设计最终将“业务逻辑处理器”定义为虚拟机,并且所有事务都被定义为由虚拟机运行的脚本。这种方法采用了真实CPU的单线程限制,并通过虚拟CPU强制所有内容来实现这些限制。虚拟CPU,即使是即时编译,总是比实际的CPU慢,但纯粹的计算速度并不是“一切都是脚本”方法的唯一问题。
  • 当事务的定义如此之低时,这意味着大部分静态检查和加密操作都会被吸回到业务逻辑处理中,并且整体吞吐量下降。即使脚本引擎是通过本地调用完成的,也不应要求执行加密签名检查。
  • 根据我们从LMAX学到的经验教训,我们知道区块链的虚拟机应该考虑到单线程性能。这意味着它应该从一开始就针对即时编译进行优化,最常用的智能合约应该由区块链本地支持,只留下很少使用的自定义合约在虚拟机中运行。这些自定义合约应该围绕性能进行设计,这意味着虚拟机应该将可寻址内存限制为适合CPU缓存内容的内容。
  • 面向对象的数据模型
  • 将所有内容都保存在内存中的好处之一是该软件可以设计为模仿真实世界的数据关系。这意味着业务逻辑处理器可以快速地跟踪内存中指向它所需数据的指针,而不是被迫执行昂贵的数据库查询。这也意味着可以在不复制数据的情况下访问数据,并且可以在原地修改数据。与使用基于数据库的方法相比,这种单一优化提供了数量级的性能增益。
  • 交易规模
  • 每秒处理100,000次交易的区块链会生成大量数据。竞争网络(如Ripple和Bitcoin)的平均交易规模大约为250字节。BitShares上的类似事务平均只有100个字节。换句话说,竞争系统需要2.5倍带宽来传播相同数量的事务。假设千兆连接到互联网,仅传输包含100,000个事务的块就需要大约0.1秒。竞争网络需要0.25秒。在考虑了对等网络上的延迟和多跳之后,很明显事务大小会直接影响块间隔,从而影响确认延迟。
  • 事务大小通常表示CPU必须在其关键路径中处理的数据量。因此,它们可以作为CPU单线程性能下降的指示。
  • 如果所有协议都假定所有节点都事先知道所有广播事务并且只需要有序的事务ID列表来广播每个块,则可以在所有协议中进行一些优化。这将是一个实现细节。
  • 结论
  • 设计高性能区块链不是火箭科学,不需要复杂,难以理解的协议,也不需要在网络中的所有节点之间进行分割处理。相反,构建高性能区块链所需的一切就是从核心业务逻辑中移除所有不属于关键的,依赖于顺序的评估的计算,并设计一个促进这些优化的协议。这就是BitShares所做的。
  • 应该指出的是,BitShares所实现的性能高度依赖于兼容的交易协议。在核心业务逻辑运行在执行加密操作的虚拟机中并引用具有散列标识符的所有对象的协议中,不可能达到相同的性能水平。区块链本质上是单线程的,CPU的单个核心的性能是最有限且可扩展性最差的资源。BitShares旨在充分利用此单一执行线程。
[测量性和可伸缩性](https://bitshares.org/blog/2015/06/08/measuring-performance/)

我相信未来已来!

背景 在校黄冈华师一附中(清华,华科方向) 班级前稳2,全县前10. 奥林匹克竞赛一等奖 全国大学生一等奖 导师:微软,华为 70后企业大师 10年华为linux内核嵌入式开发。 11年开始接触区块链,11年底正式区块链开发工作。 12年参与国外ACE开发,IOCP及分布式服务器实现,深圳研究院徐博士指导开发成果。 熟悉分布式服务器,MT4交易系统,人工智能机器人,汇编/反汇编。 16年中科院做过实际的以太坊底层架构改良,献丑 主要c/c++(8年),php(1年),go(1.5年半),python(1年),java(1年)精通linux操作系统,熟悉密码学,p2p内部原理,比特币内部原理,且商业运行。发布论文,务实。 对各种算法,人工智能深度学习算法,神经网络系统剖有研究,网络爬虫搜索引擎。 深圳区块链源中瑞交易所钱包负责人,设计交易所主要架构,人员分配,区块链领域领军人物。 区块链技术组负责人,负责电商与区块链场景结合,落地实现。 纳克链技术负责人,整套技术架构 纳克链 以太狗技术顾问 stvenyin(斯提芬),微信:huiyye。致力于推动以太坊,EOS.IO研究区块链应用落地。

回到顶部