eth錢包keystore
⑴ 一步一步教你使用以太坊錢包
下面開始介紹myetherwallet
記住,這個錢包只支持如下幾種
ETH、ETC、和符合ERC20協議的token,
其他 不支持的幣不要轉進來(轉進來會丟失)
瀏覽器打開網站:
https://www.myetherwallet.com
在頁面右上角選擇你喜歡的語言,如下圖所示
第一步 創建錢包
輸入密碼(至少9位)
下載keystore文件(這里保存你的公鑰和私鑰)
保存你的私鑰
初次解鎖錢包(建議一定要多試下第二步,不要立馬就轉幣進去,否則有可能你沒記住密碼或者keystore沒放好,多試幾次可以讓你更加熟悉)
一般初次點擊解鎖之後,頁面可能不刷新,直接滑鼠往下滾下來就看到你的錢包信息了
第二步 查看錢包信息
當你完成了第一步,錢包就已經建好了。
這一步只是教你平時怎麼打開錢包看看裡面的余額之類的
你的ETH的余額和交易歷史
你的所有代幣token的余額和交易歷史
第三步 接收和發送ETH及其他token代幣
接收ETH和其他的代幣token(這個錢包所支持的,點擊show all tokens看所有支持的代幣)
都用同一個地址即可,不需要任何額外的標記或操作
點擊左上角 發送以太幣/發送代幣,選擇keystoreFile,
上傳keystore文件,填寫密碼,解鎖賬號
3.發送給別人ETH或代幣的時候,你就要輸入對方對應的ETH地址或代幣地址,不要填錯,
比如你要發送到你的交易平台,如果發送EOS,這里就要放你交易平台的EOS的充值地址,
而不是放ETH充值地址,當然你還需要在下面這個下拉菜單這里選擇一下相應的代幣類型,
比如EOS
⑵ 【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刷新一次。
正常情況下,幾十秒內就可以獲取到區塊信息了。
區塊確認數=當前區塊高度-交易被打包時的區塊高度。
⑶ iOS開發ETH錢包
框架:web3swift => https://github.com/matter-labs/web3swift
1、創建錢包
2、導入錢包
3、獲取余額
4、轉賬
5、調用智能合約
注意:
1、網路的切換
測試網 let web3 = Web3.InfuraRinkebyWeb3()
主網 let web3 = Web3.InfuraMainnetWeb3()
2、轉賬相關的,必須配置
KeystoreManager
TransactionOptions
3、調用智能合約,參數不對,會直接返回nil
⑷ Imtoken錢包「地址、密碼、私鑰、助記詞、 Keystore」
imToken在使用之前,有幾個名詞必須深刻理解,不然就有可能造成區塊鏈資產的損失,這幾個名詞為地址、密碼、私鑰、助記詞、keystore。
若以銀行賬戶為類比,這 5 個詞分別對應內容如下:
地址=銀行卡號
密碼=銀行卡密碼
私鑰=銀行卡號+銀行卡密碼
助記詞=銀行卡號+銀行卡密碼
Keystore+密碼=銀行卡號+銀行卡密碼
Keystore ≠ 銀行卡號
地址=銀行卡號
1.生成
創建錢包後會生成一個以 0x 開頭的 42 位字元串,這個字元串就是錢包地址,一個錢包對應一個錢包地址,地址唯一且不能修改,也就是說一個錢包中所有代幣的轉賬收款地址都是一樣的。例如,一個錢包中 ETH 的轉賬收款地址和 EOS 的轉賬收款地址是一樣。這一點和交易平台上的不一樣,平台上不同代幣的轉賬收款地址一般都不同,因此,轉幣到交易平台前一定要確認好地址。
2.用途
錢包地址可以用於接收別人轉幣,也可以作為轉幣的憑證。
密碼=銀行卡密碼
1.設定
在創建錢包時,需要設定一個密碼,這個密碼要求不少於 8 個字元,為了安全,密碼最好設置復雜一點。密碼可以進行修改或重置,修改密碼有兩種方法,一是直接修改密碼,這需要輸入原密碼。如果原密碼忘記了,用助記詞或私鑰導入錢包,同時設置新密碼。
2.用途
密碼的用途有兩個,一是轉賬時候的支付密碼,二是用 keystore 導入錢包時的登錄密碼。
3.特徵
在現實世界中,一個銀行卡只對應一個密碼,對密碼修改後,原密碼就失去作用。但是在 imToken 錢包中,就不一樣了,一個錢包在不同手機上可以用不同的密碼,彼此相互獨立,互不影響。例如,在 A 手機錢包中設置了一個密碼,在 B 手機導入這個錢包並設置一個新密碼,並不影響 A 手機錢包的密碼使用。
私鑰=銀行卡號+銀行卡密碼
1.導出
創建錢包後,輸入密碼可以導出私鑰,這個私鑰屬於明文私鑰,由 64 位字元串組成,一個錢包只有一個私鑰且不能修改。
2.用途
在導入錢包中,輸入私鑰並設置一個密碼(不用輸入原密碼),就能進入錢包並擁有這個錢包的掌控權,就可以把錢包中的代幣轉移走。
助記詞=銀行卡號+銀行卡密碼
助記詞=私鑰
1.備份
創建錢包後,會出現一個備份助記詞功能,選擇備份助記詞,輸入密碼,會出現 12 個單詞,每個單詞之間有一個空格,這個就是助記詞,一個錢包只有一個助記詞且不能修改。
2.用途
助記詞是私鑰的另一種表現形式,具有和私鑰同樣的功能,在導入錢包中,輸入助記詞並設置一個密碼(不用輸入原密碼),就能進入錢包並擁有這個錢包的掌控權,就可以把錢包中的代幣轉移走。
3.特徵
助記詞只能備份一次,備份後,在錢包中再也不會顯示,因此在備份時一定要抄寫下來。
keystore+密碼=銀行卡號+銀行卡密碼
Keystore ≠ 銀行卡號
keystore=加密私鑰
keystore+密碼=私鑰
1.備份
錢包里有一個備份 keystore 功能,選擇備份 keystore,輸入密碼,會出現一大段字元,這個就是 keystore。
2.用途
在導入錢包中,選擇官方錢包,輸入 keystore 和密碼,就能進入錢包了。需要說明的是,這個密碼是本手機原來設置的本錢包密碼, 這一點和用私鑰或助記詞導入錢包不一樣,用私鑰或助記詞導入錢包,不需要知道原密碼,直接重置密碼。
3.特徵
keystore 屬於加密私鑰,和錢包密碼有很大關聯,錢包密碼修改後,keystore 也就相應變化,在用 keystore 導入錢包時,需要輸入密碼,這個密碼是備份 keystore 時的錢包密碼,與後來密碼的修改無關。
六、結語
在現實世界中,如果你的銀行卡丟了,密碼忘了,可以去銀行幫你找回,你的錢還是你的錢,丟不了,這是中心化的優勢。
但是在區塊鏈世界中,除了你自己,沒有人存儲你的錢包信息,錢包信息要是丟了,沒人能夠幫你找回,錢包公司也不能。因此,只要你保護好錢包信息,錢包裡面的財產只屬於你自己,誰也搶不走,這是去中心化的優勢。
1.忘記
你若把錢包信息忘了,會有什麼後果呢?分這么幾種情況:
(1)地址忘了,可以用私鑰、助記詞、keystore+密碼,導入錢包找回。
(2)密碼忘了,可以用私鑰、助記詞,導入錢包重置密碼。
(3)密碼忘了,私鑰、助記詞又沒有備份,就無法重置密碼,就不能對代幣進行轉賬,等於失去了對錢包的控制權。
(4)密碼忘了,keystore 就失去了作用。
(5)私鑰忘了,只要你錢包沒有刪除,並且密碼沒忘,可以導出私鑰。
(6)私鑰忘了,還可以用助記詞、keystore+密碼,導入錢包找回。
(7)助記詞忘了,可以通過私鑰、keystore+密碼,導入錢包重新備份助記詞。
(8)keystore 忘了,只要你錢包沒有刪除,密碼沒忘,可以重新備份keystore。
(9)keystore 忘了,可以通過私鑰、助記詞,導入錢包重新備份 keystore。
從上可以看出,只要「私鑰、助記詞、Keystore+密碼」有一個信息在,錢包就在。因此,備份好「私鑰、助記詞、Keystore+密碼」最關鍵。
2.泄露
自己備份好錢包信息很重要,同時防止錢包信息泄漏,也很重要。若把錢包信息泄漏出去了,會有什麼後果呢?分這么幾種情況:
(1)地址泄漏了,沒有關系。
(2)密碼泄漏了,沒有關系。
(3)地址+密碼泄漏了,只要手機不丟,也沒有關系。
(4)keystore 泄漏了,密碼沒有泄漏,沒有關系。
(5)keystore+密碼泄漏了,別人就能進入錢包,把幣轉走。
(6)私鑰泄漏了,別人就能進入錢包,把幣轉走。
(7)助記詞泄漏了,別人就能進入錢包,把幣轉走。
從上可以看出,只要「私鑰、助記詞、Keystore+密碼」有一個信息泄漏出去,別人就擁有了你錢包的控制權,你錢包中的幣就會被別人轉移走。因此,「私鑰、助記詞、Keystore+密碼」絕不能泄漏出去,一旦發現有泄漏的可能,就要立刻把裡面的幣轉移走。
3.備份
既然私鑰、助記詞、Keystore+密碼」如此重要,那麼如何進行保存呢,最安全的方法就是: 手抄紙上
由於 Keystore 內容較多,手抄不方便,保存在電腦上也不安全,因此可以不對 Keystore 進行備份,只手抄私鑰、助記詞就足夠了,手抄備份要注意以下幾點:
(1)多抄幾份,分別放在不同的安全區域,並告訴家人。
(2)對手抄內容進行驗證,導入錢包看能不能成功,防止抄寫錯誤。
(3)備份信息不要在聯網設備上進行傳播,包括郵箱、QQ、微信等。
(4)教會家人操作錢包。
如您需要查詢您的區塊鏈資產,可點擊以下相應區塊鏈資產鏈接,輸入資產地址點擊查詢即可。
BTC 區塊鏈查詢鏈接 https://btc.com/
ETH 系列區塊鏈查詢鏈接 https://etherscan.io/
ETC 區塊鏈查詢 http://gastracker.io/
ZEC 區塊鏈查詢 https://explorer.zcha.in/
BTS 區塊鏈查詢 https://bitshares.openledger.info/#/dashboard
⑸ 【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一旦備份了助記詞之後,之後就沒有備份那個功能了,也就是說助記詞在本地存儲中刪除了;而且導入錢包的時候也是沒有備份助記詞這個功能的。
⑹ 【區塊鏈課程】3.1—數字錢包的概念、特點
一、 錢包的概念
生活中的傳統錢包相當於一個容器,可用來存放現金,但對於數字貨幣錢包而言,它不是用來儲存數字貨幣的,而是用來儲存和管理(包含私鑰和公鑰) 的管理容器,數字錢包里有地址(類似於你的銀行卡賬號)、私鑰(類似於你銀行卡的密碼)。
私鑰: 用戶使用私鑰進行簽名交易,從而證明擁有該交易的輸出權,其交易信息並不是存儲在該錢包內,而是存儲在區塊鏈中。
公鑰: 用來生成地址,儲存交易,信息由私鑰通過非對稱加密演算法生成。
錢包地址: 是一個以雙字母開頭(代表幣種)的42位16進制哈希值字元串。ETH的地址是以 0x 開頭的 42 位 16 進制哈希值字元串。例如: 如果將錢包比作銀行卡, 那麼錢包地址就是銀行卡號。
三者之間的關系,簡單說就是: 私鑰生成公鑰,公鑰生成地址。 簡而言之,地址就是你的賬戶,銀行卡號,私鑰就是你的賬戶密碼。所以如果別人盜取了你的私鑰,也就絕對擁有你賬戶的擁有權。
二、 錢包的特點
類比銀行卡,私鑰好比我們的銀行卡密碼+銀行卡賬號,而根據公鑰生成的數字貨幣地址,就好比我們的銀行卡賬號,用作交易的轉賬地址。數字貨幣是保存在交易市場的,錢包這張銀行卡保管著我們的地址和密碼信息,讓我們擁有地址上對應的數字貨幣的支配權。
三、錢包之於區塊鏈的價值
加密數字貨幣是一種基於區塊鏈技術的數字貨幣,數字貨幣錢包是專門用來管理這些資產的應用。錢包應用按照密碼學原理創建1個或多個錢包地址,每個錢包地址都對應1個密鑰對:私鑰和公鑰。
公鑰是根據私鑰進行一定的數學運算生成,與私鑰一一對應。公鑰主要是對外交易使用,每次交易都必須使用私鑰對交易記錄進行簽名以證明對相關錢包地址裡面的資產有控制權。
私鑰是唯一能夠證明對於數字資產有控制權的憑證,對於數字資產錢包來說,私鑰是最重要的。私鑰的生成和存儲方式決定了資產安全與否。
所以錢包的目的就是用來保存私鑰的。只要有私鑰,就代表了你擁有了對應的token。
但目前數字貨幣市場上存在著數字管理不便、交易和兌換門檻高、區塊鏈性能不足以及設計不合理、區塊鏈開發成本高、連接現實難、缺乏應用場景等問題。說的簡單點,就是基於不同公鏈開發的token都需要各自的錢包,於是我們的手機就被多種錢包的App占滿。
四、數字錢包的幾大關鍵詞:
1、錢包名:
數字貨幣錢包的錢包名就是你創建錢包時的賬號名或者昵稱,每個錢包地址對應一個賬號名,因為通常數字錢包都可以創建多個錢包地址,為了便於分辨和管理,給每個錢包地址設置一個名字還是很有必要的。
2、密碼:
當你創建數字貨幣錢包賬號的時候,需要設置一個密碼,當你轉賬支付時需要使用這個密碼確認;當你對錢包的私鑰或者keystore進行備份導出時也需要密碼確認;另外,如果你使用keystore導入錢包時也需要密碼確認,而使用私鑰導入時可以重置密碼。
3、助記詞:
當你創建錢包的時候,會要求你記錄一串助記詞,通常是由多個(12,15,18,21位)不規則的英文單詞毫無規律的組成的,相當於你數字錢包的密碼+支付密碼。助記詞在創建錢包的時候會提示你進行保存,請務必保存好,建議用筆記錄在單獨的筆記本上,並保管好你的筆記本。
4、keystore:
keystore是錢包存儲私鑰的一個文件(json),這個文件使用時要用到錢包的密碼。選擇導出或者導入keystore時,都需要輸入密碼,這個密碼是你原來設置的本錢包密碼, 這一點和用私鑰或助記詞導入錢包不一樣,用私鑰或助記詞導入錢包,不需要知道原密碼,可以直接重置密碼。
⑺ 管好你的「錢包」
Kiwi(WeChat:Kiwind)
一:什麼是私鑰?助記詞?什麼是明文私鑰?以及什麼是keystore ?
1、私鑰: 隨機生成的,用來解鎖對應(錢包)地址的一串字元。生成一個比特幣地址的同時就會有一個私鑰被生成,嚴格來說是, 先生成私鑰,然後通過私鑰使用加密函數來計算出地址 。作為用戶,我們很少會直接看到私鑰,一般情況下,私鑰是被存儲在錢包文件里,由錢包軟體進行管理。下面就是一個比特幣私鑰:
這是對應私鑰生成的地址:
2、助記詞: 其實是 明文私鑰的另一種表現形式 ,因為私鑰是一個64位的哈希值,非常復雜。所以通過助記詞將其簡化。
3、明文私鑰:未加密的私鑰。這意味著任何人只要拿到你的明文私鑰,就可以控制你的錢包資產。 我們時常會聽說用戶被盜幣了,其實就是私鑰泄露,幣被轉走。有時候我們會把地址比作銀行卡號,私鑰比作銀行卡密碼。所以說保護好自己的私鑰有多重要。
4、keystore : 是 加密過後的私鑰 ,需要用用戶生成這個文件時設置的密碼解開,才能夠進行交易操作。如果你備份了keystore 但是忘記了自設密碼,那麼就尷尬了。所以keystore 的同時,也要記住密碼。
二:如何導入錢包?
以imToken為例:
1、官方錢包導入
2、助記詞導入
3、私鑰導入
注意 :
1、imToken目前無法導出明文私鑰,只能導出助記詞和Keystore,但是可以導入明文私鑰。
2、明文私鑰可以去MyEtherWallet,先將Keystore導入,然後導出明文私鑰。具體操作步驟如下:
(1)登陸 myetherwallet.com
(2)點擊View Wallet Info(查看錢包信息),後選擇Keystore File,在右側的灰色區域上傳Keystore文本信息,注意要.txt格式。
(3)上傳完成,輸入imToken上設置的錢包密碼,點擊Unlock解鎖。
(4)導出明文私鑰(切記安全保存)。
3、使用imToken的ETH錢包時,用Keystore導入錢包時,輸入的是之前的密碼。用助記詞和私鑰導入錢包時,輸入的是新的密碼。所以一旦助記詞被盜,黑客是可以設置新的密碼的!
具體說明請看下這篇來自「烏托邦皮條社」彭皓的文章:
http://mp.weixin.qq.com/s/5uNosRiiqpeTYOVR7i2TrQ
⑻ 以太坊怎麼根據地址獲取私鑰
安裝metamask metamask是可以安裝在瀏覽器上的擴展程序,可以在進行安裝。建議在安裝在虛擬機中
以太坊的私鑰生成是通過secp256k1橢圓曲線演算法生成的,secp256k1是一個橢圓曲線演算法,同比特幣。公鑰推導地址和比特幣相比,在私鑰生成公鑰這一步其實是一樣的,區別在公鑰推導地
以太坊錢包地址就是你的銀行卡號,倘若你把地址忘了,可以用私鑰、助記詞、keystore+密碼,導入錢包找回。首先注冊登錄bitz,找到資產下面的以太坊,點擊充值,這時候就能獲取充值地址了。然後把錢包里的以太坊直接充到這個地址就行了。