北京大学肖臻老师《区块链技术与应用》公开课(P1 - P3)学习笔记

159baa24097549409e27935b82bed57c.png

目录

​编辑

一、课程简介(P1)

(一)课程大纲预览

(二)学习意义与目标

二、BTC - 密码学原理(P2)

(一)哈希函数特性

(二)数字签名原理与应用

(三)比特币账户创建方式

三、BTC - 数据结构(P3)

(一)哈希指针与普通指针区别

(二)区块链结构特点

(三)默克尔树(Merkle Tree)结构与作用

一、课程简介(P1)

(一)课程大纲预览

比特币

密码学基础,如哈希函数和数字签名的原理及应用;

比特币的数据结构,包括区块链、区块头、区块体以及默克尔树等;

共识协议和系统实现,如工作量证明(PoW)机制、挖矿算法和难度调整等;

比特币脚本的功能与应用场景;

软分叉和硬分叉的区别、原因及影响;

研究比特币的匿名性和隐私保护机制,包括其原理、面临的挑战以及相关技术手段(如零知识证明、同态隐藏等)。

以太坊

以太坊基于账户的分布式账本特点;

以太坊的数据结构,如状态树、交易树、收据树等;

介绍GHOST协议及其在以太坊中的作用;

阐述以太坊的挖矿机制,包括memory - hard mining puzzle、挖矿难度调整以及权益证明(PoS)相关内容(如Casper the Friendly Finality Gadget - FFG);

深入学习以太坊智能合约的开发、部署与应用场景;

对以太坊及区块链技术的发展进行总结与展望,探讨其未来趋势、面临的挑战以及潜在的创新方向。

(二)学习意义与目标

学习本课程有助于深入理解区块链技术的核心概念、技术原理和应用场景,无论是对于计算机科学、经济学、金融学等相关专业的学生,还是对区块链技术感兴趣的从业者,都能在课程中获取到系统的知识体系,为进一步研究、开发或投资区块链相关项目奠定坚实的理论基础。

二、BTC - 密码学原理(P2)

(一)哈希函数特性

  1. 单向性(hiding)
    • 哈希函数计算过程不可逆,即已知哈希值难以反推出原始输入数据。这一特性在比特币中用于保护用户数据隐私,例如,在区块链中存储交易数据的哈希值,而不直接存储原始交易数据,使得即使攻击者获取了哈希值,也无法轻易还原交易内容。
  2. 抗冲突性(collision resistance)
    • 几乎不可能找到两个不同的输入,使得它们经过哈希函数计算后得到相同的哈希值。在比特币系统中,区块头包含了前一区块的哈希值,任何对区块数据的篡改都会导致哈希值的改变,由于抗冲突性,攻击者很难找到一个新的输入(篡改后的区块数据)来产生与原始哈希值相同的结果,从而保证了区块链数据的完整性和一致性。
  3. 谜题友好性(puzzle friendly)
    • 哈希值的取值范围事先不可预测,挖矿过程中,矿工需要不断尝试不同的随机数(nonce),使得区块头的哈希值满足特定条件(小于目标阈值),这一过程只能通过暴力计算来实现,无法通过捷径或预测来找到合适的nonce,从而保证了挖矿的公平性和随机性。

 

 

(二)数字签名原理与应用

  1. 公私钥对生成与作用
    • 在比特币系统中,用户通过非对称加密技术生成公私钥对。私钥由用户保密,用于对交易进行签名,证明交易的发起者是私钥持有者;公钥则公开,用于验证签名的有效性。例如,当用户A向用户B发送比特币时,A使用自己的私钥对交易进行签名,B及其他网络节点可以使用A的公钥来验证该签名,确保交易确实是由A发起,且交易内容在传输过程中未被篡改。
  2. 数字签名在交易中的流程
    • 发送者在交易中附上自己对交易数据的数字签名,接收者收到交易后,首先使用发送者的公钥对签名进行验证。如果验证通过,则说明交易数据在传输过程中未被篡改,且发送者确实是该公钥对应的私钥持有者,即交易的合法拥有者。这一过程有效地防止了交易伪造和篡改,保障了比特币交易的安全性和可信度。

(三)比特币账户创建方式

  1. 公私钥对与账户关系
    • 用户在本地创建一个公私钥对,该公私钥对就构成了比特币系统中的一个账户。公钥可以理解为账户的“地址”,用于接收比特币;私钥则是控制账户资金的关键,只有拥有私钥的用户才能对账户中的比特币进行操作,如发送交易、签署合约等。
  2. 创建过程中的随机源重要性
    • 由于公私钥对的安全性直接关系到账户资金的安全,因此在生成公私钥对时需要良好的随机源。如果随机源不够随机,可能会导致私钥被攻击者猜出或通过暴力破解手段获取,从而使账户资金面临风险。例如,如果使用可预测的随机数生成公私钥对,攻击者就有可能通过分析随机数的规律来推导出私钥,进而窃取账户中的比特币。

 

三、BTC - 数据结构(P3)

(一)哈希指针与普通指针区别

  1. 存储内容差异
    • 普通指针存储的是某个结构体在内存中的地址,通过该地址可以直接访问结构体的数据。而哈希指针存储的是结构体的哈希值,通过哈希值无法直接获取结构体的数据,但可以用于验证结构体数据的完整性。例如,在区块链中,哈希指针使得验证区块数据是否被篡改变得更加高效,只需比较哈希值即可,而无需逐个检查区块内的数据。
  2. 对数据篡改的检测能力
    • 普通指针无法直接检测其所指向的结构体数据是否被篡改,因为它只记录了数据的存储位置。而哈希指针由于其存储的哈希值与结构体数据紧密相关,任何对结构体数据的篡改都会导致哈希值发生变化。在区块链中,每个区块的哈希指针指向前一个区块的哈希值,形成了一个链式结构,如果某个区块的数据被篡改,其哈希值改变,会导致后续区块的哈希指针验证失败,从而很容易被发现,保证了区块链数据的不可篡改性。

(二)区块链结构特点

  1. 链式结构与数据完整性
    • 区块链是由一系列区块通过哈希指针连接而成的链式结构。每个区块包含前一区块的哈希值,这使得区块链具有很强的数据完整性保证。一旦某个区块的数据被篡改,其哈希值会发生变化,进而导致后续所有区块的哈希指针验证失败,因为后续区块的哈希值是基于前一区块的原始数据计算得到的。这种链式结构使得篡改区块链数据变得极其困难,因为攻击者需要同时篡改多个区块的数据,并重新计算相应的哈希值,这在计算上几乎是不可行的。
  2. 与普通链表的对比优势
    • 与普通链表相比,区块链的优势在于其数据的不可篡改性和可追溯性。普通链表可以随意修改其中的某个元素,而不会影响其他元素的结构和链接关系。但在区块链中,任何一个区块的修改都会影响整个链的结构,因为后续区块的哈希值依赖于前一区块的数据。此外,区块链的链式结构使得所有交易记录都可以被追溯,从任意一个区块开始,可以通过哈希指针依次向前查找,直到创世区块,从而清晰地了解每一笔交易的历史和来源,这为审计和监管提供了极大的便利。

(三)默克尔树(Merkle Tree)结构与作用

  1. 树状结构组成与层级关系
    • 默克尔树是一种二叉树状结构,最底层是数据块(在比特币中每个数据块代表一笔交易),上面三层内部节点都是哈希指针。叶子节点是交易数据的哈希值,非叶子节点是其两个子节点哈希值的哈希结果,最终生成一个根哈希值(root hash)存储在区块头中。这种层级结构使得可以通过少量的哈希计算来验证大规模数据的完整性。
  2. 在交易验证中的高效性
    • 在验证某笔交易是否包含在区块中时,默克尔树提供了一种高效的验证方式。例如,假设要验证黄色tx在区块中,只需根据全节点返回的红色哈希值(从黄色tx到根哈希路径上的哈希值),计算出根哈希值,并与区块头中的根哈希值进行比较。如果相等,则说明该交易包含在区块中,且区块数据未被篡改。这种验证方式的复杂度为对数级,大大减少了验证交易所需的数据传输量和计算量,提高了交易验证的效率,尤其适用于比特币这样的分布式系统,其中节点需要频繁验证交易的合法性。

 

da87fefc56ea48149960b295adad547f.png


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值