区块链的每一个区块的第一(yī)个值是前一个区块的Hash值。
所谓Hash值就是一个函数,输入任何内容,都输出一个固定长度的字符串(即Hash值);输入内容不变,输出结果不变(biàn),即将输入(rù)内容固化;输入内(nèi)容一旦发生变化(huà),比如修改一个符号,输出(chū)的(de)Hash值都会发生变化。
比特币的Hash值是256位二进(jìn)制数,代表2的256次方个可能性或者(zhě)状态。如(rú)果给宇宙(zhòu)中所有(yǒu)的(de)原(yuán)子(zǐ)一个不重复的数字(zì)作为其状态,仍然(rán)用不(bú)完。
Hash值重(chóng)复(即Hash碰撞)的可(kě)能(néng)性(xìng)很(hěn)低,我们可能忽略(luè)。
因此,我们可(kě)以得出(chū)结论:往Hash函数(shù)中输(shū)入(rù)任意两个不同数字,最后得到的Hash值一(yī)定不一样,一定不会重复(即不会发生碰撞)。
每个区块首先引用前一个区块的Hash值,像指针(zhēn)一样,形成前后序(xù)列的(de)关系;通(tōng)过(guò)互相引用,就会形(xíng)成一(yī)个区块的链条(tiáo)。
然后(hòu)默克尔(ěr)树(Merkle Tree)将每一个交(jiāo)易都(dōu)取Hash值,两个Hash值之间再取Hash值。
比如原(yuán)来的8笔交易会变(biàn)成4个(gè)Hash值,再合并成2个Hash值(zhí),然后再合并成(chéng)1个Hash值(zhí),最后将这个Hash值写入区块中(zhōng),这样就(jiù)把(bǎ)所有交易的内容都固化(huà)下(xià)来。
此外,还有(yǒu)一个区块用来存放交易的原文(wén)。
生(shēng)成Hash值(zhí)时非常快(大概几十毫秒),而我们通常所说的比特(tè)币挖矿要消(xiāo)耗很多电能,要做很大的运(yùn)算,这到底为什么呢?
要想(xiǎng)获得比特币,除了满(mǎn)足(zú)它(tā)是(shì)前一(yī)个区块内容(róng)的(de)数据指纹之(zhī)外,还得满足256位二进制数的前N位(wèi)为(wéi)0。
比特币(bì)运(yùn)营初期时,只要生成一个Hash值,就很(hěn)快(kuài)生成一个新(xīn)区块,即没有任何难度。
每个区块里都有一个时间戳,当两个区块(kuài)的生(shēng)成间隔(gé)小(xiǎo)于10分钟时,难度就会(huì)增大,开始(shǐ)要求(qiú)Hash值(zhí)的前(qián)多(duō)少位为零(líng),这样运算量就会增加;当两个区块的生成间隔(gé)大于(yú)10分钟时,难度就会降低。
由于比特(tè)币价格在上涨,所以比特币的运算难度不断(duàn)增大。正是因为持续不(bú)断地调整难度,才使区块(kuài)的平均生成时间保持在10分(fèn)钟。
版权申明:本内容(róng)来自于(yú)互联网(wǎng),属第三(sān)方汇集推荐平(píng)台。本文的(de)版权归原作(zuò)者所有,文章言论不代表链(liàn)门户(hù)的观点,链门户(hù)不承担(dān)任何(hé)法律责任。如有侵权请(qǐng)联系QQ:3341927519进行反馈。