비트코인의 블록체인 장부를 보거나 혹은 제 영상에 따라 비밀키를 생성하고 주소를 생성하는 절차를 따라해 보신 분들은 16진수를 상당히 많이 보셨을 것 같습니다. 하나의 블록은 블록헤더와 수많은 거래들로 이루어져 있는데요. 해당 블록 정보를 볼때면 또 어김없이 수많은 16진수 표현이 보입니다. 일반인들이 보실 때 이런 표현이 상당히 낯설고 거리감이 있어 보일 것 같은데요. 2진수 16진수에 대한 울렁증을 좀 해결해드리고자 글을 작성해 봅니다. 컴퓨터의 모든 데이터는 0과 1의 이진 데이터로 기록이 됩니다. 여기부터가 잘 공감되지 않는 분들이 많을 것 같은데요.. 아래 메모리 반도체를 보세요 참 딱딱하게 생겼죠. 저 안에는 수많은 스위치가 들어 있답니다. 그냥 말그대로 스위치에요. 우리 집에도 방마다 등이 ..
BIP39 니모닉 단어 목록 https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md 파이썬 코드 from bitcoin import sha256 import requests # fetch 2048 words res = requests.get("https://raw.githubusercontent.com/bitcoin/bips/master/bip-0039/english.txt") arr = res.text.strip().split('\n') # 23 words selected words_23 = 'aerobic bulk nice flip focus exit pause census globe garden vacant thumb g..
필요한 모듈 설치 pip install cryptos SegWit 주소 생성 방법 from cryptos import * priv = random_key() # your private key b = Bitcoin() # 세그윗 주소생성 addr_sw = b.privtop2w(priv) # '3MeQ13kvDsPGzT6WaQdiygawzgMcizf1sD' 해당 주소의 정확한 명칭은 p2sh-p2wpkh 가 됩니다. (Nested SegWit) 세그윗은 내부적으로 압축 공개키를 사용합니다. (비압축 공개키 사용이 제한됨) SegWit 주소에서 출금 방법 from cryptos import * b = Bitcoin() # 출금할 세그윗 주소 addr_sw = '3MeQ13kvDsPGzT6WaQdiygawzgM..
세그윗이 증명(witness) 데이터에 대한 수수료 과금을 거래(only tx) 데이터보다 75% 할인해 주는 까닭은 단지 사용자로 하여금 SegWit 주소 사용을 권장하기 위한 것일 뿐이다. 세그윗으로 거래속도가 개선된 것은 단지 블록의 사이즈가 늘어났기(최대 1.8MB) 때문이지 세그윗의 다른 혁신이 있기 때문은 아니다. 블록의 사이즈를 늘림으로 거래속도가 개선되는 부분은 득(확장성)과 실(탈중앙화)이 공존하기 때문에 논외로 한다면, 세그윗으로 얻은 순이익은 거래가변성 문제의 해결 뿐이다. 어째튼 세그윗은 비트코인에 정식 업데이트로 받아들여 진지 오래고 개인 입장에서는 레거시주소보다는 세그윗주소를 사용하는 것이 더욱 현명하다. 레거시 주소 사용을 고집한다면, 증명데이터 크기가 100Byte, 수수료가..
미루고 미뤄오던 비트코인 풀노드 설치를 시작하며 기록을 남깁니다. 라즈베리파이를 하나 준비해서 별도로 풀노드 서버를 하나 준비하려다가 최근 가격이 많이 올라서 그냥 개인 노트북에 설치를 시작합니다. 비트코인 코어 다운로드 본인 PC환경에 알맞게 비트코인 코어를 다운로드 합니다. Bitcoin Core 22.0 기준으로 Mac dmg 설치파일은 14MB 용량이네요. https://bitcoin.org/ko/download 설치파일을 실행할 때 별도 관리자 권한이 필요할 수 있습니다. (Mac 의 경우 옵션키를 누른 후 프로그램 열기하시면 됩니다.) 설치 옵션 현재(22년 12월 5일) 블록체인 전체 용량은 420GB 인데 해당 블록체인 장부를 내려받을 폴더를 선택합니다. 이때 PC의 저장공간이 충분치 않다..
전액 출금하지 않고 일부는 기존 주소로 남기겠다고 하실 경우에는, 아래와 같이 입력으로 사용했던 주소를 그대로 출력에 하나 추가해 주시면 됩니다! from cryptos import * c = Bitcoin() from_address = 'address1' inputs = c.unspent(from_address) balance = sum([i['value'] for i in inputs]) fee = 1500 change = 20000 # 2만 사토시는 그대로 잔액으로 남기는 경우, to = 'address2' outs = [{'value': balance - fee - change, 'address': to}, {'value': change, 'address': from_address}] tx = c..
What is the SegWit? 거래 데이터에서 증명을 분리해서 증명데이터 영역에 별도로 보관하는 주소 방식(잠금장치) Background 거래가변성 문제 TXID 생성시 증명을 포함함으로 증명을 살짝 바꾸면 동일한 거래이지만 TXID가 달라질 수 있는 문제 거래검증의 효율을 떨어트린다.(변조된 TXID가 블록에 들어갈 수 있게 된다) Benefit TXID 해시의 대상에서 증명을 제거함으로 거래가변성 문제를 해결한다. 하지만 p2pkh 레거시 주소를 사용하는 거래는 여전히 거래가변성 문제에 노출되어 있음 비트코인의 거래속도를 높인다. 한번에 처리할 수 있는 거래개수가 늘어나기 때문에 사용자 입장에서 수수료 절감 Details TXID 의 원본메세지에서 증명(or 서명) 부를 제거한다. 증명의 위치를..
니모닉으로 HD 지갑 만들기 from mnemonic import Mnemonic import bip32utils mnemon = Mnemonic('english') words = mnemon.generate(128) print(words) from bitcoinlib.wallets import Wallet w = Wallet.create("Wallet7", witness_type='segwit', keys=words, network='bitcoin') WalletKeys = w.get_keys(number_of_keys=5) for k in WalletKeys: print(k.address) # 지갑주소들의 모든 정보 확인(비밀키 포함) w.as_dict(include_private=True) # 바이..
비트코인을 화폐로 사용할 수 없는 이유로 많은 사람들이 비트코인의 변동성을 이유로 제시한다. 하지만 비트코인의 변동성은 비트코인에게 오히려 사용자층을 확보하는 강력한 유인이 된다. 그 이유는 다음과 같다 1. 비트코인의 여름 가격이 미친듯이 오른다. 많은 사람들이 열광하며 몰려온다 2. 버블이 무너지고 긴 겨울이 되면 많은 사람들이 물리고 멘붕이 온다. 비트코인에 대하여 진지하게 알아보기 시작한다. 비트코인의 오묘한 마력에 빠져서 결국 비트코이너가 된다. 이렇게 한 사이클을 거칠 때마다, 비트코인은 다시 새로운 열렬 팬들을 확보한다. 그래서 다음 여름에는 더 높은 가격까지 치솟게 된다. 그런데 그러다 결국 진짜 변동성이 없어진다면? 그럼 비트코인을 진짜로 화폐처럼 사용하는 것도 가능해져서 더 좋다. 그럼..
니모닉 단어를 임의로 선택해서 사용하는 것 자체가 니모닉의 사용 목적에 반하는 것이긴 하지만, 굳이 임의로 선택하겠다 하면 완전히 불가능하지는 않다. 니모닉은 자체적으로 체크섬을 포함하기 때문에 체크섬에 해당하는 단어만 제외하고 나머지는 2048개의 니모닉 단어들 중 임의로 선택해서 사용하는 것이 가능하다. 예를 들어 12단어 니모닉의 경우에는 128비트의 난수와 4비트의 체크섬을 가진다. 이 경우 마지막 단어만 체크섬에 해당하기 때문에, 앞에서부터11개 단어까지는 임의로 선택할 수 있다. 그런데 단어 하나가 11비트를 표현함으로 앞에서부터 11개 단어는 121비트를 표현한다. 128비트의 엔트로피 길이를 맞추기 위해 부족한 7비트는 임의로 선택을 한 후에 완성된 128비트 난수값을 sha256 해시 돌..
이전 편지에 이어 여기까지 관심을 가지고 찾아와줘서 정말 고마워 오늘은 비트코인의 새로운 특성인 완전한 소유에 대해서 이야기를 해볼께 완전한 소유라.. 이건 또 뭔 뚱딴지 같은 소리냐 하겠지.. 그래 니맘 다 알아.. 오늘은 그냥 좀 철학적인 고민을 해보자 지난 편지에서는 인플레이션에 대한 거대담론이고 오늘은 또 뭔 철학적 고민이냐 하겠지.. 미안해.. 그래도 조금만 더 인내심을 가지고 내 얘기를 들어주었음 좋겠다.. 너는 지금 너가 소유하고 있는 재산으로서 어떤 것들을 가지고 있냐 집도 있고, 자동차도 있고, 여러가지 주식증권과 현금성 예금들이 있지.. 그래 좋아.. 그건 뭐 다 너의 것들이라고 할 수 있겠지.. 그런데 너가 말한 모든 것들은 진짜 너의 것들이 아니라는 말을 하고 싶은거야 너의 사업이 ..
먼저 인터넷 연결 환경에서 필요한 모듈 설치 pip install bitcoin qrcode image ※ image 모듈은 아래 코드에는 없지만, qrcode.make() 수행시에 내부적으로 사용을 하기 때문에 사전 설치가 필요합니다. 압축주소를 생성하고 QR코드까지 생성하기 (여기부터는 인터넷 연결 없이 진행 가능) from bitcoin import * import qrcode # 임의로 비밀키 생성하고 압축 공개키까지 생성 priv = random_key() pub = privtopub(priv) prefix = '02' if int(pub[-1], 16) % 2 == 0 else '03' pub_compressed = prefix + pub[2:66] # 압축된 공개키로 주소를 만들고 비밀키를 ..
저도 참 의심 많은 사람 중 하나라고 자부하고, 그래서 하드월렛 제조사를 믿지 않으며 주체적으로 비트코인 주소를 생성하고 출금하는 방법에 대하여 유튜브 영상을 준비했었는데요.. 많은(혹은 일부) 분들이 파이썬은 믿을 수 있냐, 비트코인 라이브러리들은 믿을 수 있냐, 이거 진짜 완벽한 거 맞냐 의문을 제기하시는 분들이 있어서.. 제가 아는 선에서 정말 이보다 더 안전할 수 없는 방법 한번 정리해 드립니다.(특별히 주요사항은 굵은 글씨로 작성함) 준비물 주소생성 후 파기할 고물 PC 하나 주사위나 동전 기본 지식 비트코인 비밀키와 공개키의 기능과 생성방법 공개키로부터 주소를 생성하는 방법 내 비트코인 주소에서 직접 다른 주소로 비트코인을 전송하는 방법 온라인 환경에서 PC에 파이썬 및 라이브러리 설치 정상적..
팀장) 로또를 하면 사업수익으로 어려운 사람들을 돕기라도 하지, 비트코인은 도대체 이 사회에 유익한 것이 하나도 없지 않은가. 투기적 자산이고 제로썸 게임일 뿐 도박과 하나 다를 것이 없는 것 같다. 요즘 가격도 많이 떨어졌는데 곧 망할 것 같지 않나. 나) 비트코인은 절대 망하지 않아요. 왜냐면 지금도 비트코인에 대한 분명한 수요가 있기 때문이에요. 비트코인은 남미나 아프리카와 같이 국가 신용도가 낮은 나라의 국민들에게 믿을 만한 화폐로서 선호도가 높고요. 국가 위기 사태시에 나의 자산들을 안전하게 지킬 수 있어요. 또한 장기적으로는 인플레이션을 헤지하는 수단으로 활용할 수가 있고요. 투자자 입장에서는 전통적인 부동산/주식/채권과 성격이 다른 자산으로서의 특성이 있어서 분산투자의 대상으로서도 분명한 포..
비밀키로부터 지갑주소를 만드는 방법에는 압축주소와 비압축주소 2가지 방법이 있습니다. 압축주소란 압축된 공개키로부터 비트코인 주소를 얻는 것을 말하며, 비압축주소란 압축되지 않은 공개키로부터 비트코인 주소를 얻는 것을 말합니다. 공개키 압축에 관한 상세 내용은 아래 자료를 참고해 주세요. https://learnmeabitcoin.com/technical/public-key 사실 비압축 주소라는 이름은 상당히 어색한 이름입니다. 이보다는 그냥 레거시 주소 혹은 오리지날 주소 정도가 더 적절한 이름이지 않을까 싶습니다. 왜냐하면 이 주소 형태는 비트코인 초창기에 사용되었던 주소 형태이기 때문입니다. 이후에 공개키의 값을 압축하는 방법이 발견되면서 공개키를 압축해서 사용하는 주소들이 생겨났고 사실 이와 구별..
P2PKH 주소란 무엇인가요? p2pkh 는 pay to public key hash 를 의미합니다. p2pkh는 비트코인 네트워크에서 가장 일반적으로 많이 사용되는 주소 형태입니다. 보통 1xxxxx 로 시작하는 주소 유형입니다. 일반적으로 주소라고 알려진 것은 사실 정확히 표현하자면 잠금장치를 의미합니다. p2pkh 주소 유형은 비트코인을 공개키의 해시로 암호화합니다. p2pkh 를 이해하기에 앞서 P2PK 를 먼저 알아보는 것이 유익합니다. p2pk 는 pay to public key 를 의미하며, 공개키 자체를 주소로 사용하는 것입니다. 이는 단지, 공개키만 이용해서 비트코인을 잠금 상태로 만든다는 것이기 때문에 매우 직관적입니다. 최초의 비트코인 거래는 사토시나카모토가 할피니에게 전송한 거래로 ..
1/4 사이버 공간은 모든 것이 완전히 똑같이 복제가 가능하므로 가짜가 넘쳐 나고 진짜를 구별할 수 없다. 그런데 비트코인은 이런 사이버 공간 위에 물리적 에너지를 기반으로 하는 새로운 현실 세계를 구축할 수 있게 해주었다. 2/4 작업증명이란 물리적 에너지를 디지털 에너지로 전환하는 과정이다. 그리고 이렇게 디지털화된 에너지에는 현실의 물리 법칙이 동일하게 적용된다. 3/4 열역학 제 1법칙, 닫힌 계에서 에너지는 형태만 전환될 뿐 사라지거나 생성되지 않는다. vs 비트코인이 속한 주소는 변경될 수 있지만 전체 발행량은 변하지 않는다. 열역학 제 2법칙, 닫힌 계에서 엔트로피는 계속 증가할 뿐 줄어들 지 않는다. vs 블록에 한번 새겨진 거래는 되돌릴 수 없다. 4/4 이렇게 가상 공간에 구축된 물리적..
지난 편지에서는 일단 비트코인이 무엇인 지 정의를 내려보았어. 잘 이해가 되었는 지 모르겠어. 뭐 이해가 그렇게 중요하진 않아 그냥 그런가보다 하고 넘어가자. 이제부터는 비트코인의 여러가지 특성들에 대해서 하나씩 알려줄께. 이러한 특성들을 하나 둘씩 배우다 보면, 비트코인이 왜 이렇게 중요한 지 그리고 비트코인이 왜 세상을 바꿀 수 있는 물건인 지 조금씩 깨닫게 될꺼야. 오늘은 비트코인의 디플레이션 화폐적 특성에 대해서 알랴줄께 갑자기 디플레이션.. 어려운 말이 나왔지. 인플레이션이란 말은 조금 더 흔하게 들어봤을꺼야 별건 아니고 물가가 상승하는 것을 인플레이션이라고 하잖아 반대로 물가가 떨어지는 것을 디플레이션이라고 하는 거야. 우리는 지금까지 물가상승이 당연시 되는 경제 사회에서 살아왔잖아. 물가가 ..
사랑하는 친구에게, 비트코인이 무엇인 지 아직 잘 모르겠지만, 들어는 보았겠지 그동안 참 많이 미뤄왔었는데, 더 늦기 전에 이제는 좀 말을 해야겠다. 너가 비트코인에는 별로 관심없는 줄로 이전부터 알고 있지만, 이제는 좀 관심을 가졌으면 하는 마음에 이렇게 편지를 쓴다. 너가 원하지도 않는데 굳이 이렇게 편지를 전하는 이유는 단지 너가 나의 소중한 친구이기 때문이야. 단도직입적으로 결론부터 말하면, 비트코인은 인류에게 지금까지 없었던 인류가 이제 껏 한번도 가져 보지 못했던, 하지만 인류에게 너무나 필요했던 혁신적인 역사적인 발명품이라는 것이다. 혁신적인 발명품이라고 이야기하는 이유는 지난 70년간 세계의 금융과 무역질서를 이끌어 온 미국 달러 중심의 경제체제는 이제 막바지에 이르렀으며, 비트코인을 기반..
Background 비트코인 표준 스크립트 종류 null-data 스크립트란 비트코인 장부에 특정 데이터를 저장하기 위한 목적으로 사용 OP_RETURN 의 op_code 는 `0x6a` `NULL DATA` 의 scriptPubKey 의 구조 {OP_RETURN} + {문자열길이} + {임의문자열} 예시) OP_RETURN + 11 + hello world => 6a0b68656c6c6f20776f726c64 null-data 트랜잭션 만들기 from cryptos import * c = Bitcoin() addr = 'address' inputs = c.unspent(addr) balance = inputs[0].get('value') fee = 500 message = b'Jesus is the C..
예시 * 레거시 거래 https://mempool.space/tx/0c247433e4e53ba1f4f52c0cc75556f7057f22f2b99b5895322d5da958c358ff * 세그윗 거래 https://mempool.space/tx/d23f0f768236f2a58bd7ca6b544ec24c09baabccddd1aa5c6f6fe90716879862 SegWit 증명데이터를 TXID 해시 원본값에서 분리하는 비트코인 업데이트 Transaction 거래데이터 + 증명데이터 sat/B 수수료 / 거래에 사용된 물리적인 바이트 수 WU(Weight Unit) 기본 거래 데이터의 1Byte 는 4WU 로 계산 증명 데이터의 1Byte 는 1WU로 계산 하나의 블록 사이즈 용령은 4백만 WU까지 제한됨 s..
2009년 1월 3일 첫번째 블록 https://www.blockchain.com/explorer/blocks/btc/0 첫번째 거래 https://www.blockchain.com/btc/tx/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b https://mempool.space/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f input의 Sigscript 숨겨진 메세지 5468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e642062..
원하는 문자로 시작하는 주소를 채굴하고 니모닉을 리턴하는 함수를 작성해 보았습니다. 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.starts..
채굴 난이도 2016 블록마다 채굴난이도가 조절된다. 하나의 블록이 정확히 10분마다 생성된다고 할 때 14일이면 2016 블록이 생성되게 된다. 난이도 조절은 아래와 같이 20160 분을 이전 2016 블록이 생성되는 데 소요된 실제 시간(분)으로 나눈 값을 구한 뒤 expected / actual 20160 / 소요된시간(분) 해당 계산 값으로 이전 difficulty 값에 곱해주면 다음 difficulty 값이 된다. difficulty x (20160 / actual ) = new difficulty 난이도는 한번에 최대 0.25 ~ 4 배까지만 조정될 수 있다. difficulty 는 최초 비트코인이 채굴되던 당시에 비해서 난이도가 몇배나 더 어려워졌는지를 의미한다. 갑자기 1초에 1채굴하는 머..
최근 이더리움이 POS전환에 성공하면서 비트코인이 채굴에 전기를 사용하는 것에 대한 비난 여론이 더욱 거세지는 것 같습니다. 지혜의 족보 오태민 작가님도 이에 대한 의견을 주셨었는데요. https://www.youtube.com/post/UgkxLaliO9x_fILUjjrBAY_p-hthCcftmrrJ 관련해서 저도 개인적으로 평소에 가지고 있던 생각을 공유해 보고자 합니다. 환경 문제는 정말 중요하다. 온실가스와 지구 온난화 문제에 대한 전 지구적인 기후변화 문제가 정말 심각하다는 데에 인식을 달리 하는 사람은 없을 것 같습니다. 지구온난화의 원인으로 온실가스가 주 원인으로 지목이 되고 있고요. 또 온실가스는 화석연료 사용으로 발생하죠. 또한 쓰레기 문제도 심각하죠. 미세 플라스틱에 의한 해양오염에 대..
잘 만들어진? 비트코인 개인지갑은 세상에서 가장 안전한 나만의 비밀금고가 됩니다. 스위스 은행보다도 튼튼하며 세상 그 누구도 나의 허락없이 나의 자산을 가져갈 수 없습니다. 개인지갑을 안전하게 만드는 것은 나의 평생동안 모은 자산을 담아도 걱정이 없는 든든한 개인금고를 만드는 일입니다. 그럼 이제 세상에서 가장 안전하고 실용적으로 비트코인 비밀키를 생성하고 보관하는 방법을 공유합니다. (비밀키를 이용해 비트코인 주소를 생성하는 방법은 다른 영상을 참고해 주시기 바랍니다) Brain wallet 먼저 브레인 월렛은 기억하기 쉽고 간편해서 좋습니다. >>> from bitcoin import * >>> >>> priv = sha256('apple') >>> priv '3a7bd3e2360a3d29eea436..
니모닉은 BIP39 제안으로서 비밀키를 저장하고 관리하기에 불편함을 극복하기 위한 새로운 해결책으로서 제안되었다. 사실 256비트의 이진수가 바로 날 것 그대로의 비밀키이고 이는 컴퓨터 머신에게 익숙한 형태다. 하지만 사람이 해당 값을 다루기에는 너무나 불편하다. 겨우 16진수 표현을 사용하여 길이를 짧게 표현해 낼 수는 있지만, 턱없이 불편한 형태이고 이를 개선하기 위해 체크섬과 BASE58 인코딩을 적용한 WIF 형태는 그나마 조금 나은 상태이지만, 여전히 기록하기에 그리고 구두로 전달하기에 또는 기억하기에는 어려움이 있다. 즉 비밀키가 너무나 중요한 정보이지만 사람이 이를 관리하기란 여간 까다로운 것이 아니다. 그래서 무작위로 생성된 256비트의 비밀키를 보다 인간에게 익숙하고 관리하기 용이한 형태..
비트코인 비밀키는 내가 임의로 선택할 수 있지만, 선택된 비밀키로부터 파생되는 비트코인 주소는 내가 마음데로 선택할 수가 없다. 주소값은 비밀키로부터 계산된 결과이기 때문에 당연하다. (주소값으로부터 비밀키를 얻는 것은 당연히 불가능하다) 그런데 가끔 의미있는 단어를 포함하는 주소를 볼 때가 있다. 아래는 유명한 bitaddress.org 사이트의 관리자 후원 비트코인 주소이다. 재미나게? 닌자라는 단어로 주소가 시작된다. 이러한 주소는 어떻게 가질 수 있을까? 비트코인 전체 주소에 정확히 매칭되는 비밀키를 찾는 것은 불가능하지만, 비트코인 주소의 일부만 매칭되는 비밀키를 찾는 것은 크게 어렵지 않다. 예를 들자면, 1bitOOOOOOOOOOOOOOOO 와 같이 앞 4글자만 원하는 글자가 새겨진 비트코인..
비트코인의 주소는 256비트로 표현되는 숫자라면 무엇이든 가능합니다. 2의 256승에 해당하는 수를 10진수로 표현하면 아래와 같습니다. 1.1579209e+77 위 숫자를 어떻게 읽어야 할 지도 막막하네요. 비트코인 지갑을 생성한다는 의미는 0부터 2^256 사이에서 임의로 하나의 수를 선택하는 것입니다. 이렇게 선택한 숫자가 바로 나만 아는 비밀키가 되는 것이고요. 이 비밀키로부터 유일한 비트코인 주소가 만들어 집니다. 그러므로 누구든 이런 의문이 들 수 있습니다. 내가 선택한 숫자(비밀키)를 혹시 다른 누군가가 동일하게 선택한다면 나의 비트코인은 모두 털리는 것 아닐까!? 네 맞습니다! 내가 선택한 그 숫자를 하필 다른 누군가가 동일하게 선택한다면, 해당 숫자로부터 만들어진 비트코인 주소에 잔액이 ..