프라이빗 이더리움(Private Ethereum) 톺아보기

katekim
Decipher Media |디사이퍼 미디어
18 min readMar 18, 2024

Disclaimer: 서울대학교 블록체인 학회 디사이퍼(Decipher)에서 Private Ethereum을 주제로 아티클을 작성하였습니다. 본 아티클은 프라이빗 이더리움의 등장배경과 프로젝트 사례, 그리고 이더리움과의 차이점에 살펴보았습니다. 이 보고서에 포함된 어떠한 내용도 투자 조언이 아니며, 투자 조언으로 해석되어서도 안 됩니다.

Author

김경은(@KateKim815) of Decipher

Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)

Reviewed By 신성헌, 이솔민

목차

  1. 프라이빗 이더리움 (Private Ethereum)의 배경과 종류
    1.1. 프라이빗 이더리움 배경
    1.2. 프라이빗 이더리움의 종류
    1.2.1. 하이퍼레저 베수(Hyperledger Besu)
    1.2.2. 컨센시스 쿼럼 (Consensys Quorum)
  2. 프라이빗 이더리움과 이더리움의 차이점
    2.1. 합의 알고리즘
    2.2. 권한 제어
    2.3. 프라이빗 트랜잭션(Tessera)
    2.4. 프라이빗 이더리움 구축
  3. 결론
  4. Reference

1. 프라이빗 이더리움(Private Ethereum)의 배경과 종류

1–1. 프라이빗 이더리움 배경

최근 기업에서 블록체인을 인프라로 활용하여 서비스를 제공하는 사례들이 많아지고 있다. 기업에서 블록체인 네트워크를 구성할 경우 가장 고민하는 것 중 하나가 어떠한 메인넷을 활용하여 인프라를 구성할 지이다. 현재 블록체인 프로젝트를 진행 중인 개발자의 54%가 이더리움 블록체인에서 작업하고 있는 만큼 이더리움은 가장 많이 사용 되는 블록체인 중에 하나이다. 다만 트랜잭션의 속도가 느리고 블록의 데이터가 모두 공개된다는 점 때문에 기업에서는 사용하기 어렵다.

그림1. 블록체인 트릴레마

이로 인해 이더리움의 기술적 특징은 가져가되, 권한을 가진 특정 조직이나 그룹에 의해 노드 관리가 되는 엔터프라이즈향 이더리움이 탄생하게 되었다. 노드와 블록데이터를 공개하지 않기 때문에 그림1 의 블록체인 트릴레마 중 탈중앙화(Decentralization)는 포기하게 되었지만 기업들이 더 높은 수준의 보안과 빠른 트랜잭션 처리로 인한 확장성은 추구할 수 있게 되었다.

이번 아티클에서는 공개된 오픈소스인 이더리움을 사용하여 엔터프라이즈 네트워크를 구축한 블록체인 프로젝트들을 살펴보고, 각각의 특징과 이더리움의 차이점에 대해 살펴보고자 한다.

1–2. 프라이빗 이더리움의 종류

이더리움 클라이언트는 이더리움 네트워크에 접속하여 트랜잭션을 생성하고 전송하며, 스마트 컨트랙트(Smart Contract)를 실행하는 등의 작업을 가능하게 하는 소프트웨어를 말한다.

그림 2. 이더리움의 합의 클라이언트와 실행클라이언트의 현황, 2024.04기준 (출처: clientdiversity)

그중에서도 geth는 이더리움 기능을 이용하고자 할 때 가장 많이 사용되는 클라이언트이다. 이더리움 클라이언트 중에는 그림2.의 퍼블릭 클라이언트 외에도 Hyperledger Besu와 GoQuorum처럼 제한된 참여자만 참여하도록하는 프라이빗 실행 클라이언트도 있다. 이번 아티클에서는 프라이빗 이더리움이라고 불리는 하이퍼레저 베수와 쿼럼에 대해 각각 알아보고, 프라이빗 이더리움이 퍼블릭 이더리움과 비교하여 어떠한 특징이 있는지 살펴 보겠다.

표1. 이더리움 클라이언트 비교

하이퍼레저 베수(Hyperledger BESU)

하이퍼레저 베수는 리눅스 재단(Linux Foundation)의 블록체인 프로젝트인 하이퍼레저 프로젝트 중에 하나로, EVM(Ethereum Virtual Machine)의 구현을 지원하는 오픈소스 프로젝트이다. 2018년 컨센시스(Consensys)의 엔지니어 팀인 Pegasys팀의 Pantheon 프로젝트로 시작되었으며 2019년에 하이퍼레저로 이관되어 개발되고 있다. geth가 go언어로 개발된 반면, 하이퍼레저 베수의 경우 java를 사용하여 자체 이더리움 클라이언트를 개발하였다.

하이퍼레저 베수는 자체 네트워크를 구성할 수 있는 프라이빗 네트워크(Private Network)외에도 이더리움과 연동할 수 있는 퍼블릭 네트워크(Public Network)를 모두 제공한다.

그림3. 베수 프라이빗 네트워크 구성도 (출처: Besu Docs)
그림4. 베수 퍼블릭 네트워크 구성도 (출처: Besu Docs)

프라이빗 네트워크는 이더리움 메인넷이나 테스트넷과 연결되지 않은 독립적인 네트워크를 구성할 수 있으며, 거래의 프라이버시를 유지하면서 참여자들 간의 트랜잭션을 처리하는 기능을 가진다.

베수의 퍼블릭 네트워크의 경우, 이더리움 메인넷과 연동이 가능하며 이더리움의 실행(Execution) 클라이언트 역할을 한다. 이더리움의 Merge 업그레이드 이후, 이더리움 클라이언트를 ‘합의(Consensus) 클라이언트’와 ‘실행(Execution) 클라이언트’로 나눌 수 있는데, 하이퍼레저 베수 또한 퍼블릭 이더리움 노드와 연계하여 실행 클라이언트로서의 기능을 한다.

이러한 이유로 그림4. 베수 퍼블릭 네트워크 구성도에서 합의 부분은 베수 코어 외부에 존재하며, 주로 컨센시스사의 테쿠(Teku)를 합의 클라이언트로 사용한다. 베수와 테쿠를 이더리움 메인넷과 연계하여 실행하는 방법은 링크를 참조하여 구축이 가능하다.

그림3의 프라이빗 네트워크의 도식도에서는 합의 알고리즘에 QBFT, IBFT2.0, Clique 등을 사용한다. 프라이빗 블록체인은 기업이나 조직들 사이에 합의하에 사용되기 때문에 네트워크 내의 악의적 공격 가능성이 크게 줄어든다. 따라서 이더리움보다 합의 과정에 대한 요구 사항이 감소하여, QBFT, IBFT와 같은 간단하고 효율적인 합의 메커니즘을 사용한다. 구체적인 합의 알고리즘에 대한 내용은 아래 2장에서 다루도록 하겠다.

컨센시스 쿼럼(Consensys Quorum)

쿼럼은 2016년 J.P. Morgan에서 만든 프라이빗 이더리움 프로젝트로 2020년 8월에 컨센시스로 인수된 프로젝트이다. 인수 이전부터 J.P. Morgan과 컨센시스는 엔터프라이즈 이더리움 얼라이언스(Enterprise Ethereum Alliance)의 창립과 하이퍼레저 베수 개발 등에서 협력한 경험이 있었고, 인수를 통해 쿼럼은 컨센시스의 다른 web3 제품들과 상호 운용이 가능해졌다.

쿼럼은 퍼블릭 이더리움 클라이언트인 geth(go-ethereum)를 포크(fork)하여 개발한 프로젝트이며, 하이퍼레저 베수 또한 java버전의 이더리움 클라이언트이기 때문에 둘의 기능적 차이는 크게 나지 않는다. 하이퍼레저 베수는 컨센시스에서 처음 개발하였고, 쿼럼 또한 컨센시스와 협업하여 J.P. Morgan에서 개발한 프로젝트이기 때문에 두 프로젝트가 긴밀히 협업하고 있으며, 추가 개발되는 기능들은 서로 공유되고 있다.

아래는 하이퍼레저 베수와 쿼럼의 차이점을 표로 나타낸 것이다. 가장 큰 차이점으로는 베수는 이더리움과 연계할 수 있는 퍼블릭 네트워크 구성이 가능하다는 것이고, 쿼럼은 프라이빗으로만 사용할 수 있다는 점이다.

표2. 하이퍼레저 베수와 쿼럼 비교 (출처: Visa crypto blog)

두 프로젝트의 공통점으로는 엔터프라이즈 이더리움 얼라이언스(Enterprise Ethereum Alliance, EEA)의 사양을 준수하고 있다는 점이다. EEA는 기업들이 이더리움 기술을 사용하여 비즈니스에서 활용할 수 있도록 지원하는 조직으로 표준 사양을 제공하여 기업들이 이더리움 블록체인을 더 쉽고 안전하게 사용할 수 있도록 돕는 역할을 한다. 그렇다면 아래에서 프라이빗 이더리움이 어떤 사양을 가지며, 이더리움과는 어떤 부분에서 다른지 알아보도록 하자.

2. 프라이빗 이더리움(Private Ethereum)과 이더리움의 차이점

2–1. 합의 알고리즘

합의 알고리즘은 블록체인에서 참여 노드 간의 합의를 보장하는 역할을 하는 가장 중요한 요소이다. 블록체인 네트워크의 참여자들이 새로운 블록이나 트랜잭션의 유효성에 대해 동의할 수 있게 하여 모든 참여자 간의 일관성과 신뢰성을 보장한다.

프라이빗 이더리움에서는 이미 검증되었거나 신뢰할 수 있는 기업이나 조직의 승인된 참여자들만 통신하기 때문에 네트워크 내의 악의적 행위 가능성이 줄어들게 된다. 따라서 적은 수의 노드에서 높은 처리량과 낮은 지연시간을 제공하는 PBFT 계열의 합의 알고리즘을 주로 선택한다. 하이퍼레저 베수와 쿼럼에서 사용가능한 합의 알고리즘은 다음과 같다.

  • QBFT(Quorum Byzantine Fault Tolerance): 컨센시스가 J.P. Morgan과 협력하여 개발한 합의 알고리즘으로 기존 IBFT합의 알고리즘을 확장한 것으로, 기업 사용 사례에 맞게 개선된 기능을 제공한다.
  • IBFT (Istanbul Byzantine Fault Tolerance): IBFT는 기존 블록체인에 PBFT(Practical Byzantine Fault Tolerance)를 적용할 때 발생하는 몇 가지 문제를 해결한 것으로 거래의 Finality를 보장하였다.
  • CliquePoA: 기존 go-ethereum에 포함된 기본 PoA(Proof of Authority)합의 알고리즘이다.
  • Raft기반 합의: 빠른 블록 시간, 거래 종결성(Finality), 수요에 따른 블록 생성을 위한 합의 알고리즘이다.

프라이빗 이더리움은 기존의 이더리움이 가지는 개념을 포함하되, 네트워크를 구성하는 노드가 제한되어 있어 트랜잭션이 빠르다는 장점이 있다. 가장 큰 차이점은 제한된 노드만 블록을 생성하기 때문에 이더리움처럼 gas fee 개념을 두어 블록 생성자가 트랜잭션의 순서를 배치하는 데 고민을 하지 않아도 된다는 점이다.

이더리움의 경우에는 MEV(Maximal Extractable Value) 문제를 해결하기 위한 많은 기술적 방법들이 제안되고 있지만, 프라이빗 이더리움의 경우 노드 참여자의 합의 하에 gas fee를 설정하지 않아도 되기 때문에 이더리움에서의 난제들이 문제로 작용하지 않는다.

2–2. 권한 제어

다음으로 프라이빗 이더리움은 제한된 참여자에게만 권한 부여가 가능하다는 특징이 있다. 베수와 쿼럼에서 권한을 제한하는 방법은 두 가지가 있는데 노드에 권한을 제한하는 방법과 계정의 권한을 제한하는 방법이다.

  1. 노드 권한 제어 (Node Permissioning)
그림5. 노드 권한 제어 도식 (출처: Besu Docs)

베수에서는 노드 권한제어를 통해 권한이 있는 노드만 네트워크에 참여할 수 있도록 한다. 이를 구현하기 위해 베수는 설정 configure 파일에서 노드 허가 목록을 정의하고, 이 목록에 있는 노드만 네트워크에 참여할 수 있도록 한다. configure 파일 내에서 -permissions-nodes-config-file-enabled--permissions-nodes-config-file=<파일 경로> 옵션을 사용하여 활성화가 가능하다.

2. 계정 권한 제어 (Account Permissioning)

그림6. 계정 권한 제어 도식 (출처: Besu Docs)

또한 특정 계정이 트랜잭션을 전송하거나 계약을 생성할 수 있는지 여부에 대한 제한도 가능하다. 계정 허가 목록을 사용하여 트렌잭션을 전송할 수 있는 계정의 주소 목록을 관리한다. 노드 권한 제어와 마찬가지로 --permissions-accounts-config-file-enabled--permissions-accounts-config-file=<파일 경로> 옵션을 사용하여 활성화가 가능하다.

노드 권한과 계정 권한 모두 참여자들 간의 합의에 따라 제어 대상을 관리할 수 있으며, 두 개 이상의 기관이 네트워크를 구축할 경우 모든 노드에서 동일하게 적용될 수 있도록 사전 협의가 중요하다. config파일 이외에 블록체인망의 네트워크 접속 권한으로 통제하거나 스마트컨트랙트를 통해서도 제어가 가능하므로, config파일에서 옵션을 통한 노드 및 계정 제어는 필수 사항은 아니다.

2–3. 프라이빗 트랜잭션 (Tessera)

마지막으로 프라이빗 이더리움인 베수와 쿼럼은 테세라(Tessera)라는 노드를 이용하여 트랜잭션 데이터를 암호화 할 수 있다. 테세라는 컨센시스에서 제공하는 쿼럼과 베수를 위한 프라이버시 관리 도구로, 블록체인 네트워크 상에서 프라이빗 트랜잭션의 생성, 전송, 저장을 처리한다. 퍼블릭 이더리움의 경우 네트워크 상의 모든 참여자가 데이터를 볼 수 있지만, 테세라는 PKI(Public Key Infrastructure)를 활용하여 트랜잭션 데이터를 암호화하고, 이를 수신자의 공개 키로 한번 더 암호화하여 트랜잭션을 안전하게 전송다.

암호화된 트랜잭션 데이터는 테세라 노드에 저장되고, 각각의 테세라 노드는 해당 노드의 사용자가 참여한 프라이빗 트랜잭션의 데이터만을 저장한다.

그림 7. 쿼럼 노드와 테세라 노드간 프라이버시 트랜잭션 처리 과정 (출처: Tessera Docs)

그림7은 쿼럼 네트워크에서 테세라를 활용해 암호화된 프라이빗 트랜잭션 처리 과정을 나타낸다. 이 과정은 참여자A(Participant A, 송신자), 참여자B(Participant B, 수신자) 그리고 참여자C (트랜잭션에 참여하지 않는 노드)의 관점에서 다음과 같은 단계로 진행된다.

  1. 참여자 A(송신자):
  • A는 Dapp(분산 애플리케이션)을 통해 프라이빗 트랜잭션 A를 생성하여 쿼럼 노드 A로 전송

2. 쿼럼 노드 A:

  • 트랜잭션 A를 받고, 이의 내용을 암호화하여 테세라 노드 A로 전송
  • 트랜잭션 A의 해시를 계산하고 이를 일반 트랜잭션 B로 쿼럼 네트워크에 전파

3. 테세라 노드 A:

  • 프라이빗 트랜잭션 A를 수신하고, 이를 저장
  • 프라이빗 트랜잭션 A의 수신을 쿼럼 노드 A에게 확인 신호(acknowledgment)로 알림

4. 참여자 B(수신자):

  • 쿼럼 노드 B는 일반 트랜잭션 B를 받고 테세라 노드 B에게 프라이빗 트랜잭션 A의 해시로 데이터를 요청

5. 테세라 노드 B:

  • 프라이빗 트랜잭션 A의 해시를 사용하여 해당 트랜잭션을 조회
  • 조회된 트랜잭션을 쿼럼 노드 B로 전송

6. 쿼럼 노드 B:

  • 트랜잭션 A를 실행하기 위한 준비를 하고, 필요한 데이터와 함께 ‘Privacy precompile’ 호출을 진행

7. Privacy precompile: 참여자 B에 의해 호출되며, 이는 프라이빗 트랜잭션 A를 실행하는 스마트 컨트랙트

8. 결과 반환:프라이빗 트랜잭션 A의 실행 결과가 참여자 B에게 반환

위의 과정에서 참여자C는 일반 트랜잭션B를 수신하지만, 테세라 노드C에게는 프라이버시 트랜잭션A에 대한 데이터가 없으므로 관련된 프라이버시 데이터의 조회가 불가하다.

이처럼 테세라의 경우 개인 정보나 의료 데이터, 금융 정보, 공급망 관리 등 프라이버시가 중요한 다양한 분야에서 사용될 수 있으며, 프라이빗 블록체인 내에서도 특정 노드 간 혹은 특정 기업간에 중요한 데이터를 안전하게 공유하고 처리해야 하는 경우에 효과적이다.

2–4. 프라이빗 이더리움 구축

프라이빗 이더리움이 이더리움의 오픈소스를 바탕으로 만들어진 프로젝트이기 때문에, 기능의 대부분을 이더리움에 기반하고 있다. 컨센시스와 J.P. Morgan같은 기업이 아니더라도 공개된 go-ethereum 소스코드를 통해 누구나 개인의 로컬PC에서 프라이빗한 블록체인 네트워크를 만들 수 있다.

genesis파일은 블록체인 네트워크에 참여하는 모든 노드가 기록되어 있으며, 블록체인의 네트워크 초기 구성과 설정을 정의할 수 있다. 하이퍼레저 베수에서 제공하는 genesis파일을 통해 프라이빗 블록체인이 어떻게 합의 알고리즘과 권한제어를 하는지 확인해보자.

{
"config": {
"chainId": 2018,
"berlinBlock": 0,
"ibft2": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 4
}
},
"nonce": "0x0",
"timestamp": "0x58ee40ba",
"extraData": "0xf83ea00000000000000000000000000000000000000000000000000000000000000000d5949811ebc35d7b06b3fa8dc5809a1f9c52751e1deb808400000000c0",
"gasLimit": "0x1fffffffffffff",
"difficulty": "0x1",
"mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"9811ebc35d7b06b3fa8dc5809a1f9c52751e1deb": {
"balance": "0xad78ebc5ac6200000"
}
}
}

위의 파일은 베수의 네트워크 초기 구성을 정의하는 genesis 파일 예시이다.

  • chainId: 네트워크의 고유 식별자
  • ibft2: IBFT2.0 합의 알고리즘에 대한 설정을 포함
  • alloc: 특정 주소에 초기 잔액을 할당

위의 설정 내용중 alloc의 경우, 주로 노드를 구성하는 노드의 퍼블릭키 정보를 두어 노드에 초기 잔액을 할당한다. 앞서 언급했듯이 엔터프라이즈 이더리움의 경우, 합의된 사용자만 블록체인 네트워크에 참여하기 때문에 gas fee가 대부분 필요없지만, 이더리움의 오픈소스를 사용하다보니 해당 개념을 genesis 파일에 남겨두었다.

이처럼 하이퍼레저 베수의 genesis 파일만 보면, 구성하고 있는 네트워크의 합의 알고리즘과 노드정보까지 알 수 있다. 다만 노드가 외부가 아닌 내부에서 관리되고 있기 때문에 프라이빗 네트워크의 구성 정보는 내부에서만 확인이 가능하다.

결론

이 아티클을 통해 프라이빗 이더리움의 탄생 배경, 다양한 종류, 그리고 구축 예시에 대해 살펴보았다. 프라이빗 이더리움은 기업과 조직들이 보안, 효율성, 그리고 맞춤형 블록체인 솔루션을 필요로 하는 현대 비즈니스 환경에서 중요한 역할을 하고 있다. 특별히 프라이빗 이더리움은 데이터의 투명성과 불변성을 유지하면서도, 필요한 프라이버시를 보장한다는 점에서 유용하게 쓰일 수 있다.

프라이빗 이더리움을 구축하는 과정은 어떻게 보면 복잡할 수 있지만, 올바르게 구축될 경우 비즈니스 운영의 효율성을 크게 향상시키고 새로운 혁신의 기회를 제공할 수 있을 것이므로 그 적용 범위와 영향력은 앞으로 더욱 확대될 것으로 예상된다.

Reference

https://usa.visa.com/solutions/crypto/enterprise-blockchain.html

https://blog.web3labs.com/a-comparison-of-ethereum-clients

https://blog.web3labs.com/web3development/comparing-byzantine-fault-tolerance-consensus-algorithms

https://www.hyperledger.org/blog/why-hyperledger-besu-is-a-top-choice-for-financial-use-cases

하이퍼레저 베수와 쿼럼의 Use cases

--

--