bitcoin(2)

曾喜
2023-12-01

1.bitcoin共识协议(btc)

1」防范double spending
维护数据结构(blockchain)
例如:

  • 有铸币权(coinbase transition:create coin),第一bitcoin来源
  • 转账时(即每次交易):是需要注明
    —输入:bitcoin的来源 以及a的公钥
    —+电子签名 +
    —输出: 收款人地址(公钥的hash)
  • a给b转账,a需要b的 地址(转账)和b的公钥(解密)
  • a给b转账,b需要a的公钥,验证签名

2」bitcoin script
每个交易的输入(b的输入)是一个脚本,输出(a的输出)也是一个脚本
验证时,验证输出脚本是否与输入脚本一致

例如
a给b转账:
(b的输入)是一个脚本,输出(a的输出)也是一个脚本,
验证输出脚本是否与输入脚本一致

3.1」block header
—version:使用的协议
—hash of previous pointer:前一个区块的hash只算前一个的header
取得记账权之前就需要填入previous block header已确定,插在链中的位置
—merkle root hash
—target: 挖矿的难度
—nonce:
3.2」block body
—交易列表

4」全节点(full node)和轻节点(light node)

  • 全节点: 保存区块链的所有信息,验证交易(full validation node)
  • 轻节点:无法独立验证交易的合理性

分布式共识(distributed consensus)

1」分布式的哈希表(distributed hash table)
2」impossibility result:

  • FLP:在一个异步(asynchronous)的系统(:网络传输延迟没有上限)里,哪怕只有一个成员是有错误的(faulty),也无法达成共识

3」CAP Theorem:以下的三个性质最多只可以满足两个
cap为分布式系统的三个性质:
—C(consistency)
—A(availablity)
—P(partition tolerance)

4」PAXOS:最著名的协议

bitcoin的共识协议:

  • membership:谁有投票权

1」attack

  • sybil attack:(女巫攻击):当有了一个节点的时候,用一台超级计算机,不停的产生账户,当账户的数目超过网络的50%,则获得整个网络的控制权,可操作投票结果
    —所以无法使用投票来达成共识

  • forking attack

—情况一:在区块链中间安插一个block,使得原链上的交易失效;但此时须使用最长链原则

—情况二:当两个节点同时算出一个nonce(则会同时产生两个block),产生两个等长的分叉。按照自己接受的区块继续向下扩展,直到又一条链超过另一条,但此时须使用最长链原则,抛弃短的orphan block

何谓接受区块:即沿着这个区块继续向下扩展

2」计算力投票
pow: h(block hearder) <=target, 找到 nonce,满足前述条件
谁找到nonce,谁就可以有记账权(即谁的block就可连接到chain里面)。
其他节点可验证这个block
—此时使用:最长链原则
—可以防范sybil attack:账户数目增加,但算力(pow=hash rate)并没有增加)

3」出块奖励(block reward)
铸币交易(coinbase transaction):发行新的bitcoin的唯一方法

刚上线的时候每个铸币交易(即每一个发布的区块)可以产生50btc,
每210k个block之后,出块奖励减半(即产生25btc)
现在的出块奖励为12.5btc。

—争夺记账权的行为成为挖矿(mining),争夺计算权的节点被称为矿工(miner)

  • orphen block的出块奖励:是无效的
总结:bitcoin的共识协议即算力(hash rate)获得投票权,获得记账权

2.比特币系统的实现

1」transaction-based ledger

bitcoin网络的全节点需要维护UTXO数据结构(unspend transaction output)

  • 一个交易可能有多个输入以及多个输出:花掉的bitcoin不再UTXO
    (UTXO即用来存储已知没有进一步交易的bitcoin)
  • UTXO存储的内容包含: 产生这个交易的hash value,+ 以及他在这个交易中是第几个hash value
  • total input = total output + transaction fee
  • 当出块奖励变得很少之后,transaction fee变成主要的奖励
 例子:
height:区块的编号
difficulty:每个2016个需要调整难度,保证每10
min出一个块

我们除了可以改变nonce,还可以改变merkle root hash 中的coinbase值,扩大搜索范围,使得最终获得记账权

——account-based ledger(以太坊)现实每个账户上有多少个币

2」伯努利(bernoulli trial):一个二值结果的随机试验

  • bernoulli process:一系列的不相关试验:

——性质:无记忆性(memoryless):前面的结果对后面的结果无影响。

  • 可以用poisson process 来近似代替:出块时间是指数形式的(整个系统的出块时间)

progress free:在10min没有挖到block,则需要在等10min,与之前挖了多长时间没有关系——保证各个节点的公平性

  • geometric series

  • bitcoin is secured by minig

3」

  • irrevocable ledger不可篡改的账户: 等待six confirmation,才认为前一个block不可篡改
  • zero confirmation:

4」selfish mining:

 类似资料: