主页 > 最新imtoken官网下载链接 > 使用树莓派探索以太坊Part 1:环境搭建
使用树莓派探索以太坊Part 1:环境搭建
在本系列文章的第一部分,我们将在 Raspberry Pi 3 Model B 上安装并运行以太坊区块链客户端。
毫无疑问,区块链绝对是当下的热门话题。 这在很大程度上是因为比特币和其他加密货币让许多人一夜暴富。 然而,区块链的应用并不局限于加密货币领域。 考虑到其去中心化和不可篡改的特点,区块链技术也可以用于物联网应用。 因此,除了加密货币和安全交易之外,以太坊平台还可以提供分布式计算平台。
在本文中,我们将分析以太坊架构,了解其核心思想和功能组件,最后在树莓派上安装相应的客户端软件。 需要声明的是,我不打算用它来挖矿,因为挖矿需要强大的GPU支持,但是树莓派只能搭建一个简单的实验沙箱,我们只是验证区块链技术可以应用到嵌入式平台。
以太坊 101
事不宜迟,这里是示例以太坊智能合约的源代码(来自 ethereum.org):
contract mortal {
/* Define variable owner of the typeaddress */
address owner;
/* This function is executed atinitialization and sets the owner of the contract */
function mortal() { owner = msg.sender; }
/* Function to recover the funds on thecontract */
function kill() { if (msg.sender == owner)selfdestruct(owner); }
}
contract greeter is mortal {
/* Define variable greeting of the typestring */
string greeting;
/* This runs when the contract is executed*/
function greeter(string _greeting) public {
greeting = _greeting;
}
/* Main function */
function greet() constant returns (string){
return greeting;
}
}
区块链是一种分布式账本系统,通常通过对等网络进行管理,并且随着记录和区块成功添加到区块链网络而增长。 一个区块通常包含交易数据和时间戳,并通过哈希算法进行安全加密。 数据成功提交到区块链后,将不再修改。
以太坊平台有自己的加密货币,我们称之为以太币。 但它也为基于区块链技术的智能合约创建了一个去中心化平台。 智能合约对象中包含的代码函数可以在区块链中“生存”并与其他合约交互以做出决策和存储数据,或者将以太币发送给其他人。
智能合约以称为 Solidity(基于 JavaScript)的编程语言实现。 Solidity 编译器可以将智能合约编译成字节码(类似于 JavaScript、Python、Java 或 Android),然后使用以太坊虚拟机(EVM)执行。 需要注意的是以太坊交易信息获取,智能合约中的交易是有成本的以太坊交易信息获取,这个我们后面会讲到。
目前市场上有几种不同的以太坊客户端(基于Geth,用Go语言开发),有的可以挖以太坊,有的是独立的挖矿软件。 除了主要的以太坊区块链网络和矿池外,还有很多实验和测试网络,当然您也可以创建自己的私有区块链网络。
安装 Geth
假设我们现在已经安装了 Raspbian,我们需要将安装的软件包软件更新到最新版本:
$ sudo apt-get update
$ sudo apt-get dist-upgrade
当我第一次尝试编译 Ethereum 客户端时,内存不足,为这项内存密集型任务释放 RAM 的最佳方法是减少分配给 GPU 的内存量。 如果不需要图形桌面,可以使用命令行界面引导系统。
$ sudo raspi-config
接下来,安装相应的依赖项:
$ sudo apt-get install git golang libgmp3-dev
接下来从GitHub上获取Geth的官方源码(Go语言实现的以太坊官方源码),编译代码并将可执行程序复制到/usr/local/bin/。
$ mkdir src
$ cdsrc
$ gitclone -b release/1.7 https://github.com/ethereum/go-ethereum.git
$ cdgo-ethereum
$ make
$ sudo cp build/bin/geth /usr/local/bin/
创建一个帐户并进行测试
使用 Geth 创建一个新帐户:
$ geth account new
该程序然后创建一组新的加密密钥并使用密码来保护私钥的安全。 需要注意的是,如果您想使用该账户进行挖矿和交易,您需要确保您已经备份了您的密钥,并防止您的私钥被他人获取。
现在,我们需要运行节点。
$ geth --syncmode light --cache 64 --maxpeers 12
如果我们不带任何参数运行Geth,它会启动一个节点并尝试与整个公链主网同步数据,数据大小在50GB以上,并且会不断增长,因此不适合嵌入式计算机。 因此,我们将以轻量级同步模式运行节点,该模式仅获取块头信息。
按 CTRL+C 退出节点后,我们可以让它在设备启动时作为服务运行:
$ sudo vi /etc/systemd/system/geth@.service
然后添加以下代码:
[Unit]
Description=Ethereumdaemon
Requires=network.target
[Service]
Type=simple
User=%I
ExecStart=/usr/local/bin/geth--syncmode light --cache 64 --maxpeers 12
Restart=on-failure
[Install]
WantedBy=multi-user.target
保存文件,以下命令将允许以太坊节点以“pi”用户身份运行:
$ sudo systemctl enable geth@pi.service
$ sudo systemctl start geth@pi.service
接下来,我们可以使用以下命令绑定节点:
$ geth attach
这样我们就得到了一个交互式 JavaScript 控制台,我们可以在其中调用任何函数,例如:
>eth.accounts
该命令可以输出当前账户列表:
或者获取有关连接节点的信息:
>admin.peers
需要注意的是,轻量级客户端协议尚处于开发阶段,部分实验性功能可能无法完美支持。
总结
至此,我们已经安装了客户端软件,成功创建了账户,并开通了一个可通信的节点。 接下来,在本系列文章的第二部分,我们将搭建私有区块链网络,进行实际的交易活动。 请稍等,我们马上就到!
* 参考来源:rs-online,FB编辑Alpha_h4ck编译,转载请注明来自FreeBuf.COM