Skip to main content

What is blockchain?

什么是链

根据 WikiPedia 对于区块链的定义是

每一個區塊包含了前一個區塊的加密雜湊、相應時間戳記以及交易資料(通常用默克爾樹(Merkle tree)演算法計算的雜湊值表示, 這樣的設計使得區塊內容具有難以篡改的特性。用區塊鏈技術所串接的分散式帳本能讓兩方有效記錄交易,且可永久查驗此交易。

chain

我们用上一章学到的知识来讲述一下这个知识点吧,首先我们的 pow 就是要算出一个 Hash 值,这个值要能够达到我们的要求。而为了达到这个值, 我们需要预先提供一个初始值给我们的 hash 函数,之后每过一个回合,我们的软件就会随机加上一个新的数值,这个叫nonce,这样我们就 可以算出一个新的值了。回到之前的例子,看到没有在 iteration 是 0 的时候我们的 current Hash 是有的,这个是当前你的电脑的时间的 hash 后的值。 因此每次刷新都会不同这个值。

之后我们可以通过改变这个现有的数学问题,让电脑可以不断的产生新的问题。譬如现在问题来了,我们下一个的答案需要根据上一个的答案来计算。 什么意思呢

初始值1

之后我们要寻找结尾有 1 个 0 的数值,同时需要用 1 作为开始的 hash 数值

hash(1 + ?) = 结尾有1个0的数值?
假如问号为11

之后我们要寻找结尾有 2 个 0 的数值,同时需要用 11 作为开始的 hash 数值

hash(11 + ?) = 结尾有2个0的数值?
假如问号为111

之后我们要寻找结尾有 3 个 0 的数值,同时需要用 111 作为开始的 hash 数值

hash(111 + ?) = 结尾有2个0的数值?

就这样,我们每次的新的结果都是根据前面的答案为蓝本进行计算,这样一个链就形成了。注意,我们将第一个的初始值的区块 称为创世块。下面这个 demo 将会介绍基础区块链。