社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  区块链

解密!从密码学的角度谈谈区块链的缘起

Unitimes • 8 年前 • 323 次点击  

unitimes.media

全球视角,独到见解


“比特币的诞生及其设计确实和密码学关系甚密,也确实在一定程度上区别于传统的货币体系。但我认为我们更需要关注的是比特币背后的区块链技术及其密码学内核。”



基于密码学技术的电子加密货币比特币,并非加密货币的首创,早在20世纪80年代,密码朋克(Cypherpunks mailing list)就有了加密货币的最初设想。以前就有很多加密数字货币的设计,为什么比特币会成功呢,事实就是中本聪通过“区块链”这个巧妙的近似天才的发明扫清了障碍。


1993年,Eric Hughes和其他几个人,创建了一个“密码朋克邮件名单”的加密电子邮件系统,简称“密码朋克”,来对抗受到监控的互联网电子邮件。


在此我们不得不谈到一个略显神秘的团体:密码朋克(Cypherpunk)。这个团体是密码天才们的松散联盟,密码朋克在1992年到2001年间最为活跃,包括电脑黑客、密码学家和追求隐私的狂热者,后来“密码朋克”也用来指代其用户成员。他们极力主张用密码技术保护个人隐私不受其他人或者政府的侵犯,但在当时,密码技术并没有广泛应用在日常生活中,而是被政府垄断,主要用于情报和保密。


比特币的创新中大量借鉴了密码朋克的贡献。密码朋克这个词一部分来源于密码(Cipher),这在密码学中意为用于加密解密的算法;一部分来源于赛博朋克(Cyberpunk),这是指那个时代流行的一个科幻流派。这样的组合有很微妙的意味,散发着改变社会的激进理想。区块链和密码朋克到底有何联系,这一点我们目前还无从得知。


其中,密码朋克们的观点有一种是:现在社会不断蔓延着对个人隐私和权利的侵蚀。他们互相交流着对这一问题的关注,并认为在数字货币时代保护隐私对于维持一个开放社会是至关重要的。而这一理念在比特币中得到了体现:去中心化的设计、对匿名的拥抱、自由主义的原则。其实,密码朋克本身就是数字货币最早的传播者,在其电子邮件组中,常见关于数字货币的讨论,并有一些想法付诸实践。


早期数字货币的探索及比特币的诞生


比特币其实并不是数字货币的首次尝试。据统计,比特币诞生之前,失败的数字货币或支付系统多达数十个。正是这些探索为比特币的诞生提供了大量可借鉴的经验。


2008年9月,以雷曼兄弟的倒闭为开端,金融危机在美国爆发并向全世界蔓延。为应对危机,世界各国政府和中央银行采取了史无前例的财政刺激方案和扩张的货币政策并对金融危机提供紧急援助。这些措施同时也引起了广泛的质疑。


2008年10月31日下午2点10分,在一个普通的密码学邮件列表中,几百个成员均受到了自称是中本聪的人的电子邮件,“我一直在研究一个新的电子现金系统,这完全是点对点的,无需任何可信的第三方”,然后提供了一个白皮书,其中描述了一个新的货币体系。同年11月16日,中本聪发布了比特币代码的先行版本。


2009年1月3日,中本聪在位于芬兰赫尔辛基的一个小型服务器上挖出了比特币的第一个区块——创世区块(Genesis Block),并获得了首批“挖矿”奖励——50个比特币。在创世区块中,中本聪写下了这样一句话:


The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.


这句话是当天《泰晤士报》的头版标题。中本聪将它写进创世区块,不但清晰地展示着比特币的诞生时间,其中是否还暗含着对于旧的金融体系的嘲讽我们不得而知,但他确实没有将比特币用作反对政府的武器。


加密数字货币并不是什么新概念,曾有很多人试图打造这样的系统,但最终都失败了,有什么理由认为比特币会比之前的尝试更好呢?当时,即使在密码朋克内部,多数人对中本聪的系统也没抱多大的希望。


然而事实却是,中本聪通过“区块链”,这个巧妙的近似天才的发明,扫清了创造加密货币的最后障碍。出乎大多数人的意料,比特币走上了一条不断成长与快速发展的道路。



需要说明的是,中本聪在创世论文中并没有提到密码朋克或者密码无政府主义。中本聪选择在2008年全球金融危机的时候将比特币公诸于世。并在介绍他的创新时说道:


“传统货币最根本的问题在于信心。中央银行在不使货币贬值方面必须足够可信,但历史上这种可信度从来都不存在。银行在保存和支付货币方面也必须足够可信,但银行却用货币来制造信贷泡沫,使私人财富减少。”


与密码朋克相关的文章相比,比特币创世论文的语言显得格外冷静和去政治化,文中没有出现政府或主权的字眼,仅将比特币描述成一个区别于传统金融的支付系统。


比特币设计及其背后的技术


中本聪结合密码学原理,基于P2P网络和分布式数据库,开发出了一种点对点的电子现金系统,即比特币系统,背后的技术我们称为区块链技术。该系统通过随机散列(hash)运算对以区块(block)形式存在的交易数据加上时间戳(timestamp server),并将该随机散列向全网广播,从而将区块合并入一个不断延伸的基于工作量证明机制(proof-of -work)的区块链(blockchain)中。


这一过程被形象地称为“挖矿”,如同矿工在矿场采矿一样,比特币的矿工们通过消耗计算机的计算能力解决哈希密码问题,成功者可以得到比特币作为奖励。


哈希算法是一种单向的加密方法,主要用于完整性校验和提高数字签名的有效性。哈希算法可以将任意长度的数据转换为一个长度固定的、不可逆的数字。比特币使用的哈希算法为SHA256,即任意长度的数据通过哈希运算都转换为一组由256个二进制数字组成的数据。


由于哈希算法的单向性,两个不同的初始数据基本不可能产生同样的哈希结果,也不可能通过对哈希结果的反向计算来推出初始数据。可见,哈希值只能依靠随机计算和不断试错才能得出。


初始的比特币来源于系统对哈希运算成功者的奖励。理论上,比特币的生产速度是预先设定的。不论全系统计算能力如何,基于分布式网络的比特币系统运算难度能自动调节,如果区块生成的时间短于10分钟,计算的难度会提高,反之则会下降。全网大致平均每10分钟确认一个区块,区块中包含这10分钟内被验证的交易。计算机比拼的是在10分钟内,谁最先算出一个值,这个值与上一个区块的哈希值以及这10分钟内验证过的交易记录合起来是最小的哈希值。


在一个没有权威第三方机构的支付系统中,为保证支付的有效性、防止双重支付,需要交易的信息公开透明,并且绝大多数参与方都认可。比特币系统利用时间戳机制解决了这个问题。


时间戳机制对每一个区块中的数据实施哈希运算,并将随机散列的结果广播至全网,宣布特定的数据在特定的时刻必然存在,网络中收到随机散列结果的节点会以此为初始条件之一,将其纳入新生成的随机散列中。同理,新生成的随机散列仍会向全网广播,通过后一个时间戳对前一个时间戳完成确认和增信工作。随着确认的节点增多,交易被确认,双重支付或可逆支付变得不可能。


时间戳是数字签名技术的核心,获得时间戳就等同于获取比特币的电子标识。为保护时间戳的安全性和稳定性,比特币系统设计了工作量证明机制。


传递时间戳时,哈希运算中引入了一个随机数(nonce),这个随机数要使得该给定区块的随机散列值出现所需个数的0,且随着0的数目的上升,找到这个随机数的工作量将呈指数增长,但检验结果仅需要一次哈希运算。


如前所述,哈希运算是单向随机的,无法通过算法反推出这个随机数,唯一可行的办法是随机抽取一个数,将其放入哈希运算,看结果是否满足要求。如果不满足,则继续尝试到满足为止。接收时间戳并进行确认的节点也同样需要反复试错来找到这个随机数,获得正确的哈希值。通过这样的穷举法,就构建了比特币系统的工作量证明机制。


毫无疑问,工作量证明机制通过提高欺骗的成本解决了互联网交易中的信任问题。工作量证明机制基于全网的CPU、显卡运算,排除了人为操纵去破坏其诚信机制的可能。如果绝大多数的节点是诚实的,则诚实的区块链会以最快的速度增长。有研究认为,“如果一个矿池运算能力足够大,它可以不披露最新挖掘出的区块,使其他矿工浪费时间重复挖掘,从而控制比特币。”这就是市场传闻的51%攻击。事实上,最长的区块链包含着最多的工作量,如果攻击者想要修改某一区块,必须重新完成目标区块的工作量及其后所有区块的工作量,这几乎是不可能的。


非对称加密技术是相对于对称加密而言的。在对称加密技术下,加密和解密适用同一种算法。只要知道加密算法,就可以通过逆运算进行解密。对称加密的一个明显弊端是密钥的保管和传递风险较大,实际应用中逐步被非对称加密技术取代。


在非对称加密技术下,密钥被分解为公钥和私钥,发起方利用接收方的公钥对信息进行加密,接收方通过自己的私钥进行解密。目前应用比较广泛的非对称加密技术主要有:RSA和ECC算法。其中,RSA算法基于大数分解问题,ECC算法基于离散对数问题。相比而言,比特币所采用的ECC算法在安全性、计算量、存储空间、带宽要求等方面都要优于RSA。


比特币系统中,接收方A如何确认信息是来自发起方B的?发起方B怎么证明这条信息是由自己发送给接收方A的呢?这类信任问题是靠非对称加密技术解决的。发起方B要证明信息是由自己发送给接收方A的,需要完成两步:


一是用自己的私钥对原始信息加密;


二是用A的公钥再次加密;


接收方A要确定这个信息来自发起方B,也需要完成两步:


一是用自己的私钥解密;


二是用A的公钥再次解密。


实际使用中,比特币地址就是公钥,钱包文件就是私钥。


最后我想说明的是,货币主要就是一种经济现象,承担着流通手段、价值尺度、贮藏手段等职能,涉及经济运行中的“效率”问题。比特币是否是货币,或数字货币,我在此不表。比特币的诞生及其设计确实和密码学关系甚密,也确实在一定程度上区别于传统的货币体系。但我认为我们更需要关注的是比特币背后的区块链技术及其密码学内核。科技本无好坏,而至于如何应用、发展以适应市场才是焦点。


文章作者:Mercina-zy 

原文链接:

https://mp.weixin.qq.com/s/3XHpzn4mL_L4yTPhRBrEsQ


国际金融科技新媒体和社区平台

UNITIMES

网址 : unitimes.media

新浪微博:@Unitimes



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/bjJeKSW38s
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/7583