devops

Quorum 블록체인의 Tessera Config 구성 정리 본문

DevOps/Chain

Quorum 블록체인의 Tessera Config 구성 정리

vataops 2023. 1. 31. 21:05
반응형

테세라(Tessera)

테세라는 프라이빗 트랜잭션을 암호화, 복호화하는 자바 프로그램으로, 무상태성이며 JDBC 클라이언트와 연결될 수 있다. 테세라는 아래 4개의 서비스로 구성될 수 있다.

  1. Tessera Peer to Peer
  2. Tessera Third Party
  3. Tessera Admin
  4. Tessera Quorum to Tessera

Tessera Peer to Peer

이 서비스는 Tessera node간 통신을 위해 사용된다. 이 서비스를 활성화하기 위해서 tessera config 파일에 아래 section을 넣어야 한다.

CommunicationType의 REST와 app의 P2P는 P2P 서비스를 위한 설정이다. auto-discovery를 true로 설정하면 하나의 노드만 연결해도 다른 노드들의 세부 정보를 불러올 수 있다.

{
“app”: “P2P”,
“enabled”: true,
“serverAddress”: “http://HOST_IP:9000",
“sslConfig”: {
“tls”: “OFF”
},
“communicationType”: “REST”
}

Tessera Third Party

외부 어플리케이션의 암호화된 페이로드를 보관하는데 사용된다. 로우 트랜잭션 전송에도 같은 서비스가 사용된다.

{
“app”: “ThirdParty”,
“enabled”: true,
“serverAddress”: “http://HOST_IP:9080",
“communicationType”: “REST”
}

Tessera Admin

테세라 어플리케이션을 변경하기 위해 사용된다.

{
“app”: “ADMIN”,
“enabled”: true,
“serverAddress”: “http://HOST_IP:9090",
“communicationType”: “REST”
}

Tessera Quorum to Tessera

Quorum node들과의 인터렉션을 위해 사용된다. Unix socket을 사용하여 노드간 통신한다.

{
“app”: “Q2T”,
“enabled”: true,
“serverAddress”: “unix:/qdata/tm.ipc”,
“communicationType”: “REST”
}

Configuration items

  1. mode : tessera
  2. useWhiteList : 지정된 피어 이외의 연결은 제한, peer 리스트의 연결만 허용
  3. jdbc : 데이터베이스 연결
  4. serverConfigs : Enblave, P2P, Q2T, ThirdParty 설정 각 서버는 TLS와 InfluxDB의 API 메트릭 저장 지원
  5. peer : 테세라 노드들의 URL list
  6. keys : key 경로 및 설정
  7. alwaysSendTo : 모든 트랜잭션의 복사본을 특정 노드로 전송, 감사 목적으로 활용될 수 있음
  8. bootstrapNode : 부트스트랩노드 사용
  9. unixSocketFile : Unix socket 파일의 경로
  10. features : security&privacy 추가 옵션 지정
  11. encryptor : 암호화 유형 설정

Tessera-config.json 예제

{
    "mode": "${TESSERA_MODE}",
    "useWhiteList": false,
    "jdbc": {
        "username": "sa",
        "password": "",
        "url": "jdbc:h2:./data/tm/db;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=0",
        "autoCreateTables": true
    },
    "serverConfigs": [
        {
            "app": "ThirdParty",
            "enabled": true,
            "serverAddress": "http://${HOSTNAME}:9080",
            "communicationType": "REST"
        },
        {
            "app": "Q2T",
            "enabled": true,
            "serverAddress": "http://${HOSTNAME}:9101",
            "sslConfig": {
                "tls": "OFF"
            },
            "communicationType": "REST"
        },
        {
            "app": "P2P",
            "enabled": true,
            "serverAddress": "http://${HOSTNAME}:9000",
            "sslConfig": {
                "tls": "OFF"
            },
            "communicationType": "REST"
        }
    ],
    "peer": [
        {
            "url": "http://member1tessera:9000"
        },
        {
            "url": "http://member2tessera:9000"
        },
        {
            "url": "http://member3tessera:9000"
        }
    ],
    "keys": {
        "passwords": [],
        "keyData": [
            {
                "privateKeyPath": "/config/keys/tm.key",
                "publicKeyPath": "/config/keys/tm.pub"
            }
        ]
    },
    "alwaysSendTo": [],
    "bootstrapNode": false,
    "features": {
        "enableRemoteKeyValidation": false,
        "enablePrivacyEnhancements": false
    }
}

https://docs.tessera.consensys.net/en/stable/Reference/SampleConfiguration/

반응형
Comments