北大肖臻老师<<区块链技术>>笔记1

这篇具有很好参考价值的文章主要介绍了北大肖臻老师<<区块链技术>>笔记1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

课程的大纲

  1. 密码学基础
  2. 比特币的数据结构
  3. 共识协议和系统实现
  4. 挖矿算法和难度调整
  5. 比特币的脚本
  6. 软分叉和硬分叉
  7. 匿名和隐私保护

以太坊是后面的

首先是密码学基础的学习:

crypto-currency(虚拟货币)是不加密的,区块链上所有的教以都是公开的。其中有转账金额和地址。

cryptographc hash function(密码学哈希函数)特点

1.collision resistance 哈希碰撞 (目前无法避免的)

例如:有两个值x和y,其中x!=y,但是hash出来的值H(x)==H(y),这样就是发生了哈希碰撞(collision resistance)。

输入的数值样式可以有很多,无限个。但是哈希函数出来的值是有限个的。可以用来检测数据是否被进行了更改。hash值如果进行了更改就会与原来的值对不上。

没有什么高效的方法去制作人为的哈希碰撞。如果知道一个y,没有特定的寻找x的方法使得H(x)==H(y),只可以使用brute-force(蛮力),一个个去寻找。

目前没有那个哈希函数能在数学上证明是哈希碰撞的。

但是以前MD5刚开始也是认为是哈希碰撞的。但后来人们找到可以人为进行碰撞的方法,所以它并不安全。

2.hiding 单向不可逆

例如:知道一个x,可以计算H(x)。但是知道H(x)却计算不出来x。

因为每一个都可以进行蛮力求解,所以hiding成立需要输入的结果的空间足够的大,这样可以保证每种可能性都大致相同。

其中collision resistance(哈希碰撞)+hiding(单向不可逆)

可以生成digital commitment(数字委托)或者说是digital equivalent of a sealed envelope(数字等效)类似于可以提前把结果放在公证人哪里,等结果出来与之对比。

在hash函数这里就是对数据进行加密,因为hiding的性质,当hash函数加密之后的数据进行更改的时候,就没有办法解密成原来的样子(用到了 collision resistance性质)。

但是如果输入的数据样本过少,可以在后面加上nonce(随机数),这样增大输入空间保证hiding的性质。

3.比特币中的哈希函数往往还有性质3

3.puzzle friendly (没有捷径)

意思是如果你想计算出来的哈希函数满足某些条件或者是某种范围,你没有捷径,puzzle friendly只可以一个个的去尝试。

比特币挖矿的过程就是去寻找一个nonce(随机数),随机数加上区块块头中的其他信息合并在一起作为输入,取得哈希值要小于特定的值。

所以因为有puzzle friendly这个性质使得挖比特币得过程是没有捷径得,只可以一个个得去尝试。

这里提到一个proof of work表示的是挖矿中得工作证明。

可能第一个性质和第三个性质容易搞混

第三个性质(puzzle friendly)意思是无法人为得去获取特定(特征值)得哈希值。

第一个性质(collision resistance) 意思是无法人为的创造哈希碰撞。

这里也有一句话 difficult to solve,but essay to verify

虽然找到一个符合要求的nonce很难,但一旦找到之后去证明是否正确是很简单的,只需要进行一遍计算即可。

SHA-256

比特币使用的哈希函数 SHA-> secure hash algorithm

对称和非对称加密体系

对称是加密和解密用的同一个密钥。

非对称是有一对(public key,private key)

加密利用公钥,解密利用私钥。这里注意加密和解密都要使用的是接收方的公钥和私钥。

比特币签名

因为加密货币是不加密的,需要非对称加密进行签名。意思是比特币的交易是谁发起的,例如用户A用自己的私钥对交易进行签名,其他用户拿到交易信息之后利用A的公钥去验证签名的正确性。

比特币中的签名一般是先对内容取一个哈希,然后再签名。

而且私钥和公钥重复概率极低,目前没有出现。

2022.5.29学习内容总结文章来源地址https://www.toymoban.com/news/detail-788477.html

到了这里,关于北大肖臻老师<<区块链技术>>笔记1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[27]以太坊-反思

    目录 一、智能合约的反思         1.Is smart contract really smart?         2. Irrevocability is a double edged sword.         3. Nothing is irrevocable. 二、语言设计上的反思         1.Is solidity the right programming language?         2.编写智能合约的语言应该有什么样的表达力? 三

    2024年01月20日
    浏览(55)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[20]以太坊-权益证明

    目录 一、为什么要转入权益证明         1.比特币系统的相关数据          2.以太坊的统计数据         3.比特币和以太坊当成一个国家 二、思考         1.矿工为什么要挖矿?         2.为什么要给矿工这些收益,这些出块奖励呢?         3.矿工具体

    2023年04月25日
    浏览(42)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[21]以太坊-智能合约-1

    目录 一、什么是智能合约 二、智能合约的代码结构         1.Solidity语言         2.bid函数         3.fallback()函数  二、外部账户如何调用智能合约 三、一个合约如何调用另一个合约中的函数         1.直接调用         2.使用address类型的call()函数      

    2024年02月05日
    浏览(44)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[17]以太坊-GHOST协议

    目录 一、以太坊的出块时间及可能带来的问题         1.以太坊的出块时间         2.以太坊与比特币系统的平均出块时间对比         3.带来的问题 二、GHOST协议         1.GHOST协议的核心思想         2.GHOST协议的缺陷         3.改进后的GHOST协议    

    2024年02月09日
    浏览(51)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[23]以太坊-智能合约-3

    智能合约-1 智能合约-2 1.假设某个全节点要打包一些交易到一个区块里,这些交易里有一些是对智能合约的调用,那么这个全节点应该先执行完智能合约再挖矿,还是先挖矿获得记账权再执行这些智能合约?         在区块链中,如果有一笔转账交易发布上去,需要所有的全

    2023年04月23日
    浏览(44)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[25]以太坊-智能合约-5

    智能合约-1 智能合约-2 智能合约-3 智能合约-4 网上竞拍第二版:由投标者自己取回出价 (1)存在的问题         重入攻击,如果有黑客写了一个如下方程序会怎么样?         这个hack_bid跟前面的那个黑客合约hack_bid合约是一样的,通过调用拍卖bid函数参与竞拍,ha

    2024年03月11日
    浏览(63)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[22]以太坊-智能合约-2

    智能合约-1 目录 一、智能合约的创建和运行         1.智能合约的创建         2.汽油费         3.错误处理         4.嵌套调用 二、思考         1.GasLimit和GasUsed         2.以太坊中的GasLimit跟比特币的区别 1.智能合约的创建         智能合约 由一个外

    2024年02月19日
    浏览(49)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[15]以太坊-交易树和收据树

     目录 一、以太坊中的三种树 二、状态树、交易树和收据树的区别 三、交易树和收据树的用途         1.交易树和收据树的用途         2.如何实现复杂的查询操作         3.以太坊中Bloom Filter的用途 四、以太坊的运行过程        在以太坊中,存在三种基于树的

    2024年02月05日
    浏览(53)
  • [北大肖臻-区块链技术与应用笔记]第八节课——BTC 脚本

    比特币系统中使用的脚本语言很简单, 唯一能访问的内存空间就是一个栈 ,这点和通用脚本语言的区别很大。 这个交易有一个输入和两个输出,其中一个输出已经被花出去了,另一个没有被花出去。 输入脚本 输入脚本包含两个操作,分别将两个很长的数压入栈中。 输出脚

    2024年01月21日
    浏览(68)
  • [北大肖臻-区块链技术与应用笔记]第八节课——BTC 分叉

    state fork 如果两个节点差不多同时挖到一个区块,这两个区块都是挂在当前的区块上的,不同节点先收到的区块不同,就会各自沿着先收到的区块往下扩展,这种时候就会出现临时性的分叉,称为 state fork ,即由于对区块链当前的状态有意见分歧而产生的分叉。 分叉攻击(

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包