最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

當(dāng)前位置:主頁 > 區(qū)塊鏈 > 區(qū)塊鏈技術(shù) > 以太坊交易的生命周期

科普:以太坊交易的生命周期?

2021-12-08 17:25:33 | 來源: | 作者:佚名
這篇文章主要介紹了科普:以太坊交易的生命周期的相關(guān)資料,希望這篇關(guān)于以太坊交易的生命周期的文章,能夠幫助各位朋友對以太坊有個更加深入的了解。

ETH(Ethereum)以太坊錢包基本概念介紹:http://m.fzitv.net/blockchain/801260.html

了解以太坊交易是如何生成并在網(wǎng)絡(luò)中廣播的

科普:以太坊交易的生命周期?

交易是以太坊區(qū)塊鏈(或任何類似的區(qū)塊鏈)的核心。在與以太坊區(qū)塊鏈進(jìn)行交互之時,你是在執(zhí)行交易并更新其狀態(tài)。你有沒有想過要了解當(dāng)你在以太坊執(zhí)行交易之時到底發(fā)生了什么?讓我們通過一則交易例子來解答這一問題。本文包括如下內(nèi)容。

以太坊交易的端到端遍歷,即從你的瀏覽器/控制臺出發(fā)進(jìn)入以太坊網(wǎng)絡(luò),然后再回到你的瀏覽器/控制

了解當(dāng)你使用 Metamask 或 Myetherwallet 等插件,而非運行自己的節(jié)點之時,交易是如何進(jìn)行的

如果你比較偏執(zhí)多疑,不信任任何插件,想自己執(zhí)行交易,該怎么做?

本文讀者需要對以太坊及其組成部分,如賬戶、gas 和合約等具備基礎(chǔ)性了解。關(guān)于這些概念的詳細(xì)解釋可以參見這篇文章(編者注:中譯本見文末《以太坊中的賬戶、交易、Gas和區(qū)塊Gas Limit》超鏈接)。如果你是一個不熟悉以太坊的開發(fā)者,這篇文章或許對你很有幫助。你也可以從這篇文章中學(xué)習(xí)如何構(gòu)建簡單的分布式應(yīng)用。如果你已經(jīng)有過執(zhí)行交易的親身經(jīng)歷,本文對你的意義會更大。例如,可以是將一些以太幣發(fā)送給另一個人或合約的交易。再比如,還可以是在與分布式應(yīng)用進(jìn)行交互的情況下,如果你在這個網(wǎng)站上買了一些代幣,這就是一筆交易。如果你為一位候選人投票,這也是一筆交易。

一. 以太坊交易的端到端綜述

讓我們以下列合約調(diào)用為例,并遍歷該函數(shù)調(diào)用/交易是如何執(zhí)行及永久存儲在區(qū)塊鏈上的整體流程。點擊此處可了解整個合約。從較高層次來說,這是一個投票合約,其中你可以預(yù)置一些候選人在選舉中進(jìn)行角逐,任何人都能為他們投票。這些投票將會記錄在區(qū)塊鏈上。

Voting.deployed().then(function(instance) {
  instance.voteForCandidate('Nick', {gas: 140000, from: web3.eth.accounts[0]}).then(function(r) {
    console.log("Voted successfully!")
  })
})

科普:以太坊交易的生命周期?

假設(shè)你在自己的計算機(jī)上本地運行了一個以太坊客戶端(Geth 或 Parity),你的計算機(jī)連接到了某個以太坊網(wǎng)絡(luò)(測試網(wǎng)絡(luò)或是主網(wǎng)),你有權(quán)訪問該合約地址和 ABI,從而執(zhí)行該交易。

如果你構(gòu)建過分布式應(yīng)用,應(yīng)該對上述代碼并不陌生。這是一個名為“Voting(投票)”的合約,已經(jīng)部署在了區(qū)塊鏈上。我們以該合約為例,執(zhí)行一個叫作 voteForCandidate 的函數(shù),輸入候選人的姓名、該交易的gas上限和執(zhí)行該交易的賬戶。從名稱中可以看出,該函數(shù)能夠用來為候選人投票,選票記錄在區(qū)塊鏈上。在下文,我們將嘗試解構(gòu)該調(diào)用,了解你在執(zhí)行該 javascript 函數(shù)時會發(fā)生的一切。

1. 構(gòu)建原始交易對象

如下圖所示,voteForCandidate 函數(shù)調(diào)用首先被轉(zhuǎn)化成了原始交易(rawTxn)。Web3js庫被用來構(gòu)建原始交易對象。

txnCount = web3.eth.getTransactionCount(web3.eth.accounts[0])
var rawTxn = {
    nonce: web3.toHex(txnCount),
    gasPrice: web3.toHex(100000000000),
    gasLimit: web3.toHex(140000),
    to: '0x633296baebc20f33ac2e1c1b105d7cd1f6a0718b',
    value: web3.toHex(0),
    data: '0xc7ed014952616d6100000000000000000000000000000000000000000000000000000000'
};

讓我們試著了解下該原始交易對象中的所有字段,以及它們是如何設(shè)置的。

nonce(隨機(jī)數(shù)):每個以太坊賬戶都有一個叫做 nonce 的字段,來記錄該賬戶已執(zhí)行的交易總數(shù)。Nonce 的值隨著每個新交易的執(zhí)行不斷增加,這能讓網(wǎng)絡(luò)了解執(zhí)行交易需要遵循的順序。Nonce 也被用來進(jìn)行重放保護(hù)。

gasPrice(gas價格):即你愿為該交易支付的每單位 gas 的價格。如果你正在主網(wǎng)上執(zhí)行交易,ETH Gas Station上正好有一個網(wǎng)站,你可以參照其建議為你的交易設(shè)定 gas 價格,以便交易在一定時間內(nèi)成功執(zhí)行。Gas 價格目前以 GWei 為單位,其范圍是0.1->100+Gwei。下文會進(jìn)一步介紹 gas 價格及其影響。

gasLimit(gas上限):即你愿為該交易支付的最高 gas 總額。該上限能確保在出現(xiàn)交易執(zhí)行問題(比如陷入無限循環(huán))之時,你的賬戶不會耗盡所有資金。一旦交易執(zhí)行完畢,剩余所有 gas 會返還至你的賬戶。

to:即該函數(shù)調(diào)用被送往的地址。0x633296baebc20f33ac2e1c1b105d7cd1f6a0718b 是我們的案例中投票合約的地址。

Value(值):即你打算發(fā)送的以太幣總量。當(dāng)我們執(zhí)行voteForCandidate函數(shù)時,我們根本沒有發(fā)送以太幣,因此 value 為零。如果你要執(zhí)行一個交易,向另一個人或合約發(fā)送以太幣,你會需要設(shè)置 value 值。

data(數(shù)據(jù)):讓我們來看看data字段是如何計算出來的。

你先從 voteForCandidate(bytes32 candidate)(32字節(jié)的候選人)的 ABI 中獲取函數(shù)簽名,并得出它的哈希值。

> web3.sha3('voteForCandidate(bytes32 candidate)')
'0xc7ed014922ff9493a686391b70ca0e8bb7e80f91c98a5cd3d285778ab2e245b3'

取該哈希值的前4個字節(jié),即:0xcc9ab267。

然后將參數(shù)‘Nick’轉(zhuǎn)化為32字節(jié),得到52616d6100000000000000000000000000000000000000000000000000000000

將二者結(jié)合,得到數(shù)據(jù)有效載荷。

2.簽署交易

如果你記得的話,你使用了web3.eth.accounts[0]來執(zhí)行該交易。以太坊網(wǎng)絡(luò)需要知道你確實是該賬戶的所有者,從而確保其他人不能以你的名義執(zhí)行該交易。要向網(wǎng)絡(luò)證明這點的方法是使用該賬戶的相應(yīng)私鑰簽署交易。簽署過后的交易如下圖所示:

const privateKey = Buffer.from('e331b6d69882b4ab4ea581s88e0b6s4039a3de5967d88dfdcffdd2270c0fd109', 'hex')

const txn = new EthereumTx(rawTxn)
txn.sign(privateKey)
const serializedTxn = txn.serialize()

3. 交易經(jīng)由本地驗證

簽署過后的交易會提交至你的本地以太坊節(jié)點。然后你的本地節(jié)點會驗證已簽名的交易,確保它真的是由這個賬戶地址簽署過的。

4. 交易被廣播至網(wǎng)絡(luò)

已簽署交易經(jīng)由你的geth/parity節(jié)點廣播至其對等節(jié)點,這些對等節(jié)點再將該交易廣播給它們的對等節(jié)點,以此類推。一旦交易被廣播至網(wǎng)絡(luò),你的本地節(jié)點也會輸出該交易的id,你可以用它來追蹤你的交易的狀態(tài)。該交易id就是已簽署交易對象的哈希值。

transactionId = sha3(serializedTxn)

科普:以太坊交易的生命周期?

如果你是在公共的以太坊網(wǎng)絡(luò)上執(zhí)行該交易的話,追蹤你的交易狀態(tài)的最佳方式是通過etherscan.io。如上圖所示,你是否注意到了有幾個節(jié)點被標(biāo)記為 Etherscan 節(jié)點。Etherscan 的團(tuán)隊運行了幾個節(jié)點,并將一個很棒的前端網(wǎng)絡(luò)應(yīng)用連接到了 Etherscan上。如果你的交易被他們的節(jié)點選中,你可以在他們的網(wǎng)站上查看自己的待定交易。

還要記住的一點是,并非所有節(jié)點都會接受你的交易。其中一些節(jié)點可能被設(shè)置成了只接受 gas 價格超過某一最低值的交易。如果你設(shè)置的 gas 價格低于該下限,則節(jié)點會忽略你的交易。

5. 礦工節(jié)點接受交易

正如圖中所示,以太坊網(wǎng)絡(luò)同時擁有礦工節(jié)點和非礦工節(jié)點??赡苣阋仓?,礦工的職責(zé)是將你的交易包含到區(qū)塊上。礦工是交易池的維護(hù)者,你的交易先是被添加進(jìn)交易池,再由礦工進(jìn)行開始評估。

科普:以太坊交易的生命周期?

從上圖中你會注意到礦工將所有交易存儲在根據(jù) gas 價格分類的池中。gas 價格越高,該交易就越有可能被添加進(jìn)下一個區(qū)塊。這是礦工節(jié)點的常見設(shè)定(為得到更高的報酬進(jìn)行優(yōu)化)。不過,礦工可以將自己的節(jié)點設(shè)置成根據(jù)自己的喜好對交易進(jìn)行分類(例如,他們?yōu)榱藥椭W(wǎng)絡(luò)只挖掘gas價格低的交易)。

從上圖中,你看出我們的 voteForCandidate 交易是如何沉入礦池底端的嗎?一旦所有g(shù)as價格高的交易都被挖出來包含進(jìn)區(qū)塊之后,礦工將挖掘我們的交易。

還有要注意的一點是,礦池可以容納的交易數(shù)是有限的。比如,一場眾籌正在火熱進(jìn)行中或是一個非常流行的分布式應(yīng)用(如加密貓)橫空出世。人們提交了 gas 價格高的交易,希望礦工能最先選中他們的交易。如果 gas 價格高的交易填滿了礦池,gas 價格低的交易就會被放棄。我們的候選人 Nick 在一段時間內(nèi)就別想收到任何選票了。在這種情況下,我們甚至得重新廣播我們的交易。

另一個能讓你的交易在礦池里上升的技巧是重新提交你的交易,提高 gas 價格并維持 nonce 值不變。這樣一來,當(dāng)?shù)V工接收到新交易時,gas 價格更高的新交易會覆蓋之前的交易。如果改變了 nonce 值,重新提交的交易就會被認(rèn)為是不同的交易(最后會為Nick舉行兩次投票)。這里推薦一篇很好的文章(編者注:中譯本見文末《科普 | 釋放阻塞的以太坊交易》超鏈接),作者Jim McDonald 對此做出了深入的解釋。

6. 礦工節(jié)點找到一個有效區(qū)塊并將它廣播至網(wǎng)絡(luò)

礦工最后選中了我們的交易,與其他交易一起包含進(jìn)區(qū)塊。礦工只能選擇一定量的交易添加進(jìn)區(qū)塊,因為以太坊已經(jīng)設(shè)置了單個區(qū)塊 gas 上限,換言之,交易的所有 gas 上限總數(shù)不能超過區(qū)塊 gas 上限。你可以在 ethstats.net 上查看當(dāng)前 gas 上限。

一旦礦工選擇將交易包含進(jìn)區(qū)塊,這些交易將被驗證并包含進(jìn)一個待處理區(qū)塊,工作量證明開始。某個礦工節(jié)點(通過解決工作量證明難題)最終會找到一個有效的區(qū)塊,并將這一區(qū)塊添加到區(qū)塊鏈上。就像經(jīng)由你的本地節(jié)點廣播的原始交易會被其他節(jié)點接收那樣,礦工節(jié)點也會將這一有效區(qū)塊廣播給其他節(jié)點。

7. 本地節(jié)點接收/同步新區(qū)塊

最終,你的本地節(jié)點將接收這個新區(qū)塊,并同步區(qū)塊鏈在本地的副本。一旦接收到這個新區(qū)塊,本地節(jié)點就會執(zhí)行區(qū)塊里的所有交易。

如果你使用 truffle 執(zhí)行你的交易, truffle 會不斷測驗區(qū)塊鏈以求確認(rèn)。一旦它發(fā)現(xiàn)交易被確認(rèn),就會執(zhí)行 then() 區(qū)塊中的代碼,并打印(我們每個例子的)控制臺日志函數(shù)。

二. 使用Metamask而非本地節(jié)點

科普:以太坊交易的生命周期?

如果你安裝了 MetaMask 瀏覽器插件,你就能在你的瀏覽器中管理你的賬戶。密鑰只會存儲在你的瀏覽器上,因此你是唯一一個有權(quán)訪問你的賬戶和私鑰的人。當(dāng)你在瀏覽器上執(zhí)行交易之時,插件會將你的函數(shù)調(diào)用轉(zhuǎn)化成原始交易,并用你的私鑰簽署交易。 Metamask 運行自己的節(jié)點,并且使用這些節(jié)點來廣播你的交易(Metamask 使用的是Infura 運營的節(jié)點)。如此一來,你就沒必要運行自己的以太坊節(jié)點了。

三. 線下簽名

如果你不喜歡用插件,或者擔(dān)心你的本地 geth 節(jié)點有可能受損(遭篡改),該怎么辦呢?要解決這一問題有一個安全之策。

你是否注意到了,前兩個步驟根本不需要聯(lián)網(wǎng)。如果你想確保自己的交易絕對不會受到篡改,你可以使用一臺沒有聯(lián)網(wǎng)的計算機(jī)將這一函數(shù)調(diào)用轉(zhuǎn)換成原始交易,并使用你的私鑰簽署該交易。之后,你可以復(fù)制已簽署交易串,并使用聯(lián)網(wǎng)的計算機(jī)將其廣播至網(wǎng)絡(luò)。你可以使用 Etherscan 和 Infura 等服務(wù)將你已簽署的交易廣播至網(wǎng)絡(luò)。

另一個安全之策是使用 Ledger 或 Trezor 等硬件錢包。這類錢包存儲了你的私鑰,而簽署交易的密鑰已經(jīng)編程進(jìn)了硬件本身。它們需要聯(lián)網(wǎng)的原因只是為了發(fā)布你的已簽署交易。

以上就是科普:以太坊交易的生命周期?的詳細(xì)內(nèi)容,更多關(guān)于以太坊的資料請關(guān)注腳本之家其它相關(guān)文章!

免責(zé)聲明:本文只為提供市場訊息,所有內(nèi)容及觀點僅供參考,不構(gòu)成投資建議,不代表本站觀點和立場。投資者應(yīng)自行決策與交易,對投資者交易形成的直接或間接損失,作者及本站將不承擔(dān)任何責(zé)任。!

你可能感興趣的文章

幣圈快訊

  • 持有1330萬美元LINK某巨鯨過去一周從幣安累計增持158萬枚

    2026-07-26 10:26
    據(jù)OnchainLens監(jiān)測,某巨鯨過去一周通過多筆來自幣安的轉(zhuǎn)賬累計增持158萬枚LINK,價值約1,320萬美元。目前該巨鯨持有158萬枚LINK,價值約1,330萬美元。
  • BitMart宣布有序停止運營8月26日起關(guān)閉全部交易服務(wù)

    2026-07-26 10:19
    據(jù)官方公告,BitMart宣布經(jīng)評估經(jīng)營狀況、市場環(huán)境及未來戰(zhàn)略方向,平臺決定有序停止交易業(yè)務(wù)。自7月26日01:30(UTC)起,BitMart將逐步停止新用戶注冊及加密貨幣、法幣充值,合約賬戶進(jìn)入僅減倉模式,現(xiàn)貨停止接受新訂單,跟單、網(wǎng)格及API交易等自動化服務(wù)也將逐步關(guān)閉。 自8月26日01:00(UTC)起,BitMart將停止全部現(xiàn)貨、合約及其他交易服務(wù),屆時仍未關(guān)閉的合約倉位可能按照標(biāo)記價格、指數(shù)價格或適用結(jié)算規(guī)則處理。理財、質(zhì)押、借貸及Launchpad等產(chǎn)品將分階段終止,具體贖回與結(jié)算安排另行通知。 平臺計劃于2027年1月31日15:59(UTC)正式停止交易平臺運營。停運后,用戶仍可在指定期限內(nèi)登錄賬戶、查看歷史記錄并提交提現(xiàn)申請。BitMart建議用戶在8月26日01:00前完成身份驗證并關(guān)閉所有倉位,并在當(dāng)日05:00前提交提現(xiàn)申請。 提現(xiàn)服務(wù)目前仍可使用,但部分申請可能因KYC、設(shè)備與賬戶安全、資金來源、提現(xiàn)地址、TravelRule、制裁篩查等要求接受人工審查。BitMart提醒用戶提前下載并保存賬戶余額、充提幣及交易記錄,同時警惕冒充平臺人員收取「加急費」「解凍費」或索要密碼、驗證碼、私鑰及助記詞的詐騙行為。
  • 黃仁勛:未來10年半導(dǎo)體產(chǎn)業(yè)規(guī)模或需擴(kuò)大至當(dāng)前10倍

    2026-07-26 10:04
    英偉達(dá)CEO黃仁勛在接受彭博社播客采訪時表示,韓國正處于“黃金時代”,其半導(dǎo)體及工業(yè)能力能夠幫助全球建設(shè)AI基礎(chǔ)設(shè)施。英偉達(dá)已與SK集團(tuán)達(dá)成多項合作,雙方未來在存儲采購、AI超級計算機(jī)及數(shù)據(jù)中心建設(shè)等領(lǐng)域的業(yè)務(wù)往來規(guī)模將超過5000億美元。英偉達(dá)將連續(xù)多年向SK海力士采購大量存儲芯片,并與其共同推進(jìn)從HBM2、HBM3、HBM3E、HBM4、HBM4E到后續(xù)產(chǎn)品的技術(shù)路線。 與此同時,SK電訊計劃在近期將AI云基礎(chǔ)設(shè)施擴(kuò)建至最高2吉瓦,英偉達(dá)將向其出售超級計算機(jī)。雙方合作既包括英偉達(dá)采購存儲,也包括SK集團(tuán)采購AI基礎(chǔ)設(shè)施。 黃仁勛認(rèn)為,隨著AI智能體和機(jī)器人開始大規(guī)模使用計算機(jī),芯片需求將不再只由人類用戶驅(qū)動。未來約10年,全球半導(dǎo)體產(chǎn)業(yè)規(guī)??赡苄枰獢U(kuò)大至當(dāng)前的10倍。當(dāng)前HBM等存儲、土地、電力及數(shù)據(jù)中心建設(shè)資源均處于緊張狀態(tài),行業(yè)每年或有能力實現(xiàn)翻倍,但更快擴(kuò)張將十分困難。整個行業(yè)或有能力每年將供應(yīng)規(guī)模翻倍,但土地、電力和廠房無法像消費電子設(shè)備一樣快速擴(kuò)張,因此AI基礎(chǔ)設(shè)施建設(shè)可能在未來10年持續(xù)以受限速度推進(jìn)。 談及中美AI競爭,黃仁勛表示,兩國都擁有優(yōu)秀的AI研究人員,雖然資源、條件和限制不同,但都會持續(xù)推動AI技術(shù)進(jìn)步。中國每年培養(yǎng)的AI研究人員數(shù)量可能超過全球其他地區(qū)總和,美國仍需繼續(xù)學(xué)習(xí)、合作并保持競爭。
  • Hyperliquid平臺鯨魚當(dāng)前持倉53.44億美元多空持倉比為0.96

    2026-07-26 10:00
    據(jù)Coinglass數(shù)據(jù),Hyperliquid平臺鯨魚當(dāng)前持倉53.44億美元,多單持倉26.11億美元,持倉占比48.86%,空單持倉27.33億美元,持倉占比51.14%。多單盈虧-9,355.57萬美元,空單盈虧1,971.73萬美元。 其中,巨鯨地址0xb83d..36在1857.95美元價格5倍全倉做空ETH,目前未實現(xiàn)盈虧-111.3萬美元。
  • 長鑫存儲最大空頭加倉至1278萬美元現(xiàn)浮盈約56.3萬美元

    2026-07-26 09:54
    據(jù)鏈上分析師@ai_9684xtpa監(jiān)測,長鑫存儲(CXMT)最大空頭地址仍在加倉。2小時前,該地址向Hyperliquid追加200萬枚USDC保證金,并通過TWAP繼續(xù)掛出限價賣單。 目前,該地址持有207.2萬枚CXMT的1倍杠桿空單,名義價值約1278萬美元,平均開倉價為6.4434美元,浮盈約56.3萬美元。此外,仍有435,677.8枚CXMT、限價6.11美元的賣單尚未成交,總價值約266萬美元。
  • 查看更多
更多

熱門幣種

  • 幣種
    最新價格
    24H漲跌幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 64461.64¥ 436418.19
    +0.57%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 1877.97¥ 12714.23
    +0.95%
  • tether USDT 泰達(dá)幣

    USDT

    泰達(dá)幣

    $ 0.999¥ 6.7634
    +0%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 570.12¥ 3859.82
    +0.89%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.0008¥ 6.7756
    +0%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 1.0999¥ 7.4465
    +0.61%
  • solana SOL Solana

    SOL

    Solana

    $ 74.7952¥ 506.37
    +0.94%
  • tron TRX 波場

    TRX

    波場

    $ 0.3313¥ 2.2429
    +0.03%
  • hyperliquid HYPE Hyperliquid

    HYPE

    Hyperliquid

    $ 58.4164¥ 395.49
    +1.52%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.072024¥ 0.4876
    +3.44%
高雄县| 芦溪县| 紫金县| 呼伦贝尔市| 安新县| 汤原县| 临西县| 仁怀市| 绍兴县| 青龙| 虎林市| 虎林市| 塔城市| 宕昌县| 罗田县| 贞丰县| 乌兰浩特市| 兴隆县| 万年县| 台州市| 徐闻县| 鹿泉市| 姜堰市| 天长市| 绵阳市| 盐边县| 满城县| 乌恰县| 晋宁县| 花莲县| 治多县| 自治县| 苍溪县| 台前县| 手游| 山东| 勐海县| 安乡县| 精河县| 泸西县| 乌兰浩特市|