替代区块链

news2024/11/26 2:57:40

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

        需要指出的是,在这种多元的局面下,很多项目迅速失去了它们的吸引力。事实上,有不少项目只是打着创新的幌子,在玩 ”击鼓传花“ 的古老把戏或者干脆就是 “骗局”。根据 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.coloradmin.cn/o/2118791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深圳MES系统在制造业的应用与发展

深圳MES在制造业的应用与发展呈现以下几个特点: 应用范围广泛:深圳制造业涵盖了电子、通信、汽车、机械等多个领域,MES系统在这些领域的应用非常广泛。不同行业的企业可以根据自身的需求和特点,定制化地应用MES系统来实现生产管理…

测试即服务(TaaS):概念、优势及应用场景!

引言 随着数字化转型的深入发展,软件质量和用户体验变得愈发重要。传统的软件测试方法已经难以满足现代企业对于快速迭代和高质量交付的需求。在此背景下,“测试即服务”(Testing as a Service, TaaS) 模式应运而生,为软件测试带来了新的解决…

基于SpringBoot+Vue+MySQL的足球俱乐部管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统足球俱乐部管理…

Gtest(Google Test)使用

下面Gtest是在arm-linux下运行的 https://download.csdn.net/download/qq_31868891/89729426 一、下载编译 1.下载gtest代码 https://github.com/google/googletest 2.配置编译 vscode安装CMake Tools 将上面下载的gtest代码文件夹拖到vscode里,然后选择对应的…

SAP 凭证的替代传输GGB1

SAP 凭证的替代传输GGB1 之前没有留意过,前人一直是直接改的,搜索了一下是可以这样弄得 1.一般通过OBBH,配置的凭证替代,产生的请求号,从开发机传输不到生产机。只能通过GGB1来传输。在GGB1里面选择要传输的替代 选中…

BookStack在线文档管理系统本地Docker部署与远程访问详细教程

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

LEAN类型系统属性之规范性(Regularity)注解

在 《小结》 中,列出LEAN类型系统所定义的全部规律,下面 关于 LEAN 属性 的一些推论(Lemma)进行注解。主要是其规范性(Regularity),以说明LEAN类型系统是完备构建的(well founded&am…

Java+selenium+chrome+linux/windows实现数据获取

背景:在进行业务数据获取或者自动化测试时,通常会使用模拟chrome方式启动页面,然后获取页面的数据。在本地可以使用windows的chromedriver.exe进行打开chrome页面、点击等操作。在linux 下通常使用无界面无弹窗的方式进行操作。接下来是实现方…

【AI绘画】Midjourney之Lighting详解

博客主页: [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 💯前言💯为什么要学习光影控制光影控制的作用 💯强化主题hard lighting(硬光 )soft lighting(软光/柔光)测试 &…

宠物浮毛怎么办,用专业工具——希喂、小米、美的宠物空气净化器

前段时间被医生科普,原来猫咪的毛发也分好几种的,我不是最后一个知道的吧...事情的起因是这样的,上次我去朋友家和她的猫咪玩,实在太可爱了所以自己也养了一只猫。一人一猫的幸福生活没过多久,我就发现自己的鼻炎好像复…

如何用AI先行者2.0轻松画出美图?我的亲身体验分享给你看!

越来越多的AI绘画工具开始出现在市场上。AI先行者2.0是一款备受关注的AI绘画软件。本文将为大家详细介绍这款软件的功能特点,并分享一些使用心得。 AI先行者2.0拥有强大的图像处理能力。 它支持多种AI模型,包括Midjourney、Niji、DallE3和Stable Diffu…

【C++】——string类的使用

目录 一.为什么学习string类&#xff1f; 1.1 C语言的字符串 二. 标准库中的string类 2.1 string类(了解) 2.2 string类成员函数 ● string类对象的常见构造 ● string类析构函数 ● 赋值重载 2.3 string的迭代器 <1>正向迭代器 Iterator <2> 反向迭代器…

接口测试工具:Postman详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、前言 在前后端分离开发时&#xff0c;后端工作人员完成系统接口开发后&#xff0c;需要与前端人员对接&#xff0c;测试调试接口&#xff0c;验证接口的正确性…

面试笔试 场景题(部分总结)

文章目录 题目--找出一堆随机数中的前 k 大数字PriorityQueue 类PriorityQueue 常用方法 题目--数组中的第 K 个最大元素 题目–找出一堆随机数中的前 k 大数字 找出一堆随机数中的前 k 大数字&#xff0c;找出一堆随机数中的前 k 小数字。都一样 方法&#xff1a;快速排序。…

【springsecurity】使用PasswordEncoder加密用户密码

目录 1. 导入依赖2. 配置 PasswordEncoder3. 使用 PasswordEncoder 加密用户密码4. 使用 PasswordEncoder 验证用户密码 1. 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifac…

docker部署NginxProxyManager

1.效果展示 有啥用&#xff1f;&#xff0c; 能把域名代理到 117.xx.xx.xx:3000 服务器上 而不用写一堆的location / { proxy… } 2.步骤 2.1往期docker安装 docker和docker-compose安装脚本-CSDN博客 2.2创建目录 mkdir ~/npm #创建一个目录用来安装此服务 cd ~/npm #…

兴业周报|“一套房子不留”的马斯克 在北京买房了?

稀有房源&#xff1a;标的物位于北京五环内&#xff0c;真正的城市别墅。中间建筑三区“全网无二手”&#xff0c;二手房市场无在售房源。 高性价比&#xff1a;标的物市场价2800万&#xff0c;起拍价1124万&#xff0c;四折上拍&#xff0c;四室两厅南北通透&#xff0c;建面…

基于SpringBoot的口腔管理平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 首页 会员管理 病例就诊…

RuoYi-Vue若依框架-系统监控内定时任务的使用

定时任务 之前定时任务是在后端代码内使用cron表达式对对应的接口方法按照表达式执行&#xff0c;现在可以在框架内自行添加任务&#xff0c;包括自定义任务名&#xff0c;在调用方法内写对应实体类.接口方法名&#xff0c;cron表达式&#xff0c;添加好后即可执行 调用方法…

业余考什么证书比较实用?

在业余时间里&#xff0c;获得一些有用的证书不仅能提升你的专业素养&#xff0c;还能增强你在职场上的竞争力。 特别是职业技能证书和行业认证证书&#xff0c;这两者受到了广大职场人士的高度关注。 一、业余时间考取的实用证书 行业认证证书主要针对特定行业或职业&#…