阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

利用树莓派探索以太坊第一部分:环境搭建

452次阅读
没有评论

共计 2930 个字符,预计需要花费 8 分钟才能阅读完成。

利用树莓派探索以太坊第一部分:环境搭建

在本系列文章的第一部分中,我们将在一台树莓派 Pi 3 Model B 上安装并运行一个以太坊区块链客户端。

毫无疑问,区块链绝对是当前的热点。之所以会这样,很大程度上是因为比特币以及其他加密货币让很多人一夜暴富。但是,区块链的应用并不仅限于加密货币领域,考虑到其去中心化以及防篡改等特性,区块链技术还可以用到 IoT 应用中。因此,除了加密货币和安全交易之外,以太坊平台还可以提供一种分布式的计算平台。

在这篇文章中,我们将会对以太坊架构进行分析,并了解其核心思想和功能组件,最后在树莓派上安装相应的客户端软件。需要声明的是,我并不打算用它来挖矿,因为挖矿需要强大的 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

当我第一次尝试编译以太坊客户端时,出现了内存不足的情况,为了将 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 以上,并且还会继续增长,因此不适用于嵌入式计算机。所以说,我们准备以轻量级同步模式运行该节点,这种模式只会获取区块 Header 信息。

按下 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

* 参考来源:rs-online

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2930字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7992756
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...