区块链记账原理

区块链结构

区块链是由一个个区块构成的有序列表,每一个区块都记录了一系列交易,并且每一个区块都指向前一个区块从而形成一个链条。

区块链有以下几个特征:

  • 区块链就是一个不断增长的全网总账本
  • 每个节点都拥有完整的区块链
  • 节点总是信任最长的区块链
  • 伪造区块链需要拥有超过51%的全网算力!


    区块结构图.png

    每一个区块上都有一个hash标识:区块hash,同时该区块通过记录上一个区块的hash来指向上一个区块。区块还有一个Merkle hash用来确保该区块的所有交易记录,无法被篡改。区块的主要数据是交易记录。第一条记录Coinbase是矿工的挖矿奖励,后面的交易都是用户的交易。

区块链具有不可篡改的特性,是由哈希算法保证的。

什么是哈希算法/Hash:

  • 哈希算法是一个单向函数:h = H(x)
  • 它把任意长度的输入数据转化为固定长度的输出

MD5加密结果如下:

MD5("version1") = "966634ebf2fc135707d6753692bf4b1e";
MD5("version2") = "2e0e95285f08a07dea17e7ee111b21c8";

安全哈希算法的特点:

  • 单向函数:
  1. 通过输入可以很容易的计算输出
  2. 通过输出无法反推输入,只能暴力穷举
  • 碰撞率低:
  1. 如果X 不等于 y,而H(x) = H(y),则发生了碰撞。
  2. 因为输入数据的长度是不固定的,所以输入数据是一个无限集合,而输出数据的长度是固定的,所以是一个有限的集合。这样就必定会出现不同的输入导致相同的输出。当无限集合映射到有限集合时必定会出现碰撞。碰撞的概率和集合的大小有关,输出的hash位数越多,集合就越大,碰撞的概率就越低。
  • 输出无规律:输入数据任意一个bit的改动,会导致输出完全不同,从而让攻击者无法猜出输入,只能依靠暴力穷举。

哈希算法的作用:
假设我们相信一个安全的哈希算法:如果H(x) = H(y),则x = y

  • 如果两个文件的hash相同,说明文件没有被修改过
  • 如果两份数据的哈希相同,说明两份数据相同
  • 比特币是用哈希算法来记录所以的交易不可修改,就是计算并记录交易的哈希,如果交易被篡改,那么hash验证就不会通过,说明这个区块是无效的。

常用的哈希算法:

算法 输出长度
MD5 128bit : 16bytes
RipeMD160 160bit : 20bytes
SHA-1 160bit : 20bytes
SHA-256 256bit : 32bytes
SHA-512 512bit : 64bytes

比特币使用两种哈希算法:

  • 两次SHA-256
  1. hash256 = sha256(sha256(data))
  • 先计算SHA-256,再计算RipeMD160
  1. hash160 = ripemd160(sha256(data))
    区块头结构图.png

    Merkle Hash:记录了本区块所以的Hash。

假设这个区块有5笔交易,首先,对每一笔交易进行第一hash,也就是2次SHA-256的运算,得到5个哈希值,也就是a1、a2、a3、a4、a5,这五个哈希值也可以看做是数据,将a1和a2拼起来、a3和a4拼起来,再计算出2个哈希值b1和b2。那a5怎么办呢?答案是将a5复制一份在与a5拼起来进行哈希计算得到b3;继续将b1和b2拼起来进行哈希运算得到c1,同样的b3会被复制一份再与b3拼起来进行哈希运算得到c2;最后将c1和c2拼起来进行哈希运算得到最终的哈希值,这个哈希值就是Merkle Hash。

从Merkle Hash的计算方法可以得出结论:修改任意一笔交易,哪怕是一个字节,或者交换两个交易的顺序,都会导致Merkle Hash验证失败,也就会导致这个区块本身是无效的。所以Merkle Hash记录在头部,它的作用就是保证交易记录永远不能够被修改。

区块本身用Block Hash来标识:Block Hash是区块唯一标识。一个区块的hash并没有记录在区块头部,而是通过计算区块的hash得到的。

区块的Prev Hash记录了上一个区块的Hash,这样就可以通过Prev Hash追踪到上一个区块,由于下一个区块的Prev Hash又会指向当前区块,这样每一个区块的Prev Hash都指向上一个区块,这些区块串起来就形成了区块链。如果一个攻击者恶意攻击了某一个区块的交易记录,那么这个区块的Merkle Hash验证就不会通过,所以攻击者只能重新计算Merkle Hash,然后把区块头的Merkle Hash也修改了,但是这个区块本身的Hash已经改变,那么下一个区块指向该区块的链接也断掉了。由于比特币区块的hash必须满足一定的难度值,所以攻击者只能把后面所以区块全部重新计算,并且伪造出来,才能修改整个区块链。

修改一个区块的成本已经非常高了,如果要修改整个区块链,那么其成本非常非常的高昂。在比特币网络中,伪造区块链需要拥有超过51%的全网算力。所以比特币网络运行了6年,从来没有被攻破过。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容