有关比特币Core源码CDataStream类的有趣问题

在阅读比特币源码过程中发现了一个有趣的问题。在文件src/serialize.h中,2012年9月提交的一个版本b019ea17ec7cc37d098982b4f0f4636e424ab4b8,我们可以看到一些历史代码: 在阅读比特币源码过程中发现了一个有趣的问题。在文件src/serialize.h中,2012年9月提交的一个版本b019ea17ec7cc37d098982b4f0f4636e424ab4b8,我们可以看到一些历史代码: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#ifdef TESTCDATASTREAM// VC6sp6//...

阅读全文

论联盟链局限性与公有链

本篇探讨联盟链的局限性,并与公有链的关系。在本文中,我们定义联盟链为共享认证型区块链(Shared Permission Blockchain),与公有链的主要区别在于Permission上。 一. 从假设的银行联盟链DAO说起现考虑银行联盟链模型,假设存在一个银行业区块链联盟,每个联盟节点是一个共识节点,即该数据包含了该银行的核心业务数据(客户信用,借贷账目etc)以形成一个联盟链DAO,那么我们有: 1. 所有的银行客户信用数据是共享且共识的,即某s在A银行是VIP客户,信用非常良好,那么我们有:s去到该联盟链另一家银行办理业务时,该行需要承认s的信用。即信用共享,那么我们在信用共享时会遇到一个问题,如何对信用评级目前无法达成一致共识,即一定存在不同的节点,针对s的信用的评级差距过...

阅读全文

搭建一个区块链交易所需要什么?

一个交易所到底应该具备什么要素呢? 交易所核心功能——撮合引擎。撮合引擎其实是一个交易所的核心模块,实现起来依据几条非常简单的原则: 成交价格优先-时间优先 定价时间优先-价格优先 卖方价格队列大于等于买方价格队列 一个交易所到底应该具备什么要素呢? 交易所核心功能——撮合引擎。撮合引擎其实是一个交易所的核心模块,实现起来依据几条非常简单的原则: 成交价格优先-时间优先 定价时间优先-价格优先 卖方价格队列大于等于买方价格队列 但是里面的实现还是很讲究的: a. 高可用,撮合引擎宕机如何处理? b. 实时成交,撮合引擎要求高速处理,IO一般都会成为瓶颈,如果避免IO是个非常有技术含量的问题。 c. 用户接口设计 这里的用户接口设计分: 下单HTTP API,以及响...

阅读全文

浅谈区块链共识机制与分布式一致性算法

本文通过介绍传统分布式一致性算法和区块链共识模型,以及提出了一些有关两者关系的观点,让大家有个比较系统的了解。 一、前言本文打算先提出观点。欢迎大家参与讨论。 1. 传统分布式一致性算法和区块链共识过程的异同点相同点: Append only 强调序列化 少数服从多数原则 分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点日志 不同点: 传统分布式一致性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设所有节点只发生宕机、网络故障等非人为问题,并不考虑恶意节点篡改数据的问题; 传统分布式一致性算法是面向日志(数据库)的,即更通用的情况,而区块链共识模型面向交易的,所以严格来说,传统分布式一致性算法应该处于区块链共识模型的下面一层。 本文通过介绍传统分...

阅读全文

如何阅读"三巨人"的源码-比特币

前言 由于有很多新生区块链技术学习者,问我如何入门这些代码,所以打算放一篇文来介绍下。 相较于中文资料各种教程类文章,本系列文章侧重源码架构和分析。 这里所说的三大巨人是指:比特币,以太坊,比特股。其他微创新的代码可以以这些代码为base进行扩展研读,所以只打算介绍这三巨人。 由于本人是CXX工程师,除了模块分析之外,其他源码的介绍主要以CXX的代码为主。 考虑到难度,这里以比特股的代码最为复杂,以太坊的代码其次也最为舒服, 而以上两个工程,都需要以比特币的源码作为支撑,而且比特币的代码算作区块链入门级的,即使对于CXX新手来说,也是可以一窥全貌的。 所以本文主要以比特币的源码作为切入,在后续系列的文章会接续介绍另外两个巨人。 (本文转载请告知,保留所有权利) 前言 由于有很多新生区...

阅读全文

区块链的联盟链开源项目介绍

以下一些私有链我选择性会进行实践,并给出说明,最后是比较评价,赶快mark吧~(作者保留权利,转载请联系) 1) https://github.com/hyperledger/hyperledgerHpperLedger是一个进行中的项目,目前还没决定使用哪个版本作为主线开发,但是提供了以下四个候选方案: (这些内容是HyperLedger项目还未确定的时候,现在已经确定叫Fabric, GO语言开发) a. https://github.com/ripple/rippled 瑞波币的推荐方案 实现语言:C++ 以下一些私有链我选择性会进行实践,并给出说明,最后是比较评价,赶快mark吧~(作者保留权利,转载请联系) 1) https://github.com/hyperledger/...

阅读全文

如何搭建自己的区块链

一、 环境依赖OS 选择:ubuntu 14 ~ 15 均可为了减少实践过程中出现的大量的依赖库的安装的繁琐程度,推荐ubuntu,当然其他发行版的Linux也是可以的。 开发倚赖包:12345apt-get install libboost-all-devapt-get install opensslapt-get install libssl-devapt-get install libdb5.3++-devapt-get install libminiupnpc-dev secp256k1 库已经被包含,由于secp256k1库更新较快,必须match指定版本才能work,当前版本并不支持最新版本的secp256k1. 一、 环境依赖OS 选择:ubuntu 14 ~ 15 ...

阅读全文

货币的一种互联网体系架构

介绍中本聪最伟大的发明比特币,可以因为以下两处不同的特征广受赞誉: 比特币是公开的,去中心化的,加密总账(cryptographic ledger),同时拥有基本总账能力。加密总账能追踪新的比特币的余额。以比特币为基础的平行金融体系正在被着力打造当中。加密总账在灵活性上的便利开发诸多。例如多重签名账户,去中心化兑汇,机器间交易的新应用,而这些成为了开发的驱动力。这一论文分析加密总账在目前金融体系中的应用,同时促进对一下内容的讨论:如果金融机构利用公共加密去中心化总账,同时有基本总账能力,当他们检测资产负债余额情况时,哪些速度、成本、灵活性上面的优势可以达成? 这些总账给实时全额结算系统(Real Time Gross Settlement)例如CHAPS和FedWire的构建带来了新的...

阅读全文

比特币(bitcoin)自私挖矿与拜占庭将军问题

这是一篇译文转载。 每次我向那些不熟悉比特币的人解释比特币的独特之处的时候,我都会用会计学上的总账和拜占庭将军问题来帮助讲解。此文就是帮助讲解的内容,有Q了此文我就可以把链接发给小伙伴们,而不需要每次都重新打一大堆字了。 首先,不要把比特币当成一种货币,而是一个总账。它是个电子总账,网络上的每一个参与者的电脑都会有一份总账的备份,并且所有的备份都是在实时的持续的更新、对账、以及同步着。每一个参与者都能在这本总帐里记上一笔,这一笔记录着一定数量的币从一个参与者那里被发送到另一个参与者那里,并且每一条这样的记录都接着就实时的广播到网络了,所以在每一台电脑上的每一分份拷贝都是几乎同时更新的,并且所有的总账拷贝都保持着同步。这本公开的分布式的总账的官方叫法是“区块链(blockchain)”,...

阅读全文

区块链(Blockchain)深入介绍

一、区块链是什么?区块链是一个公共的分布式总账,任何发生在此区块链网络上的交易会被约定的算法记录到区块链上,且满足以下条件: 存储基于分布式数据库 数据库是区块链的数据载体,区块链是交易的业务逻辑载体 区块链按时间序列化Block,且每个确认块是整个网络数据共识的唯一准则 区块链只对添加有效,对其他操作无效 基于非对称加密的公私钥验证 记账节点要求拜占庭将军问题可解/避免 共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃 共识过程能够解决double-spending问题令记账(又名矿工)节点 = N,当N 公开且自由访问,则这是一条 公有链 (后面有介绍)当N 半公开仅由某个组织或团体内部使用(例如R3 CEV),外部仅可以(授...

阅读全文

© 2018 区块链技术漫谈 All Rights Reserved. 本站访客数人次 本站总访问量
The New Reality Metaverse