免责声明
该文本与现有的加密项目无关,代表了该主题的第一个“真空中的球形马”。 专家很可能不需要这些共同的事实。 是的,这是Longrid。 尽管幕后还有很多事情。
介绍性
首先,区块链是时尚的。 这就是他们感兴趣的主要原因。 看来,这是一种“小丑”技术,可以并且应该应用到任何地方。 但这不是事实。 这样一来,您不必相信我的话,我会告诉您区块链的实际含义,适用范围以及需要使用的地方,就像钓鱼的伞一样。
所以...
区块链
该术语来自英语“区块链”,翻译为“区块链”。 每个新块都包含前一个块的哈希,形成一个单链表,其中每个块的哈希记录在下一个块中。
块哈希取决于所有先前的块。 因此,最后一块的哈希值反映了整个数据库的状态。 从最后一个块到第一个块的哈希链证明了其不变性。 添加新块后,它将“链接”到最后一个块,并且其哈希成为数据库的新状态。
如果任何现有块被更改,则哈希链将被违反,并且其违反位置将指示已更改的块。 您可以重新计算并将所有散列更改为链的末尾-密码连接将保留,但最后一个块的哈希将更改。 如果数据库状态-这是最后一个块的哈希-是众所周知的,则无法进行伪造。
实际上,仅此而已。
资料库
我们已经知道,区块链只是保护数据库不受干扰的一种方法。 数据库本身应该是什么? 实际上,它可以是任何-SQL,BigTable,键值,文件系统。 但是使用区块链有其局限性。
具有四个CRUD属性(“创建,读取,更新,删除”)的受区块链保护的数据库仅允许前两个属性。 您无法从此类数据库中更改或删除数据-因为它将立即失去加密完整性。 区块链仅允许您读取和创建新区块。
这种有缺陷的基础被称为注册表。 对于工作流程,专利活动以及-当然! -这种模型的加密货币是可以接受的和有机的。 但是将其用作通用数据库几乎是不可能的。
这里的关键词是“几乎”。 有一种方法可以协调“成熟的”区块链数据库,这种方法称为“交易日志”。
以一个简单的键值数据库为例,该数据库存储与唯一键关联的任意实体。 可以创建和删除它们,读取它们并进行更改。
对于每个实体,计算哈希值,然后按字面顺序(按字母顺序排序)结果列表。 对于每对哈希,请计算这些哈希的文字和(串联)的哈希。 然后,在结果列表上执行相同的操作。 依此类推,直到我们构建哈希树,在哈希树的顶部将有一个值。 这种机制称为Merkle树,在顶部将存在一个反映数据库状态的哈希。
接下来,我们将根据区块链的所有规则创建一个单链列表,其中将包含有关数据库状态,键和实体的新值的记录。 好吧,当然还有上一个条目的哈希值。 这已经是一个区块链-交易的区块链,每个交易都与数据库状态相关联,并包含此交易所做更改的实质。
如果密钥是新密钥,则创建实体。 如果存在,它将更改。 如果新值为零,则删除实体。 每次更改都会导致重新计较Merkle树的受影响分支和基础的新状态。
原则上,可以对关系数据库和任何其他数据库(如果需要)实施相同的方案。 事务日志将记录更改,默克尔树将证明其可靠性。 还不错吧?
数据分散
为什么要打扰所有这些身份验证机制? 然后,通过这种方式,您可以构建可以信任的分布式数据库。 即使存储该数据库的网络的非常节点,我们也不信任。
去中心化数据库被复制和分发。 每个用户复制的数据库均被完全平等地存储,而分布式数据库则被不同且部分地存储。 第一种方法的优点是完全控制数据库,而缺点是对存储卷的要求很高。 反映了第二种方法的优缺点-整个数据库的容量可以比任何单个用户的能力大很多倍,但以控制不足为代价,因此降低了对其可靠性的信心。
数据库的任何用户都可以添加自己的块。 但是,只有在所有实例都相同的情况下,该基础才是可靠的。 同步是一种维护数据库可靠性的方法。 只要它具有足够的相关性,以使执行相同的操作可以得到相同的结果,就可以执行任何操作(读取或写入)。
通常,同步包括获取数据库的最后状态,然后依次获取丢失的元素,直到完整性完全恢复为止。
分布式网络
去中心化保证了系统的稳定性,不受单个黑客以及公司和统治机构的破坏性影响。 只要分散的要素之间存在联系,分散的制度就会存在。
分布式网络中的参与者形成一个图形,该图形的节点是连接到Internet的计算机,并且它们之间的边由边连接。 每个节点都有一个唯一的标识符-帐户,电子签名的公钥或其他。 该标识符用于寻址消息,以及如何路由消息取决于网络体系结构。
最简单的体系结构是完全连接的图,其中每个标识符对应一个真实的网络地址,并且有可能与所有人进行通信。 但是在真实的网络基础结构中,可能无法实现每个人之间的连接。 另外,由于需要通知所有参与者,因此随着网络的发展,流量将与参与者的数量成比例地增长。 迟早会有效率的极限,超过这个极限,网络将开始退化,直到其完全停止。
一个更复杂的模型是有向循环图。 标识符排列在一个列表中,该列表循环播放,以使每个节点的左侧和右侧都有“邻居”。 节点从左侧的邻居接收消息并将其发送到右侧,节点通过中继将其传递。 该方案不依赖于网络的大小,因为节点与相对较少的固定数目的邻居进行交互。 可以改进和补充此方案,但要点是,每个节点将仅与自己的子网交互,该子网部分重叠,实现了无限大小的连接图。
但这不能为节点可以单方面连接到其他节点的情况提供解决方案。 从隐藏在网络地址转换(NAT)路由器后面的专用网络,它们可以发送消息,但不能接收消息。 对于他们来说,有必要实现一个模型,在其中他们建立连接,并根据请求接收消息。 “ NAT遍历问题”可以采用实现这些功能的单独“信标”路由器或其他节点的形式来解决。 带有路由器的模式类似于网络体系结构的星形模式。
可以改进和组合使用“环形”和“星形”架构,但是,“网状网络”架构效率最高,它可以通过减少连接并将直接连接从多个中间连接中转换为“路线”,从而将原始的完全连接图变为非连接图。 为此,每个节点必须(如有必要)能够成为邻居的路由器。 对于这种架构,特别是无法访问的路径和节点关闭尤其令人恐惧-网络将重建损坏的路由并进行自我修复。 就性能而言,它是最有效的。
但是你必须付出一切。 网格网络的数学装置(来自英文。Mesh-“单元”)要复杂得多,在此我可能会避免对其进行描述。 那些有兴趣的人,我将提到“旅行推销员问题”,然后(如果这不会吓到他们)提及博弈论。 那里有所有答案-对于那些可以得到答案的人。
分枝问题
区块链有一个致命的缺陷-仅存在连接列表,树就可以存在。 这没有什么矛盾,因为几个后续的引用可以引用相同的块。 每个结果分支都是可靠的,保持加密完整性并具有自己的状态。 但是,作为一个整体,基础将成为所有这些状态的叠加,并且变得不确定。
在分散系统中,此问题尤其重要,在该系统中,不同的节点可以独立地对数据库进行更改,从而导致派生(从英语派生为“ fork”)。 有两种解决方法-避免同时记录情况并消除后果。
挖矿
您可能听说过,比特币用户大部分时间都在燃烧电能,浪费了计算资源来解决无用的数学问题? 如果没有,现在您知道...
随机数被添加到每个新块。 它是随机的,但是结果块的哈希必须满足条件。 例如,以10个零开始。 现在,希望通过这些数字写一个新的块的节点,直到散列满足指定的复杂性条件为止。 来自计算机,视频卡或专门设计的设备的“农场”吸收千瓦并产生热量。 好吧,当然还有必要的哈希值。
为什么要这样? 但是很简单。 在概率论的众多参与者中,一个人每10分钟发现一次哈希。 他写了块。 这是防止分支的最简单方法。
而且效率最高,因为尽管任务很复杂,但仍会发生“分叉”。 然后,找到分叉的人将块从较短的分支中删除,然后依次将其转移到较长的分支的末尾。
为了使网络参与者有兴趣进行所有这些操作,对于他们花费的资源,他们“无处不在”获得加密货币硬币。 这是采矿(来自英语。“ Mining”(采矿)-在矿井中工作)。
PoW,PoS,DPoS ...
计算散列只是选择众多方法之一的一种方法。 这就是工作量证明,意思是“完成的工作量证明”。 通过计算所需的哈希值,参与者可以完成工作,发现的哈希值就是很好的证明。 电力浪费的证明。
当果岭谈论这件事时,很少有人关心。 但是,当新资金开始威胁到旧资金时,政府便回想起了生态。 但是,当时只有那些收到钱的人才理解采矿的无用性。 是时候改变一些东西了...
并且出现了权益证明,即“所有权证明”。 一切都很简单,谁更富有-他是对的。 实际上,一切都有些复杂,但这并不重要-区块的创建(并为他们获得奖励!)掌握在所有权较高的人手中。
然后是DPoS(具有民主和投票权的委派PoS),PoI(基于活动活动和正常运行时间等指标的“重要性证明”),以及越来越多的...
本质保持不变-需要一种机制,该机制仅允许每个时隙中的一个新块写入链中。 为什么他应该以某种方式证明自己是有价值的,并且通常比任何人都要好。
如果不能证明?
在这里,我们停下来,想起为什么对我们如此重要,以至于录制是由一个人完成的。 是的,因此链不会分裂成一棵树。 但是为什么呢?
如果一条链有两个最终块,则数据库同时处于两种状态。 如果还有更多,则所有可能状态的叠加。 基础变得不确定。 整个基础。 我们需要底座的整体完整性吗? 为了验证元素的真实性,不需要整个基础,仅需要与之关联的那些部分。
如果我们在不同的地方独立地更改数据库,并且每次更改都受到密码完整性的支持,那么我们将拥有一个不确定的数据库,其子集将是确定性的。 并且,如果除了分支之外,我们还处理分支,那么不确定性的度量将同时增加和减少。 如果首先要确保将受影响元素的所有状态带入数据库的确定性子集,则任何节点都可以随时在链中添加任何块。
这是没有区块链的区块链。 更准确地说,是非循环有向图上的寄存器。
加密货币
我们说“ cryptocurrency”-我们的意思是“ blockchain”,我们说“ blockchain” ...但是不,相反的说法不正确。 什么是加密货币?
想象一个数据库,其中包含具有“发件人帐户”,“收件人帐户”和“金额”字段的条目。 仅此三列。 在发件人帐户中的每个条目中,金额会减少指示的金额,而在收件人的帐户中则会增加。 如果您收集所有将资金转入一个帐户的记录并将其添加,然后从接收到的金额中减去所有从该帐户转帐的操作,我们将获得该帐户中现在的金额。 对于每个新条目,资金都会从一个帐户转移到另一个帐户,依此类推。
看看有多简单? 一张三列的表格-我们已经有了自己的财务系统。 如果不是因为一个问题,一切都会像那样。 在一开始,当表为空时,所有帐户都具有相同的值-零。 这意味着无法执行任何操作。 好吧,因为否则,某些帐户将具有负值,这...是错的吗? 还是不行
排放量
如果我们将纸币视为政府债务收入,那么纸币的全部金额就是国家对公民的总债务。 并且,如果在他们的帐户上带有加号的不同数字,则在条件“州帐户”上-他们的总和带有减号。 然后一切都收敛。
会计师称此余额为“余额”,他们也有主动(严格为负)和被动(严格为正)帐户。 他们也有主动-被动账户,但是如果您对理智和生活不满意,请远离泥炭会计,因为它们甚至具有“表外账户余额”,并非每个人都能承受。
含义如下。 由于发行人的帐户可能为负数,因此他们转移了他们没有的资金,从而“打印”了他们。 从理论上讲,他们可以做到任何数量。 实际上,发行人是应规范货币供应量的系统的一部分。 如何执行-每个项目都自行决定。
通货膨胀
该系统的所有总价值都估计为参与者彼此之间的总债务。 货币单位是总债务的总量。 流通的货币单位越多,每个货币单位的成本越低。 并且每个参与者节省的目标价值越低。
通胀是任何问题的副作用。 如果可能,应避免使用。
通缩
如果有任何金额转入发行人的帐户,则这笔钱将被“烧掉”。 货币供应量将减少,货币单位的价值将增加,系统中的所有参与者将变得更加富有。 另外,当然是慈善家,他的钱从流通中流失了。
激励机制可以附加到该机制。 例如,提供对从货币兑换参与者中扣除的佣金执行某些操作的能力。 例如,参与者用自己的钱来烧钱,收集佣金以处理资金发件人的付款。
从流通中除去部分货币供应量会增加剩余部分的价值。 这个过程值得刺激,但不能太积极,因为货币供应量必须足够大以确保所有必要的活动。
在所有方面,最主要的是平衡和分寸。
不只是钱
在谈论区块链时,我们提到了任意数据库,而不仅仅是帐户总数记录。 因此,我们可以将任何信息存储在分布式数据库中。 这带来了巨大的机会。 无法销毁和篡改的公共数据库将在各处找到应用程序。
您只需要寻找一种激励措施,使参与者在保持计算机电源打开时对自己有意义。
智能合约
从技术上讲,这与数据库中的存储过程相同。 也就是说,某种编程语言中的可执行代码可以对数据库进行更改。 之所以这样命名,是因为它具有悠久的历史。
在加密货币中,智能合约是一种参与者,它不是在世的人,而是行为由代码定义的自动机。 当对该成员执行汇款操作时,将执行该代码。 他可以做任何事情-分期将收到的款项转移给其他参与者,保存到X个小时为止收到的钱,然后选择一个人将所有钱转移给他。 顺便说一句,后者是各种轮盘,彩票和抽奖活动的经典实现。 您可以简单地将信息保存到某些参与者已为该服务付费的数据库中,然后另一个连接的参与者将能够接收此信息并提供服务。
这种“自动机”有很多种,称为“预言”。 ( , ) . "" , . , , .
, . - , , .
, — , .
因此,我们可以在分布式库中创建分布式虚拟机。像其他所有东西一样可靠(即可验证)。
结论
实际上,仅此而已。大量的创新无非就是更有效地以一种或另一种形式实现了本文所述的思想。如果您被告知“革命性”的事情,那就知道他们想欺骗您。
顺便说一下,MMM型金字塔已经出现在隐窝中。
谢谢您的关注。