要做堅強的我5星評價
2020-09-18 11:15:41
什么是區(qū)塊鏈地址?
幣圈,鏈區(qū)的同學(xué)都知道錢包地址,因為充值、提現(xiàn)都需要地址。那么什么是錢包地址?地址是怎么來的?把地址給別人安全嗎?為什么ETH地址和EOS地址是一樣?帶著這些問題我們來講講區(qū)塊鏈地址?
1、對稱加密
講到地址,我們就不得不先說一說密碼學(xué),作為保護信息傳輸安全的技術(shù)手段,密碼在人類社會中的應(yīng)用非常廣泛,它的基本思想是通過字符的代換來實現(xiàn)加解密。
對稱加密是加密算法和解密算法都是同一模式,用秘鑰來對信息進(jìn)行加解密,通常情況下,密鑰越長,代表著密文被破解的難度越大。對稱加密有一個最大弱點:只有一把密鑰保證加密和解密數(shù)據(jù),所以甲方必須把密鑰告訴乙方,否則乙方無法解密。而保存和傳遞密鑰,就成了最頭疼的問題。
2、 非對稱加密
基于對稱加密的弱點,怎么樣可以在不直接傳遞密鑰的情況下,完成密文的解密呢?加密和解密可以使用不同的規(guī)則,只要這兩種規(guī)則之間存在某種對應(yīng)關(guān)系即可,基于這種公鑰機制的思想,開始出現(xiàn)了一系列非對稱加密算法。90年代密碼學(xué)進(jìn)一步發(fā)展,基于橢圓曲線乘法、素數(shù)冪等數(shù)學(xué)函數(shù)的公鑰算法誕生,使得數(shù)字密鑰和不可偽造的數(shù)字簽名成為可能。
非對稱加密需要兩個(一對)密鑰:公開密鑰(publickey)和私有密鑰(privatekey),用公鑰對數(shù)據(jù)進(jìn)行加密后,只有對應(yīng)的私鑰才能解密;反之如果私鑰用于加密,則只有對應(yīng)的公鑰才能解密。這樣可以保證通信雙方是通信數(shù)據(jù)是私密的,并且能確認(rèn)雙方的身份。
3、公鑰和私鑰
安全散列算法(Secure Hash Algorithm,縮寫為SHA),用改算法給任意長度的數(shù)據(jù)能計算出長度固定的字符串(又稱消息摘要),并且該字符串是唯一的。
比特幣私鑰其實是使用SHA-256生成的32字節(jié)(256位)的隨機數(shù),有效私鑰的范圍則取決于比特幣使用的secp256k1 橢圓曲線數(shù)字簽名標(biāo)準(zhǔn)。大小介于0x1 到0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140之間的數(shù)幾乎都是合法的私鑰。
在私鑰的前面加上版本號,后面添加壓縮標(biāo)志和附加校驗碼,(所謂附加校驗碼,就是對私鑰經(jīng)過2次SHA-256運算,取兩次哈希結(jié)果的前四字節(jié)),然后再對其進(jìn)行Base58編碼,就可以得到我們常見的WIF(Wallet import Format)格式的私鑰。
私鑰經(jīng)過橢圓曲線乘法運算,可以得到公鑰。公鑰是橢圓曲線上的點,并具有x和y坐標(biāo)。公鑰有兩種形式:壓縮的與非壓縮的。早期比特幣均使用非壓縮公鑰,現(xiàn)在大部分客戶端默認(rèn)使用壓縮公鑰。
由于數(shù)學(xué)原理,從私鑰推算公鑰是可行的,從公鑰逆推私鑰是不可能的。
初識比特幣的人常有一種誤解,認(rèn)為比特幣公鑰就是地址,這是不正確的。從公鑰到地址還要經(jīng)過一些運算。
4、地址的生成(比特幣)
橢圓曲線算法生成的公鑰信息比較長,壓縮格式的有33字節(jié),非壓縮的則有65字節(jié)。地址是為了減少接收方所需標(biāo)識的字節(jié)數(shù)。比特幣地址的生成步驟如下:
1 生成私鑰與公鑰
2 將公鑰通過SHA256哈希算法處理得到32字節(jié)的哈希值
3 對得到的哈希值通過RIPEMD-160算法來得到20字節(jié)的哈希值 —— Hash160
4 把版本號+Hash160組成的21字節(jié)數(shù)組進(jìn)行雙次SHA256哈希運算,得到的哈希值的頭4個字節(jié)作為校 驗和,放置21字節(jié)數(shù)組的末尾。
5 對組成25位數(shù)組進(jìn)行Base58編碼,就得到地址。
具體的過程我們不需要去一一弄清楚,這里面涉及到很的數(shù)學(xué)公式和原理。但是我們需要從中理解到下面的幾點:
由于橢圓曲線乘法以及哈希函數(shù)的特性,我們可以從私鑰推導(dǎo)出公鑰,也可以從公鑰推導(dǎo)出地址,而這個過程是不可逆的。也正因如此,在整個比特幣(以太坊等)系統(tǒng)中,公鑰是可以公開的,也就是說錢包地址是安全的。私鑰是最關(guān)鍵的部分。
私鑰泄露也就意味著丟失了一切。
5、匿名性和可朔源
任何人均可以輕易生成大量的私鑰、公鑰、地址。地址本身是匿名的,通過多個地址交易可進(jìn)一步提高匿名性。但是所有的交易都是透明的,就是說一個地址所有的交易均可以查,可朔源跟蹤,就是說你給出的地址我可以跟蹤查詢所有的進(jìn)出帳和余額。
6、為什么ETH地址和EOS地址是一樣的?
這個問題比較難回答也比較好回答。簡單來說現(xiàn)在的EOS是ETH上面ERC20代幣(題外話:EOS本身是公鏈,待EOS原生公鏈上線后需要把現(xiàn)有EOS持有情況轉(zhuǎn)移過去,地址會不一樣),當(dāng)然包括其他在ETH上面的代幣基本上的地址都和ETH地址是一樣的。
夏天烤洋芋1星評價
2020-08-19 11:17:39
1.私鑰
私鑰,即私有密鑰,只有你自己可以知道,公開后你的幣就沒了。本質(zhì)是一串256bit的數(shù)字(也就是由256個“0”和“1”組成)。
2.公鑰
公鑰,即公開密鑰,可對全節(jié)點公開,公開后無任何風(fēng)險。
3.錢包地址
錢包地址,可理解為Cyberspace中的銀行卡賬號,可對全節(jié)點公開,公開后無任何風(fēng)險,本質(zhì)是一串字符串。
4.三者關(guān)系
4.1 私鑰-公鑰關(guān)系
公鑰和私鑰成對出現(xiàn)
公開的密鑰叫公鑰,只有自己知道的叫私鑰
用公鑰加密的數(shù)據(jù)只有對應(yīng)的私鑰可以解密
用私鑰加密的數(shù)據(jù)只有對應(yīng)的公鑰可以解密
如果可以用公鑰解密,則必然是對應(yīng)的私鑰加的密
如果可以用私鑰解密,則必然是對應(yīng)的公鑰加的密
4.2 三者相互生成關(guān)系
為什么說私鑰只能自己知道,而公鑰和錢包地址卻可以隨意公開?這跟三者的生成關(guān)系直接相關(guān)。私鑰可以生成公鑰和錢包地址,而公鑰卻不能生成私鑰,同時,錢包地址不能生成公鑰。
首先使用隨機數(shù)發(fā)生器生成一個『私鑰』。一般來說這是一個256bits的數(shù),擁有了這串?dāng)?shù)字就可以對相應(yīng)『錢包地址』中的比特幣進(jìn)行操作,所以必須被安全地保存起來。
『私鑰』經(jīng)過SECP256K1算法處理生成了『公鑰』。SECP256K1是一種橢圓曲線算法,通過一個已知『私鑰』時可以算得『公鑰』,而『公鑰』已知時卻無法反向計算出『私鑰』。這是保障比特幣安全的算法基礎(chǔ)。
同SHA256一樣,RIPEMD160也是一種Hash算法,由『公鑰』可以計算得到『公鑰哈?!唬催^來是行不通的。
將一個字節(jié)的地址版本號連接到『公鑰哈?!活^部(對于比特幣網(wǎng)絡(luò)的pubkey地址,這一字節(jié)為“0”),然后對其進(jìn)行兩次SHA256運算,將結(jié)果的前4字節(jié)作為『公鑰哈?!坏男r炛担B接在其尾部。
將上一步結(jié)果使用BASE58進(jìn)行編碼(比特幣定制版本),就得到了『錢包地址』。
比如, 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
至此,私鑰、公鑰和錢包地址的關(guān)系已經(jīng)較為明朗。