blockj: Java に基づくシンプルなブロックチェーン プロジェクト
Downcodes のエディターは今日、Java に基づくシンプルなブロックチェーン (コンソーシアム チェーン) プロジェクト、blockj を提供します。これには、暗号化ツール、ウォレット、P2P 送信、ブロック同期、ネットワーク コンセンサス、その他のブロックチェーンの基本的な実装が含まれており、初心者がブロックチェーン テクノロジーを学ぶのに非常に適したプロジェクトです。
プロジェクトの構造
blockj は SpringBoot + Tio ネットワーク フレームワークを使用して実装されています。その主な構造は次のとおりです。
1. メインプログラム: SpringBoot フレームワークを使用して実装されます。
2. P2P 伝送: t-io ネットワーク フレームワークを使用して実装されます。
動作環境
blockj プロジェクトを適切に実行するには、JDK 1.8 以降が必要です。
プロジェクトモジュール
blockj プロジェクトには主に次の 3 つのモジュールが含まれています。
1. blockj-base: 暗号化ツール、ブロック、メッセージ、その他のデータ モデル、データ ストレージ、その他の機能を含む基本的な公開ツールキット。
2. blockj-miner: マイナー、ブロック同期、P2P ネットワーク、RPC API およびその他の機能を含むブロックチェーンのメイン プログラム。
3. blockj-client: クライアント コマンド ライン ツール。主に Miner の関連 API を呼び出して、ブロックチェーンとのユーザー インタラクションを実現するために使用されます。
クイックスタート
次の手順では、ブロックチェーン ネットワークを作成し、基本的な操作を実行する方法を説明します。
1. ジェネシスノードの作成(ネットワークの作成)
まず、プロジェクトのクローンを作成し、コンパイルしてパッケージ化する必要があります。
「バッシュ」
git クローン https://gitee.com/blackfox/blockj.git
CDブロック
mvnクリーンパッケージ
`
次に、ジェネシス ノードを作成します。
「バッシュ」
./minergenesis --repo=/data/genesis --enable-mining=true
`
2. Genesis Miner を起動します
「バッシュ」
./miner run --repo=/data/genesis
`
3. 新しいノードを開始します (ネットワークに参加します)。
新しいノードを既存のネットワークに参加させるには、ジェネシス ブロックを使用して Miner を初期化し、Miner を開始する必要があります。
「バッシュ」
./miner init --repo=/data/miner1 --genesis=genesis.car --api.port=8002 --p2p.port=3456
./miner run --repo=/data/miner1
`
クライアントの使用
一般的に使用されるクライアント コマンド ライン操作の一部を次に示します。
1. ウォレットリストを表示する
「バッシュ」
./クライアントウォレットリスト
`
出力:
`
アドレスバランスナンス
0x0d181310331612e107b5e0dfdf971cfb9de780adfds 800 10
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400 0
0xb6258bc70240ee5daa213f671c08db51e50a4cbe 50800 30
cd3da3ec4195070e13a6d88b75101f6ceb427a8e 0 0
`
2. 新しいウォレットを作成する
通常のウォレットを作成します。
「バッシュ」
./クライアントウォレット新規
`
ニーモニックフレーズを使用してウォレットを作成します(パスワードを設定してキーストアファイルを生成できます)。
「バッシュ」
./クライアントウォレット新しい --mnemonic=true 123456
`
3. ウォレット残高を確認する
「バッシュ」
./クライアントウォレット残高 0x2505bf54f3a63848e44a105e8de599ad08ae8c58
`
出力:
`
アドレスバランス
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400
`
4. 転送
「バッシュ」
./クライアント チェーン送信 --from=0x0d181310331612e107b5e0dfdf971cfb9de780adfds 0x2505bf54f3a63848e44a105e8de599ad08ae8c58 123
`
出力:
`
メッセージを送信、CID: 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
`
5.現在のチェーン高さを確認する
「バッシュ」
./クライアントチェーンヘッド
`
6. 指定したチェーン上のメッセージを表示する
「バッシュ」
./クライアント チェーン getMessage 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
`
出力:
`
メッセージ{バージョン=1、から='0x0d181310331612e107b5e0dfdf971cfb9de780adfds'、to='0x2505bf54f3a63848e44a105e8de599ad08ae8c58'、値=123、タイムスタンプ=1672826743640、公開キー='P Z8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSCw5EXe33S25zZDT25sNYu1bjtBfaCwEGSgnGhJiE31fCfDsyE3pNFw7cC87VfQZQqiEdntMmztfpiDcRe1gv3aJJ4'、cid='05b6074241f14 06cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631'、ステータス=追加中、ノンス=2、パラメータ= 'null '、高さ=0、符号='30460221009A8B2750A6D986EB926B67163B740BBACDD07FE2D87F8FA9AE2F08424989477602210082C1C36EAEEC6367C023847F995291873F305 B867 E9B65A5C68ED8A4293DB890'}
`
7. 指定した高さのブロック情報を表示する
「バッシュ」
./クライアントチェーンgetBlock 1
`
出力:
`
ブロック{ヘッダー=BlockHeader{高さ=1、難易度=28269553036454149273332760011886696253239742350009903329945699220681916416、nonce=703、createTime=1672813674、hash='0004c 2 62f7ead28cc66c9336d7a8335cb8fea5a06b0b1fd7488c3c9b140987cc'、previousHash='ed5126ddd65f39a17739b8e26ea3edecfff6bf196148dc259d9a3eddeefc23d5'}、messages=[メッセージ {version=0] 、from='B099' 、to='0xb6258bc70240ee5daa213f671c08db51e50a4cbe'、値=50、タイムスタンプ=1672813674163、pubKey='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSD1ErKp8AqSj4Ph9Jsj2Gvk7w1py Lg qDRiguC7JvjeGZJZ1si1qRYCAsVmu1UvYRqvhiCBgYDpmyuWK5VzD5KK4RNY'、cid='3e1f8987b0d66b2de155e78aeef6984ab7cb6c3acdf03c835c01f4b4088fb90d'、ステータス=SUCCESS、 、params='マイナー報酬。'、高さ=1、記号= '304402202DF6EABBF5C81C41996C44F8E1230D44CAE8ADA9184B466D9B708ADC8B050225022049D74E4E99E0EA8E56208AD2E4B7B17C2320 DC3E6461A17C94D1820 818559CA9 '}]、blockSign='3046022100C04714C00642527AF6AA1DB2B537E5FD887F52999F66929AA2A928D4C6A4897A022100AF98888FDC825FFB0683E8D65494363790 E5173F 3991AF61AB86DEEFEAF15D81'}
`
8. 現在のネットワーク内の P2P ノードのリストを表示します。
「バッシュ」
./client ネットピア
`
9. 現在のノードの P2P 接続情報の表示
「バッシュ」
./client net listen
`
出力:
`
他のノードによって接続されていた P2P 接続情報
127.0.0.1:2345
`
10. ノードを手動で接続する
「バッシュ」
./クライアント ネット接続 192.22.33.11:3456
`
まとめ
blockj プロジェクトは、ブロックチェーン技術を学習するための入門レベルのプロジェクトです。それを通じて、ブロックチェーンの基本的な概念と実装方法を学ぶことができます。もちろん、現在は POW コンセンサス アルゴリズムのみを実装しています。これを運用プロジェクトで使用したい場合は、独自のプロジェクトのニーズに応じて変更および改善する必要があります。
この記事がお役に立てば幸いです。