阅读时间 4 分钟
概述
由于在 Web 应用程序中应用广泛且语法简单,Ruby 拥有庞大的用户群体。本指南将介绍如何使用ruby-ethgem/包在 Ruby 中创建以太坊地址。
先决条件
- 系统中已安装 Ruby(Ruby 2.x 及以上版本)
- Ruby 环境管理器 (RBEnv)
- 一个文本编辑器
什么是以太坊地址?
在登录任何互联网平台时,您都需要使用一组凭据进行身份验证。可以将以太坊地址视为您的用户名,相应的私钥则视为密码。虽然您的以太坊地址是公开的且可以分享,但私钥必须始终保密。通过这种组合,您可以与以太坊区块链进行交互。 以太坊地址是您在区块链上的身份标识,其格式如下:“0x6E0d01A76C3Cf4288372a29124A26D4353EE51BE”。拥有一个有效的以太坊地址是以下操作的必要条件:
- 接收/发送以太坊货币
- 签署/发送交易
- 连接到去中心化应用程序
以太坊地址是如何生成的:
- 首先生成一个由 64 个字符(十六进制)组成的随机私钥(256 位 / 32 字节)。
例如:
0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893
- 随后,利用椭圆曲线数字签名算法(ECDSA),从生成的私钥中推导出一个长度为 128(十六进制)字符(64 字节)的公钥。
例如:
0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe
- 随后,对(128个字符/64字节)的公钥应用Keccak-256哈希函数,以获得一个64个字符(32字节)的哈希字符串。该字符串的最后40个字符/20字节,在前面加上0x作为前缀,即成为最终的以太坊地址。
例如:
0xd5e099c71b797516c10ed0f0d895f429c2781142
注:编码中的“0x”表示该数字/字符串采用十六进制表示法。
什么是 Ruby?
Ruby是一种开源的解释型高级语言。Ruby 的设计融合了 Perl、Smalltalk、Eiffel、Ada 和 Lisp——这些正是松本行弘(Yukihiro “Matz” Matsumoto)最喜爱的编程语言。Ruby 完全面向对象;即使是整数这样最基本的数据类型,也包含方法和实例变量。这使得方法链成为可能,从而将多行代码合并为一行。 Ruby on Rails 作为一种 Ruby 框架,帮助该语言在 Web 编程领域广受欢迎,其主要吸引力在于程序员无需花费大量时间来创建文件。
为了实现创建以太坊地址的目标,我们将使用一个名为ruby-eth 的 Ruby gem。
什么是 ruby-eth?
Ruby-eth是一个用于交易签名和密钥生成的库,它允许我们使用任意节点构建和广播以太坊交易。该 gem 支持将密钥与节点分离。您可以在任何能运行 Ruby 的地方对交易进行签名并管理密钥,并通过任意节点端点广播交易。
安装依赖项
在安装 gems 之前,让我们先确认 Ruby 是否已安装。打开终端并运行:
$ ruby -v
对于Linux/UNIX:您可以按照此处的指南使用发行版的包管理系统,或者使用rbenv或RVM 等第三方工具。
对于macOS:您可以使用rbenv或RVM 等第三方工具。
Windows 用户:可以使用RubyInstaller。
我们将使用rbenv来管理项目的 Ruby 版本。首先,要检查 rbenv 是否已安装,请输入:
$ rbenv -v
它应显示系统中已安装的 rbenv 的当前版本;如果未显示,请根据此处的说明下载 rbenv。然后在终端中输入以下命令,以在该目录下激活特定的 Ruby 版本。
$ rbenv install 2.6.5
$ rbenv local 2.6.5
确认 Ruby 已安装且版本正确(本例中为 2.6.5)后,接下来我们安装所需的 gems。你可以使用 Ruby 的包管理器 RubyGems,通过命令行进行安装:
$ gem install eth
如果您使用的是 macOS,在安装 gem 时可能会遇到与权限相关的问题,因为 macOS 自带的 Ruby 版本通常仅供苹果公司内部使用;我们建议使用rbenv和RVM(Ruby 版本管理器)来管理一个独立的 Ruby 版本,该版本将安装在您的主目录中的沙盒内,您可以在其中进行修改,而无需担心会影响系统 Ruby。
生成一个以太坊地址。
打开你的文本编辑器,创建一个名为 address.rb 的新 Ruby 文件,并将以下代码复制粘贴到其中。
require "eth"
key = Eth::Key.new
key.public_hex
puts "SAVE BUT DO NOT SHARE THIS (Private Key): 0x#{key.private_hex}"
puts "Address: #{key.address}"
上述代码的说明
第 1 行:导入 eth gem/包。
第 2 行:实例化 Eth 对象,创建一个新键,并将其存储在 key 变量中。
第 3 行:使用 public_hex 方法根据密钥生成十六进制公钥。
第 4 行:使用 private_key 方法从密钥生成十六进制私钥,并在其前添加 0x 前缀;然后带警告信息将其打印出来。
第 5 行:生成地址,并将其与字符串“Address:”一起打印出来
请保存该文件,并使用……运行它。
$ ruby address.rb
如果一切顺利,代码执行成功,结果应该如下所示。

结论
恭喜,您现在拥有了自己的以太坊地址,可以用来签署/发送交易并与以太坊网络进行交互。请参阅《如何使用 Ruby(ethereum.rb)连接以太坊》指南。
订阅我们的通讯,获取更多关于以太坊的文章和指南。如果您有任何反馈,欢迎通过Twitter 联系我们。您还可以随时在我们的Discord社区服务器上与我们交流,那里聚集了您能遇到的最酷的开发者们 :)
