常用 #### 在去中心化以后,整个系统中没有了权威的中心化代理,信息的可信度和准确性便会面临问题。 区块链的几个基本特性:: 1. Decentralized(去中心化) 2. Trustless(去信任) 3. Collectively Maintain(集体维护) 4. Reliable Database(可靠数据库) 5. Open Source(开放原始码) 6. Anonymity(隐私保护) 7. Time Stamp(时间戳) 8. Asymmetric cryptography(非对称加密) 区块链的进化方式是:: ▪ 区块链1.0——数字货币 ▪ 区块链2.0——数字资产与智能合约 ▪ 区块链3.0——DAO、DAC(区块链自洽组织、区块链自洽公司) --> 区块链大社会(科学,医疗,教育etc,区块链+人工智能)。 Ethereum vs Hypterledger Fabic vs EOS 对比:: 表 1.1. 智能合约对比 Ethereum Hypterledger Fabic EOS 合约语言 Solidity Go/Node.js/Java C/C++ 难易程度 容易 较容易 难 成熟度 非常成熟 较成熟 不成熟 调试环境 有Remix,Truffle,钱包合约工具等等 没有较好的调试环境 只能手工排查 扩展性 Solidity 无法扩展,不能引用外部开发库 可以扩展,导入第三方库 可以扩展,并且支持STL开发库 区块链目前分为三类:: 1. 公有区块链(Public BlockChains) 公有区块链: 世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。 公有区块链是最早的区块链,也是目前应用最广泛的区块链, 2. 联合(行业)区块链(Consortium BlockChains) 行业区块链: 由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程), 其他接入节点可以参与交易,但不过问记账过程 (本质上还是托管记账,只是变成分布式记账,预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点) 其他任何人可以通过该区块链开放的API进行限定查询。 3. 私有区块链(private BlockChains) 私有区块链 仅仅使用区块链的总账技术进行记账, 可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。 目前(Dec2015)保守的巨头(传统金融)都是想实验尝试私有区块链, 而公链的应用如bitcoin已工业化,私链的应用产品还在摸索当中。 四个技术创新:: 1. 分布式账本 就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目, 因此它们都可以参与监督交易合法性,同时也可以共同为其作证。 2. 非对称加密和授权技术 存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的, 只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。 3. 共识机制 就是所有记账节点之间怎么达成共识,去认定一个记录的有效性, 这既是认定的手段,也是防止篡改的手段。 区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。 以比特币为例,采用的是工作量证明,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。 当加入区块链的节点足够多的时候,这基本上不可能,从而杜绝了造假的可能。 4. 智能合约 智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。 以保险为例,如果说每个人的信息(包括医疗信息和风险发生的信息)都是真实可信的, 那就很容易的在一些标准化的保险产品中,去进行自动化的理赔。 智能合约是区块链生命力的保障,去中心化的区块链环境恰好为智能合约提供了理想的土壤 有了区块链支持的智能合约,就可以大规模地进行像高频交易(Highfrequency trading)这样的新兴金融业务 公链特点:: 中立、开放、去中心化; 不可更改,不可撤销; 拥有网络效应。 抗审查性高; 私链特点:: 规则易于修改(交易,余额等) 交易成本低(交易只需几个受信节点验证即可) 读取权限受限 特征:: 1. 去中心化 由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的, 系统中的数据块由整个系统中具有维护功能的节点来共同维护。 在创造性地去除被信任的第三方,转而依靠全体节点共识之后,系统各方面性能得到大幅度提升: a. 用户控制力增强; b. 数据质量提高; c. 系统可靠性提高; d. 系统生命期延长; e. 透明性更好; 2. 开放性 系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开, 任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。 3. 自治性 区块链采用基于协商一致的规范和协议(比如一套公开透明的算法) 使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据, 使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。 4. 信息不可篡改 一旦信息经过验证并添加至区块链,就会永久的存储起来, 除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。 5. 匿名性 由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效), 因此交易对手无须通过公开身份的方式让对方自己产生信任,对信用的累积非常有帮助。 区块链的密码学支撑:: 区块链系统在本质上是密码学的应用,依赖于一系列密码学工具的支持。 例如: 对于数据完整性(data integrity)的保护依赖于数字签名、Merkle树等 数字签名来保障其真实性: 1. Alice对于任意文本都能产生对应的签名 2. Bob总可以验证签名的有效性 3. 敌方对于任意文本都不能伪造对应的签名 4. Bob总可以检测出伪造 在区块链系统中,一个区块通常包含上千个交易记录。 为了保护数据完整性,对每一个交易记录做数字签名是非常低效的做法。 常采用Merkle树技术来大大提高效率,采用Merkle树之后,每个区块只需要一个数字签名。 但对于上千个交易记录中任何一个的篡改都可以被迅速检测找出。 参见: 站内链接 ``树-Merkle 树`` 可以用区块链的一些领域:: ▪ 智能合约 ▪ 证券交易 ▪ 电子商务 ▪ 物联网 ▪ 社交通讯 ▪ 文件存储 ▪ 存在性证明 ▪ 身份验证 ▪ 股权众筹 * 二叉树随机漫步(Binomial Random Walk) * 赌徒破产问题(Gambler’s Ruin problem) 问题1-类两军问题 ================ 第一次听说这个问题居然是在TCP的课上,大致说的是有两个相距很远的军队要传递信息,红军派遣一个信使去跟蓝军说:“你他娘的把意大利炮拿出来!”。蓝军收到信息后又派了一个信使去红军说:“收到指令!”。然后红军又派一个信使去蓝军说:“知道你收到指令了!”。然后蓝军又派一个信使去红军说:“知道你知道我收到指令了!”。然后红军又派一个信使去蓝军说:“知道你知道我知道你收到指令了!”……然后就没完没了了。 问题2-拜占庭将军问题 ==================== 拜占庭罗马帝国在军事行动中,采取将军投票的策略来决定是进攻还是撤退,也就是说如果多数人决定进攻,就上去干。但是军队中如果有奸细(比如将军已经反水故意乱投票,或者传令官叛变擅自修改军令),那怎么保证最后投票的结果真正反映了忠诚的将军的意愿呢? 拜占庭将军问题反映到信息交换领域中来,可以理解为在一个去中心的系统中,有一些节点是坏掉的,它们可能向外界广播错误的信息或者不广播信息,在这种情况下如何验证数据传输的准确性。 潜在问题 ======== 效率瓶颈:: 1. 比特币: 使用的交易模式是UTXO,每个区块产生时间大约为10分钟 交易效率: 7tx/s 出块时间 10min 2. 以太坊: 使用账户余额的交易模式 交易效率: 280tx/s 出块时间 14s 而普通人的耐心:几秒到几分钟 安全与隐私:: 保护用户隐私,支持匿名交易,严格监管,支持案件调查、追踪,防止对同一货币的再次使用 智能合约的强大功能是区块链系统的巨大优势,然而智能合约又含有众多严重的安全隐患: 1. 编码状态机中的逻辑错误 2. 不对等的激励(misaligned 3. 调用栈bug 其他 ==== 区块链的六层模型:: 区块链技术的模型是由自下而上的数据层、网络层、共识层、激励层、合约层和应用层组成。 第一层“数据层”,封装了底层数据区块的链式结构,以及相关的非对称公私钥数据加密技术和时间戳等技术, 这是整个区块链技术中最底层的数据结构。 这些技术是构建全球金融系统的基础,数十年的使用证明了它非常安全的可靠性。 而区块链,正式巧妙地把这些技术结合在了一起。 第二层“网络层”,包括P2P组网机制、数据传播机制和数据验证机制等。 P2P组网技术早期应用在BT这类P2P下载软件中,这就意味着区块链具有自动组网功能。 第三层“共识层”,封装了网络节点的各类共识机制算法。 共识机制算法是区块链的核心技术,因为这决定了到底是谁来进行记账, 而记账决定方式将会影响整个系统的安全性和可靠性。 目前已经出现了十余种共识机制算法,其中比较最为知名的有: 工作量证明机制(PoW,Proof of Work)、 权益证明机制(PoS,Proof ofStake)、 股份授权证明机制(DPoS,Delegated ProofofStake)等。 数据层、网络层、共识层是构建区块链技术的必要元素,缺少任何一层都将不能称之为真正意义上的区块链技术 第四层“激励层”,将经济因素集成到区块链技术体系中来,包括经济激励的发行机制和分配机制等, 主要出现在公有链当中。在公有链中必须激励遵守规则参与记账的节点,并且惩罚不遵守规则的节点, 才能让整个系统朝着良性循环的方向发展。而在私有链当中,则不一定需要进行激励, 因为参与记账的节点往往是在链外完成了博弈,通过强制力或自愿来要求参与记账。 第五层“合约层”,封装各类脚本、算法和智能合约,是区块链可编程特性的基础。 比特币本身就具有简单脚本的编写功能,而以太坊极大的强化了编程语言协议, 理论上可以编写实现任何功能的应用。如果把比特币看成是全球账本的话, 以太坊可以看作是一台“全球计算机”,任何人都可以上传和执行任意的应用程序, 并且程序的有效执行能得到保证。 第六层“应用层”,封装了区块链的各种应用场景和案例,比如: 搭建在以太坊上的各类区块链应用即部署在应用层,而未来的可编程金融和可编程社会也将会是搭建在应用层。 其他 ==== * 基础《精通比特币》,行业知识《从区块链到信用社会》,技术进阶《区块链原理设计与应用》现在有电子书(https://www.cnblogs.com/rocedu/p/6528920.html)了:> 行业知识《[区块链:从区块链到信用社会](https://weread.qq.com/web/reader/61932d305cc93861945b6dckc81322c012c81e728d9d180)》,> 技术进阶 《[区块链原理设计与应用:第 2 版](https://weread.qq.com/web/reader/d6b3285071f5ced6d6b7809kc81322c012c81e728d9d180)》 * - 区块链:Hyperledger Fabric, Quorum, Ant Chain,FiMAX 等 以太坊 ------- * https://www.huweihuang.com/blockchain-notes/ * https://zhuanlan.zhihu.com/p/39262324 * https://www.chainnews.com/articles/718748110039.htm * https://blog.csdn.net/shebao3333/article/details/80112436 * https://www.jianshu.com/p/9909cfd319df * https://ethfans.org/posts/how-does-ethereum-work-anyway 参考 ==== https://yeasy.gitbooks.io/blockchain_guide