티스토리 뷰

P2PKH 주소란  무엇인가요?

p2pkh 는 pay to public key hash 를 의미합니다. p2pkh는 비트코인 네트워크에서 가장 일반적으로 많이 사용되는 주소 형태입니다. 보통 1xxxxx 로 시작하는 주소 유형입니다.

일반적으로 주소라고 알려진 것은 사실 정확히 표현하자면 잠금장치를 의미합니다.

p2pkh 주소 유형은 비트코인을 공개키의 해시로 암호화합니다.

 

p2pkh 를 이해하기에 앞서 P2PK 를 먼저 알아보는 것이 유익합니다.

p2pk 는 pay to public key 를 의미하며, 공개키 자체를 주소로 사용하는 것입니다.

이는 단지, 공개키만 이용해서 비트코인을 잠금 상태로 만든다는 것이기 때문에 매우 직관적입니다.

 

최초의 비트코인 거래는 사토시나카모토가 할피니에게 전송한 거래로 알려져 있습니다.

해당 거래에서 p2pk 주소를 사용했었습니다.

https://www.blockchain.com/btc/tx/f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16

 

 

그런데 공개키의 해시를 주소로 사용하는 이유는 무엇인가요?

여기서 공개키의 해시란 공개키를 sha256 처리한 결과를 ripemd160 으로 한번 더 해시한 결과를 의미합니다.

sha256 의 결과는 256비트이고, ripemd160의 결과는 160비트입니다.

 

공개키 해시를 구하는 방법

from bitcoin import *

priv = random_key()
pub = privtopub(priv)  # uncompressed
hash1 = sha256(bytes.fromhex(pub))
public_key_hash = ripemd160(bytes.fromhex(hash1))

 

보다 간결하고 실용적인 주소 길이를 얻기 위해 ripemd160  해시를 사용합니다. 하지만 해시의 안정성을 한층 더 높이기 위해 sha256 의 도움을 받는 것입니다.

 

결국 긴 공개키를 해시함으로 보다 안전하고 간결한 주소를 사용할 수 있게 됩니다.

 

 

 

한번이라도 출금된 적이 있는 주소를 계속 사용하는 것은 위험한가요?

결론부터 간단히 이야기하자면,

한번이라도 출금이 있었던 주소를 계속 사용해도 위험하지 않습니다. 하지만 그렇게 하지 않는 것은 더욱 안전합니다.

 

p2pkh 주소에서 출금을 하기 위해서는 소유자의 공개키와 디지털서명이 반드시 필요합니다.

공개키는 해당 주소의 소유자 자신임을 증명하며,

서명은 해당 거래를 내가 확인하고 동의했음을 증명합니다.

 

그리고 공개키와 디지털 서명은 해당 거래에 그대로 포함되고 블록에 기록됩니다.

그런데 공개키는 어드레스 소유자의 고유 정보가 됩니다.

 

비밀키로부터 공개키를 계산하는 것은 1초도 걸리지 않지만,

공개키로부터 비밀키를 계산하는 것은 매우 어려운 작업으로 알려져 있습니다.(타원곡선 디지털서명 알고리즘)

 

하지만 먼 미래에는 공개키로부터 비밀키를 계산해 내는 기적과 같은 수학적 성과가 발견될 가능성이 없지 않습니다. 공개키로부터 비밀키를 역으로 계산해 내는 방법이 먼 미래 어떤 천재적인 수학자에 의해 밝혀진다면, p2pkh 주소에서 출금이 있었던 지갑주소들은 모두 위험에 노출에 노출되게 됩니다.

 

하지만 출금을 한번도 한 적 없는 주소라면,

비트코인을 받기만 했을 뿐 출금을 한적이 없기 때문에 블록체인 장부 상에 해당 주소의 공개키가 남아 있지 않습니다.

 

결국 해당 주소는 블록체인상 공개키의 해시(sha256 > ripemd160) 만 남아 있기 때문에, 해시에 의해 한번 더 공개키가 안전하게 보호되고 있는 상태가 됩니다.

 

그러므로, p2pkh 주소에서 비트코인을 일부라도 출금할 일이 생긴다면,

잔액을 남기지 말고 모든 UTXO를 새로운 지갑으로 옮기는 것은 편집증으로부터 보다 자유해지는 방법이 될 수 있습니다.

 

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
글 보관함