관리 메뉴

멍개의 연구소

[ethereum] python으로 ethereum address 생성구현 본문

블록체인

[ethereum] python으로 ethereum address 생성구현

멍개. 2022. 8. 27. 16:06
 
#!/usr/bin/env python2

# pip install ecdsa
# pip install pysha3

from ecdsa import SigningKey, SECP256k1
import sha3

def checksum_encode(addr_str): # Takes a hex (string) address as input
    keccak = sha3.keccak_256()
    out = ''
    addr = addr_str.lower().replace('0x', '')
    keccak.update(addr.encode('ascii'))
    hash_addr = keccak.hexdigest()
    for i, c in enumerate(addr):
        if int(hash_addr[i], 16) >= 8:
            out += c.upper()
        else:
            out += c
    return '0x' + out

keccak = sha3.keccak_256()

priv = SigningKey.generate(curve=SECP256k1)
pub = priv.get_verifying_key().to_string()

keccak.update(pub)
address = keccak.hexdigest()[24:]

print("Private key:", priv.to_string())
print("Public key: ", pub)
print("Address:    ", checksum_encode(address))

해당 코드는 python으로 ethereum address를 생성하는 코드입니다.
sha3이 python3에서 정상적으로 동작을 하지 않아 python2로 진행합니다.

ethereum에서 사용하는 address는 private -> public을 거쳐서 address를 생성하게 됩니다.

ECDSA는 타원곡선알고리즘 입니다.

우리가 address를 잊어버리더라도 private키를 알고있다면 address가 복구 가능한 이유가 이와같습니다. 또한 키스토어(keystore)파일로도 복구가 가능한데 keystore 파일은 private키를 생성해주는 파일입니다.

Comments