최근 화제가 된 분산형 대장 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
간단한 문서 설명은 다음과 같다.$ 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
실행 내용은 간단하지만 옵션의 설명은 다음과 같다.여기 와서 실행만 했어요.
StateUpdater를 이용하여 특정 자산에 값을 설정하세요.
$ client/bin/execute-contract -properties client.properties -contract-id {username}-StateUpdater -contract-argument '{"asset_id": "{username}-myasset", "state": 3}'
status: 200
이것도 아주 간단해요.status: 200
답장하면 성공적으로 실행됩니다.아까와 다른 옵션은 하나입니다.
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와 자바도 기술할 수 있기 때문에 다음에 코드의 쓰기 방법과 디자인 방법을 비교할 수 있습니다.
Reference
이 문제에 관하여(최근 화제가 된 분산형 대장 Scar DLT(스마트 구조기 실행 편)를 조사했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/GallusysYoshida/items/8642d99be2e7a1db87fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)