티스토리 뷰

반응형
이 글은 Hyperledger Indy의 공식 문서를 번역한 것입니다.
원본 사이트 : https://hyperledger-indy.readthedocs.io/projects/node/en/latest/start-nodes.html

 

pool을 시작하는 권장 방법은 Docker를 사용하는 것입니다.

자신의 Network를 실행하려면 각 Node에 대해 다음을 수행해야합니다.

1. Indy Node 설치

  • ubuntu에서 권장되는 방법은 deb 패키지에서 설치하는 것입니다.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CE7709D068DB5E88
sudo bash -c 'echo "deb https://repo.sovrin.org/deb xenial stable" >> /etc/apt/sources.list'
sudo apt-get update
sudo apt-get install indy-node
  • 테스트 목적으로 pypi에서 설치할 수도 있습니다: pip install indy-node

2. Network에 포함할 Node 초기화

  • pypi에서 indy-node를 설치한 경우 create_dirs.sh 명령을 사용하여 기본 디렉토리 구조를 수동으로 작성해야합니다.
  • config 파일에서 Network 이름 설정
    • config 위치는 Node 설치 방법에 따라 다릅니다. Ubuntu의 경우 보통 /etc/indy 안에 위치합니다.
    • 다음을 추가해야합니다: NETWORK_NAME={network_name} 여기서 {network_name}은 제네시스 트랜잭션 파일에 있는 것과 일치합니다.
  • 키 생성
    • ed25519 전송 키(ZMQ에서 노드-노드 및 노드-클라이언트 통신에 사용)
    • BLS 다중 서명 및 state proof 지원을 위한 BLS 키
  • 초기 Pool의 기초가 될 제네시스 트랜잭션 파일 제공
    • pool 트랜잭션 제네시스 파일:
      • 파일 이름은 pool_transactions_genesis로 지정해야합니다.
      • 파일에는 Pool이 시작된 초기 Node 세트가 포함됩니다(원장의 초기 NODE 트랜잭션 세트).
      • 원장에 새 NODE txn을 보내서 새로운 Node를 추가합니다.
      • 모든 새로운 Node와 Client는 제네시스 트랜잭션 파일을 사용하여 초기 Node 세트에 연결한 다음, 다른 모든 NODE 트랜잭션을 따라잡아 최신 원장을 얻습니다.
      • 파일은 /var/lib/indy/{network_name} 폴더에 위치해야합니다.
    • domain 트랜잭션 제네시스 파일:
      • 파일 이름은 domain_transactions_genesis로 지정해야합니다.
      • 이 파일에는 최초 NYM 트랜잭션(예: Trustees, Stewards, 등)이 포함됩니다.
      • 파일은 /var/lib/indy/{network_name} 폴더에 위치해야합니다.
  • 클라이언트 동시 연결 수를 제한하도록 iptables 구성 (권장)

 

Scripts for Initialization(초기화 스크립트)

키 생성 및 테스트 네트워크 실행에 도움이 되는 많은 스크립트가 있습니다.

 

Generating keys (키 생성)

For deb installation (deb 설치)

노드 포트가 9701이고 클라이언트 포트가 9702인 Alpha라는 노드에 대해 ed25519 및 BLS 키를 생성하려면 다음 스크립트를 사용해야합니다:

init_indy_node Alpha 0.0.0.0 9701 0.0.0.0 9702 [--seed 111111111111111111111111111Alpha]

또한 이 스크립트는 systemd service config 및 indy-node iptables 설정 스크립트에 필요한 indy-node 환경 파일을 생성합니다.

 

For pip installation (pip 설치)

다음 스크립트는 Alpha라는 노드에 대해 ed25519 및 BLS 키를 모두 생성할 수 있습니다:

init_indy_keys --name Alpha [--seed 111111111111111111111111111Alpha] [--force]

참고: Seed는 임의로 선택된 32 바이트 값일 수 있습니다. 형식이 11 일 필요는 없습니다..

이 스크립트 CURRENT_NETWORK가 config에 설정된 후에 호출되어야합니다(위를 참조).

 

Generating keys and test genesis transaction files for a test network (테스트 네트워크를 위한 키 및 테스트 제네시스 트랜잭션 파일 생성)

테스트 네트워크와 함께 사용할 키 및 해당 테스트 제네시스 파일을 생성할 수 있는 스크립트가 있습니다.

~$ generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 [--ips '191.177.76.26,22.185.194.102,247.81.153.79,93.125.199.45'] [--network=sandbox]
  • --nodes는 pool의 총 노드 수를 지정합니다.
  • --clients는 pool에(domain_transactions_file_{network_name}_genesis 안에) 사전 구성된 여러 클라이언트를 지정합니다.
  • --nodeNum은 이 특정 노드의 수(1에서 -nodes 값까지)를 지정합니다. 즉, 개인 키를 로컬로 만들 Node 수입니다.
  • --ip는 pool의 모든 노드에 대한 IP 주소를 지정합니다(지정하지 않으면 localhost가 사용됨).
  • --network는 네트워크 생성 트랜잭션 파일과 키를 지정합니다. 샌드박스(sandbox)가 기본적으로 사용됩니다.

네트워크마다 다른 스크립트를 여러 번 실행할 수 있습니다.

 

Setup iptables(recommended) (iptables 설정(권장))

클라이언트 포트에 대한 클라이언트 동시 연결 수를 제한하는 iptables(또는 다른 방화벽) 규칙을 추가하는 것이 좋습니다. 이에 대한 두 가지 중요한 이유가 있습니다.

  • 클라이언트 연결로 인한 indy-node 프로세스가 open file descriptors 한계에 도달하지 못하도록 방지
  • zeroMQ가 각각 TCP 연결에 대해 별도의 큐를 생성하기 때문에 indy-node 프로세스의 많은 메모리 사용을 방지

iptables 설정과 관련된 지침은 여기에서 찾을 수 있습니다.

 

Running Node (Node 실행)

다음 스크립트는 다른 Node 및 Client와 통신할 수 있는 Node 프로세스를 시작합니다:

start_indy_node Alpha 0.0.0.0 9701 0.0.0.0 9702

노드는 별도의 TCP 채널을 사용하여 노드 및 클라이언트와 통신합니다. 첫 번째 IP/포트 쌍은 노드-노드 간 통신 채널용이고 두 번째 IP/포트 쌍은 노드-클라이언트 간 통신 채널용입니다. 하드웨어 구성에 따라 IP 주소가 변경될 수 있습니다. 노드-노드 간 및 노드-클라이언트 간 통신을 위해 다른 IP 주소가 사용될 수 있습니다.

 

Local Test Network Example(로컬 테스트 네트워크 예)

로컬 시스템에서 노드가 실행중인 4 개의 노드로 구성된 Indy 클러스터를 시험해 보려면 다음을 수행하십시오.

~$ generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 2 3 4
By default node with the name Node1 will use ports 9701 and 9702 for nodestack and clientstack respectively
Node2 will use ports 9703 and 9704 for nodestack and clientstack respectively
Node3 will use ports 9705 and 9706 for nodestack and clientstack respectively
Node4 will use ports 9707 and 9708 for nodestack and clientstack respectively

이제 4 개의 노드를 다음과 같이 실행할 수 있습니다.

start_indy_node Node1 0.0.0.0 9701 0.0.0.0 9702
start_indy_node Node2 0.0.0.0 9703 0.0.0.0 9704
start_indy_node Node3 0.0.0.0 9705 0.0.0.0 9706
start_indy_node Node4 0.0.0.0 9707 0.0.0.0 9708

 

Remote Test Network Example(원격 테스트 네트워크 예)

이제 4 개의 다른 머신에서 4 개의 노드를 실행한다고 가정해봅니다.

  1. 191.177.76.26에서 실행되는 Node1
  2. 22.185.194.102에서 실행되는 Node2
  3. 247.81.153.79에서 실행되는 Node3
  4. 93.125.199.45에서 실행되는 Node4

IP 191.177.76.26을 사용하는 머신에서는 다음을 실행합니다.

~$ generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 --ips '191.177.76.26,22.185.194.102,247.81.153.79,93.125.199.45'
This node with name Node1 will use ports 9701 and 9702 for nodestack and clientstack respectively

IP 22.185.194.102를 사용하는 머신에서는 다음을 실행합니다.

~$ generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 2 --ips '191.177.76.26,22.185.194.102,247.81.153.79,93.125.199.45'
This node with name Node2 will use ports 9703 and 9704 for nodestack and clientstack respectively

IP 247.81.153.79를 사용하는 머신에서는 다음을 실행합니다.

~$ generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 3 --ips '191.177.76.26,22.185.194.102,247.81.153.79,93.125.199.45'
This node with name Node3 will use ports 9705 and 9706 for nodestack and clientstack respectively

IP 93.125.199.45를 사용하는 머신에서는 다음을 실행합니다.

~$ generate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 4 --ips '191.177.76.26,22.185.194.102,247.81.153.79,93.125.199.45'
This node with name Node4 will use ports 9707 and 9708 for nodestack and clientstack respectively

이제 4 개의 노드를 다음과 같이 실행할 수 있습니다.

start_indy_node Node1 0.0.0.0 9701 0.0.0.0 9702
start_indy_node Node2 0.0.0.0 9703 0.0.0.0 9704
start_indy_node Node3 0.0.0.0 9705 0.0.0.0 9706
start_indy_node Node4 0.0.0.0 9707 0.0.0.0 9708

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함