なんと、暗号資産(仮想通貨)・ブロックチェーン案件を対応することになりそうで、Symbolブロックチェーンを使ったトークンで色々したい、という内容になりそうなので、調査がてら記事を書きます。
調査、開発の進捗に沿って追記していく予定です。
Symbolとは
大きく2つの意味があります。
- ブロックチェーンの1つ
- 上記ブロックチェーンのネイティブトークン(XYM)
開発者目線としては、XYMの存在を認識しつつも、あくまで前者を意識するようにします。
やりたいこと
Symbolブロックチェーンを使って独自トークンを作成し、そのトークンをポイントのように扱いECと連携します。
なので、
- 独自トークン作成
- 独自トークンの付与、移動ができるAPIを作成
- 上記APIをECと連携
ざっくりと上記が必要そうです。
前提として必要なアプリケーション
先に以下のアプリケーションがyumなどでインストールされていないと、以降のインストール作業が出来なかったりエラーになったりするので、もしない場合はあらかじめインストールします。
- Git
- gcc-c++
- docker(symbol-bootstrapで利用。エラー出たらdocker.sock の権限を環境に応じて変更)
- anyenv + nodenv(これはなくても良いが、あったほうが何かと便利)
まずはCLIをインストール
Symbolの開発に使う、CLIをインストールします。
手順は以下の公式サイトを参考にします。
https://docs.symbol.dev/getting-started/setup-workstation.html
前提として、nodeが必要なようなので、もしない場合は先にインストールします。
ちなみに僕の場合は最初、nodeのバージョンが16だったのですが、CLIをインストールしたら、エラーになってしまいました。
なので、nodevで12の最新バージョン(12.22.10)に変更しました。
その上で、SDKをインストールしたら成功しました。Warningがそこそこ出ましたが。。。
nodenv install 12.22.10 nodenv local 12.22.10 nodenv versions npm install --global symbol-cli
インストール後、symbol-cli コマンドが動けばインストール成功です。
% symbol-cli
Symbol CLI v1.0.1
USAGE
symbol-cli <subcommand>
SUBCOMMANDS
account - Get account related information
block - Get block related information
chain - Get chain related information
converter - Convert between data types
metadata - Get metadata related information
monitor - Monitor blocks, transactions and errors
mosaic - Get mosaic related information
namespace - Get namespace related information
node - Get node related information
profile - Manage profiles
restriction - Get restrictions related information
transaction - Announce transactions
ここまでで、ひとまずCLIのインストール完了です。
ノードについて
次にアカウントを作成しますが、ノードのサーバを正しく入力する必要があります。
ノード情報はネットに色々載ってはいるのですが、どこもうまく接続できず、仕方ないので、これも勉強ということで自分のローカルでノードサーバを立ててみたいと思います。
公式のDocumentも参照。
https://docs.symbol.dev/ja/guides/network/using-symbol-bootstrap.html
symbol-bootstrap を入れます。
npm install -g symbol-bootstrap
※最初、Nodeのバージョンが12だとうまくインストールできなかったので、nodevで14.19.0に変えました。
以下のような設定ファイル(.yml)を作成します。
nodes:
-
friendlyName: [好きな名前]
その後以下コマンドを実行。
symbol-bootstrap config -p testnet -a dual -c [設定ファイルの名前]
これで設定ファイルが作成されました。
続いて、docker-compose.ymlを以下コマンドで作成します。
symbol-bootstrap compose
そして以下コマンドでコンテナ起動します。-d はdocker compose本家と同じく起動完了したらコマンド入力出来るようになります。
symbol-bootstrap run -d
これで起動しました。 http://localhost:3000 にアクセスしたら以下のようなJSONが出力されます。
{"code":"ResourceNotFound","message":"/ does not exist"}
そして、symbol-cli コマンドでアカウントを作ってみましょう。
公式Documentも参照。
https://docs.symbol.dev/ja/getting-started/setup-workstation.html
% symbol-cli account generate
✔ Select the network type: › TEST_NET
✔ Do you want to save the account? … yes
✔ Select an import type: › PrivateKey
✔ Enter the Symbol node URL. (Example: http://localhost:3000): … http://localhost:3000
✔ Enter a profile name: … pustaponte
✔ Enter your wallet password: … ********
✔ Do you want to set the account as the default profile? … yes
┌──────────────────┬──────────────────────────────────────────────────────────────────┐
│ Property │ Value │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Name │ pustaponte │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Address │ TD4K5T-YKTUG6-SMUCKW-5TL2N6-V7ECQV-ZMEROR-6TY │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Network │ TEST_NET │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Node URL │ http://localhost:3000 │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Generation Hash │ 7FCCD304802016BEBBCD342A332F91FF1F3BB5E902988B352697BE245F48E836 │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Network Currency │ name: symbol.xym, divisibility: 6 │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Profile type │ PrivateKey │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Password │(パスワード) │
├──────────────────┼──────────────────────────────────────────────────────────────────┤
│ Private key │ CC186D0CD44D2EE6B5B24595C6D20F788B008BE60426EC0793F4B5F321A00EF3 │
└──────────────────┴──────────────────────────────────────────────────────────────────┘
SUCCESS Stored pustaponte profile
こんな感じで作成アカウントの情報が表示されれば成功です。
ひとまずこれで最低限の環境が出来ました。