区块链基本原理

李睿智

学号19021211293

转载自https://blog.csdn.net/weixin_42634787/article/details/103190729

【嵌牛导读】区块链技术是在多方无需互信的环境下,通过密码学技术让系统中所有参与方协作来共同记录维护一个可靠的数据日志的方式。

【嵌牛鼻子】区块链、密码学、数据日志

【嵌牛提问】区块链技术如何从数据结构、节点如何工作、密码学原理的知识解释?

【嵌牛正文】

1 数据结构

从狭义的定义来说区块链是一个可以记录多方资金的往来记录、物品交换记录的公共账本,是包含一系列交易和信息的数据块以顺序相连的方式组合成的链式数据结构。

1.1 哈希指针(Hash Pointer)

链上各个区块通过哈希指针相连,除了第一个被最早构建的区块(Genesis Block),每个区块都有指向前一个区块的哈希指针,它不仅指向前一个区块的地址,还存储其哈希值。一个简单的区块链如图1所示,H()是把前面整个区块的内容取哈希包括它的哈希指针。通过这样的数据结构能够实现防篡改日志(tamper-evident log),好处是只要记录最后的哈希值,就可以检测出区块链中任何部位的修改,不论是在哪个部位做了改动,最后都会导致最后的哈希值发生变化。

1.2 区块

每个区块的大小不能超过1M,包括两个部分:区块头(Block Header)和区块体(Block Body)。

1.2.1 区块头

区头包括以下6个部分:

1)版本号(Version):4个字节,用来标识交易版本和所参照的规则,例如Windows7、安卓9.0。

2)前一区块的哈希值(Hash of previous block header):32个字节,通过对前一个区块的区块头数据进行哈希计算得出,使得每个新挖出的区块都按秩序接在前一个区块的后面。

3)根哈希值(Merkle root hash):32个字节,区块链中的交易被组织成为默克尔树结构,交易均被存储在默克尔树的叶子节点上,通过两两合并哈希直至得到根节点的哈希值。

4)时间戳(Time):4个字节,用于记录区块的封装时间,保证数据的不可篡改性,具备数据溯源功能。

5)随机数(Nonce):4个字节,挖矿就是找对应的随机数,它是矿工完成工作量证明算法时的输入,也是矿工获取奖励的凭证。

6)难度值(Target):4个字节,挖出区块的难度目标,通过输入不同的随机数,使生成区块的哈希值小于等于目标域值。

1.2.2 区块体

区体主要包括一系列的交易列表,所有交易均被组织成默克尔树结构(Merkle Tree)。树的叶子节点存储的是数据信息的哈希值,非叶子节点的存储是对其下面所有叶子节点的组合进行哈希计算后得出的哈希值。默克尔树结构可以快速验证交易的有效性,并大幅减少节点的存储空间。

1.3 比特币(BTC)系统中的数据结构

2 节点

区块链具有去中心化的特性,去中心化的应用就是由很多台服务器管理存储信息,并且相互验证。节点就是去中心应用中的服务器。节点的数据一般存储在磁盘中,区块链通过特定的数据库来访问磁盘中的数据。

2.1 节点的分类

比特币网络中区块链的节点分为全节点(Full node)和轻节点(Light node)。

2.1.1 全节点

全节点包含区块头和区块体,职责如下:

1)一直在线。

2)在本地磁盘上维护完整的区块链信息。

3)在内存里维护UTXO(Unspent Transaction Output)集合,以便快速检验交易的正确性。

4)监听网络上的交易信息,验证每个交易的合法性(有无合法的签名,是不是双花攻击)。

5)决定哪些交易会被打包到区块里。

6)监听别的矿工挖出来的区块,验证其合法性,从三个方面验证:每个交易是否合法、区块头的难度目标域值是否设置正确、检查这个区块是否在延伸最长合法链。

7)挖矿,沿着最长合法链挖;当出现分叉时,选择最先听到的分叉挖下去。

2.1.2 轻节点

轻节点只包含区块头,职责如下:

1)不是一直在线。

2)不用保存整个区块链,只保存每个区块的块头。(跟存整个块大概差1000倍)

3)不用保存全部交易,只保存与自己相关的交易。

4)无法检验大多数交易的合法性,只能检验与自己相关交易的合法性。

5)无法检测网上发布的区块的正确性。(因为职责4)

6)可以验证挖矿的难度。

7)只能检测哪个是最长链,不能检测哪个是最长合法链。(因为职责4)

2.2 节点的小结

网络上大部分节点都是轻节点,只需转账,无需挖矿。轻节点默认全节点挖出的块里的交易都是合法的,因为挖矿的代价太大,需要大量的工作证明,如果区块里有非法的交易,就相当于白挖了。

3 密码学原理

为保证账本的完整性、公开性、隐私保护、不可篡改、可校验等一系列特性,区块链技术高度依赖密码学。

3.1 哈希函数

哈希函数是将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。

主要有两个特性:

1)抗碰撞性(collision resistance)

有必要说下什么是哈希碰撞,哈希碰撞就是两个不同的输入,算出的哈希值是一样的。如:x!=y,H(x)==H(y)。

2)不可逆性(Hiding)

x→H(x),单向不可逆。已知H(x), 得到x的概率极低。

挖矿就是找nonce,使得H(block header)<=target(目标域值),目标域值和整个输出空间如图3所示:

3.2 加解密

区块链中常用椭圆曲线选取群,进而根据求解离散对数困难问题来构造非对称密码学的公私钥。加密和解密都是用的接受方的公钥和私钥。公钥不用保密,链上所有人都可知道;私钥需保密,只有自己知道。

比如:发一份邮件,我用你的公钥加密,你收到后再用你的私钥解密,同样的回复邮寄,你用我的公钥加密,我接收后再用自己的私钥解密。

3.3 数字签名

签名用的是私钥,验证签名用的是公钥。具体来说是指私钥持有者对消息m进行哈希运算得到H(m),并用私钥对H(m)加密生成签名s,将消息m和签名s发送给其他人,其他人用发送者的公钥对签名s解密,得到H’(m),对消息m进行哈希运算H(m),然后通过对比H’(m)与H(m)是否一致判断验签是否成功。

3.4 身份管理

公钥或公钥哈希被视为用户在区块链中的身份,从用户的角度来看,私钥是一串杂乱无章的字符串。

创建比特币账号只需本地创建一对公私钥(比特币系统采用椭圆曲线数字签名算法产生用户的公私钥对),公相当于银行卡号,私钥相当于密码。

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

推荐阅读更多精彩内容

  • 原文地址 https://mbinary.coding.me/introduction-to-bitcoin.ht...
    mbinary阅读 5,050评论 0 4
  • 1 货币的演变——从贝壳到比特币 当社会分工产生之后,人类就产生了商品交换的需求。在货币被发明之前,人类是以以物换...
    longlee阅读 7,590评论 1 23
  • 一、架构 认识区块链,让我们从最开始的比特币开始。 比特币本质上来讲,是一个全球统一的分布式账本,记录着所有的交易...
    曾二爷耶阅读 855评论 0 3
  • 这里没有诗和远方,只有苟且! 一人一包一张票, 一城一景一心情, 一地一游一行程, 一心一意一辈子; 背上背包,踏...
    不变的永恒阅读 171评论 0 0
  • 常考的200个千古名句!快给孩子收好,用在作文必是加分项 | 精选4月10日苏轼曾说:粗缯大布裹生涯,腹有诗书气自...
    陆陆壹柒阅读 319评论 0 0