분산 데스크톱 Scar DLT를 사용한 에뮬레이터 자산 관리 애플리케이션 터치

이번에는 저번 해설된 자산관리 앱을 사용해 스칼 DLT의 시뮬레이터를 사용해 봤다.
실행 환경은 이전과 마찬가지로 맥OS 10.14.4에서 작업을 진행한다.
시뮬레이터의 입수와 실행
우선 시뮬레이터를 구해보자.
다음 명령을 사용하여 가져옵니다.
$ git clone https://github.com/scalar-labs/scalardl-tools
복제 후 빌딩을 진행할 것이다.
$ cd scalardl-tools/emulator
$ ./gradlew installDist
구축해서 바로 실행하세요.
$ ./build/install/emulator/bin/emulator
Scalar DL Emulator
Type 'help' for more information
scalar>
입력을 기다리는 동안 시작이 끝났습니다.
빠른 시동!
자산 관리 애플리케이션 확보
다음은 자산 관리 응용 프로그램을 시작합시다.
지난번에 소스를 소개한 곳은 빨리 복제해 주세요.
$ git clone https://github.com/indetail-blockchain/getting-started-with-scalardl.git
또한 두 항목을 사용해야 하기 때문에 디렉터리는 다음과 같다.
git/
 ├ scalardl-tools/
 └ getting-started-with-scalardl/
자산 관리 응용 프로그램의 구축
지난번 기사에서는 6개의 스마트 구조기를 준비했다고 소개했다.
그 소스는 실제로 아래에 배치되어 있다.
$ ls -l getting-started-with-scalardl/src/main/java/com/scalar/am/contract
AddAssetContract.java
AddTypeContract.java
AssetHistoryContract.java
ListContract.java
ListTypeContract.java
StatusChangeContract.java
그럼 여기를 짓자.
아날로그 src/main/java 아래에 원본 파일을 설정할 수 있습니다.
※ 스마트한 구성 이외의 파일을 두면 구축에 실패하고 여분의 파일은 복사 후 삭제됩니다.
$ cp -r getting-started-with-scalardl/src/main/java/com scalardl-tools/emulator/src/main/java/
$ rm -rf scalardl-tools/emulator/src/main/java/com/scalar/am/command
$ rm -f scalardl-tools/emulator/src/main/java/com/scalar/am/AssetManager.java
$ cd scalardl-tools/emulator/
$ ./gradlew build
잘 구축되면build 디렉터리를 보십시오.
$ ls -l build/classes/java/main/com/scalar/am/contract
AddAssetContract.class
AddTypeContract.class
AssetHistoryContract.class
ListContract.class
ListTypeContract.class
StatusChangeContract.class
클라스 파일 다 됐네.
지능형 구성 등록 및 실행
그럼 드디어 스마트 구조기를 실행해야겠네요.
먼저 시뮬레이터를 시작합시다.
$ cd scalardl-tools/emulator
$ ./build/install/emulator/bin/emulator
Scalar DL Emulator
Type 'help' for more information
scalar>
먼저 프레임 등록.
모두 6개 등록되어 있습니다.
scalar> register add-type com.scalar.am.contract.AddTypeContract ../../getting-started-with-scalardl/build/com/scalar/am/contract/AddTypeContract.class {"holderId": "Admin"}
Contract 'add-type' successfully registered

scalar> register add-asset com.scalar.am.contract.AddAssetContract ../../getting-started-with-scalardl/build/com/scalar/am/contract/AddAssetContract.class {"holderId": "Admin"}
Contract 'add-asset' successfully registered

scalar> register list-type com.scalar.am.contract.ListTypeContract ../../getting-started-with-scalardl/build/com/scalar/am/contract/ListTypeContract.class {"holderId": "Admin"}
Contract 'list-type' successfully registered

scalar> register list-asset com.scalar.am.contract.ListContract ../../getting-started-with-scalardl/build/com/scalar/am/contract/ListContract.class {"holderId": "Admin"}
Contract 'list-asset' successfully registered

scalar> register status-change com.scalar.am.contract.StatusChangeContract ../../getting-started-with-scalardl/build/com/scalar/am/contract/StatusChangeContract.class {"holderId": "Admin"}
Contract 'status-change' successfully registered

scalar> register asset-history com.scalar.am.contract.AssetHistoryContract ../../getting-started-with-scalardl/build/com/scalar/am/contract/AssetHistoryContract.class {"holderId": "Admin"}
Contract 'asset-history' successfully registered
등록 시register 명령의 규격은 다음과 같다.
register [実行時に使う名前] [Javaのクラス名] [クラスファイルのパス] [初期パラメータ]
스마트 구조기를 등록할 때 초기 파라미터를 제출할 수 있지만 이 자산 관리 응용 프로그램은 지정해야 한다holderId.
이것holderId은 등록 시에만 제출되며 변경되지 않는 값입니다.
스마트 구조기에서 이 정보를 사용하고 검사함으로써 자신이 등록한 자산 정보를 다른 사람이 업데이트하는 것을 방지할 수 있다.
간단한 인상은 다음과 같은 느낌.

Scar DLT에서는 자산에 대한 참조, 개작에 대한 권한 제어가 없기 때문에 예기치 않은 데이터 업데이트를 방지할 수 있습니다.
그럼 드디어 실행하겠습니다.
또한 실행 시 사용execute.
execute [スマートコントラクトの登録名] [パラメータ]
우선 등록 자산의 종류.
scalar> execute add-type {"name": "Tablet"}

{
   "result": "success",
   "message": "type Tablet put completed."
}
scalar> execute add-type {"name": "SmartPhone"}

{
   "result": "success",
   "message": "type SmartPhone put completed."
}
Tablet 및 SmartPhone이 추가되었습니다.
이제 진짜 등록했는지 확인해 봅시다.
scalar> execute list-type {}

{
   "result": "success",
   "message": "get list completed.",
   "types": [
       {
           "type": "SmartPhone",
           "age": 1
       },
       {
           "type": "Tablet",
           "age": 0
       }
   ]
}
잘 보관하고 있어요.
여기서 주의해야 할 점은 매개 변수가 없는 상황에서 빈 진열{}을 상대방에게 건네주는 것이다.
이것을 생략하면 오류가 발생할 수 있으니 주의하십시오.
자산을 계속 등록하세요.
scalar>

scalar> execute add-asset {"type": "Tablet", "asset": "iPad", "timestamp": 20190701120000, "id": "1001"}

{
   "result": "success",
   "message": "asset iPad put completed."
}
ID는 1001이고 Tablet으로 분류된 아이패드에 로그인했습니다.
timestamp에 UNIX 타임스탬프를 등록했지만 임시 값을 간단명료하게 지정했습니다.
나도 이게 데이터를 등록했는지 확인해 볼게.
scalar> execute list-asset {"type": "Tablet"}

{
   "result": "success",
   "message": "get list completed.",
   "Tablet": [
       {
           "id": "1001",
           "name": "iPad",
           "timestamp": 20190701120000,
           "status": "in-stock"
       }
   ]
}
아이패드 접속이 확실하네요.
status는 in stock이니까 얼른 빌려봐요.
scalar> execute status-change {"asset_id": "1001", "status": "on-loan", "timestamp": 20190701130000}

{
   "result": "success",
   "message": "Borrowed"
}

scalar> execute list-asset {"type": "Tablet"}

{
   "result": "success",
   "message": "get list completed.",
   "Tablet": [
       {
           "id": "1001",
           "name": "iPad",
           "timestamp": 20190701130000,
           "status": "on-loan",
           "holderId": "Admin"
       }
   ]
}
잘 빌렸어요.
타임스탬프도 업데이트됐고,status도 온론으로 변경됐어요.
다음에 돌려주세요.
scalar> execute status-change {"asset_id": "1001", "status": "in-stock", "timestamp": 20190701140000}

{
   "result": "success",
   "message": "Returned"
}

scalar> execute list-asset {"type": "Tablet"}

{
   "result": "success",
   "message": "get list completed.",
   "Tablet": [
       {
           "id": "1001",
           "name": "iPad",
           "timestamp": 20190701140000,
           "status": "in-stock"
       }
   ]
}
이쪽도 무사히 끝냈습니다.
그럼 마지막으로 대출 기록을 확인해 봅시다.
scalar> execute asset-history {"id": "1001"}

{
   "result": "success",
   "message": "get history complete.",
   "history": [
       {
           "timestamp": 20190701140000,
           "status": "in-stock",
           "age": 2
       },
       {
           "timestamp": 20190701130000,
           "status": "on-loan",
           "age": 1,
           "holderId": "Admin"
       },
       {
           "timestamp": 20190701120000,
           "status": "in-stock",
           "age": 0
       }
   ]
}
등록, 대여, 반환과 이력이 남았다.
총결산
그래서 나는 시뮬레이터를 사용하여 자산 관리 응용 프로그램을 시작한다.
시뮬레이터 가동도 빠르고 동작도 빠르고 작업도 순조롭게 진행되고 있습니다.
이번에는 시뮬레이터를 사용했기 때문에 exit가 되면 구조기와 데이터가 사라집니다.
그래서 나는 앞으로 실제 샌드박스 환경의 등록과 그 소환 등을 쫓아갈 생각이다.

좋은 웹페이지 즐겨찾기