区块链 1.0:货币与比特币
区块链(Blockchain) 是一种分布式数据库,起源自比特币。
区块链是一串使用密码学方法相关联产生的数据块,用于验证其信息的有效性(防伪)和生成下一个区块,区块链和比特币是一起诞生的,比特币也是区块链1.0时代最重要的应用。
区块和区块链
(示意图:一个典型的区块结构)
(创世区块)
区块链是由区块串成的链,每一个区块都在头部保存了上一个区块的HASH值,从而形成了链式的结构,比较特殊的是,比特币的第一个区块(也被称为创世区块)是由一个据信叫中本聪的人构造而成的,创世区块没有指向任何区块。
有了创世区块之后,人们就可以通过”挖矿“来制造比特币,”挖矿“其实就是创建区块的过程,其本质是解决数学问题:
sha256(sha256(new_block_template)) <= target
new_block_template是一个新的区块模板,一个新的区块需要包含任意数量的当前没有确认的交易和区块的基本信息,其中coinbase交易和随机数由矿工任意填写。
我们知道sha256运算的范围是0~2^256-1共2^256种可能,而且sha256的运算结果分布足够均匀随机,所以矿工们想要解上面的不等式,只能有一种办法:不停的变换随机数和/或coinbase字段然后重复计算hash值以期找到满足不等式的block。矿工一旦找到满足上述不等式的block,广播到比特币网络并被网络接受,新的区块就被创建了,所有的矿工会在这个新区块的基础上构建下一个区块。
根据中本聪的设想,区块应该每10分钟创建一个,所以,比特币的网络会每隔2016个区块review一次区块的平均产出时间,如果小于10分钟,说明参与不等式求解的”计算能力“增多,需要适量调小target以增加解题的难度,反之,就会增大target以减小解题的难度。参与区块创建的矿工会得到比特币的奖励,这笔奖励最初为50BTC,每隔210000个区块(约四年时间)减半,最终减少到0,目前每个区块的挖矿奖励为25BTC,在今年晚些时候会减少到12.5BTC。
交易
这里先明确一点,比特币网络里面,其实并不存在所谓的比特币,存在的只是很多”没有花费的交易(unspent transaction outputs ,UTXO)”,UTXO指经过网络验证,却没有出现在其它任何交易inputs里面的交易。矿工们创建区块,其实只是创建了一个特殊的UTXO(即coinbase):这个特殊的交易没有输入(任意填写),只有输出。
到这里大家可能很困惑了, 我们先来看下交易的典型结构:
(coinbase交易, 假设该交易的id为f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6)
(普通交易)
我们从coinbase开始来解释比特币网络的交易,矿工在创建区块时,coinbase是可以写入任意内容的,一个正常的矿工可能会这么做:Inputs字段写入一些自己个性化的内容和随机内容(以满足上文中的不等式),Outputs中的Value字段填写挖矿奖励,scriptPubKey字段写入一段脚本,这段脚本使得自己下次可以“花费”掉这笔交易。
这里先铺垫一下比特币的私钥、公钥和地址的关系:
比特币私钥(private key)类似于密码,是一段只有你自己知道的不限制长度的数据,一般为了保证安全性,会使用真随机数发生器生成不少于256bit的数,私钥通过单向算法SECP256K1生成公钥(public key),再将公钥经过单向算法RIPEMD160生成公钥哈希(public key hash),最后将公钥哈希经过BASE58编码加上校验值后生成比特币地址(address),如下图所示,即,有了私钥,我们可以推出所有,有了公钥,可以推算出地址(和公钥哈希可以互相转换), 但是不能推出私钥。
(比特币私钥、公钥、地址之间的关系)
回到上面,我们来看下一个普通的交易是如何“花费”掉之前的交易的,普通交易的inputs就不能随便填写了,需要填写你可以花费掉的交易,并向全网证明这的确是你可以花费的交易,具体过程参照上面的coinbase交易和普通交易,普通交易的发起人指明要“花费”coinbase这一UTXO,并在inputs的scriptSig字段里填上了自己的签名和公钥,广播到全网,接受到这笔交易的节点通过如下过程验证交易:
首先执行scriptSig,将签名和公钥入栈
接着执行scriptPubKey的第一个命令OP_DUP复制栈顶元素
接着执行OP_HASH160,获取公钥的哈希
接着入栈pub_hash’ (35df7e6daa60393b0ed2474a21713a845a2212dd)
接着执行OP_EQUALVERIFY校验栈顶的两个元素(pub_hash和pub_hash’)是否相等,相等则继续执行,不等则验证失败,退出执行。这一步的意义是保证之前的交易的送达地址和这次交易的发送地址匹配(公钥哈希和地址是等价的)
最后执行OP_CHECKSIG使用pub和sig校验签名,校验通过这笔交易即会被网络接受,否则,退出执行。只有持有正确私钥的人才能执行正确的签名操作,所以这一步的意义是验证该交易是否由实际拥有人发起。
上述过程是一个标准的“Pay-to-PubkeyHash”, 即比特币网络标准的转账脚本结构,实际上比特币提供了一个类似Forth语言,基于堆栈的脚本系统,使得使用者可以完成一些更复杂的交易逻辑。
比特币的问题
区块链容量问题
比特币的核心理念是去中心化,所有的节点都保留区块链的完整副本,但是截止目前,整个区块链的容量已经超过60GB,这使得运行一个比特币节点的成本开始变得高昂,变相使得比特币的节点变少,这与比特币去中心化的初衷相背离。
算力攻击问题
自从专业的矿机被发明已来,比特币网络的挖矿难度越来越大,个人独立挖矿已经变得基本不可能,矿工们基本都是把自己的算力接入到集中式的矿池来参与挖矿,目前全网最大的两个矿池算力之和已经超过全网的50%,这带来一个问题,因为理论上控制超过全网50%算力就可以篡改区块的生成,这给比特币带来了信任危机。
汇率波动问题
目前比特币交易市场已经完全沦为了投机市场,小白投资者往往被庄家操盘血本无归,期货、杠杆等各种衍生工具更是加剧了这一过程。
法律问题
目前多数国家并不承认比特币的合法地位,比特币由于其去中心化的特性也并不易被监管,这使得基于比特币的赌博、毒品和军火交易也异常猖獗,这些也给其未来发展添加了很大的变数。
总结
比特币本身更像是一个试验性的产物,有着许多缺点和不完善的地方。但比特币带来的区块链技术的去中心化、分布式自治等却有着革新未来的力量,我们将在2.0和3.0章节里继续分享有关区块链的创新和可能的未来。
参考:
[1]比特币,https://zh.wikipedia.org/wiki/%E6%AF%94%E7%89%B9%E5%B8%81
[2]区块链,https://zh.wikipedia.org/wiki/%E5%8C%BA%E5%9D%97%E9%93%BE
图片来源bitcoin86.com
本文作者 :熊荣正(点融黑帮),2016年4月加入点融成都数据团队参与数据相关产品研发。曾参与比特币相关创业项目,对比特币、区块链、互联网金融等领域比较感兴趣。平时喜欢吃、睡、听音乐。
关键字:产品经理, 比特币
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!