최근 화제가 된 분산형 대장 Scar DLT(스마트 구조기 실행 편)를 조사했습니다.

지난번에 우리는 주식회사 개발한 분산형 데스크톱 소프트웨어 Scar DLT를 조사했다.
이전 기사: 최근 화제가 된 분산형 대장 Scar DLT(기초편)를 조사했습니다.
이번에 나는 스마트 구조기를 실제로 접촉하고 싶다.
Scar DLT 시작 방법
앞서 설명한 바와 같이 Scar DLT에는 Scar DL과 Scar DB라는 소프트웨어가 있습니다.
스칼라 DB를 따로 쓸 수도 있지만, 스마트하게 구성할 수 있는 스칼라 DL은 모처럼 찾아뵙죠.
Sandbox를 제공합니다. 사용하도록 허락해 주십시오.
Sandbox
Sandbox에 대해 이미 누군가가 썼으니 아래의 내용을 참고할 수 있도록 허락해 주십시오.
분산형 데스크톱 소프트웨어 Scar DL의 Sandbox 환경 시도
또 기사에는 다음과 같이 기술돼 있지만, 지금은 지아이허브 계정에 로그인하면 필요한 파일을 다운로드할 수 있다.
위 URL에서 Sandbox 액세스를 요청합니다.
요청이 완료된 지 얼마 되지 않아 로그인 완료 메일이 도착하고 필요한 키 쌍, 인증서, 설정 파일 등이 배달됩니다. (자신이 몇 십 분이면 도착합니다.)
지능 구조기
그럼 샘플의 구조를 실행합시다.
이번에는 MacOS 10.14.4 환경에서 작업을 진행했습니다.
기본적으로 상술한 페이지에 따라 하면 됩니다. 다음은 명령을 하나하나 설명합니다.
Java 설치
먼저 scalardl-client-sdk를 이동하려면 JAVA가 필요합니다.
그러니까 JAVA를 설치해.
Homebrewのインストール
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

homebrew-cask-versionsの導入
$ brew tap homebrew/cask-versions

Java 8のインストール
$ brew cask install adoptopenjdk8
이용 신청
이어 샌드박스 이용 신청은 다음 페이지부터 진행한다.
Scalar DL Sandbox
이 페이지를 방문하여 GiitHub 계정으로 로그인하십시오.
다음 페이지가 표시되므로 필요한 파일을 다운로드하려면 Download 버튼을 누릅니다.

설정
다운로드한 파일의 압축을 풀면 다음 파일이 확장됩니다.
{username} GiitHub의 아이디가 포함되어 있습니다.
$ unzip ~/Downloads/scalar-sandbox-client-{username}.zip
$ ls ~/Downloads/scalar-sandbox-client-{username}
client.properties {username}-key.pem {username}.pem
간단한 문서 설명은 다음과 같다.
  • client.properties
  • 설정 파일
  • {username}-key.pem
  • 사용자 전용 기밀 키
  • {username}.pem
  • 사용자의 인증서
  • 다음은 창고 복제입니다.
    $ git clone https://github.com/scalar-labs/scalardl-client-sdk.git
    $ cd scalardl-client-sdk
    
    창고를 복제한 후 방금 다운로드한 파일 그룹을 복제합니다.
    $ cp -r ~/Downloads/scalar-sandbox-client-{username}/* ./
    
    인증서 등록
    그런 다음 Scar DL Network에 참가하기 위해 방금 복사한 인증서를 등록합니다.
    $ client/bin/register-cert -properties client.properties
    
    구성된 등록
    드디어 코치 등록을 해야 한다.
    구조기의 출처는 복제 창고에 존재하지만 등록을 위해 아래 명령을 컴파일해야 합니다.
    $ ./gradlew assemble
    
    그럼 우리 프레임을 등록하러 가자.
    이번에는 상태를 업데이트하는 StateUpdater와 상태를 확인하는 State Reader 두 가지를 사용했다.
    $ client/bin/register-contract -properties client.properties -contract-id {username}-StateUpdater -contract-binary-name com.org1.contract.StateUpdater -contract-class-file build/classes/java/main/com/org1/contract/StateUpdater.class
    
    $ client/bin/register-contract -properties client.properties -contract-id {username}-StateReader -contract-binary-name com.org1.contract.Reader -contract-class-file build/classes/java/main/com/org1/contract/StateReader.class
    
    실행 내용은 간단하지만 옵션의 설명은 다음과 같다.
  • -properties
  • 설정 파일을 지정합니다.이번에 다운로드한 clientproperties
  • -contract-id
  • 구성의 ID를 식별합니다.네트워크 내에서 고유해야 합니다.
  • -contract-binary-name
  • 구조기의 명칭.Java 소스에 정의된 를 지정합니다.
  • -contract-class-file
  • 구성 파일.구축된class 파일을 지정합니다.
  • 틀을 실행하다
    여기 와서 실행만 했어요.
    StateUpdater를 이용하여 특정 자산에 값을 설정하세요.
    $ client/bin/execute-contract -properties client.properties -contract-id {username}-StateUpdater -contract-argument '{"asset_id": "{username}-myasset", "state": 3}'
    
    status: 200
    
    이것도 아주 간단해요.status: 200답장하면 성공적으로 실행됩니다.
    아까와 다른 옵션은 하나입니다.
  • -contract-argument
  • 구조기에 전달된 매개변수를 JSON 형식으로 기술합니다.
  • 업데이트를 했으니까 다음에 리더로 가격을 확인해 보세요.
    client/bin/execute-contract -properties client.properties -contract-id {username}-StateReader -contract-argument '{"asset_id": "{username}-myasset"}'
    status: 200
    {"age":0,"input":{},"output":{"state":3},"contract_id":"{username}-StateUpdater","argument":{"asset_id":"{username}-myasset","state":3,"nonce":"b3a59ed7-e69a-49ea-83c4-7237296bf119"},"signature":"MEUCIBqkUbPI3l5TGx+MqjNFsUmv8UWJ0DYyjzeYgOauoB83AiEAuMwofkeQEJnTn/6W8sjilfawYcryPt3wZIgPfEprjTo=","hash":"fkXewkXuiof/PO87DKb6vfxdAMAisJ9WzXOvIyzXQoY=","prev_hash":""}
    
    잘 안 보이니까 성형해서 출력해 봐요.
    {
      "age": 0,
      "input": {},
      "output": {
        "state": 3
      },
      "contract_id": "{username}-StateUpdater",
      "argument": {
        "asset_id": "{username}-myasset",
        "state": 3,
        "nonce": "b3a59ed7-e69a-49ea-83c4-7237296bf119"
      },
      "signature": "MEUCIBqkUbPI3l5TGx+MqjNFsUmv8UWJ0DYyjzeYgOauoB83AiEAuMwofkeQEJnTn/6W8sjilfawYcryPt3wZIgPfEprjTo=",
      "hash": "fkXewkXuiof/PO87DKb6vfxdAMAisJ9WzXOvIyzXQoY=",
      "prev_hash": ""
    }
    
    아웃풋을 팔로우해보면 아까 설정한 값3이 등록되었는지 아시겠어요?
    그리고 이 자산은 처음 등록한 것이기 때문에 input과prev-는hash 비어있어요.
    마지막으로 같은 자산에 대해 다른 값을 설정해 보세요.
    $ client/bin/execute-contract -properties client.properties -contract-id {username}-StateUpdater -contract-argument '{"asset_id": "{username}-myasset", "state": 100}'
    
    status: 200
    
    아까도 State Reader를 사용하여 수치를 확인했습니다.
    client/bin/execute-contract -properties client.properties -contract-id {username}-StateReader -contract-argument '{"asset_id": "{username}-myasset"}'
    
    {
      "age": 1,
      "input": {
        "{username}-myasset": {
          "age": 0,
          "data": {
            "state": 3
          }
        }
      },
      "output": {
        "state": 100
      },
      "contract_id": "{username}-StateUpdater",
      "argument": {
        "asset_id": "{username}-myasset",
        "state": 100,
        "nonce": "31f3c3d5-d7ab-4fd5-acae-fe0d0b95038c"},
      "signature": "MEUCIQC+pcBXSsAwmzsfX0xjXLEoANU47ONCA1e1xrQYsa+5pgIgToOUMKvv37nvZzAAFDR/EDKXe7fZzmfDWubM8TEMuTM=",
      "hash": "McnMW2rvOvLjeC4g6zc0yRd/ajX1Z3aIqeI9bQAc+ko=",
      "prev_hash": "fkXewkXuiof/PO87DKb6vfxdAMAisJ9WzXOvIyzXQoY="
    }
    
    output의state 값이 업데이트되었지만, 첫 번째 State Reader의 반환 값과 다른 것은 input과prev입니다.hash가 눈에 들어오다.
    input, 이전 자산의 상태,prev-hash에는 이전 자산의 해시 ID가 포함되어 있습니다.
    이런 형식으로 산열 체인을 형성하다.
    총결산
    그래서 간단하지만 샘플을 조립해 봤어요.
    순수한 자바로 컴퓨터를 쓰는 것은 매우 쓰기 좋다.
    이더미(JavaScript와 비슷하지만)에서 독자적인 언어인 Solidity, Hyperledger Fabric에서 Go언어가 주류라는 것을 감안하면 쉽게 도입할 수 있지 않을까요?
    현재 Hyperledger Fabric에는 Go 언어 이외에도 Node가 없습니다.js와 자바도 기술할 수 있기 때문에 다음에 코드의 쓰기 방법과 디자인 방법을 비교할 수 있습니다.

    좋은 웹페이지 즐겨찾기