区块链中的“块”是什么?
比特币是基于区块链的,这一点大家都知道。但是这个区块链是什么呢?更准确地说,区块链的各个组成部分是什么呢?
区块链是一个数据块。每个块可以看作是分类帐中的一个。单个块由几个组件组成。大致可以将它们区分为块的头部(块头)和块的身体(块体)。
块头为六个部分:
1、软件的版本号
2、前一个块的哈希值
3、Merkle树的根哈希值
4、世界时自1970-01-01以来以秒为单位的时间
5、当前困难的目标
6、特定场合
软件的版本号
在大多数情况下,软件版本号并不重要。但是,具有特定版本号的挖掘程序可以指示它支持哪个协议决。
前一个块的哈希值
前一个块的哈希值,也可以说是块的链。因为前一个块的哈希值包含在新块的哈希值中,所以区块链的块都是在彼此的基础上构建的。如果没有这个组件,每个块之间就不会有连接。
Merkle树的根哈希值
块中包含的所有事务都可以聚合到哈希值中。这就是Merkle树的根哈希。
自1970-01-01 T00: 00 UTC以来的秒数
块本身中的时间戳。时间自1970年1月1日起以秒为单位给出。
当前困难的目标
指示新哈希值必须小到什么程度才能声明有效性。换句话说,每个哈希值都有一个位大小。位的目标越低,就越难找到匹配的哈希值。
特定场合
特定场合是由工作量证明增加的变量。通过这种方式,挖掘器猜测一个有效的哈希值,一个比目标值小的哈希值。
这六个组件构成了块头。区头在比特币中扮演着重要角色,因为它将所有区块连接在一起。你可以把它想象成卡车的驾驶舱。这些是卡车通过网络控制时所带的重要文件。
块体
块体可以想象成卡车的装载空间。它包含与块确认的所有事务。
当挖掘程序构造一个块时,它会验证事务。也就是说,他主要检查寄件人是否有足够的钱。他可以很容易地从区块链中读取这些信息。如果发件人想发送10个比特币,他会查看过去的数据块,看看发送者是否已经收到10个比特币。
块中的事务不仅在列表中,而且在所谓的Merkle树中。
什么是Merkle树?
Merkle树的名字来源于数学家Ralph
Merkle。许多信息可以用一个哈希值表示。为此,首先会对数据本身进行分发哈希值。然后哈希直再次被分发并合并。最后,Merkle树被合并到一个哈希值中。最后一个哈希值也称为根哈希值,即树的根。它在一个相对较短的字符串中表示其“叶”(单个事务)和“分支”(叶的哈希值)的所有信息。
只要知道所有的分支和叶节点,创建根哈希就非常简单快捷。就像哈希值函数一样:它在一个方向上工作得清晰而迅速,在另一个方向上是不可能分解的。如果根哈希值已知,但事务未知,则不可能猜测事务。
因此,仅使用根哈希值是不够的,必须保存块的其余部分。因此,通过再次哈希值块中包含的信息,挖掘器可以在任何时候验证根哈希值。只要哈希值函数相同,对于给定的数据输入,矿工们总是会得到相同的哈希。这非常方便,因为它们只能检查它们是否与哈希值处于同一级别即可。
挖掘:搜索特殊哈希值
在这种背景下,更容易理解工作量证明的挖掘。在挖掘时,块的块头会被增量地更改以获得一个特殊的哈希值。头由五个常量和一个变量组成。常量是软件的版本号、前一个块的哈希值、Merkle树的根哈希值、时间戳和搜索哈希值的目标大小(以字节为单位)
变量是nonce。nonce是由1提出的数字。然后挖掘器对数据进行分发哈希值,并检查数据是否产生了低于搜索目标值的哈希值。如果哈希值大于目标值,挖掘器将重复该过程;因此,它将nonce增加1,哈希值会再次检查。它重复这个过程,直到找到低于目标的哈希值,或者从另一个低于目标值的网络工作者那里获得另一个块。然后获取这个新块并将其用作下一个块的基(使用新哈希值作为“上一个块的哈希值”)。
挖掘是一个超重复的过程,其目标是找到一个特殊的哈希值。一旦找到哈希值,游戏就重新开始。找到特殊哈希值的概率取决于难度。比特币平均每十分钟就会发现一个新的区块。这个难度一直在变化,所以这个平均值保持不变。
这个过程的特殊之处在于,只有通过猜测才能找到特殊的哈希值。这个速率会消耗计算能力和能量。查看特殊哈希值就足以看出它是特殊的,因为它以0开头。
下面是一个来自比特币区块链的哈希值例子:
000000000000000000094 bfa4edb1245c347e42452e4418e9fe5a1d24e335b16
哈希值表:区块链的matryoshka
块可以简化为matryoshka想象的那样。最小的玩偶是未标价的交易。下一个信封是这个事务的哈希值形式。此后,两个哈希值事务被哈希在一起。所以哈希值会被合并得越来越多。最后,只剩下一个哈希值,即根哈希值或最大的matryoshka。
1、网络拥堵的概念
通常指的是一种网络故障现象:某办公局域网计算机使用一个带路由功能的ADSL Modem+HUB共享上网。当同一时间上网人数较少的时候网络比较通畅,上网人数多了以后网络会时断时通,并且HUB的Collision指示灯会闪烁不停。
而在区块链的应用程序中,无论是数字货币、智能合约、去中心的交易系统等,它们的网络都是由一个个独立的节点组成的,发生在节点中的各种操作,比如转账交 易、合约状态的变更等,都会以交易事务的数据形式广播到网络中,通过矿工打包到新的区块,作为主链的一部分而最终确认所有的这些操作。
当节点很多,使用量很多的时候,大量发生的交易就会来不及在正常期望的时间内被打包,因为它们都拥堵在网络中,这些等待被确认打包的交易数据通常都维持在节点的。这个就是区块链的拥堵。
2、网络拥堵怎么发生的呢?
我们以比特币为例,比特币大概每隔大约10分钟生产一个区块,它的每个区块还是有大小限制的。区块的大小限制是1MB,很多人在以太坊上大量地进行智能合约开发以及进行ICO也导致大量的网络拥堵,实际上对于每一类区块链应用来说,这个问题都是存在的,造成不断有用户抱怨交易延迟的问题。
那么发生这些问题,我们应该怎么办呢?
3、网络拥堵怎么解决?
解决的方法,无非有如下几种。
第一种 扩容,我们提高处理能力。
第二种 截流,限制区块链包的数量,同一时间只能有这么的区块链的包在上面跑。还有一种截流的方法,就是交易压缩,将没用的信息去掉,节约每笔交易的空间,好让区块里能存放更多的交易。
我们说第一种,目前市面已有的探索,通过一些研究,目前已经有一些新方法提出来解决此问题,比如闪电网络、侧链。闪电网络是一个去中心化的系统,它无需信任对方以及第三方即可实现实时的、海量的交易网络,也有一些人提出了新的解决方案比如DAG技术。
第二种,一般大部分区块链应用还会对内存池中的交易排列优先级进行处理,比如愿意花更多交易费的事务会优先处理等,这将使得使用成本越来越大,对于普通用户的交易,手续费低的就很难排上了。从目前的情况来看,要想交易顺利完成,比特币用户应该选择合适的手续费,通过定义合适的费用来交易。
还有的是,通过将上述两种方法进行综合,悉尼大学研究者研发了一种新型的区块链系统,其在100台机器中能够实现每秒44万笔交易的吞吐量,而Visa每秒的交易处理器是5.6万笔。相比之下,比特币每秒的交易限制在7笔,以太坊区块链则为20笔。
当你发起一笔比特币转账后,你需要将交易广播至全网,挖矿节点接到这笔交易后,先将其放入本地内存池进行一些基本验证,比如该笔交易花费的比特币是否是未被花费的交易。
如果验证成功,则将其放入“未确认交易池”(Unconfirm Transaction),等待被打包;如果验证失败,则该交易会被标记为“无效交易”(Invalid Transaction),不会被打包。
也就是说,挖矿节点在比拼算力的同时还需要及时验证每笔交易,更新自己的“未确认交易池”。节点抢到记账权后,将从“未确认交易池”中抽取约近千笔“未确认交易”进行打包。
有时候我们的交易不能被及时打包,是因为“未确认交易池”中的交易笔数太多,而每个区块能记录的交易笔数有限,这时候就会造成区块拥堵。最典型的案例,就是在比特币出现隔离验证和硬分叉之前,交易池中挤满了几十万笔交易,而每个区块只能装2000个左右,每次涌入的新交易比打包区块快的多,就会造成严重拥堵。
Gemini双子新约是不是也会有卡区块的情况?
答:这个是必然的,只要是区块运行都会有这类的情况出现。
Gemini双子新约DAPP钱包,从1.0.0版本已经升级到了1.0.4,1.0.5,用户的体验速度,以及体验感都在逐步的增强。
近期2.0版本的上线,用户的体验流畅度将更舒适,更方便,更快速。
请用浏览器扫码加入双子新约,可填邀请码,W5J3Q8RQB8Y963AONNNFXZYX
Gemini双子新约2.0给我们带来什么样的好处?
1、解决偶尔出现网络拥塞等问题,使得我们的体验感更强。
2、已经做好了Gemini2.0主网升级的所有技术准备(主网上线意味着什么?我相信大家也看到过我的文章)
3、将于新加坡时间2020年9月下旬升级Gemini的主网;并开源相关底层代码、API和SDK文件等代码(有了自己的主网,是不是会有很多的开发者基于我们的主网来开发自己的代币)(github开源)
4、共识算法升级(提高事务数据处理效率和事务确认速度)
5、链上机构合约升级(1.0矿池扩容,需要直推3名5000CGC用户,2.0,只需要直推3名1000CGC用户)
6、智能合约和跨链技术升级
7、基于Gemini2.0强大的算法和性能
8、GHOC是一种低门槛、有价值的法定货币协议(消费LGC或抵押LGC定制他的代币,LGC价值将会越来越高)
9、Debank是一个分散的金融借贷和质押平台(通过智能合约执行LGC是Debank的股权证书和有价值的抵押品)
10、LGC、CGC价值将无限可期,您准备好了吗?