每周一聊
什么是共识算法?
在区块链中,会产生大量的数据,也会存储大量的数据。那这些数据首先会如何到达哪里?谁选择将数据放置在区块链上,如何选择?这个问题的答案就是使用共识算法。
定义共识算法
短语共识算法的整体含义可以通过理解该短语中两个词的含义来理解。第一个词是共识,表示组成员之间的一般协议,而第二个词是算法,表示计算机在程序中遵循的步骤序列。
综合考虑这些词的定义,我们可以将共识算法改写为“ 遵循一组规则,以协调并达成组成员之间的协议。 ”
从本质上讲,共识算法用于多方或计算机就系统状态达成共识。该决定将被添加到区块链中,然后可以被视为不可辩驳的单一真相来源。共识算法基于分布式计算的概念,其中多台计算机旨在通过共识制定决策过程后得出结果,从而实现可靠的网络。
共识算法示例
共识算法的一个非常简化的类比是一个简单的多数表决过程。
例如,您希望有人在特定的年度活动中代表您的社区,并希望举行一个非常分散的投票程序。有两个候选人,爱丽丝和鲍勃,以及您社区中的500人。每个社区成员都可以看作是系统上的一台机器。并非所有社区成员彼此认识,但他们确实知道他们必须对2名候选人中的1名进行投票,并且仅需简单多数即可宣布获胜者。此外,在这种设置中,选民也是计票的人。因此,该投票过程的总体规则如下:
-
确定了两名候选人:爱丽丝和鲍勃
-
确定500名合格选民,并同意参加投票和与投票过程相关的规则
-
如果选民不同意规则,他们可以随意退出程序
-
选民发送投票后,他们将知道有多少人为每个政党投票,以及投票的当前状态。
-
如果某个特定候选人获得简单多数票(例如,如果没有退学,则只有500票中有251票),那么将宣布获胜者。
在此过程结束时,如果至少有一半票数投给了特定候选人,则各方都知道并同意该候选人为获胜者。然后可以将关于谁是获胜者的决定添加到获胜者列表或记录中。但是,因为我们喜欢区块链,所以可以在显示时间戳和结果的区块链中完成此操作,如图2所示。
与加密货币的比较
这种类比的直接比较是在加密货币中,区块链将显示时间戳和交易清单。矿工将选择哪些交易符合其区块链中下一个区块的条件,并且该过程以分布式方式完成。
上面显示了共识算法的非常简化的类比,并且没有考虑诸如容错和一致性之类的主题。这些是更深入的主题。
共识算法有很多变体和应用。但是,在加密货币领域,最受欢迎的是工作量证明和权益证明。
原文链接:https://medium.com/equos/digital-assets-decoded-what-are-consensus-algorithms-eb8c0aecfc83
Qitmeer Network 周报
新闻动态
项目技术进展
底层核心代码更新
-
RPC 通知管理增加对交易信息的支持
-
Qitmeer 上的 Token 支持拥有自己的费用体系,通过代币ID进行区分
-
改进 coinID 的 json 显示/编排问题
-
BUG 修复:修复创世缺少输出的问题
代码实现: https://github.com/Qitmeer/qitmeer/pull/420/commits/fab42a0c1cd806fa59285c0c37c34ab166a969ab
-
优化 cli 脚本
代码实现: https://github.com/Qitmeer/qitmeer/pull/420/commits/2909dd5c3450b18d818f4f6c2925a5018a50fc63
-
BUG 修复:修复按范围获取区块哈希的功能中存在的BUG
代码实现: https://github.com/Qitmeer/qitmeer/pull/420/commits/eac7edfb651287fd5dc35a58a3d093d54486b2fd
-
优化区块信息获取的 RPC:通过最新区块排序来优化 RPC 结果
代码实现: https://github.com/Qitmeer/qitmeer/pull/420/commits/f185893177709bffff38005817380f2af39c3e98
基础产品及开发工具更新
-
增加 qitmeer-wallet 无限期解锁功能
-
Qitmeer-wallet 功能更新:发送交易前先进行区块成熟度检查
Qitmeer Network Development Report
News
Project Development Progress
Core Code Update
-
RPC notification management adds support for transaction information.
-
Token on Qitmeer supports its own fee, distinguishing by coinID.
-
Improved the json display / marshal issue for coinID.
-
Fixed BUG: fixed the lack of output in Genesis.
code: https://github.com/Qitmeer/qitmeer/pull/420/commits/fab42a0c1cd806fa59285c0c37c34ab166a969ab
-
Optimize cli script.
code: https://github.com/Qitmeer/qitmeer/pull/420/commits/2909dd5c3450b18d818f4f6c2925a5018a50fc63
-
Fixed BUG: fixed bug in the function of getting block hash by range.
code: https://github.com/Qitmeer/qitmeer/pull/420/commits/eac7edfb651287fd5dc35a58a3d093d54486b2fd
-
Optimize block RPC by Latest Block Order.
code: https://github.com/Qitmeer/qitmeer/pull/420/commits/f185893177709bffff38005817380f2af39c3e98
Basic Products and Development Tools
-
Add qitmeer-wallet function to unlock indefinitely.
-
Qtmeer wallet function update: block maturity check before sending transaction.
Qitmeer Common Links
- Qitmeer GitHub: https://github.com/Qitmeer/
- Qitmeer Homepage: https://qitmeer.io/
- Qitmeer Explorer: https://explorer.qitmeer.io/
- Qitmeer docs: https://qitmeer.github.io/docs/en/
- Qitmeer wallet: https://www.kahf.io/