티스토리 뷰

원하는 문자로 시작하는 주소를 채굴하고 니모닉을 리턴하는 함수를 작성해 보았습니다.

 

passphrase 는 옵션이지만,

씨드는 반드시 True Random Number 를 던지는 것이 중요합니다.

from bitcoin import *
from mnemonic import Mnemonic

m = Mnemonic('english')

def buildaddr(seed, passphrase, prefix) :
  for i in range(10000000) :
    ent = sha256(seed + str(i))[0:32]
    priv = sha256(ent + passphrase)
    addr = privtoaddr(priv)
    if i % 500 == 0 :
      print(i, priv, addr)
    if addr.startswith(prefix):
      print('** done ** ')
      print('addr: ', addr)
      words = m.to_mnemonic(bytes.fromhex(ent))
      print('words: ', words)
      print('passphrase: ', passphrase)
      print('')
      print('== verify ==')
      print('ent: ', ent)
      print('bytearray.hex(m.to_entropy(words)): ', bytearray.hex(m.to_entropy(words)))
      print('priv: ', priv)
      print('sha256(ent + passphrase): ', sha256(ent + passphrase))
      print('addr: ', addr)
      print('privtoaddr: ', privtoaddr(priv))
      break
      
      
# 사용예시
seed = '9f5b4b695ef703c44fc147810e569b3062ef23f5f3f5de0ca2fc059' # True Random Number
prefix = '1min'
passphrase = 'xxxx'

buildaddr(seed, passphrase, prefix)

 

이렇게 만들어진 니모닉은 잘 메모해서 관리하시고요

passphrase 는 마음 안에 고이 간직해 두시면 걱정이 없을  것  같습니다!

 

 

실행 결과 예시


>>> buildaddr('true random number required', '1234', '1Hi')
0 e7c44915756861b130499dd4e189e93247b66170ee28b0e6fd003e7bc3b04598 1C7uGR5kWnia7Jn7djWBFdnubHmEGwNs8S
500 ff6ba48e6717569506f755b4ccb9feb739c3c9d698c4b6cbfa6148d93eab5290 1FRVPVpWMAc7hk53MeGXwUcP1Dw3EGotWT
1000 dceab180cb13059276822a8a72b5efae47bc54ad2a1cad7172dc4117544b78c1 1KSvbGPCo1aExZaWgH1cjwcn4cdWkKN4U9
1500 7ca847cea9282eedb0d58ed6343ef6377d32be122f452474bffac130bb945e3f 17aWGQkrQY2C6Qv7L96HKXZEukDnJEfcYC
2000 53430b9beb89b2fb41855c7fbc022348797f730b44186612ce3a9297572f9f4d 1BYwNboFjEsNC7jZD88LERNVa9Jzk4wb7Y
2500 f68557abe550250541f8ec6187014fbf35f4901368adec6d3b3faedd7ba11303 1EYcHzjMzaXwAURjdYM15q6BcqjnwRVG6m
** done **
addr:  1HihLLaZd6J2DZchmK7SmdtQ1WA8QykV41
words:  prosper push lunch found knee style bonus deal nuclear come buzz rely
passphrase:  1234

== verify ==
ent:  ac95d614ae17b9af8659c19745c07e5a
bytearray.hex(m.to_entropy(words)):  ac95d614ae17b9af8659c19745c07e5a
priv:  255f0ccc215cdbe359150725778ca1c02cb9639f6640f3a33b85208ce8ff0202
sha256(ent + passphrase):  255f0ccc215cdbe359150725778ca1c02cb9639f6640f3a33b85208ce8ff0202
addr:  1HihLLaZd6J2DZchmK7SmdtQ1WA8QykV41
privtoaddr:  1HihLLaZd6J2DZchmK7SmdtQ1WA8QykV41
>>>

 

 

728x90
반응형
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함