今天距考研还有19天23时58分51秒!还没复习完的你不要慌。我又来送干货了!本博客适合学习速成的人。如果你喜欢和时间赛跑,那就关注、点赞吧,我们都是有共同爱好的人。
看到这个标题,有没有很惊讶!
哈哈哈,接下来就听我慢慢解释吧。
协议是掌管一个系统如何运行的一系列规则。这些规则确立了不同部分的基本功能、他们如何相互作用、以及对于良好运行所必需的条件。协议的不同部分 对时间顺序不敏感 ——首先制定哪个部分并不重要。协议也不会告诉系统该如何产生一个结果或输出,除了顺利执行之外,没有其他目标。
协议就像一辆汽车的引擎。
算法,是一组产生输出结果的指令。它可以是一段简单的脚本,也可以是一个复杂的程序。指令的顺序非常重要,而算法指定了该顺序。它会告诉系统该做什么才能达到预期结果。它可能不会提前知道结果是什么,但它知道它需要一个结果。
算法就像一辆汽车的驾驶员,它发布的指令就是驾驶员为操作汽车而做的一系列行为。
上面这张图中,桥是协议,自行车是协议,骑车的人是算法。
协议是一组决定系统功能的规则,算法是一组告诉系统该做什么的指令。协议定义的是“是(is)”,算法是“做(dose)”
如果在厨房中
协议就是一系列的条件和指令
- 刀切东西
- 火加热
- 橄榄油是美味的
- 煎锅适合炒洋葱
- 在做饭之前要洗手
- 烧焦的食物很难吃
算法则是这样的:
- 切洋葱
- 在平底锅里加热橄榄油
- 把洋葱放到锅里,加一些盐,翻炒洋葱至半透明状
区块链既需要协议又需要算法,并且每个都有不一样的作用。
在区块链世界里,协议的作用如下:
告诉节点如何在彼此间进行交互
确定数据从一个节点到下一个节点的路线
定义区块是什么样的
规定谁决定哪些交易是有效的
明确如何确定共识
规定谁维护账本
确立决定系统规则如何变化的代表
决定是否需要身份
决定谁能创造新的币
在发生错误时触发程序
算法在区块链里扮演的角色又是什么呢?
验证签名
确认余额
决定区块是否是有效的
确定矿工如何验证区块
建立告诉区块移动的程序
建立创造新币的程序
告诉系统如何确定共识
现在你已经分清协议和算法了对吧。那么问题来了,“工作量证明”和“权益证明”是协议还是算法呢? 在很多媒体报道中,既有把它们称为“算法”的,也有把它们描述为“协议”的。
而我认为它们是算法,而不是协议。
无论是工作量证明还是权益证明,它们都是告诉矿工该如何验证区块。它们像协议一样建立条件,但指令才是基础,并且有一个很明确的输出结果:处理交易,确认哪些区块写入链上,就哪个链是正确的链达成共识。两者都是用底层协议来实现这些目标。
沿着这个思路走,比特币和以太坊是算法还是协议?
它们是协议而不是算法。
它们建立基本规则,设置“引擎”并确定谁做什么以及如何做。然后,用户利用算法来转币,执行智能合约并创建新的商业模式。算法是使协议发挥作用的根本原因。
这就是为什么区别很重要。我们需要理解状态和行为间的不同、规则和程序间的不同、能做和不能做之间的区别。我们不能改变规则(如果你想改变的话,回到原点,重新建一个新的区块链),但是我们能建立一些列的行为、指令和程序,以帮助我们得到预期的结果。