Skip to content

Commit

Permalink
Merge pull request #159 from marvelshan/main
Browse files Browse the repository at this point in the history
Read: Transaction and TestRPC
  • Loading branch information
marvelshan authored Feb 14, 2025
2 parents b3e07a3 + db0ba6d commit f59cec4
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions marvelshan.md
Original file line number Diff line number Diff line change
Expand Up @@ -660,5 +660,76 @@ Reth引入了執行擴展(Execution Extensions,簡稱ExEx),這是一個

### 2025.02.13

### 2025.02.14

### 交易(Transaction)筆記

#### 定義
交易是由外部帳戶發出的加密簽名指令,透過 JSON-RPC 廣播至整個網絡。

#### 交易包含的欄位

1. **Nonce(交易計數)**
- 這是一個整數值,等於發送者已發送的交易數量。
- 作用:
- **防止重放攻擊**:由於每筆交易的 Nonce 是唯一的,EVM 會拒絕已存在的交易,防止惡意重播交易。
- **決定智能合約地址**:在創建合約時,Nonce 與發送者地址一起決定合約帳戶的地址。
- **替換交易**:如果交易因為低 Gas 價格而卡住,可發送相同 Nonce 但更高 Gas 價格的新交易來取代舊交易。但是否成功取決於礦工與網絡條件。

2. **Gas Price(燃料價格)**
- 這是一個整數值,表示每單位 Gas 需要支付的 Wei 數量。
- 1 ETH = \(10^{18}\) Wei。
- Gas Price 決定了交易的優先級,越高的 Gas Price 越可能被礦工優先打包進區塊。

3. **Gas Limit(燃料上限)**
- 這是一個整數值,代表此交易執行時允許消耗的最大 Gas 數量。
- 如果執行時 Gas 消耗超過 Gas Limit,交易會失敗。

4. **To(接收者地址)**
- 這是一個 20 字節的地址,表示此交易的接收者。
- `to` 欄位也決定了交易的模式或目的,例如發送 ETH 或部署智能合約。

#### **TestRPC(本地私有區塊鏈)**
**優點**
- 無需同步區塊鏈,啟動快,幾乎無磁碟需求。
- 測試Ether無限制,可自行挖礦獲取獎勵。
- 只有你一個用戶,環境可控。
- 沒有其他合約影響測試結果。

**缺點**
- 缺少真實區塊鏈的交易競爭與排序機制。
- 挖礦預測性強,無法測試公開網路的不確定性。
- 需自行部署所有依賴的智能合約與庫。
- 不能重現公共合約及其地址來測試特定場景。

---

#### **以太坊客戶端運行(Geth & Parity)**
**完整節點運行條件**
- **最低需求**:2核CPU、80GB SSD、4GB RAM(HDD需8GB)、8+ MBit/sec網速。
- **推薦配置**:4核以上CPU、16GB RAM、500GB SSD、25+ MBit/sec網速。

🔹 **Geth(Go-Ethereum)**
- 以Go語言編寫,官方支持度高。
- **安裝方式**:GitHub獲取原始碼 ➝ `make geth` 編譯 ➝ `geth version` 檢查。
- **快速同步模式**`--fast`)可減少區塊驗證時間。

🔹 **Parity**
- 以Rust語言開發,運行效率高。
- **安裝方式**:GitHub獲取原始碼 ➝ `cargo build` 編譯 ➝ `parity --version` 檢查。
- **快速同步**(舊版`--warp`,1.6+ 版本自動啟用)。

---

#### **以太坊區塊鏈同步與JSON-RPC**
- **完整同步**:下載並驗證所有區塊與交易,較慢但數據完整。
- **快速同步**:僅同步最新區塊,提升速度但省略歷史驗證。
- **JSON-RPC API**
- 用於與以太坊網絡交互的標準接口(HTTP 8545)。
- 限制本地訪問,提高安全性,可用於智能合約調用與交易管理。

參考:

[蜜蜂書第三章](https://cypherpunks-core.github.io/ethereumbook_zh/)

<!-- Content_END -->

0 comments on commit f59cec4

Please sign in to comment.