Ethereumを使用して独自のプライベートブロックを作成する
11223 ワード
このポストではEthereumを使用して複数のノードでGethプライベートブロックを構築します.
EthereumのプライベートブロックはEthereumのようなブロックですが、使用するネットワークはEthereum mainではありません.プライベートネットワークを使用すると、すべてのブロックは完全にEthereumのブロックチェーンから離れている、それは可能な変更マイニングのような構成は難しい、アクセスおよびその他の側面.
最後に、あなたは、このネットワークで利用できる取引、スマート契約と他のようなすべてのEthereum機能で、EVM (Ethereum Virtual Machine)で実行しているあなた自身の個人的な封鎖を持ちます.
次の手順に従って、プライベートブロックを構築します. geth をインストールしますジェネシスブロック を定義するが最初のブロックチェーンノード を開始するは第2のブロックチェーンノード を開始するは、ピアツーピア接続 を作成しますマイニングブロックと作成トランザクション
GETHはEthereumネットワークに接続するいくつかのリソースを持つCLIです.これは、ローカル環境でプライベートネットワークを起動するために使用されます.
Ubuntu/Debianでgethをインストールするには、次の手順に従います.
gethが正常にインストールされているかどうかチェックします.
すべてのブロックは、ジェネシスブロックから始まります.このブロックは、初期設定をブロックチェーンに定義します.ジェネシスブロックへの設定は、ジェネシスで定義されます.JSONファイル.
そこで、プライベートネットワークを起動して創世記を作成するフォルダーを作成しましょう.JSONファイル.
Chaid :プライベートネットワークの一意のIDを定義するゼロより大きい整数.メインネットワークはID 1です.あなたが主なネットワークと異なっているあなた自身のカスタムネットワークIDを供給するならば、あなたのノードは他のノードに接続していなくて、私設ネットワークを形成しません..あなたはhttps://chainid.networkでEthereumネットワークのコミュニティ実行レジストリを見つけることができます.
HomesteadBlock:HomesteadはEthereumプロトコルの最初の公式安定版です.このリリースを使用する場合は、属性を0に設定します.
難易度:ブロックを生成するの難しさを決定します.
ガス制限:単位あたりの現在のネットワーク全体のガス消費限度を示します.ガスはEthereumネットワーク上のトランザクション手数料を支払うために使用される燃料です.
Alloc :ネットワークの正のバランスでいくつかのアカウントを開始するために使用されます.この場合、我々はどんなアカウントも定義しません.他の属性はネットワークで使用されるプロトコルと属性を参照します、我々はEthereumネットワークのためにデフォルト値を設定しました.
BootNodeは、ブロックチェインが開始されたときに生成される最初のノードです.データベースを最初のノード実行に開始するには、次の手順に従います.
端末の結果は次のようになります.
ディレクトリの結果は次のようになります.
端末の結果は次のようになります.
完了!プライベートネットワークのブロックは実行中です.これを確かめるテストをしましょう.同じフォルダの他のターミナルウィンドウを開き、以下のコマンドを実行します.
ノードの情報を見るには、次のコマンドを実行します.
第2のノードを我々のblockchainに始めましょう.以下のコマンドを実行します.
この場合のデータベースへのフォルダはnode 2です. フラグ-- http -- -- allow insecure unsecureロックは必要ありません. 旗--ポートそれは前のものからこのノードを区別するのに必要です.最初のノードはデフォルトポート30303上で動作します. 新しいJavaScript端末を作成した2番目のノードに開き、実行する情報を確認します.
さて、ブロックチェーン内の2つのノード間のピアツーピア接続を作成しましょう.
第2ノードのNodeInfoからENODEをコピーし、次のコマンドを実行します.
ネットワークの第2のノードを参照している30304ポートに注意してください.結果は次のようになります.
完了!あなたのブロックは、複数のノードのruningと接続で作成されます.アカウントを作成して、両方のノードで更新されたデータを見るためにマイニングを開始しましょう.
私のブロックには、基本的なアカウントが必要です.これをしましょう.最初のノードのJavaScriptターミナルでは、新しいアカウントを作成し、このアカウントに必要なパスワードを定義するコマンドを実行します.
アカウント・バランスの実行を見ることができます.
また、いくつかの秒後に2番目のノードのJavaScriptターミナルでブロック番号を確認することができます値は、最初のノードで示されている同じでなければなりません.これは、実際には、ノードが接続され、更新されることを意味します.
他のコマンドを実行して、両方のノードでテストを行うことができます.すべてのgeth CLIオプションhereを見てください.探検Geth Documentation.
続行するには、あなたのブロックチェーンのプライベートネットワークにMetamaskし、いくつかのトランザクションを実行します.
Geth Documentation
Ethereum
EthereumのプライベートブロックはEthereumのようなブロックですが、使用するネットワークはEthereum mainではありません.プライベートネットワークを使用すると、すべてのブロックは完全にEthereumのブロックチェーンから離れている、それは可能な変更マイニングのような構成は難しい、アクセスおよびその他の側面.
最後に、あなたは、このネットワークで利用できる取引、スマート契約と他のようなすべてのEthereum機能で、EVM (Ethereum Virtual Machine)で実行しているあなた自身の個人的な封鎖を持ちます.
ゲットスタート
次の手順に従って、プライベートブロックを構築します.
gethのインストール
GETHはEthereumネットワークに接続するいくつかのリソースを持つCLIです.これは、ローカル環境でプライベートネットワークを起動するために使用されます.
Ubuntu/Debianでgethをインストールするには、次の手順に従います.
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
他のプラットフォームhereにインストールを見ることができます.gethが正常にインストールされているかどうかチェックします.
geth -h
gethを使用するすべてのコマンドを示します.発生ブロック
すべてのブロックは、ジェネシスブロックから始まります.このブロックは、初期設定をブロックチェーンに定義します.ジェネシスブロックへの設定は、ジェネシスで定義されます.JSONファイル.
そこで、プライベートネットワークを起動して創世記を作成するフォルダーを作成しましょう.JSONファイル.
mkdir my-blockchain
cd my-blockchain
touch genesis.json
次のコンテンツをジェネシスに追加します.JSONファイル{
"config": {
"chainId": 1234,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"ethash": {}
},
"difficulty": "4",
"gasLimit": "8000000",
"alloc": {}
}
解説Chaid :プライベートネットワークの一意のIDを定義するゼロより大きい整数.メインネットワークはID 1です.あなたが主なネットワークと異なっているあなた自身のカスタムネットワークIDを供給するならば、あなたのノードは他のノードに接続していなくて、私設ネットワークを形成しません..あなたはhttps://chainid.networkでEthereumネットワークのコミュニティ実行レジストリを見つけることができます.
HomesteadBlock:HomesteadはEthereumプロトコルの最初の公式安定版です.このリリースを使用する場合は、属性を0に設定します.
難易度:ブロックを生成するの難しさを決定します.
ガス制限:単位あたりの現在のネットワーク全体のガス消費限度を示します.ガスはEthereumネットワーク上のトランザクション手数料を支払うために使用される燃料です.
Alloc :ネットワークの正のバランスでいくつかのアカウントを開始するために使用されます.この場合、我々はどんなアカウントも定義しません.
データベースを起動する
BootNodeは、ブロックチェインが開始されたときに生成される最初のノードです.データベースを最初のノード実行に開始するには、次の手順に従います.
geth init --datadir node1 genesis.json
フォルダnode 1は、ブートノードにデータベースを作成します.端末の結果は次のようになります.
ディレクトリの結果は次のようになります.
スタートノード
geth --datadir node1 --networkid 1234 --http --allow-insecure-unlock --nodiscover
このコマンドはID 1234でプライベートネットワークのノードを起動します.旗-- HTTPはウェブアプリケーションアクセスを可能にするのに用いられます、我々はこのプライベートネットワークでMetamaskを接続するために次のポストでこれを使用します.フラグ-- insecure unlockを許可すると、Webアプリケーションなしで実行を実行できるようになります.フラグ-- noDiscoverは、ノードが自動的に他に接続しようとするのを防ぐのに用いられます.端末の結果は次のようになります.
完了!プライベートネットワークのブロックは実行中です.これを確かめるテストをしましょう.同じフォルダの他のターミナルウィンドウを開き、以下のコマンドを実行します.
geth attach node1/geth.ipc
これは対話的なJavaScript端末を開き、このノードにいくつかのタスクを実行します.端末の結果は次のようになります.ノードの情報を見るには、次のコマンドを実行します.
admin.nodeInfo
このコマンドはこのノードに関するすべての情報を示し、ノードがアクティブであることを確認できます.このウィンドウを先にテストしておく.メンバーピアの追加
第2のノードを我々のblockchainに始めましょう.以下のコマンドを実行します.
geth init --datadir node2 genesis.json
geth --datadir node2 --networkid 1234 --port 30304
コマンドは、いくつかの小さな違いがある前のものと非常によく似ています.geth attach node2/geth.ipc
admin.nodeInfo
結果は次のようになります.接続ピア
さて、ブロックチェーン内の2つのノード間のピアツーピア接続を作成しましょう.
第2ノードのNodeInfoからENODEをコピーし、次のコマンドを実行します.
admin.addPeer("enode://431fa50a676b35dd750a68656cf8a822edb2c083ddf2359b6c246216dfbef0f1dad517b53b9ba0a35f4d2f1d44274ae4fc4b2bdf69e774af892b097d082eff1c@127.0.0.1:30304?discport=0")
そして、すべてのピア接続が両方のノードに実行されるのを見ます.admin.peers
どのノードも1つのピアを接続しなければならない.ネットワークの第2のノードを参照している30304ポートに注意してください.結果は次のようになります.
完了!あなたのブロックは、複数のノードのruningと接続で作成されます.アカウントを作成して、両方のノードで更新されたデータを見るためにマイニングを開始しましょう.
マイニング
私のブロックには、基本的なアカウントが必要です.これをしましょう.最初のノードのJavaScriptターミナルでは、新しいアカウントを作成し、このアカウントに必要なパスワードを定義するコマンドを実行します.
personal.newAccount()
アカウント・バランスの実行を見ることができます.
eth.getBalance("0xbd3156b239e2bb8d073406e67eba59a651be18f0")
さて、最初のノードでマイニングを開始できます.ブロックの現在の高さを参照するコマンドを実行する前に、ブロックがまだ割り当てられていないので、0にする必要があります.eth.blockNumber
マイニングを開始し、数秒後に更新されたブロックを参照して停止します.miner.start() // Start Mining
miner.stop() // Stop Mining
アカウントのブロックと残高を再度確認します.いくつかのブロックが作成されている必要がありますし、値は報酬として獲得されている必要があります.また、いくつかの秒後に2番目のノードのJavaScriptターミナルでブロック番号を確認することができます値は、最初のノードで示されている同じでなければなりません.これは、実際には、ノードが接続され、更新されることを意味します.
ブロック鎖構造
次の手順
他のコマンドを実行して、両方のノードでテストを行うことができます.すべてのgeth CLIオプションhereを見てください.探検Geth Documentation.
続行するには、あなたのブロックチェーンのプライベートネットワークにMetamaskし、いくつかのトランザクションを実行します.
リファレンス
Geth Documentation
Ethereum
Reference
この問題について(Ethereumを使用して独自のプライベートブロックを作成する), 我々は、より多くの情報をここで見つけました https://dev.to/jeffersonxavier/create-your-own-private-blockchain-using-ethereum-52o5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol