イーサリアムプライベートネットワーク–独自のイーサリアムブロックチェーンを作成してください!



このイーサリアムプライベートネットワークのチュートリアルでは、独自のイーサリアムブロックチェーンを作成する方法と、2つのアカウント間でトランザクションを行う方法を学習します。

前に トリュフイーサリアムチュートリアル 、Truffle Suiteについて学び、 イーサリアム DApp。複雑なイーサリアムアプリケーションを開発するには、プライベートネットワークで実行して、デプロイする前にどのように機能するかを確認する必要があります。したがって、このイーサリアムプライベートネットワークチュートリアルでは、を作成する方法を学びます プライベートイーサリアムネットワーク 2つのアカウント間でトランザクションを行う方法。

イーサリアム開発に興味がありますか?ライブをチェックしてください 。





イーサリアムプライベートネットワークチュートリアル

これらは、このチュートリアルで取り上げるトピックです。

イーサリアムプライベートネットワークとは何ですか?

イーサリアムプライベートネットワークは、メインイーサリアムネットワークから分離された完全にプライベートなブロックチェーンです。イーサリアムプライベートネットワークは、主にブロックチェーンの読み取り権限を制限するために組織によって作成されています。適切な権限を持つノードのみがこのブロックチェーンにアクセスできます。このネットワーク内のノードはメインネットワークノードに接続されておらず、その到達範囲はこのプライベートブロックチェーンのみに制限されています。



プライベートおよびパブリック-Ethereumプライベートネットワークチュートリアル-Edureka

イーサリアムプライベートネットワークが使用されるのはなぜですか?

イーサリアムプライベートネットワークは、組織外の人々に表示されるべきではないプライベートデータを保存するために組織によって使用されます。イーサリアムプライベートネットワークは、誰かがパブリックテストネットワークを使用したくない場合に、ブロックチェーンのテストと実験にも使用されます。

イーサリアムプライベートネットワークの機能

前のセクションで述べたように、イーサリアムプライベートネットワークはテスト目的で使用されます。しかし、すでに公開されているテストネットワークが利用可能であるのに、なぜ誰かが新しいネットワークを作成するのに苦労するのでしょうか。イーサリアムプライベートネットワークには、以下に示す独自の機能セットがあります。



  • 分散データベースとして機能します
  • イーサリアムプライベートネットワークのブロックチェーンには、プライベートデータを含めることができます(ネットワークがパブリックではないため)
  • アクセスは許可ベースにすることができます
  • 取引は無料です
  • アカウントはエーテルで割り当てることができます仮想エーテルを購入する必要さえない私たち自身によって

次に、このイーサリアムプライベートネットワークチュートリアルの実践的な部分に取り掛かりましょう。

Ubuntuへのイーサリアムのインストール

イーサリアムプライベートネットワークを作成するには、最初にイーサリアムをシステムにインストールする必要があります。イーサリアムプライベートネットワークチュートリアルのこのセクションでは、Ubuntuにイーサリアムをインストールする方法を学びます。

イーサリアムをインストールするには、ターミナルで次のコマンドを実行します

$ sudo apt-get install software-properties-common $ sudo add-apt-repository -y ppa:ethereum / ethereum $ sudo apt-get update $ sudo apt-get install ethereum

完了!これにより、システムにイーサリアムがインストールされます。

プライベートネットワークの作成から始めましょう。

デモ:イーサリアムプライベートネットワークの作成とトランザクションの作成

このイーサリアムプライベートネットワークチュートリアルでは、イーサリアムを送信しますあるアカウントから別のアカウントへと、アカウントが必要です。ブロックチェーンのアカウントを作成する方法を見てみましょう。

イーサリアムプライベートネットワークのアカウントの作成

新しいアカウントを作成する前に、職場用の新しいディレクトリを作成しましょう。これを行うには、以下のコマンドを参照してください。

$ mkdir private-ethereum $ cd private-ethereum

取引を行うには、受信者と送信者の少なくとも2つのアカウントが必要です。

2つのアカウントを作成するには、次のコマンドを2回実行します。

$ geth --datadir ./datadir account new

入力します パスフレーズ 求められたときにアカウントごとに。このパスフレーズを忘れないでください!

これらのコマンドが正常に実行されると、2つのアカウントが作成され、アカウントアドレスが画面に表示されます。

これらをさらに使用するため、これらのアドレスをどこかに保存します。

ジェネシスファイルの作成

Genesisファイルには、ブロックチェーンを定義するプロパティが含まれています。ジェネシスファイルはブロックチェーンの開始点であるため、ブロックチェーンを作成するにはジェネシスファイルを作成する必要があります。それでは、創世記を作成しましょうファイル。

まず、という名前のファイルを作成します Genesis.json

$ nano Genesis.json

次に、次のコードをコピーしてそのファイルに貼り付けます。

{'config':{'chainId':2019、 'homesteadBlock':0、 'eip155Block':0、 'eip158Block':0、 'byzantiumBlock':0}、 'difficulty': '400'、 'gasLimit': ' 2000000 '、' alloc ':{' 82c440bba462220c9b54600e584373014706c177 ':{' balance ':' 100000000000000000000000 '}、' 9db5b590fdecc10cdb04b85a3503e94e61b207ca ':{' balance ':' 120000000000000000000000 '}}}

注意: 上記のコードで、下のアドレスを置き換えます alloc 前の手順で作成したアカウントのアドレスを含むセクション。

保存して終了します。

データベースをテストする方法

Genesisファイルの内容を簡単に説明しましょう。

chainId –これは、ブロックチェーンを区別するために使用されるチェーン識別番号です。
homesteadBlock、eip155Block、eip158Block、byzantiumBlock –これらのプロパティは、チェーンのフォークとバージョン管理に関連しています。チュートリアルではこれらは必要ないので、0に設定しましょう。
困難 –この数値は、ブロックのマイニングがどれほど難しいかを決定します。プライベートネットワークの場合、ブロックをすばやくマイニングできるため、数値を低く設定すると、トランザクションが高速になります。
gasLimit –この数値は、各ブロックで使用できるガスの総量です。ネットワークが制限に達しないようにするため、これを高く設定しました。
alloc –この部分は、作成済みのアカウントにエーテルを割り当てるために使用されます。

Genesisファイルの準備ができました。それでは、ブロックチェーンを開始しましょう。

データディレクトリのインスタンス化

ブロックチェーンを開始する前に、データディレクトリをインスタンス化する必要があります。データディレクトリは、ブロックチェーンに関連するデータが保存されるディレクトリです。データディレクトリをインスタンス化するには、次のコマンドを実行します。

$ geth --datadir ./myDataDir init ./genesis.json

インスタンス化が成功すると、次の出力が表示されます。

データディレクトリがインスタンス化されたので、ブロックチェーンを開始できます。

イーサリアムプライベートブロックチェーンの開始

ブロックチェーンを開始するには、次のコマンドを実行します。

$ geth --datadir ./myDataDir --networkid 1114 console 2 >> Eth.log

完了!プライベートイーサリアムブロックチェーンが稼働しています。

上記のコマンドでは、すべてのログをという別のファイルで送信しています。 Eth.log 。見つからない場合、Gethは自動的に新しいファイルを作成します。

このコードの出力は次のようになります。

今、私たちは ゲス コンソール ここで、ブロックチェーンのコマンドを実行できます。

ログを読む

前のセクションで、ログを別のファイルに保存していることを説明しました。このセクションでは、このファイルからログを読み取る方法を説明します。

別のターミナルからログを読み取るので、最初に新しいターミナルを開きます。最初、に切り替えます プライベートイーサリアム ディレクトリを作成し、次のコマンドを実行してログを読み取ります。

$ tail -f Eth.log

これで、ターミナルにログが表示されます。これらのログは、ブロックチェーンに何らかのアクティビティがあるたびに動的に更新されます。

プライベートネットワークへのアカウントのインポート

取引を行うために2つのアカウントを作成したことを覚えているかもしれません。ただし、これらのアカウントはネットワークに追加しませんでした。したがって、イーサリアムプライベートネットワークチュートリアルのこのセクションでは、アカウントをインポートする方法を説明します。

アカウントを作成すると、アカウントのすべての詳細が UTC ファイル アカウント作成時に言及されたディレクトリ(パス: ./datadir/keystore )。アカウントをインポートするには、これらのファイルをコピーして貼り付ける必要があります キーストア データディレクトリの下のディレクトリ(道: ./myDataDir/keystore

それで全部です!アカウントがインポートされます。簡単ですね。インポートを確認するには、次のコマンドを実行します。 ゲス コンソール。

> eth.accounts

これにより、利用可能なすべてのアカウントのリストが表示されます。

これらのアカウントの残高を確認するには、次のコマンドを使用します。

> web3.fromWei(eth.getBalance()、 'ether')

取引に必要なすべての準備が整いました。なぜ待つのですか?やってみましょう!

__init__とは

取引を行う

このイーサリアムプライベートネットワークチュートリアルでは、いくつかのイーサリアムを送信しますあるアカウントから別のアカウントへ。

エーテルを送信するための構文は次のとおりです。

> eth.sendTransaction({from:” address”、to:” address”、value:web3.toWei(amount、 'ether')})

次のコマンドを使用して、アカウント1からアカウント2に1000個のエーテルを送信します。

> eth.sendTransaction({from:eth.accounts [0]、to:eth.accounts [1]、value:web3.toWei(1000、 'ether')})

うまくいきませんでしたか?心配しないでください。私もうまくいきませんでした。これは、アカウントがデフォルトでロックされており、取引が許可されていないためです。

したがって、最初に、送信者アカウントのロックを解除する必要があります。アカウントの作成時に使用したパスフレーズを覚えていますか?アカウントのロックを解除するにはそれを使用する必要があるため、そうする必要があります。次のコマンドでアカウントのロックを解除します。

personal.unlockAccount(eth.accounts [0]、 '')

今度はエーテルを送ります正常に:

> eth.sendTransaction({from:eth.accounts [0]、to:eth.accounts [1]、value:web3.toWei(1000、 'ether')})

これにより、トランザクションIDが返されます。

完了!取引が正常に完了しました。

取引を確認するために、両方の口座の残高を確認しましょう。

> web3.fromWei(eth.getBalance( '0x82c440bba462220c9b54600e584373014706c177')、 'ether')
> web3.fromWei(eth.getBalance( '0x9db5b590fdecc10cdb04b85a3503e94e61b207ca')、 'ether')

わーい! 1000個のエーテルが見えますあるアカウントから別のアカウントに送信されました!

おめでとう!イーサリアムプライベートネットワークを作成し、取引を行いました。このイーサリアムプライベートネットワークのチュートリアルが参考になり、イーサリアムプライベートネットワークについて理解するのに役立つことを願っています。次に、新しく作成したプライベートネットワークを試してみてください。

質問がありますか?投稿してください 折り返しご連絡いたします。

Blockchainを学び、Blockchain Technologiesでキャリアを築きたい場合は、 インストラクター主導のライブトレーニングと実際のプロジェクト経験が付属しています。このトレーニングは、Blockchainとは何かを徹底的に理解し、主題をマスターするのに役立ちます。