以太幣的最小單位是Wei。Wei是一個很是小的單位,1Ether= 1018 Wei,和無限可分也差不了多少了。除了基本單位Wei,爲了使用方便還有其餘的單位,他們的關係以下:算法
咱們通常記住wei , Gwei=109wei,Ether = 1018wei便可。json
1.交易發起緩存
指定目標地址和交易金額,以及須要的gas price/gas limit等信息,構建一筆交易並生成Transaction實例。建立的交易json字段定義:網絡
根據這個json字段可生成一個Transaction實例:數據結構
Transaction 實例結構區塊鏈 |
txdata // txdata字段spa From // 緩存數據:發送方地址3d Hash // 緩存數據:交易Hashblog Size // 緩存數據:交易的大小排序 |
其中txdata這個數據結構咱們須要用來進行數字簽名:
2.交易簽名
使用帳戶私鑰對交易進行簽名。
當前代幣全部者先經過Keccak-256算法計算交易數據的hash值,而後結合帳戶的私鑰,經過ECDSA-secp256k1,也就是橢圓曲線數字簽名算法生成簽名數據(RSV)並將這個簽名附加在transaction實例的末尾,製做成交易單。
咱們發現,txdata只有接收方的地址(Recipient)而沒有發送方的地址,R,S,V的做用就是咱們能夠使用ECDSA推導得到from:
通過以上交易實例的構造,咱們就能夠將實例提交到交易池txpool了。
3.提交交易
簽名後的交易會先提交到本地SCC鏈節點,本地節點先對交易簽名進行驗證後,把transaction實例的這筆交易加入到交易緩衝池txpool中。提交交易的目標是先把交易放入交易池的隊列queue中記錄在案,而後再從queue中選一部分放入pending中進行處理。若是發現txpool滿了,則依據price中的排序,剔除低油價的交易。
4.節點確認
一個或者多個節點對txpool中的交易的信息驗證確認。
生成的交易須要被區塊鏈網絡中的礦工節點打包到區塊,才能寫入到區塊鏈中。礦工會有一個待處理的交易列表,其中的交易是按交易的gasPrice進行排序的,交易的gasPrice越高,處理的優先級就越高。若是交易的gasPrice太低,有可能一直得不到礦工的處理,從而被忽略。
礦工節點選擇好要打包的交易以後,就開始了PoW(Proof of Work)挖礦過程,最早發現新的區塊的礦工可以將交易打包至區塊,而且獲取到相應的獎勵。節點會確認這個區塊所包含的交易是否有效,確認沒被重複花費且具備效數位簽章後,接受該區塊,此時區塊才正式接上區塊鏈,沒法再竄改資料。
5.廣播交易
把交易信息廣播給其餘結點。
新的區塊已經產生,全部的節點都須要對區塊進行同步,你的交易會隨着區塊的同步被同步至全部節點上。全部節點一旦接受該區塊後,先前沒算完的區塊會失效,各節點會從新創建一個區塊。每一個區塊的出塊時間大約在10s,隨着全網算力的不斷變化,每一個區塊的產生時間會隨算力加強而縮短,隨算力減弱而延長。