
要將交易發(fā)送到以太坊網(wǎng)絡(luò),我們首先需要使用私鑰對(duì)其進(jìn)行簽名,然后需要在網(wǎng)絡(luò)上發(fā)送。客戶端代碼中的相同過程不同于在后端/節(jié)點(diǎn)項(xiàng)目中使用私鑰。使用web3將交易發(fā)送到以太坊區(qū)塊鏈需要三個(gè)主要步驟:創(chuàng)建、簽名和廣播。本文將由世鏈NFT(shiliannft.com)的小編,分享使用 WEB3 發(fā)送交易的指南。
創(chuàng)建一個(gè)帳戶
如果我們想在區(qū)塊鏈上匯款,我們需要一個(gè)以太坊賬戶。以太坊賬戶是以太坊區(qū)塊鏈上的主要身份單位——賬戶地址是用戶在網(wǎng)絡(luò)上的識(shí)別方式。支撐賬戶系統(tǒng)的是一個(gè)基于 公鑰密碼學(xué)的去中心化身份協(xié)議。 本質(zhì)上,區(qū)塊鏈網(wǎng)絡(luò)上的身份通過其公共地址對(duì)應(yīng)方(由整個(gè)網(wǎng)絡(luò)持有)的單個(gè)私鑰(由單個(gè)用戶秘密持有)的數(shù)字簽名認(rèn)證來確認(rèn)。雖然它有很大的用戶體驗(yàn)障礙,但它確實(shí)提供了一種快速的對(duì)等身份驗(yàn)證協(xié)議。
生成一個(gè)在以太坊網(wǎng)絡(luò)上使用的帳戶非常容易 web3.py.
配置
1.獲取rpc url
我們的程序需要 RPC url 才能與區(qū)塊鏈網(wǎng)絡(luò)交互。您可以在此智能本中檢查通過提供商連接的不同方法。
對(duì)于這個(gè)例子,我們將使用的提供商是Infura via http。我們所要做的就是創(chuàng)建一個(gè)帳戶并生成一個(gè)項(xiàng)目,該項(xiàng)目將為我們提供創(chuàng)建項(xiàng)目的 api 密鑰的 rpc url。
2. 獲取測(cè)試代幣
您可以從 ropsten faucet獲取測(cè)試令牌。輸入您的地址并點(diǎn)擊提交。
3.初始化Nodejs
首先初始化 nodejs 項(xiàng)目并使用以下命令創(chuàng)建工作文件,
> npm init
> touch index.js
4.安裝web3
需要依賴的是web3,安裝命令如下:
> npm install web3
現(xiàn)在安裝和配置過程已經(jīng)完成,讓我們看一下代碼。
發(fā)送交易的步驟
1 . 在 Rinkeby 測(cè)試網(wǎng)上創(chuàng)建一個(gè) Alchemy 應(yīng)用程序
導(dǎo)航到您的Alchemy 儀表板并創(chuàng)建一個(gè)新應(yīng)用程序,為您的網(wǎng)絡(luò)選擇 Rinkeby(或任何其他測(cè)試網(wǎng))。
2 . 從Rinkeby水龍頭請(qǐng)求 ETH
按照Alchemy Rinkeby水龍頭上的說明接收 ETH。確保包括你的Rinkeby以太坊地址(來自 MetaMask)而不是其他網(wǎng)絡(luò)。按照說明操作后,仔細(xì)檢查您的錢包中是否收到了 ETH。
3 . 新建一個(gè)項(xiàng)目目錄并cd放入其中
從命令行(macs 終端)創(chuàng)建一個(gè)新的項(xiàng)目目錄并導(dǎo)航到它:
mkdir sendtx 示例
cd sendtx-例子
4 . 安裝 Alchemy Web3(或任何 web3 庫)
在您的項(xiàng)目目錄中運(yùn)行以下命令以安裝Alchemy Web3:
npm 安裝@alch/alchemy-web3
5 . 安裝dotenv
我們將使用一個(gè).env文件來安全地存儲(chǔ)我們的 API 密鑰和私鑰。
npm 安裝 dotenv --保存
6 . 創(chuàng)建.env文件
在您的項(xiàng)目目錄中創(chuàng)建一個(gè).env文件并添加以下內(nèi)容(替換“ your-api-url”和“ your-private-key”)
要找到您的 Alchemy API URL,請(qǐng)導(dǎo)航到您剛剛在儀表板上創(chuàng)建的應(yīng)用程序的應(yīng)用程序詳細(xì)信息頁面,單擊右上角的“查看密鑰”,然后獲取 HTTP URL。
要使用 MetaMask 查找您的私鑰。
API_URL = "你的 api-url"
PRIVATE_KEY = "你的私鑰"
7 . 創(chuàng)建sendTx.js文件
太好了,現(xiàn)在我們已將敏感數(shù)據(jù)保護(hù)在.env文件中,讓我們開始編碼吧。對(duì)于我們的發(fā)送交易示例,我們將把 ETH 發(fā)送回 Rinkeby 水龍頭。
創(chuàng)建一個(gè)sendTx.js文件,我們將在其中配置和發(fā)送示例交易,
關(guān)于數(shù)據(jù) 的說明 可以在以太坊中發(fā)送兩種主要類型的交易。
余額轉(zhuǎn)賬:將 ETH 從一個(gè)地址發(fā)送到另一個(gè)地址。不需要數(shù)據(jù)字段,但是,如果您想在交易的同時(shí)發(fā)送其他信息,您可以在此字段中以十六進(jìn)制格式包含該信息。
例如,假設(shè)我們想將 IPFS 文檔的哈希值寫入以太坊鏈,以便為其提供不可變的時(shí)間戳。我們的數(shù)據(jù)字段應(yīng)該看起來像 data: web3.utils.toHex(‘IPFS hash‘)。現(xiàn)在任何人都可以查詢鏈并查看添加該文檔的時(shí)間。
智能合約交易:在鏈上執(zhí)行一些智能合約代碼。在這種情況下,數(shù)據(jù)字段應(yīng)包含您希望執(zhí)行的智能功能以及任何參數(shù)。
8 . 使用運(yùn)行代碼node sendTx.js
導(dǎo)航回您的終端或命令行并運(yùn)行:
節(jié)點(diǎn)sendTx.js
9 . 在 Mempool 中查看您的交易
在您的 Alchemy 儀表板中打開Mempool 頁面,然后按您創(chuàng)建的應(yīng)用程序進(jìn)行過濾以查找您的交易。在這里我們可以看到我們的交易從掛起狀態(tài)到挖掘狀態(tài)(如果成功)或如果不成功則丟棄狀態(tài)。確保將其保持在“全部”,以便您捕獲“已開采”、“待處理”和“丟棄”的交易。您還可以通過查找發(fā)送至地址的交易來搜索您的交易0x31b98d14007bdee637298086988a0bbd31184523。
Web3 軟件庫
您可以使用以下庫與 EVM 兼容的區(qū)塊鏈進(jìn)行交互。
Python: 用于與以太坊交互的 Web3.py Python 庫。Web3.py 例子
Js: web3.js 以太坊 JavaScript API
Java: web3j Web3 Java Ethereum Dapp API
PHP:web3.php 用于與以太坊區(qū)塊鏈和生態(tài)系統(tǒng)交互的 php 接口。
web3.js 庫
web3.js 庫是一組模塊,其中包含以太坊生態(tài)系統(tǒng)的特定功能。
web3-eth用于以太坊區(qū)塊鏈和智能合約
web3-shh用于 whisper 協(xié)議通信 p2p 和廣播
用于 swarm 協(xié)議,去中心web3-bzz化文件存儲(chǔ)
包含對(duì) Dapp 開發(fā)人員有用的web3-utils輔助函數(shù)。
添加 web3.js
首先,您需要將 web3.js 添加到您的項(xiàng)目中。這可以使用以下方法完成:
國家公園管理委員會(huì):npm install web3
流星:meteor add ethereum:web3
純js:鏈接dist/web3.min.js
之后你需要?jiǎng)?chuàng)建一個(gè) web3 實(shí)例并設(shè)置一個(gè)提供者。
以太坊支持的瀏覽器如 Mist 或 MetaMask 將有一個(gè)ethereumProvider或web3.currentProvider可用。對(duì)于 web3.js,檢查Web3.givenProvider.
如果此屬性是null您應(yīng)該連接到遠(yuǎn)程/本地節(jié)點(diǎn)。