主页 > imtoken海外版 > Geth检查是否是全节点_700元单片机改造为以太坊节点
Geth检查是否是全节点_700元单片机改造为以太坊节点
出品 | 区块链训练营(blockchain_camp)
众所周知,以太坊是一个可以运行智能合约的去中心化平台。
智能合约是完全按照编程运行的应用程序,排除任何停机、审查、欺诈或第三方干扰的可能性。
以太坊基于区块链技术。 简而言之,以太坊是一个全球网络,旨在以去中心化的方式处理指令,依赖于多台计算机或节点的处理能力和存储资源。
通过运行节点,我们能够维持网络的去中心化和对等节点之间的信任。 这是一种直接参与以太坊网络并掌握一些前沿技术的方式。 真的超级好玩!
为什么我们在 Raspberry Pi 上
运行以太坊节点?
Raspberry Pi 非常适合运行以太坊节点,因为它可以自行运行,直到我们决定人为停止它。
当然,我们也可以在电脑上运行以太坊节点,但这会产生相应的计算和存储成本。 所以我宁愿让节点在专用硬件上运行,而用我的笔记本电脑看电影。 此外,如果您不小心烧毁了树莓派,其成本远低于烧毁笔记本电脑。
我们也可以通过云服务在虚拟机实例上运行以太坊节点以太坊多少节点,但这会增加巨大的成本。 没有人愿意为此掏腰包吧?
此外,树莓派还可以用来创建一个简单的沙箱进行实验,这也展示了利用嵌入式平台部署区块链技术,进一步整合物联网的可能性。
如何在树莓派上运行以太坊节点?
现在,为了设置环境,我们需要一些工具。 因此,让我们先回顾一下会发生什么:
我们假设 Raspberry Pi 已经安装了 Raspbian 操作系统。 如果没有,请不要担心,您可以通过以下链接进行操作:
一旦完成了 OS 操作系统的基本设置,我们就可以开始了! 让我们继续执行以下步骤:
第一步:先更新包到最新版本
命令如下:
$ sudo apt-get update$ sudo apt-get dist-upgrade
第 2 步:为以太坊客户端(又名 Geth)释放内存 为内存密集型任务释放 RAM 的一个好方法是减少分配给 GPU 的内存。 或者,如果不需要图形界面,可以将系统配置为仅引导至命令行。
$ sudo raspi-config
1.启动到命令行:
2.减少分配给GPU的内存:
3. 最后,重启。
接下来,我们将安装包依赖项。
第三步:我们需要先安装Golang,再安装Geth。这一步可以通过以下命令完成
$ sudo apt-get install git golang libgmp3-dev
安装的Golang版本会过时,所以我们需要使用Golang版本管理器“g”将其版本升级到1.10以上。
参考链接:
命令:
$ curl -sSL https://git.io/g-install | bash
$ g install (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
这将生成一组新的加密密钥并使用密码保护私钥。
需要注意的是,如果我们使用这个账户来挖加密货币并进行有意义的交易,那么一定要保证成功密钥的备份,防止私钥泄露。
第六步:以轻模式同步以太坊主网
$ geth — syncmode light — cache 64 — maxpeers 12
如果你在没有任何参数的情况下运行 Geth,它将启动一个节点并尝试同步整个公共主网区块链,其大小超过 50GB 并且还在不断增长,这对于嵌入式计算机来说可能不是一个好主意。
所以我们改为以光同步模式启动节点。 轻同步模式只获取当前状态,因此在验证元素时需要向全节点发出相应的请求。
光地址:
如果要停止执行,请按 Ctrl + C
如果你想在后台运行,只需使用 nohup。
$ nohup geth — syncmode light — cache 64 — maxpeers 12 &
同步过程将在后台运行。 要查看日志,请使用任何代码编辑器(例如 Vim 或 Nano)打开文件 nohup.out。
日志显示:
第 7 步:JavaScript 控制台
Geth Javascript 控制台可通过 Geth-attach 命令访问。
检查已同步的最新块:
>>> eth.getBlockNumber ( console.log )
输出:
列出当前帐户:
>>> eth.accounts
列出同行:
>>> admin.peers
输出:
第 8 步:设置 RPC
打开 JavaScript 控制台并运行以下命令。
>>> admin.startRPC ( ‘0.0.0.0’, 8545 )
输出:
语法:admin.startRPC('IP地址',PORT号)
RPC 将开始在此 IP 和 PORT 上运行
这样,我们可以使用 Postman 进行简单的 API 调用,或使用任何编程语言进行任何 REST API 调用,并通过以太坊管理 API 提取数据。
第 9 步:在以太坊区块链上发送交易
好吧,这一步才是真正有趣的地方。 然而,这会花费一些以太币。 (总是要付出最好的代价!)
交易的计算可靠性同eth_sendTransaction,包含from地址。 passphrase是tx.from的私钥,主要用于解密。
只要密码短语解密私钥,只有到那时交易才会被验证,用户登录并将交易发送到网络。 该账号在节点内没有全局解锁以太坊多少节点,所以不能在其他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”)
想了解更多树莓派在以太坊区块链上的工作原理,可以参考:go-Ethereum Management APTs。