区块链协议概述(第二部分)

2019-02-01 18:19 栏目:经验之谈 来源: 查看()
简化付款确认

无需运行完整的网络节点即可验证付款。用户只需要保存工作证明链的最长副本。他可以通过查询网络节点来获取副本,直到他确定他拥有最长的链并获得将事务链接到它标记的块的Merkle分支。他无法自己检查交易,但通过将其链接到链中的某个位置,他可以看到网络节点已接受它并在进一步确认网络已接受它后添加了一个块。

区块链协议概述(第二部分)

因此,只要诚实节点控制网络,验证就是可靠的,但如果网络被攻击者制服,则验证更容易受到攻击。虽然网络节点可以验证事务本身,但只要攻击者可以继续控制网络,攻击者的伪造办公室就会欺骗简化的方法。防止这种情况发生的一种策略是当网络节点检测到无效块时提示来自网络节点的警报,提示用户的软件下载整个块,并警告事务确认不一致。频繁接收付款的公司可能仍希望运行自己的节点,以实现更独立的安全性和更快的验证。

如果大多数CPU能力合谋,那么网络显然不再安全。如果你使用51%的攻击,这种简单的方法很容易愚弄,人们会希望有一个完整的区块链。

隐私

典型的模型是身份与由受信任的第三方终止然后在交易对手终止的交易相关联。在此模型中,网络的其余部分不知道各方之间的某些事务。

在比特币协议模型中,身份是一个单独的部分,交易由公众以分类账的形式进行。

作为附加防火墙,应为每个事务使用新密钥对,以防止它们链接到公共所有者。但是,存在风险:如果密钥的所有者被暴露,则链接可能显示属于同一所有者的其他事务。

使用区块链

区块链提供可以公开写入的全局可附加日志。参与区块链网络的节点遵循块头协议来决定哪个节点可以写下一个块并收取特定的交易费用。在每轮领导者选举中,只有一个节点可以写一个块。区块链中的节点维护它的完整和更新版本。独立验证和添加到区块链的过程涉及运行计算密集型软件来解决复杂的数学问题。这种困难称为工作量证明(POW)。 POW基于加密哈希函数。为了使块可接受,其头部散列必须在一定数量的零之后,其中散列是Merkle根,前一个块和该时间段内所有事务的nonce的组合。 Merkle根是通过散列数据,将结果与另一对数据配对,并再次包括最后一个散列中的所有事务数据而形成的。矿工搜索'nonce',其前缀块头有足够的0来满足POW条件。解决POW后,新块将通过网络传输。但是,使用区块链构建系统存在一些挑战,例如数据存储限制,写入速度慢,带宽有限等。

哈希函数将任何大小的输入数据转换为固定大小的输出数据。数字签名是公钥加密的衍生物(也称为非对称加密)。公钥加密使用两个不同但数学上连接的密钥,一个是私有的(这是秘密的)而另一个是公共的(与其他人共享)。

代码

为了深入理解区块链技术,我们需要阅读实现它的代码。

区块链的基本概念非常简单。:分布式数据库,用于维护不断增长的有序记录列表。流行的区块链项目就是这种情况,比如比特币和以太坊。 “区块链”一词通常与交易,智能合约或加密货币等概念密切相关。

这使得理解区块链成为一项艰巨的任务。特别是源代码。在这里,我将介绍一个超级简单的区块链,我用200行Javascript实现了NaiveChain。

块结构

第一个逻辑步骤是确定块结构。为了使事情尽可能简单,我们只包含最必要的:索引,时间戳,数据,哈希值和先前的哈希值。

区块链协议概述(第二部分)

块哈希

该块需要哈希值来维护数据的完整性。 SHA-256接管块的内容。应该注意的是,这个哈希值与“挖掘”无关,因为没有工作问题需要解决。

区块链协议概述(第二部分)

生成一个块

要生成块,我们必须知道前一个块的散列并创建所需的其余内容(=索引,散列,数据和时间戳)。块数据由最终用户提供。

区块链协议概述(第二部分)

内存块

内存中的Javascript数组用于存储区块链。区块链的第一个块总是被称为“快速原点”,它是硬编码的。

区块链协议概述(第二部分)

验证块完整性

在任何给定时间,我们必须能够验证其在完整性方面是否有效。当我们从其他节点接收新块并且必须决定是否接受它们时尤其如此。

区块链协议概述(第二部分)

选择最长的链条

在给定时间,链中应始终只有一个显式块集。在冲突的情况下(例如,两个节点都生成72个节点),我们选择具有最长块数的链。
与其他节点沟通

节点的一个重要部分是与其他节点共享和同步区块链。以下规则用于使网络保持同步。

·当节点生成新块时,它会将其广播到网络
·当节点连接到新对等体时,它会查询最新的块
·当节点遇到索引大于当前已知块的块时,它会将块添加到当前链或查询完整的区块链。

不要使用自动对等发现。您必须手动添加对等方(=url)的位置。

控制节点

用户必须能够以某种方式控制节点。这是通过设置HTTP服务器来完成的。

区块链协议概述(第二部分)

与其他节点沟通

节点的一个重要部分是与其他节点共享和同步区块链。以下规则用于使网络保持同步。

·当节点生成新块时,它会将其广播到网络
·当节点连接到新对等体时,它会查询最新的块
·当节点遇到索引大于当前已知块的块时,它会将块添加到当前链或查询完整的区块链。

不要使用自动对等发现。您必须手动添加对等方(=url)的位置。

控制节点

用户必须能够以某种方式控制节点。这是通过设置HTTP服务器来完成的。

区块链协议概述(第二部分)

可以看出,用户可以通过以下方式与节点进行交互::

列出所有块
使用用户提供的内容创建新块
列出或添加同行

控制节点最直接的方法是使用Curl:

从节点获取所有块
卷曲http://localhost: 3001 /块

建筑

应当注意,该节点实际上为一个用户控制节点(HTTP服务器)公开了两个Web服务器:,并且一个用于节点(Websocket HTTP服务器)之间的对等通信。

第一部分

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发