English | 日本語
ibet ネットワーク上で利用可能なトークンおよびDEXコントラクト実装
- ibet-SmartContract プロジェクトは ibet-Network blockchain 上にオープンな金融システムを構築するプロジェクトです。
- このプロジェクトでは、ibet-Network 上で利用可能なトークン規格、分散取引所、あるいはその他の有用なツール群などを提供することを目的にしています。
- Python3
- バージョン 3.11
- Node.js
- バージョン 20
- Solidity
- スマートコントラクトの実装には Solidity を利用しています。
- 現在、私たちは v0.8.23 を利用しています。
- eth-brownie
- eth-brownie フレームワークを利用して、コントラクトの開発とテストを行なっています。
- GoQuorum
- ibet-Network の公式の GoQuorum ノード上での動作をサポートしています。
- ローカル開発・テストでは hardhat network を利用しています。最新バージョンを利用しています。
- OpenZeppelin
- 私たちのプロジェクトの一部は OpenZeppelin に依存しています。
- openzeppelin-contracts の v4.9 を利用しています。
IbetStandardTokenInterface
: トークンの標準インターフェースIbetExchangeInterface
: 取引(Exchange)コントラクトの標準インターフェース
access
: 各アクションを実行できるユーザーを決定するための権限制御機能を提供します。exchange
: 様々な取引機能(Exchange)の実装です。ledger
: 法定原簿に必要な付加情報を管理するためのデータストレージ機能を提供します。payment
: オフチェーン決済を実現するため機能群です。token
: 各種トークンフォーマットの実装です(ERC20、ERC721、Bond型、Share型など)。utils
: その他のユーティリティ機能です。
eth-brownie をインストールします。
$ make install
openzeppelin-contractsをインストールします。
$ brownie pm install OpenZeppelin/openzeppelin-contracts@4.9.3
hardhatをインストールします。
$ npm install
コントラクトのコンパイルには eth-brownie を利用します。
$ brownie compile
コントラクトデプロイ時に用いるEOAを、環境変数で切り替えることができます。
GoQuorum(Geth)内に保存した秘密鍵を仕様する場合は、以下の環境変数を設定してください。
ETH_ACCOUNT_PASSWORD
- Geth の keystore file に設定したパスフレーズ
ローカルに保存した keystore file を利用する場合は、以下の環境変数を設定してください。
ETH_KEYSTORE_PATH
- keystore file を保存したディレクトリパス。ETH_ACCOUNT_PASSWORD
- keystore file に設定したパスフレーズ
平文の秘密鍵を利用する場合は、以下の環境変数を設定してください。
ETH_PRIVATE_KEY
- 平文の秘密鍵ETH_ACCOUNT_PASSWORD
- 秘密鍵を暗号化するためのパスフレーズ
AWS Secrets Manager に保存した秘密鍵を指定することもできます。 秘密鍵は keystore file のフォーマットで保存してください。 以下の環境変数を設定してください。
AWS_REGION_NAME
- AWS リージョン(デフォルト:ap-northeast-1)AWS_SECRETS_ID
- シークレットの ARNETH_ACCOUNT_PASSWORD
- keystore file に対して設定したパスフレーズ
以下のコマンドを実行してコントラクトのデプロイが可能です。
$ ./scripts/deploy_shared_contract.sh {--payment_gateway 0xabcd...} {contract_name}
contract_name
として、以下のコントラクトをデプロイすることができます。
- E2EMessaging
- TokenList
- PersonalInfo
- PaymentGateway
- IbetExchange (* --payment_gateway オプションが必要)
- IbetEscrow
- IbetSecurityTokenEscrow
- FreezeLog
その他のコントラクトはスクリプトによるデプロイをサポートしていません。 それらのコントラクトについては、その他の方法でデプロイする必要があります。
ネットワーク設定は hardhat.config.js
ファイルに定義されています。
- chainId: 2017
- gasPrice: 0
- blockGasLimit: 800000000
- hardfork: "berlin"
ローカル環境で開発を行う際は、docker-compose.yml
に定義されている、hardhat-network
コンテナを起動して利用してください。
デフォルトでは 8545 ポートで RPC サービスが起動します。
ネットワーク設定を Brownie にインポートします。
$ brownie networks import data/networks.yml
以下のようにテストを実行します。
$ brownie test
以下のように pytest を利用することも可能です。
$ pytest tests/
このリポジトリは以下の図で示されるフローでバージョン管理が行われています。
ibet-SmartContract は Apache License, Version 2.0 でライセンスされています。
私たちは、皆様のユースケースをサポートするために、オープンソースに取り組んでいます。 私たちは、あなたがこのライブラリをどのように使用し、どのような問題の解決に役立っているかを知りたいと思います。 私たちは、2つのコミュニケーション用の手段を用意しています。
- public discussion group では、ロードマップ、アップデート、イベント等を共有します。
- dev@boostry.co.jp のEメール宛に連絡をいただければ、直接私たちに連絡することができます。
機密事項の送信はご遠慮ください。過去に送信したメッセージの削除を希望される場合は、ご連絡ください。