颠覆未来:区块链技术
区块链技术
1 背景
区块链之父-中本聪,主要来自比特币技术。2009年的一篇paper,Bitcoin: A Peer-to-Peer Electronic Cash System 提出基于 区块链技术的电子货币技术。 paper code
[bitcoin]: https://bitcoin.org/bitcoin.pdf
[sourcecode]: https://github.com/bitcoin/bitcoin
比特币特点:
- 可以用点对点的网络解决方案解决双重支付问题
- 没有类似铸币厂一级的第三方的信任机构
- 使用者可以完全匿名
- 可以用哈希现金形式的 工作量证明来制造新的货币
- 用于制造新货币的“工作量证明”可以用来预防双重支付
作为比特币的基础技术,区块链技术是同时出现的。
2 区块链
区块链本质上是一个去中心化的分布式账本数据库,是比特币的底层技术,和比特币一起出现。区块链本身其实是一串使用 密码学相关联所产生的数据块,每一个数据块中包含了多次比特币网络交易有效确认的信息。
每当有加密交易产生时,网络中有强大运算能力的矿工就开始利用算法解密验证交易,创造出新的区块来记录最新的交易。 新的区块按照时间顺序线性的被补充到原有的区块链末端,这个账本就会不停的增长和延长。
通过复杂的公共钥匙和私人钥匙的设置,区块链网络将整个金融网络的所有交易的脚本实时广播,实时将交易记录分发到每 一个客户端,同时还能保证每个人只能对自己的财产进行修改。账本里也会有别人的交易记录,虽然可以看到数值和对应的 交易地址(一串加密信息),但是如果不借用其他技术手段是根本无法知道交易者的真实身份。
总结:
- 数据库。区块链是一种公共数据库,它记录了网络上所有的交易信息,随时更新,让每个用户可以通过合法手段从 中读取信息,写入信息,但是通过技术手段,防止以往数据被篡改;
- 分布式,去中心化,去信任。区块链是一种分布式系统,它不存储放置在某一两个特定的服务器或者安全节点上,而是分 布式的存在于网络上所有的完整节点上,在每一个节点保留信息备份;
- 网络底层协议。区块链是一种共识协议,基于这些协议,可以开发出很多的实际应用;这些应用在每一时刻保存一条最长的、 最具权威的、共同认可的数据记录,并遵循共同认可的机制进行无须中间权威仲裁的、直接的、点对点的交互信息。
3 区块链应用
3.1 金融领域
区块链技术应用在比特币,所以最先出现在颠覆金融领域,银行,证券交易等等。 中国人民银行数字货币研讨会在京召开 数字货币
中国分布式总账基础协议联盟(China Ledger联盟)是2016年4月19日由中证机构间报价系统股份有限公司等11家机构共同 发起的区块链联盟上海证券交易所前工程师白硕出任了该联盟技术委员会主任,联盟秘书处则设在了万向集团旗下的万向区块链实验室. 中国分布式总账基础协议联盟
3.2 区块链应用项目
- 医疗去中心化
- 存在性证明
- 智能合约
- 物联网
- 身份验证
- 预测市场
- 资产交易
- 电子商务
- 社交通讯
- 文件存储
- 数据API
3.3 颠覆未来
淘宝,通过区块链技术实现自由交易,担保交易???
金融,互联网金融,去中心化,去信任,???支付
4 区块链技术问题
区块链技术目前还不成熟,各个国家都在进行投入,各国的态度也不一样,但是作为一个底层技术,的确在很多方面对现存的 应用可以进行有效的优化。随着区块链技术的不断规范,未来相对于其他技术,区块链技术将大放异彩。
5 参考
区块链重塑经济与世界,入门技术书籍
6 附录
实现了下bitcoin paper提到的 We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain
import math def AttackerSuccessProb(q, z): p = 1.0 - q lambda_v = z
* (q / p) sum = 1.0 for k in xrange(0, z + 1): poisson =
math.exp(-lambda_v) for i in xrange(1, k + 1): poisson *= lambda_v
/ i sum -= poisson * (1 - math.pow(q / p, z - k)) return sum q =
[0.1, 0.3, 0.5, 0.7] for i in q: print('q = %f'%(i)) for j in
xrange(10): print('z = %d' % (j))
print('{0:.20f}'.format(AttackerSuccessProb(i, j)))