암호화 멤풀, 거래 내용을 가린 대기열
Strawmap 그 이후 (장기) · encrypted mempool
거래가 블록에 담기기 전까지 내용을 암호화해 두는 구조입니다. 블록을 만드는 쪽도 안을 미리 볼 수 없어 앞질러 끼어들거나 특정 거래를 골라 빼는 일이 어려워집니다.
왜 필요한가
지금 이더리움에서 거래를 보내면 블록에 담기기 전까지 멤풀(mempool)이라는 공개 대기열에서 기다립니다. 이 대기열은 누구나 들여다볼 수 있어서 블록을 만드는 쪽이나 봇이 어떤 거래가 들어올지 미리 알 수 있습니다. 그래서 큰 매매 주문 앞에 끼어들어 가격을 흔들고 뒤에서 되팔아 이익을 챙기는 샌드위치 공격이 가능하고 특정 주소의 거래만 골라서 넣지 않는 검열도 쉬워집니다. 암호화 멤풀은 거래 내용을 암호화한 채로 보내고 블록 안의 자리가 정해진 뒤에야 풀리게 만듭니다. 순서를 정하는 사람이 내용을 모르니 골라서 앞지르거나 빼기가 어려워집니다. 사용자가 봇에게 손해를 보는 일을 줄이는 것이 목표입니다. 암호를 누가 어떻게 풀어 줄지가 핵심 난제입니다. 여러 검증자가 열쇠 조각을 나눠 들고 함께 풀어 주는 방식, 시간이 지나면 저절로 풀리는 방식 등이 연구되고 있습니다. Strawmap에서는 장기 칸에 놓여 있고 아직 연구 단계라 설계가 바뀌거나 빠질 수 있습니다.
어떻게 동작하나
- 암호화해서 보내기 사용자는 거래 내용을 암호화한 뒤 멤풀에 올립니다. 수수료처럼 블록에 넣기 위해 꼭 필요한 정보만 밖에서 보입니다.
- 내용 모른 채 순서 정하기 블록을 만드는 쪽은 암호화된 거래를 그대로 블록에 넣고 자리를 정합니다. 어떤 거래인지 모르니 골라서 앞지르거나 뺄 수 없습니다.
- 자리가 정해진 뒤 풀기 블록 안의 순서가 확정되면 열쇠가 공개되어 거래가 풀리고 실행됩니다. 열쇠를 여러 검증자가 나눠 들거나 일정 시간 뒤 저절로 열리게 하는 방식이 연구 중입니다.