区块链的基本要素包括

高手们,打扰一下,区块链的基本要素包括
最新回答
辣条的发明妨碍我当淑女

2024-04-21 17:09:37

1-包含一个分布式数据库

2-分布式数据库是区块链的物理载体,区块链是交易的逻辑载体,所有核心节点都应包含该条区块链数据的全副本

3-区块链按时间序列化区块,且区块链是整个网络交易数据的唯一主体

4-区块链只对添加有效,对其他操作无效

5-基于非对称加密的公私钥验证

6-记账节点要求拜占庭将军问题可解/避免

7-共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃。

8-共识过程能够解决double-spending问题。

区块链的五个特点:
去中心化
由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。
得益于区块链的去中心化特征,比特币也拥有去中心化的特征 [6] 。
开放性
系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。
自治性
区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。
信息不可篡改
一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。
匿名性
由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方自己产生信任,对信用的累积非常有帮助。
灵魂的出口

2024-04-21 07:28:31

1 加密哈希

散列是加密函数能够将任何输入数据转换成数字的固定长度的字符串。哈希函数的每个输入都会产生不同的输出,并且结果是确定的:如果使用相同的输入,则输出值将始终相同。

哈希函数最重要的功能之一是转换是单向的:您无法反转该函数以生成原始输入。

有很多算法可以创建不同的哈希变量。您可以在此处检查SHA256哈希算法的工作方式。对于每个输入,该算法都会生成完全不同的输出,并且无法预测输入的变化将如何影响输出。

区块链节点使用哈希函数创建任何交易块的唯一标识符。每个块都包含前一个块的哈希值。

2 不可篡改账本

此功能与上一个功能紧密相关。由于链中的每个区块都包含前一个哈希,因此如果不更改整个链就不可能修改任何区块。因此,该链条充当不变的数字分类帐。

3 点对点(P2P)网络

区块链不需要任何外部或内部信任权限。这是可能的,因为区块链数据分布在所有用户中。每个用户都有自己的交易副本和哈希块,并且他们将任何新交易的信息传播到整个网络。这样,任何人都不可能更改链中的信息,因为它不是由单个实体存储,而是由整个节点用户网络存储。

验证交易块后,会将其添加到链中,并且每个用户都会更新其本地信息。即使攻击者要修改您的本地链,网络也不会接受来自更改后的区块链的任何阻止。

4 共识协议

但是真正的区块链是什么?用户需要在添加更多块之前就链的有效性达成协议。

每次节点添加新块时,所有用户都必须使用通用协议来验证该块。通常,节点通过工作量证明或权益证明 方法就新块的正确性达成共识。

节点检查新块是否满足其Proof方法的要求,包括对块内所有事务的验证。如果该区块有效,他们将其视为区块链的一部分,并继续添加新区块。

如果不同的用户具有不同的看似有效的链,则他们将丢弃较短的链,并选择最长的链作为主区块链。像在任何拜占庭式的Torelance(BFT)系统中一样,它们将满足有关正确链的协议,而总节点中至少有2/3不是恶意的。

5 区块验证或“共识”

术语``挖矿''是指满足工作量证明要求的行为,用于将具有待处理交易的新区块添加到区块链。有许多不同的挖掘方法,因为它们是为链定制定义的。

PoW方法通常要求用户创建对其哈希码有限制的块。由于哈希码是不可预测的,因此“矿工”必须在符合要求之前测试任何可能的组合。这些限制定义了网络的难度。

一旦“矿工”节点找到了PoW问题的解决方案,他们便将区块添加到链中,并且每个其他节点根据其共识协议检查PoW的有效性。如果区块合法,他们会将其包括在自己的区块链本地副本中。
为期待而延续

2024-04-21 11:43:56

今天给他家分享的是当下炙手可热的技术—区块链。大家在百度输入区块链几个字,就能获得成千上万条有关的消息。想必大家或多或少对区块链有所了解。即是并不关心科技,也多少会知道有区块链这个词。我也在通过不断的学习,来不断刷新自己对区块链的认识。作为一名程序员,自然而然地也想探究一下区块链背后的技术。虽然个人能力有限。今天目标是带大家了解一下组成区块链的五个基本元素,内容可能因为自己的知识结构和能力限制,可能有有误的地方,希望大家指正。
有人说你研究他—区块链有啥用,其实我也不知道他对我的工作会有啥帮助和用处。但是我知道,如果我都知道他的好处,那他就不会给我带来惊喜和更多价值,现在唯一可以确定他能给我带来的好处就是,带来了一些新思想,开阔了我的编程思路。这是我现在唯一知道他能给我带来的好处。
什么是状态机
这里定义状态机,这个状态机只是为了说明区块链,所以设计很简单,初始化状态为
整型
0 更新状态的是将消息(数字)添加到初始状态(0),如图 状态发生了变化 q1 7 = 0 + 7,这是状态机(下图)
状态机的更新状态
区块链技术
是基于状态机的,不断更新状态,q1 = q0 + 7(message) q2 = q1 + (-5) = 2 …
状态机流程
这里我们为消息添加一个校验函数,来屏蔽一些无效的信息。这个函数接受当先状态和消息做为参数,按一定规则进行校验,返回真或假,来决定信息是否有效,从而决定是否更新状态。定义一个简单的校验规则就是,加入 message 值(7) 需要大于当前状态(0) 也就是 7 > 0 。
区块链状态机
添加校验节点
我们看一下图,在 q1 接受信息 -5 进行校验,结果 –5 是否合法,这是因为规则是 message (-5)需要大于原有状态值 7,所以 -5 > 7 为 false 没有通过校验。继续向下显然 16 > 7 通过校验状态更新为 7 + 16 为 23。(如下图)
我们创建 4 个节点可以代表人或组织,每两个节点可以双向传递消息,这样就形成一个分布式网络,确保了信息可以传递给每个节点。(如下图)
分布图
在这个分布式网络,每个节点都有一个状态机,可以接受信息然后更新自己状态。
每个节点都有自己的状态机
当 message (-5)从一个节点进入分布式网络,以这个节点为路口来更新整个网络上每个节点的状态机。
更新整个网络状态
当 message (-5)流入到每个节点时,每个节点都会获取消息进行校验来更新自己状态机。
分布图
进行校验
这样问题也来了,当不同 message 从两个不同或多个节点进入分布式网络,来更新每个节点的状态机。这样就会带来一致性的问题。这样就有可能有两种情况,第一种情况是先接受 29 然后接受 72 ,还有一种是与之相反。
两种情况,
这样就有可能有两种情况,第一种情况是先接受 72 然后接受 29 ,还有一种是与之相反。
第一种情况,先接受 72 由于 72 > 23 所以会通过校验更新状态为 95, 然后由于 29 < 95 所以无法再更新状态机。
这样就有可能有两种情况,第二种情况是先接受 29 然后接受 72 ,还有一种是与之相反。
第二种情况,先接受 29 由于 29 > 23 所以会通过校验更新状态为 52, 然后由于 29 < 52 所以更新状态为 124。
这样对带来问题,每个节点会按哪种情况来更新自己的状态呢?哪种 message 顺序是正确的呢?
通过一定的算法来为每个节点分配彩票,然后进行摇奖,胜出的节点可以决定分歧的对与错。有关具体如何实现,由于个人也在对其内部实现机制了解中,无法给出详细的解答。
这种方式适合内部区块链,而非公网区块链。假设一个人进行提议,大家投标来决定这种情况是否为正确来解决一致性的问题。这部分内容以后给大家更详细地解释。
在处理一致性问题上,我们势必要花费一定时间,这样就可能带来瓶颈的的问题,尤其是大量的信息接连而至的情况下。
为了解决瓶颈问题,我们将一定数量的消息组合为一组消息块,然后通过算法来排序,然后将一组消息添块加到节点上的状态机来更新状态。
依赖一组由
公钥
/私钥(Public Key /Private Key)组成的密钥对,所以采用
非对称加密
又被称为公钥加密(Public Key Cryptography)。具体来说,公钥和私钥均可以用于加密。如果密钥对中的其中一个用于加密,另一个则用于解密。公钥公诸于众,不具有隐私性,任何人均可以获取;而私钥专属于拥有该密钥对的实体,属于绝对隐私。