.-- .. - .... .-.. --- ...- .

home archive about

一分钟 ICO 教程

12 Jan 2018

最近有个标题是《10 分钟搞定 ICO》的文章很火, 介绍了如何用 Ethereum 官方 Wallet 程序以及官方 Demo 代码, 来发行一个新数字代币的方法。 当然文章并不是真让大家都去发行自己的数字货币。 通过揭示创建新代币可以几乎无成本这件事,作者给大家揭露了一些当前区块链领域的乱象。

不过 10 分钟文没有涉及太多原理知识,本文我来写一写技术,希望能用简单通俗的描述, 帮助大家多了解新技术,提高辨识力。

BTW,如果你确实想创造一个数字代币,后面我介绍一个一分钟搞定的办法。

Bitcoin 区块链

区块链技术的第一个爆款应用, 当然是大家都耳熟能详的著名数字货币,开山鼻祖 Bitcoin (BTC), 而对区块链最简单的理解,也就是把它想象成一个巨大的账本。 这个账本由一个一个的区块首尾相接组成,这里区块可以简单理解成一块数据记录, 里面写着一些交易的故事。

比如 A 拿出多少 BTC 付给 B,B 收入多少、找零多少,以及剩余多少作为交易验证费等。 若干个交易记录组成一个一个区块,每形成一个区块就往链后面添加一个。 区块是只能向后增加而不能修改的,所以回溯整个区块链,就能够获得所有历史交易, 也能计算出当前状态。 (可以到这里查看 Bitcoin 各个区块里记录的交易明细)

在区块链技术出现以前,账本差不多也是这样记录的。 这个记录发生在银行里、财务办公室里,由一个权威而可信的地方掌管,大家来选择信任它, 或者不信。

而区块链这个大账本的特点在于,区块并不是存在于某一个地方或者某一个机构内, 而是存在于参与交易的众多计算机上,并且没有哪个或哪些计算机是所谓的'权威'。 利用 P2P 网络(点对点网络),网络中的众多节点直接通信交流,不依赖哪个'核心'。

没有了权威,区块链通过协商达到'共识'来取得一致,大致的过程是这样的:

  1. 一段时间里,产生了很多交易,这些交易被公布出来,广播到 P2P 网络里;
  2. 网络中的很多计算机收集这些交易,验证合法性,并把这些交易打包成一块数据,不过这块数据目前还不是合法的区块;
  3. 为了形成合法的区块,还要在区块里面填一个数 (nonce),这个数必须满足一个苛刻的条件,因此所有计算机都努力计算,希望最先制作出来一个合法的区块;
  4. 当某个计算机做出来一个合法区块之后,就把它广播到 P2P 网络里,然后其他计算机来进行确认;
  5. 大家确认这个块没问题了,就把它加入到上一个区块的后面,作为一个新生成的区块;
  6. 假如有多个不同的新合法区块产生,都加入到了上一个区块后面,那么当前区块链就是出现了分支,各个分支各自继续生长;
  7. Bitcoin 区块链中如果出现分支,那么大家会选择当前最长的一个分支继续往后加区块,这样长者越长,最终有一个分支胜出,其他临时的小分支就被大家抛弃;
  8. 一般认为一个分支上达到 6 个合法区块长度以后,就不太可能会被其他分支超越了,那么分支上记录的交易信息就可以认为不太可能被修改了;
  9. 通过努力计算得到合法区块的计算机节点,会得到一笔 Bitcoin 的奖励(也记录在挖出来的区块里,称作 Coinbase 交易),这也就是所谓的'挖矿';

通过这个过程,所有网络里参与计算的计算机一起达成了共识,更新了区块链上的交易记录, 并且确保了所有人记录一致。由于合法区块形成的难度很高,需要大量的计算, 要控制区块链的行为需要控制全网计算能力的 50% 以上才有可能,又避免了恶意行为。 因此,区块链在没有权威核心的情况下,神奇地达成了一致,也很难被篡改。

这就产生了信用。

而信用是货币发行的基础。 传统上,政府主导的各央行作为权威机构,为它发行的货币背书,因此我们信任这些货币, 就是在信任一个权威机构。 区块链的出现使得信任可以脱离权威机构而达成,因此自然而然就产生了新的数字货币 Bitcoin。

Ethereum 区块链

不过,数字货币只是区块链的一个可能的应用。

上面的 Bitcoin 区块链里,各个区块里的记录只是一些交易相关的信息,大多数都是表示转入转出之类。 换句话说,就是 Bitcoin 区块链里,区块上的操作都是改变 Bitcoin 大账本'状态'的一些交易指令。 从计算科学的角度来讲,可以简单理解成只有加减法这些指令, Bitcoin 区块链就是在用这么一个超迷你的指令集来修改账本数据状态。 (Bitcoin 网络里的交易实际是通过'锁定脚本'和'解锁脚本'的执行来实现交易验证的, Bitcoin 脚本语言是一种基于堆栈的简单语言,仅有支持 Bitcoin 交易的有限指令集。)

那么支持更丰富的指令集的话,区块链是不是就可以做更多事情了呢? Ethereum 的发明人 Vitalik Buterin 就想到了这一点,他和他的小伙伴们设计了一个叫做 EVM 的东西。 这个 EVM 是一个虚拟机,你可以把它理解成一个虚拟计算机,它支持一个'图灵完备'的指令集。 图灵完备是一个计算理论概念,简单的说,我们日常使用的计算机就是图灵完备的, EVM 也是图灵完备的,它们都等价于一个叫'图灵机'的理想机器,而计算能力也都是等价的。 (相比之下,Bitcoin 脚本语言是'图灵非完备'的,它缺少很多诸如循环等流程控制功能。)

把 EVM 放进区块链里,就是 Ethereum 了。 拥有了图灵完备的魔法加持,Ethereum 的区块链上理论上可以运行任意复杂的算法程序 (在 Ethereum 的世界里这些程序又叫做合约)。 而拥有区块链的神奇能力,Ethereum 能够保证你的程序以及相关数据的可信,简直完美。

有了能够运行图灵完备程序的 Ethereum 区块链平台之后,基于区块链开发更多应用变得容易, 而 Ethereum 社区则为之配套设计了丰富的周边工具,包括一些可以编译成 EVM 机器码的高级语言, 丰富的客户端,合约、DAPP 开发工具和规范等。 创建一个数字代币,只是 Ethereum 能实现的无限多功能中的一种而已。 很多投机者在没有价值实体,没有实际项目的情况下,仅仅通过创建一个数字代币, 以及天花乱坠的一本白皮书,就可以通过 ICO 的名义圈钱,简直不要再容易。

10 分钟文的作者介绍了如何使用 Ethereum 官方 Wallet 程序创建一个新的数字代币, 其实本质上就是把一段写好的代币程序部署到 Ethereum 区块链上。 这个程序的主要功能就是实现你的数字代币和 ETH 这个 Ethereum 原生货币的互相转换。 通过指定发行量以及和 ETH 的兑换汇率,你的代币就有了 ETH 的价值, 用这种代币 ICO 就是别人用真金白银换来 ETH 然后买你的代币,从而支持你得到融资。

当然除了在 Ethereum 区块链上创建代币,也有一些有技术能力的团队, 基于开源区块链代码自己研发新的区块链,还可以有自己的创新和改进。 这种情形肯定不 10 分钟可以搞定的,但数字货币的本质基本是一样的。

所以,ICO 靠谱不靠谱,和其他投资靠谱靠谱一样,还是要看背后的项目、团队, 看最终项目能不能赚钱。 而因为当前区块链过火的这个情况,我目前的观点是绝大多数 ICO 都不靠谱。

一分钟 ICO

尽管不靠谱,还是兑现一下开头的承诺,一分钟 ICO 教程在此。

上文提到的官方 Wallet,虽然界面简单,但是使用起来有不少问题。 首先就是同步慢的问题,第一次使用客户端时候会自动同步 Ethereum 的整个区块链数据。 我前面文章写过我自己同步了两天,下载了 58G 数据的故事,很是磨人。 然后是不太稳定,同步到最后会卡住,最终能不能成功还有点看运气。

所以我也介绍过 Parity 这个客户端,个人认为很好用。

安装上客户端之后,只需要在终端执行下面的命令:

parity

它就运行起来了。然后可以在浏览器里访问地址 http://localhost:8180, 就进入到了 Parity 的 WebUI 主页,大概是下面这个样子:

Parity

这时候 Parity 也会开始同步区块链数据,但它不是同步全部区块的所有数据,所以快很多。 同步的同时,如果是你第一次使用,可以顺便根据向导指引,创建一个新帐号。

此外,还可以利用同步时间去买一丢丢以太币 ETH (如果你在测试链,或者开发链、私有链上测试,就不用花钱了), 要创建新代币我看最近最低是需要 0.0021ETH,合人民币不到 20 块钱。 这些 ETH 主要是用来部署你的新代币代码的,部署新代码实际上是要执行链上已有的程序(合约), 而执行代码本身和 Bitcoin 区块链上的交易一样,都有手续费 (Ethereum 拥有一套以 Gas 为单位的计费手段)。

同步完成后,它的状态页面会变成这个样子:

Parity Status

按照 10 分钟文的规则,同步和创建帐号不计时,也应该是假设你已经有了 ETH。 那么下面进入一分钟时间,步骤如下:

Parity Apps
Token Deployment
ICO

其实这个创建代币的原理和使用官方钱包是一样的,只是 Parity 帮你把代码都写好了, 并且把部署这段代码的功能通过一个 DAPP 实现了。

这样,你只需要填写三个参数,就能走上人生巅峰了呢。

Creative Commons License
comments powered by Disqus