BTC -如何诞生

BTC

BTC是一种加密货币,其核心技术是区块链。区块链是一种分布式账本,通过共识机制来维护一个不可篡改的交易记录。
1. btc的发行
btc依靠挖矿奖励发行货币,区块链目标每10min生成一个新区块,并给予矿工BTC奖励。预计2140年发行完毕,届时总数量为2100万。

2. btc的用户交易
BTC的交易通过钱包进行,交易由用户A钱包生成,广播至比特币网络,旷工节点对交易进行验证,成功后进入交易池,等待旷工打包。这时会有很多旷工节点之间进行记账竞争,成功生成新区块的旷工会将交易信息打包进新区块中,并获得交易费btc(0.1%-0.3%)奖励。新区块后的6个区块也生成后,该交易被认为足够安全,不可逆转。

旷工的收入来源: 新区块奖励和BTC交易费(旷工帮助打包入账的费用)。
BTC特性: BTC去中心化机制使得BTC无法被关闭冻结,并且其破解难度经过时间证明难度极大。
BTC繁荣原因:

  • 现实世界存在大量的money laundering需求,使得BTC的相关市场规模不断扩大,大量的黑色资金通过BTC来洗白。
  • BTC作为一种虚拟加密货币,并且在这种货币的交易平台是区块链,那么BTC作为货币在交易什么呢?我们知道法定货币可以交易服务,物品等,对应的BTC其实是在交易法币。交易法币并不是BTC的初衷,而是市场对BTC的使用的需求。
  • 就像物品交易会衍生出期权,法币的交易就诞生了BTC合约。

0. 钱包和区块链的交互流程

  • 钱包查询UTXO:钱包软件连接全节点,钱包发送地址的公钥哈希,向节点请求UTXO,存储节点从UTXO集合中筛选出属于该地址的UTXO,返回给钱包,钱包计算UTXO总额,即账户余额。
  • 钱包创建交易并广播:钱包会选出足够的UTXO,生成交易(输入和输出,输入引用这些UTXO,两个输出,一个输出发送给收款人,另一个输出找零。),钱包使用私钥对交易进行签名,证明UTXO属于该用户。钱包将签名后的交易提交给存储节点。节点验证并广播(检查UTXO是否未被使用,验证签名正确性,若有效,节点广播交易到P2P网络,等待旷工确认)。
  • 交易确认:交易广播后,全节点会把交易存入内存池。旷工选择交易打包进区块,并解决工作量证明。一旦交易被旷工打包并挖出新区块,UTXO发生变化(旧UTXO被移除,新UTXO生成)。
你(买家) 卖家 比特币网络(存储节点) 矿工
| | | |
| 付款 USDT | | |
|------------>| | |
| | 创建交易 | |
| | 选取 UTXO | |
| |---------------->| |
| | | 验证 UTXO |
| | | 交易入 Mempool |
| | |---------------->|
| | | 矿工打包 PoW |
| | | 交易被确认 ✅ |
| | |<----------------|
| | | |
| |<----------------| |
| 你的钱包收到 3 BTC ✅ | |

1. 比特币整体架构

btc是一个去中心化数字货币系统,底层采用了区块链的技术。
区块链由一系列按时间顺序练级的区块组成,每个区块包含一定数量的交易记录,并通过密码学手段与前一个区块关联,从而形成一条不可篡改的链条。

  • 去中心化: 所有节点平等参与网络维护。
  • 分布式账本: 每个节点都存有完整或部分账本,实现信息共享和冗余备份。

2. 共识机制 ——工作量证明

BTC使用PoW算法作为共识机制,确保网络中所有节点就账本状态达成一致。

  • 工作量证明过程:
    • 矿工竞争: 各节点(矿工)争相计算一个满足难度目标(即哈希值低于目标值)的随机值(nonce)
    • 哈希运算:利用SHA-256算法对区块头进行hash,矿工不断改变nonce值直到找到符合条件的hash值。
    • 难度调整:为维持平均10分钟出一个区块的目标,比特币网络每2016个区块(约两周)调整一次挖矿难度。维持10min产生一个区块使得BTC区块链没有办法处理大批量频繁交易,比如:大型电商和金融机构的高频、大规模交易需求。
  • 安全性保证:PoW使得攻击者需要投入巨大计算资源才能篡改区块链,进而保证账本不可逆转。

3. 区块验证与交易结构

区块结构

每个区块包含两个主要部分:

  • 区块头(Block Header): 包含版本号、前一区块哈希、Merkle树根、时间戳、难度目标和随机数(nonce)。
  • 区块体(Block Body):包含一组交易记录。

交易验证与Merkle树

  • 交易构成:每笔交易记录了输入(UTXO,未花费输出)和输出(指定比特币地址以及金额)的信息,并通过数字签名保证合法性。
  • 数字签名: 采用椭圆曲线数字签名算法(ECDSA)确保交易只能由拥有相应私钥的用户发起,保证交易的真实性和不可否认性。
  • Merkle树:将所有的交易记录哈希后构建出一个Merkle树,其根哈希(Merkle Root)记录在区块头汇总。这种结构既能高效单个交易,又能保证区块中数据的一致性和完整性。

4. 分布式网络与区块传播

  • 点对点网络(p2p):比特币节点通过一个去中心化的p2p网络相互连接。
  • 区块和交易传播:当旷工发现新区块时,会广播给网络中其他节点,节点在验证后将新区块添加到本地账本;同样,同时发起的交易也通过网络广播,并被旷工打包进区块。
  • 防止双重支付:通过广播和全网共识,确保每笔交易只被交易一次,防止同一币被重复使用。

5. 激励机制与经济模型

  • 区块奖励:矿工成功挖到新区块后,会获得一定数量的新发行比特币(区块奖励)和该区块内交易的手续费。
  • 减半机制:每 210,000 个区块(约4年)区块奖励减半,控制比特币的总发行量,直至总量达到 2100 万枚。
  • 手续费激励:随着区块奖励不断减半,交易手续费逐步成为矿工的重要收入来源,保障矿工继续维护网络安全。

6. 抗攻击与安全特性

  • 不可篡改性: 每个区块与前一区块哈希相连,篡改任意区块都会导致后续区块无效,且重新计算 PoW 需要庞大算力。
  • 分布式存储:全网节点共同存储完整账本,即使部分节点失效,系统仍然可用。
  • 51%攻击:网络安全依赖于算力分布,多数节点(超过 50% 算力)控制后,攻击者理论上可以重写交易历史,但实际操作成本极高。

BTC交易的核心 -UTXO

UTXO(未花费交易输出,Unspent Transaction Output) 是比特币交易的核心,代表着尚未被花费的比特币。交易的每个输入(input)必须引用之前的未花费输出(UTXO),交易完成后会产生新的 UTXO。

  • 交易的发起者必须拥有可用的UTXO
  • 交易必须符合比特币协议的规则,交易输入必须引用已有的UTXO,并且提供正确的数字签名证明所有权。交易输出必须指定新的比特币接受者。
  • 交易必须广播到比特币网络
  • 旷工或节点验证交易并打包进区块
    (1) 初始状态(State)
    左侧的 State 代表交易发生前的 UTXO 集合,每个 UTXO 以 交易ID:输出索引 形式表示。交易发起者可以引用这些 UTXO 作为输入,进行新交易。
    (2) 交易(Transaction)
  • Inputs(花费的UTXO),花费了`7b53ab84:1`,`3ce6f712:2`,这些UTXO作为输入(Spend)被消耗,不再是未花费状态。
  • 签名(Sig),这两个输入 UTXO 需要由相应的私钥进行 数字签名,以证明交易的合法性。签名值(`304525bf6785edcd79ed090c`,`30464dd4afcb1c2e651030ea`),只有拥有对应私钥的人(即UTXO现有所有者)才能生成这些签名,防止BTC被盗用。
  • Outputs(新生成的UTXO),交易创建了三个新的UTXO(`bb75a980:0`,`bb75a980:1`,`bb75a980:2`).这些UTXO存入新的地址,供新的持有者使用。
    (3)交易后的新状态(State),右侧的 `State’` 代表交易发生后,比特币 UTXO 集合的变化,原有的 UTXO 7b53ab84:1 和 3ce6f712:2 被花费,所以它们不再出现在 State’ 中。旧的未花费 UTXO `14c5f8ba:0` 和 `4ad59065:0` 仍然有效,继续存在。交易产生了 三个新的 UTXO:`bb75a980:0`,`bb75a980:1`,`bb75a980:2`
    `892bb91f:0`仍然存在,因为它没有被花费。
posted @   代码世界faq  阅读(4)  评论(0)    收藏  举报
点击右上角即可分享
微信分享提示