在B站看北京大学肖臻老师《区块链技术与应用》公开课。这边做一下学习笔记,这一节肖老师介绍,BTC中协议。
词条§
- double spending attack
- create coin (铸币交易)
- coinbase transaction
- bitcoin script
- distributed consensus
- distributed hash table
- impossibility result
- CAP theorem
- Paxos
- consensus in Bitcoin
- sybil attack (女巫攻击)
- longest valid chain
- forking attack
- orphan block
- block reward
思考§
央行用央行的私钥签发一个100元数字货币,普通人用央行的公钥去验证真伪。这样的货币是否可行? – 不可行,存在双发攻击(double spending attack),数字货币不能伪造,但是可以被复制,这样就可以发多次。
上面的法案加上每个数字货币有编号在央行记录每个编号在谁手里,支付的时候到央行确认。 – 方案可行,但是每次交易都要央行确认太繁琐。
有没有办法解决每次要和央行确认的中心化方式 ,而又可以解决,双花攻击的问题? – 区块链可以,区块链可以追踪一个币的所有交易。
BTC的交易过程§
BTC交易包含两个部分,输出和输入,输入部分需要币的来源,输出部分需要给出收款人公钥的hash。在链上除了指向上一个区块的hash指针,还有指向前面某个交易的hash指针,来说明币的来源,这样子可以防止double spending。
转账交易,A需要有签名,还要给出公钥,还需要有B的地址。BTC中没有直接找到某人的地址的功能。B要知道A的公钥,区块链都需要知道A的公钥,用公钥计算出hash和来源的输出部分hash要一致,这个过程使用btc脚本验证。
区块结构§
Block Header
- revsion
- hash of previous block header
- merkle root hash
- target
- nonce
Block Body
- transaction list
取hash只需要对Block header 取hash就可以。
BTC中的共识协议§
BTC中假设大部分节点是合法的。
BTC使用算力投票机制,H(block header)<= target,只有取得规范的Hash值,节点才有记账权,由于取得合法区块比较难,Btc出块通常比较慢。
BTC要求在最长合法链上接收区块。
当两个节点同时发布一个合法区块,这样子的区块会保持一段时间,当下一个区块出来,最长的链会保持,另外一个会丢弃。
出块奖励§
每过21w区块,出块奖励就减半。
评论