Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스마트 컨트랙트
- erc721
- web3
- JavaScript
- Python
- geth
- blockchain
- 네트워크
- truffle
- erc
- web3.js
- server
- ethers
- Programming
- web
- solidity
- tcp
- github
- NFT
- Ethereum
- 블록체인
- 제어의역전
- MySQL
- 솔리디티
- 트랜잭션
- ERC165
- ERC20
- 이더리움
- Docker
- git
Archives
- Today
- Total
멍개의 연구소
[ethereum] python으로 ethereum address 생성구현 본문
#!/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키를 생성해주는 파일입니다.
'블록체인' 카테고리의 다른 글
[ethereum] keystore 파일에 대해서 (0) | 2022.08.27 |
---|---|
[ethereum] block, transaction pool, state 각각 어디에 저장되는가 (0) | 2022.08.27 |
[gpg] gpg를 이용하여 RSA(공개키 암호화)방식 이해 (0) | 2022.08.27 |
[ethereum] 노드에서 생성된 block에 대해서 이벤트 받기 (0) | 2022.08.27 |
[ethereum] solidity에서 bytes32에서 string으로 변환 (0) | 2022.08.27 |
Comments