区块链理论入门(自用,待补充)

Posted Cyni_c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链理论入门(自用,待补充)相关的知识,希望对你有一定的参考价值。

基于北大肖臻老师课程的简单笔记

北京大学肖臻老师《区块链技术与应用》公开课_哔哩哔哩_bilibili

区块链

一.比特币(交易过程公开)

1.密码学原理

1.哈希函数(crytogrphic hash function)

哈希碰撞(collision resistance)

  1. 例如x≠y H(x)=H(y) 两个不同的输入,输出却是相等的,这就称哈希碰撞

  2. 由于鸽笼原理,哈希碰撞不可避免

  3. 可用于对一个message,求digest,因为找不到一个m1,使得H(m),与H(m1)相等。防止项目被篡改

  4. 通过比较项目或文件的哈希值,可以确定是否数据被进行了修改

  5. 不可以人为制造

hiding

  1. 哈希函数的推出关系不可逆,即可由X推出H(X),但逆过程不可以成立

  2. 与哈希碰撞结合形成digital commitment

  3. 前提:输入空间大,输入内容均匀。不满足时对于x后加一个随机数再取hash H(X||nonce)

digital commitment(digital equivalant sealed envelop)

sealed envelop

  1. 将结果密封,在需要时使用

digital equivalent sealed envelop

  1. 将预测结果设为x,求出其哈希值,并发布,又因为hiding性质x不可知,且由于哈希碰撞,结果篡改时,会与之前的哈希值不符,以此避免篡改

puzzle friendly

  1. 哈希值的计算事先不可预测,若得到目标哈希值,只能依次遍历所需输入

  2. 挖矿的过程:取一个随机数(nonce),nonce跟区块的块头里的其他信息合一起作为输入并将其取哈希,使其得到的哈希值小于目标哈希值,H(block header)≤target,没有捷径,只能大量尝试

  3. diffcult to solve but easy to verify:验证容易,挖矿难

SHA-256(Secure Hash Algorithm)比特币中使用的哈希函数

2.签名

1.比特币中账户

  1. 去中心化:开户时由用户自行决定(创立一个公钥,与私有=钥的对)

  2. 非对称加密体系:

    1. 公私钥对的来源

    2. 对称加密体系:加密与解密的密钥相同(安全的情况下)

    3. 非对称:加密使用公钥,解密使用私钥(均为接收方)

    4. 好处

      1. 公钥:无需保密可公开(相当于银行账号)

      2. 私钥:保存本地无需使对方得知(相当于密码)

      3. 安全性得到保障,解决了密钥分发不方便

    5. 进行交易时:验证签名使用私钥,发布签名时使用公钥、

    6. 公私钥对产生极其随机,难以被轻易破解

  3. 产生源要有好的随机源,无论是公钥还是私钥,依次防止泄露信息

2.数据结构

区块链

本质:链表

哈希指针

  1. 普通指针:结构体在内存的地址

  2. 哈希指针:储存结构体的地址与哈希值,可以得知数据是否被篡改

  3. 哈希指针只能在直链情况下使用,否则会发生循环依赖

  4. 区块链本质也是链表:

    1. 用哈希指针代替了普通指针

    2. 第一个产生的区块:genesis block

    3. 每一个区块都有一个指向前一个区块的哈希指针,最后一个生成的保存在系统中

    4. 好处:是将每一整个区块的所有内容放在一起取的哈希值,包括哈希指针,可由此实现tamper-evident-log,改动任意一个区块,后续所有区块的哈希值均要改变,包括系统中储存的哈希值既只要知道最后一个哈希值,就可以判断之前是否出现了修改

    5. 可以降低某些节点中保存的数据数与区块数

  5. merkle tree:用哈希指针代替了binary tree中的指针,其中每一个节点为一个哈希指针,最下层为数据块。最上方的为根哈希值

    1. 好处:只要掌握根哈希,则能检测出下方的任何修改

        1. 每一个区块上的交易会组成一个merkle tree

        2. 一个区块可分为块头(block header)与块身(block body)

    2. 用途:(base算法:二叉树)

      1. 产生merkle proof

        1. 全节点:保存整个区块的内容

        2. 轻节点:只保存block header

        3. merkle proof:从交易发生的区块到根节点的所有区域(问题:交易发生在两个对象间,是否产生两条merkle proof)

        4. 流程:

3.协议

1.传统数字货币的缺陷

二次使用问题

  1. 数字货币本质是文件,可以被复制,然后可以被任意消费

会产生通货膨胀

效率低下

  1. 需要为中心发行的货币做上标记,才能避免二次使用问题

区块链的引用

  1. 区块链的加入,使得数字货币可由用户一起来维护,防止出现"二花问题"

  2. 比特币的交易,包含输入与输出两种

    1. 输入需要标注币的来源(用哈希指针指向前一个交易)

    2. 输出部分要给明收款人公钥的哈希

铸币交易

以上是关于区块链理论入门(自用,待补充)的主要内容,如果未能解决你的问题,请参考以下文章

最新理论 | 国内外区块链关键技术现状及差异

基于区块链技术的超级账本(Hyperledger) - 从理论到实战

区块链研究的最新进展理论建模和工具笔记

在线诉讼区块链证据规则的理论逻辑与制度体系

区块链符号理论:符号方案和符号系统

资源分享挖矿教程软件数字货币区块链实用技术基础理论比特全套视频课程