比特币7年价格走势

2009年元月-2010年5月,近一年半,基本上没有价格.
2010.5月,拉丝勒用一万个BTC换2个披萨,现值约3.8亿人民币。
2010.8月,第一次出现在交易所,价格0.0769美分。
2011年4月,由1美元,到5美元,到10美元,到20美元。
2011年6月,第一次涨到30美元。
2012年初,最低不到2美分。
2012年底,一直在底价徘徊。最高也只有30美元的三分之一。
2013年4月,最高到260美元。
2013.5月,又狂跌到68美元。
2013.7月,价格66美元。
2013.12月,最高1147美元,约8000人民币。
2015.1月,狂跌到114美元,约900人民币,
随后又盘升至:1000多
2016年上半年2000多元,至3000多,至现在17000元左右。
看似大风大浪。长期持币稳升值。
2017年从3月5000,到8月最高35000,7月从30000跌到16000,用了一个月,可是从16000到30000只用了3天。9月,国家关闭所有交易平台,比特币却在此时坚挺,飙升到39500,破40000,而今天,比特币接近15万人民币!

轻松搞定Blockchain.info在线钱包

Blockchain.info是全球规模最大的在线钱包服务提供商,用户基数较大。

前段时间这家公司收购了比特币交易所RTBTC,之后迅速的全面更新了网站的中文页面。

3月初上海创智天地的交流会上,Blockchain.info中国区的负责人也上台跟大家分享Blockchain.info以后的发展规划。

 

在Mt.Gox事件影响之下,一定有人担心平台的安全,决定将账户里的币提到自己的钱包里面,但除了带有官方性质的bitcoin-QT之外,还有没其他更好的选择呢?提币小白教程请移步  的文章:http://www.8btc.com/withdrawal-from-trading-platforms

 

本文着重讲解一下Blockchain.info钱包的若干注意点,包括钱包找回等技巧。

(如果你对在线钱包的使用已然很熟练,可以略过这篇文章)

 

我们先来一起来建个新钱包:

1,首先登陆Blockchain.info官方网站:https://blockchain.info/zh-cn/

你可以看到如下页面,点击申请钱包。

 

blockchain-1

 

2,如图点击“我的钱包”

 

blockchain-2

 

3,按要求填写邮箱地址和密码,最好不要用QQ邮箱,QQ号被盗很容易影响QQ邮箱的安全。

126,gmail,hotmail等邮箱都是不错的选择。

 
 

blockchain-3

 

4,创建完成后我们来到登录页面(如何创建钱包过程中网站让你记下一串英文短语组成的长句时,请将其复制到本地文档,并压缩加密。

登录页面有两个部分比较重要,一是钱包识别码,二是二次验证(这个我们等下会提到),钱包识别码Blockchain.info会发到你的注册邮箱,本地一次登录后以后都会默认记住,在其他机器上登录时可以考虑设置一个方便记忆的短链。(下文有具体操作办法)

 

blockchain-4

 

5,如果这个时候你查看你的邮箱,会发现Blockchain.info已经发了一个包含钱包备份的邮件,这个后缀为.json的文件一定要保存后,这是以后找回钱包最关键的证明!

 

blockchain-5

 

6,然后我们就可以看到自己的钱包了,页面左下角是钱包地址的二维码,那一长串1带头的数字就是你的钱包地址。

 

blockchain-6

 

7,接着我们点击页面中的“账户设置”,可以看到如下警示窗口

blockchain-7

8,进入后我们可以设置恢复邮箱,账户短名,验证手机号码。

其中短连接就相当于是一个个性地址,填入英文/数字组合,设置好以后直接访问这个链接地址就可以进入钱包登陆界面。

 

blockchain-8

 

9,交易费用默认勾选标准,最好不要动它,节俭模式有可能得不到确认,慷慨模式又略坑。

 

blockchain-9

 

10,在此页面可以设置默认的计量单位,mbtc或btc。(1btc=1000mbtc)

blockchain-10

 

11,在密码设置页面,注意主密码和副密码一定都要设置,最好不要相同。

你把它理解成支付宝的登录密码和支付密码就行了。

 

blockchain-11

 

12,这一步很关键,我个人曾经使用过手机短信验证,但经常是登录的时候收不到验证短信,估计是Blockchain的中国部门没有弄好短信平台。现在我已经改成了谷歌验证,iOS和安卓平台都有官方出的软件。

iOS点击:https://itunes.apple.com/cn/app/google-authenticator/id388497605?mt=8

安卓点击:https://support.google.com/accounts/answer/1066447?hl=zh-Hant

(以上均为官方链接)

 

blockchain-12

13,Blockchain.info还提供了个有趣的功能-熔币,这其实通过系统内部机制洗(和谐)币,得到一个“不那么容易”被追踪的币,感兴趣的可以研究下,其实对普通人也没多大用处。

 

blockchain-13

14,接下来,我们看看钱包丢失了该如何找回。

首先,在登录界面的右侧,你能看到如下页面:

 

blockchain-15

 

15,选择“恢复钱包”,便能看到让你输入脑钱包和验证短信/邮箱的窗口,脑钱包密码在申请新钱包的时候由系统提供,前面已经提到,应该将其保存下来并压缩加密,有条件的话打印成纸质更好。

 

blockchain-16

 

16,如果你选择导入备份,则可以看到一个虚线窗口,此时将之前备份好的以.Json为后缀的备份文件拖进窗口即可。

 

blockchain-17

 

17,如果这两者你都搞忘了或者搞丢了怎么办?是不是钱包就再也找不回来了?不是的,我们还有最后一招。

登录Blockchain.info的首页,点击帮助页面:

 

blockchain-19

 

18,接着点击右下角的About Us

 

blockchain20

19,找到客服平台

 

blockchain21

20,在弹出窗口点击已阅读上述文件 I have read the above

 

blockchain-22

 

21,最后,在此页面提交问题描述,Blockchain.info的工作人员会人工审核信息的正确性,并会帮助你找回钱包。

目前仅支持英文。

 

比特币核心钱包(Bitcoin Core)的使用入门指南

比特币官方钱包客户端的原名是Bitcoin-qt,现在更名为bitcoin core比特币核心钱包,这是比特币核心钱包客户端最新版本0.9.2.1安装及入门教程。
这个钱包是最完整的、最安全的钱包、最早的比特币客户端,但是,他的区块链数据文件(blockchain)体积庞大,启动较慢,仅适合高端的比特币用户使用。
1.首先,到比特币官方网站下载钱包,注意选择32位或者64位。 https://bitcoin.org/zh_CN/download

2.点击下载回来的.exe文件安装钱包,然后启动钱包,设置数据存储位置,数据存储目前(截止2014-09-12)需要25GB 以上的空间。
安装完毕就可以数据同步了。

3.加速下载区块链的数据文件bootstrap.dat
新安装的比特币核心客户端需要同步数据是一个漫长的过程,一般的使用者想要快速使用的话推荐使用multibit等轻客户端。
首先,比特币项目官方每隔一段时间会把数据文件打包成bootstrap.dat 文件,在比特币的项目主页下载数据文件的种子文件。Armory 也需要下载完整的区块链数据,Armory 也会把文件进行打包,而且更新更快,推荐使用Armory 的torrent 来下载。放心,下载回来的bootstrap 文件都是一致的,而且客户端会进一步验证。
Armory 打包的bootstrap.dat.torrent:https://s3.amazonaws.com/bitcoinarmory-media/bootstrap.dat.torrent
Bitcoin 官方打包的bootstrap.dat.torrent:http://sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain/
通过μTorrent软件或者迅雷打开种子文件开始下载即可。这个方法下载区块链的数据也有一个好处,就是减轻了比特币的P2P网络的流量负担。
最后把数据文件放到比特币客户端的默认数据文件夹(AppData/Roaming/Bitcoin)即可开始导入。
4.加密钱包
数据同步完成后,钱包才能正常工作。这时,请立即设置密码并备份钱包。
一个好的密码,应该包括16位以上(最好20位以上)的大小写字母、数字及特殊符号,且不要使用生日、名字、证件号码等易被猜测的密码。警告:遗忘密码等于丢失所有比特币。




5.进行交易
在“发送”选项卡,可以把你的比特币发送给其他比特币用户。请注意:交易一经确认,无法逆转!请仔细确认交易信息。系统可能根据情况征收交易费,请选择支付。(一般情况是0.0001BTC,万分之一个币,约3毛钱)

在“接收”选项卡,我们可以获取自己的钱包地址。直接点击“请求付款”,将生成一个新的地址。你可以将这个地址给别人,让他们向你发送比特币。

点击“请求付款”按钮,即可显示接收地址和二维码了。

比特币价格的四点支撑

比特币的价值支撑有四点
第一是黑市的地下交易需求,这是目前最实实在在的地位,也几乎保证了比特币永远没有归零的那一天
第二是区块链技术的远景预期,原则上说区块链和比特币是两码事,而且目前比特币公有链的应用乏善可陈。但作为最早最广泛的应用,比特币依然是区块链技术的最好的广告,也就可以不断吸引小白入场。
第三是资产跨国界转移的通道 洗钱只是一个方面,目前的跨国ico依然很火爆,想想你足不出户,就可以投资世界上任意一个角落的创业公司。
第四是比特币创世最大的梦想,取代黄金的地位,达到限制法币滥发,资产保值。这条路还很遥远,但是毫无疑问的是,比特币越普及,离这个目标越近。当筹码足够分散,就没有人能真正操控它的价格。
为什么说比特币不是郁金香泡沫?郁金香可以部分取代第一条,但是没有第二条,由于郁金香可以被政府管控,它也永远不可能有第三条和第四条价值。
当然,价值归价值,泡沫归泡沫。最终怎么样,要看这四个目标能不能一一实现,如果第四条实现,比特币不仅不是泡沫,今后也应该还有接近1000倍以上的涨幅。

精通比特币 – 附录4 sx工具下一些的命令

附录4 sx工具下一些的命令

sx 命令如下:
不赞成 DEPRECATED Electrum钱包式的确定密钥和地址 genaddr 由钱包种子或主公钥来生成一个比特币地址。 genpriv 只由种子来生成一个私钥。 genpub 由钱包种子或主公钥来生成一个公钥。 mpk 只由钱包种子来生成主公钥。 newseed 创建一个新的决定性的钱包种子。
试验中的 EXPERIMENTAL APPS wallet 试验性的命令行钱包。
离线区块链 OFFLINE BLOCKCHAIN 区块头 showblkhead 显示区块头细节
离线密钥和地址 OFFLINE KEYS AND ADDRESSES 基础操作 addr 查看公钥或私钥的比特币地址。 embed-addr 将记录数据嵌入区块链,生成新的地址。 get-pubkey 如果可行的话,得到地址公钥。 newkey 创建一个新私钥。 pubkey 查看私钥的公开部分。 validaddr 确认一个地址有效。
记忆存储BRAIN STORAGE brainwallet 从任意口令生成256位比特币私钥。 mnemonic 从128位electrum钱包或bip32种子生成12助记词。
HD / BIP32 hd-priv 从一个HD私钥创建新的HD 私钥。 hd-pub 从一个HD私钥或公钥创建一个新的HD公钥。 hd-seed 创建一个随机的新HD密钥。 hd-to-address 将 HD 公钥或私钥转为比特币地址。 hd-to-wif 将HD私钥转为WIF私钥。
MULTISIG ADDRESSES scripthash 从原始十六进制脚本创建BIP16脚本哈希值。
隐身STEALTH stealth-addr 从给定输入查看隐身地址。 stealth-initiate 初始化新的隐身支付。 stealth-newkey 生成新的隐身密钥和地址。 stealth-show-addr 显示具体隐身地址。 stealth-uncover 揭开隐身地址。 stealth-uncover-secret 放弃隐身。
离线交易 OFFLINE TRANSACTIONS mktx 创建一个未签名的tx。 rawscript 从脚本创建未处理的十六进制请求。 set-input 设置交易输入。 showscript 显示脚本细节。 showtx 显示交易细节。 sign-input 输入交易签名。 unwrap 使验证码有效,从原始十六进制串恢复版本字节和原始数据。 validsig 确认交易输入签名有效。 wrap 向十六进制串添加版本字节和验证码。
ONLINE (BITCOIN P2P) 区块链更新 BLOCKCHAIN UPDATES sendtx-node 把交易导入单个节点。 sendtx-p2p 把tx传向比特币网络。
ONLINE (BLOCKCHAIN.INFO) BLOCKCHAIN QUERIES (blockchain.info) bci-fetch-last-height 使用 blockchain.info 获取最后一个区块高度。 bci-history 从 blockchain.info 得到输出点、价值、消费总额的列表。
区块链更新 BLOCKCHAIN UPDATES sendtx-bci 把tx传向blockchain.info/pushtx。
ONLINE (BLOCKEXPLORER.COM) BLOCKCHAIN QUERIES (blockexplorer.com) blke-fetch-transaction 从 blockexplorer.com 获取交易
ONLINE (OBELISK) BLOCKCHAIN QUERIES balance 以聪为单位显示一个比特币地址的余额。 fetch-block-header 获取区块头。 fetch-last-height 获取最后的区块高度。 fetch-stealth 网络连接obelisk load balancer后台发出请求以获取隐身信息。 fetch-transaction 用网络连接向 obelisk load balancer后台请求以获取未处理交易。 fetch-transaction-index 在交易区块里获取区块高度和索引。 get-utxo 从给定地址集合里得到足够的尚未动用的交易输出,用以支付给定数量的聪。 history 从地址得到输出点、价值、消费总额列表。grep命令可以过滤未动用的输出,其结果可以被mktx命令调用。 validtx 确认交易有效。 BLOCKCHAIN UPDATES sendtx-obelisk 将tx传送到 obelisk 服务器。 BLOCKCHAIN WATCHING monitor 监控一个地址。 watchtx 通过网络搜索特定哈希值来查看交易。
OBELISK ADMIN initchain 初始化新区块链。
UTILITY EC MATH ec-add-modp 计算整数和整数相加结果。 ec-multiply 整数和点的乘积 ec-tweak-add 计算 POINT + INTEGER * G 结果。
FORMAT (BASE 58) base58-decode 从 base58 转为十六进制。 base58-encode 从 16 进制转为 base58。
FORMAT (BASE58CHECK) base58check-decode 从 base58check 转为十六进制。 base58check-encode 从十六进制转为 base58check。 decode-addr 将地址从 base58check 形式解码为内部 RIPEMD 表达。 encode-addr 将地址从内部 RIPEMD 编码为 base58check 形式。
FORMAT (WIF) secret-to-wif 将秘密指数转为WIF。 wif-to-secret 将WIF转为秘密指数。
HASHES ripemd-hash 从 STDIN 转为RIPEMD 哈希值。 SHA256 取得数据的SHA256哈希值。
MISC qrcode 生成比特币离线二维码。 SATOSHI MATH btc 转换聪币为比特币 satoshi 将比特币转换为聪币。
输入“sx help COMMAND”,可以了解命令的具体信息。 接下来,我们看一些使用 sx 工具操作密钥和地址的例子。 用 newkey 命令利用系统的随机数生成器生成一个新的私钥。将标准输出存入 private_key 文件。
$ sx newkey > private_key $ cat private_key 5Jgx3UAaXw8AcCQCi1j7uaTaqpz2fqNR9K3r4apxdYn6rTzR1PL
现在,用 pubkey 命令将前面生成的私钥转成公钥。将 private_key 文件作为标准输入,以标准输出的方式导出到新文件 public_key 。
$ sx pubkey < private_key > public_key $ cat public_key 02fca46a6006a62dfdd2dbb2149359d0d97a04f430f12a7626dd409256c12be500
我们可以用 addr 命令将 public_key 的格式重新设定为地址。将 public_key 作为标准输入。
$ sx addr < public_key 17re1S4Q8ZHyCP8Kw7xQad1Lr6XUzWUnkG
生成的密钥是所谓的type-0型非决定性密钥,也就是说每个密钥都是从一个随机数生成器生成的。 sx 工具也支持 type-2 决定型密钥,先创建了一个主密钥,然后扩展生成一个子密钥链。 首先,我们生成种子,这是整个密钥链的基础。这也可应用于Electrum钱包以及其他类似应用。我们使用 new seed 命令来生成种子值。
$ sx newseed > seed $ cat seed eb68ee9f3df6bd4441a9feadec179ff1
种子值可以通过 mnemonic 命令转化为助记词,这比十六进制数字更方便易读,也更容易存储和输入。
$ sx mnemonic < seed > words $ cat words adore repeat vision worst especially veil inch woman cast recall dwell appreciate
使用助记词也可以用 mnemonic 命令重新生成种子。
$ sx mnemonic < words eb68ee9f3df6bd4441a9feadec179ff1
利用这个种子,我们现在可以生成一系列私钥和公钥,也就是一个密钥链。genpriv 命令可以从一个种子生成一系列私钥,addr 命令可以生成对应的公钥。
$ sx genpriv 0 < seed 5JzY2cPZGViPGgXZ4Syb9Y4eUGjJpVt6sR8noxrpEcqgyj7LK7i $ sx genpriv 0 < seed | sx addr 1esVQV2vR9JZPhFeRaeWkAhzmWq7Fi7t7 $ sx genpriv 1 < seed 5JdtL7ckAn3iFBFyVG1Bs3A5TqziFTaB9f8NeyNo8crnE2Sw5Mz $ sx genpriv 1 < seed | sx addr 1G1oTeXitk76c2fvQWny4pryTdH1RTqSPW
使用这种决定性的密钥,我们可以生成和再造成千上万的新密钥,它以一种关联链的形式从一个唯一的种子 生成的。这项技术已经使用在许多钱包应用中,仅用简单几个助记词,就可以备份和重现密钥,这种方式要比创建密钥时需要把钱包的随机生成的所有密钥一起备份要方便的多。

==目录==

简介
前言
第1章 介绍
第2章 比特币的原理
第3章 比特币客户端
第4章 密钥、地址、钱包
第4章 高级密钥和地址
第5章 交易
第6章 比特币网络
第7章 区块链
第8章 挖矿与共识
第8章 区块链分叉、矿池、共识攻击
第9章 竞争币、竞争块链和应用程序
第10章 比特币安全
附录1 交易脚本的操作符、常量和符号
附录2 比特币改进协议
附录3 pycoin库、ku程序和tx交易程序
附录4 sx工具下一些的命令
本文原链接:http://zhibimo.com/read/wang-miao/Mastering-Bitcoin/Appendix4.html

附录3 pycoin库、ku程序和tx交易程序

附录3 pycoin库、实用密钥程序ku和交易程序tx

pycoin库起初由Richard Kiss 撰写和维护 ,基于 Python 脚本的处理交易密钥,不仅支持比特币交易,也支持其他非标准脚本语言的交易类型。
pycoin 库支持 Python 2 (版本 2.7.x) 和Python 3 (版本 3.3 以后)。下面介绍一些好用的命令行使用程序—— ku 和 tx。

实用密钥程序(KU)

命令行实用程序 KU ( key utility 缩写)对于处理密钥而言,就如同瑞士军刀一样灵活有用。它支持 BIP32 密钥、WIF 和地址(比特币以及竞争币均可)。下面是一些例子。
使用默认的 GPG 熵池和系统随机数设备( /dev/random )来创建BIP32 密钥,如下:

$ ku createinput : createnetwork : Bitcoinwallet key : xprv9s21ZrQH143K3LU5ctPZTBnb9kTjA5Su9DcWHvXJemiJBsY7VqXUG7hipgdWaU m2nhnzdvxJf5KJo9vjP2nABX65c5sFsWsV8oXcbpehtJipublic version : xpub661MyMwAqRbcFpYYiuvZpKjKhnJDZYAkWSY76JvvD7FH4fsG3Nqiov2CfxzxY8 DGcpfT56AMFeo8M8KPkFMfLUtvwjwb6WPv8rY65L2q8Hztree depth : 0fingerprint : 9d9c6092parent f'print : 00000000child index : 0chain code :80574fb260edaa4905bc86c9a47d30c697c50047ed466c0d4a5167f6821e8f3cprivate key : yessecret exponent :112471538590155650688604752840386134637231974546906847202389294096567806844862 hex :f8a8a28b28a916e1043cc0aca52033a18a13cab1638d544006469bc171fddfbewif : L5Z54xi6qJusQT42JHA44mfPVZGjyb4XBRWfxAzUWwRiGx1kV4sP uncompressed : 5KhoEavGNNH4GHKoy2Ptu4KfdNp4r56L5B5un8FP6RZnbsz5Nmbpublic pair x :76460638240546478364843397478278468101877117767873462127021560368290114016034public pair y :59807879657469774102040120298272207730921291736633247737077406753676825777701 x as hex :a90b3008792432060fa04365941e09a8e4adf928bdbdb9dad41131274e379322 y as hex :843a0f6ed9c0eb1962c74533795406914fe3f1957c5238951f4fe245a4fcd625y parity : oddkey pair as sec :03a90b3008792432060fa04365941e09a8e4adf928bdbdb9dad41131274e379322 uncompressed :04a90b3008792432060fa04365941e09a8e4adf928bdbdb9dad41131274e379322843a0f6ed9c0eb1962c74533795406914fe3f1957c5238951f4fe245a4fcd625hash160 : 9d9c609247174ae323acfc96c852753fe3c8819d uncompressed : 8870d869800c9b91ce1eb460f4c60540f87c15d7Bitcoin address : 1FNNRQ5fSv1wBi5gyfVBs2rkNheMGt86sp uncompressed : 1DSS5isnH4FsVaLVjeVXewVSpfqktdiQAM

使用口令创建一个 BIP 32 密钥:


本例中的口令很容易猜到。

$ ku P:fooinput : P:foonetwork : Bitcoinwallet key :xprv9s21ZrQH143K31AgNK5pyVvW23gHnkBq2wh5aEk6g1s496M8ZMjxncCKZKgb5j ZoY5eSJMJ2Vbyvi2hbmQnCuHBujZ2WXGTux1X2k9Krdtqpublic version : xpub661MyMwAqRbcFVF9ULcqLdsEa5WnCCugQAcgNd9iEMQ31tgH6u4DLQWoQayvtS VYFvXz2vPPpbXE1qpjoUFidhjFj82pVShWu9curWmb2zytree depth : 0fingerprint : 5d353a2eparent f'print : 00000000child index : 0chain code :5eeb1023fd6dd1ae52a005ce0e73420821e1d90e08be980a85e9111fd7646bbcprivate key : yessecret exponent :65825730547097305716057160437970790220123864299761908948746835886007793998275 hex :91880b0e3017ba586b735fe7d04f1790f3c46b818a2151fb2def5f14dd2fd9c3wif : L26c3H6jEPVSqAr1usXUp9qtQJw6NHgApq6Ls4ncyqtsvcq2MwKH uncompressed : 5JvNzA5vXDoKYJdw8SwwLHxUxaWvn9mDea6k1vRPCX7KLUVWa7Wpublic pair x :81821982719381104061777349269130419024493616650993589394553404347774393168191public pair y :58994218069605424278320703250689780154785099509277691723126325051200459038290 x as hex :b4e599dfa44555a4ed38bcfff0071d5af676a86abf123c5b4b4e8e67a0b0b13f y as hex :826d8b4d3010aea16ff4c1c1d3ae68541d9a04df54a2c48cc241c2983544de52y parity : evenkey pair as sec :02b4e599dfa44555a4ed38bcfff0071d5af676a86abf123c5b4b4e8e67a0b0b13f uncompressed :04b4e599dfa44555a4ed38bcfff0071d5af676a86abf123c5b4b4e8e67a0b0b13f826d8b4d3010aea16ff4c1c1d3ae68541d9a04df54a2c48cc241c2983544de52hash160 : 5d353a2ecdb262477172852d57a3f11de0c19286 uncompressed : e5bd3a7e6cb62b4c820e51200fb1c148d79e67daBitcoin address : 19Vqc8uLTfUonmxUEZac7fz1M5c5ZZbAii uncompressed : 1MwkRkogzBRMehBntgcq2aJhXCXStJTXHT

以 JSON 格式得到信息:

    $ ku P:foo -P -j    {        "y_parity": "even" ,        "public_pair_y_hex":"826d8b4d3010aea16ff4c1c1d3ae68541d9a04df54a2c48cc241c2983544de52" ,    "private_key": "no" ,    "parent_fingerprint": "00000000" ,    "tree_depth": "0" ,    "network": "Bitcoin" ,    "btc_address_uncompressed": "1MwkRkogzBRMehBntgcq2aJhXCXStJTXHT" ,    "key_pair_as_sec_uncompressed":"04b4e599dfa44555a4ed38bcfff0071d5af676a86abf123c5b4b4e8e67a0b0b13f826d8b4d3010aea16ff4c1c1d3ae68541d9a04df54a2c48cc241c2983544de52" ,    "public_pair_x_hex":"b4e599dfa44555a4ed38bcfff0071d5af676a86abf123c5b4b4e8e67a0b0b13f" ,    "wallet_key": "xpub661MyMwAqRbcFVF9ULcqLdsEa5WnCCugQAcgNd9iEMQ31tgH6u4DLQWoQayvtSVYFvXz2vPPpbXE1qpjoUFidhjFj82pVShWu9curWmb2zy" ,    "chain_code":"5eeb1023fd6dd1ae52a005ce0e73420821e1d90e08be980a85e9111fd7646bbc" ,     "child_index": "0" ,    "hash160_uncompressed": "e5bd3a7e6cb62b4c820e51200fb1c148d79e67da" ,     "btc_address": "19Vqc8uLTfUonmxUEZac7fz1M5c5ZZbAii" ,     "fingerprint": "5d353a2e" ,     "hash160": "5d353a2ecdb262477172852d57a3f11de0c19286" ,     "input": "P:foo" ,    "public_pair_x":"81821982719381104061777349269130419024493616650993589394553404347774393168191" ,    "public_pair_y":"58994218069605424278320703250689780154785099509277691723126325051200459038290" ,    "key_pair_as_sec":"02b4e599dfa44555a4ed38bcfff0071d5af676a86abf123c5b4b4e8e67a0b0b13f"}

BIP32 公钥:

$ ku -w -P P:fooxpub661MyMwAqRbcFVF9ULcqLdsEa5WnCCugQAcgNd9iEMQ31tgH6u4DLQWoQayvtSVYFvXz2vPPpbXE1qpjoUFidhjFj82pVShWu9curWmb2zy

生成一个子密钥:

$ ku -w -s3/2 P:fooxprv9wTErTSkjVyJa1v4cUTFMFkWMe5eu8ErbQcs9xajnsUzCBT7ykHAwdrxvG3g3f6BFk7ms5hHBvmbdutNmyg6iogWKxx6mefEw4M8EroLgKj

加强型子密钥:

$ ku -w -s3/2H P:fooxprv9wTErTSu5AWGkDeUPmqBcbZWX1xq85ZNX9iQRQW9DXwygFp7iRGJo79dsVctcsCHsnZ3XU3DhsuaGZbDh8iDkBN45k67UKsJUXM1JfRCdn1

WIF:

$ ku -W P:fooL26c3H6jEPVSqAr1usXUp9qtQJw6NHgApq6Ls4ncyqtsvcq2MwKH

地址:

$ ku -a P:foo19Vqc8uLTfUonmxUEZac7fz1M5c5ZZbAii

生成一串子密钥:

$ ku P:foo -s 0/0-5 -wxprv9xWkBDfyBXmZjBG9EiXBpy67KK72fphUp9utJokEBFtjsjiuKUUDF5V3TU8U8cDzytqYnSekc8bYuJS8G3bhXxKWB89Ggn2dzLcoJsuEdRKxprv9xWkBDfyBXmZnzKf3bAGifK593gT7WJZPnYAmvc77gUQVej5QHckc5Adtwxa28ACmANi9XhCrRvtFqQcUxt8rUgFz3souMiDdWxJDZnQxzxxprv9xWkBDfyBXmZqdXA8y4SWqfBdy71gSW9sjx9JpCiJEiBwSMQyRxan6srXUPBtj3PTxQFkZJAiwoUpmvtrxKZu4zfsnr3pqyy2vthpkwuoVqxprv9xWkBDfyBXmZsA85GyWj9uYPyoQv826YAadKWMaaEosNrFBKgj2TqWuiWY3zuqxYGpHfv9cnGj5P7e8EskpzKL1Y8Gk9aX6QbryA5raK73pxprv9xWkBDfyBXmZv2q3N66hhZ8DAcEnQDnXML1J62krJAcf7Xb1HJwuW2VMJQrCofY2jtFXdiEY8UsRNJfqK6DAdyZXoMvtaLHyWQx3FS4A9zwxprv9xWkBDfyBXmZw4jEYXUHYc9fT25k9irP87n2RqfJ5bqbjKdT84Mm7Wtc2xmzFuKg7iYf7XFHKkSsaYKWKJbR54bnyAD9GzjUYbAYTtN4ruo

生成相关地址:
$ ku P:foo -s 0/0-5 -a1MrjE78H1R1rqdFrmkjdHnPUdLCJALbv3x1AnYyVEcuqeoVzH96zj1eYKwoWfwte2pxu1GXr1kZfxE1FcK6ZRD5sqqqs5YfvuzA1Lb116AXZc4bDVQrqmcinzu4aaPdrYqvuiBEK1Cz2rTLjRM6pMnxPNrRKp9ZSvRtj5dDUML1WstdwPnU6HEUPme1DQayN9nm6j7nDVEM
生成对应的 WIF:

$ ku P:foo -s 0/0-5 -WL5a4iE5k9gcJKGqX3FWmxzBYQc29PvZ6pgBaePLVqT5YByEnBomxKyjgne6GZwPGB6G6kJEhoPbmyjMP7D5d3zRbHVjwcq4iQXD9QqKQL4B3ygQxK6zH2NQGxLDee2H9v4Lvwg14cLJW7QwWPzCtKHdWMaQzL2L2PZdorybUqkPjrmhem4Ax5EJvP7ijmxbNoQKnmTDMrqemY8UFL2oD6vA4TUyqPF8QG4vhUFSgwCyuuvFZ3v8SKHYFDwkbM765NrfdKzChTbc3kZFxUSJ3Kt54cxsogeFAD9CCM4zGB22si8nfKcThQn8C

通过选择 BIP32 字符串(和子密钥 0/3 相关的那个串)检查是否起作用:

$ ku -W xprv9xWkBDfyBXmZsA85GyWj9uYPyoQv826YAadKWMaaEosNrFBKgj2TqWuiWY3zuqxYGpHfv9cnGj5P7e8EskpzKL1Y8Gk9aX6QbryA5raK73pL2L2PZdorybUqkPjrmhem4Ax5EJvP7ijmxbNoQKnmTDMrqemY8UF$ ku -a xprv9xWkBDfyBXmZsA85GyWj9uYPyoQv826YAadKWMaaEosNrFBKgj2TqWuiWY3zuqxYGpHfv9cnGj5P7e8EskpzKL1Y8Gk9aX6QbryA5raK73p116AXZc4bDVQrqmcinzu4aaPdrYqvuiBEK

好了,看上去很熟悉了。
从秘密指数:

$ ku 1input : 1network : Bitcoinsecret exponent : 1 hex : 1wif : KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn uncompressed : 5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDfpublic pair x :55066263022277343669578718895168534326250603453777594175500187360389116729240public pair y :32670510020758816978083085130507043184471273380659243275938904335757337482424 x as hex :79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 y as hex :483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8y parity : evenkey pair as sec :0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 uncompressed :0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8hash160 : 751e76e8199196d454941c45d1b3a323f1433bd6 uncompressed : 91b24bf9f5288532960ac687abb035127b1d28a5Bitcoin address : 1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH uncompressed : 1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm

莱特币版本:

$ ku -nL 1input : 1network : Litecoinsecret exponent : 1 hex : 1wif : T33ydQRKp4FCW5LCLLUB7deioUMoveiwekdwUwyfRDeGZm76aUjV uncompressed : 6u823ozcyt2rjPH8Z2ErsSXJB5PPQwK7VVTwwN4mxLBFrao69XQpublic pair x :55066263022277343669578718895168534326250603453777594175500187360389116729240public pair y :32670510020758816978083085130507043184471273380659243275938904335757337482424 x as hex :79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 y as hex :483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8y parity : evenkey pair as sec :0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 uncompressed :0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8hash160 : 751e76e8199196d454941c45d1b3a323f1433bd6 uncompressed : 91b24bf9f5288532960ac687abb035127b1d28a5Litecoin address : LVuDpNCSSj6pQ7t9Pv6d6sUkLKoqDEVUnJ uncompressed : LYWKqJhtPeGyBAw7WC8R3F7ovxtzAiubdM

狗狗币 WIF:

$ ku -nD -W 1QNcdLVw8fHkixm6NNyN6nVwxKek4u7qrioRbQmjxac5TVoTtZuot

来自公用对(Testnet 上):

$ ku -nT55066263022277343669578718895168534326250603453777594175500187360389116729240,eveninput :550662630222773436695787188951685343262506034537775941755001873603 89116729240,evennetwork : Bitcoin testnetpublic pair x :55066263022277343669578718895168534326250603453777594175500187360389116729240public pair y :32670510020758816978083085130507043184471273380659243275938904335757337482424252 | Appendix C: pycoin, ku, and tx x as hex :79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 y as hex :483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8y parity : evenkey pair as sec :0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 uncompressed :0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8hash160 : 751e76e8199196d454941c45d1b3a323f1433bd6 uncompressed : 91b24bf9f5288532960ac687abb035127b1d28a5Bitcoin testnet address : mrCDrCybB6J1vRfbwM5hemdJz73FwDBC8r uncompressed : mtoKs9V381UAhUia3d7Vb9GNak8Qvmcsme

来自 hash160:

$ ku 751e76e8199196d454941c45d1b3a323f1433bd6input : 751e76e8199196d454941c45d1b3a323f1433bd6network : Bitcoinhash160 : 751e76e8199196d454941c45d1b3a323f1433bd6Bitcoin address : 1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH

作为狗狗币地址

$ ku -nD 751e76e8199196d454941c45d1b3a323f1433bd6input : 751e76e8199196d454941c45d1b3a323f1433bd6network : Dogecoinhash160 : 751e76e8199196d454941c45d1b3a323f1433bd6Dogecoin address : DFpN6QqFfUm3gKNaxN6tNcab1FArL9cZL

实用交易程序(TX)

命令行实用程序 tx 可将交易以一种易读的方式呈现,还可以从 pycoin 的交易缓存或者网络服务(目前支持 blockchain.info, blockr.io, and biteasy.com )中获取原始交易,合并交易,添加或删除输入或输出,以及签署交易。
下面是一些例子。
看看有名的“披萨”交易[PIZZA]:

$ tx 49d2adb6e476fa46d8357babf78b1b501fd39e177ac7833124b3f67b17c40c2awarning: consider setting environment variable PYCOIN_CACHE_DIR=~/.pycoin_cacheto cache transactions fetched via web serviceswarning: no service providers found for get_tx; consider setting environmentvariable PYCOIN_SERVICE_PROVIDERS=BLOCKR_IO:BLOCKCHAIN_INFO:BITEASY:BLOCKEXPLORERusage: tx [-h] [-t TRANSACTION_VERSION] [-l LOCK_TIME] [-n NETWORK] [-a] [-i address] [-f path-to-private-keys] [-g GPG_ARGUMENT]Key Utility (KU) | 253 [--remove-tx-in tx_in_index_to_delete] [--remove-tx-out tx_out_index_to_delete] [-F transaction-fee] [-u] [-b BITCOIND_URL] [-o path-to-output-file] argument [argument ...]tx: error: can't find Tx with id49d2adb6e476fa46d8357babf78b1b501fd39e177ac7833124b3f67b17c40c2a

糟糕!我们没有设置好网络服务。让我们现在设置:

$ PYCOIN_CACHE_DIR=~/.pycoin_cache$ PYCOIN_SERVICE_PROVIDERS=BLOCKR_IO:BLOCKCHAIN_INFO:BITEASY:BLOCKEXPLORER$ export PYCOIN_CACHE_DIR PYCOIN_SERVICE_PROVIDERS

这不是自动完成的,所以这种命令行工具不会泄漏你在第三方网站交易的隐私信息。如果你想忽略这个提醒,就可以把这些命令行加入到profile文件。
我们再试一次:

$ tx 49d2adb6e476fa46d8357babf78b1b501fd39e177ac7833124b3f67b17c40c2aVersion: 1 tx hash49d2adb6e476fa46d8357babf78b1b501fd39e177ac7833124b3f67b17c40c2a 159 bytesTxIn count: 1; TxOut count: 1Lock time: 0 (valid anytime)Input: 0: (unknown) from1e133f7de73ac7d074e2746a3d6717dfc99ecaa8e9f9fade2cb8b0b20a5e0441:0Output: 0: 1CZDM6oTttND6WPdt3D6bydo7DYKzd9Qik receives 10000000.00000 mBTCTotal output 10000000.00000 mBTCincluding unspents in hex dump since transaction not fully signed010000000141045e0ab2b0b82cdefaf9e9a8ca9ec9df17673d6a74e274d0c73ae77d3f131e000000004a493046022100a7f26eda874931999c90f87f01ff1ffc76bcd058fe16137e0e63fdb6a35c2d78022100a61e9199238eb73f07c8f209504c84b80f03e30ed8169edd44f80ed17ddf451901ffffffff010010a5d4e80000001976a9147ec1003336542cae8bded8909cdd6b5e48ba0ab688ac00000000** can't validate transaction as source transactions missing

出现最后一行是为了验证交易签名,严格说来您需要源交易。因此让我们通过添加 -a 指令来给交易补充源信息:

$ tx -a 49d2adb6e476fa46d8357babf78b1b501fd39e177ac7833124b3f67b17c40c2awarning: transaction fees recommendations casually calculated and estimates maybe incorrectwarning: transaction fee lower than (casually calculated) expected value of 0.1mBTC, transaction might not propogateVersion: 1 tx hash49d2adb6e476fa46d8357babf78b1b501fd39e177ac7833124b3f67b17c40c2a 159 bytesTxIn count: 1; TxOut count: 1Lock time: 0 (valid anytime)Input:254 | Appendix C: pycoin, ku, and tx 0: 17WFx2GQZUmh6Up2NDNCEDk3deYomdNCfk from1e133f7de73ac7d074e2746a3d6717dfc99ecaa8e9f9fade2cb8b0b20a5e0441:010000000.00000 mBTC sig okOutput: 0: 1CZDM6oTttND6WPdt3D6bydo7DYKzd9Qik receives 10000000.00000 mBTCTotal input 10000000.00000 mBTCTotal output 10000000.00000 mBTCTotal fees 0.00000 mBTC010000000141045e0ab2b0b82cdefaf9e9a8ca9ec9df17673d6a74e274d0c73ae77d3f131e000000004a493046022100a7f26eda874931999c90f87f01ff1ffc76bcd058fe16137e0e63fdb6a35c2d78022100a61e9199238eb73f07c8f209504c84b80f03e30ed8169edd44f80ed17ddf451901ffffffff010010a5d4e80000001976a9147ec1003336542cae8bded8909cdd6b5e48ba0ab688ac00000000all incoming transaction values validated

接下来,我们看看尚未使用完的输出的专用地址的(UTXO)。在区块 #1,我们看到到 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX 的 coinbase 交易。我们用 fetch_un spent 命令找到这个地址下的所有比特币。

$ fetch_unspent 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJXa3a6f902a51a2cbebede144e48a88c05e608c2cce28024041a5b9874013a1e2a/0/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/333000cea36d008badf5c7866894b191d3239de9582d89b6b452b596f1f1b76347f8cb/31/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/10000065ef6b1463f552f675622a5d1fd2c08d6324b4402049f68e767a719e2049e8d/86/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/10000a66dddd42f9f2491d3c336ce5527d45cc5c2163aaed3158f81dc054447f447a2/0/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/10000ffd901679de65d4398de90cefe68d2c3ef073c41f7e8dbec2fb5cd75fe71dfe7/0/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/100d658ab87cc053b8dbcfd4aa2717fd23cc3edfe90ec75351fadd6a0f7993b461d/5/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/91136ebe0ca3237002acb12e1474a3859bde0ac84b419ec4ae373e63363ebef731c/1/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/100000fd87f9adebb17f4ebb1673da76ff48ad29e64b7afa02fda0f2c14e43d220fe24/0/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/1dfdf0b375a987f17056e5e919ee6eadd87dad36c09c4016d4a03cea15e5c05e3/1/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/1337cb2679bfd0a557b2dc0d8a6116822f3fcbe281ca3f3e18d3855aa7ea378fa373/0/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/1337d6be34ccf6edddc3cf69842dce99fe503bf632ba2c2adb0f95c63f6706ae0c52/1/76a914119b098e2e980a229e139a9ed01a469e518e6f2688ac/20000000e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098/0/410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac/5000000000

==目录==

简介
前言
第1章 介绍
第2章 比特币的原理
第3章 比特币客户端
第4章 密钥、地址、钱包
第4章 高级密钥和地址
第5章 交易
第6章 比特币网络
第7章 区块链
第8章 挖矿与共识
第8章 区块链分叉、矿池、共识攻击
第9章 竞争币、竞争块链和应用程序
第10章 比特币安全
附录1 交易脚本的操作符、常量和符号
附录2 比特币改进协议
附录3 pycoin库、ku程序和tx交易程序
附录4 sx工具下一些的命令
本文原链接:http://zhibimo.com/read/wang-miao/Mastering-Bitcoin/Appendix3.html

精通比特币 – 附录2 比特币改进协议

附录2 比特币改进协议

比特币改进协议(Bitcoin improvement proposals 简称BIP)是为比特币社区提供规范,完善比特币及其运行进程和外部环境特性的设计指导文件。 依据 BIP0001协议即比特币改进协议的目的与指南,比特币改进协议有以下三种类型:
标准协议(Standard BIP)
描述任何影响大多或全部比特币应用的变化,比如网络协议、交易有效性规则的变化,或者任何影响使用比特币交互操作性的变化或补充。
信息补充协议(Informational BIP)
描述比特币的设计事项而不是为其提供新特性,或者为比特币社区提供一般性的指南或信息。信息补充型协议 不一定需要比特币社区达成共识或推荐,因此用户和开发人员可以选择忽略或者接受信息补充型协议的建议。
开发指导协议(Process BIP)
描述比特币进程,或者提议更改进程或事项。Process BIP与Standard BIP 相似,但是也可以应用于除比特币协议以外的领域。在普遍达成共识的情况下,它可以向比特币以外的代码库提出改进建议。与Informational BIP不同,Process BIP 是强制性的,用户必须遵守。例如针对决策进程的过程、指南、改变,在比特币开发过程中使用的工具、环境的改变。任何meta-BIP也应被认为是 Process BIP。 比特币改进协议在 GitHub 中更新版本。
表B-1为比特币改进协议一览表(更新至2014年底) 。需要有关目前 BIP 内容的最新信息,请参考官方版本。
表B-1 BIP一览表

BIP# 链接 标题 作者 类型 状态
1 https://github.com/bitcoin/bips/blob/ master/bip-0001.mediawiki BIP Purpose and Guidelines Amir Taaki Standard Active
10 https://github.com/bitcoin/bips/blob/ master/bip-0010.mediawiki Multi-Sig Transaction Distribution Alan Reiner Informational Draft
11 https://github.com/bitcoin/bips/blob/ master/bip-0011.mediawiki M-of-N Standard Transactions Gavin Andresen Standard Accepted
12 https://github.com/bitcoin/bips/blob/ master/bip-0012.mediawiki OP_EVAL Gavin Andresen Standard Withdrawn
13 https://github.com/bitcoin/bips/blob/ master/bip-0013.mediawiki Address Format for pay-to- script-hash Gavin Andresen Standard Final
14 https://github.com/bitcoin/bips/blob/ master/bip-0014.mediawiki Protocol Version and User Agent Amir Taaki, Patrick Standard Accepted
15 https://github.com/bitcoin/bips/blob/ master/bip-0015.mediawiki Aliases Amir Taaki Standard Withdrawn
16 https://github.com/bitcoin/bips/blob/ master/bip-0016.mediawiki Pay To Script Hash Gavin Andresen Standard Accepted
17 https://github.com/bitcoin/bips/blob/ master/bip-0017.mediawiki OP_CHECKHASHVERIFY (CHV) Luke Dashjr Withdrawn Draft
18 https://github.com/bitcoin/bips/blob/ master/bip-0018.mediawikilink: hashScriptCheck Luke Dashjr Standard Draft
19 https://github.com/bitcoin/bips/blob/ master/bip-0019.mediawiki M-of-N Standard Transactions (Low SigOp) Luke Dashjr Standard Draft
20 https://github.com/bitcoin/bips/blob/ master/bip-0020.mediawiki URI Scheme Luke Dashjr Standard Replaced
21 https://github.com/bitcoin/bips/blob/ master/bip-0021.mediawiki URI Scheme Nils Schneider, Matt Corallo Standard Accepted
22 https://github.com/bitcoin/bips/blob/ master/bip-0022.mediawiki getblocktemplate – Fundamentals Luke Dashjr Standard Accepted
23 https://github.com/bitcoin/bips/blob/ master/bip-0023.mediawiki getblocktemplate – Pooled Mining Luke Dashjr Standard Accepted
30 https://github.com/bitcoin/bips/blob/ master/bip-0030.mediawiki Duplicate transactions Pieter Wuille Standard Accepted
31 https://github.com/bitcoin/bips/blob/ master/bip-0031.mediawiki Pong message Mike Hearn Standard Accepted
32 https://github.com/bitcoin/bips/blob/ master/bip-0032.mediawiki Hierarchical Deterministic Wallets Pieter Wuille Informational Accepted
33 https://github.com/bitcoin/bips/blob/ master/bip-0033.mediawiki Stratized Nodes Amir Taaki Standard Draft
34 https://github.com/bitcoin/bips/blob/ master/bip-0034.mediawiki Block v2, Height in coinbase Gavin Andresen Standard Accepted
35 https://github.com/bitcoin/bips/blob/ master/bip-0035.mediawiki mempool message Jeff Garzik Standard Accepted
36 https://github.com/bitcoin/bips/blob/ master/bip-0036.mediawiki Custom Services Stefan Thomas Standard Draft
37 https://github.com/bitcoin/bips/blob/ master/bip-0037.mediawiki Bloom filtering Mike Hearn and Matt Corallo Standard Accepted
38 https://github.com/bitcoin/bips/blob/ master/bip-0038.mediawiki Passphrase-protected private key Mike Caldwell Standard Draft
39 https://github.com/bitcoin/bips/blob/ master/bip-0039.mediawiki Mnemonic code for generating deterministic keys Slush Standard Draft
40 Stratum wire protocol Slush Standard BIP number allocated
41 Stratum mining protocol Slush Standard BIP number allocated
42 https://github.com/bitcoin/bips/blob/ master/bip-0042.mediawiki A finite monetary supply for bitcoin Pieter Wuille Standard Draft
43 https://github.com/bitcoin/bips/blob/ master/bip-0043.mediawiki Purpose Field for Deterministic Wallets Slush Standard Draft
44 https://github.com/bitcoin/bips/blob/ master/bip-0044.mediawiki Multi-Account Hierarchy for Deterministic Wallets Slush Standard Draft
50 https://github.com/bitcoin/bips/blob/ master/bip-0050.mediawiki March 2013 Chain Fork Post- Mortem Gavin Andresen Informational Draft
60 https://github.com/bitcoin/bips/blob/ master/bip-0060.mediawiki Fixed Length “version” Message (Relay-Transactions Field) Amir Taaki Standard Draft
61 https://github.com/bitcoin/bips/blob/ master/bip-0061.mediawiki “reject” P2P message Gavin Andresen Standard Draft
62 https://github.com/bitcoin/bips/blob/ master/bip-0062.mediawiki Dealing with malleability Pieter Wuille Standard Draft
63 Stealth Addresses Peter Todd Standard BIP number allocated
64 https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki getutxos message Mike Hearn Standard Draft
70 https://github.com/bitcoin/bips/blob/ master/bip-0070.mediawiki Payment protocol Gavin Andresen Standard Draft
71 https://github.com/bitcoin/bips/blob/ master/bip-0071.mediawiki Payment protocol MIME types Gavin Andresen Standard Draft
72 https://github.com/bitcoin/bips/blob/ master/bip-0072.mediawiki Payment protocol URIs Gavin Andresen Standard Draft
73 https://github.com/bitcoin/bips/blob/ master/bip-0073.mediawiki Use “Accept” header with Payment Request URLs Stephen Pair Standard Draft

==目录==

简介
前言
第1章 介绍
第2章 比特币的原理
第3章 比特币客户端
第4章 密钥、地址、钱包
第4章 高级密钥和地址
第5章 交易
第6章 比特币网络
第7章 区块链
第8章 挖矿与共识
第8章 区块链分叉、矿池、共识攻击
第9章 竞争币、竞争块链和应用程序
第10章 比特币安全
附录1 交易脚本的操作符、常量和符号
附录2 比特币改进协议
附录3 pycoin库、ku程序和tx交易程序
附录4 sx工具下一些的命令
本文原链接:http://zhibimo.com/read/wang-miao/Mastering-Bitcoin/Appendix2.html

精通比特币 – 附录1 交易脚本的操作符、常量和符号

附录1 交易脚本的操作符、常量和符号

表A-1列出了将脚本压入堆栈的操作符。

表A-1 入栈操作

关键字 值(十六进制) 描述
OP_0 or OP_FALSE 0x00 一个字节空串被压入堆栈中
1-75 0x01-0x4b 把接下来的N个字节压入堆栈中,N 的取值在 1 到 75 之间
OP_PUSHDATA1 0x4c 下一个脚本字节包括N,会将接下来的N个字节压入堆栈
OP_PUSHDATA2 0x4d 下两个脚本字节包括N,会将接下来的N个字节压入堆栈
OP_PUSHDATA4 0x4e 下四个脚本字节包括N,会将接下来的N个字节压入堆栈
OP_1NEGATE 0x4f 将脚本-1压入堆栈
OP_RESERVED 0x50 终止 – 交易无效(除非在未执行的 OP_IF 语句中)
OP_1 or OP_TRUE 0x51 将脚本1压入堆栈
OP_2 to OP_16 0x52 将脚本N压入堆栈,例如 OP_2 压入脚本“2”

表A-2列出了有条件的流量控制的操作符。

表A-2 有条件的流量控制操作

关键字 值(十六进制) 描述
OP_NOP 0x61 无操作
OP_VER 0x62 终止 – 交易无效(除非在未执行的 OP_IF 语句中)
OP_I 0x63 如果栈项元素值为0,语句将被执行
OP_NOTIF 0x64 如果栈项元素值不为0,语句将被执行
OP_VERIF 0x65 终止 – 交易无效
OP_VERNOTIF 0x66 终止 – 交易无效
OP_ELSE 0x67 如果前述的OP_IF或OP_NOTIF或OP_ELSE未被执行,这些语句就会被执行
OP_ENDIF 0x68 终止 OP_IF, OP_NOTIF, OP_ELSE 区块
OP_VERIFY 0x69 如果栈项元素值非真,则标记交易无效
OP_RETURN 0x6a 标记交易无效

表A-3列出了控制堆栈的操作符。

表A-3 堆栈操作

关键字 值(十六进制) 描述
OP_TOALTSTACK 0x6b 从主堆栈中取出元素,推入辅堆栈。
OP_FROMALTSTACK 0x6c 从辅堆栈中取出元素,推入主堆栈
OP_2DROP 0x6d 删除栈顶两个元素
OP_2DUP 0x6e 复制栈顶两个元素
OP_3DUP 0x6f 复制栈顶三个元素
OP_2OVER 0x70 把栈底的第三、第四个元素拷贝到栈顶
OP_2ROT 0x71 移动第五、第六元素到栈顶
OP_2SWAP 0x72 如果栈项元素值不为0,复制该元素值
OP_IFDUP 0x73 如果栈项元素值不为0,复制该元素值
OP_DEPTH 0x74 把堆栈元素的个数压入堆栈
OP_DROP 0x75 删除栈顶元素
OP_DUP 0x76 复制栈顶元素
OP_NIP 0x77 删除栈顶的下一个元素
OP_OVER 0x78 复制栈顶的下一个元素到栈顶
OP_PICK 0x79 把堆栈的第n个元素拷贝到栈顶
OP_ROLL 0x7a 把堆栈的第n个元素移动到栈顶
OP_ROT 0x7b 翻转栈顶的三个元素
OP_SWAP 0x7c 栈顶的三个元素交换
OP_TUCK 0x7d 拷贝栈顶元素并插入到栈顶第二个元素之后

表A-4列出了字符串操作符。

表A-4 字符串接操作

关键字 值(十六进制) 描述
OP_CAT 0x7e 连接两个字符串,已禁用
OP_SUBSTR 0x7f 返回字符串的一部分,已禁用
OP_LEFT 0x80 在一个字符串中保留左边指定长度的子串,已禁用
OP_RIGHT 0x81 在一个字符串中保留右边指定长度的子串,已禁用
OP_SIZE 0x82 把栈顶元素的字符串长度压入堆栈

表A-5列出了二进制算术和布尔逻辑运算符演示。

表A-5 二进制算术和条件

关键字 值(十六进制) 描述
OP_INVERT 0x83 所有输入的位取反,已禁用
OP_AND 0x84 对输入的所有位进行布尔与运算,已禁用
OP_OR 0x85 对输入的每一位进行布尔或运算,已禁用
OP_XOR 0x86 对输入的每一位进行布尔异或运算,已禁用
OP_EQUAL 0x87 如果输入的两个数相等,返回1,否则返回0
OP_EQUALVERIFY 0x88 与OP_EQUAL一样,如结果为0,之后运行OP_VERIFY
OP_RESERVED1 0x89 终止 – 无效交易(除非在未执行的OP_IF语句中)
OP_RESERVED2 0x8a 终止-无效交易(除非在未执行的OP_IF语句中)

表A-6列出了数值(算法)操作符。

表A-6 数值操作

关键字 值(十六进制) 描述
OP_1ADD 0x8b 输入值加1
OP_1SUB 0x8c 输入值减1
OP_2MUL 0x8d 无效(输入值乘2)
OP_2DIV 0x8e 无效 (输入值除2)
OP_NEGATE 0x8f 输入值符号取反
OP_ABS 0x90 输入值符号取正
OP_NOT 0x91 如果输入值为0或1,则输出1或0;否则输出0
OP_0NOTEQUAL 0x92 输入值为0输出0;否则输出1
OP_ADD 0x93 输出输入两项之和
OP_SUB 0x94 输出输入(第二项减去第一项)之差
OP_MUL 0x95 禁用(输出输入两项的积)
OP_DIV 0x96 禁用(输出用第二项除以第一项的倍数)
OP_MOD 0x97 禁用(输出用第二项除以第一项得到的余数)
OP_LSHIFT 0x98 禁用(左移第二项,移动位数为第一项的字节数)
OP_RSHIFT 0x99 禁用(右移第二项,移动位数为第一项的字节数)
OP_BOOLAND 0x9a 两项都不会为0,输出1,否则输出0
OP_BOOLOR 0x9b 两项有一个不为0,输出1,否则输出0
OP_NUMEQUAL 0x9c 两项相等则输出1,否则输出为0
OP_NUMEQUALVERIFY 0x9d 和 NUMEQUAL 相同,如结果为0运行OP_VERIFY
OP_NUMNOTEQUAL 0x9e 如果栈顶两项不是相等数的话,则输出1
OP_LESSTHAN 0x9f 如果第二项小于栈顶项,则输出1
OP_GREATERTHAN 0xa0 如果第二项大于栈顶项,则输出1
OP_LESSTHANOREQUAL 0xa1 如果第二项小于或等于第一项,则输出1
OP_GREATERTHANOREQUAL 0xa2 如果第二项大于或等于第一项,则输出1
OP_MIN 1:26 输出栈顶两项中较小的一项
OP_MAX 1:27 输出栈顶两项中较大的一项
OP_WITHIN 1:28 如果第三项的数值介于前两项之间,则输出1

表A-7列出了加密函数操作符。

表A-7 加密和散列操作

关键字 值(十六进制) 描述
OP_RIPEMD160 0xa6 返回栈顶项的 RIPEMD160 哈希值
OP_SHA1 0xa7 返回栈顶项 SHA1 哈希值
OP_SHA256 0xa8 返回栈顶项 SHA256 哈希值
OP_HASH160 0xa9 栈顶项进行两次HASH,先用SHA-256,再用RIPEMD-160
OP_HASH256 0xaa 栈顶项用SHA-256算法HASH两次
OP_CODESEPARATOR 0xab 标记已进行签名验证的数据
OP_CHECKSIG 0xac 交易所用的签名必须是哈希值和公钥的有效签名,如果为真,则返回1
OP_CHECKSIGVERIFY 0xad 与CHECKSIG一样,但之后运行OP_VERIFY
OP_VERIFY 0xae 对于每对签名和公钥运行CHECKSIG。所有的签名要与公钥匹配。因为存在BUG,一个未使用的外部值会从堆栈中删除。
OP_CHECKMULTISIGVERIFY 0xaf 与 CHECKMULTISIG 一样,但之后运行OP_VERIFY

表A-8列出了非操作符。

表A-8 非操作

关键字 值(十六进制) 描述
OP_NOP1-OP_NOP10 0xb0-0xb9 无操作 忽略

表A-9保留关键字,仅供内部脚本调试。

表A-9 仅供内部使用的保留关键字

关键字 值(十六进制) 描述
OP_SMALLDATA 0xf9 代表小数据域
OP_SMALLINTEGER 0xfa 代表小整数数据域
OP_PUBKEYS 0xfb 代表公钥域
OP_PUBKEYHASH 0xfd 代表公钥哈希域
OP_PUBKEY 0xfe 代表公钥域
OP_INVALIDOPCODE 0xff 代表当前未指定的操作码

==目录==

简介
前言
第1章 介绍
第2章 比特币的原理
第3章 比特币客户端
第4章 密钥、地址、钱包
第4章 高级密钥和地址
第5章 交易
第6章 比特币网络
第7章 区块链
第8章 挖矿与共识
第8章 区块链分叉、矿池、共识攻击
第9章 竞争币、竞争块链和应用程序
第10章 比特币安全
附录1 交易脚本的操作符、常量和符号
附录2 比特币改进协议
附录3 pycoin库、ku程序和tx交易程序
附录4 sx工具下一些的命令
本文原链接:http://zhibimo.com/read/wang-miao/Mastering-Bitcoin/Appendix1.html

精通比特币 – 第10章 比特币安全

第10章 比特币安全

保护比特币是很具有挑战性的事,因为比特币不像银行账户余额那样体现抽象价值。比特币其实更像数字现金或黄金。你可能听过这样的说法,“现实持有, 败一胜九。”好吧,在比特币的世界里,这样的持有只能让你有一成胜率。而只有拥有解锁比特币的密钥才相当于持有现金或一块贵重金属。你可能会将密钥丢失, 会放错地方,会被盗或者不小心错支了数额。无论是哪种场景,用户都没有办法撤回,因为这就像是将现金丢在了车水马龙的大街上。
不过,与现金、黄金或者银行账户相比,比特币有着一个独一无二的优势。你不能“备份”你的现金、黄金或者银行账户,但你可以像备份其他文件一样,备 份含有密钥的比特币钱包。它可以被复制成很多份,放到不同的地方保存起来,甚至能打印到纸上进行实体备份。比特币与至今为止的其他货币是如此不同,以致于 我们需要以一种全新的思维方式来衡量比特币的安全性。

10.1 安全准则

比特币的核心准则是去中心化,这一点对安全性具有重要意义。在中心化的模式下,例如传统的银行或支付网络,需要依赖于访问控制和审查制度将不良行为 者拒之门外。相比之下,比特币这样的去中心化系统则将责任和控制权都移交给了用户。由于网络的安全性是基于工作量证明而非访问控制,比特币网络可以对所有 人开放,也无需对比特币流量进行加密。
在一个传统的支付网络中,例如信用卡系统,支付是终端开放式的,因为它包含了用户的个人标识(信用卡号)。在初次支付后,任何能获得该标识的人都可 以从所有者那里反复“提取”资金。因此,该支付网络必须采取端对端加密的方式,以确保没有窃听者或中间人可以在资金流通或存储过程中将交易数据截获。如果 坏人获得该系统的控制权,他将能破获破获当前的的交易和支付令牌,他还可以随意动用这笔资金。更糟的是,当客户数据被泄露时,顾客的个人身份信息将被盗窃 者们一览无余。客户这时必须立即采取措施,以防失窃帐户被盗窃者用于欺诈。
比特币则截然不同,一笔比特币交易只授权向指定接收方发送一个指定数额,并且不能被修改或伪造。它不会透露任何个人信息,例如当事人的身份,也不能 用于权限外的支付。因此,比特币的支付网络并不需要加密或防窃听保护。事实上,你可以在任何公开的网络上广播比特币交易的数据,例如在不安全的WiFi或 蓝牙网络上公开传播比特币交易的数据,这对安全性没有任何影响。
比特币的去中心化安全模型很大程度上将权力移交到用户手上,随之而来的是用户们保管好密钥的责任。这对于大多数用户来说并非一件易事,特别是在像智 能手机或笔记本电脑这种能能时刻联网的通用设备上。虽然比特币的去中心化模型避免了常见的信用卡盗用等情况,但很多用户由于无法保管好密钥从而被黑客攻 击。

10.1.1 比特币系统安全开发

对于比特币开发者而言最重要的是去中心化原则。大多数开发者对中心化的安全模型很熟悉,并可能试图将中心化的模型运用到借鉴比特币的应用中去去,这将给比特币带来灭顶之灾。
比特币的安全性依赖于密钥的分散性控制,并且需要矿工们各自独立地进行交易验证。如果你想利用好比特币的安全性,你需要确保自己处于比特币的安全模型里。简而言之,不要将用户的密钥控制权拿走,不要接受非区块链交易信息。
例如,许多早期的比特币交易所将所有用户的资金集中在一个包含着私钥的“热钱包”里,并存放在服务器上。这样的设计夺取了用户的掌控权,并将密钥集中到单个系统里。很多这样的系统都被黑客攻破了,并给客户带来灾难性后果。
另一个常见的错误是接受区块链离线交易,妄图减少交易费或加速交易处理速度。一个“区块链离线交易”系统将交易数据记录在一个内部的中心化账本上, 然后偶尔将它们同步到比特币区块链中。这种做法,再一次,用专制和集中的方式取代比特币的去中心化安全模型。当数据处于离线的区块链上的时候,保护不当的 中心化账本里的资金可能会不知不觉被伪造、被挪用、被消耗。
除非你是准备大力投资运营安全,叠加多层访问控制,或(像传统的银行那样)加强审计,否则在将资金从比特币的去中心化安全场景中抽离出来之前,你应 该慎重考虑一番。即使你有足够的资金和纪律去实现一个可靠的安全模型,这样的设计也仅仅是复制了一个脆弱不堪,深受账户盗窃威胁、贪污和挪用公款困扰的传 统金融网络而已。要想充分利用比特币特有的去中心化安全模型,你必须避免中心化架构的常见诱惑,因它最终将摧毁比特币的安全性。

10.1.2 信任根源

传统的安全体系基于一个称为信任根源的概念,它指的总体系统或应用程序中一个可信赖的安全核心。安全体系像一圈同心圆一样围绕着信任根源来进行开 发,像层层包裹的洋葱一样,信任从内至外依次延伸。每一层都构建于更可信的内层之上,通过访问控制,数字签名,加密和其他安全方式确保可信。随着软件系统 变得越来越复杂,它们更可能出现问题,安全更容易受到威胁。其结果是,软件系统变得越复杂,就越难维护安全性。信任根源的概念确保绝大多数的信任被置于系 统一个不是过于复杂的部分,因此该系统的这部分也相对坚固,而更复杂的软件则在它之上构建。这样的安全体系随着规模扩大而不断重复出现,首先信任根源建立 于单个系统的硬件内,然后将该信任根源通过操作系统扩展到更高级别的系统服务,最后逐次扩散到圈内多台服务器上。
比特币的安全体系与这不同。在比特币里,共识系统创建了一个可信的完全去中心化的公开账本,一个正确验证过的区块使用创世块作为信任的根源,建立一 条直至当前区块的可信任链。比特币系统可以并应该使用区块链作为它们的信任根源。在设计一个多系统服务机制的比特币应用时,你应该仔细确认安全体系,以确 保对它的信任能有据可依。最终,唯一可确信无疑的是一条完全有效的区块链。如果你的应用程序或明或暗地信赖于区块链以外的东西,就该引起重视,因为它可能 会引入漏洞。一个不错的方法评估你应用程序的安全体系:单独考量每个组件,设想该组件被完全攻破并被坏人掌控的场景。依次取出应用程序的每个组件,并评估 它被攻破时对整体安全的影响。如果你的应用程序的安全性在该组件沦陷后大打折扣,那就说明你已经对这些组件过度信任了。一个没有漏洞的比特币应用程序应该 只受限于比特币的共识机制,这意味着其安全体系的信任源于比特币最坚固的部分。
无数个黑客攻击比特币交易所的例子都是因为轻视了这一点,他们的安全体系和设计甚至无法通过基本的审查。这种中心化的实现方式将信任置于比特币区块链之外的诸多组件之上,例如热钱包,中心化的账本数据库,简易加密的密钥,以及许多类似的方案。

10.2 用户最佳安全实践

人类使用物理的安全控制已经有数千年之久。相比之下,我们的数字化安全经验的年纪还不满50岁。现代通用的操作系统并不是十分安全,亦不特别适合用 来存储数字货币。我们的电脑通过一直连接的互联网长时间暴露在外,它们运行着成千上万第三方软件组件,这些软件往往可以不受约束地访问用户的文件。你电脑 上安装的众多软件只要有一个恶意软件,就会威胁到你的文件,可窃取你钱包里的所有比特币。想要杜绝病毒和木马对电脑的威胁,用户要达到一定的计算机维护水 平,只有小部分人能做到。
尽管信息安全经过了数十年的研究和发展,数字资产在绵延不绝的攻势下还是十分脆弱。纵使是像金融服务公司,情报机构或国防承包商这样拥有高度防护和 限制的系统,也经常会被攻破。比特币创造了具有内在价值的数字资产,它可以被窃取,并立即转移给他人而无法撤回。这让黑客有了强烈的作案动机。至今为止, 黑客都不得不在套现后更换身份信息或帐户口令,例如信用卡或银行账户。尽管掩饰和洗白这部分财务信息的难度不小,但越来越多的窃贼从于此道。而比特币使这 个问题加剧了,因为它不需要掩饰或洗白,它本身就是具有内在价值的数字资产。
幸运的是,比特币也有着激励机制,以提高计算机的安全性。如前所述,计算机受威胁的风险是模糊的,间接的,而比特币让这些风险变得明确清晰。在电脑 上保存比特币让用户时刻注意他们需要提高计算机的安全性,结果便是这使得比特币和其它数字货币得以传播和扩散,我们已经看到在黑客技术和安全解决方案双方 的提升。简单来说,黑客现在有着一个非常诱人的目标,而用户也有明确的激励性去保卫自己。
在过去的三年里,随着比特币不断被接纳,一个直接的结果是,我们已经看到信息安全领域取得了巨大创新,例如硬件加密,密钥存储和硬件钱包,多重签名技术和数字托管。在下面的章节中,我们将研究各种实际用户安全中的实践经验。

10.2.1 比特币物理存储

相比数字信息的安全,大多数用户对物理安全更加熟悉,一个非常有效保护比特币的方法是,将它们转换为物理形式。比特币密钥不过是串长数字而已。这意 味着它们可以以物理形式存储起来,如印在纸上或蚀刻成金属硬币上。这样保护密钥就变成了简单地保护印着比特币密钥的物理实体。一组打印在纸上的比特币密钥 被称为“纸钱包”,有许多可以用来创建它们的免费工具。我个人将大部分(99%以上)的比特币存储在纸钱包上,并用BIP0038加密,复制了多份并锁在 保险箱里。将比特币离线保存被称为冷存储,它是最有效的安全技术之一。冷存储系统是在一个离线系统(一个从来没有连接过互联网的系统)上生成密钥,并离线 存储到纸上或者U盘等电子媒介。

10.2.2 硬件钱包

从长远来看,比特币安全将越来越多地以硬件防篡改钱包的形式出现。与智能手机或台式电脑不同,一个比特币硬件钱包只有一个目的,安全地存储比特币。 不像容易受害的常用软件那样,硬件钱包只提供了有限的接口,从而可以给非专业用户提供近乎万无一失的安全等级。我预期将看到硬件钱包成为比特币储存的主要 方式。要想看硬件钱包的实例,请查阅Trezor

10.2.3 平衡风险

虽然大多数用户都非常关注比特币防盗,其实还有一个更大的风险存在。数据文件丢失的情况时有发生。如果比特币的数据也在其中,损失将会让人痛苦不 堪。为了保护好比特币钱包,用户必须非常注意不要剑走偏锋,这样不至于会搞丢比特币。在2011年7月,一个著名的比特币认知教育项目损失了近7,000 枚比特币。为了防止被盗窃,其主人曾之前采取了一系列复杂的操作去加密备份。结果他们不慎丢失了加密的密钥,使得备份变得毫无价值,白白失去了一大笔财 富。如果你保护比特币的方式太过了,这好比于把钱藏在沙漠里,你可能不能再把它找回来了。

10.2.4 分散风险

你会将你的全部家当换成现金放在钱包里随身携带么?大多数人会认为这非常不明智,但比特币用户经常会将所有的比特币放在一个钱包里。用户应该将风险 分散到不同类型的比特币钱包。审慎的用户应该只留一小部分(或许低于5%)的比特币在一个在线的或手机钱包,就像零用钱一样,其余的部分应该采用不同存储 机制分散开来,诸如电脑钱包和离线(冷存储)钱包。

10.2.5 多重签名管理

当一个公司或个人持有大量比特币时,他们应该考虑采用多重签名的比特币地址。多重签名比特币地址需要多个签名才能支付,从而保证资金的安全。多重签 名的密钥应存储在多个不同的地方,并由不同的人掌控。打个比方,在企业环境中,密钥应该分别生成并由若干公司管理人员持有,以确保没有任何一个人可以独自 占有资金。多重签名的地址也可以提供冗余,例如一个人持有多个密钥,并将它们分别存储在不同的地方。

10.2.6 存活能力

一个非常重要却又常常被忽视的安全性考虑是可用性,尤其是在密钥持有者丧失工作能力或死亡的情况下。比特币的用户被告知应该使用复杂的密码,并保证 他们的密钥安全且不为他人所知。不幸的是,这种做法使得在用户无法解锁时,用户的家人几乎无法将该财产恢复。事实上,比特币用户的家人可能完全不知道这笔 比特币资金的存在。
如果你有很多的比特币,你应该考虑与一个值得信赖的亲属或律师分享解密的细节。一个更复杂的比特币生还计划,可以通过设置多重签名,做好遗产规划,并通过专门的“数字资产执行者”律师处理后事。

10.3 总结

比特币是一项全新的,前所未有的,复杂的技术。随着时间的推移,我们将开发出更好的安全工具,而且更容易被非专业人士使用的做法。而现在,比特币用户可以使用许多这里所讨论的技巧,享受安全而无困扰的比特币生活。

==目录==

简介
前言
第1章 介绍
第2章 比特币的原理
第3章 比特币客户端
第4章 密钥、地址、钱包
第4章 高级密钥和地址
第5章 交易
第6章 比特币网络
第7章 区块链
第8章 挖矿与共识
第8章 区块链分叉、矿池、共识攻击
第9章 竞争币、竞争块链和应用程序
第10章 比特币安全
附录1 交易脚本的操作符、常量和符号
附录2 比特币改进协议
附录3 pycoin库、ku程序和tx交易程序
附录4 sx工具下一些的命令
本文源地址:http://zhibimo.com/read/wang-miao/Mastering-Bitcoin/Chapter10.html

精通比特币 – 第9章 竞争币、竞争块链和应用程序

第9章 竞争币、竞争块链和应用程序

比特币是20多年的分布式系统和货币研究的结果,是一项具有革命性的新技术:一种基于工作量证明的去中心化的一致性机制。这项比特币的核心发明引领了一场包括货币体系、金融服务、经济学、分布式系统、投票系统、联合监管和合同体系在内的创新浪潮。
本章将探讨比特币和区块链的发明的衍生物:2009年比特币诞生以来所涌现出来的竞争币、竞争块链和应用程序。大部分篇幅将要探讨竞争币(alt coin),这些电子货币有着与比特币相似的的构建模式出来的,但它们完全独立地运行在自己的网络和块链系统之上。
除了我们将在本章讨论到的竞争币以外,至少还有50种以上的竞争币未能论及,这或许会引来这些竞争币的创造者或粉丝们的不满。但这一章节的目的并不 是为了给提到的竞争币背书,讨论到的竞争币也不是作者根据主观判断选择的。相反,这一章节讨论的是每一种不同的创新性的竞争币里的代表币种,以此来展现整 个竞争币生态系统的宏大和多样。从货币的角度考虑,有些很有趣的竞争币实际上是完全失败的,从而让这些例子研究起来变得更有趣,同时也表明本章所讲并非投 资建议。
由于每天都会有新的竞争币出现,因此我们的讨论难免会有遗漏,甚至漏掉的就是改变历史的币种。目前这个领域的创新速度快得令人兴奋,同时也预示着,从本书发布之日起,这一章的讨论就将不再有时效性和完备性。

9.1 竞争币和竞争块链的分类

比特币是一个开源项目,其源代码也作为其他的一些软件项目的基础。由比特币衍生出来的最常见的形式,就是替代性去中心化货币,简称“竞争币”,这类货币使用跟比特币同样的创建块链的方式来实现自己的电子货币系统。
在比特币的块链上层,可以实现一系列的协议层。元币、元块链或者块链应用程序以块链为平台,或通过增加协议层的方式扩展比特币协议。如彩色币,万事达币以及合约币。
下一部分我们将介绍一些值得注意的竞争币,比如Litecoin, Dogecoin, Freicoin, Primecoin, Peercoin,Darkcoin和Zerocoin。之所以提到这些,并不是因为它们是最好的或是市值最高的竞争币,而是因为他们是历史上某种竞争币 创新的典型代表。
除了竞争币,还有一些关于块链其他实现,他们并不是“币”,可以称之为“竞争块链”(alt chains)。竞争块链通过实现一致性和分布式账簿机制来给诸如合同、名字注册和其他一些应用提供服务。竞争块链使用的是和比特币一样的创建块的机制, 有时也会采用货币或代币的支付机制,但它们的主要目的不是为了维持一个货币系统。我们后续将探讨竞争块链的典型代表:域名币、以太坊和 NXT。
除了比特币系统使用的基于工作量证明的一致性机制这种协议以外,还有基于资源证明或发布证明的一些试验性协议。后续将探讨以Maidsafe和Twister为代表的这类协议。
最后,有一些比特币的竞争者,比如Ripple等,也提供电子货币和交易网络,但并没有像比特币一样使用分布式账簿或者一致性机制。这些不基于块链技术的电子货币系统不在本书的讨论范畴,故不会在本章节出现。

9.2 元币平台

元币和元块链是在比特币之上实现的软件层,也可以认为是覆盖在比特币系统之上的平台/协议,或者是在一个币中币的实现。这些功能层拓展了核心比特币 协议,使得在比特币交易和比特币地址中编码附加信息成为可能。元币的第一个实现利用了大量的 hack 技巧把元数据添加到比特币块链中,比如使用比特币地址编码数据,或者利用空白的交易字段存放新协议层增加的这些元数据。自从交易脚本操作码问世之后,元币 得以直接将信息存放在块链之中。

9.2.1 染色币

染色币是一种在少量比特币上存储信息的一种元协议。一个“被染色的”币,是一定数额的重新用于表达另一种资产的比特币。想象一下,在一张一美金的纸 币上盖上写有一行“这是Acme公司的一份股权的证明”的印章。现在这张一美金的纸币就有了两层意义,它既是流通的货币,同时又是一份股权证明。由于它作 为一份股权证明的价值更大一些,因此你肯定不大会用它来购买糖果吃了(而是保留着),这也让这张纸币不再具有货币的流通属性。染色币也是这个工作原理,通 过将一笔数额不大的具体比特币交易转化为某种证明来指征另外一笔财产。所谓“染色”也仅仅是一种隐喻,并非字面意思,而是指增加属性(比如给个颜色)的方 式。因此,染色币并没有颜色。
染色币由特殊的钱包管理,这类钱包存储和解析依附在染色币上的元信息。用户在使用这类钱包的时候,可以通过增加有着某种特殊含义的标签的方式,将一 般的比特币“染色”为染色币。比如说,这种标签的内容可以表示股票证明、优惠券信息、实际财产、商品或者可收集的代币等等。如何书写和解读这类标签,完全 取决于给这枚比特币“染色”的人,他可以决定附着在这部分比特币上的元信息属性。比如信息类型、能不能再分割、某种符号或描述,或者其他的相关信息。这部 分比特币一旦被染色,这些币可以用来交易、分割、合并和获取利息等。被染色的比特币也可用通过删除附着信息的方式,也能将“被染色的”比特币恢复为普通比 特币。
如例9-1所示,为了演示染色币的使用,我们创建了20单位带有元信息“MasterBTC”的染色币,其中“MasterBTC”代表了可以获取 本书免费拷贝的兑换码。每一单位的这种染色币,都可以被出售或赠予给任何装有兼容染色币协议钱包的人,拥有这种染色币的人可以继续转手或者用它来兑换本书 的免费拷贝。染色币的例子如下。
例9-1 The metadata profile of the colored coins recorded as a coupon for a free copy of the book

{
  "source_addresses": [
    "3NpZmvSPLmN2cVFw1pY7gxEAVPCVfnWfVD"
  ],
  "contract_url": "https://www.coinprism.info/asset/ 3NpZmvSPLmN2cVFw1pY7gxEAVPCVfnWfVD",
  "name_short": "MasterBTC",
  "name": "Free copy of \"Mastering Bitcoin\"",
  "issuer": "Andreas M. Antonopoulos",
  "description": "This token is redeemable for a free copy of the book \"Mastering
Bitcoin\"",
  "description_mime": "text/x-markdown; charset=UTF-8",
  "type": "Other",
  "divisibility": 0,
  "link_to_website": false,
  "icon_url": null,
  "image_url": null,
  "version": "1.0"
}

9.2.2 万事达币

万事达币是另一个建立在比特币之上的协议,该协议支持多个平台对比特币系统的扩展。万事达币使用名为MST的代币来指导交易,但它并不是一种通货。 相反的,它服务于其他应用平台,比如用户货币,智能财产代币,去中心化的财产交易和合约系统等等。就像HTTP协议是TCP协议的应用层一 样,Mastercoin是比特币协议的应用层协议。
类似HTTP协议利用TCP协议的80端口和其他协议的TCP流量加以区别,万事达币通过一个名为“exodus”的比特币地址 (1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P)的进出交易机制来维持协议的运行。万事达币协议正从利用“exodus”地址 和多方签名的机制转向利用OP_RETURN比特币操作符来编码信息。

9.2.3 合约币

合约币是另一个建立在比特币系统之上的协议层。合约币拥有用户货币、可交易代币、金融手段、去中心化财产交易和其他一些功能。合约币利用比特币脚本语言中的OP_RETURE操作符记录元信息来增加比特币交易的额外信息。合约币使用名为XCP的代币维持整个系统的运行。

9.3 竞争币/山寨币

绝大多数的山寨币都来自比特币源代码的克隆,少数则没有使用比特币的任何源码,仅仅是借鉴了块链的模型后自己实现。竞争币或竞争块链(下一节会讲到)都是运行在自己块链上的独立的块链实现。之所以以命名区分,主要是因为竞争币主要用做货币,而竞争块链则不是。
严格意义上讲,比特币的第一个克隆并不是一个竞争币而是一个名为Namecoin的竞争块链,我们将在下一节讨论。
从发布时间来看,第一款竞争币名为IXCoin,出现于2011年8月。IXCoin更改了比特币的一些参数,尤其是通过调整每个新块的奖励为96个币,从而增加了货币的发行量。
2011年9月,Tenebrix发布。Tenebrix是第一款使用了其他工作量证明算法(script)的加密货币,这种算法起初是为了防止密 码遭暴力破解而设计的。Tenebrix的目标是通过使用这种消耗内存的算法来实现一种不依赖GPU和ASIC芯片的电子货币。
除了使用这种算法,莱特币还把新块产生的时间从比特币的10分钟缩短为2分半钟。如果把比特币看作电子货币中的金币的话,那么莱特币的愿景就是当电 子货币系统中的银币,谋求成为比特币的一种轻量的替代货币。考虑到莱特币8,400万的货币总量和相对更快的确认速度,很多莱特币的拥趸相信与比特币相 比,莱特币更适合零售业的交易。
以比特币和莱特币为基础的竞争币数量在2011和2012年呈持续增长状态。到了2013年,有20种竞争币在市场中谋求一席之地。到2013年年 底,这个数字增至200种,2013年也因此被誉为“竞争币之年”。竞争币的增长在2014年依然没有放缓,截至本书截稿,市场上的竞争币数量已经达到了 500种以上,其中超过一半的竞争币克隆自莱特币。
之所以市面上的竞争币有超过500种之多,是因为创造一种新的竞争币非常简单。因此,大多数的竞争币跟比特币区别非常小,并没有多少研究价值。但在 这些通过毫无创意的抄袭和圈钱模式产生的竞争币中间,依然有一些值得一提的非常重要的创新。这些特殊的竞争币,要么采用完全不同的实现方式,要么在比特币 现有的设计模式上加入了重大的创新。下面所列出的就是这些竞争币区别于比特币的三点主要不同:
▷ 货币策略不同
▷ 基于工作量证明的一致性机制不同
▷ 一些特殊的功能,比如更强的匿名性等等
For more information, see this graphical timeline of alt coins and alt chains.

9.3.1 评估竞争币的价值

市面上这么多竞争币,该如何决定关注哪些呢?一些竞争币旨在成为广泛流通的主流货币,还有一些是实验室项目,仅仅是为了测试不同的特性和货币模型,更多的仅仅是那些发起者们创富的手段。我一般通过某款竞争币的决定性特性和市场规模来对其进行价值评估。
以下是关于竞争币和比特币的不同之处的几个问题:
▷ 这款竞争币有没有引入重大的创新?
▷ 如果有,那么这项创新是不是足够吸引使用比特币的用户转移过来?
▷ 这款竞争币是不是致力于某一细分领域或应用?
▷这款竞争币可以吸引到足够多的矿工来抵御一致性攻击吗?
还有一些有关关键财务和市场指标的问题:
▷ 这款竞争币的市场总值是多少?
▷ 整个系统的用户/钱包规模大概是多少?
▷ 接受其支付的商家有多少?
▷ 整个系统每日的交易数是多少?
▷ 交易总量是多少?
本节,我们将主要在技术和创新层面上就上述第一组的四个问题进行讨论。

9.3.2 货币属性不同于比特币的竞争币:莱特币、狗狗币和Freicoin

比特币本身所具有的一些货币属性令其成为总额固定并且不通货膨胀的货币。比如,比特币的总量为固定的2,100万枚,新币的生成速度随时间递减,块 生成速度为十分钟一块,这个频率也控制了整个比特币系统交易的确认速度和新币的生成。很多竞争币通过对这些货币属性的微调,来达到实现不同的货币政策的目 的。在这类竞争币中,值得一提的有以下几种。

莱特币

莱特币是最早的一批竞争币中的一员,自2011年发布至今,已经成为继比特币之后的第二成功的电子货币。它的主要创新在于两点,一是使用了scrypt作为工作量证明算法(继承自前文提到的Tenebrix),二是更快的货币参数。
▷ 出块速度:2分半
▷ 货币总量:到2140年达到8,400万
▷ 一致性算法:scrypt
▷ 市场总值:1亿6,000万美金(截至2014年年中)

狗狗币

狗狗币是基于莱特币的一款竞争币,于2013年12月发布。狗狗币之所以值得一提,主要是因为其飞快的出块速度和惊人的货币总量,其目的也是为了鼓 励用户交易和给小费等。狗狗币始于一个玩笑,在其2014年快速衰退之前,一经发布就风行于巨大而活跃的用户社区。下面是 狗狗币的一些特性:
▷ 出块速度:60秒
▷ 货币总量:到2015年达到100,000,000,000(1,000亿)
▷ 一致性算法:scrypt
▷ 市场总值:1,200 万美金(截至2014年年中)

Freicoin

Freicoin于2012年7月发布。它是一种滞留性通货,可以理解为存在钱包中的货币的利率为负数。为了鼓励用户消费和减少储 蓄,Freicoin拟定了一个4.5%的APR fee。Freicoin值得一提的原因是它的货币策略跟比特币的通货紧缩策略恰恰相反。作为货币,Freicoin并不是非常成功,但它是竞争币所能表 现的多样性货币策略的生动体现。
▷ 出块速度:10分钟
▷ 货币总量:到2140年达到1亿
▷ 一致性算法:SHA256
▷ 市场总值:13万美金(截至2014年年中)

9.3.3 一致性机制创新:peercoin,Myriad,Blackcoin,vericoin 和 NXT

比特币的一致性机制建立在基于SHA256算法的工作量证明之上。第一款引入scrypt算法作为一致性机制的竞争币是为了便于CPU挖矿,避免 ASIC矿机可能导致的算力集中化的问题。在那之后,对于一致性机制的创新一直很活跃。诸多竞争币陆续引进了包括scrypt,scrypt-N, Skein, Groestl, SHA3, X11, Blake 在内的算法来实现工作量证明的一致性机制。而在2013年,作为工作量证明的一种替代机制——权益证明的出现,成为现代竞争币的基础。
权益证明系统中,货币的所有人可以将自己的通货做利息抵押。类似于存款证明(CD),参与者可以保有他们货币的一部分,通过利息和矿工费的方式获取回报。

Peercoin

Peercoin于2012年8月发布,是首款工作量证明和权益证明混用的竞争币。
▷ 出块速度:10分钟
▷ 货币总量:没有上限
▷ 一致性算法:工作量证明和权益证明混用
▷ 市场总值:140万美金(截至2014年年中)

Myriad

Myriad于2014年2月发布,值得一提的是,它同时使用5种工作量证明算法(HA256d, Scrypt, Qubit, Skein, or Myriad-Groestl),根据参与矿工的情况动态选择。这是为了让整个Myriad系统不受集中化的ASIC矿机的影响,同时也加强了其抵御一致 性攻击的能力。
▷ 出块速度:平均30秒
▷ 货币总量:到2024年达到 20 亿
▷ 一致性算法:多重算法的工作量证明机制
▷ 市场总值:12万美金(截至2014年中)

Blackcoin

Blackcoin发布于2014年2月,使用的是权益证明的一致性机制。同时,它引入的可以根据受益自动切换到不同竞争币的“多矿池”机制也值得一提。
▷ 出块速度:1分钟
▷ 货币总量:没有上限
▷ 一致性算法:权益证明机制
▷ 市场总值:370万美金(截至2014年年中)

VeriCoin

VeriCoin于2014年5月发布。它使用了权益证明机制,并辅以随着市场供需关系动态调整的利率。它也是首款可以直接在钱包中兑换比特币支付的竞争币。
▷ 出块速度:1分钟
▷ 货币总量:没有上限
▷ 一致性算法:权益证明机制
▷ 市场总值:110万美金(截至2014年年中)

NXT

NXT(发音同Next)是一种“纯”权益证明的竞争币,它甚至不采用工作量证明的挖矿机制。NXT是一款完全自己实现的加密货币,并非衍生自比特 币或其他竞争币。NXT具有很多先进的功能,包括名字注册、去中心化资产交易、、集成的去中心化加密信息和权益委托。NXT的拥趸称NXT为新一代加密货 币或者或者加密货币2.0。
▷ 出块速度:1分钟
▷ 货币总量:没有上限
▷ 一致性算法:权益证明机制
▷ 市场总值:3,000万美金(截至2014年年年中)

9.3.4 多目的挖矿创新:Primecoin, Curecoin, Gridcoin

比特币的工作量证明机制只有一个目的:维护比特币系统的安全。跟维护一个传统货币系统比起来,挖矿的成本并不高。然而,某些批评者认为某些批评者认 为挖矿这一行为是一种浪费。新一代的加密货币试图解决这个争议。多目的挖矿算法就是为了解决工作量证明导致的“浪费”问题而出现的。多目的挖矿在为货币系 统的安全加入额外需求的同时,也为该系统的供需关系加入了额外的变量。

Primecoin

Primecoin是在2013年7月发布的。它它的工作量证明算法可以搜索质数,计算孪生素数表。素数在科研领域有广泛的应用。 Primecoin的块链中包含其发现的质数,因此Primecoin的块链在用于维护公共交易账簿的同时,还会产生一份公开的科学发现(素数表)。
▷ 出块速度:1分钟
▷ 货币总量:没有上限
▷ 一致性算法:含有素数计算功能的工作量证明算法
▷ 市场总值:130万美金(截至2014年年中)

Curecoin

Curecoin于2013年5月发布。通过Folding@Home项目,它将SHA256工作量证明算法和蛋白质褶皱结构的研究结合了起来。蛋白质褶皱研究需要对蛋白质进行生化反应的模拟,用于发现治愈疾病的新药,但这一过程需要大量的计算资源。
▷ 出块速度:10分钟
▷ 货币总量:没有上限
▷ 一致性算法:含有蛋白质结构研究功能的工作量证明算法
▷ 市场总值:6.8万美金(截至2014年年中)

Gridcoin

Gridcoin是2013年10月对外发布的。它结合了以scrypt为基础的工作量证明算法和参与BOINC计算项目的补贴机制。BOINC ——伯克利开发网络计算系统——是一项用于科学研究网格计算的开放协议。Gridcoin网络输出算力给BOINC这个计算平台,而不是自己直接用算力去 解决某一个具体的科学问题。
▷ 出块速度:150秒
▷ 货币总量:没有上限
▷ 一致性算法:整合了BOINC网格计算的工作量证明算法
▷ 市场总值:12.2万美金(截至2014年年中)

9.3.5 致力于匿名性的竞争币:CryptoNote, Bytecoin, Monero, Zerocash/Zerocoin, Darkcoin

比特币一直被误解为匿名货币。事实上,将个人和比特币地址关联起来,是一件相对容易的事情。利用大数据分析可以很容易地得到某一比特币地址的消费习 惯。一些竞争币试图通过增强匿名性来解决这个问题。最初尝试的是Zerocoin,它是一种建立在比特币协议之上的元币协议,最早发布于2013 IEEE安全隐私讨论会上。截至本书完稿时,基于这个协议的Zerocash的竞争币系统还在开发当中。匿名性的另一种实现名为CryptoNote,初 见于2013年10月的一篇论文。CryptoNote是一种由多个竞争币一起实现的基础技术,稍后将重点讨论。除了上述两种实现之外,还有一些其他的独 立的匿名币,比如利用影子地址和交易混淆来达到匿名性目的的Darkcoin。

Zerocoin/Zerocash

Zerocoin是 2013 年由Johns Hopkins发表的电子货币匿名性的一种理论实现。截至本书完稿时,基于这一理论的Zerocash的竞争币系统还在开发当中。

CryptoNote

CryptoNote是一种提供了电子货币基础的匿名性的参考实现,于2013年10月发布。它可以被克隆继而衍生出其他实现,并且内建了一个周期 性的重置机制使其不能用作货币。很多竞争币是基于CryptoNote实现的。比如Bytecoin (BCN), Aeon (AEON), Boolberry (BBR), duckNote (DUCK), Fantomcoin (FCN), Monero (XMR), MonetaVerde (MCN), 和Quazarcoin(QCN)。值得指出的是,CryptoNote是一个没有借鉴比特币的完全独立的实现。

Bytecoin

Bytecoin是CryptoNote的第一个实现,基于CryptoNote技术提供切实可行的匿名货币方案。Bytecoin于2012年发 布。这里要留意一下,在基于CryptoNote的Bytecoin发布之前,有一个名字同样为Bytecoin的电子货币,货币符号为BTE,而基础 CryptoNote的Bytecoin的货币符号为BCN。Bytecoin使用了基于Cryptonight的工作量证明机制,每个实例需要至少 2MB的RAM,这使得GPU和ASIC矿机无法在Bytecoin网络中运行。Bytecoin继承了CryptoNote的环签名、不可链接交易和块 链抗分析匿名性等机制。
▷ 出块速度:2分钟
▷ 货币总量:1,840亿BCN
▷ 一致性算法:基于Cryptonight的工作量证明机制
▷ 市场总值:300 万美金(截至2014年年中)

Monero

Monero是CryptoNote的另一个实现。其货币曲线比Bytecoin稍显平缓,在系统运行的最开始四年发行 80% 的货币。它提供一些基于 CryptoNote 的匿名性特性。
▷ 出块速度:1分钟
▷ 货币总量:1,840万XMR
▷ 一致性算法:基于Cryptonight的工作量证明机制
▷ 市场总值:500万美金(截至2014年年中)

Darkcoin

Darkcoin在2014年1月发布。Darkcoin通过一个名为DarkSend的混淆协议来实现匿名货币。值得一提的是,Darkcoin 在工作量证明算法中使用了11轮不同的哈希函数(blake, bmw, groestl, jh, kECCak, skein, luffa, cubehash, shavite, simd, echo)
▷ 出块速度:2.5分钟
▷ 货币总量:最高2,200万DRK
▷ 一致性算法:基于多轮哈希的工作量证明算法
▷ 市场总值:1,900万美金(截至2014年年中)

9.4 非货币型竞争区块链

非货币型竞争币区块链是区块链设计模式的另类实现,并不主要作为货币使用。当然不少这种区块链的确含有货币,只不过它们的货币仅是一种象征,用于分配其他东西,比如一种资源或者一份合约。换句话说,货币并不是非货币型竞争币区块链的要点,仅仅是一种次要特征。

9.4.1 域名币

域名币是比特币源代码的首个克隆产物,它是一种使用区块链的去中心化平台,用来注册和转让键-值对。域名币支持全球的域-名注册,类似因特网上的域 -名注册系统。目前域名币作为根域名.bit的替代性域名服务(DNS)使用。域名币也可以用来注册其他命名空间下的名称和键-值对,例如存储邮件地址、 密钥、SSL证书、文件签名、投票系统和股票凭证之类,以及许多其他应用。
域名币系统也有它自己的货币(符号为NMC),用于支付域名注册及转让的交易费用。依照当前价格(2014年8月),注册一个域名的费用是0.01NMC,大约相当于1美分。与比特币类似,这些费用支付给域名币的矿工。
域名币的基本参数与比特币相同:
▷ 出块速度:10分钟
▷ 货币总量:2140年将达2,100万NMC
▷ 共识算法:SHA256工作量证明法
▷ 市场总值:1,000万美元(截至2014年年中)
域名币的命名空间不受限制,任何人都可以以任意方式使用任意命名空间。不过,一些特定的命名空间因为有着一致认可的规范,因此当从区块链读取它们的 时候,应用层的软件知道如何进行后续操作。无论使用何种软件,假如区块链遭到篡改,读取这个特定命名空间的软件都会报错。域名币一些流行的命名空间有:
▷ d/ 是 .bit 域名的域-名命名空间
▷ id/ 是存储诸如邮件地址、PDP 密钥等个人身份验证的命名空间
▷ u/ 是一个补充性的、更加结构化的存储身份的规范(基于公开规范)
域名币的客户端与比特币核心十分类似,因为前者的代码是从后者衍生而来的。在安装过程中,域名币客户端会下载其区块链的完整拷贝,下载完成之后便可进行查询和注册域名了。域名币客户端有3条可用命令:
name_new 查询并提前注册一个域名
name_firstupdate 公开注册一个域名
name_update 改变域名的信息或刷新域名
例如,注册mastering-bitcoin.bit这个域名,需使用按如下方法使用name_new指令:

$ namecoind name_new d/mastering-bitcoin
[
    "21cbab5b1241c6d1a6ad70a2416b3124eb883ac38e423e5ff591d1968eb6664a",
    "a05555e0fc56c023"
]

name_new通过给该域名创建一个哈希数和一个随机密钥来册一个对域名的声明。命令执行 完毕后返回的两个字符串分别是哈希数和随机密钥(上例中的a05555e0fc56c023),二者可用于公开此次域名注册。一旦上述声明记录于域名币的 区块链上,该声明便可转换为一个公开的注册。使用name_firstupdate命令便可达到此目的,当然,要提供随机密钥:

$ namecoind name_firstupdate d/mastering-bitcoin a05555e0fc56c023 "{"map": {"www": {"ip":"1.2.3.4"}}}}"
b7a2e59c0a26e5e2664948946ebeca1260985c2f616ba579e6bc7f35ec234b01

这个例子将会把域名 www.mastering-bitcoin.bit 映射到1.2.3.4这个IP地址上,返回的哈希数则是交易ID,能够用于追踪此次注册。你可以运行name_list命令来查看自己名下注册了哪些域名:

$ namecoind name_list
[
    {
        "name" : "d/mastering-bitcoin",
        "value" : "{map: {www: {ip:1.2.3.4}}}}",
        "address" : "NCccBXrRUahAGrisBA1BLPWQfSrups8Geh",
        "expires_in" : 35929
    }
]

每生成36,000个区块(大约200到250天),域名币上的注册就需要更新一次。不过name_update命令不 收取费用,因此续约域名是免费的。也有第三方提供商提供一个网页界面来帮助处理注册、自动续约及更新等事宜,当然,这要花费你少许费用。使用第三方提供商 的好处是你不需要运行一个域名币客户端了,坏处是你失去了对域名币提供去中心化的域名注册服务的自主控制。

9.4.2 Bitmessage

Bitmessage是一个实现了去中心化安全消息服务的比特币竞争币区块链,其本质上是一个无服务器的加密电子邮件系统。Bitmessage可 以让用户通过一个Bitmessage地址来编写和发送消息。这些消息的运作方式与比特币交易大致相同,但区别在于消息是短暂瞬态的——如果超过两天还没 被传送至目的节点,消息将会丢失。发送方和接收方都是假名,除了一个bitmessage地址外,他们没有其他的身份标识。但发送方和接收方有严格的身份 验证,这意味着不会出现“欺骗”消息。Bitmessage都是经加密再发送给接收方,Bitmessage网络也因此可以抵御全面监视。除非网络偷听者 破坏了接收方的设备,否则他们无法截取邮件消息。

9.4.3 以太坊

以太坊是一种图灵完备的平台,基于区块链账簿,用于合约的处理和执行。它不是比特币的一个克隆,而是完完全全独立的一种设计和实现。以太坊内置一种 叫做ether的货币,该货币是付合约执行之费用所必须的。以太坊区块链记录的东西叫做合约,所谓合约,就是一种低级二进制码,也是一种图灵完备语言。本 质上,合约其实是运行在以太坊系统中各个节点上的程序。这些程序可以存储数据、支付及收取、存储ether 以及执行无穷范围(因此才叫图灵完备)的计算行为,在系统中充当去中心化的自治软件代理。
以太坊能够实现一些颇为复杂的系统,这些系统甚至还能自我实现为其他的竞争币区块链。举例来说,下面就是一个类域名币的域名注册合约,使用以太坊代码编写(或者更准确地说,使用一种可编译为以太坊代码的高级代码编写):

if !contract.storage[msg.data[0]]: # Is the key not yet taken?
    # Then take it!
    contract.storage[msg.data[0]] = msg.data[1]
    return(1)
else:
    return(0) // Otherwise do nothing

9.5 加密货币的未来

总体来看,加密货币的未来甚至比特币还要光明。这是因为,比特币引入了这样一种全新的形式,那就是去中心化的组织和共识,而且这种形式已经催生了大 量不可思议的创新。这些创新很有可能影响到社会中相当广泛的行业,从分布式系统科学到金融、经济、货币、中央银行以及企业管理,不一而足。在以前,很多人 类活动都需要一个中心化的机构或组织来实现权威或可信控制点的功能,现在,这些都可以去中心化了。区块链和共识系统的发明,还会显著降低大型系统在组织及 协调上的花销,同时也将消除权力攫取、腐败及管制俘获的可趁之机。

==目录==

简介
前言
第1章 介绍
第2章 比特币的原理
第3章 比特币客户端
第4章 密钥、地址、钱包
第4章 高级密钥和地址
第5章 交易
第6章 比特币网络
第7章 区块链
第8章 挖矿与共识
第8章 区块链分叉、矿池、共识攻击
第9章 竞争币、竞争块链和应用程序
第10章 比特币安全
附录1 交易脚本的操作符、常量和符号
附录2 比特币改进协议
附录3 pycoin库、ku程序和tx交易程序
附录4 sx工具下一些的命令本文原链接:http://zhibimo.com/read/wang-miao/Mastering-Bitcoin/Chapter09.html