❶ 公鑰,私鑰,助記詞和 keystore
本文討論的公鑰、私鑰、助記詞及keystore,主要以比特幣中為例,其他公鏈的原理和實現大體相似。其中,keystore是用於以太坊錢包存儲私鑰的一種方式。
在比特幣中,私鑰是一串由256位0和1組成的隨機數字,理論上可以以拋硬幣的方式模擬生成。實際情況下,使用操作系統底層提供的隨機數生成器來創建256位私鑰,通常為64位的16進制數。為了提高可讀性,私鑰常以base58編碼方式呈現,這在導入錢包時尤為關鍵。
私鑰至關重要,相當於比特幣賬戶的鑰匙,持有私鑰的人擁有對賬戶的完全控制權。通常,私鑰通過多種錢包形式保存,如紙質錢包、大腦記憶、或各種應用的錢包app。
公鑰是基於私鑰通過橢圓曲線加密演算法得出的,它通過單向哈希運算產生比特幣地址。類似地,其他公鏈的地址生成方式也大致遵循這一原理。
助記詞是私鑰的另一種形式,旨在通過生成一串英文單詞來避免私鑰因數字復雜性帶來的記憶與復制錯誤。助記詞的生成過程和原理在相關文章中有詳盡介紹。
keystore是一種以太坊錢包用於加密私鑰並保存為json文件的方式,相較於比特幣未提供私鑰加密保存的方案,keystore提供了額外的安全性。關於keystore的詳細原理,有文章進行了深入闡述。
綜上所述,公鑰、私鑰、助記詞及keystore構成了數字貨幣錢包的核心要素,確保了資產的安全性與可訪問性。
❷ 以太坊錢包是什麼
以太坊錢包是一種用於存儲、管理、生成和使用以太坊數字資產的工具。它是用戶私鑰和公鑰的保管處,允許用戶安全地交互和操作以太坊區塊鏈上的各種應用。
以太坊錢包的具體解釋如下:
以太坊錢包是加密貨幣領域的一個重要組成部分。它是一個軟體或硬體設備,用於存儲以太坊的私鑰和公鑰。私鑰是一個獨特的密鑰,用於訪問賬戶並授權交易。公鑰則是賬戶的地址,類似於電子郵件地址,通過它可以向其他人發送或接收以太坊或其他代幣。這些錢包的設計目的是為了保障加密貨幣的安全,因此通常會採取多重安全措施,如密碼保護、備份恢復功能以及生物識別認證等。此外,這些錢包也支持多種平台的操作,無論是桌面電腦、移動設備還是硬體存儲介質上均可使用。用戶可以輕松地查看其賬戶的資產,以及與智能合約和去中心化應用進行交互操作。
使用以太坊錢包不僅可以讓用戶更方便地管理和控制他們的數字資產,還能夠幫助他們探索以太坊生態系統的廣闊應用場景和功能。許多交易和市場參與活動以及投資和挖礦行為,都離不開這些智能、安全的錢包支持。它們是以太坊區塊鏈上不可或缺的一環。總之,以太坊錢包在保障加密貨幣的安全管理以及促進區塊鏈技術應用上起到了重要作用。其安全和可靠性強勁的特徵能夠使用戶在使用時感到安心和便捷。
❸ 【以太坊易錯概念】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
❹ 什麼是公鑰、私鑰、密碼、助記詞、Keystore
1. 公鑰:相當於數字貨幣錢包的地址,可以理解為銀行賬戶。公鑰的地址是由公鑰通過計算得來,類似於銀行開戶後給您的銀行卡號。錢包地址主要用於接收款項,也可作為轉賬的憑證,類似於別人向您匯款時需要知道您的銀行卡卡號。常見的錢包地址樣式包括比特幣的普通地址(以1開頭)、隔離見證地址(以3開頭)、以太坊地址(以0x開頭,包括基於以太坊平台的代幣)以及瑞波幣地址(以r開頭)和萊特幣地址(以L開頭)。
2. 私鑰:非常重要,可以看作是銀行卡號加上銀行卡密碼。創建錢包時,輸入密碼即可導出私鑰。私鑰由字母和數字組成的字元串構成,每個錢包地址只有一個私鑰,且不可更改。私鑰應當離線保存,避免進行網路傳輸,最好將其記錄在紙上保存。私鑰的主要用途是在同系列的任何一款錢包上導入資產,類似於您在丟失手機後,只要有私鑰就可以恢復錢包。
3. 密碼:相當於銀行卡密碼。在創建數字貨幣錢包時,需要設置一個不少於8個字元的密碼。密碼主要用於兩個方面:一是在轉賬時需要輸入密碼,類似於使用銀行卡給他人轉賬時需要輸入密碼;二是當使用Keystore文件導入錢包時,必須輸入這個密碼。密碼可以進行修改或重置,如果您忘記原密碼,可以使用私鑰或助記詞導入錢包,並設置新的密碼。
4. 助記詞:等於私鑰,也可以理解為銀行卡號加上銀行卡密碼。由於私鑰由64位字元串組成,不便於記錄,非常容易抄錯,因此推出了助記詞,方便用戶記憶和記錄。助記詞由12個單片語成,每個單詞之間用空格分隔。一個錢包地址只有一套助記詞,且不能修改。助記詞備份後,在錢包中便不會顯示,因此務必在備份時仔細抄寫,防止抄寫錯誤,並多次核對。
5. Keystore:Keystore加上密碼等於私鑰,但Keystore不等同於銀行卡號。Keystore文件相當於加密後的私鑰。在導入錢包時,只需輸入Keystore文件和密碼即可。與使用私鑰或助記詞導入錢包不同,後者不需要原密碼,可以直接重置密碼。每個Keystore文件都有一個對應的密碼,且密碼無法更改。但是,可以通過錢包的助記詞重新生成Keystore文件,新文件可以用新的密碼生成。生成新Keystore後,最好刪除舊的Keystore文件以保證安全。
總結:數字貨幣錢包創建後,公鑰和私鑰是成對出現的,它們都是由字母和數字組成的字元串。Keystore文件和助記詞可以視為私鑰的另一種表現形式。助記詞作為錢包私鑰的友好格式,非常便於備份和導入。錢包地址可以通過私鑰、助記詞或Keystore加密碼導入錢包找回。密碼可以通過私鑰、助記詞導入錢包並重置。如果私鑰、助記詞或Keystore加密碼中的任何信息泄露,別人就可以控制您的錢包,裡面的幣就會被轉移走。私鑰可以推導出公鑰,公鑰可以推導出地址,但無法通過地址或公鑰推導出私鑰。
在生活中,銀行開戶是先開設賬戶,然後得到卡號和設置密碼。在數字貨幣領域,則是先設置密碼(私鑰),然後得到賬戶地址(公鑰),最後是地址。在錢包安全管理方面,主要要注意防盜和防丟。防止私鑰泄露或丟失。注意事項包括:不要泄露私鑰、助記詞或Keystore加密碼的信息;重視備份,並進行多次驗證以防止錯誤;避免在線備份或通過第三方工具傳輸您的錢包密鑰;將備份內容放在安全的地方,並告知家人以防不測。數字貨幣錢包的主要作用是安全存儲資產,這是最重要的。在投資錢包時,應當注重資產的安全和私密性,避免投資失敗導致損失。
❺ 以太坊怎麼根據地址獲取私鑰
安裝metamask metamask是可以安裝在瀏覽器上的擴展程序,可以在進行安裝。建議在安裝在虛擬機中
以太坊的私鑰生成是通過secp256k1橢圓曲線演算法生成的,secp256k1是一個橢圓曲線演算法,同比特幣。公鑰推導地址和比特幣相比,在私鑰生成公鑰這一步其實是一樣的,區別在公鑰推導地
以太坊錢包地址就是你的銀行卡號,倘若你把地址忘了,可以用私鑰、助記詞、keystore+密碼,導入錢包找回。首先注冊登錄bitz,找到資產下面的以太坊,點擊充值,這時候就能獲取充值地址了。然後把錢包里的以太坊直接充到這個地址就行了。
❻ 2.在以太坊中,為了得到唯一的公鑰,對私鑰應用哪種演算法
在以太坊中,為了得到唯一的公鑰,對私鑰應用演算法:
1、生成一個隨機的私鑰(32位元組)。
2、通過私鑰生成公鑰(64位元組)。
3、通過公鑰得到地址(20位元組)。
❼ 一步一步教你使用以太坊錢包
下面開始介紹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
❽ 【C語言與以太坊】1.0 如何根據私鑰生成以太坊地址
要將C語言與以太坊結合,生成以太坊地址,主要需要實現以下關鍵步驟。
首先,確保所有必需的庫在Linux環境中正確安裝。對於libsecp256k1,需要在構建時使用參數"./configure --enable-mole-recovery"來支持後續文章中簽名功能的實現。
其次,理解生成以太坊地址的原理如下:
1. 使用256位私鑰在secp256k1橢圓曲線上計算出對應的公鑰。公鑰的表示形式為前綴04加上X和Y的值。
2. 去除公鑰的前綴04,接著計算其32位元組的keccak256哈希值。
3. 從哈希值的後20位元組提取,即為最終生成的以太坊地址。
具體實現步驟如下:
1. 包含所有必需的頭文件。
2. 定義輔助函數用於列印十六進制位元組流。
3. 以長度為32的字元數組形式聲明並定義私鑰。私鑰的長度為256位,即32個16進制數的數組。
4. 利用私鑰生成公鑰,注意在序列化公鑰時使用宏SECP256K1_EC_UNCOMPRESSED,確保公鑰以非壓縮的65位元組形式輸出。
5. 去除公鑰的前綴04後,對剩餘部分進行哈希處理,哈希值的後20位元組即為以太坊地址。
實現完整代碼後,將源文件保存為PriKeyToAddr.c,進行編譯和運行。
運行結果與錢包中顯示的地址一致,驗證了整個流程的正確性。