欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

當(dāng)前位置:主頁(yè) > 區(qū)塊鏈 > 錢(qián)包知識(shí) > 通過(guò)私鑰創(chuàng)建以太坊錢(qián)包地址

區(qū)塊鏈錢(qián)包科普:如何通過(guò)私鑰創(chuàng)建以太坊錢(qián)包地址?

2021-12-13 12:09:03 | 來(lái)源: | 作者:Timur Badretdinov
這篇文章主要介紹了區(qū)塊鏈錢(qián)包科普:如何通過(guò)私鑰創(chuàng)建以太坊錢(qián)包地址的相關(guān)資料,希望這篇關(guān)于如何通過(guò)私鑰創(chuàng)建以太坊錢(qián)包地址的文章,能夠幫助到各位朋友對(duì)區(qū)塊鏈錢(qián)包原理的理解。

編者注:我們翻譯和出版與密碼學(xué)貨幣的私鑰、地址和錢(qián)包有關(guān)的內(nèi)容,無(wú)非希望傳達(dá)清楚幾個(gè)要點(diǎn):

1. 密碼學(xué)貨幣不同于傳統(tǒng)的銀行,你有很多工具可以生成一把私鑰來(lái)持有密碼學(xué)貨幣,既不需要向銀行申請(qǐng),也不需要給誰(shuí)報(bào)備,沒(méi)有任何人能阻止你擁有自己的私鑰和錢(qián)包;

2. 公鑰和用來(lái)接收轉(zhuǎn)賬的地址都是由私鑰使用單向的數(shù)學(xué)運(yùn)算推導(dǎo)出來(lái)的,如果不信任現(xiàn)有的工具,你完全可以自己使用這些數(shù)學(xué)運(yùn)算來(lái)生成地址;同時(shí),公開(kāi)地址不會(huì)產(chǎn)生安全問(wèn)題,因?yàn)榈刂窡o(wú)法反推出公鑰,也無(wú)法反推出私鑰;

3. 使用第三方提供的服務(wù)時(shí),弄清楚服務(wù)的性質(zhì),不要向任何人暴露自己的私鑰,并且定期備份。

區(qū)塊鏈錢(qián)包科普:如何通過(guò)私鑰創(chuàng)建以太坊錢(qián)包地址?

在本系列文章的第一篇中,我們得到了如下的比特幣私鑰:

60cf347dbc59d31c1358c8e5cf5e45b822ab85b79cb32a9f3d98184779a9efc2

編者注:這里沒(méi)有寫(xiě)出私鑰的生成過(guò)程。簡(jiǎn)單來(lái)說(shuō),私鑰就是一串隨機(jī)的十六進(jìn)制字符串,為了安全(私鑰不暴露、不被他人重現(xiàn)出來(lái)),這串隨機(jī)數(shù)的生成環(huán)境應(yīng)盡可能滿足隨機(jī)性、不可預(yù)測(cè)性、不可重現(xiàn)性。

所以,不要自己寫(xiě)一串?dāng)?shù)字來(lái)當(dāng)私鑰,因?yàn)槟阕砸詾榈?ldquo;隨機(jī)”往往并不怎么隨機(jī),很不安全。

(理論上來(lái)說(shuō)你確實(shí)可以自己連拋 256 次硬幣產(chǎn)生符合長(zhǎng)度要求(64 位)的隨機(jī)數(shù),但還是很不推薦。)

在本文中,我們會(huì)演示使用這個(gè)私鑰來(lái)獲得公開(kāi)地址,以及與該私鑰對(duì)應(yīng)的以太坊錢(qián)包地址。

通過(guò)私鑰來(lái)獲得比特幣錢(qián)包地址的具體流程有些復(fù)雜,因此我們會(huì)描述簡(jiǎn)化后的版本。我們需要使用一個(gè)哈希函數(shù)去獲得公鑰,還需要使用另一個(gè)函數(shù)去獲得地址。

現(xiàn)在,讓我們開(kāi)始吧。

公鑰

這部分內(nèi)容和之前討論比特幣的文章中所說(shuō)的相同,所以如果你已經(jīng)讀完了,那么就可以跳過(guò)(除非你想要復(fù)習(xí)一下)。

首先,我們需要在私鑰上使用 ECDSA,即橢圓曲線數(shù)字簽名算法。橢圓曲線是通過(guò) y² = x³ + ax + b 公式得出的,其中 a 和 b 可以自定義。橢圓曲線家族有很多知名并且廣泛應(yīng)用的案例。比特幣使用了 secp256k1 曲線,關(guān)于橢圓曲線密碼學(xué),如果你想了解更多,可以參考此文章。

以太坊使用了同樣的橢圓曲線,secp256k1,因此對(duì)于比特幣和以太坊來(lái)說(shuō),獲得公鑰的流程是相同的。

對(duì)私鑰作了 ECDSA 運(yùn)算之后,我們得到了 64 字節(jié)的整數(shù),這是由兩個(gè) 32 字節(jié)的整數(shù)串聯(lián)組成,代表了橢圓曲線上某個(gè)點(diǎn)的 X 值和 Y 值。

在 Python 程序中,代碼顯示如下:

private_key_bytes = codecs.decode(private_key, ‘hex’)
# Get ECDSA public key
key = ecdsa.SigningKey.from_string(private_key_bytes, curve=ecdsa.SECP256k1).verifying_key
key_bytes = key.to_string()
key_hex = codecs.encode(key_bytes, ‘hex’)

注意:從上面的代碼可以看出,我使用了 ecdsa 模塊并通過(guò)編碼器解碼了私鑰。這樣寫(xiě)更多是因?yàn)?Python 的關(guān)系,而與算法本身無(wú)關(guān),為免誤解,讓我來(lái)好好解釋一下。

Python 語(yǔ)言中,至少有兩種數(shù)據(jù)類(lèi)型可以保存私鑰和公鑰:“str”和“bytes”。前者對(duì)應(yīng)的是 string(字符串),后者則是 byte array(數(shù)值)。Python 語(yǔ)言中的密碼學(xué)運(yùn)算只能對(duì)“bytes”類(lèi)操作,將 byte 型數(shù)據(jù)作為輸入,并且將輸出作為結(jié)果。

但是,這里面有個(gè)小問(wèn)題:作為字符串的“4f3c”和作為 byte array 的 4f3c 是不等同的,string 等于 byte array 和兩個(gè)元素 O< 的結(jié)合。codecs.decode 方法就是將字符串轉(zhuǎn)換為 byte array。本文中使用的密碼學(xué)操作都要進(jìn)行這一步驟。

錢(qián)包地址

一旦獲得公鑰,我們就可以計(jì)算出錢(qián)包地址,和比特幣不同,以太坊在主網(wǎng)和所有測(cè)試網(wǎng)都有相同的地址。當(dāng)用戶發(fā)起轉(zhuǎn)賬和簽名的時(shí)候,他們需要選擇相應(yīng)的網(wǎng)絡(luò)。

為了通過(guò)公鑰得出地址,我們需要做的就是在公鑰上應(yīng)用 Keccak-256 加密算法,然后拿出結(jié)果的后 20 個(gè)字節(jié),這樣就可以了。整個(gè)過(guò)程不需要其他的哈希函數(shù),無(wú)需 Base58 編碼,也不用其他任何轉(zhuǎn)換,你唯一需要做的事情就是在地址的開(kāi)頭添加“0x”。

Python代碼如下:

public_key_bytes = codecs.decode(public_key, ‘hex’)
keccak_hash = keccak.new(digest_bits=256)
keccak_hash.update(public_key_bytes)
keccak_digest = keccak_hash.hexdigest()
# Take the last 20 bytes
wallet_len = 40
wallet = ‘0x’ + keccak_digest[-wallet_len:]

校驗(yàn)和(checksum)

我們都知道,比特幣是對(duì)公鑰使用哈希算法,然后取結(jié)果的前 4 個(gè)數(shù)字,以此創(chuàng)建校驗(yàn)和。這對(duì)于所有比特幣地址來(lái)說(shuō)都是適用的,因此在沒(méi)有添加 checksum 字節(jié)之前,用戶無(wú)法獲得有效地址。

編者注:校驗(yàn)和(checksum)是一種較為簡(jiǎn)單的驗(yàn)證數(shù)據(jù)完整性的方法,具體方法有很多種,比如說(shuō)對(duì)一段數(shù)據(jù)逐次取 4 個(gè)比特,把取出的數(shù)全部加起來(lái),最后得到一個(gè) 4 個(gè)比特的值作為校驗(yàn)和。如果兩段數(shù)據(jù)不一樣,產(chǎn)生的校驗(yàn)和有極大概率是不一樣的。跟哈希函數(shù)的原理有相似之處,但夠不上密碼學(xué)哈希函數(shù)那樣的強(qiáng)度。)

例:

MD5(cvsoiu687y0adbfiq7et5tgho0) = a277a316d38c21786eac518b83af898f

MD5(wysoiu687y0adbfiq7et5tgho0) = becd314fb8d277cfe20aaadc2b52c177

在以太坊中,產(chǎn)生地址的流程與此并不相同。最初的時(shí)候,以太坊中沒(méi)有校驗(yàn)和這樣的機(jī)制來(lái)驗(yàn)證秘鑰的完整性。但是在 2016 年,Vitalik Buterin 引進(jìn)了 checksum 機(jī)制,現(xiàn)在已經(jīng)被錢(qián)包提供商和交易所使用。

在以太坊錢(qián)包地址上添加 checksum 使得我們可以通過(guò)大小寫(xiě)來(lái)校驗(yàn)地址的有效性。

首先,你需要獲得地址的 Keccak-256 哈希值。注意,將地址放入哈希函數(shù)的時(shí)候不可以添加 0x 部分。

其次,你需要迭代初始地址的字符,如果哈希值中的第 i 個(gè)字節(jié)(byte)大于或者等于 8,那么你要將地址中的第 i 個(gè)字符變?yōu)榇髮?xiě),否則就還是保持小寫(xiě)。

最后,你需要把 0x 添加到結(jié)果的開(kāi)頭。如果忽略大小寫(xiě),那么校驗(yàn)和地址與初始地址是相同的。但是,這種使用大寫(xiě)字母的做法讓人們可以隨時(shí)隨地檢查地址是否有效。你可以通過(guò)這個(gè)網(wǎng)頁(yè)找到有效驗(yàn)證 checksum 的算法。

通過(guò) checksum 驗(yàn)證方法,我們可以得到下面的結(jié)論:

“平均來(lái)看每個(gè)地址有 15 個(gè)校驗(yàn)位,并且隨機(jī)得出的錯(cuò)誤地址能夠偶然通過(guò)檢驗(yàn)的概率為 0.0247%。”

下面是將 checksum 添加到以太坊地址的代碼:

checksum = ‘0x’
# Remove ‘0x’ from the address
address = address[2:]
address_byte_array = address.encode(‘utf-8’)
keccak_hash = keccak.new(digest_bits=256)
keccak_hash.update(address_byte_array)
keccak_digest = keccak_hash.hexdigest()
for i in range(len(address)):
address_char = address[i]
keccak_char = keccak_digest[i]
if int(keccak_char, 16) >= 8:
checksum += address_char.upper()
else:
checksum += str(address_char)

結(jié)論

如文中所述,和比特幣相比,創(chuàng)建以太坊地址要容易地多。我們需要做的事情就是用私鑰在 ECDSA 上找出公鑰,然后使用 Keccak-256 算法,并以最終哈希值的后 20 個(gè)字節(jié)作為地址。

區(qū)塊鏈錢(qián)包科普:如何通過(guò)私鑰創(chuàng)建以太坊錢(qián)包地址?

如果你想使用這些代碼,我已經(jīng)把它們發(fā)布到這個(gè) GitHub repository 上了.

編者注:如上圖所示,以太坊的公鑰和地址都由私鑰生成,并且其生成所需的數(shù)學(xué)運(yùn)算都是完全公開(kāi)的。

以上就是區(qū)塊鏈錢(qián)包科普:如何通過(guò)私鑰創(chuàng)建以太坊錢(qián)包地址的詳細(xì)內(nèi)容,更多關(guān)于通過(guò)私鑰創(chuàng)建以太坊錢(qián)包地址的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

聲明:文章內(nèi)容不代表本站觀點(diǎn)及立場(chǎng),不構(gòu)成本平臺(tái)任何投資建議。本文內(nèi)容僅供參考,風(fēng)險(xiǎn)自擔(dān)!

你可能感興趣的文章

更多

熱門(mén)幣種

  • 幣名
    最新價(jià)格
    24H漲幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 115303.64¥ 829240.71
    -2.78%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 3604.38¥ 25921.98
    -5.17%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 3.0288¥ 21.7825
    -2.94%
  • tether USDT 泰達(dá)幣

    USDT

    泰達(dá)幣

    $ 0.9997¥ 7.1896
    -0.02%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 764.39¥ 5497.34
    -5.43%
  • solana SOL Solana

    SOL

    Solana

    $ 168.05¥ 1208.58
    -5.98%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.0002¥ 7.1932
    +0.03%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.2089¥ 1.5023
    -4.79%
  • tron TRX 波場(chǎng)

    TRX

    波場(chǎng)

    $ 0.3273¥ 2.3538
    -0.46%
  • cardano ADA 艾達(dá)幣

    ADA

    艾達(dá)幣

    $ 0.7306¥ 5.2543
    -5.01%

幣圈快訊

  • 特朗普:已下令將兩艘核潛艇部署在俄羅斯附近的相應(yīng)區(qū)域

    2025-08-02 01:02
    ChainCatcher消息,據(jù)社交媒體發(fā)文,美國(guó)總統(tǒng)特朗普表示,「基于俄羅斯前總統(tǒng)、現(xiàn)任俄羅斯聯(lián)邦安全委員會(huì)副主席梅德韋杰夫極具挑釁性的言論,我已下令將兩艘核潛艇部署到相應(yīng)地區(qū),以防這些愚蠢且煽動(dòng)性的言論不僅僅是說(shuō)說(shuō)而已。言論非常重要,往往會(huì)導(dǎo)致意想不到的后果,我希望這不會(huì)成為此類(lèi)情況之一。」
  • CNBC:隨著特朗普新關(guān)稅引發(fā)風(fēng)險(xiǎn)規(guī)避情緒,加密市場(chǎng)步入動(dòng)蕩的八月

    2025-08-02 00:55
    ChainCatcher消息,據(jù)CNBC報(bào)道,在特朗普公布對(duì)數(shù)十個(gè)國(guó)家調(diào)整后的「對(duì)等」關(guān)稅后,加密市場(chǎng)于周五出現(xiàn)下滑。比特幣價(jià)格表現(xiàn)相對(duì)堅(jiān)挺,而以太坊、XRP和BNB均小幅下跌。比特幣一度跌至113,988.47美元的低點(diǎn)。 此次下跌引發(fā)了大規(guī)模多頭強(qiáng)制平倉(cāng),即交易者被迫以市場(chǎng)價(jià)賣(mài)出資產(chǎn)以?xún)斶€債務(wù),進(jìn)一步壓低價(jià)格。 與加密相關(guān)的美股遭遇更大跌幅。Coinbase因第二季度業(yè)績(jī)不佳領(lǐng)跌,下跌15%;Circle下跌4%,GalaxyDigital下跌2%,以太坊財(cái)庫(kù)公司BitmineImmersion下跌8%,MicroStrategy下跌5%。
  • ETH全網(wǎng)合約持倉(cāng)量24小時(shí)減少5.98%

    2025-08-02 00:48
    金色財(cái)經(jīng)報(bào)道,據(jù)Coinglass數(shù)據(jù)顯示,ETH全網(wǎng)合約持倉(cāng)量在過(guò)去24小時(shí)減少5.98%,當(dāng)前總持倉(cāng)量為522.51億美元。其中Binance持倉(cāng)量為96.44億美元,OKX持倉(cāng)量為29.74億美元,Bybit持倉(cāng)量為38.82億美元。
  • OPLabs宣布首個(gè)Rust版高性能Rollup節(jié)點(diǎn)kona-node正式發(fā)布

    2025-08-02 00:44
    ChainCatcher消息,據(jù)官方消息,OPLabs宣布首個(gè)使用Rust打造的模塊化高性能Rollup節(jié)點(diǎn)kona-node正式公開(kāi)發(fā)布。 作為符合OPStack規(guī)范的Rollup節(jié)點(diǎn),kona-node具備內(nèi)存安全、資源占用低、支持多種證明后端等優(yōu)勢(shì),便于定制和擴(kuò)展。 kona-node僅約8000行代碼,兼具強(qiáng)大功能和高效性能,為以太坊Layer2解決方案開(kāi)發(fā)者帶來(lái)全新選擇。
  • 數(shù)據(jù):過(guò)去1小時(shí)內(nèi)有5,166.62萬(wàn)USDT轉(zhuǎn)入主流交易所

    2025-08-02 00:43
    ChainCatcher消息,據(jù)Coinglass數(shù)據(jù)顯示,過(guò)去1小時(shí)內(nèi)共有5,166.62萬(wàn)USDT轉(zhuǎn)入主流交易所。
  • 查看更多