『壹』 2.在以太坊中,為了得到唯一的公鑰,對私鑰應用哪種演算法
在以太坊中,為了得到唯一的公鑰,對私鑰應用演算法:
1、生成一個隨機的私鑰(32位元組)。
2、通過私鑰生成公鑰(64位元組)。
3、通過公鑰得到地址(20位元組)。
『貳』 【以太坊易錯概念】nonce, 公私鑰和地址,BASE64/BASE58,
以太坊里的nonce有兩種意思,一個是proof of work nonce,一個是account nonce。
在智能合約里,nonce的值代表的是該合約創建的合約數量。只有當一個合約創建另一個合約的時候才會增加nonce的值。但是當一個合約調用另一個合約中的method時 nonce的值是不變的。
在以太坊中nonce的值可以這樣來獲取(其實也就是屬於一個賬戶的交易數量):
但是這個方法只能獲取交易once的值。目前是沒有內置方法來訪問contract中的nonce值的
通過橢圓曲線演算法生成鑰匙對(公鑰和私鑰),以太坊採用的是secp256k1曲線,
公鑰採用uncompressed模式,生成的私鑰為長度32位元組的16進制字串,公鑰為長度64的公鑰字串。公鑰04開頭。
把公鑰去掉04,剩下的進行keccak-256的哈希,得到長度64位元組的16進制字串,丟掉前面24個,拿後40個,再加上"0x",即為以太坊地址。
整個過程可以歸納為:
2)有些網關或系統只能使用ASCII字元。Base64就是用來將非ASCII字元的數據轉換成ASCII字元的一種方法,而且base64特別適合在http,mime協議下快速傳輸數據。Base64使用【字母azAZ數字09和+/】這64個字元編碼。原理是將3個位元組轉換成4個位元組(3 X 8) = 24 = (4 X 6)
當剩下的字元數量不足3個位元組時,則應使用0進行填充,相應的,輸出字元則使用'='佔位,因此編碼後輸出的文本末尾可能會出現1至2個'='。
1)Base58是用於Bitcoin中使用的一種獨特的編碼方式,主要用於產生Bitcoin的錢包地址。相比Base64,Base58不使用數字"0",字母大寫"O",字母大寫"I",和字母小寫"l",以及"+"和"/"符號。
Base58Check是一種常用在比特幣中的Base58編碼格式,增加了錯誤校驗碼來檢查數據在轉錄中出現的錯誤。 校驗碼長4個位元組,添加到需要編碼的數據之後。校驗碼是從需要編碼的數據的哈希值中得到的,所以可以用來檢測並避免轉錄和輸入中產生的錯誤。使用 Base58check編碼格式時,編碼軟體會計算原始數據的校驗碼並和結果數據中自帶的校驗碼進行對比。二者不匹配則表明有錯誤產生,那麼這個 Base58Check格式的數據就是無效的。例如,一個錯誤比特幣地址就不會被錢包認為是有效的地址,否則這種錯誤會造成資金的丟失。
為了使用Base58Check編碼格式對數據(數字)進行編碼,首先我們要對數據添加一個稱作「版本位元組」的前綴,這個前綴用來明確需要編碼的數 據的類型。例如,比特幣地址的前綴是0(十六進制是0x00),而對私鑰編碼時前綴是128(十六進制是0x80)。 表4-1會列出一些常見版本的前綴。
接下來,我們計算「雙哈希」校驗碼,意味著要對之前的結果(前綴和數據)運行兩次SHA256哈希演算法:
checksum = SHA256(SHA256(prefix+data))
在產生的長32個位元組的哈希值(兩次哈希運算)中,我們只取前4個位元組。這4個位元組就作為校驗碼。校驗碼會添加到數據之後。
結果由三部分組成:前綴、數據和校驗碼。這個結果採用之前描述的Base58字母表編碼。下圖描述了Base58Check編碼的過程。
相同:
1) 哈希演算法、Merkle樹、公鑰密碼演算法
https://blog.csdn.net/s_lisheng/article/details/77937202?from=singlemessage
2)全新的 SHA-3 加密標准 —— Keccak
https://blog.csdn.net/renq_654321/article/details/79797428
3)在線加密演算法
http://tools.jb51.net/password/hash_md5_sha
4)比特幣地址生成演算法詳解
https://www.cnblogs.com/zhaoweiwei/p/address.html
5)Base58Check編碼實現示例
https://blog.csdn.net/QQ604666459/article/details/82419527
6) 比特幣交易中的簽名與驗證
https://www.jianshu.com/p/a21b7d72532f
『叄』 imtoken錢包私鑰導入格式64進16什麼意思
私鑰=銀行卡+銀行卡密碼。
私鑰是一個長度為64位的字元串,一個錢包只能擁有一個私鑰並且不能修改。為什麼說私鑰=銀行卡+銀行卡密碼呢?因為在imToken中直接導入私鑰可以生成新的密碼,將所有的區塊鏈資產全部轉移走。私鑰作為最高保密級別,應該妥善保管在物理設備上,例如抄在紙上,備份多份並且存放在安全的地方,萬萬不可將私鑰在聯網設備上進行傳輸,避免被黑客截取。
助記詞=私鑰。
助記詞又是什麼東西呢?助記詞既然等於私鑰,那麼其應該是私鑰的另外一種表現形式,並且具有私鑰同等的功能。在imToken中創建錢包,會出來一個助記詞,助記詞的個數一般為12、15、18、21個單詞構成。這些詞都取自一個固定詞庫,其生成順序也是按照一定的演算法得到,且助記詞不能修改。助記詞的主要作用是幫助用戶記憶繁瑣的私鑰。同樣助記詞也要妥善保管好,切勿在聯網設備中傳輸,任何人得到了你的助記詞都可以輕松的轉移你的區塊鏈資產。
keystore+密碼=私鑰。
keyStore文件是以太坊錢包存儲私鑰的一種文件格式(JSON格式)。它使用用戶自定義密碼對私鑰進行加密,在一定程度上keystore=加密後的私鑰,拿到keystore和密碼後照樣可以轉移走所有的區塊鏈資產。keystore密碼是唯一不可修改的,那麼錢包密碼修改之後,keystore也會相應修改。一定要記住加密keystore的密碼,一旦忘記密碼,就相當於遺失了該錢包所有的區塊鏈資產。
————————————————
版權聲明:本文為CSDN博主「懶區塊」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lanqukuai/article/details/81035995
『肆』 【概念】私鑰、助記詞和keystore到底是什麼關系
使用了很久的錢包,用得有點誠惶誠恐,錢包除了用於轉賬外,都不怎麼敢動它,怕誤操作搞不好就空了,所以大部分都在交易所,不敢提。這也間接印證了李笑來老師的一句話:
在申請錢包時,當然看過不少資料,老老實實地記下了私鑰、助記詞,備份了keystore,還放在兩個U盤里備份。但對私鑰、助記詞和keystore是一知半解的,也不知道他們到底什麼關系。如果不是要了解EOS映射,我可能一直不會動錢包,也不會去了解它們。
下面就一個個來好好學習一下這些概念。
私鑰是由64位十六進制的字元組成,每個私鑰是隨機生成的,隨機生成這樣的字元串有2的256次方種可能,這個數字已經超過了宇宙中原子的個數,用「暴力破解」的方式逐一遍歷可能的私鑰,幻想能碰到一個有效的且有幣的私鑰,可以說是不可能,就算是量子計算機也沒用。
一個錢包只有一個私鑰且不能修改。
在導入錢包中,輸入私鑰並設置一個密碼(不用輸入原密碼),就能進入錢包並擁有這個錢包的掌控權,就可以把錢包中的代幣轉移走。
由於私鑰64位,長得太難看,沒有可讀性,而私鑰的備份在電腦上復制起來容易,手抄下來就比較麻煩,但私鑰保存在聯網的電腦上不安全,有被其他人看到的風險,於是有了助記詞工具。
助記詞是明文私鑰的另一種表現形式,最早是由BIP39提案提出,其目的是為了幫助用戶記憶復雜的私鑰 (64位的哈希值)。助記詞一般由12、15、18、21個單詞構成,這些單詞都取自一個固定詞庫, 其生成順序也是按照一定演算法而來,所以用戶沒必要擔心隨便輸入12個單詞就會生成一個地址。助記詞是未經加密的私鑰, 沒有任何安全性可言,任何人得到了你的助記詞,可以不費吹灰之力的奪走你的資產。所以在用戶在備份助記詞之後,一定要注意三點:
助記詞一般會在你創建新錢包的時候出現一次,後面就再也不會出現了,所以創建新錢包時一定要把助記詞抄下來,想辦法備份。最好不要用屏幕截圖或保存在電腦里,因為只要泄露,獲取了你的助記詞就等於獲取了私鑰,你的錢包就成了別人的錢包。
簡而言之:助記詞等於私鑰,絕對不能泄露。
keystore常見於以太坊錢包,是你獨有的、用於簽署交易的以太坊私鑰的加密文件。keystore是一串Json格式的字元串,可以用任何以太坊錢包打開它。keystore必須配合你的錢包密碼來使用,備份了keystore同時別忘了備份錢包的密碼。
用戶可以使用備份的助記詞,重新導入imToken之類的錢包工具,用新的密碼生成一個新的Keystore,可以用這種方法來修改錢包密碼。
助記詞=密鑰=keystore+密碼 !保管好私鑰或者助記詞不被泄露,或是保存好keystore+記住密碼,你才真正擁有了虛擬資產。
再來一個比較形象的比喻。
概念清楚之後,瞬間感覺輕松多了。再也不用擔心因為不明白而擔心操作失誤的問題。最重要的是將私鑰、助記詞和keystore備份好,盡量離線備份多份,這樣才能保證賬號的安全。
1、 科普 | 什麼是以太坊私鑰儲存(Keystore)文件?
2、 如何妥善備份你的以太坊錢包?
3、 幣圈名詞:地址、密碼、私鑰、助記詞,你真的分清楚了嗎
4、 「地址、密碼、私鑰、助記詞、Keystore 」那些事
『伍』 什麼是公鑰、私鑰、密碼、助記詞、Keystore
公鑰、私鑰、密碼、助記詞、Keystore是在使用數字貨幣錢包時,必須要弄清的概念:如果不搞清楚,很可能會造成數字資產的嚴重損失。
1.公鑰:
相當於所屬錢包的地址,可理解成銀行賬戶。
公鑰的地址可理解成銀行卡號,是由公鑰通過計算得來,就像銀行先給你開戶,後給你銀行卡卡號。
錢包地址的主要用途是收款,也可以作為轉賬的憑證,就像別人匯款給你時你需要告訴他銀行卡卡號一樣。
常見的錢包地址樣式:
比特幣:普通地址:1開頭、隔離見證地址:3開頭
以太坊地址:0x開頭:(包括基於以太坊平台代幣)瑞波幣地址:r開頭。
萊特幣地址:L開頭。
2.私鑰:
非常重要,相當於銀行卡號+銀行卡密碼。
創建錢包後,輸入密碼即可導出私鑰。私鑰是由字母數字組成的字元串,一個錢包地址只有一個私鑰且不能修改。私鑰要離線保存,不要進行網路傳輸,可用紙張記錄並保存。
主要用途,導入錢包。有了私鑰就可以在同系列的任何一款錢包上,輸入私鑰並設置一個新的密碼就可以把之前的A錢包的資產導入B錢包。比如手機丟了,只要你有私鑰就可以恢復。
3.密碼 :
相當於銀行卡密碼。
在創建數字貨幣錢包時,需要設置一個密碼,一般要求不少於8個字元。
主要用途:①轉賬時需要輸入密碼,可理解成你用銀行卡給別人轉賬需要輸入密碼;②用Keystore導入錢包時,必須輸入這個密碼。
密碼可以進行修改或重置。輸入原密碼後,就可以直接修改新的密碼了;但如果原密碼忘記,可以用私鑰或是助記詞導入錢包,同時設置新的密碼。數字貨幣錢包中,一個錢包在不同手機上可以用不同的密碼,彼此相互獨立,互不影響。
4.助記詞
等於私鑰=銀行卡號+銀行卡密碼
由於私鑰由64位字元串組成,不便於記錄,非常容易抄錯,於是就出現了助記詞,方便用戶記憶和記錄。由12個單片語成,每個單詞之間有一個空格,助記詞和私鑰具有同樣的功能:只要輸入助記詞並設置一個新的密碼,就可以導入錢包。
一個錢包只有一套助記詞且不能修改。助記詞只能備份一次,備份後,在錢包中便不會再顯示。因此,在備份時一定要抄寫下來,防止抄寫錯誤,盡量多次檢驗。
5.Keystore:
Keystore+密碼=私鑰=銀行卡號+銀行卡密碼、Keystore ≠ 銀行卡號
Keystore相當於加密過後的私鑰,在導入錢包時,只要輸入Keystore 和密碼,就能進入錢包了。這一點和用私鑰或助記詞導入錢包不一樣,後兩者不需要知道原密碼,而是直接重置密碼。
keystore進行交易轉賬等錢包操作,必須知道該keystore的密碼。keystore的密碼是無法更改的,一個keystore對應一個密碼。但是可以通過該錢包的助記詞,重新生成一個keystore。這個keystore可以用新的密碼生成,重新生成新的keystore之後,最好將舊的keystore刪除。
總結:
一個數字貨幣錢包創建完成後,公鑰和私鑰是成對出現的。公鑰,私鑰都是由字母,數字組成的較長的字元串。
keystore和助記詞可以理解為私鑰的另一種表現形式。助記詞作為錢包私鑰的友好格式,非常方便備份和導入。
地址可以通過私鑰、助記詞、keystore+密碼,導入錢包找回。密碼可以通過私鑰、助記詞,導入錢包重置密碼。如果私鑰、助記詞、Keystore+密碼,有一個信息泄漏,別人就可以擁有你錢包的控制權,錢包內的幣就會被別人轉移走。
私鑰通過加密生成公鑰,公鑰轉換一下格式生成地址。私鑰可以推導出公鑰,公鑰可以推導出地址,但無法通過輸出地址、公鑰推導出私鑰。
在生活中,銀行開戶是「開設銀行賬戶—銀行卡號—設置銀行卡密碼—開戶成功
在幣圈裡,是先設置「密碼」(私鑰),再得到「銀行賬戶」(公鑰),最後給地址。對於錢包安全管理,主要注意防盜和防丟。防止私鑰泄露及丟失。
注意事項:
1.關於各種騙局誘導交出私鑰、助記詞的行為,都要謹慎操作;
2.重視私鑰、助記詞、Keystore+密碼的備份和保存!多重備份,多次備份,多重驗證,防止抄寫錯誤。
3.私鑰不好備份的情況下,可選用備份助記詞,具體根據錢包的備份要求。
4.不要進行聯網備份,或通過微信、qq、郵箱等任何第三方工具進行傳輸發送你的私鑰、助記詞、keystore。不要截圖。
5.備份內容放到安全、妥善的地方,並告訴家人(以防突發事故發生)
數字貨幣錢包的作用是安全存儲資產,這是最重要的!從投資紀律來講,本金安全是一切的基礎。對於理財類的錢包,聲稱賺取收益高回報等,應該叫「數字資產理財」更恰當。你的資產他們可以隨意動用拿去投資。你對資產沒有完全的掌控權,如果投資順利,本息安全,如果投資失敗,血本無歸。所以,請慎重使用這類錢包,應該注重的是資產的安全和私密性。
『陸』 以太坊怎麼根據地址獲取私鑰
安裝metamask metamask是可以安裝在瀏覽器上的擴展程序,可以在進行安裝。建議在安裝在虛擬機中
以太坊的私鑰生成是通過secp256k1橢圓曲線演算法生成的,secp256k1是一個橢圓曲線演算法,同比特幣。公鑰推導地址和比特幣相比,在私鑰生成公鑰這一步其實是一樣的,區別在公鑰推導地
以太坊錢包地址就是你的銀行卡號,倘若你把地址忘了,可以用私鑰、助記詞、keystore+密碼,導入錢包找回。首先注冊登錄bitz,找到資產下面的以太坊,點擊充值,這時候就能獲取充值地址了。然後把錢包里的以太坊直接充到這個地址就行了。
『柒』 以太坊精度是幾位
以太坊的私鑰是一個256位的二進制數,因此猜對它的概率是2的256次方分之一,數值上大約是10的77次方分之一,也就是說分母是1後面77個0。
1、以太坊的單位,沿襲了科學界的傳統,用做過傑出貢獻的數學、密碼學專家的名字命名。一次性向六位專家致敬,並且未來可能引入更多單位。以太坊的最小單位是Wei。
2、以太坊的私鑰是一個256位的二進制數,因此猜對它的概率是2的256次方分之一,數值上大約是10的77次方分之一,也就是說分母是1後面77個0。
3、1個以太幣=10的18次方Wei,但因為這個單位太小,好像Byte位元組與KB、MB、GB的電腦存儲單位一樣,以太坊還有其他的單位:
Kwei(Babbage)=10的3次方Wei
Mwei(Lovelace)=10的6次方Wei
Gwei(Shannon)=10的9次方Wei
MicroEther(Szabo)=10的12次方Wei
MilliEther(Finney)=10的15次方Wei
Ether=10的18次方Wei
每個單位都還有個別名,即括弧里的那個,每個別名又各有來歷。老鏈哥找機會再逐個介紹。通常,小額支付使用Finney,計算Gas價格使用GWei。