Ⅰ 以太坊轉賬流程
發起:用戶在本地的以太坊錢包軟體中選擇要發送的交易地址(From)、輸入目標地址(To)、金額(Value)、是否部署或調用合(Data)、手續費單價(Gasprice)等,確認發送至以太坊節點節點和錢包可以是同一台
廣播:節點收到(或自己發起)交易後,會對交易進行驗證。驗證:交易的簽名、發起賬號的余額是否能支付轉賬余額與手續費、Nonce是否為賬號已發出的交易數。驗證為合法後,將交易加入節點的交易池中交易池中存儲著待打包的交
安裝以太坊瀏覽器錢包插件,創建錢包,獲取虛擬以太幣,進行轉賬交易。 實驗內容 學習 初識以太坊,發送交易 1.學習《初始以太坊,發送交易》,虛擬以太幣交易。
Ⅱ 關於交易確認數的來龍去脈
在使用 imToken 進行轉賬的時候,如果注意查看交易記錄,會看到一個進度條,進度條右邊有個如下圖所示 「4/12」 字樣的數字,並且過幾秒鍾這個數字會變為 「5/12」,「6/12」 ... 一直到 「12/12」。這里顯示的就是確認數,「4/12」 表示這筆交易需要 12 個確認,當前已經有了 4 個確認。
在 etherscan 上查看交易的時候,如果注意觀察,在 Block Height 這一欄,會顯示 xxxx(xxx block confirmations) 的字樣,在下圖這個例子中,顯示的就是 6246347(21325 block confirmations)。這裡面的 「21325 block confirmations」 就是說明該交易已經有了 21325 個區塊確認,過段時間再看同一個交易,這個確認數會不斷增加。
上面我們看到 imToken 和 etherscan 上顯示的都有交易的確認數。那麼究竟什麼是 「確認」,我們該如何理解它呢?
這就和區塊鏈的鏈式結構有關了,一個極度抽象的區塊鏈的鏈式結構是下面這個樣子的。
當我們提交一個交易,正常情況下,這個交易最終會被礦工放到某個區塊中,這個時候,我們可以說,這筆交易獲得了 0 個確認。當有另外一個區塊鏈到這筆交易所在區塊,也就是把這筆交易所在區塊為父區塊時,我們就說這筆交易獲得了 1 個確認,以此類推。一筆交易獲得了多少個確認,就是這筆交易所在區塊後面又鏈接了多少個區塊。
那問題又來了,交易被打包到交易裡面不就可以了么?為啥還要關注確認數呢?
因為區塊鏈有可能分叉啊!!!
公式很簡單:確認數 = 當前區塊高度 - 指定交易所在區塊高度
有的同學可能直接就知道怎麼做了:
有毛病么?
毛病大了
這樣去算確認數,和不算沒有區別。
正確的做法是怎樣的呢?
看到差別了么?
比特幣是 6 個確認,以太坊是 12 個確認,EOS 是 15 個確認。
一般來說,發生跨主體資產轉移的交易,最好都進行確認數監控。常見的場景是從第三方接收一筆轉賬。
像通過智能合約批量給用戶空投代幣這種場景,我看就算了吧,你說呢?
實際做項目的時候,很多同學都不知道怎麼去算這個確認數。寫下此文,希望能給你帶來一些幫助。還有什麼不清楚的,歡迎給我留言或加我微信聯系。
Ⅲ 【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刷新一次。
正常情況下,幾十秒內就可以獲取到區塊信息了。
區塊確認數=當前區塊高度-交易被打包時的區塊高度。
Ⅳ 以太幣轉帳速度
兩小時至24小時以內。
可根據轉賬支付的礦工費,快的一分鍾能到,慢的也能在幾分鍾到。一般來說轉賬BTC,ETH等其它代幣到賬的時間在兩個小時以內,快的情況也大概需要30分鍾,所以轉賬請把握好到賬時間。
以太坊已經做到了每秒處理5次交易,如果它超過6,那麼它也處於峰值容量。另一方面,Uber平均每秒鍾有12次乘車,PayPal幾百次,Visa數千次,大型股票交易所成千上萬,而在物聯網中,討論的是每秒數十萬。
Ⅳ 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
Ⅵ 浠ュお鍧婂備綍鎵歸噺杞璐﹀憿
浠ュお鍧婃壒閲忚漿璐︾殑榪囩▼濡備笅錛1.鐢ㄦ埛鎵撳紑姣旂壒媧撅紝鍦ㄥ乏涓婅掑垏鎹㈠埌鈥淓TH 浣撶郴鈥濈偣鍑 鈥滄壒閲忚漿璐︹濄傜敤鎴瘋繘鍏ユ搷浣滈〉闈㈠悗錛岄栧厛紜璁よ嚜宸辯敤鏉ヤ粯嬈劇殑鐨勫竵縐嶃佸湴鍧銆傜劧鍚庣偣鍑燴滃姞鍙封濇潵娣誨姞鏀舵炬柟淇℃伅銆2.鐢ㄦ埛鍙浠ラ夋嫨鈥滀粠鍓璐存澘鑾峰彇鈥濇垨鑰呪滄墜鍔ㄨ緭鍏モ濇敹嬈炬柟淇℃伅銆傚綋鐢ㄦ埛閫夋嫨浠庡壀璐存澘鑾峰彇鏃訛細鐢ㄦ埛闇瑕佹寜鍥哄畾鏍煎紡鎻愬墠澶嶅埗濂界浉鍏沖唴瀹癸紝鍐嶇偣鍑繪ゆ寜閽鎵嶅彲娣誨姞鎴愬姛銆傚傛灉鐢ㄦ埛瑕佸勭悊鐨勫湴鍧杈冨氾紝寤鴻浣跨敤鐢佃剳琛ㄦ牸杞浠惰繘琛屾暣鐞嗭紝鏁寸悊瀹屾垚鍚庯紝鍙閫氳繃寰淇$瓑鍏朵粬杞浠跺皢鍐呭瑰彂閫佸埌鎵嬫満騫跺嶅埗錛屾墦寮鎵歸噺杞璐﹂〉闈㈢偣鍑誨姞鍙+錛岄夋嫨浠庡壀璐存澘澶嶅埗錛屽嵆鍙鎵歸噺娣誨姞鏀舵句俊鎮銆傚綋鐢ㄦ埛閫夋嫨鎵嬪姩杈撳叆鏃訛細鍙浠ユ墜鍔ㄨ緭鍏ュ湴鍧銆侀噾棰濄備篃鍙浠ラ氳繃鎵鐮併佸湴鍧綈挎坊鍔犵瓑鏂瑰紡娣誨姞鍦板潃銆3.鍦板潃淇℃伅娣誨姞瀹屾垚騫剁『璁ゆ棤璇鍚庯紝鐐瑰嚮紜璁よ漿璐︼紝鏍稿瑰ソ鐩稿叧淇℃伅鍚庣偣鍑葷『璁わ紝鍗沖彲鍙戝嚭銆傜瓑寰呭悎綰︾『璁ゅ悗錛屼究鍙鏌ョ湅鎵鏈夌殑杞璐﹁︽儏銆
鎴戜滑閫氳繃浠ヤ笂鍏充簬浠ュお鍧婂備綍鎵歸噺杞璐﹀憿鍐呭逛粙緇嶅悗,鐩鎬俊澶у朵細瀵逛互澶鍧婂備綍鎵歸噺杞璐﹀憿鏈変竴瀹氱殑浜嗚В,鏇村笇鏈涘彲浠ュ逛綘鏈夋墍甯鍔┿
Ⅶ 楸兼睜閲岀殑浠ュお鍧婃庝箞鏍蜂氦
楸兼睜閲岀殑浠ュお鍧婃庝箞浜ゆ槗
濡傛灉浣犲湪楸兼睜閲岀殑浠ュお鍧婇挶鍖呴噷鏈変竴瀹氱殑浠ュお甯侊紝浣犲彲浠ュ湪閽卞寘閲岃繘琛屼氦鏄撱
鍏蜂綋姝ラゅ備笅錛
1.鎵撳紑浠ュお鍧婇挶鍖咃紝榪涘叆鈥滀氦鏄撯濋〉闈銆
2.鐐瑰嚮鈥滃彂閫佲濇寜閽錛屽~鍐欎氦鏄撶殑鐩鏍囧湴鍧鍜岃漿璐﹂噾棰濈瓑淇℃伅銆
3.紜璁や氦鏄撲俊鎮鏃犺鍚庯紝鐐瑰嚮鈥滃彂閫佷氦鏄撯濇寜閽銆
4.緋葷粺浼氭彁紺轟綘杈撳叆閽卞寘瀵嗙爜榪涜岀『璁わ紝杈撳叆瀵嗙爜鍚庣『璁や氦鏄撱
5.浜ゆ槗鍙戦佹垚鍔熷悗錛屼綘鍙浠ュ湪鈥滀氦鏄撹板綍鈥濋〉闈㈡煡鐪嬩氦鏄撶殑鐘舵佸拰浜ゆ槗璇︽儏銆
闇瑕佹敞鎰忕殑鏄錛屽湪榪涜屼互澶鍧婁氦鏄撴椂錛岄渶瑕佹敮浠樹竴瀹氱殑鐕冩皵璐癸紙GasFee錛夛紝榪欐槸鐢ㄦ潵鏀浠樹氦鏄撴墜緇璐圭殑銆傜噧姘旇垂鐨勫ぇ灝忓彇鍐充簬浜ゆ槗鐨勫嶆潅紼嬪害鍜岀綉緇滄嫢鍫墊儏鍐電瓑鍥犵礌錛岀噧姘旇垂瓚婇珮錛屼氦鏄撶殑澶勭悊閫熷害瓚婂揩銆傚洜姝わ紝濡傛灉浣犲笇鏈涗氦鏄撹兘澶熷敖蹇寰楀埌澶勭悊錛屽彲浠ラ傚綋鎻愰珮鐕冩皵璐圭殑閲戦濄
Ⅷ 別人轉賬給我,結果顯示資金凍結了24小時後,等待賬戶自動恢復,該怎麼辦
日常生活中的轉賬和區塊鏈轉賬有著本質上的不同,這種不同造成了區塊鏈轉賬狀態理解上的復雜。
我們會看到「等待確認」「確認中」「交易失敗」「成功」等狀態,其中有些屬於區塊鏈轉賬的特有狀態。
銀行轉賬
日常生活中的轉賬往往有兩個步驟:支付和清算。
平常我們通過支付寶消費、銀行卡轉賬,都屬於「支付」,本質是信息的記錄,記下一個債權債務憑證。而這種憑證需要被落實,也就是「清算」,本質是資金的流動。
一個常見的情形:
從我的招行卡往你的工行卡上轉賬 200 塊。
這個過程有兩個步驟:
當我成功轉給你 200 塊,這一步對你和我來說是「支付」,本質是信息流;對招行和工行而言,則是建立債權債務關系,它記了一張欠條:招行欠工行 200 塊。
然後是銀行們定期在央行清算系統中落實彼此間復雜的債權關系(第一步中的「招行欠工行 200 塊」是千絲萬縷之一)。這時,就是通過「清算」將信息流變成了真實的資金流。
對我們來說,第一步中轉賬按鈕一確定,你放心我也放心。可實際到這里,只是第一步,往後真正耗時的操作無聲無息地隱藏在整個金融基礎設施和系統的周期運轉中。它們不為常人道,卻是我們便利金融生活的基石。
Photo by José Martín Ramírez C on Unsplash
區塊鏈轉賬
它有支付和清算嗎?這個概念其實在這里不存在了。區塊鏈轉賬將這兩步驟合二為一,鏈上的每一筆轉賬都記錄著真實的資金流動。
區塊鏈作為一個公共賬本,公開透明,不可篡改。
也正因此,在它上面的轉賬有更復雜的狀態,這個賬本不容有錯,必須謹慎記錄。
所以我們看到這些狀態:「等待確認」「確認中」「交易失敗」與「成功」
「等待確認」:等待礦工確認轉賬信息,打包到區塊中;
「確認中」:一個區塊確認不夠安全,需要多些確認,這樣我們就能理解為什麼以太坊轉賬需要 12 個區塊確認才算作成功;
「交易失敗」:如果你給的礦工費不夠,不足以讓礦工確認轉賬信息,就會失敗(也可能是其他原因導致);
「成功」:此時,你的轉賬記錄就在區塊鏈賬本上,不可篡改,記錄可查。