エーテル坊swarmの構築と使用


エーテル坊の各ブロックには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
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": {     }
}