블록체인에서 사용되는 머클트리에 대해 알아보겠습니다.
머클트리란?
머클트리는 간단히 말해서 트랜잭션을 해싱해서 이진트리의 형태로 나타낸 것입니다. 1979년 머클트리를 개발한 랄프 머클(Ralph Merkle)의 이름을 따서 머클트리라고 부르며 해시트리(Hash Tree), 혹은 이진트리(Binary Tree)라고도 합니다.
먼저 위와 같이 일련의 트랜잭션들이 존재한다고 가정하겠습니다.
일련의 트랜잭션들을 해시 함수를 이용해 암호화합니다.
해시함수로 나온 결과물들은 다시 2개씩 합쳐서 4개의 결과물을 만들어냅니다.
이 과정을 반복해서 나온 마지막 1개의 노드를 머클 루트 or 루트 해시라고 부르며 머클루트는 블록의 헤더에 저장됩니다.
위의 과정은 하나의 블록이 생성되는 과정에서 일어납니다.
이제 트랜잭션 tx4를 검증을 한다고 가정하겠습니다.
머클루트와 tx4의 해시값을 알고 있다고 가정할 때 h3, h12, h5678의 해시값만 알고 있다면 해당 블록에 tx4가 존재하는지 확인할 수 있습니다.
또한 만약 tx2가 위조 및 변형되었다면 머클루트의 해시 값까지 변경되기 때문에 트랜잭션의 위변조는 쉽지 않습니다.
'블록체인 > 이더리움' 카테고리의 다른 글
[Hardhat] Invalid hex string ... 에러 (0) | 2022.08.05 |
---|---|
Re-Entrancy Attack (0) | 2022.07.10 |
업그레이드 가능한 컨트랙트 작성해보기 (0) | 2022.06.27 |
솔리디티 프록시 패턴(Proxy Pattern) (0) | 2022.06.25 |
IPFS? (0) | 2022.06.16 |