caozhengjun的个人博客分享 http://blog.sciencenet.cn/u/caozhengjun

博文

漫谈比特币和区块链 精选

已有 14638 次阅读 2018-4-24 10:24 |个人分类:应用密码学|系统分类:科普集锦| 比特币, 区块链, 哈希函数, 数字签名, 超级账簿

 漫谈比特币和区块链

曹正军

        目前区块链的研究如火如荼, 基于区块链技术的数字货币品种繁多, 宣传资料满天飞. 既有正面的吹捧, 也有反面的诋毁. 那么这种技术到底使用了哪些密码算法又有啥特点呢?

 比特币的历史起源

   2008818, 域名bitcoin.org注册成功. 20081031, 署名为Satoshi Nakamoto (中本聪)的用户在

              http://www.metzdowd.com/pipermail/cryptography/

讨论区发帖, 声称正在研究一种新的电子货币系统, 并提供了论文预印本

              (Bitcoin: a peer-to-peer electronic cash system)

的下载链接http://www.bitcoin.org/bitcoin.pdf. 论文共9. 从专业角度看, 这不是一篇合格的论文:

l  文字间距大小不一, 没有经过专业的排版处理, 像样点的IEEE会议都会拒稿.

l  列出了8篇文献, 但文献[3,4]在正文中没有被引用. 本科毕业设计出现这种情况心里都会犯怵的.

l  文章的主体是由8个流程图和对应的解释文字构成的, 没有定义名词、术语. ``bitcoin"只出现过两次, 一次是在标题中, 一次是在域名中.

        20091, 中本聪在SourceForge网站发布了比特币系统的开源软件, 制作了第一个区块(按约定格式组织起来的一些数据), 这个区块里面有这样一句话``The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"(200913, 泰晤士报, 财政大臣将对银行进行二次纾困).

       开源软件发布后, 据说中本聪大约挖了100万个比特币. 比特币的第一次转让是在中本聪和Hal Finney(1956-2014)之间发生的, Finney获得了10个比特币. 2010, 中本聪把网络预警密钥(network alert key)和代码的控制权移交给了Gavin Andresen.

       2014, Ted Nelson声称, 比特币的创始人是京都大学数学教授望月新一(Shinichi Mochizuki). 此人因为宣称证明了数论方面的ABC猜想而名声大噪. Nelson给出的三个依据是: 望月新一足够聪明, 可以开发出比特币;望月新一不使用传统科学同行评审机制, 习惯于自行发布论文, 让其他数学家探索其中奥妙;比特币符合望月新一的水准. 这样的理由确实让人瞠目结舌 201611, Andresen宣称中本聪是澳大利亚人Craig Wright的化名, 但质疑并未停息.

      Ted Nelson (1937---), 美国人, 他创造的词汇hypertextvirtuality已经成了行业术语. Shinichi Mochizuki (1969---), 日本人, 京都大学教授, 1992年获普林斯顿大学博士学位(导师Gerd Faltings). 20128月公布了关于ABC猜想的预印本.

 什么是比特币

      比特币既不是有面值的电子图案, 也不是一串特定的电子数据. 根据原论文的描述, 比特币是由一个依附于互联网的点对点开放平台、一个公共的交易账簿、一个约定的奖励机制和一个交易验证方法构成的系统. 用户需要下载专有的客户端应用程序或使用在线应用程序才能加入该系统.

       一个系统本身是没有计量单位的, 那么为什么又常常说1个比特币、0.25个比特币呢? 事实上, 这个系统中的电子货币没有专用的名称, 人们借用了系统的名称来称呼它. 该电子货币究竟是什么样的? 它就是一个数字签名链(We define an electronic coin as a chain of digital signatures)[本质上就是一串电子数据],  没有固定的面值, 数据中记录了电子货币的个数.

 比特币是怎样``炼成"

       比特币是通过运行哈希函数(SHA256)生成的. 10分钟, 一旦某个用户最先找到了一个符合要求的比特串, 使得与之相关的哈希值符合约定格式(比如哈希值的前16位都是0), 系统就打赏50个比特币(也就是一段用来描述该事件的文字)给该用户. 赏金每四年减半, 系统也会更新约定格式(比如哈希值的前32位都是0), 使得计算难度越来越大. 2018年的赏金是12.5个比特币. 据估计, 比特币的总数大约是2100.

       寻找哈希函数的输入使得它的输出符合指定格式, 这是毫无意义的靠蛮力计算解决的问题, 绝不是宣称的数学难题. 这是对数学难题的曲解. 数学难题一般是指有一定理论意义的命题, 需要一定的研究章法和数学技巧.

       中本聪在论文中明确指出, 要想“挖出”比特币就必须付出工作量证明(proof-of-work), 也就是利用计算资源不停地选择比特串(固定长度)输入到哈希函数, 验证其输出的字符串是否符合约定的格式.

       用户获得比特币的途径有: (1) 挖矿. 每隔10分钟, 靠蛮力计算最先找到符合要求的比特串; (2) 购买. 用法定货币向他人购买虚拟的比特币; (3) 赚交易费. 新交易广播后系统需要确认它的合法性, 最先确认该交易的用户可以获得一点交易费. 确认的方法是追溯哈希链, 需要计算若干个哈希函数值, 验证若干个数字签名.

 比特币使用的密码算法

       比特币系统仅仅使用两种密码算法, 哈希函数SHA256和数字签名算法ECDSA. 比特币系统内的信任关系是通过数字签名来实现的. 加入比特币系统的用户需要自行配置自己的私钥和公钥(实质是公开参数, 不依赖于公钥基础设施PKI). 私钥用来做数字签名, 公钥供别人用来做验证. 不需要任何加密算法, 这个真相会不会让那些动辄就说加密货币的大V们露出底裤呢?

       比特币系统使用的是椭圆曲线数字签名算法ECDSA,  曲线方程是 y^2 = x^3 + 7  (mod p),

p=115792089237316195423570985008687907853269984665640564039457584007908834671663.

基点P的坐标(x, y):  

x=55066263022277343669578718895168534326250603453777594175500187360389116729240,

y=32670510020758816978083085130507043184471273380659243275938904335757337482424.

用户随机选取s<p , 计算Y=sP. 公钥是Y, 私钥是s.

 比特币的优/缺点

     任何交易都需要信任基础. 利用第三方(比如银行、支付宝等)搭建信任关系的优点是, 系统稳定、方便快捷、效率高、易于监管等. 缺点是用户必须是实名的, 尽管交易双方有时不知道对方是谁, 但第三方能够追查出来.

       中本聪声称比特币的主要特点是: 利用P2P网络阻止双重消费; 无需铸币厂也无需信任中心; 交易参与人可以是匿名的; 新币是通过工作量证明产生的. 结合其实践情况, 比特币的优点可以归结为: 发行机制是公平的, 大家都可以参与;交易是匿名的, 能够保护用户的隐私;如果51%的用户是诚实的, 那么资产就是安全的;总量是有限的, 能够抵制通货膨胀. 可以看出, 比特币最大的优点就是匿名性.

       匿名真的那么重要吗? 它是把双刃剑, 是在用稳定性换取隐蔽性. 对于资产保管来说, 这是极不明智的. 一旦用户自己丢失了开启比特币账户的口令, 谁帮你挂失呀!如果用户的私钥被盗取, 又有谁能帮你追回资产呢. 纸币发霉了, 去银行还能换新的回来. 存储比特币的U盘掉进泰晤士河(有过这样的报道), 消防员山姆大叔能帮你捞回来吗? 因此, 无论哪种电子货币, 只要把保管责任完全归咎于用户的, 都是为了占便宜.

       比特币系统很安全吗? 一个依附于互联网的点对点开放平台, 如果应用程序开发人员修改规则怎么办? 断网、断电怎么办? 51%的用户呼啦啦地都跑了怎么办(一个自发的、松散的组织何来向心力和凝聚力)? 到时候能找到一个可以拉横幅的地方吗?

    比特币系统中的每一笔新交易都要全网广播, 每个参与人都可以参与挖矿竞争, 或者参与追溯它的哈希链这种松散的、无序的竞争机制导致平台的管理效率非常低, 造成巨大的资源浪费.

       比特币的最大功能就是为投机者提供了一个虚拟标的物. 它不创造任何社会价值, 包括美学的、科学的、宗教的, 反而消耗了大量的社会计算资源. 它也不具备稀缺性, 人们已经炮制出一千多种虚拟货币. 下面的截图只列举了一部分虚拟货币, 有兴趣的读者可以去网上搜搜.

 ecoin.JPG

        互联网是个只需要概念不需要氧气的生态环境. 无论是风币还是火币, 盯紧的都是人民币.

 

区块链

       比特币系统利用区块链(block-chain)技术来组织数据、关联数据、验证数据、更新数据. 每个区块(block)看作是一个电子帐簿, 它包含了前一个区块的哈希值(Prev Hash), 临时选取的标识符(Nonce)和若干个交易记录. 系统内所有区块构成了一个超级账簿.

chain.jpg

每个区块内部按如下方式为各个交易建立起追溯链.下图是包含4个交易的情形.

 hashroot.jpg

每个区块占用的存储空间大约是1M, 平均包含2500笔交易. 每笔交易记录主要包含如下几个部分:

l  当前交易内容. 描述交易比特币的数量, 网络时间戳或者工作量证明等.

l  收款人的公钥. 指明交易比特币的归属账户.

l  付款人对前一个区块和收款人的公钥串接后的指纹作出的数字签名. 供收款人验证交易本身的合法性, 同时防止敌手篡改数据.

每笔交易的数据结构如下图所示:

blockchain.jpg

       哈希函数便于验证数据的完整性, 是区块链的核心工具. 它保证了交易与区块之间的隶属关系, 保证了交易与交易之间的关联性, 保证了区块与区块之间的关联性. 哈希函数的单向性还被用来``炼币". 因此, 称比特币为哈希币(杂凑币、散列币), 将显得更高大、更贴切、更形象.

       从会计学角度来看, 区块链的创新之处在于, 只管交易不管人. 它无需为每个用户创建一个专有账户, 每个用户都可以自发地为自己创建若干个账户. 总账簿只按照交易归类, 不按照用户归类. 每增加一笔交易, 总账簿都得更新系统的哈希链, 必须做到牵一发动全身. 这种极端低效的技术, 我们真的伤得起吗

本文来自作者的书稿《现代密码算法概论》



http://blog.sciencenet.cn/blog-3224443-1110626.html

上一篇:漫谈电子货币
下一篇:追求安全别过分, 用户心中有杆秤 --- 漫谈传输层安全协议TLS1.3

13 黄永义 李哲林 郭战胜 徐令予 强涛 蒋新正 迟延崑 文克玲 张骥 蒋大和 李泳 刘锋 yangb919

该博文允许注册用户评论 请点击登录 评论 (8 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2018-9-19 11:10

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部