Skip to content

Commit b322551

Browse files
authored
Merge pull request #1253 from Jaove-ee/main
docs: add BTC/Basic/Transaction
2 parents b9aaf98 + 4257f7a commit b322551

File tree

5 files changed

+147
-4
lines changed

5 files changed

+147
-4
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
在比特币的底层系统中,并没有对手续费做规定。也就是说,手续费并不是强制要收取的。在早期,由于比特币价格低,链上转账数目少,很多矿工并不在意用户是否支付了手续费(也叫矿工费),所以很多没有支付手续费的比特币也被矿工打包确认了。但随着比特币价格的快速上扬,链上转账数目越来越多,为了让自己的利益最大化,矿工开始优先打包有手续费的成交。现在,如果转账不支付手续费,基本上不会被矿工打包确认。
2+
3+
4+
影响交易费用的因素
5+
6+
*字节大小
7+
8+
比特币交易的大小以字节为单位,通常交易越大,费用也越高。交易的大小取决于输入和输出的数量。
9+
10+
比特币转账的字节大小跟转账的金额无关,跟 UTXO 的数量有关。举个例子,张三、李四分别给王五转 6BTC,如果张三用的是一个面额为 7BTC 的 UTXO,李四用的是七个面额都为 1BTC 的 UTXO,那么很显然,李四的这笔转账字节要大得多。
11+
12+
目前,主流的手续费标准是按照字节收费:每千字节收取 0.0001BTC 的手续费(不足一千字节的按照一千字节算)。
13+
14+
*网络拥堵情况
15+
16+
比特币网络的拥堵情况也会影响手续费。如果使用比特币链上转账的人很多,造成了比特币网络拥堵,而你想让自己的转账尽快确认,你就需要支付更高的手续费进行“插队”,提高被打包确认的优先级。当然,如果你并不着急,也不用因为比特币网络拥堵而提高转账的手续费。
17+
18+
19+
估算方法
20+
21+
1. 使用交易所或钱包:许多比特币钱包和交易所提供自动计算的建议费用。用户可以根据推荐的费用进行交易。
22+
23+
2. 利用在线工具:有很多在线工具和网站提供实时的比特币交易费用估算,通常会显示当前的平均费用和推荐费用, 例如:
24+
25+
Mempool.space:(https://mempool.space/zh/)提供实时的 未确认交易和费用数据。
26+
27+
BTCscan:(https://btcscan.org/)显示当前区块链状态和推荐费用。
28+
29+
Blockchair: (https://blockchair.com/)提供详细的区块链分析和费用估算。
30+
31+
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
构建比特币交易的过程涉及多个步骤,以下是一个简化的步骤指南,帮助你理解如何在比特币网络上构建和发送交易。
2+
3+
### 1. 准备工作
4+
5+
- **钱包地址**:你需要一个比特币钱包地址(通常是由公钥生成的)用于接收比特币。
6+
- **私钥**:这是控制你钱包的密钥,必须保密。
7+
- **比特币余额**:确保你的钱包中有足够的比特币用于交易。
8+
9+
### 2. 创建交易
10+
11+
#### 交易基本结构
12+
13+
一笔比特币交易通常包含以下几个部分:
14+
15+
- **输入(Inputs)**:引用之前的交易输出,表示你要花费的比特币。
16+
- **输出(Outputs)**:指定比特币的接收地址和金额
17+
- **交易金额**:你要发送的比特币数量
18+
- **手续费**:矿工费,用于激励矿工处理你的交易
19+
20+
#### 示例交易结构(JSON格式)
21+
22+
```json
23+
{
24+
"inputs": [
25+
{
26+
"txid": "previous_transaction_id",
27+
"vout": 0,
28+
"scriptSig": "signature",
29+
"sequence": 4294967295
30+
}
31+
],
32+
"outputs": [
33+
{
34+
"address": "recipient_address",
35+
"amount": 0.01
36+
},
37+
{
38+
"address": "change_address",
39+
"amount": 0.009
40+
}
41+
],
42+
"locktime": 0
43+
}
44+
```
45+
46+
### 3. 签名交易
47+
48+
使用你的私钥对交易进行签名。这一步骤确保了交易的安全性和有效性。签名的算法通常是椭圆曲线数字签名算法(ECDSA)
49+
50+
### 4. 广播交易
51+
52+
一旦交易被签名,你需要将其广播到比特币网络。这可以通过连接到比特币节点或使用第三方API来完成
53+
54+
### 5. 交易确认
55+
56+
交易被矿工打包到区块后,等待网络确认。通常需要六个确认才能认为交易是不可逆的。
57+
58+
### 6. 检查交易状态
59+
60+
你可以使用区块链浏览器来检查交易的状态,确认它是否已被矿工确认。
61+
62+
### 代码示例
63+
64+
以下是一个简单的Python示例,使用 `bitcoinlib` 库构建和发送比特币交易:
65+
66+
```python
67+
from bitcoinlib.wallets import Wallet
68+
69+
# 创建或加载钱包
70+
wallet = Wallet('MyWallet')
71+
72+
# 创建交易
73+
tx = wallet.send_to('recipient_address', amount=0.01)
74+
75+
# 查看交易详情
76+
print(tx.info())
77+
```
78+
79+
### 注意事项
80+
81+
- 始终保持你的私钥安全。
82+
- 确保使用可靠的钱包软件。
83+
- 了解网络手续费的变化,选择合适的手续费以确保交易被及时处理。

BTC/Basic/Transaction/UTXO.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
UTXO(Unspent Transaction Output)是比特币交易的核心模型,代表未花费的交易输出。
2+
3+
4+
工作原理:
5+
6+
每笔交易通过输入(引用并消耗之前的UTXO)和输出(生成新的UTXO)完成转账。
7+
8+
例如:当前用户A余额是1000元,如果用户A给用户B转100元,这笔转账会被记录成:
9+
10+
交易1 用户A给用户B转账100元
11+
12+
交易2 用户A给用户A自己转账900元 (UTXO)
13+
14+
这里的交易2虽然是一笔交易,但从功能上来说他担当了账户余额的作用,表示在完成这笔100元转账后A的账户上还剩余900元。
15+
16+
17+
特点:
18+
19+
安全性高:UTXO模型通过验证每笔交易的输入,确保输入的UTXO是有效的且未被花费。这提高了交易的安全性,防止了双花攻击。
20+
双花攻击是指同一个比特币被花费两次。UTXO模型通过记录每个UTXO的状态,有效地防止了这种情况的发生
21+
22+
隐私性好:每个UTXO都是独立的,可以被多个交易分开使用。这使得交易难以被追踪,提高了用户的隐私性。
23+
例如,你可以将一个大额UTXO分成多个小额UTXO,用于不同的交易,从而混淆交易的来源和目的
24+
25+
可扩展性强:UTXO模型允许并行处理多个交易,提高了网络的可扩展性。每个节点只需要验证自己收到的UTXO,而不需要处理整个账户的余额。这使得比特币网络可以处理更多的交易,提高了网络的吞吐量
26+
27+
28+
29+

BTC/Basic/Transaction/UTXO.png

28.5 KB
Loading

btc/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@
3636

3737
### 1.3 交易
3838
比特币交易的相关知识:
39-
- **UTXO解析**
39+
- **UTXO解析**
4040
- **Coinbase交易**
41-
- **交易构建**
42-
- **费用估算**
41+
- **交易构建**
42+
- **费用估算**
4343
- **签名算法**
44-
- **交易加速**
44+
4545

4646
### 1.4 工具
4747
比特币生态系统中的常用工具:

0 commit comments

Comments
 (0)