2018-05-04 区块链随笔

  之前在一个程序员大V公众号上参与相亲节目,还被我司老大引流了一下。于是有些产品经理加我,跟我聊吃的发现没我会吃能吃,跟我聊玩的旅游的发现也没我会玩能玩了解玩的时期。于是聊到我公司的情况上,就衍生出了一系列的辩论。整理了一下内容

  区块链技术是金融科技(Fintech)领域的一项重要技术创新。作为分布式记账(Distributed Ledger Technology,DLT)平台的核心技术,区块链被认为在金融、征信、物联网、经济贸易结算、资产管理等众多领域都拥有广泛的应用前景。区块链技术自身尚处于快速发展的初级阶段,现有区块链系统在设计和实现中利用了分布式系统、密码学、博弈论、网络协议等诸多学科的知识,为学习原理和实践应用都带来了不小的挑战。


潜在的商业价值

商业行为的典型模式为:交易的多方通过协商和执行合约,完成交易过程。区块链擅长的正是如何在多方之间达成合约,并确保合约的顺利执行。

根据类别和应用场景不同,区块链所体现的特点和价值也不同。

从技术角度,一般认为,区块链具有如下特点:1.分布式容错性:分布式网络极其鲁棒,能够容忍部分节点的异常状态;2.不可篡改性:一致提交后的数据会一直存在,不可被销毁或修改;3.隐私保护性:密码学保证了数据隐私,即便数据泄露,也无法解析。

随之带来的业务特性将可能包括:1.可信任性:区块链技术可以提供天然可信的分布式账本平台,不需要额外第三方中介机构参与;2.降低成本:跟传统技术相比,区块链技术可能带来更短的时间、更少的人力,降低维护成本;3.增强安全:区块链技术将有利于安全、可靠的审计管理和账目清算,减少犯罪风险。

区块链并非凭空诞生的新技术,更像是技术演化到一定程度突破应用阈值后的产物,因此,其商业应用场景也跟促生其出现的环境息息相关。对于基于数字方式的交易行为,区块链技术能潜在地降低交易成本、加快交易速度,同时能提高安全性。笔者认为,能否最终带来成本的降低,将是一项技术能否被深入应用的关键

所有跟信息、价值(包括货币、证券、专利、版权、数字商品、实际物品等)、信用等相关的交换过程,都将可能从区块链技术中得到启发或直接受益。但这个过程绝不是一蹴而就的,可能需要较长时间的探索和论证。具体的商业应用案例可以参考本书后续的应用场景章节。

基本原理

区块链的基本原理理解起来并不复杂。

首先包括三个基本概念:

交易(Transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;

区块(Block):记录一段时间内发生的所有交易和状态结果,是对当前账本状态的一次共识;

链(Chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。

如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中交易导致状态改变的结果进行确认。

在实现上,首先假设存在一个分布式的数据记录账本,这个账本只允许添加、不允许删除。账本底层的基本结构是一个线性的链表,这也是其名字“区块链”的来源。链表由一个个“区块”串联组成(如下图所示),后继区块记录前导区块的哈希(Hash)值。新的数据要加入,必须放到一个新的区块中。而这个块(以及块里的交易)是否合法,可以通过计算哈希值的方式快速检验出来。任意维护节点都可以提议一个新的合法区块,然而必须经过一定的共识机制来对最终选择的区块达成一致。

应用场景概览

区块链在不引入第三方中介机构的前提下,可以提供去中心化、不可篡改、安全可靠等特性保证。因此,所有直接或间接依赖于第三方担保机构的活动,均可能从区块链技术中获益。

未来几年内,可能深入应用区块链技术的场景将包括:

1.金融服务

区块链带来的潜在优势包括降低交易成本、减少跨组织交易风险等。该领域的区块链应用目前最受关注,全球不少银行和金融交易机构都是主力推动者。部分投资机构也在应用区块链技术降低管理成本和管控风险。从另一方面,要注意可能引发的问题和风险。例如,DAO(Decentralized Autonomous Organization 是史上最大的一次众筹活动,基于区块链技术确保资金的管理和投放)这样的众筹实验,提醒应用者在业务和运营层面都要谨慎处理。


传统交易本质上交换的是物品价值的所属权。为了完成一些贵重商品的交易(例如房屋、车辆的所属权),往往需要十分繁琐的中间环节,同时需要中介和担保机构参与其中。这是因为,交易双方往往存在着不能充分互信的情况。一方面,要证实合法的价值所属权并不简单,往往需要开具各种证明材料,存在造假的可能;另一方面,价值不能直接进行交换,同样需要繁琐的手续,在这个过程中存在较多的篡改风险。

为了确保金融交易的可靠完成,出现了中介和担保机构这样的经济角色。它们通过提供信任保障服务,提高了社会经济活动的效率。但现有的第三方中介机制往往存在成本高、时间周期长、流程复杂、容易出错等缺点。金融领域长期存在提高交易效率的迫切需求。

区块链技术可以为金融服务提供有效、可信的所属权证明,以及相当可靠的合约确保机制。

A.银行业金融管理:1.欧洲央行评估区块链在证券交易后结算的应用2.中国人民银行投入区块链研究3.加拿大银行提出新的数字货币4.英国央行实现RSCoin5.日本政府取消比特币消费税6.中国邮政银行将区块链技术应用到核心业务系统7.swift完成跨银行的分布式账本验证8.各种新型支付业务

B.证券交易

C. 众筹管理(Ico)

2.征信和权属管理

征信和权属的数字化管理是大型社交平台和保险公司都梦寐以求的。目前该领域的主要技术问题包括缺乏足够的数据和分析能力;缺乏可靠的平台支持以及有效的数据整合管理等。区块链被认为可以促进数据交易和流动,提供安全可靠的支持。征信行业的门槛比较高,需要多方资源共同推动。

A.征信管理:目前征信相关的大量有效数据集中在少数机构手中。由于这些数据太过敏感,并且具备极高的商业价值,往往会被严密保护起来,形成很高的行业门槛。现在大量的互联网企业包括各大社交网站尝试从各个维度获取了海量的用户信息,但从征信角度看,这些数据仍然存在问题:数据量不足、相关度较差、时效性不足

区块链天然存在着无法篡改、不可抵赖的特性。同时,区块链平台将可能提供前所未有规模的相关性极高的数据,这些数据可以在时空中准确定位,并严格关联到用户。因此,基于区块链提供数据进行征信管理,将大大提高信用评估的准确率,同时降低评估成本。

另外,跟传统依靠人工的审核过程不同,区块链中交易处理完全遵循约定自动化执行。基于区块链的信用机制将天然具备稳定性和中立性。

B.权属管理:区块链技术可以用于产权、版权等所有权的管理和追踪。其中包括汽车、房屋、艺术品等各种贵重物品的交易等,也包括数字出版物,以及可以标记的数字资源。目前权属管理领域存在的几个难题是:物品所有权的确认和管理;交易的安全性和可靠性保障;必要的隐私保护机制。

C.其他管理:在人力资源和教育领域,MIT 研究员朱莉安娜·纳扎雷(Juliana Nazaré)和学术创新部主管菲利普·施密特(Philipp Schmidt)发表了文章《MIT Media Lab Uses the Bitcoin Blockchain for Digital Certificates》,介绍基于区块链的学历认证系统。基于该系统,用人单位可以确认求职者的学历信息是真实可靠的。2018 年 2 月,麻省理工学院向应届毕业生颁发了首批基于区块链的数字学位证书。此外,还包括一些其他相关的应用项目:

KuChain:基于区块链的奢侈品鉴定方案,为金融、零售、传媒等行业提供区块链解决方案可行性分析和论证、技术模型、经济模型。

Chronicled:基于区块链的球鞋鉴定方案,为正品球鞋添加电子标签,记录在区块链上。

Mediachain:通过 metadata 协议,将内容创造者与作品唯一对应。

Mycelia:区块链产权保护项目,为音乐人实现音乐的自由交易。

Tierion: 将用户数据锚定在比特币或以太坊区块链上,并生成“区块链收据”。

Ziggurat:基于区块链提供文字、图片、音视频版权资产的登记和管理服务。

3.资源共享

以 Airbnb 为代表的分享经济公司将欢迎去中心化应用,可以降低管理成本。该领域主题相对集中,设计空间大,受到大量的投资关注。

A.短租共享B.社区能源共享:太阳能电池管理、社区电网构建、电力储备系统搭建、低成本交易系统支持。C.电商平台:传统情况下,电商平台起到了中介的作用。一旦买卖双方发生纠纷,电商平台会作为第三方机构进行仲裁。这种模式存在着周期长、缺乏公证、成本高等缺点。OpenBazaar 试图在无中介的情形下,实现安全电商交易。具体地,OpenBazaar 提供的分布式电商平台,通过多方签名机制和信誉评分机制,让众多参与者合作进行评估,实现零成本解决纠纷问题。D.大数据共享 E.减小共享风险

4.贸易管理

区块链技术可以帮助自动化国际贸易和物流供应链领域中繁琐的手续和流程。基于区块链设计的贸易管理方案会为参与的多方企业带来极大的便利。另外,贸易中销售和法律合同的数字化、货物监控与检测、实时支付等方向都可能成为创业公司的突破口。 物联网:物联网也是很适合应用区块链技术的一个领域,预计未来几年内会有大量应用出现,特别是租赁、物流等特定场景,都是很合适结合区块链技术的场景。但目前阶段,物联网自身的技术局限将造成短期内不会出现大规模应用。

A.跨境贸易B.物流供应链C.一带一路(这个我也不知道是什么)

5.物联网

6.其他场景

A.云存储B.医疗C.通信和社交D.投票E.预测F.电子游戏

这些行业各有不同的特点,但或多或少都需要第三方担保机构的参与,因此都可能从区块链技术中获得益处。

分布式系统核心问题

A.一致性问题B.共识算法C.FLP不可能性原理:在网络可靠,存在节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性算法。D.CAP原理(没理解) E.ACID原则 F.paxos与Raft G.拜占庭问题与算法 H.可靠性指标 



认识上的误区

目前,由于区块链自身仍是一种相对年轻的技术,不少人对区块链的认识还存在一些误区。下面,是需要注意的一些问题:

首先,区块链不等于比特币。虽说区块链的基本思想诞生于比特币的设计中,但发展到今日,比特币和区块链已经俨然成为了两个不太相关的技术。前者更侧重从数字货币角度发掘比特币的实验性意义;后者则从技术层面探讨和研究可能带来的商业系统价值,试图在更多的场景下释放智能合约和分布式账本带来的科技潜力。

其次,区块链不等于数据库。虽然区块链也可以用来存储数据,但它要解决的核心问题是多方的互信问题。单纯从存储数据角度,它的效率可能不高,笔者也不推荐把大量的原始数据放到区块链系统上。当然,现在已有的区块链系统中,数据库相关的技术十分关键,直接决定了区块链系统的吞吐性能。

TODO: bigchaindb, chainsql

最后,区块链并非一门万能的颠覆性技术。作为融合多项已有技术而出现的新事物,区块链跟现有技术的关系是一脉相承的。它在解决多方合作和可信处理上向前多走了一步,但并不意味着它是万能的,更不会彻底颠覆已有的商业模式。很长一段时间里,区块链所适用的场景仍需不断摸索,并且跟已有系统也必然是长期合作共存的关系。

交易资产

简介

chaincode_example02.go 主要实现如下的功能:

1.初始化 A、B 两个账户,并为两个账户赋初始资产值;

2.在 A、B 两个账户之间进行资产交易;

3.分别查询 A、B 两个账户上的余额,确认交易成功;

4.删除账户。

主要函数

init:初始化 A、B 两个账户;

invoke:实现 A、B 账户间的转账;

query:查询 A、B 账户上的余额;

delete:删除账户。


数字货币发行与管理

简介

该智能合约实现一个简单的商业应用案例,即数字货币的发行与转账。在这之中一共分为三种角色:中央银行,商业银行,企业。其中中央银行可以发行一定数量的货币,企业之间可以进行相互的转账。主要实现如下的功能:

1.初始化中央银行及其发行的货币数量

2.新增商业银行,同时央行并向其发行一定数量的货币

3.新增企业

4.商业银行向企业转给一定数量的数字货币

5.企业之间进行相互的转账

6.查询企业、银行、交易信息

主要函数

init:初始化中央银行,并发行一定数量的货币;

invoke:调用合约内部的函数;

query:查询相关的信息;

createBank:新增商业银行,同时央行向其发行一定数量的货币;

createCompany:新增企业;

issueCoin:央行再次发行一定数量的货币(归于交易);

issueCoinToBank:央行向商业银行转一定数量的数字货币(归于交易);

issueCoinToCp:商业银行向企业转一定数量的数字货币(归于交易行为);

transfer:企业之间进行相互转账(归于交易行为);

getCompanys:获取所有的公司信息,如果企业个数大于10,先访问前10个;

getBanks:获取所有的商业银行信息,如果商业银行个数大于10,先访问前 10 个

getTransactions:获取所有的交易记录 如果交易个数大于10,先访问前 10 个;

getCompanyById:获取某家公司信息;

getBankById:获取某家银行信息;

getTransactionBy:获取某笔交易记录;

writeCenterBank:修改央行信息;

writeBank:修改商业银行信息;

writeCompany:修改企业信息;

writeTransaction:写入交易信息。

数据结构设计

centerBank 中央银行

Name:名称

TotalNumber:发行货币总数额

RestNumber:账户余额

ID:ID固定为 0

bank 商业银行

Name:名称

TotalNumber:收到货币总数额

RestNumber:账户余额

ID:银行 ID

company 企业

Name:名称

Number:账户余额

ID:企业 ID

transaction 交易内容

FromType:发送方角色 //centerBank:0,Bank:1,Company:2

FromID:发送方 ID

ToType:接收方角色 //Bank:1,Company:2

ToID:接收方 ID

Time:交易时间

Number:交易数额

ID:交易 ID


术语

通用术语

Blockchain(区块链):基于密码学的可实现信任化的信息存储和处理的结构和技术。

Byzantine Failure(拜占庭错误):指系统中存在除了消息延迟或不可送达的故障以外的错误,包括消息被篡改、节点不按照协议进行处理等,潜在地会对系统造成针对性的破坏。

CDN:Content Delivery Network,内容分发网络。利用在多个地理位置预先配置的缓存服务器,自动从距离近的缓存服务器进行对请求的响应,以实现资源的快速分发。

Consensus(共识):分布式系统中多个参与方对某个信息达成一致,多数情况下为对发生事件的顺序达成一致。

Decentralization(去中心化):无需一个独立第三方的中心机构存在,有时候也叫多中心化。

Distributed(分布式):非单体中央节点的实现,通常由多个个体通过某种组织形式联合在一起,对外呈现统一的服务形式。

Distributed Ledger(分布式账本):由多家联合维护的去中心化(或多中心化)的账本记录平台。

DLT:Distributed Ledger Technology,分布式账本技术。包括区块链、权限管理等在内的实现分布式账本的技术。

DTCC:Depository Trust and Clearing Corporation,存托和结算公司。全球最大的金融交易后台服务机构。

Fintech:Financial Technology,跟金融相关的(信息)技术。

Gossip:一种 P2P 网络中多个节点之间进行数据同步的协议,如随机选择邻居进行转发。

LDAP:Lightweight Directory Access Protocol,轻量级目录访问协议,是一种为查询、搜索业务而设计的分布式数据库协议,一般具有优秀的读性能,但写性能往往较差。

Market Depth(市场深度):衡量市场承受大额交易后汇率的稳定能力,例如证券交易市场出现大额交易后价格不出现大幅波动。

MTBF:Mean Time Between Failures,平均故障间隔时间,即系统可以无故障运行的预期时间。

MTTR:Mean Time to Repair,平均修复时间,即发生故障后,系统可以恢复到正常运行的预期时间。

MVCC:Multi-Version Concurrency Control,多版本并发控制。数据库领域的技术,通过引入版本来实现并发更新请求的乐观处理,当更新处理时数据版本跟请求中注明版本不一致时则拒绝更新。发生更新成功则将数据的版本加一。

Non-validating Peer(非验证节点):不参与账本维护,仅作为交易代理响应客户端的请求,并对交易进行一些基本的有效性检查,之后转发给验证节点。

P2P:点到点的通信网络,网络中所有节点地位均等,不存在中心化的控制机制。

SLA/SLI/SLO:Service Level Agreement/Indicator/Objective,分别描述服务可用性对用户的承诺,功能指标和目标值。

SWIFT:Society for Worldwide Interbank Financial Telecommunication,环球银行金融电信协会,运营世界金融电文网络,服务银行和金融机构。

Turing-complete(图灵完备):指一个机器或装置能用来模拟图灵机(现代通用计算机的雏形)的功能,图灵完备的机器在可计算性上等价。

Validating Peer(验证节点):维护账本的核心节点,参与一致性维护、对交易的验证和执行。更进一步可以划分为 Endorser、Committer 等多种角色。

密码学与安全相关

ASN.1:Abstract Syntax Notation One,定义了描述数据的表示、编码、传输、解码的一套标准,被广泛应用在计算机、通信和安全领域。

CA:Certificate Authority,负责证书的创建、颁发,在 PKI 体系中最为核心的角色。

CRL:Certification Revocation List,证书吊销列表,包含所撤销的证书列表。

CSR:Certificate Signing Request,证书签名申请,包括通用名、名称、主机、生成私钥算法和大小、CA 配置和序列号等信息,用来发给 CA 服务以颁发签名的证书。

DER:Distinguished Encoding Rules,ASN.1 中定义的一种二进制编码格式,可以用来保存证书或密钥内容。

Genesis Block:创世区块,区块链的第一个区块,一般用于初始化,不带有交易信息。

Hash:哈希算法,任意长度的二进制值映射为较短的固定长度的二进制值的算法。

IES:Integrated Encryption Scheme,集成加密机制,一种混合加密机制,可以应对选择明文攻击(可以获知任意明文和对应密文)情况下的攻击。包括 DLIES(基于离散对数)和 ECIES(基于椭圆曲线)两种实现。

Nonce:密码学术语,表示一个临时的值,多为随机字符串。

OCSP:Online Certificate Status Protocol,在线证书状态协议,通过查询服务来在线确认证书的状态(如是否撤销)。RFC 2560 中定义。

PKCS:Public-Key Cryptography Standards,公钥密码标准,由 RSA 实验室提出,定义了利用 RSA 算法和相关密码学技术来实现安全的系列规范,目前包括 15 个不同领域的规范。最早的版本在 1991 年提出,目前最新版本为 2012 年提出的 2.2 版本。

PEM:Privacy Enhanced Mail,用来保存证书和密钥的一种编码格式,RFC 1421-1424 中定义。

PKI:Public Key Infrastructure,基于公钥体系的安全基础架构。

SM:国家商用密码算法,2010 年以来陆续由国家密码管理局发布的相关标准和规范,主要包括:SM2(基于椭圆曲线密码的公钥密码算法标准)、SM3(Hash 算法标准)、SM4(基于分组加密的对称密码算法标准)、SM9(基于身份的数字证书体系)。

比特币、以太坊相关术语

Bitcoin(比特币):最早由中本聪提出和实现的基于区块链思想的数字货币技术。

DAO:Decentralized Autonomous Organization,分布式自治组织,基于区块链的按照智能合约联系起来的松散自治群体。

Lightning Network(闪电网络):通过链外的微支付通道来增大交易吞吐量的技术。

Mining(挖矿):通过暴力尝试来找到一个字符串,使得它加上一组交易信息后的 Hash 值符合特定规则(例如前缀包括若干个 0),找到的人可以宣称新区块被发现,并获得系统奖励的数字货币。

Miner(矿工):参与挖矿的人或组织。

Mining Machine(矿机):专门为数字货币挖矿而设计的设备,包括基于软件、GPU、FPGA、专用芯片等多种实现。

Mining Pool(矿池):采用团队协作方式来集中算力进行挖矿,对产出的数字货币进行分配。

PoS:Proof of Stake,股份持有证明,拥有代币或股权越多的用户,挖到矿的概率越大。

PoW:Proof of Work,工作量证明,在一定难题前提下求解一个 SHA256 的 Hash 问题。

Smart Contract(智能合约):运行在区块链上的提前约定的合同;

Sybil Attack(女巫攻击):少数节点通过伪造或盗用身份伪装成大量节点,进而对分布式系统系统进行破坏。

超级账本相关术语

Anchor(锚定):一般指作为刚启动时候的初始联络元素或与其它结构的沟通元素。如刚加入一个通道的节点,需要通过某个锚点节点来快速获取通道内的情况(如其它节点的存在信息)。

Auditability(审计性):在一定权限和许可下,可以对链上的交易进行审计和检查。

Block(区块):代表一批得到确认的交易信息的整体,准备被共识加入到区块链中。

Blockchain(区块链):由多个区块链接而成的链表结构,除了初始区块,每个区块头部都包括前继区块内容的 Hash 值。

Chaincode(链码):区块链上的应用代码,扩展自“智能合约”概念,支持 Golang、Nodejs 等语言,多为图灵完备。

Channel(通道):Fabric 网络上的私有隔离机制。通道中的链码和交易只有加入该通道的节点可见。同一个节点可以加入多个通道,并为每个通道内容维护一个账本。

Committer(提交节点):一种 Peer 节点角色,负责对 Orderer 排序后的交易进行检查,选择合法的交易执行并写入存储。

Commitment(提交):提交节点完成对排序后交易的验证,将交易内容写到区块,并更新世界状态的过程。

Confidentiality(保密):只有交易相关方可以看到交易内容,其它人未经授权则无法看到。

Endorser(推荐节点或背书节点):一种 Peer 节点角色,负责检验某个交易是否合法,是否愿意为之背书、签名。

Endorsement:背书过程。按照链码部署时候的背书策略,相关 Peer 对交易提案进行模拟和检查,决策是否为之背书。如果交易提案获得了足够多的背书,则可以构造正式交易进行进一步的共识。

Invoke(调用):一种交易类型,对链码中的某个方法进行调用,一般需要包括调用方法和调用参数。

Ledger(账本):包括区块链结构(带有所有的交易信息)和当前的世界状态(world state)。

Member(成员):代表某个具体的实体身份,在网络中拥有自己的根证书。节点和应用都必须属于某个成员身份。同一个成员可以在同一个通道中拥有多个 Peer 节点,其中一个为 Leader 节点,代表成员与排序节点进行交互,并分发排序后的区块给属于同一成员的其它节点。

MSP(Member Service Provider,成员服务提供者):抽象的实现成员服务(身份验证,证书管理等)的组件,实现对不同类型的成员服务的可拔插支持。

Orderer(排序节点):共识服务角色,负责排序看到的交易,提供全局确认的顺序。

Permissioned Ledger(带权限的账本):网络中所有节点必须是经过许可的,非许可过的节点则无法加入网络。

Privacy(隐私保护):交易员可以隐藏交易的身份,其它成员在无特殊权限的情况下,只能对交易进行验证,而无法获知身份信息。

System Chain(系统链):由对网络中配置进行变更的配置区块组成,一般可以用来作为组成网络成员们形成的联盟约定。

Transaction(交易):执行账本上的某个函数调用或者部署、更新链码。调用的具体函数在链码中实现。

Transactor(交易者):发起交易调用的客户端。

World State(世界状态):即最新的全局账本状态。Fabric 用它来存储历史交易发生后产生的最新的状态,可以用键值或文档数据库实现。

你可能感兴趣的:(2018-05-04 区块链随笔)