以太坊本土分布式内容存储-在以太坊测试网络试运行Swarm

月亮🌛   |     |   827 次阅读

作者:Mitchell Cash
原文链接:https://mitchellcash.com/2016/12/29/getting-started-with-ethereum-s-swarm-on-the-testnet.html

在以太坊测试网络试运行Swarm

*本文主要关注 Linux Ubuntu and Debian *

什么是Swarm?

swarm是一个分布式存储平台以及内容分发服务,是一个以太坊Web3栈的一个本土服务层。swarm的最主要目标是为以太坊公共记录,尤其是Dapp代码与数据以及区块数据提供一个足够去中心化以及足够重复的存储。从经济学角度来讲,它将会激励一部分参与者集中他们的存储以及带宽资源来为其他网络成员提供以上的服务。

从终端用户的角度俩看,swarm与WWW(全球互联网)并无很大区别,除了上传不是到某一个特定的服务器以外。swarm采用点对点的存储方式,以达到耐DDOS攻击、零停机、容错、耐屏蔽以及自我维持的目的。自我维持之所以得以实现是因为swarm内置的点对点账户系统将会便捷的允许资源与支付之间的交换。设计上swarm与以太坊ÐΞVp2p多协议网络层、以太坊区块链域名方案、服务支付以及内容可用险(最后一项会在2017年第二季在概念证明0.4代码中实现)深度兼容。

免责声明

撰写本文之时,swarm仍然处于alpha的状态,如要使用需对相关的风险谨慎考虑。目前代码是概念证明0.2,有关未来发展相关的信息请参见swarm项目发展地图。

https://github.com/ethereum/go-ethereum/projects/6

先决条件

安装Go编程语言以及Git

$ sudo apt-get install golang git

创建一个用来放置你工作空间的目录,设置GOPATH环境变量使其指向这个位置。

$ mkdir ~/go$ export GOPATH="$HOME/go"$ echo 'export GOPATH="$HOME/go"' >> ~/.profile

安装

下载go-ethereum源代码

$ mkdir -p $GOPATH/src/github.com/ethereum$ cd $GOPATH/src/github.com/ethereum$ git clone https://github.com/ethereum/go-ethereum$ cd go-ethereum$ git checkout master$ go get github.com/ethereum/go-ethereum

编译go-ethereum客服端geth以及swarm的daemon swarm

$ go install -v ./cmd/geth$ go install -v ./cmd/swarm

确认swarm已经安装

$ $GOPATH/bin/swarm version

准备

创建一个空目录用来存储数据

$ mkdir -p $HOME/Ethereum$ DATADIR=$HOME/Ethereum

用这个目录获取一个新的以太坊测试网络账户

$ $GOPATH/bin/geth --testnet --datadir $DATADIR account new

这时会要求你设置一个密码。密码一旦设置,系统会输出一个相应的地址,我们会将其用做swarm节点的基础地址。这个例子中,我们会假设密码是SECRETPASSWORD,那么输出的地址就是:

$ Address: {df95eefa1630da7cfb7fbc14cbdc5c5c724e706b}

连接

运行一个连上Ropsten测试网络的geth节点

$ nohup $GOPATH/bin/geth --datadir $DATADIR \
                         --unlock 0 \
                         --password <(echo -n "SECRETPASSWORD") \
                         --testnet \
                         --fast \
                         2>> $HOME/Desktop/ethereum/testnet/geth.log &

通过把swarm连到geth节点来发射

$ $GOPATH/bin/swarm --bzzaccount df95eefa1630da7cfb7fbc14cbdc5c5c724e706b \
                    --datadir $DATADIR/testnet \
                    --keystore $DATADIR/testnet/keystore \
                    --ethapi $DATADIR/testnet/geth.ipc \
                    2>> $DATADIR/testnet/swarm.log < <(echo -n "SECRETPASSWORD") &

测试

你现在已经在运行swarm了,为什么不试试访问内容呢?URL可能跟你已经习惯的不大一样,最流行的URL方案是bzz。

一些网站:
http://localhost:8500/bzz:/theswarm.test
http://localhost:8500/bzz:/album.test
http://localhost:8500/bzz:/1b5d887cea699d18560ae6dcaf06676f5064f630978b8031d9beb6fbddd82a82

升级

停止运行的geth或者swarm服务

$ killall -SIGINT $GOPATH/bin/geth $GOPATH/bin/swarm

下载最近源代码并重新编译

$ cd $GOPATH/src/github.com/ethereum/go-ethereum
$ git checkout master
$ git pull
$ go install -v ./cmd/geth
$ go install -v ./cmd/swarm
 
0 人喜欢