본문으로 건너뛰기
  1. Sawtooth-Starters/

01.hyperledger sawtooth를 docker for window에서 돌릴수있게 해보자!

·
Hyperledger Docker Sawtooth
목차
Sawtooth-Starter - 이 글은 시리즈의 일부입니다.
부분 1: 이 글

이 문서는 hyperledger sawtooth 1.0.4을 docker for windows(18.03.01-ce-win65)에서 다루며 os는 window 10 pro임

1. Docker for windows설치
#

Install Docker for windows

2. Starting Sawtooth
#

도커의 초기설정이 끝나고 도커를 켜기 전에 원하는 위치에 폴더를 생성합니다.
이후, 이 문서에 첨부되어있는 sawtooth-default.yaml을 생성한 폴더에 다운받아 주세요.

그다음 도커를 실행해보도록 하겠습니다.

Alt text

powershell이든 cmd이든 상관없지만 이 문서에서는 Windows PowerShell을 사용하도록 하겠습니다.

다음 커맨드를 실행하여 Sawtooth이미지를 다운받습니다. 주의 해야할 점은 이 커맨드를 사용할 폴더에 sawtooth-default.yaml이 있어야 합니다.

% docker-compose -f sawtooth-default.yaml up

Alt text

전부 다운이 받아지면 docker의 kitematic을 켜서 확인할 수 있습니다.

Alt text

돌아가고있는것을 확인할 수 있습니다.

3. Stopping Sawtooth
#

sawtooth를 종료하려면 CTRL-c를 몇 회 누른 뒤,

% docker-compose -f sawtooth-default.yaml down

커맨드를 입력합니다. 이를 통해 완전히 종료할 수 있습니다.

4. Logging Into The Client Contatiner
#

이 커맨드를 통해 sawtooth가 실행중인 상태여야 합니다.

% docker-compose -f sawtooth-default.yaml up

sawtooth가 실행중인 상태에서 다음 커맨드를 통해 client container에 접근할 수 있습니다.

% docker exec -it sawtooth-shell-default bash

Alt text
root~~~이런식으로 실행되면 성공입니다

Confirming Connectivity
#

Validator가 동작중인것을 확인하기 위해 root에서 curl커맨드를 사용할 수 있습니다.

/# curl http://rest-api:8008/blocks

만약 validator가 실행중이고 접근이 가능하다면 output은 이런식으로 비슷하게 출력될 것입니다.

Alt text

만약 validator에 문제가 있다면 curl커맨드는 타임아웃하거나 아무것도 반환하지 않을것입니다.

5. Using Sawtooth Commands
#

Creating and Submitting Transactions with intkey
#

intkey 커맨드는 간단한 샘플 트랜잭션을 생성하여 테스팅할수있게 합니다. intkey커맨드는 뭔가 엄청 중요한 커맨드가 아니라 단순히 테스팅하는 용도로 사용하는 커맨드라고 생각하면 조금 머리가 편해집니다.

다음 스텝은 intkey를 사용하여 intkey transactions의 랜덤값을 가진 몇개의 key로 구성된 배치파일을 생성하게됩니다. 이 배치파일은 로컬에 저장되고 validator에 전달합니다.

$ intkey create_batch --count 10 --key-count 5
$ intkey load -f batches.intkey -U http://rest-api:8008

Alt text

Viewing the List of Blocks & Particular Block
#

다음 커맨드를 통해 블록의 리스트를 확인할 수 있습니다.

$ sawtooth block list --url http://rest-api:8008

Alt text
방금전에 사용했던 intkey커맨드의 결과로 생성된 블록들을 확인할 수 있습니다.

특정 블록의 상태를 확인하고 싶다면 다음 커맨드를 이용합니다. BLOCK_ID에는 리스트에서 확인한 아이디중 하나를 집어넣으면 됩니다.

$ sawtooth block show --url http://rest-api:8008 {BLOCK_ID}

Alt text
블럭의 상태를 확인할 수 있습니다. 헤더, 헤더의 시그니처, 트랜잭션등을 확인할 수 있습니다.

Viewing Global State
#

다음 커맨드로 머클트리의 노드리스트를 확인할 수 있습니다.

$ sawtooth state list --url http://rest-api:8008

Alt text

Viewing Data at an Address
#

sawtooth state list커맨드를 통해 나온 address로 data를 확인할 수 있습니다.

$ sawtooth state show --url http://rest-api:8008 {STATE_ADDRESS}

Alt text

6. Connecting to the REST API
#

curl를 사용해 REST API에 접근할 수 있습니다.

From Client Containter
#

클라이언트 컨테이너에서는 다음 커맨드를 사용합니다.

$ curl http://rest-api:8008/blocks

From Host Operating System
#

호스트 시스템에서는 다음 커맨드를 사용합니다.

$ curl http://localhost:8008/blocks

7. Connecting to Each Container
#

The Client Container
#

  • 트랜잭션 submit
  • sawtooth 커맨드 실행
  • Container name : sawtooth-shell-default
% docker exec -it sawtooth-shell-default bash

The Validator Container
#

  • 단일 Validator 실행
  • port 4004(default)에서 사용가능
  • Hostname : validator
  • Container name : sawtooth-validator-default
$ docker exec -it sawtooth-validator-default bash

The REST API Container
#

  • REST API 실행
  • port 8008에서 사용가능
  • Container name : sawtooth-rest-api-default
$ docker exec -it sawtooth-rest-api-default bash

The Settings Transaction Processor Container
#

  • 단일 Setting Transaction 프로세서 실행
  • Setting Transaction 패밀리의 트랜잭션을 다룸
  • Hostname : settings-tp
  • Container name : sawtooth-settings-tp-default
$ docker exec -it sawtooth-settings-tp-default bash

The IntegerKey Transaction Processor Container
#

  • 단일 IntegerKey Transaction 프로세서 실행
  • IntegerKey Transaction 패밀리의 트랜잭션을 다룸
  • Hostname : intkey-tp-python
  • Container name : sawtooth-intkey-tp-python-default
$ docker exec -it sawtooth-intkey-tp-python-default bash

The XO Transaction Processor Container
#

  • 단일 XO Transaction 프로세서 실행
  • XO Transaction 패밀리의 트랜잭션을 다룸
  • Hostname : xo-tp-python
  • Container name : sawtooth-xo-tp-python-default
$ docker exec -it sawtooth-xo-tp-python-default bash

위의 컴포넌트가 실행되고있는 것을 확인하려면 ps커맨드를 사용

Alt text

8. Viewing Log Files
#

로그파일을 보기 위해서는 다음 커맨드를 사용
{CONTAINER}에는 sawtooth-validator-default같은 컨테이너 이름이 들어가야한다.

$ docker logs {CONTAINER}

9. 마치며
#

본 문서는 hyperledger sawtooth docs 의 튜토리얼을 보고 따라해본 문서입니당


Sawtooth-Starter - 이 글은 시리즈의 일부입니다.
부분 1: 이 글