關於交易的gas 與gassPrice概念已經交易阻塞

  • 2019 年 10 月 7 日
  • 筆記

以太坊的交易是通過曠工從礦池中挖礦完成的,而挖礦是❓通俗講就是將礦池中提交的交易按照價格高低進行篩選打包成塊的過程

為何有gas

說到gas就需要整理一個概念—什麼是gas?

首先gas是個度量單位:我們生活中有衡量長短的單位-米,時間單位分鐘小時和天以及年以及汽車損耗的汽油的度量單位升……有了這些作為鋪墊我們就好理解以太坊中的gas啦。

在交易過程中對於大家來書同樣一個比特幣或者ether折換成人民幣在同一時刻應該是相同的,對於同一個交易大家挖礦時消耗的計算力是相同的。那麼怎麼將每一份計算力劃分出來等價於一份以太坊的資源消耗呢?對了劃分度量—gas。這個gas猶如我們的金錢中的圓角分的數量是個資源對應出來的個體—買衣服花了200塊錢這個那麼換算成就是我買衣服花了200個ether(當然了這個衣服太貴啦…)

GasPrice

gasPrice是整個網路公認動態調整的一個代表一個gas購買力的數據。還原到現實世界的一個例子就是:有車的朋友都會關注汽油價格的波動,一個100升的油箱在汽油是2¥/V的時候你加滿需要200塊錢,還原至以太坊就是我執行這個預算需要消耗100的算力每個算力需要2gas,那麼每個gas的價格就是50啦。當然了這100個算力是燃燒人民幣換來的,假設摺合1000塊錢吧此時我們的gasprice就是對應人民幣就是500 ¥/gas。再假如1gas就是一個以太幣的話,那麼1以太幣的價格就是500大洋啦

好了,上面的是我們倒著推出來的,現實是這些都是系統內設動態變化的,說白了就是單價,使用是根據數量*單價計算總價用的

阻塞交易

區塊鏈之所以包含鏈是因為它是把交易礦池中的交易通過曠工根據算力計算打包成塊,然後再將這些塊按照序號排列起來。這就出現兩個問題

1 從礦池中取交易打包

2將打包數據編號

對於礦池中的交易數據需要曠工挖礦而曠工肯定是挑挑揀揀的啦—要麼容易單位算力打包的多,要麼總價貴,總之就是我要挑單位收益高的來。當然了系統也是這麼設定的要不然大家都不錢系統怎麼運行啊。

既然有挑挑揀揀就會出現有些沒有利潤的交易一直沒有苦力願意干從而一直呆在礦池無法被打包進而也就無法完成交易啦

再來說說打包過程,一個塊中可以打包多個交易目前根據演算法算出大概是每個塊能打包224個交易,假如你的正好是某個快的打包的第一個交易那麼你需要等待後續的223個也被打包了才有可能被整個鏈條承認…

處理交易阻塞

假如我們模擬一筆交易,費用很低那麼他會持續的呆在礦池中

Type:                   Pending transaction  From:                   0xED96dD3Be847b387217EF9DE5B20D8392A6cdf40  To:                     0xa34C6BCAe6F46ac6470443CCea67d937f6060c7E  Nonce:                  1  Gas limit:              21000  Gas price:              1 GWei  Value:                  0.005 Ether  

上文說到我們的交易提交後有可能價格低無法被打包,那麼怎麼處理呢?兩種辦法:修改價格重新提交,取消交易

1 取消交易

以太坊沒有從交易池中移除交易的機制,但可以用不同的資訊覆蓋交易,例如用0值轉移回發送方,這具有類似的效果。但這仍然是一個交易,仍然需要被開採。重新提交上述交易來達到取消交易的結果,如下所示:

Type:                   Pending transaction  From:                   0xED96dD3Be847b387217EF9DE5B20D8392A6cdf40  To:                     0xED96dD3Be847b387217EF9DE5B20D8392A6cdf40  Nonce:                  1  Gas limit:              21000  Gas price:              60 GWei  Value:                  0  

注意,「To」地址改成了「From」地址,「Value」改成了0。

2 修改價格

我們把價格提高

Type:                   Pending transaction  From:                   0xED96dD3Be847b387217EF9DE5B20D8392A6cdf40  To:                     0xa34C6BCAe6F46ac6470443CCea67d937f6060c7E  Nonce:                  1  Gas limit:              21000  Gas price:              10 GWei  Value:                  0.005 Ether  

注意 「From」 地址和 「Nonce」 值在兩個交易中是相同的。這兩個值可以用來唯一確定一個交易,允許交易覆蓋。而且 gas 價格發生了相應的變化。