【教程】如何在区块链上刻一段话

以太坊被称为“区块链 2.0”,是因为它具备图灵完备的编程语言,用户可以通过支付燃料的方式在链上运行智能合约。以太坊之于比特币(几乎仅支持作为交易的极简合约),好比通用计算机之于计算器,一台分布在云端每一个角落的计算机。

智能合约是以交易的形式执行的。以太坊账号分为两类,一类是外部账号,相当于比特币的账号,不包含合约代码,其主要功能是转账和支付燃料;另一类账号是合约账号,包含需要被运行的代码。一笔“交易”,需要包涵发送者(外部账号),接收者(合约账号),传输数据,以及一些关于燃料的参数。当这笔交易被某个区块接收,当那个区块的主人成功挖到矿,这笔交易就会被添加到区块链的头部,广播到网络的每一个结点。每个结点在验证这个区块时,自然会以交易中记录的传输数据作为 input 执行这笔交易,交易数据于是被永久地记录在区块上。

你看,在区块链上记录一段数据可以说是最简单的应用,因为它根本不涉及到任何有意义的合约,只是把数据写在交易中而已。我们需要的仅仅是“铭刻”,并不关心接收方将如何处理这段数据。

不过,以太坊上执行合约是需要花钱的,我刚写的这句话花了$0.78。作为新手,我不建议大家拿真金白银试手。好在以太坊有一系列“测试网络”,你可以免费获得虚拟币,在测试网络上尝试这个教程,记录的数据也会保留相当长的时间。在教程最后我会补充如何在真实网络上执行。这个教程不需要编程基础,不需要下载软件,所用到的都是网页版在线服务。

1,在 chrome 浏览器上安装 MetaMask 插件(metamask.io),选择 Ropsten Test Network,然后建立一个新的账号,并将账号地址复制到剪贴板上。

2,前往 faucet.ropsten.be,粘贴输入账号,点击“Send me 1 test ether!”,认领免费币。过一会,你会在 MetaMask 插件里看到一枚崭新的以太币(不要在意美元价格,那是通过真实以太币的汇率换算的,和这个测试网络的虚拟币没有关系)。

3,前往 www.myetherwallet.com,选择 Network Ropsten (myetherapi.com),点击 Send Ether & Tokens,选择 MetaMask / Mist,点击连接钱包。

4,准备要记录的文字。交易数据是十六进制数据,你可以在www.asciitohex.com 输入可读的 Ascii 格式,转为 Hexadecimal 格式,去掉空格,这就是将被记录的文字格式。

5,回到 MyEtherWallet,由于这个案例中没有执行任何有意义的合约,所以 To Address 写你自己的地址就好,然后点击 Advanced: Add Data,在下方输入刚才准备好的十六进制数据。点击 Generate Transaction,点击 SendTransaction,点击 Yes, I am sure! Make Transaction.

6,这时你会被引向 MetaMask 插件的支付页面,点击SUBMIT。Again,美元数据没有意义,ETH 值是你实际支付的代币数。注意,有可能会出现 Intrinsic Gas Too Low 的错误,你可以回到上一步,手动修改 Gas Limit,比如我将 21000 改为 50000 就成功了。相应的,你要付的代币也会多一些。

7,支付成功后,你会回到 MyEtherWallet页面,底下弹出通知告诉你交易已被广播到网络,并给你一个交易的哈希值,它是代表这笔交易的独一无二的身份。点击 Verify Transaction,前往测试网的交易信息页面,你可能需要等几分钟等这笔交易被记录到区块链中。

8,在交易信息页面,Input Data 里记着这段数据。点击 Switch to UT8 (有可能显示 Switch to ASCII),就可以看到有意义的文字了。注意开头的 0x 是系统为你加上的标示符。

于是,这段文字就被铭刻在以太坊的测试网络中。

如果你想在真实网络中操作,需要做的修改是:
第 1 步中选择 Main Ethereum Network,前往 Coinbase 充值(也可以在第6步充)。
第 2 步不适用。
第 3 步网络选择 ETH。
第 6 步中,注意查看收费。有时候系统会异常地报出超高价,重试几次就好。

对了,这个方法除了可以刻一段明文,也可以提供一个时间戳证明。比如你想证明自己论文的优先权,你可以用 SHA256 算法将文本生成一段哈希值,将哈希值写在交易信息里。日后,别人可以验证文本对应的哈希值和这笔交易,就可以验证文本在这个时间戳前就已存在。

硬广:近期我会在纽约文化沙龙讲一期《区块链 101》,向零基础的大众介绍区块链的工作原理。你可以在官网 nyshalong.com 订阅邮件通知,或关注微信号 nyshalong。参加不了的朋友可以看录像。

本文副本

«
»

    Leave a Reply

    Your email address will not be published.