이더리움이나 erc20토큰의 주소는 왜 항상 0x로 시작하는건가요?
이더리움이나 erc20토큰의 지갑 주소를 보면 앞이 항상 똑같은데요.
이더리움이나 erc20토큰의 주소는 왜 항상 0x로 시작하는건가요? 기술적인 요인인건가요?
답변 부탁드립니다!
이더리움은 공개 키와 개인 키 쌍을 이용하는 공개 키 암호화 시스템을 채택하고 있습니다. 즉, 이더리움의 공개 키 값은, 개인 키를 '타원곡선 산술 연산'함으로써 얻어진 값이라고 할 수 있습니다.
이 때 연산은 단방향적으로 이루어지므로 '개인 키 -> 공개 키'를 연산하는 것은 가능하지만 '공개 키 -> 개인 키'를 연산하는 것은 불가능합니다.
그러므로 공개 키 값을 암호화한 이더리움 지갑 주소를 통해 개인 키 값을 알아내는 것이 불가능하므로, 우리가 다른 사람에게 이더리움 지갑 주소를 알려주더라도 아무런 문제가 없게 됩니다.
다시 돌아와서 타원곡선 산술 연산을 통해 얻어진 공개 키 값에 이더리움의 암호화 해시 함수인 Keccak256 을 적용하게 되면 상당히 긴 문자열이 만들어지는데, 그것을 모두 지갑주소로 사용하는 것이 아니라,
공개 키 값을 Keccak256으로 해싱한 값 중 끝에서부터 20 바이트의 값을 이더리움 주소로 활용하게 됩니다.
그리고 나서 이더리움 주소가 16진수로 암호화 되었다는 표시로 지갑 주소의 맨 앞에 접두사 '0x'를 붙여 준다고 할 수 있겠습니다.
답변이 도움이 되길 바랍니다.
안녕하세요. 이더리움의 지갑주소 생성 매커니즘은 우선 개인키를 생성한 뒤 이 개인키를 이용해 공개키를 생성하는 매커니즘을 가지고 있습니다. 생성된 공개키는 맨 앞에 0x의 문자열이 합쳐진 형태로 최종적으로 생성이 됩니다. 이때 0x는 16진수로 인코딩 되었다고 표시되는 prefix죠.
이더리움 공개키 주소 예: 0x002d3ffef027572ae1114027bd3ecf1f086ba0ea
위 공개키 주소로 생성가능한 경우의 수는 2^160으로 전 세계 인구가 사용해도 문제가 없는 숫자입니다. ^^
참고로 한 말씀 덧붙이자면 이더리움 개인키를 이용하여 공개키를 알 수 있지만 공개키를 이용하여 개인키를 확인하지 못하는 단방향성의 특징을 가지고 있습니다.