以太坊客戶端命令
1. Geth 控制台使用及 Web3.js 使用
在以太坊的DAPP開發中,需要 頁面開發 和 智能合約 開發,頁面開發需要 H5 , 智能合約 開發用 Solidity 實現。頁面和以太坊智能合約交互,就需要使用 Web3.js 。
Geth 控制台(REPL)實現了所有的 web3 API 及 Admin API ,如果你對Geth命令行不太熟悉,請參考之前的文章。
以太坊客戶端Geth常用命令詳解
重定向日誌到文件
使用geth console啟動時,會在當前的交互界面下時不時出現日誌。
可以使用以下方式把日誌輸出到文件。
可以新開一個命令行終端輸入以下命令查看日誌:
重定向另一個終端
也可以把日誌重定向到另一個終端,先在想要看日誌的終端輸入:
就可以獲取到終端編號,如:/dev/test
然後另一個終端使用:
啟動geth, 這是日誌就輸出到另一個終端。
如果不想看到日誌還可以重定向到空終端:
日誌級別控制
使用–verbosity可以控制日誌級別,如不想看到日誌還可以使用:
另外一個啟動geth的方法是連接到一個geth節點:
2. 以太幣挖礦,用什麼來挖
以太幣挖礦教程
1、在硬碟上新建文件夾,比C:Eth。之後所有挖礦軟體就存放在這里。
2、下載以下軟體
1)Geth——選擇Geth-Win下載然後解壓
2)Ethminer——下載解壓到同一個文件夾,重命名為「miner」
3)Ethereum Wallet(以太坊錢包)——下載Win以太坊錢包,解壓之後重命名「wallet」
安裝好所有軟體
3、打開命令提示符(同時點擊Win和R鍵或者點擊開始菜單然後輸入cmd)。命令提示符是命令行解析器,讓你在操作系統中執行命令輸入的軟體。
之後你就擁有以太坊錢包了。但是沒有餘額,所以接下來你需要建立ethminer。暫時可以最小化錢包了。
挖礦
3. 選擇以太坊客戶端
有很多以太坊客戶端供我們選擇。我們推薦在開發和部署時使用不同的客戶端。
我們推薦 Ganache ,它是一個運行在你個人電腦上的私有連客戶端。它是 truffle 套種中的一部分,
Ganache 將智能合約和交易放在前台並且中心化,從而簡化了dapp的開發。使用 Ganache 你可以
快速查看你們的應用是如何影響區塊鏈的,並且對賬戶,余額,智能合約創建以及燃料消費進行自省。
Ganache 運行在 http://127.0.0.1:7545 。默認會創建是個賬戶,重啟後賬戶依然不會變,
當然也可以手動隨機賬戶,你也可以用你自己的賬戶。
我們同樣也推薦使用 truffle develop ,它是 truffle 內置的開發鏈工具。不需要任何的額外安裝,
你要使用它只需要一條命令行即可:
Truffle Develop 運行在 http://127.0.0.1:9545 上。
當你的開發機沒有圖形界面時就無法直接使用 Ganache ,而 Ganache CLI 就提供了沒有圖形界面系統的能力。
有很多官方和非官網的以太坊客戶端你可以選擇。以下是部分:
4. Foundry的基本使用總結
本文列舉了 foundry 中常用的命令,方便後續查閱。使用 foundry 的工具主要涉及三大組件,分別對應不同的功能,接下來將詳細介紹每個組件的使用方法和應用場景。
在使用 foundry 之前,需要先安裝。可以通過訪問 foundry 的官方網址 getfoundry.sh 進行安裝。對於 mac 系統用戶,可以使用以下命令進行安裝:
foundry
foundry 工具包含三大組件,分別是 cast、anvil 和 forge。
**cast 使用**
cast 是用於執行以太坊 RPC 調用的命令行工具。它支持智能合約調用、發送交易和檢索鏈數據等操作。cast 與 web3 的交互十分便捷,即使是非代碼開發者也能輕松使用進行鏈上數據查詢。
使用示例:
cast rpc eth_blockNumber --rpc-url=$ETH_RPC_URL
cast 支持環境變數 ETH_RPC_URL,讀取時無需在命令中體現,只需設置該變數即可。
**cast 查詢功能**
- **區塊高度**:使用 `cast rpc eth_blockNumber` 查詢。
- **區塊信息**:使用 `cast block` 查詢。
- **交易信息**:使用 `cast tx` 查詢。
- **交易回執查詢**:使用 `cast receipt` 查詢。
**使用 jq 進行數據處理**
`jq` 是一個靈活的輕量級命令行 JSON 處理器,用於處理 JSON 輸入並生成 JSON 輸出。可應用於處理 cast 查詢結果。
**交易模擬**
`cast run` 命令可用於模擬交易,以進行測試或研究特定交易場景。
**錢包相關功能**
`cast wallet new` 可創建新錢包,通過 `cast wallet sign` 進行簽名操作。此外,`cast resolve-name` 和 `cast lookup-address` 功能用於 ENS 查詢。
**合約相關功能**
在使用查看源代碼功能前,需設置 `ETHERSCAN_API_KEY` 環境變數。`cast etherscan-source` 可用於查看合約源代碼,通過 `-d` 參數保存結果。調用合約函數則使用 `cast call`。
查詢合約存儲位置的 `cast index` 命令可根據類型、鍵和槽位編號計算存儲位置。
**anvil 使用**
`anvil` 提供了模擬從主網 fork 的功能,通過 `casat —fork-url=$ETH_RPC_URL` 實現。常用命令參數包括 `—accounts`、`—balance` 和 `—fork-block-number`。
**forge-智能合約開發框架**
`forge init` 命令初始化項目,`forge build` 編譯代碼,`forge test` 進行自動化測試。日誌列印可通過 `emit log` 或 `console2.log` 實現,確保在使用 `forge test` 時使用 `—vvv` 參數以顯示列印內容。
`cheatcode` 功能允許在測試合約中通過 `vm` 修改虛擬機狀態,如 `vm.warp` 修改時間戳、`vm.startPrank` 和 `vm.stopPrank` 修改發件人、`vm.deal` 修改余額等。
`forge snapshot` 功能允許在每個測試用例的 gas 使用上創建快照,有助於優化 gas 費用。
**代碼示例**
### 修改 ERC20 代幣余額
在進行 ERC20 代幣余額修改時,可以使用 `vm.deal` 函數。如果在測試環境中未部署 ERC20 合約,可通過 fork-url 直接使用主網的 ERC20 合約。
### fork-url 在代碼中的實現
在代碼中實現 fork-url 可以通過 `vm.envAddress` 函數讀取 vm 中的環境變數地址,進而實現針對不同測試網路的靈活測試用例編寫。
本文詳細介紹了 foundry 的基本使用方法,旨在為開發者提供便捷的工具鏈,提高智能合約開發和測試的效率。通過上述指南,開發者能夠更加熟練地掌握 foundry 的核心功能,為區塊鏈項目開發提供有力支持。
5. 如何顯示挖礦的成果
這個鏈接。如果你在本地啟動了Geth客戶端的話,頁面會顯示出如下信息:
在Balance(ethers)的下面就能看到賬戶的余額。單位是以太。
2.在命令行執行,geth console.啟動以太坊的控制終端。
在出現">"提示符後,輸入web3.fromWei(eth.getBalance(eth.coinbase), "ether")後,按回車確定。
就會顯示出帳號的余額。單位是以太。
6. 在windows下怎麼啟動Truffle
Truffle是一個世界級的開發環境,測試框架,以太坊的資源管理通道,致力於讓以太坊上的開發變得簡單,Truffle有以下:
內置的智能合約編譯,鏈接,部署和二進制文件的管理。
快速開發下的自動合約測試。
腳本化的,可擴展的部署與發布框架。
部署到不管多少的公網或私網的網路環境管理功能
使用EthPM&NPM提供的包管理,使用ERC190標准。
與合約直接通信的直接交互控制台(寫完合約就可以命令行里驗證了)。
可配的構建流程,支持緊密集成。
在Truffle環境里支持執行外部的腳本。
Truffle是最流行的開發框架,使命是讓開發更容易
安裝方式:
$ npm install -g truffle
環境要求
NodeJS 5.0+
Windows,Linux,或Mac OS X
Truffle需要以太坊客戶端,需要支持標準的JSON RPC API。對於開發來說,有一些更適合,後續章節會介紹(如:testRPC提供編碼調試時的實時反饋)。
Windows用戶的建議
如果你是Windows用戶,我們推薦你使用Powershell或Git BASH來安裝和使用Truffle框架。這兩個shell環境相對默認的,提供了更方便的一些特性。
如果你必須使用命令行,可以看這里的關於如何配置Truffle的討論。
7. ETH轉賬的2種方式的對比
web3j支持使用以太坊錢包文件(推薦)和乙太網客戶端管理命令來發起一筆交易。當你創建了一個擁有以太幣的賬戶後,你可以通過以下兩種交易機制,和以太坊網路(私網/公網)交易:
這里主要講一下 線下簽名交易(Offline transaction signing) 。線下簽名交易允許你使用web3j提供的錢包賬戶發起交易,你完全控制自己的私鑰,交易發送到網路上的其它節點並廣播。
線下簽名交易使用 RawTransaction 對象來完成,一共有如下幾步:
1、通過私鑰或密碼+錢包文件(keystore)來載入轉賬憑證Credentials
2、獲取發起轉賬賬戶的nonce 值,也就是第幾筆交易
3、創建 RawTransaction交易 對象
4、簽名 RawTransaction 對象,也就是對交易做簽名
5、發送交易( RawTransaction 對象)給節點處理。
6、獲取交易哈希值TxHash
以太坊實戰-再談nonce使用陷阱: https://blog.csdn.net/wo541075754/article/details/79054937
此外,還有一種簡單的轉賬方式
這種方式,不需要自己管理nonce。
這2種方式都是離線交易,先組裝交易,然後發送到鏈上。
參考:
https://docs.web3j.io/getting_started.html#transactions
https://www.jianshu.com/p/6650d2a3aea9