JPYC SDK(日本語)

JPYC SDK(日本語)

JPYC V1 SDK

JPYC V1 SDKは、複数のブロックチェーン上にあるJPYCv2コントラクトと対話するためのインターフェースを提供します。現在サポートされているチェーンはEthereum、Polygon、Gnosis、Avalanche、Astarの5つです。ただし、Shiden Networkはサポートされていないため、ご注意ください。

💡 使用方法

SDKを設定するには、以下の手順に従ってください。

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

パッケージをインストールします。

# yarn
$ yarn add @jpyc/sdk-v1
# npm
$ npm i @jpyc/sdk-v1

2. 環境変数の設定

チェーン名などの設定項目や、秘密鍵などの機密情報は環境変数として管理します。以下の環境変数を適切に設定してください。

変数
説明と指示
SDK_ENV
SDKの環境。ローカル環境の場合は local に設定し、本番環境の場合は他の適切な文字列を設定してください。
CHAIN_NAME
チェーン名。以下のいずれかに設定してください: local、ethereum、polygon、gnosis、avalanche、astar。
NETWORK_NAME
指定されたチェーン内のネットワーク名。以下のいずれかに設定してください: mainnet、goerli、sepolia、amoy、chiado、fuji
RPC_ENDPOINT
トランザクションを送信するためのRPCエンドポイント。
PRIVATE_KEY
アカウントの秘密鍵。
LOCAL_PROXY_ADDRESS
ローカル環境でのプロキシコントラクトアドレス。

3. SDKのインスタンス化

JPYCv2コントラクトと通信するための抽象化されたインターフェースを持つSDKを初期化します。

import { ChainName, Endpoint, NetworkName } from '@jpyc/sdk-core';
import { IJPYC, ISdkClient, JPYC, SdkClient } from '@jpyc/sdk-v1';

// 1. Initialize an SdkClient instance
const sdkClient: ISdkClient = new SdkClient({
  chainName: process.env.CHAIN_NAME as ChainName,
  networkName: process.env.NETWORK_NAME as NetworkName,
  rpcEndpoint: process.env.RPC_ENDPOINT as Endpoint,
});

// 2. Generate an account from a private key
export const account = sdkClient.createPrivateKeyAccount({});

// 3. Generate a client with the account
export const client = sdkClient.createLocalClient({
  account: account,
});

// 4. Initialize an SDK instance
export const jpyc: IJPYC = new JPYC({
  client: client,
});

4. SDKの使用

初期化したSDKを、必要な箇所で適宜使用します。

import { jpyc } from './YOUR/PATH/TO/INITIALIZATION/FILE';

// Fetch `totalSupply` from `JPYCv2` contract
const totalSupply = await jpyc.totalSupply();
console.log(`totalSupply: ${totalSupply.toString()}`);

✨ サンプルコード

具体的な使用例については、別途用意したsdk-examplesリポジトリをご参照ください。詳細な手順はリポジトリ内のREADMEファイルに記載されています。

🤖 開発用コマンド ローカル開発やテスト用に、以下のyarnスクリプトを用意しています。

コマンド一覧

  • docs: TSDocスタイルのコメントからMarkdownドキュメントを生成
  • lint: ESLintによるコード検証を実行
  • lint:dry-run: ESLintによるコード検証を実行(修正は行わない)
  • format: Prettierによるコードフォーマットを実行
  • format:dry-run: Prettierによるコードフォーマットをチェック(修正は行わない)
  • compile: SDKのコンパイル(トランスパイル)を実行

JPYC Node SDKsとは

JPYC Node SDKsは、複数のプロジェクトを一つのリポジトリで管理するモノレポ方式を採用しています。

🌈 利用可能なSDK

各SDKのバージョン詳細については、それぞれのREADMEをご確認ください。

SDK
README
core
packages/core
v1
packages/v1

🔨 開発

Git Submodules

このリポジトリは、JPYCv2リポジトリと同期させるためにGitサブモジュールを使用しています。

リポジトリをクローンするときにサブモジュールを含めるには、以下のように--recursiveオプションを追加してください。

$ git clone --recursive https://github.com/jcam1/sdks.git

Yarn Workspaces

このリポジトリは、主にモノレポ管理ツールとしてYarn Workspacesを使用しています。詳細はリンクを参照してください。

注意

このリポジトリではNode v20.12.0を使用してください。

すべてのワークスペースに依存関係をインストールするには、以下のコマンドを実行してください。

# cd into this repo
$ cd sdks
# Install dependencies
$ yarn

Yarn Scripts

ワークスペースで定義されたYarnスクリプトを実行するには、以下のコマンドを使用します。

$ yarn workspace ${workspace_name} run ${command_name}

依存関係

依存関係を追加する際は、予期せぬ動作を防ぐため、常に正確なバージョンを指定してください。

# Add dependencies to the specified workspace
$ yarn workspace ${workspace_name} add -E ${dependencies}

# Add dev dependencies to the specified workspace
$ yarn workspace ${workspace_name} add -E -D ${dependencies}

# Add dev dependencies to the workspaces root
$ yarn add -E -D -W ${dependencies}

依存関係を削除するには、以下のコマンドを実行します。

# Remove dependencies from the specified workspace
$ yarn workspace ${workspace_name} remove ${dependencies}

# Remove dependencies from the workspaces root
$ yarn remove -W ${dependencies}

ドキュメント

ソースコードからMarkdown形式のドキュメントを生成するには、以下を実行します。

$ yarn run docs

🔥 貢献方法

このプロジェクトへの貢献をご検討いただき、ありがとうございます。

貢献方法については、以下の手順をご確認ください。

  1. Issueを作成する
  2. 最初に、新しいIssueを作成してください。新機能の提案やバグ報告をするために、こちらから自由にIssueを作成してください。

2.このリポジトリをクローンする

次に、このリポジトリをクローンします。デフォルトのブランチはdevelopです。

$ git clone --recursive https://github.com/jcam1/sdks.git

3.新しいブランチをチェックアウトする

次に、クローンしたdevelopブランチから新しいブランチにチェックアウトします(ブランチ名は自由に名付けてください)。

$ git checkout -b ${your_branch_name}

4.コードを書く

提案された機能の実装やバグ修正のためにコードを書きます。

5.プルリクエストを開く

最後に、新しいブランチからdevelopブランチへプルリクエスト(PR)を開き、行った変更を説明してください。

参考HP

https://www.npmjs.com/package/@jpyc/sdk-v1

https://github.com/jcam1/sdks