Ethereum地址是如何生成的

shooter發表於2019-03-01

來自簡書

btc address: 1FmWXNJT3jVKaHBQs2gAs6PLGVWx1zPPHf eth address: 0xd91c747b4a76B8013Aa336Cbc52FD95a7a9BD3D9

以太坊生成地址的方式跟比特幣比較類似,也是 私鑰 -> 公鑰 -> 地址,以太坊只是在公鑰 -> 地址做了簡化。 以太坊使用Secp256k1橢圓曲線得到私鑰、公鑰,比特幣使用的也是相同的橢圓曲線演算法。 得到公鑰後,對公鑰做Keccak-256雜湊運算,然後取最後的40位16進位制字元,得到的就是以太坊地址。

生成以太坊地址跟比特幣地址都是不需要連線網路的

###python code 生成以太坊地址

python首先安裝類庫 pip install ecdsa pip install pysha3

import binascii
import sha3
from ecdsa import SigningKey, SECP256k1

priv = SigningKey.generate(curve=SECP256k1) #生成私鑰
pub = priv.get_verifying_key() #生成公鑰

keccak = sha3.keccak_256()
keccak.update( pub.to_string()) #keccak_256雜湊運算
address = "0x" + keccak.hexdigest()[24:]

priv_key = binascii.hexlify( priv.to_string())
pub_key = binascii.hexlify( pub.to_string())

print("Private key: " + priv_key.decode() )
print("Public key:  " + pub_key.decode() )
print("Address:     " + address)

# Address: 0xd38d3c226d0a86ce9932608edac39163fcbc550e
複製程式碼

來個騷操作,用同一份私鑰來管理比特幣與以太坊

既然以太坊使用Secp256k1橢圓曲線得到私鑰、公鑰,比特幣使用的也是相同的橢圓曲線演算法

那我們就用 Bitcoin地址是如何生成的得到的公鑰 04d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f691757b28e31be71f09f24673eed52348e58d53bcfd26f4d96ec6bf1489eab429d,生成一個以太坊地址。 這個公鑰是通過openSSL得到的未壓縮公鑰,以太坊不需要使用這種型別的公鑰,只要把首位的04去掉即可。

import sha3
import binascii

_openssl_pub_key= "04d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f691757b28e31be71f09f24673eed52348e58d53bcfd26f4d96ec6bf1489eab429d"

_pub_key = _openssl_pub_key[2:]
_pub_hex = binascii.unhexlify(_pub_key)

keccak = sha3.keccak_256()
keccak.update(_pub_hex)

address = "0x" + keccak.hexdigest()[24:]

print address #0x9156a7cdab767ffe161ed21a0cb0b688b545b01f
複製程式碼

這說明啥?我用完全相同的私鑰,分別生成了比特幣地址與以太坊地址,這兩個完全不一樣的地址用的是同一個私鑰。

以太坊地址 0x9156a7cdab767ffe161ed21a0cb0b688b545b01f 與比特幣地址 14xfJr1DArtYR156XBs28FoYk6sQqirT2s的私鑰竟然是相同的。 這給資產管理帶來了很大方便,但如果一份私鑰洩露了,2份資產都有可能被盜。 管理一時爽,洩露全都火葬場。


參考: http://blog.luoyuanhang.com/2018/04/17/eth-basis-accounts-address-pubkey-prikey/ https://www.jianshu.com/p/efc6bfdf4988 https://www.bilibili.com/video/av27153321 https://zhuanlan.zhihu.com/p/34363341 https://www.myetherwallet.com/

相關文章