當前位置:首頁 » 幣種行情 » eth開發工具大全

eth開發工具大全

發布時間: 2023-01-21 04:15:31

❶ 【ETH錢包開發03】web3j轉賬ETH

在之前的文章中,講解了創建、導出、導入錢包。
【ETH錢包開發01】創建、導出錢包
【ETH錢包開發02】導入錢包

本文主要講解以太坊轉賬相關的一些知識。交易分為ETH轉賬和ERC-20 Token轉賬,本篇先講一下ETH轉賬。

1、解鎖賬戶發起交易。錢包keyStore文件保存在geth節點上,用戶發起交易需要解鎖賬戶,適用於中心化的交易所。

2、錢包文件離線簽名發起交易。錢包keyStore文件保存在本地,用戶使用密碼+keystore的方式做離線交易簽名來發起交易,適用於dapp,比如錢包。

本文主要講一下第二種方式,也就是錢包離線簽名轉賬的方式。

交易流程
1、通過keystore載入轉賬所需的憑證Credentials
2、創建一筆交易RawTransaction
3、使用Credentials對象對交易簽名
4、發起交易

注意以下幾點:

1、Credentials
這里,我是通過獲取私鑰的方式來載入 Credentials

還有另外一種方式,通過密碼+錢包文件keystore方式來載入 Credentials

2、nonce

nonce是指發起交易的賬戶下的交易筆數,每一個賬戶nonce都是從0開始,當nonce為0的交易處理完之後,才會處理nonce為1的交易,並依次加1的交易才會被處理。

可以通過 eth_gettransactioncount 獲取nonce

3、gasPrice和gasLimit
交易手續費由gasPrice 和gasLimit來決定,實際花費的交易手續費是 gasUsed * gasPrice 。所有這兩個值你可以自定義,也可以使用系統參數獲取當前兩個值

關於 gas ,你可以參考我之前的一篇文章。
以太坊(ETH)GAS詳解

gasPrice和gasLimit影響的是轉賬的速度,如果gas過低,礦工會最後才打包你的交易。在app中,通常給定一個默認值,並且允許用戶自己選擇手續費。

如果不需要自定義的話,還有一種方式來獲取。獲取以太坊網路最新一筆交易的 gasPrice ,轉賬的話, gasLimit 一般設置為21000就可以了。

Web3j還提供另外一種簡單的方式來轉賬以太幣,這種方式的好處是不需要管理nonce,不需要設置gasPrice和gasLimit,會自動獲取最新一筆交易的gasPrice,gasLimit 為21000(轉賬一般設置成這個值就夠用了)。

這個問題,我想是很多朋友所關心的吧。但是到目前為止,我還沒有看到有講解這方面的博客。

之前問過一些朋友,他們說可以通過區塊號、區塊哈希來判斷,也可以通過Receipt日誌來判斷。但是經過我的一番嘗試,只有 BlockHash 是可行的,在web3j中根據 blocknumber 和 transactionReceipt 都會報空指針異常。

原因大致是這樣的:在發起一筆交易之後,會返回 txHash ,然後我們可以根據這個 txHash 去查詢這筆交易相關的信息。但是剛發起交易的時候,由於手續費問題或者乙太網絡擁堵問題,會導致你的這筆交易還沒有被礦工打包進區塊,因此一開始是查不到的,通常需要幾十秒甚至更長的時間才能獲取到結果。我目前的解決方案是輪詢的去刷 BlockHash ,一開始的時候 BlockHash 的值為0x00000000000,等到打包成功的時候就不再是0了。

這里我使用的是rxjava的方式去輪詢刷的,5s刷新一次。

正常情況下,幾十秒內就可以獲取到區塊信息了。

區塊確認數=當前區塊高度-交易被打包時的區塊高度。

❷ 【ETH錢包開發02】導入錢包

本文主要講解通過助記詞、keystore、私鑰 3種方式來導入錢包。導入錢包就是說根據輸入的這3者中的一個去重新生成一個新的錢包。導入錢包的過程和創建的過程其實是差不多的。

根據助記詞導入錢包不需要原始密碼,密碼可以重新設置。根據用戶輸入的助記詞,先驗證助記詞的合規性(格式、個數等),驗證正確後,配合用戶輸入的密碼重新生成一個新的錢包。

驗證助記詞的合規性(格式、個數等)

助記詞導入錢包

通過私鑰導入錢包其實和創建錢包的過程基本一致。因為私鑰在導出的時候轉換成了16進制,所以在導入私鑰的時候,要把16進制轉換為byte數組。

keystore就是錢包文件,實際上就是錢包信息的json字元串。導入keystore是需要輸入密碼的,這個密碼是你最後導出keystore時的密碼。將keystore字元串變成walletFile實例再通過 Wallet.decrypt(password, walletFile); 解密,成功則可以導入,否則不能導入。

這是Web3j的API,程序走到這里經常OOM!

具體原因的話,我就不多說了,細節大家可以看這里
https://www.jianshu.com/p/41d4a38754a3

解決辦法
根據源碼修改 decrypt 方法,這里我用一個已經修改好的第三方庫

修改後的解密方法

導入Kestore

1、導入助記詞和私鑰是不需要以前的密碼的,而是重新輸入新的密碼;導入Keystore則需要以前的密碼,如果密碼不正確,會提示地址和私鑰不匹配。

2、關於備份助記詞
用過imtoken的同學可以看到imtoken是可以導出(備份)助記詞的。這個一開始我也很困惑,後來了解到其實它實在創建錢包的時候,在app本地保存了助記詞,導出只是講數據讀取出來而已。還有一點,imtoken一旦備份了助記詞之後,之後就沒有備份那個功能了,也就是說助記詞在本地存儲中刪除了;而且導入錢包的時候也是沒有備份助記詞這個功能的。

❸ 什麼是以太坊(Ethereum)imToken支持符合ERC20代幣

以太坊(Ethereum)是一個開源的有智能合約功能的公共區塊鏈平台。通過其專用加密貨幣以太幣(Ether,又稱「以太幣」)提供去中心化的虛擬機(稱為「以太虛擬機」Ethereum Virtual Machine)來處理點對點合約。以太坊的概念首次在2013至2014年間由程序員Vitalik Buterin受比特幣啟發後提出,大意為「下一代加密貨幣與去中心化應用平台」,在2014年通過ICO眾籌得以開始發展。
以太坊不僅是一個資料庫,它還允許你在區塊鏈的可信環境中運行程序。以太坊在區塊鏈上搭建了一個名為 EVM(Ethereum Virtual Machine,以太坊虛擬機)的虛擬機。EVM 允許在區塊鏈上驗證和執行代碼,為代碼在每個人的機器上以相同方式運行提供保障。這些代碼包含在智能合約中。除了追蹤賬戶余額,以太坊使用相同方法將 EVM 的狀態保存在區塊鏈上。所有節點處理智能合約,來驗證合約本身及其輸出的完整性。

❹ eth錢包開發(nodejs)(一)

tips: sendEthTransaction方法將eth轉賬和token轉賬合並,轉賬eth時將tokenValue賦值為0,轉賬token時將value賦值為0即可

❺ 代幣(ETH)空投工具

經過一段時間緊鑼密鼓的開發測試,代幣(ETH)空投工具已經上線啦。
代幣空投工具

該工具支持erc20代幣和eth的空投,具體操作方法如下:

之後合約會查出來該代幣的信息,用戶當前登錄的賬戶所擁有的賬戶總量,以及當前用戶對空投合約的代幣授信。
授信表示用戶允許合約代操作的代幣數量,空投前必須授信空投合約。
如果空投授信額度為0時,請點擊「點擊授信」按鈕,給空投合約授信。(即使授信合約,非您發起的空投請求也不會成功的,不用擔心代幣安全問題)

點擊授信後打開授信頁面,請輸入授信數量,比如您要空投1w用戶,每個用戶10個幣,授信數量就請填寫100000, 然後點擊確定。

確定後會發出一個交易請求,在metamask里點確認後,請耐心等待授信成功,期間可以通過metamask查交易進度。

刷新頁面查詢直到確認授信成功。

輸入每個賬戶的空投幣數量,同時也會顯示每一筆空投的手續費(合約收費)。
點擊上傳空投賬戶列表文件。
注意,這里的文件最好為txt或者csv格式,每一個地址一行。如果有多餘信息,每一行必須為逗號分隔,且用戶地址必須在第一列。

注意,這里你可以選擇空投批處理地址數量,比如有1w個地址要空投,批處理數量為100,那就需要空投100次。空投手續費按每次收取,因此批處理數量肯定是越大越好。

但是:以太坊每筆交易gas消耗量有上限,因此批處理數量是有上限的。

生成空投列表後,您可以點擊空投按鈕開始空投,這時會有兩種結果:

空投ETH跟空投代幣並沒有太大區別,只是代幣地址里直接填入0,另外也不需要設置授信。
注意發送ETH比發送代幣所需要的gas更多,因此批處理數量需要調低

如果您仍有擔心,可以先在Ropsten上測試,只需要把metamask接入網路換成ropsten,然後刷新頁面即可。
請注意,您需要在ropsten網路上重新部署代幣

該合約經過幾次迭代,已經穩定工作,已經有穩定的使用記錄可查。


❻ ETH開發實踐——批量發送交易

在使用同一個地址連續發送交易時,每筆交易往往不可能立即到賬, 當前交易還未到賬的情況下,下一筆交易無論是通過 eth.getTransactionCount() 獲取nonce值來設置,還是由節點自動從區塊中查詢,都會獲得和前一筆交易同樣的nonce值,這時節點就會報錯 Error: replacement transaction underpriced

在構建一筆新的交易時,在交易數據結構中會產生一個nonce值, nonce是當前區塊鏈下,發送者(from地址)發出的交易(成功記錄進區塊的)總數, 再加上1。例如新構建一筆從A發往B的交易,A地址之前的交易次數為10,那麼這筆交易中的nonce則會設置成11, 節點驗證通過後則會放入交易池(txPool),並向其他節點廣播,該筆交易等待礦工將其打包進新的區塊。

那麼,如果在先構建並發送了一筆從地址A發出的,nonce為11的交易,在該交易未打包進區塊之前, 再次構建一筆從A發出的交易,並將它發送到節點,不管是先通過web3的eth.getTransactionCount(A)獲取到的過往的交易數量,還是由節點自行填寫nonce, 後面的這筆交易的nonce同樣是11, 此時就出現了問題:

實際場景中,會有批量從一個地址發送交易的需求,首先這些操作可能也應該是並行的,我們不會等待一筆交易成功寫入區塊後再發起第二筆交易,那麼此時有什麼好的解決辦法呢?先來看看geth節點中交易池對交易的處理流程

如之前所說,構建一筆交易時如果不手動設置nonce值,geth節點會默認計算發起地址此前最大nonce數(寫入區塊的才算數),然後將其加上1, 然後將這筆交易放入節點交易池中的pending隊列,等到節點將其打包進區塊。

構建交易時,nonce值是可以手動設置的,如果當前的nonce本應該設置成11, 但是我手動設置成了13, 在節點收到這筆交易時, 發現pending隊列中並沒有改地址下nonce為11及12的交易, 就會將這筆nonce為13的交易放入交易池的queued隊列中。只有當前面的nonce補齊(nonce為11及12的交易被發現並放入pending隊列)之後,才會將它放入pending隊列中等待打包。

我們把pending隊列中的交易視為可執行的,因為它們可能被礦工打包進最新的區塊。 而queue隊列因為前面的nonce存在缺失,暫時無法被礦工打包,稱為不可執行交易。

那麼實際開發中,批量從一個地址發送交易時,應該怎麼辦呢?

方案一:那麼在批量從一個地址發送交易時, 可以持久化一個本地的nonce,構建交易時用本地的nonce去累加,逐一填充到後面的交易。(要注意本地的nonce可能會出現偏差,可能需要定期從區塊中重新獲取nonce,更新至本地)。這個方法也有一定的局限性,適合內部地址(即只有這個服務會使用該地址發送交易)。

說到這里還有個坑,許多人認為通過 eth.getTransactionCount(address, "pending") ,第二個參數為 pending , 就能獲得包含本地交易池pending隊列的nonce值,但是實際情況並不是這樣, 這里的 pending 只包含待放入打包區塊的交易, 假設已寫入交易區塊的數量為20, 又發送了nonce為21,22,23的交易, 通過上面方法取得nonce可能是21(前面的21,22,23均未放入待打包區塊), 也可能是22(前面的21放入待打包區塊了,但是22,23還未放入)。

方案二是每次構建交易時,從geth節點的pending隊列取到最後一筆可執行交易的nonce, 在此基礎上加1,再發送給節點。可以通過 txpool.content 或 txpool.inspect 來獲得交易池列表,裡面可以看到pending及queue的交易列表。

啟動節點時,是可以設置交易池中的每個地址的pending隊列的容量上限,queue隊列的上容量上限, 以及整個交易池的pending隊列和queue隊列的容量上限。所以高並發的批量交易中,需要增加節點的交易池容量。

當然,除了擴大交易池,控制發送頻率,更要設置合理的交易手續費,eth上交易寫入區塊的速度取決於手續費及eth網路的擁堵狀況,發送每筆交易時,設置合理的礦工費用,避免大量的交易積壓在交易池。

❼ 【ETH錢包開發04】web3j轉賬ERC-20 Token

在上一篇文章中講解了ETH轉賬,這一篇講一下ERC-20 Token轉賬。
【ETH錢包開發03】web3j轉賬ETH

1、直接用web3j的API
2、java/Android調用合約的 transfer 方法

不管用哪種方式來轉賬,你都需要先寫一個solidity智能合約文件來創建ERC-20 Token,然後部署合約,最後才是通過客戶端來調用。

注意:erc-20 token轉賬和eth轉賬的區別如下:
1、erc-20 token創建交易對象用的是這個方法 createTransaction

2、erc-20 token需要構建 Function ,它其實對應的就是erc-20 token合約中的那些方法。它的第一個參數就是ERC20中那幾個方法的名稱,第二個參數的話就是對應合約方法中的參數,第三個參數是和第二個參數對應的,按照我那樣就行了。轉賬的話就是 transfer ,我們從合約的 transfer 可以看到第一個參數是收款地址,第二個參數是金額,所以 Function 這里對應起來就好。

這種方法不需要使用web3j封裝的方法,而是直接調用solidity合約的方法。

步驟
1、web3j載入一個已經部署的合約
2、驗證合約是否載入成功 isValid
3、如何載入合約成功,則調用合約的 transfer 方法

注意:
1、這里的 TokenERC20 是根據solidity智能合約生成的對應的Java類,用於java/Android和智能合約交互的,如果你對這里不太清楚,不妨看看我之前的一篇文章。
以太坊Web3j命令行生成Java版本的智能合約

2、如果載入合約失敗,可能的一個原因是合約對應的Java類中的 BINARY 的值不對,這個值是你部署合約成功之後的bytecode,你最好檢查對比一下。

我發送一筆交易,可以通過這個地址查詢
https://rinkeby.etherscan.io/tx/

❽ 以太坊落地應用有哪些

Giten、Cent、Veil等等。
01、Giten:激勵開源開發者的網路。02、Cent:可以通過發帖賺錢的社交網路。03、Veil:基於真實世界事件下注的交易平台。04、CryptoKittes:收藏和養育數字貓的游戲。05、DAI:穩定加密貨幣,1DAI對應1美元。06、Status聊天工具、加密貨幣錢包。07、uPort:安全的身份和數據管理工具。08、Brave:一個看廣告有收益的安全Web瀏覽器。09、Opera,Dapp瀏覽器和加密錢包10。EthereumNameService,以太坊名稱服務ENS,創建個性化名稱對應錢包地址。11、Civic:安全的身份和數據管理工具。12、SelfKe:自我管理的身份系統。13、Alethio:以太坊網路分析平台。
以太坊是一個開源的,能讓大家自由開發智能合約的區塊鏈公共平台,就像互聯網中安卓,Windows系統一樣,它能提供一套專門的腳步語言,讓大家可以隨意地在上面開發。

❾ 以太坊鏈上數據查詢工具: https://eth.tokenview.com/cn

etherscan.io目前在國內無法訪問,現在向大家推薦這個以太坊數據查詢工具, https://eth.tokenview.com/cn ,數據來自他們自己的以太坊節點,數據同步速度快。

四個優勢:

數據支持以太坊上的區塊信息,地址余額,轉賬交易,以太坊所有Token,基於以太坊發行的穩定幣。

鏈上存儲的數據(inputdata)可以解碼成普通語言,我們可以查看在以太坊上的留言。

幾十種鏈上數據圖表,同時有為高級數據分析師提供的Metrics模塊。

由中國團隊Tokenview開發,在國內可高速訪問。

❿ 有沒有ETH以太坊批量發幣工具

這些一般都是他們會拉qq群,然後的微信群就是在群裡面賣的比較多。

熱點內容
逆水寒挖礦可以干什麼 發布:2024-05-04 19:19:09 瀏覽:209
比特幣浪費能源怎麼樣 發布:2024-05-04 17:52:40 瀏覽:295
幣圈大佬趙東是不是逮起來了 發布:2024-05-04 17:49:17 瀏覽:120
區塊鏈應用與投資峰會 發布:2024-05-04 17:38:05 瀏覽:885
美國用區塊鏈開發應用 發布:2024-05-04 17:21:32 瀏覽:572
區塊鏈源於比特幣嗎 發布:2024-05-04 17:19:59 瀏覽:614
區塊鏈的雲伺服器租用 發布:2024-05-04 16:56:35 瀏覽:411
D訊數字貨幣登錄不了驗證碼 發布:2024-05-04 16:42:40 瀏覽:473
冒險與挖礦寶具卷 發布:2024-05-04 16:36:44 瀏覽:344
2018年區塊鏈會議 發布:2024-05-04 15:15:27 瀏覽:67