5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

nem / symbolAdvent Calendar 2024

Day 11

Windows と TypeScript ではじめる Symbol 通信 01 【環境構築】

Last updated at Posted at 2024-12-10

仮想 Ubuntu 上で Symbol を動かして、ちょっとだけノードと通信してみましょう。

環境

前提とする環境は以下の通りです。

  • Windows11
  • WSL2 上の Ubuntu24

通信するために使用するのは以下の通りです。

  • VSCode
  • Node.js
  • TypeScript

WSL2

Ubuntu の導入

以下を参考にしてください。

Symbol のビルド

以下を参考にしてください。

Symbol テストネットで起動

以下を参考にしてください。

Windows に TypeScript 環境構築

Node.js のインストール

好きな方法で各々インストールしてください。私は、環境管理が大変なのでVoltaを使用してインストールします。

winget install Volta.Volta

最新の LTS をインストールします。

volta install node

yarn もインストールします。

volta install yarn

TypeScript プロジェクトの作成

任意の場所にプロジェクト用のフォルダを作成します。作成したら VSCode で作成したフォルダを開きます。

これからのコマンド入力は VSCode のターミナルから行った方がスムーズに作業が進むと思います。

プロジェクトフォルダの初期化

yarn がnode_modulesフォルダを作成するようファイルを作成します。

echo "nodeLinker: node-modules" > .yarnrc.yml

プロジェクトフォルダを初期化します。

yarn init

念のためバージョンのピン留めもしておきます。

volta pin node
volta pin npm
volta pin yarn

パッケージのインストール

Symbol-SDK をインストールします。

yarn add symbol-sdk

開発用パッケージのインストール

開発時に使用するパッケージをインストールします。

yarn add -D typescript tsx eslint prettier eslint-config-prettier @types/node @typescript-eslint/eslint-plugin @typescript-eslint/parser

ESLint の設定

.eslintrc.jsonを作成&編集。

.eslintrc.json
{
  "extends": [
    "plugin:@typescript-eslint/recommended",
    "prettier"
  ]
}

Prettier の設定

.prettierrc.jsonを作成&編集。

.prettierrc.json
{
  "tabWidth": 2,
  "printWidth": 80,
  "trailingComma": "es5",
  "semi": false,
  "singleQuote": true
}

tsconfig.json の作成

tsconfig.jsonを作成&編集。

tsconfig.json
{
  "compilerOptions": {
    "declaration": true,
    "module": "NodeNext",
    "outDir": "dist",
    "rootDir": "src",
    "strict": true,
    "target": "es2022",
    "moduleResolution": "node16",
    "composite": true
  },
  "include": [
    "./src/**/*"
  ],
  "ts-node": {
    "esm": true
  }
}

package.json の編集

package.json"type": "module"を追加します。これにより、ES モジュールとして扱われるようになります。

package.json
{
  "name": "symcomm",
  "packageManager": "yarn@4.5.1",
  "type": "module",
...

動作確認

確認のため簡単なコードを動かしてます。

src/test.ts
import { Bip32 } from 'symbol-sdk'
import { Address, Network, SymbolFacade } from 'symbol-sdk/symbol'

// ニーモニック生成
const bip32 = new Bip32()
const mnemonic = bip32.random()
console.log(`mnemonic: ${mnemonic}`)

// faced生成
const facade = new SymbolFacade(Network.TESTNET)

// ニーモニックから10件アカウントを生成する
const bip32Node = bip32.fromMnemonic(mnemonic, '')
for (let i = 0; i < 10; i++) {
  // Bip32Path生成
  const bip32Path = facade.bip32Path(i)
  // Bip32Pathから子孫Bip32Path生成
  const childBip32Node = bip32Node.derivePath(bip32Path)
  // 子孫Bip32Pathからキーペア生成
  const keyPair = SymbolFacade.bip32NodeToKeyPair(childBip32Node)
  // 公開鍵からアドレス生成
  const address = new Address(
    facade.network.publicKeyToAddress(keyPair.publicKey)
  )
  // 表示
  console.log(
    `[${i}]`,
    `Addr:${address.toString()}`,
    `PubK:${keyPair.publicKey.toString()}`,
    `PriK:${keyPair.privateKey.toString()}`
  )
}

実行します。

yarn tsx .\src\test.ts

ニーモニックと 10 件のアカウントが表示されれば OK です。

証明書の作成

SSL ソケット通信なので証明書が必要です。
作るのが少し面倒なのでsimple-symbol-node-cert-cliを使って作成します。

simple-symbol-node-cert-cliをインストールします。

npm install -g simple-symbol-node-cert-cli

新規に証明書を作成します。
ノードと証明書を同じにするために、ノード側にあるprivatekeys.yamlファイルをコピーして以下を実行します。

simple-symbol-node-cert-cli generate
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?