エーテル坊swarmの構築と使用
3616 ワード
エーテル坊の各ブロックにはgas制限があり、各ブロックに収容できる取引は限られており、大容量ファイルを格納することはできません.swarmはipfsと同様にクラウドストレージを提供し、格納するコンテンツをswarm上に配置し、格納されたコンテンツhash(コンテンツが変更されるとハッシュが変化することを表す)を得、hashをブロックチェーンに格納して証明を生成する.
----------------------------------------------------------------------------------------------------------------------------------------
具体的には、公式ドキュメント
構築参考:この記事
web3 api:here
---------------------------------------------------------------------------------------------------------------------------------------
一、ネットワークの構築
ここではswarmを使用してプライベートチェーンを接続するつもりですが、必要な環境はgethで、gethとswarmを西栄pathに追加します.
swarm versionを入力して、インストールに成功したかどうかを確認します.
1、まずアカウントを生成し、swarmはこのアカウントを使用する
テスト項目ディレクトリを作成するには、次の手順に従います.
mkdir test_swarm
cd test_swarm
geth --datadir ./account new
2、gethを起動する
初期化(genesis.jsonは創世ファイルで、文章は最後にあります)
geth init genesis.json --datadir ./
開始:
geth --datadir ./ --nodiscover --rpc --rpcapi "net,eth,db,web"--networkid 7788 console
3、swarmとgethを接続する:
swarm --bzzaccount 0x1da7eda1fc9e2a5a51e74ed55ce0827dab4be44a --datadir/home/zhj/project/test_chain/test_swarm/--swap-api/home/zhj/project/test_chain/test_swarm/geth.ipc --nodiscover
ここでdatadirはswarm上のデータがローカルに格納、swap-apiはgethに接続する必要がある.ipc,nodiscoverは他のノードへの接続を自発的に発見せず,手動でノードを追加することができる(一度接続すると他のノードのアドレスが保存され,次回起動時に自動的に接続を試みる)
これで起動し、コマンドラインを使用してデータのアップロードとダウンロードを試み、公式ドキュメントを参照することができます.この主な紹介はweb 3を使用してインタラクティブなので、コマンドラインの使用を紹介しません.
二、web 3-swarm apiの使用
参考ドキュメントは前にあるか、この中国語の翻訳ドキュメントです.
nodejs環境の初期化:npm init
次に依存をダウンロードします.
npm install web3
npm install web3-bzz
Web 3とswarmのインタラクションを使用するコードを次に示します.
app.js
最初の2行は、swarmを呼び出すパケットであり、ローカルswarmに接続されます.
次にjsonタイプを作成し、アップロードとダウンロード機能をテストするのは、このjsonをswarmに転送してからダウンロードすることです.
node appを実行する.js:
2行目はアップロードに成功した後に返されるhash値で、3行目はダウンロード前にアップロードされたコンテンツで、対比コンテンツは同じで、成功を説明します.
詳細については、公式ドキュメントを参照してください.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
genesis.json:
----------------------------------------------------------------------------------------------------------------------------------------
具体的には、公式ドキュメント
構築参考:この記事
web3 api:here
---------------------------------------------------------------------------------------------------------------------------------------
一、ネットワークの構築
ここではswarmを使用してプライベートチェーンを接続するつもりですが、必要な環境はgethで、gethとswarmを西栄pathに追加します.
swarm versionを入力して、インストールに成功したかどうかを確認します.
1、まずアカウントを生成し、swarmはこのアカウントを使用する
テスト項目ディレクトリを作成するには、次の手順に従います.
mkdir test_swarm
cd test_swarm
geth --datadir ./account new
2、gethを起動する
初期化(genesis.jsonは創世ファイルで、文章は最後にあります)
geth init genesis.json --datadir ./
開始:
geth --datadir ./ --nodiscover --rpc --rpcapi "net,eth,db,web"--networkid 7788 console
3、swarmとgethを接続する:
swarm --bzzaccount 0x1da7eda1fc9e2a5a51e74ed55ce0827dab4be44a --datadir/home/zhj/project/test_chain/test_swarm/--swap-api/home/zhj/project/test_chain/test_swarm/geth.ipc --nodiscover
ここでdatadirはswarm上のデータがローカルに格納、swap-apiはgethに接続する必要がある.ipc,nodiscoverは他のノードへの接続を自発的に発見せず,手動でノードを追加することができる(一度接続すると他のノードのアドレスが保存され,次回起動時に自動的に接続を試みる)
これで起動し、コマンドラインを使用してデータのアップロードとダウンロードを試み、公式ドキュメントを参照することができます.この主な紹介はweb 3を使用してインタラクティブなので、コマンドラインの使用を紹介しません.
二、web 3-swarm apiの使用
参考ドキュメントは前にあるか、この中国語の翻訳ドキュメントです.
nodejs環境の初期化:npm init
次に依存をダウンロードします.
npm install web3
npm install web3-bzz
Web 3とswarmのインタラクションを使用するコードを次に示します.
app.js
var Bzz = require('web3-bzz')
var bzz = new Bzz(Bzz.givenProvider || 'http://localhost:8500')
let User = {
"name": "z",
"age": 11,
"major": "cs"
};
buff = Buffer.from(JSON.stringify(User));
bzz.upload(buff).then(function(hash) {
console.log("uploaded a string. hash: ", hash)
bzz.download(hash).then(function(buffer){
console.log('downloaded string: ', String.fromCharCode.apply(null, buffer))
})
})
最初の2行は、swarmを呼び出すパケットであり、ローカルswarmに接続されます.
次にjsonタイプを作成し、アップロードとダウンロード機能をテストするのは、このjsonをswarmに転送してからダウンロードすることです.
node appを実行する.js:
zhj@zhj-HP:~/project/test_swarm/web3test$ node app.js
uploaded a string. hash: 195ed46aa020ee28c1b3f2ec8d69a5b78ae4d12c66bece1fa56d89fa1ec3d892
downloaded string: {"name":"z","age":11,"major":"cs"}
2行目はアップロードに成功した後に返されるhash値で、3行目はダウンロード前にアップロードされたコンテンツで、対比コンテンツは同じで、成功を説明します.
詳細については、公式ドキュメントを参照してください.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
genesis.json:
{
"config":{
"chainId":7788,
"homesteadBlock":0,
"eip155Block":0,
"eip158Block":0
},
"nonce": "0x0000000000000042",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0x80000000",
"difficulty": "0x4ffff",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": { }
}