RS欧时电子

文章数:1384 被阅读:1794800

账号入驻

欧时课堂|用树莓派探索以太坊 - 第1部分:入门

最新更新时间:2018-05-04
    阅读数:


在Pi 3B 型上安装并运行以太坊区块链客户端。

区块链现在是一个令人难以置信的热门话题,并且已经有一段时间了,这在很大程度上是因为加密货币 - 主要是比特币 - 似乎为他们的早期采用者在一夜之间产生的财富,以及它们开辟的新的经济可能性。

然而,区块链不仅仅可以用于加密货币,而且正如Greig在其最近发布的文章中指出的那样,其分布式性质和验证交易的防篡改记录能力可用于物联网应用。以太坊平台令人兴奋的是它不仅仅是简单的加密货币和安全交易,还提供分布式计算平台。

在这篇文章中,我们将简要介绍一下以太坊体系结构,并尝试介绍一些主要概念和组件,然后再继续在Raspberry Pi上安装客户端软件。需要说明的是,我们不会挖掘任何加密货币,因为您确实需要一个强大的GPU,但是可以使用Pi创建一个简单的沙箱进行实验 - 这也表明区块链技术确实是可以运行在嵌入式平台。

以太坊101

contract mortal {    /* Define variable owner of the type address */    address owner;    /* This function is executed at initialization and
sets the owner of the contract */
   function mortal() { owner = msg.sender; }    /* Function to recover the funds on the contract */    function kill() { if (msg.sender == owner)
selfdestruct(owner); }}

contract greeter is mortal {    /* Define variable greeting of the type string */    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;    }}

以太坊智能合约的示例。资料来源:ethereum.org

区块链是一个分布式记录本,通常通过点对点网络进行管理,并随着记录或区块越来越多,它的大小也会不断增长。区块通常包含有交易数据的时间戳,并通过散列算法加密保护,这样一旦数据被提交,它就不能被修改。

以太坊平台拥有自己的加密货币,称为以太币 ether,但它也进一步构造区块链技术,为智能合约创造分散平台 - 包含代码函数和区块链函数,并能够与其他合同进行交互,作出决定,存储数据,并将以太币发送给其他人。

智能合约通过基于 JavaScript 的 Solidity 语言实现。Solidity编译器用于将智能合约编译为字节码 - 就像使用JavaScript或Python,Java和Android等代码执行 - 然后通过以太坊虚拟机(Ethereum Virtual Machine)执行。在智能合约中执行交易产生一定的成本,这是我们将在未来的文章中介绍到。

以太坊提供了许多不同的客户端应用程序,原始参考实现geth以Go编写。其中一些可以挖掘以太币。另外还有独立的挖掘软件,好像另外还有GUI客户端和分布式应用程序的IDE。

除主要的公共以太坊区块链网络mainnet 之外,还有用于实验性质的测试网络,您也可以创建自己的专用网络。

安装GETH

设我们已经安装了Raspbian,我们便可以开始更新已安装的软件包到最新版本。

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

 我在第一次编译以太坊客户端时用完了内存。为内存密集型任务释放内存的一个好方法就是减少分配给GPU的数量。实际上,如果您不需要图形桌面,请将将系统简单地配置成引导到命令行。

$ sudo raspi-config

  • 3 → Boot

  • B1 → Desktop / CLI

  • B1 → Console

  • 7 → Advanced

  • A3 → Memory Split

  • 16 (MB)

  • Reboot

接下来,如果我们安装相关的安装包。

$ sudo apt-get install git golang libgmp3-dev

之后,如果我们抓取geth的源代码,一个以太坊节点的官方语言实现,编译这些代码并将可执行文件复制到/usr/local/bin/。

$ mkdir src $ cd src $ git clone -b release/1.7 https://github.com/ethereum/

go-ethereum.git $ cd go-ethereum $ make $ sudo cp build/bin/geth /usr/local/bin/

 

创建帐户并进行测试

首先,如果我们使用GETH来创建一个新帐户。

$ geth account new

这将生成一组新的加密密钥并使用密码保护私钥。请注意,如果您使用此帐户来挖掘加密货币并进行有意义的交易,您则需要确保备份您的密钥并防止您的私钥被访问。

现在开始启动节点。

geth --syncmode light --cache 64 --maxpeers 12

如果我们在没有任何参数的情况下运行GETH,它会启动一个节点并尝试同步整个公共mainnet区块链。其大小超过50GB并且不断增长,这对嵌入式计算机可能不是一个好主意。所以,我们以轻型同步模式启动节点。这只会随着它们的出现以及区块链的其他部分按需提取区块标题。

要强制节点退出,只需按CTRL-C在启动时将其作为服务运行:

$ sudo vi /etc/systemd/system/geth@.service

(用你最喜欢的文本编辑器替换“vi”)

然后输入:

[Unit]Description=Ethereum daemon Requires=network.target[Service]Type=simple User=%I ExecStart=/usr/local/bin/geth --syncmode light --cache 64
--maxpeers
12Restart=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欧时电子的文章

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved