一、State fork(状态分叉)State fork:对比特币当前的状态有分歧造成的分叉,比如两个区块几乎同时生成,造成的分叉
Forking attack 也属于 state fork,但是是人为故意的,所以也叫做 deliberate fork(故意分叉)
二、Protocol fork(协议分叉)Protocol fork:比特币的协议发生改变(通过软件升级),有些节点由于各种原因...
本节课较多用到 PPT 上的动画,视频链接如下:
https://www.bilibili.com/video/BV1Vt411X7JF?spm_id_from=333.788.player.switch&vd_source=69ac93649ea21c4726fe85f272b6d968&p=9
比特币使用的编程语言很简单,内存空间只有一个通用的堆栈
上述的输入脚本包含2...
一、全节点1、一直在线2、在本地硬盘上维护完整的区块链信息3、在内存里维护 UTXO 集合,以便快速检验交易的正确性UTXO(unspent transaction output)
4、监听比特币网络上的交易信息,验证每个交易的合法性(1)是否有合法的签名
(2)是不是 double spending
5、决定哪些交易会被打包到区块里缺省状态下,只要是合法交易、并且交易费符合要求,就会被打包...
一、挖矿难度和目标域值H(block header) ≤ target
调整挖矿难度,就是调整目标空间 在整个输出空间中所占的比例,通俗地说,就是哈希值的前面有多少 0
比特币使用的哈希算法是 SHA-256,整个输出空间是 2^256 个可能的取值
挖矿难度和目标域值成反比:
difficulty_1_target:挖矿难度等于1时,对应的目标域值(挖矿难度最小就是1),此时的目标域值很...
一、网络层级顶层是 application layer,运行着 BitCoin 和 Block chain 协议;底层是 network layer,运行着 P2P Overlay Network
比特币的 P2P 网络很简单,所有节点都是平等的,不像有的网络有 super node / master node
二、加入/离开网络加入网络前,需要和 seed node(种...
比特币采用 transaction-based ledger(基于交易的账本)模式,每个区块中记录交易信息(转账交易、铸币交易),系统上不记录交易信息
一、UTXO比特币的全节点要维护一个数据结构 UTXO(Unspent Transaction Output,所有未被花出去的交易的输出 组成的集合)
一个交易可能有多个输出,即用户可以在一次交易中同时向多人转账(可以节省手续费)
比如:A ...
一、Double spending attack(双花攻击)双花攻击指同一笔资金被重复支付的情况,也是数字货币面临的主要挑战
中心化解决方案:数字货币上添加唯一编号,并由央行维护一个数据结构,展示每个编号的货币由谁持有;如果付费方的货币在表中对应的持有人与此人不符,则证明该货币已支付给其他人
去中心化的解决方案:比特币
关注:货币的发行(挖矿)、交易的有效性验证(防范双花攻击)
二、交易的有...
一、Hash Pointers(哈希指针)哈希指针除了地址之外,还要保存地址的哈希值,用于检测结构体的内容是否被篡改
Block chain is a linked list using hash pointers.
区块链中的第一个区块叫 genesis block(创世区块),其 height(高度)为 0;最后一个区块叫 most recent block
后一个区块中的哈希指针是对...
Crypto-currency(加密货币)
区块链和比特币主要用到:哈希函数 和 数字签名
一、Cryptographic Hash Function(哈希函数)区块链用到了哈希函数的 抗碰撞性 和 隐私性;比特币除了这两个性质,还要求 谜题友好性
(1)Collision resistance(抗碰撞) x≠y, H(x)≠H(y) 给定一个x,没有高效的方法找到一个y,满足H(x)...
本课程主要讲:比特币和以太坊 两种加密货币
视频链接:
https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click&vd_source=69ac93649ea21c4726fe85f272b6d968