跳至主要內容

交易 — ETH.BUILD

使用 ETH.BUILD 教育工具示範以太坊交易的運作方式。了解如何在以太坊網路上建構、簽署和傳送交易。

Date published: 2021年1月14日

奧斯汀·格里菲斯 (Austin Griffith) 製作的教學,示範如何使用 ETH.BUILD 視覺化程式設計工具來了解以太坊交易的運作方式 — 涵蓋交易結構、Gas 價格、簽署、廣播以及交易池。

本逐字稿是奧斯汀·格里菲斯發布的原始影片逐字稿 (opens in a new tab)的無障礙副本。為了提升閱讀體驗,已進行了輕微的編輯。

交易費用與礦工獎勵 (0:00)

今天在 ETH.BUILD 上,我們將討論交易。到目前為止,我們已經了解交易會被打包進區塊中,並被礦工挖掘到鏈上。我們想探討的是,除了區塊獎勵之外,是什麼激勵礦工從交易池中取出我們的交易,將其放入區塊並挖掘到鏈上,而不是選擇池中的其他人。交易池中可能有成千上萬的人都在競標,而這個競標就是透過這筆費用來進行的。

我可以在我的交易中設定一筆費用,表示「我是 Alice,我要發送 5 給 Bob,為了防止重放攻擊,我的隨機數是 1。」此外,無論是誰挖掘了這筆交易,都可以將這筆費用據為己有。基本上,Alice 發送 5 給 Bob,同時也支付給礦工 5 分錢,讓他們將這筆交易放入鏈上。

以太坊交易剖析 (1:10)

以太坊上的交易是什麼樣子?我們不會再看到「Bob」和「Alice」— 我們會看到地址。價值將以 Wei 為單位,而不是以太幣 (ETH)。而且費用也會以 Wei 為單位。

讓我們直接來看看這筆交易。我有一個輸入了助記詞的帳戶,並且已連接到以太坊主網。我還執行了一個模組來從 CoinMarketCap 獲取價格資料,所以我可以看到零點一幾的以太幣大約折合 23 美元。

設定交易 (2:25)

我要做的是建立一筆交易,並激勵礦工將其選中並放入鏈上。我有兩個角色 — Alice 和 Bob。Alice 將使用她的私鑰發送一些價值給 Bob。這裡沒有「發送方 (from)」地址欄位,因為 — 請記住 — 我們是使用我們的金鑰對進行簽署和還原。交易被打包、簽署,然後透過網路傳送。沒有人可以竄改它,而在另一端,有人可以還原它並發現確實是我們簽署的。「發送方」地址是推導出來的。

Gas 價格策略 (4:20)

Gas 價格預設約為 4.1 Gwei — 也就是 41 億 Wei。但我們希望採取更具策略性的做法,看看目前鏈上的情況。我們可以看到上一個區塊有 78 筆交易,Gas 價格從大約 5 降至某個最小值。基本上,我們需要高於 5 才能被挖掘到該區塊中。所以我們將 Gas 價格設定為 5.001 — 稍微高一點點。

轉換為 Wei (5:20)

我們需要轉換為 Wei。在以太坊上,你主要處理兩種面額:ETH (人們通常談論的以太幣),以及 Wei (以太幣的極小部分)。Gwei — 我們用於 Gas 價格的單位 — 介於兩者之間。這樣做的原因,就像我們平常不會用幾分之幾的便士來討論價格一樣。

Alice 有 0.18 ETH,我們將發送 0.05 ETH 給 Bob。我們輸入 5 Gwei 的 Gas 價格。

簽署與廣播 (7:02)

當 Alice 選擇簽署交易時,它會作為一筆已簽署的交易發出,並在網路上傳輸。沒有人可以竄改它 — 在另一端,有人可以推導出是 Alice 簽署了它,並且它包含了我們想要發送給誰以及支付給礦工的燃料的所有資訊。

我們將那筆已簽署的交易放入區塊鏈模組的發送函式中。當我點擊發送時,它會給我們一個雜湊值 — 交易雜湊值。基本上,我將它發送到分散式網路,他們回傳給我一個交易雜湊值。它在網路上發布,然後進入這個交易池 — 人們都在競標以讓他們的交易通過。

檢查區塊 (8:41)

我們可以在區塊鏈上查詢我們的交易。果不其然,它已經被挖掘了。我們可以查看區塊,按 Gas 價格排序,然後找到我們自己。我們的交易就在那裡,Gas 價格為 5.001 — Alice 發送給 Bob,沒有額外的資料。我們在裡面,大約從底部算起第四或第五個位置。

隨交易發送資料 (9:54)

我們能夠發送價值並競標以讓我們的交易在鏈上被確認。但讓我們再看一件事 — 資料欄位。我們可以隨交易發送一些東西。它將以十六進位表示。Alice 將再發送 6 美元給 Bob,我們將附加一則訊息:「hey Bob」。我們可以看到「hey Bob」被轉換成了十六進位。

我們簽署那筆交易,將其發送給礦工,它進入網路,然後我們得到一個雜湊值。我們觀察它是否被挖掘,結果確實如此。當我們檢查該區塊時,我們可以看到我們的交易附帶了資料。

交易池與提高 Gas 價格 (12:43)

作為最後一個示範,我將一筆交易放入池中,Gas 價格非常低 — 大約 1.001 Gwei。它停留在哪裡未被挖掘,因為我們給礦工的獎勵不夠。我們可以看到該交易在交易池中處於待處理狀態。池中有大約一百到三百筆交易,但最新被挖掘的區塊顯示最小的 Gas 價格約為 5。

所以我們需要重新提交這筆交易 — 讓我們將其提高到 10。這遠遠超過了所需的值,但我們將使用相同的隨機數重新提交相同的交易,只是 Gas 價格更高。網路會認為「同一個人,同一筆交易,願意支付更多」。它被選中並挖掘到下一個區塊中。

總結 (14:52)

我們發送了一筆交易,支付了一些燃料來激勵礦工將其放入區塊鏈中。我們還隨交易發送了資料 — 既然我們有了這些呼叫資料,我們現在可以做各種非常酷的事情,稍後我們將深入探討智能合約和許多有趣的東西。

這個頁面對您有幫助嗎?