专栏首页区块链大本营把700元的单片机改造成以太坊节点, 9步get起新技能!

把700元的单片机改造成以太坊节点, 9步get起新技能!

作者 | medium 编译 | 火火酱

责编 | Carol

出品 | 区块链大本营(blockchain_camp)

众所周知,以太坊,是一个可以运行智能合约的去中心化平台。

智能合约,是指完全按照编程方式运行的应用程序,它排除了任何停机、审查、欺诈或第三方干扰的可能性。

以太坊以区块链技术为核心。简而言之,以太坊是一个全球网络,旨在依靠多台计算机或节点的处理能力和存储资源,以去中心化的方式来处理指令

通过运行节点,我们能够保持网络的去中心化以及对等节点之间的信任。这是一种能够直接参与以太坊网络并且掌握一些尖端技术的方法。真的超级有趣!

我们为什么要在Raspberry Pi上 运行以太坊节点?

Raspberry Pi非常适合运行以太坊节点,因为在我们决定人为停止它之前,它都可以自行运行。

当然,我们也可以在计算机上运行以太坊节点,但是这样会产生相应的计算和存储成本。所以我宁愿让节点在专用的硬件上运行,然后用笔记本电脑来看电影。而且,如果你一不小心就烧掉一个Raspberry Pi的话,它的成本可要远远低于烧掉一个笔记本电脑

我们还可以通过云服务在虚拟机实例上运行以太坊节点,但是这将会增加巨大的成本。谁都不想为这把自己的口袋掏空吧?

此外,Raspberry Pi还可用于创建实验用的简单沙盘,这也证明了利用嵌入式平台部署区块链技术和进一步集成物联网的可能性。

如何在Raspberry Pi上运行以太坊节点?

现在,为了把环境搭建起来,我们需要一些工具。因此,让我们先了解一下需要准备些什么吧:

  • 具有优质的外壳和散热器(冷却风扇)的Raspberry Pi 3B +,可防止过热导致的关机现象;
  • 32G + MicroSD卡;
  • HDMI线和显示器;
  • 键盘和鼠标(这还用说吗!);

我们假设Raspberry Pi已经安装了Raspbian OS。如果没有,也不要担心,你可以按照以下链接完成操作:

https://www.raspberrypi.org/downloads/raspbian/

一旦完成了OS操作系统的基本设置,我们就可以开始了!让我们继续执行以下步骤:

步骤1:首先将软件包更新为最新版本

命令如下:

$ sudo apt-get update
$ sudo apt-get dist-upgrade

步骤2:为以太坊客户端(又称Geth)释放内存

为内存密集型任务释放RAM的一种好方法就是减少分配给GPU的内存。另外,如果不需要图形界面,可以将系统配置为仅引导至命令行。

$ sudo raspi-config

1. 引导至命令行:

  • 3 → Boot
  • B1 → Desktop / CLI
  • B1 → Console

2. 减少分配给GPU的内存:

  • 7 → Advanced
  • A3 → Memory Split
  • 32 (MB)

3.最后,重新启动。

接下来,我们将安装软件包依赖项。

步骤3:我们需要先安装Golang,然后再安装Geth。这一步可以通过以下命令来完成

$ sudo apt-get install git golang libgmp3-dev

安装的Golang版本会过时,因此我们需要使用Golang版本管理器“ g”将其版本升级到1.10以上。

参考链接: https://github.com/stefanmaric/g

命令:

$ curl -sSL https://git.io/g-install | bash
$ g install <version> (above 1.10 ex. 1.11.2)

步骤4:安装Geth

我们会选择从源代码构建Geth,而不是使用二进制文件,因为从源代码构建能够有大量的自定义选项。

例如,我们可以添加一些二进制文件中没有提供的功能,为硬件(Raspberry Pi)提供安装所需的特定信息,然后将其安装在需要的位置。

另外,我们可以安装最新版本并及时更新,无论是安全补丁更新还是新功能更新。

命令如下:

$ mkdir src$ cd src$ git clone -b release/1.8 https://github.com/Ethereum/go-Ethereum.git
(为了工作更为高效,release number发布码应该要是最新版本.)
$ cd go-Ethereum
$ make
$ sudo cp build/bin/geth /usr/local/bin/

步骤5:创建帐户

$ geth account new

这将生成一组新的加密密钥,并使用密码保护私钥。

需要注意的是,如果我们使用这个帐户来挖掘加密货币并进行有意义的交易的话,那么我们要确保备份成功密钥,以防止私钥泄露。

步骤6:以light模式同步以太坊主网

$ geth — syncmode light — cache 64 — maxpeers 12

如果在没有任何参数的情况下运行Geth,它将启动一个节点并尝试同步整个公共Mainnet主网区块链,这在大小超过50GB并不断增长的情况下,在嵌入式计算机上来说或许不是一个好主意。

因此,我们改为以light同步模式启动节点。light同步模式仅获取当前状态,因此验证元素时需要向full节点发起相应的请求。

light地址:

https://github.com/ethereum/wiki/wiki/Light-client-protocol

如果想要停止执行,请按Ctrl + C

如果想要在后台运行,只需使用nohup即可。

$ nohup geth — syncmode light — cache 64 — maxpeers 12 &

同步过程将会在后台运行。要查看日志的话,使用任何代码编辑器(例如Vim或Nano)打开文件nohup.out即可。

日志显示为:

步骤7:JavaScript控制台

可通过 Geth-attach命令使用Geth Javascript控制台。

检查已同步的最新区块:

>>> eth.getBlockNumber ( console.log )

输出:

列出当前账户:

>>> eth.accounts

列出对等点:

>>> admin.peers

输出:

步骤8:设置RPC

打开JavaScript控制台,然后运行以下命令。

>>> admin.startRPC ( ‘0.0.0.0’, 8545 )

输出:

句法:admin.startRPC ( ‘ IP address ’, PORT number )

RPC将会开始在该IP和PORT上运行

如此一来,我们可以使用Postman进行简单的API调用,也可以使用任何编程语言进行任何REST API调用,并通过Ethereum Management API提取数据。

步骤9:在以太坊区块链上发送交易

好了,这一步才是真正有趣的。但是,这要花费一些以太币(Ether)。(要获得最好的东西总要付出点代价!)

交易与 eth_sendTransaction的计算可靠性是相同的,并且包含from 地址。passphrase 是tx.from的私钥,主要用于解密 。

只要passphrase解密了私钥,那么只有在那时交易才会被验证,才能登录用户并将交易发送到网络上。该帐户未在节点中进行全局解锁,因此无法在其他RPC调用中使用。

控制台:

personal.sendTransaction(tx, passphrase)
RPC: {“method”: “personal_sendTransaction”, “params”: [tx, string]}

在JavaScript控制台上:

>>> var tx = {from: “0x391694e7e0b0cce554cb130d723a9d27458f9298”, to: “0xafa3f8684e54059998bc3a7b0d2b0da075154d66”, value: web3.toWei(1.23, “ether”)}
undefined
>>> personal.sendTransaction(tx, “passphrase”)

要想了解更多Raspberry Pi在以太坊区块链上的玩法,可以参考:go-Ethereum Management APTs.

https://github.com/ethereum/go-ethereum/wiki/Management-APIs

以上就是本节的全部内容,让我们一起继续发明新东西吧

本文分享自微信公众号 - 区块链大本营(blockchain_camp)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Photoshop保存ICO格式插件 ICOFormat.8bi

    Photoshop 一直不支持导入导出ico格式图标文件,不过还好有一款插件可以让photoshop支持打开和保存 ico 图标格式,这款插件就是 ICOFor...

    德顺
  • 投融资汇总 | 本周(9.10-9.15)软银中国以10亿美元投资商汤科技

    本周硬科技领域投融资事件一共36起,人工智能领域发生14起融资事件,占比39%;区块链和生物医疗领域分别发生6起融资事件,分别占比17%;物联网领域发生4起融资...

    镁客网
  • linux(centos7)下安装vnpy2的坑

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    钱塘小甲子
  • 重磅好文 | 看动画轻松理解「递归」与「动态规划」

    在学习「数据结构和算法」的过程中,因为人习惯了平铺直叙的思维方式,所以「递归」与「动态规划」这种带循环概念(绕来绕去)的往往是相对比较难以理解的两个抽象知识点。

    小小詹同学
  • 投融资汇总 | 本周(9.22-9.29)影谱科技获追加融资加固“最高纪录”地位

    本周硬科技领域投融资事件一共39起,人工智能领域发生21起融资事件,占比55%;生物医药领域发生5起融资事件和3起收购事件,占比21%;区块链领域发生4起融资事...

    镁客网
  • 投融资汇总 | 本周(9.16-9.21)多个AR公司获得融资

    本周硬科技领域投融资事件一共39起,人工智能领域发生17起融资事件和1起收购事件,占比46%;3R(VR/AR/MR)领域发生6起融资事件,占比15%;生物医药...

    镁客网
  • 秋招季,用Python分析深圳程序员工资有多高?

    多图预警、多图预警、多图预警。秋招季,毕业也多,跳槽也多。我们的职业发展还是要顺应市场需求,那么各门编程语言在深圳的需求怎么呢?工资待遇怎么样呢?一起来用 Py...

    小小詹同学
  • 国内人脸识别第一案,我们来谈谈国外法规和隐私保护技术

    一是杭州野生动物世界“为了方便消费者快速入园”,在今年 10 月将年卡系统从“指纹入园”升级为“人脸识别入园”,被消费者起诉。起诉者是浙江理工大学特聘副教授郭兵...

    大数据文摘
  • 国内人脸识别第一案来了,我们来谈谈国外法规和隐私保护技术

    导读:近日,浙江理工大学特聘副教授郭兵起诉杭州野生动物世界年卡系统采集人脸,已被杭州市富阳区人民法院正式受理。此案被称为“国内人脸识别第一案”。一直被忽视的互联...

    华章科技
  • Tendermint区块链Weave SDK快速指南

    IOV Weave SDK是一个基于Tendermint共识引擎的区块链开发框架,Weave提供了很多常用功能的预置模块用于你自己的区块链,同时也支持自定义扩展...

    用户1408045

扫码关注云+社区

领取腾讯云代金券