以太幣怎麼交易?以太坊交易的具體流程

買賣虛擬貨幣

 現在我們大家都很關注關於以太坊方面的問題,那麼關於以太幣怎麼交易?我想我們大家應該會很想了解一些內容,那麼下面就讓我們小編在這裡就來為大家好好的介紹一下很多內容關於以太幣怎麼交易?以太坊的交易最直觀解釋:從外部賬戶傳送到區塊鏈上的另一個賬戶的訊息和簽名的資料包。

包含如下內容:

傳送者的簽名

接收的地址

轉移的數字貨幣數量等內容

以太坊上的交易都是需要支付費用,和比特幣以比特幣來支付一定的交易費用不同,以太坊上固定了這個環節,那麼這個間接理解是以太坊的一種安全防範錯誤,防止了大量的無意義的交易,保證一定的安全性,特別是智慧合約的建立、執行、呼叫都需要消耗費用,那麼也保證了整個系統的穩定性,防止了一些鏈上無意義的惡意行為。

交易手續費

以太坊的核心是EVM,以太坊虛擬機器,那麼在EVM中執行的位元組碼都是要支付費用。也就是經常看到的Gas、Gas limit、Gas Price這幾個概念。

Gas:字面理解就是汽油,以太坊和日常的汽車一樣需要Gas才能執行。Gas是一筆交易過程中計算消耗的基本單位。有一個列表可以直觀看到在以太坊中操作的Gas消耗量:

操作Gas消耗具體內容

step1執行週期的預設費用。

stop0終止操作是免費的。

suicide0智慧合約賬戶的內部資料儲存空間,當合約賬戶呼叫suicide()方法時,該值將被置為null。

sha320加解密

sload20在固定的儲存器中去獲取

sstore100輸入到固定的儲存器中

balance20賬戶餘額

create100建立合約

call20初始化一個只讀呼叫

memory1擴充記憶體額外支付的費用

txdata5交易過程中資料或者編碼的每一個位元組的消耗

transaction500交易費用

contract creation53000homestead中目前從21000調整到53000

所以有些公司或者個人覺得區塊鏈技術去中介化,不需要中心伺服器,這種開發模式是比較便宜的,但是事實上區塊鏈的開發不比之前的那些傳統軟體開發來的便宜。

Gas Price:字面理解汽油價格,這個就像你去加油站,95#汽油今天是什麼價格。一個Gas Price就是單價,那麼你的交易費用=Gas*Gas Price,然後以以太幣來ether來支出。當然你覺得我不想支付費用,你可以設定Gas Price為0,但是選擇權在礦工手中,礦工有權選擇收納交易和收取費用,那麼最簡單的想想很難讓一個礦工去接收一個價格很低的交易吧。另外提一句,以太坊預設的Gas Price是1wei。

Gas Limit:字面理解就是Gas的限制,限制是必要的,沒有限制就沒有約束。這個Gas Limit是有兩個意思的。首先針對單個交易,那麼這個表示交易的發起者他願意支付最多是多少Gas,這個交易發起者在發起交易的時候需要設定好。還有一個是針對區塊的Gas Limit,一個單獨的區塊也有Gas的限制。

假設幾個場景來說明Gas的使用:

使用者設定Gas Limit,那麼在交易過程中,如果你的實際消耗的Gas used

使用者設定Gas Limit,那麼交易過程中,如果你的實際消耗的Gas used > Gas Limit,那麼礦工肯定發現你的Gas不足,這個交易就無法執行完成,這個之後會回滾到執行之前的狀態,這個時候礦工會收取Gas Price*Gas Limit。

區塊的Gas Limit,區塊中有一個Gas上限,收納的交易會出現不同的使用者指定的Gas Limit。那麼礦工就會根據區塊限制的Gas Limit來選擇,“合理”選擇打包交易。

具體交易

以太坊上交易可以是簡單的以太幣的轉移,同時也可以是智慧合約的程式碼訊息。列個表格看下交易的具體內容:

程式碼內容

from交易發起者的地址、不能為空,源頭都沒有不合理。

to交易接收者的地址(這個可以為空,空的時候就表示是一個合約的建立)

value轉移的以太幣數量

data資料欄位。這個欄位存在的時候表示的是,交易是一個建立或者是一個呼叫智慧合約的交易

Gas Limit字面理解就是Gas的限制,限制是必要的,沒有限制就沒有約束。這個Gas Limit是有兩個意思的。首先針對單個交易,那麼這個表示交易的發起者他願意支付最多是多少Gas,這個交易發起者在發起交易的時候需要設定好。還有一個是針對區塊的Gas Limit,一個單獨的區塊也有Gas的限制。

Gas Price一個Gas Price就是單價,那麼你的交易費用=Gas*Gas Price,然後以以太幣來ether來支出。以太坊預設的Gas Price是1wei。

nonce用於區別使用者發出交易的標識。

hash交易ID,是由上述的資訊生成的一個hash值

r、s、v交易簽名的三部分,交易發起者的私鑰對hash簽名生成。

交易分三種型別

轉賬:簡單明瞭的以太坊上的以太幣的轉移,就和比特幣類似,A向B轉移一定數量的以太幣。這種交易包含:交易發起者、接收者、value的數量,其餘類似Gas Limit、hash、nonce都會預設生成。所以你會看到一段程式碼:

web3.eth.sendTransaction({ from: "交易發起者地址", to:“交易接收者地址”, value: 數量});

智慧合約建立:建立智慧合約就是把智慧合約部署到區塊鏈上,那麼這個時候to是一個空的欄位。data欄位則是初始化合約的程式碼。所以看到程式碼:

web3.eth.sendTransaction({ from: "交易發起者地址", data: "contract binary code"});

智慧合約執行:合約建立部署在區塊鏈上,那麼執行就是會加上to欄位到要智慧合約執行的地址,然後data欄位來指定呼叫的方法和引數的傳遞,所以看到程式碼:

web3.eth.sendTransaction({ from: "交易發起者地址", to:“合約執行者地址”, data:“呼叫的方法和引數的傳遞”});

以上大致就是交易的型別。

交易的確認

和比特幣一樣,以太坊的交易需要後續區塊確認後,節點同步後、才能確認。簡單理解就是多挖出一些區塊來,透過驗證後這一筆交易才算確認,以太坊時常會出現擁堵的情況,所以有時候需要等待確認。

轉賬、合約交易流轉

首先交易發起者A發起一筆轉賬交易,那麼傳送的格式如下:

程式碼具體內容

from交易發起者的地址

to交易接收者的地址

value轉移的以太幣數量

GasGas的量

Gas PriceGas的單價

data傳送給接收者的訊息

nonce交易編號

節點驗證:以太坊網路中會有節點收到A傳送出來的訊息,那麼會去檢查這個訊息格式時候有效,然後計算Gas Limit。這個時候回去驗證A的以太坊餘額,如果餘額不足,那麼就返回錯誤,不予處理。一旦A傳送的訊息透過了節點的驗證,那麼節點就會把這個交易放到交易儲存池中。並廣播到區塊鏈網路。

礦工驗證:那麼寫入區塊鏈必須要礦工打包,礦工在接收到A發出的交易,會和其他交易一塊打包,普通轉賬交易打包即可,那麼合約呼叫的交易則需要在礦工本地的EVM上去執行呼叫的合約程式碼,程式碼執行過程中檢查Gas的消耗。一旦Gas消耗完了,那麼就回滾,如果Gas足夠那麼返回多餘的Gas。並廣播到區塊鏈網路。

其餘節點:重複節點驗證步驟,然後合約也會在本地EVM上執行驗證。透過驗證後同步區塊鏈。

首先還是發起者A發起一個建立智慧合約的交易請求。格式如下:

程式碼具體內容

from交易發起者的地址

to0

value轉移的以太幣數量

GasGas的量

Gas PriceGas的單價

data合約程式碼

nonce交易編號

節點驗證:

以太坊網路中會有節點收到A傳送出來的訊息,檢查交易是否有效,格式是否正確,驗證交易簽名。計算Gas,確定下發起者的地址,然後查詢A賬戶以太幣的餘額。如果餘額不足,那麼就返回錯誤,不予處理。一旦A傳送的訊息透過了節點的驗證,那麼節點就會把這個交易放到交易儲存池中。並廣播到區塊鏈網路。

礦工驗證:

礦工將交易打包,那麼會根據交易費用和合約程式碼,來建立合約賬戶,在賬戶的空間中部署合約。這裡說下合約地址(智慧合約賬戶的地址是有發起者的地址和交易的隨機數作為輸入,然後透過加密演算法生成)。交易確認後會把智慧合約的地址返回給A。且廣播到區塊鏈網路。

其餘節點:

重複節點驗證步驟,驗證區塊,在節點的記憶體池中更新A的智慧合約交易,同步區塊鏈,且智慧合約部署在自己本地的區塊鏈中。

透過上面小編分析的內容,我想大家應該基本上了解了很多關於以太坊該怎麼交易的內容吧,在這裡還要提醒下大家,在投資過程中需要謹慎行事。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;