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

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

北京大学肖臻老师《区块链技术与应用》公开课_哔哩哔哩_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. 输出部分要给明收款人公钥的哈希

铸币交易

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值