当前位置: 首页 > article >正文

替代区块链

        随着比特币的成功,人们逐渐意识到区块链技术的潜力,并随之出现了迅速的发展,各种区块链协议、应用程序和平台相应产生。

        需要指出的是,在这种多元的局面下,很多项目迅速失去了它们的吸引力。事实上,有不少项目只是打着创新的幌子,在玩 ”击鼓传花“ 的古老把戏或者干脆就是 “骗局”。根据 Dead Coins 网站的统计,超过 70% 数字货币都已经没有什么成交量或市值彻底归零,大量区块链项目都已经死亡或者名存实亡。当然,也有一些项目已经成功地在自己的领域创造了稳固的地位。

1. Kadena

        Kadena 是一个私有区块链,它已成功地解决了区块链系统中的可伸缩性和隐私问题。Kadena 还引入了一种新的图灵不完备语言,称为 Pact,可以开发智能合约。Kadena 的一项关键创建是其可伸缩 BFT 共识算法,它有潜力扩展到数千个节点而不会降低性能。

1.1 可伸缩性和机密性

        可伸缩 BFT 算法基于原始的 Raft 算法,是 Tangaroa 和 Juno 的后继产品。Tangaroa 因具有容错功能的 Raft (BFT Raft) 的实现而得名,其开发目的是解决由于 Raft 算法中拜占庭节点的行为而引起的可用性和安全性问题,Juno 是 Tangaroa 的分支,由 JPMorgan 开发。

        这两个算法都有一个基本的局限性--它们无法在保持高水平、高性能的同时进行扩展。因此,Juno 无法获得太大的吸引力。私有区块链具有随着节点数量增加而保持高性能的更理想的属性,但是上述算法缺乏此功能。 Kadena 则通过专有的可伸缩 BFT 算法解决了这一问题,它可以扩展到数千个节点,而不会降低性能。

        此外,Kadena 还解决了机密性问题,它使在区块链上保持交易的隐私性成为可能。通过结合使用密钥轮换(Key Rotation)、对称链上加密(Symmetric On-Chain Encryption)、增量哈希(Incremental Hashing) 和 Double Ratcher 协议即可实现此安全服务。

        密钥轮换可用作确何私有区块链安全的标准机制。最好的做法是,通过定期更改加密钥来阻止试图破坏密钥的任何攻击。Pact 智能合约语言可对密钥轮换提供本地支持。

        对称链上加密允许对区块链上的交易数据进行加密。特定私人交易的参与者可以自动解密这些交易。

        Double Ratcher 协议可用于提供密钥管理和加密功能。

1.2 Kadena 的共识机制

        可伸缩 BFT 共识协议可确保在智能合约执行之前已实现足够的复制和共识。通过循环以下过程即可达成共识。

        交易在网络中发起和流动的方式如下:

        (1) 新交易由用户签名并在区块链网络上广播,由领导者节点接管,并将其添加到其不可变日志中。

        在这个阶段,还将为日志计算增量哈希。增量哈希是一种哈希函数,它允许在这样场景中计算哈希消息:如果已被哈希的先前的原始消息略有更改,则根据已经存在的哈希计算新的哈希消息。与传统的哈希函数相比,该方案更快,资源占用更少。在传统的哈希函数中,即使原始消息仅发生了很小的变化,也需要生成一个新的哈希消息。

(2)领导者(Leader) 节点将交易写入日志后,它将签署复制和增量哈希,并将其广播到其他节点。

(3)其他节点在收到交易后,验证领导者节点的签名,将交易添加到自己的日志中,并向其他节点广播自己计算出的增量哈希(法定证明)。最后,在从其他节点收到足够数量的证明后,交易将永久被提交到帐本。

        下图显示了此过程的简化版本,其中领导者节点将记录新交易,然后将它们复制到跟随者(Follower)节点。

 

1.3 Pact 语言

        一旦达成共识,就可以开始执行智能合约并采取许多步骤,如下所示:

(1)验证消息的签名

(2)Pact 智能合约层接管。

(3)Pact 代码已编译

(4)交易初始化并执行智能合约中嵌入的任何业务逻辑。如果发生任何故障,将立即回滚,将状态恢复到执行开始之前的状态。

(5)交易完成并更新相关日志。

注意:

         Pact 已由 Kadena 开源,其下载地址如下:

        https://kadena.io/pact/downloads.html

        可以下载提供 Pact 语言的 REPL 的独立二进制文件。下图显示了一个示例,通过在 Linux 控制台中发出 ./pact 命令来运行 Pact。

        用 Pact 语言编写的智能合约通常由 3 个部分组成:键集、模块和表。对这些组成部分的描述如下:

  • 键集(Keyset):本部分定义了表和模块的相关授权方案。
  • 模块(Module):本部分以函数和 Pact 的形式定义了包含业务逻辑的智能合约代码。模块内的 Pact 由多个步骤组成,并按顺序执行。
  • 表(Table): 本部分是模块内定义的访问控制的构造。只有在管理员键集中定义的管理员才能直接访问此表。默认情况下,模块中的代码被授予对表的完全访问权限。

        Pact 允许若干种执行模式。这些模式包括合约定义、交易执行和查询。对这些执行模式的描述如下:

  • 合约定义(Contract Definition):此模式允许通过单个交易消息在区块链上创建合约。
  • 交易执行(Transaction Execution): 此模式需要执行代表业务逻辑的智能合约代码模块。
  • 查询(Querying): 此模式仅涉及探测数据合约,并且由于性能原因在节点上以本地方式执行。Pact 使用类似于 LISP 的语法,并在代码中准确地表示将在区块链上执行的内容,因为它人类可读的格式存储在区块链上。这与以太坊的 EVM 相反,后者被编译为字节码以供执行,这使得区块链上正在执行的代码很难验证。Pact 是图灵不完备的,支持不可变变量,并且不允许空值,从而提高了交易代码执行的整体安全性。

        以下示例显示了一个简单的加法模块,该模块定义了一个名为 addition 的函数,该函数带有 3 个参数。执行代码后,它将 3 个值相加并显示结果,如下图所示:

         运行代码时,它将产生如图所示的输出:

        可以看到,代码执行输出的结果与代码的布局和结构完全匹配,这可以提高透明度并限制恶意代码执行的可能性。 

 

1.4 Kadena 区块链

        Kadena 是一类新型的区块链,它引入了普遍确定性(Pervasive Determinism) 的新概念,除了标准的基于公钥/私钥 的数据源安全性之外,还提供了完全确定性共识,它可在区块链的所有层(包括交易和共识层) 提供加密安全性。

注意:

        通过以下网址可以找到 Pact 相关说明文档和源代码:

        https://github.com/kadena-io/pact

        Kadena 在 2018 年 1 月推出了公共区块链,这是构建具有高吞吐量的区块链的又一次飞跃。该提案中的新颖思想是构建 PoW 并行链架构。其具体工作原理是:将对等节点上单独挖矿的链合并到单个网络中,这样可以产生巨大的吞吐量,使得每秒能够处理的交易数超过 10000 笔。

2. Ripple

        Ripple (瑞波)网络于 2012 年推出,是一种货币兑换和实时总结算系统。例如,甲方可以利用 Ripple 以美元支付,而乙方则可以通过 Ripple 直接收取欧元。在 Ripple 网络中,付款无须任何等待即可进行结算,这与传统的结算网络不同,在传统的结算网络中,结算(特别是跨国汇兑)可能需要几天的时间。

        Ripple 网络具有一种称为瑞波币(XRP) 的基础货币,它还支持非 XRP 付款。该系统被认为类似于所谓的哈瓦拉(Hawala) 的旧传统汇款机制。哈瓦拉是在阿拉伯世界普遍存在的一种非正式的金融系统,境外阿拉伯人通常习惯于通过这种地下交易网络向国内汇款。其具体交易过程是,境外汇款人将钱款和密码交给当地银行家(代理),该银行家通过信件将汇款的详情告知国内的联系人(代理),再由该联系人负责将所汇款项送至目的地,而国内的收款人则凭借密码接收汇款。这种交易方式几乎不留任何可查记录。由此可见,哈瓦拉系统开放、便捷、不需帐单凭证或文字记录,顾客也可以是匿名的。但是它的缺点也非常明显:它必须是完全可信的网络。

        Ripple 系统的工作原理与此类似,只不过代理换成了 Ripple 中的网关。当然,这只是一个非常简单的类比,实际协议相当复杂,但原则上是相同的。

2.1 节点

        Ripple 网络由各种节点组成,这些节点可以根据其类型执行不同的功能:

  • 用户节点:这些节点用于支付交易,可以付款也可以收款。
  • 验证者(Validator) 节点。这些节点参与共识机制。每个服务器都将维护一组唯一的节点,在达成共识的同时需要对其进行查询。参与共识机制的服务器将仅信任唯一节点列表(Unique Node List, UNL)中的节点,并且仅接受来自唯一节点列表中节点的投票。

        由于网络运营商和监管机构的参与,Ripple 有时不被视为真正的去中心化网络。但是,由于任何人都可以通过运行验证者节点而成为网络的一部分,因此可以认为它是去中心化的。此外,共识程序也去中心化了,因为提议对帐本进行的任何更改都必须遵循超级多数投票的方案来决定。当然,这是各派研究人员和爱好者中的热门话题,每一派都存在反对和赞成的观点。

2.2 共识

        Ripple 维护所有交易的全局分布式帐本,这些帐本由一种称为 Ripple 协议共识算法(Ripple Protocol Consensus Algorithm,RPCA) 的新型低延迟共识算法控制。其共识过程通过以下方式达到共识:

        要对包含交易的公开帐本的状态达成一致,需要以迭代方式从验证服务器寻求验证和接受,直到获得足够的票数为止。一旦收到足够的票数(绝大多数票,最初是 50%,随着每次迭代的逐渐增加,至少增加到 80%),更改将被确认并关闭帐长。此时,将向整个网络发送警报,指示帐本已关闭。

        简而言之,该共识协议是一个三阶段过程:

  • 收集阶段:在此阶段,验证节点将收集帐户
  • 共识阶段:在收集阶段之后,共识过程开始,在完成之后将关闭帐本。
  • 帐本关闭阶段:此过程每隔几秒钟异步运行一次,结果就是,帐本将相应地打开和关闭(更新)。下图显示了该过程的 3 个阶段。

 

 


http://www.kler.cn/a/303961.html

相关文章:

  • 在Java中使用ModelMapper简化Shapefile属性转JavaBean实战
  • JQuery封装的ajax
  • 文献解读-DNAscope: High accuracy small variant calling using machine learning
  • FreeRTOS学习13——任务相关API函数
  • 使用kalibr_calibration标定相机(realsense)和imu(h7min)
  • Java 堆内存管理详解:`-Xms` 和 `-Xmx` 参数的使用与默认内存设置
  • AI绘画:科技赋能艺术的崭新时代
  • vscode中使用go环境配置细节
  • Leetcode面试经典150题-162.寻找峰值
  • 《Docker:轻量级虚拟化解决方案》
  • Spring MVC 处理请求
  • 低代码-赋能新能源汽车产业加速前行
  • Anolis 8 NVME over TCP 配置使用
  • Qt-常用控件(3)-输入类
  • 【C++】深究C++三大特性之多态
  • 香港电讯SASE解决方案:终端与云端的安全护航
  • C语言 13 指针
  • 【Unity新闻】Unity将取消Runtime费用
  • Where I can save my openai-apikey safely for my flutter app
  • 【docker】docker 关键技术 —— 镜像制作
  • 宝塔部署Vue项目解决跨域问题
  • 【机器学习】自然语言处理中的Transformer模型:深度解析与前沿发展
  • 从GreaterWMS学习仓库管理系统
  • 在Word中,用VBA比较两段文本的相似度
  • AI创作新手册:精通Prompt提示词的提问策略
  • 基于鸿蒙API10的RTSP播放器(一:基本界面的实现)