前言
本文是对区块链技术的简介总结,如果要对区块链技术详细了解和学习,可参考廖雪峰老师的区块链教程
1.1什么是区块链-技术角度
定义:区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology,简称DLT)。
1.2什么是区块链-业务角度
区块链来源于社会和经济发展需求,解决在非完全可信的环境下依靠相互缺乏信任的群体之间的协作达成可信的交易。
1.3区块链关键技术-交易
数据的写入——交易(Transaction)
主要包含三要素:
发起人(ID/公钥/地址)
行为(转账、合约调用、存证等)
发起人的签名
没有签名的交易无法在区块链P2P网络中传播,更无法被打包
1.4区块链关键技术-密码学
哈希算法(杂凑算法、散列算法)
正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。
逆向困难:给定(若干)hash 值,在有限时间内很难(基本不可能)逆推出明文。
输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。
冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突/碰撞)。
1.5区块链关键技术-密码学
非对称加密(私钥、公钥、签名)
私钥加密的内容,公钥解密
公钥加密的内容,私钥解密
公钥对外公开,通过公钥无法得到私钥
私钥对消息产生签名,公钥验证消息和签名
签名不可伪造,不可抵赖
1.6区块链关键技术-链式存储
区块(Block)+链(Chain)
通过区块头中“上一区块哈希”字段,组成的链式数据结构。
1.7多副本实现分布存储
区块链技术又叫做分布式账本技术,每个全节点都拥有一套完整的区块链数据(也就是一套完整的账本或数据库),任何一方往区块链上的写入,都会同步到所有参与方的本地数据库中。
每个全节点都保存一份拷贝,谁私自更改了数据。
造成了存储的浪费
1.8区块链技术基础-智能合约
◼智能合约是区块链上可以执行的代码,可以在区块链节点上安全执行(虚拟机或者容器)。
◼首先把工作流程数字化,然后转化为智能合约部署在区块链上,并通过群体的合作,安全地自动化执行。
智能合约可以理解为程序的触发器,即先预设触发的条件,并且以编程合约的方式记录到区块链上, 当条件达成时,自动触发执行,结果记录到区块上。
区块链通常可以支持多种类型的智能合约语言。
智能合约的编写、测试、部署、检索、执行、撤销、查寻等都需要在安全环境下执行。
通过智能合约可以在区块链上部署业务服务。
1.9区块链技术基础-共识机制
对于每笔新产生的交易,谁来记账?
◼由于环境不可信,或者参与群体之间缺乏(或者没有)互信,需要共识机制来协调群体的活动,主要包括:
✓ 谁维护(存储/交换)交易记录账本” />✓ 谁有权限决定一笔交易是合法的?
✓ 谁是初始数字资产的产生者?
✓ 谁可以修改系统规则?
✓ 数字资产交换谁怎么获利?
◼通过共识,确保区块链上存储数据的一致性、完整性和安全性,防止数据分叉、双花攻击、数据丢失和重复记录等事件发生。
1.10区块链关键技术总结
当一笔数据产生后,会由共识机制进行数据维护通过分布式存储记录在链上,然后交由智能合约去执行,最后由密码学保证整个体系的安全。
用打麻将来举个例子:
分布式 —— 每人一个账本,都参与记账
共识机制 —— 谁胡牌谁记账,其他人复制胡牌人的记账。
不可伪造——胡牌人记的账,需要经过其他人3人的检查,记错账,白忙活。
不可篡改—— 输多了,想修改自己账本,账本对不上,会被发现。
四人无论由单独记账,其他方不信任。
请第三方记账,一方面增加成本,第二、会有可能把信息泄露出去。
输赢暂时都不用给钱,而是先记个账,四人每人一本账本。
每局由胡牌的人先记账,其他三人看过没问题后,把这一局的记账照抄到自己的账本上,如果记错了或者记假账,就没法拿到赢得钱。
1.11区块链三种协作模式,各有特点和适用性
公有链:假设世界不可信。参与者等权,参与者通常匿名、不需要获得专门许可、不需要把真实身份做任何映射就可以直接使。
联盟链:假设组织不可信。联盟链有准入机制,一般由行业里的机构、企业和政府组织的联盟发起,由联盟成员共同建设和运营联盟链,共同完成联链链上的协作(可以有分工),可理解为“企业间的数据库”。
私有链:假设组织内部各机构或者“队友”不可信。在大型企业内部,或者是在政府各个相关主管部门之间部署,利用区块链技术将内部流程上链,以降低管理和沟通成本。