智能合約開發學習—專有名詞
這裡整理之前上課的筆記,都是入門級別一共 4 章,分別如下:
開發相關名詞
概覽
原文 | 解釋 |
---|---|
Ethereum | 可縮寫為 eth, Eth,一個 Layer 1 的區塊鏈實作項目,可以類比為一個全球通用的公開資料庫 |
Eth node | 參與 Ethereum chain 的儲存節點 |
EVM | Ethereum Virtual Machine 的縮寫,執行 Smart Contract 的 runtime environment, it runs application of bytecode on consensus |
smart contract | 智能合約,程式本人,是一套獨立且完整的應用程式,對鏈只有兩種操作:狀態修改(transaction)或是取得資料(call) |
solidity | 撰寫智能合約的程式語言 |
帳戶(account)
原文 | 解釋 |
---|---|
Externally Owned Account | 又稱 EOA,可以想像成個人的戶頭 |
Contract Account | 又稱 CA,執行智能合約的帳戶細節參考 |
nonce | 由指定帳戶送出的 tx counter(確保同個 tx 不會發生 double spending) |
blance | 帳戶餘額,單位是 wei |
address | 帳戶位置,為一串 hash,每條鏈有不同的算法,ETH 使用的是 keccak-256 |
Key pair | 非對稱加密的 key,EOA 才有,private key 用來 sign tx。在鏈上持有的金額實際上不是「持有」而是透過而是透過 private key 去解密出放在以太鏈上的 fund |
code | the immutable EVM bytecode, CA 才有 |
storage | empty by default, CA 才有 |
wallet | 集中管理帳戶的工具,有些 CeFi 會出自己的錢包,最常聽到的是 MetaMask (跨練且為個人持有) |
手續費(gas)
執行「狀態修改」的操作時需要 gas
原文 | 解釋 |
---|---|
transaction | 又可簡寫為 tx,每個 block 包含多筆 tx,同時也有 tx 數量上限,其依據 gasPrice 與 gasLimit 動態調整 |
ETH | Ether 的縮寫,以太幣本人,用來繳納交易手續費,1 ETH === 10^18 wei |
gas | 交易手續費的通稱,單位是 gwei,1 gwei === 10^-9 wei,一個 block 的所有 gas 會被成功算出該 block 的 miner 取得 |
Wei | 以太幣的最小單位,1 wei === 10^-18 |
gasPrice | 交易發起者想要支付的 gas 數量以確保他發起的 tx 能被 mint,越高代表發起的 tx 越快被 mint |
gasLimit | 每個 tx 能消耗的最大 gas 數,目的是避免對運算的 DoS 攻擊,預設為 21,000 |
OPCODE | 被 EVM 執行的運算操作, 每次操作都需要 gas,eth 官方有每個 OPCODE 對應的 gas |
eth explorer(帳本查詢工具)
原文 | 解釋 |
---|---|
block height | 該 chain 的長度 |
gas used | total gas consumed in block(percentage of gas limit) |
nonce | puzzles found by the miner |
transaction fields
原文 | 解釋 |
---|---|
data | deploy contract 行為會顯示 bytecode,call function 行為會顯示 function args |
value | 如果是 tx 則顯示 eth in wei,如果為 0 表示此次呼叫為 deploy contract 或是 call |
nonce | puzzles found by the miner |
gasLimit | 如果該交易消耗的 gas 小於此值,剩餘會返回給 sender |
hash | 又稱作 id, unique id to trace |
其他名詞
原文 | 解釋 |
---|---|
Consensus | 共識機制,決定鏈當下狀態的規則,有 PoW, PoS, PoA 三種機制 |
DeFi | 去中心化交易所,透過個人錢包進行交易 |
CeFi | 中心化交易所,就是虛擬貨幣銀行,同常會代管你的錢包 |
HD wallet | 具有 seed phrase 的 wallet |
seed phrase | 助記詞,由隨機的單詞組成的密碼,用來加密錢包使用 |
miner | 礦工,算 block 的節點,PoW 時代的稱呼 |
minter | 礦工,PoS 時代的稱呼 |
sealer | 礦工,又稱 block signer,PoA 時代的稱呼 |
補充說明
- EOA 產生 tx,CA 產生 message
- 交易失敗表示消耗完所有的 gas 後交易失敗
Address
- EOA address 透過 keccak-256 雜湊 public key 的最橫 20 bytes,使用 hex format 表示,最前面再加上 “0x”
- CA address 由 contract creator 去計算,包含 nonce
transaction
- 交易生命週期
- client node(usually geth) 初始化 tx 物件
- client node 使用 private key 簽署 tx
- tx 被廣播給的所有的 client 並回傳 tx hash
- tx 被加入到 tx pool 裡面等待被礦工驗證(挖礦)。礦工節點接收 tx,pool 是許多礦工與非礦工節點聚合的地方
- 礦工透過共識機制進行解謎,最先解出謎題的礦工會建立一個 block,每個 block 裡面有多少個 tx 取決於該 block 定義的 gasLimit
- 解出謎題的礦工把 block 廣播給鍊上的所有節點,所有節點會執行該 tx 表示有收到,但只有解出謎題的礦工能取得該 block 的 獎勵(block reward + txfee - gas)
- 執行智能合約定義的 function 有兩種方式
- call: 純粹的 read,no broadcast or publish to the blockchain,不需要 gas
- transaction: 執行 write 行為,修改 state,需要 gas,will broadcast to the blockchain
- transaction vs call
transaction call write read 修改 blockchain 的狀態 不會修改 會有 hash 不會 會廣播 不會 需要 gas 不需要 時間較久(要被 mint) 時間很快 return tx hash return value
references
發佈時間
2023-3-18