要问当前所有区块链应用中最火的是什么应用,非加密货币莫属。看看各个跟区块链相关的讨论组,整天热火朝天地讨论的是各种币的行情,即使是技术讨论组,除了一些热门讨论外,最吸引注意的莫过于本币的涨跌还有各种代币的ICO了。
首先,加密数字货币是什么鬼?他首先是一种数字货币。早在比特币出现之前,“数字货币”、“虚拟货币”、“电子货币”等就已经出现了。近年来,比特币出现,加密(数字)货币正式诞生,随之而来是类似莱特币、瑞泰币、以太坊、狗狗币、比特股、瑞波币、点点币、元宝币等等几千种加密数字货币。加密数字货币使用密码算法的数字货币,现指代英文Cryptocurrency,他最主要几大特性是去中心化、加密解密技术、区块链技术、共识机制,这些技术相互支撑,通过共识机制成为一个整体,实现了加密货币特有的安全、公开、可追溯的支付和交易。
加密数字货币的核心技术价值是区块链,正如各种法币有国家信用背书一样,区块链承载的就是信用,是一个无需实物抵押、不需政府或金融机构担保的信用。如果没有区块链,包括比特币在内各种加密数字货币也会变得一文不值。
加密数字货币目前有三种主要场景,一种就是数字货币,用作流通和结算;第二种是为了在各自网络中支付特定的操作,是交易和使用相关区块链资源过程燃烧的燃料(Gas),用户只是使用其计算能力来接收它,以便验证交易并促进它的发展;第三种是作为产品或社区运营的激励机制和运营工具,也就是代币或虚拟货币的角色。可以说,加密数字货币对于很多去中心化的应用的作用还是很大的。
回到这次主题,Elwin就加密数字货币这个区块链典型应用,简单介绍一下他的的相关开发技术。
一、知名的加密数字货币的技术体系
下面介绍一下目前几种知名的加密数字货币的技术体系:
比特币:
比特币技术,符号为BTC,共识算法为PoW,工作量证明算法中使用SHA-256加密算法,发行方式为挖矿,矿机支持,总量恒定2100万,区块时间10分钟,开发语言C++。
莱特币:
比特币技术,旨在改进比特币算法技术,符号为LTC,共识算法为PoW,工作量证明算法中使用Scrypt加密算法,发行方式为挖矿,矿机支持,总量恒定8400万个,区块时间2.5分钟,开发语言C++。
未来币:
未来币是一种全新设计和开发的二代币,符号为Nxt。未来币是一种纯 POS 币,使用透明锻造(transparent forging)的方式进行新区块的锻造。Nxt是且是第一个100%的股权证明(PoS)机制的电子货币,Nxt不再通过消耗大量的资源“挖矿”产生新货币,而是通过现有账户的余额去“锻造”区块,并给与成功“锻造”区块的账户交易费用奖励。PoS算法的这一特点,使得它足以在智能手机或者是树莓派这样的小型设备上运行。它已经通过IPO的方式完成了所有币的分发,货币总量 10亿,区块时间60秒,开发语言JAVA。
以太币:
比太坊技术,符号为ETC/ETH(不同分叉) ,共识算法为PoW,使用的工作量证明算法叫Ethash(Dagger-Hashimoto算法的改良版本),发行方式为挖矿,矿机支持,支持在树莓派上运行节点。以太币(ETH)作为推动以太坊平台上分布式应用的加密燃料,将会通过挖矿的形式每年以不变的数量发行。每年发行的数量是预售以太币总量的0.3倍,通胀率每年递减,最新ETH区块时间16秒,开发语言GO。
比特股:
比特股技术,核心账本采用石墨稀技术,符号为BTS,共识算法为DPoS,货币总量为37亿。预挖矿方式发布(初始的比特股BTS由两部分组成,一部分由PTS持有者转股而来,另一部分由挖掘产生,并且整套系统还在不断的为持有BTS的投资者分红),比特股通过定期出售分发初始货币,Counterparty利用烧毁证明(POB)发行货币,BTS除了作为交易费用和激励机制外,也是资产交易的重要抵押物。区块时间3秒,开发语言C++。
瑞波币:
瑞波技术,符号为XRP,共识算法为瑞波自有共识机制,采用OpenCoin(现在的Ripple Labs)原创算法,货币总量为1千亿,预挖矿方式发布,一半是创始人拥有,一部分批发給交易网关,小部分逐步发放公众,让他们来推动Ripple项目,开发语言C++。瑞波币是世界上第一个开放的支付网络,通过这个支付网络可以转账任意一种货币,简便易行快捷,交易确认在几秒以内完成。值得一提的是,瑞波币的另外一个分支恒星币(XLM),他是由Ripple创始人之一的Jed创建,恒星币是基于ripple代码修改创建的恒星支付网络中的基础数字货币,总量为1000亿,每年增加1%。恒星支付网络以恒星币为基础货币,用户能够通过其转账任意一种货币,跟瑞波的主要区别是他的目标针对全体大众用户,目前处于技术完善阶段。
点点币:
比特币技术,符号为PPCoin,简称PPC,名字取自P2P货币的意思,即点对点货币,PPC的研发团队和质数币XPM的研发团队为同一团队,技术实力强劲,为业界公认。采矿方式混合了PoW工作量证明及PoS权益证明方式,矿机支持,区块时间为600秒,PPC采用SHA256算法,在BTC的基础上进行了改良和优化。PPC最大的贡献在于它原创了POS利息体系,防止通货紧缩,货币总量无上限,通胀1%每年,开发语言C++。
元宝币:
太一科技开发,符号为YBC。元宝币最初算法源自于当时较为创新的数字货币雅币(YAC),雅币的算法又是在点点币(PPC)的基础上进行的修改,老元宝采用的是基于Scrypt-Jane的POW算法。到第二代元宝币调整了POS利息递归机制,第三代元宝币创新发明了VPOW机制,新元宝将彻底停止POW挖矿,而采用纯POS方式来维持网络,币的分发将采用VPOW的方式进行。VPOW分发机制又被称为虚拟工作量证明机制,具体是指利用其他币的POW挖矿算力来为元宝币提供类似POW的公平数字货币发行机制。通过应用VPOW分发机制和“八宝池”配股计划,增加了市场上的元宝币买盘,元宝币在市场上保持了更加充足的流动性,维护了币价,完成了公平的分发,能够促进元宝币应用的平稳发展。采用主节点分发机制(主节点分发利息),可以促进节点网络健壮、高可用性。货币总量300万,区块时间60秒,开发语言C++。
达世币:
达世币是一款支持即时交易、以保护用户隐私为目的数字货币,采用比特币技术分支。达世币符号是Dash,是一种为匿名而生的币,他通过匿名技术,使得交易无法被追踪查询。无预挖,基于11种加密算法x11算法(blake, bmw, groestl, jh, keccak, skein, luffa, cubehash, shavite,simd, echo)超级安全哈希运算。它的区块奖励也和大多数山寨币不一样,它的区块奖励由公式自动确定。采用类似于PoW+PoS的混合挖矿方式,Masternodes获得10%的挖矿奖励。首次引入暗重力波(DGW)难度调整算法保护区块网络。总量约2200万枚,区块时间2.5分钟,开发语言C++。
二、加密数字货币的基础技术体系
货币的核心基础是信任,这里有基于实物如黄金的信任,更多基于国家背书的信任,只有保证了货币的价值稳定和价值存储能力,才使货币获得了人们的信任。
在虚拟和数字时代的,除了解决信任问题外,网络安全是数字货币的另外一个关键因素。比特币之前的任何货币,无论是物理实体黄金,还是电子化的法币,都不存在网络安全的问题,但黑客攻击和破解、技术垄断这些不稳定安全因素却极大制约着数字货币的发展。数字货币对金融安全提出了更高的要求,一方面,数字货币去中心化的特性淡化了中心化管理和机构监管,出了问题不容易刹车和纠正(如the DAO事件的处理),另一方面,区块链和数字货币这类创新金融体系尚未经历过多少风雨,在应对大数据冲击、黑客破坏、网络攻击等方面略显力不从心。
加密数字货币的目标就是要建立一个去中心化的自动运行的经济系统,应具备可流通性、可存储性、可离线交易性、可控匿名性、不可伪造性、不可重复交易性、不可抵赖性七个特性,而加密数字货币的技术基础区块链,具有不可篡改性,所有的账本都是公开透明和可追溯性,他基本解决了数字货币流通中的这些技术问题。但对于数字货币的真正落地和运行,他对信任和网络安全两个最关键的核心因素有着更高的要求。这两个因素具体到加密数字货币的技术基础体系中,就是支撑这个系统的发行和维护网络安全的机制。其中机制有多种,如PoW,PoS,DPoS等,各有利弊,PoW有高耗能和51%攻击的风险,而PoS和预挖矿的方式会导致大量的币保留在创始人和少数人中,信用基础不够牢固,流动性不确定,因此往往会采取综合的机制,目前很多研究认为,“工作量证明机制Pow+权益证明机制Pos/DPoS”的币,才是最为完美的。采用哪种这个机制策略,将很大程度决定你的数字货币发展的前景空间。
三、搭建加密数字货币的技术平台
前面介绍了几个知名的加密数字货币的技术体系,大家是否已经由跃跃欲试去搭建自己的加密数字货币呢?
Elwin推荐的有两套技术路线可以选择,一个是自己通过搭建区块链平台去构建自己原生的数字货币,另一个方式是基于现有的区块链公网去创建数字资产和数字货币。
方案一,构建自己原生的数字货币,从比特币和各个竞争币(山寨币)大家可以看到,这些数字货币采用的技术体系不外乎就是比特币、Ripple、比特股和未来币等几套技术体系或这些技术体系的改进或分支版本,这些技术体系,大家可以参见Elwin上一篇文章《区块链主流开源技术体系介绍》的几大主流开源区块链体系的介绍。这些原生数字货币的用途主要包括:交易和支付、汇兑手段、抵押手段、激励机制、权益证明和资源控制等,另外还有不同区块链体系自身带有一些特性的扩展。
就主流区块链开源技术体系来看,Elwin推荐的是比特币或其分支、Ripple、未来币、比特股、以太坊五种技术架构,如果你是单纯的货币业务,不考虑以后其他衍生产品和业务扩展,更推荐比特币、未来币和Ripple。每套技术体系的代码可以在相关数字货币在GitHub上公开的源码进行修改,从而达到制作属于自己的加密数字货币。
开始制作我们自己第一个的数字货币了,首先我们要从git上下载某套区块链体系的源码,比如选择比特币的主干代码,我们从https://github.com/bitcoin/bitcoin下载好相关源码,同时准备好对应的编译环境(C++的建议在Linux)和安装好对应开发环境和工具(每个体系网上都有详细的安装教程文档)。
不过系统和开发环境的搭建、程序编译等过程都比较繁琐和有比较多坑(很多跟环境、依赖库和版本有关,请留意),不建议普通用户自己制作。对于开发人员,第一次可能要预计2-3天的安装配置时间。
拿比特币开发来说,他是Qt的开发环境,下载好源码并配置好环境后,在Qt Creator内打开该比特币核心的源码,配置相关文件和编译器,开始尝试编译比特币核心的客户端。这一步走通后,才可以放胆去改造成自己的数字货币。打开各个源文件,找到对应的地方调整参数即可,如调整每个区块出币数,总产量,调整难度等等,然后就到最关键的点,就是改名为自己的币名了,这时候通过全文搜索bitcoin或其他比特币的字样,改成你自己货币的名称,比如ElwinNB之类,想怎么取名就怎么取名,别忘记在资源文件夹里替换掉相关图标。如果一切顺利,经过重新编译,你的新币就顺利发明了。
前期很多山寨币,就是这个套路,基于比特币进行这里修改文字那里调整一些参数,很多并不理解整个体系和原理甚至没有阅读主要代码,后来大家都成为老司机后,新的币种会考虑一些微创新,在共识算法和加密算法作一些调整和优化,创新为自己的新算法。Elwin觉得,数字货币也是一种互联网产品,且属于一个比较复杂的技术体系,即使你是基于别人的成熟代码进行修改,需要不断的迭代更新和维护的,纵使只是简单的版本跟随,你总要投入技术力量去跟进,因此我之前提的只是入门的尝试,真正要维护你的数字货币,你还得好好去阅读代码,了解架构和原理,根据你的业务和新币特性去不断优化和调整。
当然,现在这些简单套路都走不通了,现在要发行新的数字货币,要么你算法真有独有优势和特点,要么基于数字货币下的垂直业务和游戏规则有很好的模式(比如电竞币或文化币),否则大家很难去关注和拥护你的新币。
方案二,是基于现有的区块链公网去创建数字资产和数字货币。就主流区块链开源技术体系来看,基本除了Factom外,其他的技术体系都可以用来创建数字资产,也就是可以支持加密数字货币的创建。
以太坊:基于以太坊的智能合约,我们可以轻松地创建自己的数字资产或数字货币,除了创建数字货币和货币交易的基本功能外,还支持货币的中心化管理者、数字货币的黑白名单、货币增发、挖矿实现、代币和其他货币的自动兑换。开发语言是Solidity语言。在以太坊的官网首页上,给出了三个智能合约的DEMO:虚拟货币合约Token、众筹合约Crowdsale、去中心自治组织合约DAO,其中的虚拟货币合约Token就可以作为你的加密数字货币的最好的参考代码了。
Ripple和比特股:就技术来说,基于Ripple和比特股的公网,你都可以轻松创建和管理自己的数字资产或数字货币,不过目前Ripple公网好像限制了主要针对2B业务,只能給银行和金融等机构作为网关,这样一般玩家就无法在网关中创建自己的数字资产了。在比特股的去中心化的链上交易平台中,我们看到锚定各类资产的数字资产在比特股被发行、相互配对交易,基于比特股区块链的各种网关为区块链上的虚拟世界与物理世界的各种资产提供对接。不像比特币,比特股可以扩大范围和支持多个完全独立和并行的块。因为每个块链可以交易捆绑在其它块链上的比特资产衍生品,块链之间的价值移动是很容易的。比特股的资产发行功能,让全球用户能以很低的费用发行自己的数字资产并与特定的现实资产进行锚定,进一步在区块链上实现交易转让,在这个过程中没有中心化的人为因素干扰。比特股的资产发行和管理功能非常强大,黑白名单、高级多重签名、喂价输入、抵押发行、内盘与外盘互动,低延时、智能合约等待条件基于一身。使用Ripple和比特股发行数字资产不需要另外的代码开发。
布比:布萌是基于布比区块链的数字资产平台,发行在布萌平台上的数字资产,可以在资产流通方之间建立起多方信任,保证用户购买和使用的数字资产的真实有效性。布萌拥有一套标准化协议,在布萌平台上开发的应用之间无需对接,即可实现布萌用户之间数据信息流、价值流互联、互通。同时,发行在布萌平台上的数字资产,可以实现点到点的传递。对接布萌相对比较简单,布萌为企业和开发者提供资产发行、资产转移、资产查询等业务,支持多种开发语言。
方案二中,以太坊方案优点是比较灵活和强大,基本可以任意编写你的数字货币及其衍生的业务体系,缺点是的其中币种运行和流通交易,需要消耗原生数字货币(Gas费用)的,这是值得考虑的;比特股部分,数字资产的发行和管理功能很齐全,但也会一定程度局限在比特股平台中,且也需要交易费用(Gas费用);布萌平台的优点是简单易用和免费使用(无Gas费用),缺点是提供接口的功能不够丰富。
方案二基于已有区块链公网的数字资产搭建,在方便的同时,好处是不需要类似方案一那样,一定要考虑组建自己的节点群,但缺点是一定程度限制在各个区块链体系框架中(其实大部分情况下都满足到你的需求了),且区块性能会收到公网的性能制约(另外也要考虑一些区块链公网的停止维护或硬分叉的风险)。
四、数字货币应用层开发
构建自己原生的数字货币体系后,除了宣传官网和社交媒体外,你还需要对应开发相关的挖矿软件、ICO众筹网站、交流社区、钱包、交易市场等应用层软件。
挖矿软件:这个是针对类似比特币等Pow模式的体系,这些需要对应的挖矿软件,专业一些需要有相应矿机。首先,从git上下载现成的挖矿工具(通常支持sha和scrypt算法)、矿池,改名字编译,部署,也同样直接就可以用了。通常都是C++开发语言。
ICO众筹网站:主要是数字货币的初期资金的筹集,目前比较多的是筹集比特币和以太币,这个可以自己搭建,也可以采用第三方的ICO众筹网站如币众筹。开发语言:主流Web开发语言。
交流社区:主要用来发布资讯和給币使用者交易者交流使用,这个可以直接使用第三方的开源代码进行搭建,这类代码非常多,根据你熟悉的开发语言来选择就是了。开发语言:主流Web开发语言。
钱包:这个非常重要和关键的用户客户端,可以花多些时间好好设计一些这个的UI,提供多终端的钱包。开发语言:主流Web开发语言或App开发语言
交易市场:一般这个交易市场更多是通过淘宝或第三方交易市场来提供,但也不排除你要开发类似的交易市场,来提供給本数字货币与其他数字货币的兑换。开发语言:主流Web开发语言。
作者:高志豪(weibo.com/elwingao)