최소 CREATE2 팩토리 EIP-7997은 포크에 넣을 가치가 있나?
프로토콜 설계 · 참여 4명 · 인용 6건 · 2026-10-15 ~ 2026-10-16
보안 연구자이자 CreateX 저자인 pcaversaccio가 EIP-7997(최소 CREATE2 배포 팩토리)은 앱 레이어에서 오래전 해결된 문제라 프로덕트 마켓 핏이 없다고 회의론을 펴자, nero_eth와 lightclients는 메인넷에선 코드 0줄짜리 noop이되 데브넷·신규 체인에 스펙이 보장하는 배포자를 제공하고 EOA 의존·가스 가격 가정이라는 앤티패턴을 없앤다며 옹호했다.
배경
EIP-7997(Deterministic Factory Contract, 저자 Francisco Giordano·Toni Wahrstätter·Nick Johnson·Jochem Brouwer, Last Call)은 0x4e59...956C의 CREATE2 팩토리를 모든 EVM 체인에 존재하도록 공식 요구해 체인 간 동일 주소 결정적 배포를 보장한다. 기존에는 Nick's method 같은 키리스(keyless) 트랜잭션으로 배포했으나 고정 가스 가격·리밋 때문에 가스 스케줄이 바뀐 체인이나 데브넷에서 배포가 불가능해지는 문제가 있었다. CreateX는 Pascal Caversaccio가 만든 더 기능이 풍부한 팩토리로 200여 체인에 이미 배포돼 있다. EIP-7997은 CreateX를 안착하는 대신 그 위에 CreateX를 올릴 수 있는 최소 배포자를 지향한다.
왜 중요한가
사소해 보이는 EIP 하나를 계기로 시스템 컨트랙트의 설계 원칙(최소 기능만, 소유하지 않은 컨트랙트와 비혼합, EOA·가스 가격 비의존)이 공개적으로 명문화됐다. 이 원칙은 앞으로 어떤 유저 컨트랙트를 프로토콜에 안착할지 판단하는 선례가 된다.
쟁점
- 이미 200여 체인에 배포된 CreateX·Arachnid 컨트랙트가 있는데 최소 팩토리를 프로토콜에 넣을 가치가 있나
- 기존 CreateX를 그대로 안착(enshrine)하지 않고 더 최소한의 배포자를 새로 넣은 이유는 무엇인가
- 시스템 컨트랙트는 소유하지 않은 유저 컨트랙트와 섞이면 안 되고 최소 기능만 가져야 한다는 설계 원칙이 타당한가
반대 — 이미 해결된 문제라 무의미하다
sudo rm -rf --no-preserve-root /, Paweł Bylica
- CreateX는 200여 EVM 체인에 정확한 바이트코드로 배포돼 있고 수많은 프로토콜이 견고하게 쓰고 있으며 가스 리밋별 사전서명 배포 트랜잭션 3종으로 확장성도 더 낫다(pcaversaccio).
- 이는 이미 해결된 문제이고 클라이언트 코드에 부담만 더하며, 7997은 CreateX의 기능이 없어 자신은 계속 CreateX를 쓸 것이다(pcaversaccio).
- 7997이 메인넷에서 noop이라면, 이 EIP를 포크에서 빼는 것 역시 noop이다(chfast).
찬성 — 스펙이 보장하는 배포자로 넣을 가치가 있다
Toni Wahrstätter ⟠, ً
- 가장 많이 쓰인 방식은 Nick's method + Arachnid 컨트랙트이고 스펙은 배포자 코드가 설치돼야 한다고만 정할 뿐 '어떻게'는 강제하지 않는다; 메인넷에선 이미 컨트랙트가 존재해 코드 0줄짜리 noop이었고 데브넷·섀도 포크·신규 체인에 의미가 있다(nero_eth).
- CreateX를 직접 안착하지 않는 이유는 최소 필요 이상의 기능은 프로토콜 설계자에게 부채이고, 소유하지 않은 유저 컨트랙트를 시스템 컨트랙트와 섞을 수 없기 때문이다(lightclients).
- 7997을 넣는 본래 이유는 CreateX가 EOA의 정밀한 가스 리밋·가격 결정에 의존하는데, 시스템 컨트랙트에서 EOA 의존과 가스 가격 일관성 가정이라는 두 앤티패턴을 없애려는 것이며, 원하면 7997 위에 CreateX를 올려 계속 쓸 수 있다(lightclients).