区块链学习 - super zero的小白

最近开始沉浸在blockchain的学习中,问为什么有动力,因为比特币的吸引,好想搞清楚这是什么东东,然后买点儿入手。攒点钱,入手一个也可以啊。。。!

既然开始学习,那就从基本概念入手,所以这几天一直在网上搜索社区、论文、IBM的各种资料。先堆砌一些吧,之后有空再整理。。。。

1. 什么是区块链

区块链(Blockchain)严格的定义是指通过基于密码学技术设计的共识机制方式,在对等网络中多个节点共同维护一个持续增长,由时间戳和有序记录数据块所构建的链式列表账本的分布式数据库技术。该技术方案让参与系统中的任意多个节点,把一段时间系统内全部信息交流的数据,通过密码学算法计算和记录到一个数据块(block),并且生成该数据块的指纹用于链接(chain)下个数据块和校验,系统所有参与节点来共同认定记录是否为真。

2. IBM developerworks 讲解的一些概念:

2.1 区块和区块链
区块链是一种分布在整个业务网络上的共享账本。业务交易被永久记录在仅附加到账本的区块 中。所有经过确认和证明的交易都从创始区块一直链接到最新的区块,因而得名区块链。区块链是自网络中的区块链启动以来发生的所有交易的历史记录。区块链被用作该网络的单一事实来源。区块链网络可以是许可网络或无许可网络。无许可网络向所有参与方开放,参照网络上的已有规则对交易进行验证。任何参与方都可以查看账本上的交易,即使参与方是匿名的。比特币是人们最熟悉的一个无许可网络示例。另一方面,许可网络仅能由给定业务网络中的参与者访问。在许可区块链上,参与者只允许查看与他们相关的交易。Hyperledger Project 就是为支持许可区块链的开发而创立的。

2.2 交易、资产和一致性
交易 是传输到账本或从账本传出的资产。任何可被拥有或控制来产生价值的事物都是资产。资产可以是有形的(比如住宅或汽车)或无形的(比如抵押或租赁)。
账本中的条目被同步到网络中的所有账本。区块链网络中的参与方处理的每个账本副本被称为节点。节点之间的一致性 能确保共享账本是精确的副本,并降低发生交易欺诈的风险,因为篡改需要同时在许多地方进行。要实现一致性,所有参与者都必须同意交易并通过对等网络验证它。参与者还可以建立验证交易的规则。与无许可区块链中存在的更高成本相比,受信任的参与者网络可减少在节点之间建立一致性的成本。

2.3 密码哈希算法和数字签名
密码哈希算法(比如 SHA256 计算算法)利用可变大小的交易输入生成一个固定大小的唯一哈希值(被称为摘要)。哈希运算包含一个数学属性,那就是一个给定输入只能得到一个唯一的哈希值,但不能从哈希值推导出输入。一个给定的输入总是会计算出相同的哈希值。对交易输入的任何修改或改动 — 甚至是最细微的更改 — 都会导致计算出不同的哈希值,这表明交易输入可能被损坏。因此,可使用哈希值检测交易输入的完整性。数字签名 可以确保接收者收到的交易数据中没有包含修改或伪造过的交易内容,还可以确保交易源自发送方(已使用私钥进行签名),而不是来自冒充者。对称**加密使用一个私钥来加密和解密数据。该**必须使用一个安全网络进行共享,而数据可在不安全的网络上广播,但能由拥有该私钥的各方读取:区块链技术使用了公钥加密,也称为非对称**加密。在公钥加密中,每个参与者都有一个公钥/私钥对。发送者可以使用接收者的公钥来加密数据。然后只能使用接收者的私钥读取文档或数据。非对称**加密在传输数据时无需使用安全网络来交换**。

2.4 智能合约和链代码
关于 Hyperledger Fabric,Hyperledger Fabric 是为业务用途而开发区块链应用和解决方案的基础。
要使用拟议的交易来更新账本,每个节点必须按照智能合约 的逻辑来处理交易。智能合约由直接在复制的网络上运行的程序组成。智能合约使用一种编程语言在区块链上对业务规则或合同进行编码,由网络中的所有参与者执行。这些程序在 Hyperledger Fabric 中称为链代码,它们被复制到网络中的每个节点,并由拥有权限的各方调用来传输资产。
链代码必须是确定的,也就是说,相同的输入必须始终产生相同的输出。因此,每个节点可以相信它和对等节点处理的是同一个交易。

2.5 区块链应用
一个区块链应用需要 3 个相互依赖的组件:面向用户的应用、智能合约和账本。顶层是面向用户的应用,用于满足网络参与者的需求。该应用让用户调用智能合约在业务网络中触发交易。智能合约 封装网络的业务逻辑:资产、所有权和传输方式。每次调用智能合约,都会在网络中创建一个交易并更新账本。账本 持有智能合约数据的当前值(如 vehicleOwner=Daisy),并分发到整个网络。


3.  区块链技术基础:分布式账本简介
3.1 账本的作用
在如今的互联一体化世界中,经济活动都是在跨越国家、地理和司法边界的商业网络中进行的。商业网络通常汇聚在生产者、消费者、供应商、合作伙伴、市场创造者/推动者和其他项目干系人云集的市场中,这些项目干系人能够拥有、控制并行使他们在价值对象(也称为资产)上的权力、特权和权利。资产可以是有形的物理资产,比如汽车和住房,也可以是无形的虚拟资产,比如证券和专利。资产的拥有和转移会在商业网络中创造价值,这个过程被称为交易(transaction)。
交易通常涉及不同参与方,比如买家、卖家和中介(比如银行、审计员或司法人员),他们的商业协议和合同记录在账本(ledger)中。一个企业通常使用多个账本来跟踪资产的所有权,以及在其各种业务中的参与者之间的资产转移。账本是企业的经济活动和利益的记录系统(System of Record,SOR)。
典型的商业账本类似于:

区块链学习 - super zero的小白
3.2 当前商业账本存在的问题
当前使用的商业账本存在许多不足之处。它们效率低下、成本高、不透明且容易发生欺诈和滥用。这些问题源于集中化的、基于信任的第三方系统,比如金融机构、票据交换所,以及现有制度安排下的其他中介。
这些集中化的、基于信任的账本系统会给交易结算带来瓶颈和障碍。缺乏透明性,而且很容易发生腐败和欺诈,并导致争议。解决争议、逆转交易或提供交易保险的成本很高。这些风险和不确定性导致了错失商机。
此外,每个网络参与者自己系统上的商业账本副本都是不同步的,这会导致因为临时的、错误的数据而制定错误的商业决策。在最好的情况下,能够解决账本不同副本之间差异,但却延误了制定明智决策的时机。

3.3 区块链到底是什么?
区块链是一种防篡改的、共享的数字化账本,用于记录公有或私有对等网络中的交易。账本分发给网络中的所有成员节点,在区块 中永久记录网络中的对等节点之间发生的资产交易的历史记录。所有经过确认和证明的交易都从链的开头一直链接到最新的区块,因此得名区块链。区块链可以充当单一事实来源,而且区块链网络中的成员只能查看与他们相关的交易。

3.4 区块链网络的工作原理
区块链网络中的成员节点不依赖于第三方(比如金融机构)来仲裁交易,它们使用一致性协议来来协商账本内容,使用密码哈希算法和数字签名来确保交易的完整性。一致性能确保共享账本是精确副本,并降低了发生交易欺诈的风险,因为篡改需要同时在许多地方同时执行。密码哈希算法(比如 SHA256 计算算法)能确保对交易输入的任何改动 — 甚至是最细微的改动 — 都会计算出一个不同的哈希值,表明交易输入可能被损坏。数字签名 确保交易源自发送方(已使用私钥签名)而不是冒名顶替者。去中心化对等区块链网络可阻止任何单个或一组参与者控制底层基础架构或破坏整个系统。网络中的参与者是平等的,都遵守相同的协议。它们可以是个人、国家代表、企业或所有这三种参与者的组合。在其核心,该系统会记录交易的时间顺序,而且所有节点都赞同使用选定的一致性模型的交易的有效性。这会使交易不可逆并被网络中的所有成员接受。

3.5 区块链技术的商业优势
在传统商业网络中,所有参与者都在维护自己的账本,账本交易之间的重复和差异会导致争议、更长的结算时间,而且因为需要中介,还会导致相关的间接管理成本。但是,通过使用基于区块链的共享账本,交易在通过一致性验证并写入账本后,就不能再更改,这样企业就能节省时间和成本,同时减少风险。区块链技术可以提高自愿参与者之间的透明性、自动化、账本定制化,以及记录的可信度。
区块链一致性机制提供了经过整合的、一致的数据集的优势,减少了错误,拥有近实时的引用数据,而且参与者能够灵活更改其拥有的资产的描述。
因为没有参与成员拥有共享账本中所含信息的来源,所以区块链技术会提高参与成员之间的交易信息流中的可信度和完整性。
区块链技术的不变性机制降低了审计和合规性成本,增加了透明性。而且因为使用区块链技术在商业网络上执行的合同是智能的、自动化的和最终的合同,所以企业会获得更高的执行速度、更低的成本和更少的风险,并能及时结算合同。
如何才算是好的区块链用例?
要确定您的用例是否适合使用区块链,请询问自己以下问题:
    .    是否涉及商业网络?
    .    是否使用一致性来验证交易?
    .    是否需要审计线索或来源?
    .    交易记录是否必须不可变或防篡改?
    .    争议的解决是否会是最终决定?
如果第一个问题和其他问题中的至少一个问题的答案为“是”,那么您的用例就会从区块链技术受益。要成为合适的解决方案,区块链必须涉及一个网络,但该网络可以具有多种形式。该网络可位于企业之间,比如供应链,或者该网络可以在一个企业内。例如:在企业内,可以使用区块链网络在部门之间共享参考数据,或者创建审计或合规性网络。该网络也可存在于个人之间,比如需要在区块链上存储数据、数字资产或合同的人。

4.企业区块链需求
我们相信区块链是一种真正颠覆性的技术,能给商业网络带来变革。我们还相信,这一创新需要以开放的方式与其他科技公司及行业协作进行。为实现此目的,IBM 一直在向 Hyperledger Project 贡献代码。
从 IBM 的角度讲,行业级区块链技术具有以下特征:

  • 共享的、经过许可的账本(Shared, Permissioned Ledger)是仅可附加(append-only)的记录系统(SOR)和单一事实来源。它对商业网络的所有参与成员均可见。
  • 一致性协议(Consensus Protocol)是商业网络的所有参与成员都赞同的协议,可确保仅使用经过网络验证的交易来更新账本。
  • 加密(Crytography)可确保交易的防篡改安全性、身份验证和完整性。
  • 智能合约(Smart Contract)封装了在网络上发生的交易的参与者协议条款;它们存储在区块链中的有效节点上并通过交易触发。

除了这些属性之外,企业区块链技术还需要支持关键的行业要求,比如性能、经过验证的身份,以及私人的、机密的交易。Hyperledger Fabric 就是为满足这些需求而设计的。它还设计了一种可插拔的一致性协议,允许企业为其网络选择最佳算法。

区块链学习 - super zero的小白


5. Linux Foundation 的 Hyperledger Project 简介
Hyperledger Project 是一个开源的、协作完成的项目,旨在为 B2B 和 B2C 交易创建区块链。IBM 是 Hyperledger Project 的创始成员之一,向如今成为孵化的第一个项目的 Hyperledger Fabric 贡献了 44,000 行区块链代码。
Hyperledger Fabric 旨在创建一种可应用于涉及 B2B 和 B2C 交易的各种不同行业用例的开放标准。这项工作的主要目标是:

  • 支持各种各样具有不同要求的行业用例
  • 遵守现有的管理制度
  • 支持已验证的身份,以及私人的、机密的交易
  • 支持许可制、共享的账本
  • 支持性能、可伸缩扩展、可审计性、身份识别、安全性和隐私性
  • 减少工作证明中涉及的高成本计算

为了提供功能和所需的能力,Hyperledger Fabric 使用了以下概念作为基础:

  • 智能合约(Smart contract)数字资产(Digital asset)
  • 记录系统存储库/存储(System of record repositories/stores)
  • 去中心化一致性网络(Decentralized consensus-based network)
  • 可插拔的一致性算法/模型(Pluggable consensus algorithms/models)
  • 密码安全性(Cryptographic security)

Hyperledger Fabric 架构支持模块化、即插即用互操作性和容器技术,支持使用任何流行语言编写的智能合约。