区块链-技术简介(*)

2023-10-29

1.什么是区块链?
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。简单来讲, 在区块链系统中, 每过一段时间, 各参与主体产生的交易数据会被打包成一个数据区块, 数据区块按照时间顺序依次排列, 形成数据区块的链条,各参与主体拥有同样的数据链条, 且无法单方面篡改,任何信息的修改只有经过约定比例的主体同意方可进行,并且只能添加新的信息,无法删除或修改旧的信息,从而实现多主体间的信息共享和一致决策, 确保各主体身份和主体间交易信息的不可篡改、 公开透明。

区块链发展到今天,已经涌现出许多形形色色的区块链项目, 这里梳理了这些区块链项目在技术上的共性: 区块、 账户、 智能合约、 共识, 这 4 个主要部分构成了目前的区块链系统的通用模型 。

(1)通过链式结构记录状态的变更历史,每一次变更的状态“快照”都以“区块” 的形式记录;
(2)通过非对称密钥对表示参与者身份,以某种形式的状态数据库记录当前的信息, 这部分被称为“账户” ;(注: 以太坊、 Fabric 是账户模型, 而比特币是 UTXO 模型)
(3)通过链上编码定义参与者之间的承诺,这部分被称为“智能合约” ;
(4)通过某种算法在多节点之间达成状态一致, 这个过程被称为“共识” 。

2.区块链有哪些特点?
从技术构成的角度来观察区块链有助于我们揭开它的神秘面纱, 实事求是地分析区块链, 并揭示它的本质特点,理解其价值发挥的内在逻辑。 如前所述, 区块链并不是一个全新的技术, 而是结合了多种现有技术进行的组合式创新,是一种新形式的分布式加密存储系统。

区块链本质上是一种健壮和安全的分布式状态机,典型的技术构成包括共识算法、 P2P通讯、密码学、 数据库技术和虚拟机。这也构成了区块链必不可少的 5 项核心能力:
(1)存储数据:源自数据库技术和硬件存储计算能力的发展,随着时间的累积,区块链的大小也在持续上升,成熟的硬件存储计算能力, 使得多主体间同时大量存储相同数据成为可能;
(2)共有数据:源自共识算法,参与区块链的各个主体通过约定的决策机制自动达成共识, 共享同一份可信的数据账本;
(3)分布式:源自 P2P 通讯技术,实现各主体间点对点的信息传输;
(4)防篡改与保护隐私:源自密码学运用, 通过公钥私钥、 哈希算法等密码学工具,确保各主体身份和共有信息的安全;
(5)数字化合约:源自虚拟机技术,将生成的跨主体的数字化智能合约写入区块链系统,通过预设的触发条件, 驱动数字合约的执行。

3.区块链适合解决哪些问题?
通过对比分析、 研究国内外各领域的典型应用案例及相关参考文献,获得了一些有助于在业务中推广及应用区块链的经验, 并推荐具有以下特点的应用场景或问题,应该积极考虑尝试区块链技术:
(1)业务开展需要进行跨主体协作
当需要为开展跨主体的业务建设 IT 系统时, 传统的解决方案通常是两种思路。要么建立和运营一个中心化的系统来处理各个参与方的业务需求,业务数据由中心化的组织维护;要么采用 SOA 架构, 由各个参与方发布服务接口,并相互调用,数据仍然维护在各个参与方。如果采用中心化的方案,若是业务的参与方之间是相对独立平等的,要开发建设一个中心化系统是很困难的, 包括协调、 立项、 成本分摊等问题。 如果采用 SOA 的方案, 则技术实践上比较复杂, 技术方案缺少通用性, 难以支持复杂的业务。 此外,从数据的角度来看,无论是中心化的方案还是 SOA, 都难以实现数据防篡改。

在业务参与方之间相对独立平等的跨主体业务协作的场景下, 利用区块链的共有数据、防篡改、 分布式和数字化合约的特点, 能够把一些以往需要在业务层面协调解决的问题, 放到技术层面来解决, 使得问题的解决过程更高效、灵活以及更具客观性。

(2)业务开展需要参与方之间建立低成本信任
大多数业务开展都需要建立一定的信任基础,尤其是跨主体的场景下。 对信任建立困难、信任维护成本高的应用场景, 区块链可以提供非常有效帮助。
我们从三个方面来考察区块链如何建立低成本信任:
【1】数据可信
传统的解决方案中,数据通常是以中心化的方式存储,本应共有的业务数据却被强势的参与方持有。 这种模式下,数据的可信度是由数据持有者的商业/社会信用来保证的, 只能建立主观的可信,对于一些重要的领域, 仍需要付出额外的成本来规避数据被恶意篡改的风险。

区块链的解决方案是结合了密码学哈希和数字签名,以区块链条的形式将数据的变更历史按时间先后链在一起, 并通过共识协议使得参与的各方都共同拥有这些数据。

由于多方分别持有相同的数据副本, 并且数据被签名确认, 并记录数据的“指纹”(哈希值), 以密码技术保证了数据无法被篡改, 数据因此变得可信。

区块链使数据持有变得去中心化,以技术手段实现数据客观“可信”。

【2】合约履行
通常的合约(或者契约、 协定、合同) 的履行从根本上是由法律来保障的。合约被自觉履行一般都是因为有利益、 道德或法律后果, 受许多主观因素影响。 商业活动中为了防止违约、或对违约进行追索, 需要付出高昂的成本(担保、保险、律师费、漫长司法程序等等)。

区块链智能合约的本质是一套数字化形式的契约,由计算机确保严格执行。执行方式上, 通常的合约是事后以人的主观意愿来执行;而智能合约是在触发条件被满足后,由计算机程序来保证合约及时地执行,具有客观性。

我们把资产数字化到区块链或与区块链锚定, 采用智能合约来描述对资产关系的承诺,同时智能合约的执行过程和结果被区块链严格记录,这样便可以降低履约成本和确保高效履约。

区块链智能合约带来的是“契约” 的一种新的更精确的表示形式, 以及一种更客观、 更严格的执行方式。由于契约是我们社会活动的基础,因此这种变化将会带来更广泛的社会影响。

【3】历史可证明
区块链固化了交易历史,并提供对交易历史的追溯查询,保证交易的不可篡改和不可抵赖。

如果某个事件发生时,这个事件连同时间戳一起被记录到区块链中,将来就可以通过区块链证明这件事确实在这个时间发生过。因此区块链为参与交易的各方保留了可信的历史记录。

(3)业务过程存在长交易、 长周期链条
业务在多主体间流转时, 难以确定间接主体的真实性和有效性,同时由于多主体间的业务隔离, 难以延伸出多级业务。区块链从技术上保证整个长交易、 长周期链条的各参与主体身份真实,数据可信, 实现信用的多级传递, 促进业务链条扁平化,提升业务效率。

比特币作为区块链技术的一种典型应用, 在交易市场上市值已达千亿美元,这样的一个高市值系统却是以开源的方式在公共网络上运行了多年, 表现出了良好的安全性和健壮性。比特币系统的表现揭示了一个重要事实——以客观区块链技术为手段可以直接建立信任, 而不需中介背书。

如果我们把区块链技术推广运用到更广泛的产业、金融、 公共服务等场景, 将使社会的生产分工方式产生巨大变化,这些变化包括:
【1】商业交易过程更容易达成信任, 从而降低风险, 使交易更具确定性;
【2】商业交易中间环节被缩减, 多方交易可直接达成;
【3】传统中介的中心化的服务模式将发生巨变。
这种影响目前已经逐渐显现, 随着区块链的逐渐成熟和应用的不断丰富,这种影响力将会像蝴蝶效应一般逐步放大和深入到整个社会, 推动去中心化或多中心化主体间的高效协同和共识决策。 人类因掌握“工具” 而发展文明,我们相信区块链是一种新的“工具” ,最终将促进人类社会的进步发展。

4.区块链发展面临的挑战
目前人们已经广泛认识到区块链巨大的应用价值,但是区块链的技术发展却还没有到达成熟阶段, 尤其在企业级应用方面, 区块链的交易并发能力、 数据存储能力、通用性、 功能完备性、 易用性都还存在明显不足。

(1)交易并发能力
目前开源的区块链系统的高并发交易能力普遍不高, 其中,共识算法是制约性能的重要方面。在区块链中使用的典型共识算法主要有: PoW、 PoS、 DPoS、 PBFT 等。

制约性能的另一个重要因素是账本结构。 目前典型的区块链账本设计为区块的单链结构, 意味着从全局来看所有的交易都只能顺序地被处理。 由于交易处理缺少并行度,因而难以获得接近于传统中心化系统的性能表现。

企业场景下的交易并发量通常要求在每秒处理数百至数千笔以上的交易, 远高于目前包括公有链、联盟链在内的典型区块链的表现,而且还要求区块链的性能表现可以随着业务规模的增长而动态伸缩。 因此, 现实和目标之间存在数量级的差别, 需要持续优化和提升区块链系统高并发交易性能。

(2)数据存储能力
在数据存储能力方面,由于区块链的数据只有追加而没有移除,数据只增不减, 随着时间推移, 区块链系统对数据存储大小的需要也只能持续地增大,在处理企业数据时这一趋势增长更甚。

不同于公链数字货币的主要内容是“账户余额” , 企业场景下的数据包含结构化和非结构化数据,数据量十分庞大。以电商供应链为例, 主要电商入口的每日数据记录条数通常都在千万级以上, 如再沿着供应链条进一步展开时,每延伸一级数据量都会进一步放大。

目前典型的区块链系统在实现对账本数据的存储时,典型的实现方式是基于文件系统或者简单的 KV 数据库存储, 没有采用分布式存储的设计,因而数据存储能力与实际需要之间也存在较大的差距, 需要探索更为有效的大数据存储方式。

(3)通用性
区块链需要适应多样化的业务需求,满足跨企业的业务链条上的数据共享,这意味着区块链对数据的记录方式要有足够的通用和标准,才能表示各种结构化和非结构化的信息,并能够满足随着业务范围拓展所需的跨链要求。

目前市面上的区块链系统大多采用特定的共识算法、 加密算法、 账户模型、 账本模型、存储类型,缺少可插拔能力, 无法适应不同场景要求。

(4)功能完备性
纵观现有区块链平台, 模型抽象单一, 难以适应业务系统快速开发的要求。 另外, 缺少对企业应用中常见的一些功能的支持,例如用户认证、 多级授权等。 再者,涉及到企业业务协作时, 跨企业的事件通知机制显得尤为重要,但少有区块链平台支持。

(5)易用性
区块链是由多种技术构成的,导致学习成本高、 实施难度大、 人才稀缺。如何让用户快速理解区块链,低成本学习区块链,并将区块链技术快速应用到自身的业务中去,目前来看有很大的挑战。区块链技术需要降低学习和使用门槛,支持快速实施部署,提供贴近业务的接口,推广使用。

从比特币的提出到今天为止, 人们尝试了非常多样化的应用场景。 最初是币(coin) 的应用,各种数字货币的出现和热炒引起了广泛关注和讨论。人们发现,作为比特币底层技术的区块链可以用来解决现有业务的一些痛点, 创新业务模式, 于是金融和产业领域开始形成一些组织联盟, 如 R3、 Hyperledger 等。 技术圈也逐渐将更多的关注从“币” 转到了区块链的企业级应用。

人们在许多领域进行了广泛的尝试, 例如供应链管理, 互联网金融,证券和银行业务,贸易融资,保险,医疗健康, 资产管理, 数字版权保护,公益慈善,政府公共服务, 监管合规性与审计,游戏,公益等等。 但是,目前已经成功落地的区块链应用比较少,无论是技术还是业务都还处在摸索阶段。

业界的积极实践进一步巩固和加深了人们对区块链潜在价值的认识,但却鲜有成功的落地案例,大多数停留在理念或 POC 阶段, 这种状况的形成受许多因素影响:

1.不适用的、不可持续的场景

有不少案例是为了区块链而区块链, 而不是从解决业务痛点出发,导致案例缺少有效价值,例如对一些不需要公开的信息进行存证。 或者没有结合区块链的特点来设计业务创新,仍然以传统的思路来设计业务模式,例如仍然用中心化影响力来把业务简单地搬到链上,不能高效地拓展业务边界。

2.错误的实施方法

没有充分认识区块链的技术特点, 无法设计出合理的技术方案。比较典型的例子如把区块链简单地当做数据库,把原来中心化系统数据直接搬到区块链上。

3.技术不成熟

没有充分认识区块链技术目前的成熟度现状,过于乐观地选择技术方案。目前区块链在性能、扩展性、易用性、功能完备性、运维成本等许多方面都还有待完善, 更合理的应用方式应该是以应用层业务系统为主,区块链底层完善优化为辅, 开展区块链技术应用。

4.人才稀缺

区块链是个多学科综合技术解决方案,包括分布式、存储、密码学、网络通讯、芯片技术、经济学、法律等,技术专业能力要求高,技术学习、 人才培养、 实践经验积累周期长。

目前影响区块链应用落地的因素有很多, 以上仅简单列举几点,以此说明区块链的发展仍然任重道远。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链-技术简介(*) 的相关文章

随机推荐

  • Fine BI、Smart BI、永洪BI、瓴羊Quick BI这些国产BI工具,都擅长哪些功能?

    近几年 随着国内大数据的火热 商业智能BI工具市场也迎来了大爆发 市面上涌现出了各种各样的BI工具 让很多企业在选择BI工具的时候遇上了 选择困难症 在最初 大多数企业都会选择Tableau 微软Power BI等外国公司的BI工具 然而
  • ARouter(七) 依赖注入

    当你从FirstActivity跳到SecondActivity 有时需要把参数值放在intent里面传过去 ARouter的依赖注入会帮你在SecondActivity里面的属性直接赋好参数值 当然需要你事先在SecondActivity
  • 西瓜书-3.9,3.10理解过程-线性模型

    许多人对3 9公式不理解 其实 min右侧只是用矩阵的形式表示了均方差的概念 大家可以结合矩阵的乘法运算举个例子试试 argmin表示右侧式子最小时w取得的值 我们的目标就是求出这个向量w 需要注意的是 实际问题中 我们的样例数可能很少 而
  • GPU基础与CUDA编程入门

    文章目录 一 GPU和CPU的区别 GPU 高吞吐量导向设计 CPU 低延迟导向设计 GPU适合什么场景 什么是Prefetch 二 CUDA与OpenCL 三 CUDA编程并行计算整体流程 内存模型 线程块 网格Grid 并行线程块组合
  • 【Python解题1】PAT 乙级1055 集体照(详解)测试点345错误原因分析

    题目传送门 语言 python3 9 编译工具 pycharm 社区版 输入样例 10 3 Tom 188 Mike 170 Eva 168 Tim 160 Joe 190 Ann 168 Bob 175 Nick 186 Amy 160
  • 《C++ System Programming Cookbook》第二章读书笔记

    第二章 C 重要知识点回顾 C primitive types 原生数据类型 char int float double wchar t bool void nullptr t 可用numeraic limits检查范围 sizeof检查大
  • 【翻译】如何在你的IT转型中浪费数以亿计的资金

    你担任范德雷工业公司的首席执行官已经有几年时间了 这是一家在运输领域存在了几十年的巨无霸 真正的战略 你真的希望股价能尽快上涨 这样你就可以在命运之轮转动之前 在最佳的时间点卖掉你的股票 而董事会也不可避免地要把你赶走 你已经厌倦了蒲公英
  • 甘特图排程组件开发(TsyGantt)

    甘特图在Project2000中 很是好用 可是我想在项目开发中还要买了MS的Project2000的版权 所以索性自己开发一套相关的组件
  • 【JavaWeb_Part05】JDBC?弱爆了,看看轻量级的 Mybatis FreeStyle

    开篇 上篇文章我们已经讲了 Mybatis 的入门以及简单的对单表进行增删改查 那么今天我们就来讲一下使用 mybatis 开发dao的两种方式以及 mysql 比较厉害的动态 sql 利用 mybatis 开发 DAO 1 原始的方式开发
  • 多线程之间共享数据的方式探讨

    多线程之间共享数据的方式探讨 方式一 代码一致 如果每个线程执行的代码相同 可以用一个 Runnable 对象 这个 Runnable 对象中存放那个共享数据 卖票系统可以这样做 public class MultiThreadShareD
  • java系统运维:使用java自带的工具监控系统(java)虚机的运行

    公司采用的B S架构开发的系统林林总总 有时候系统不稳定 分析起来很头疼 除了看日志 还很希望能知道系统虚拟机的运行情况 java 虚拟机从1 5开始 有类似的工具 jconsole 1 6开始不但有jconsole 还有升级版 jvisu
  • 图神经网络(一)DGL框架搭建GCN图卷积神经网络模型

    一 DGL DGL是基于pytorch开发的一个专门用于图神经网络模型搭建的框架 到现在为止 DGL已经高度封装了如GCN GraphSage GAT等常见的图神经网络模型 可以直接调用 比较方便 当然针对非常想挑战自己的编程能力又或者非常
  • 电梯系统OO设计

    理论上应该先黑盒用例 分析需要求 系统边界的输入输出 再白盒类图 但是对于现实世界模拟的OO 个人感觉先emulate现实世界 初步识别类和类之间的关系 再用用例和顺序图丰富 修正类图 识别类 最主要的原则是封装 数据和数据的操作封装成一个
  • 【Linux】ibus输入法安装教程

    My name is Linus and I am your God Linus Torvalds 安装其他输入法总是会遇到各种问题 而当新的发行版出来时 原来的输入法总是就失效了或是其他问题不能使用 经过我的多次实测 发现ibus输入法非
  • uniapp小程序实现上传图片功能,并显示上传进度

    效果图 实现方法 一 通过uni chooseMedia OBJECT 方法 拍摄或从手机相册中选择图片或视频 官方文档链接 https uniapp dcloud net cn api media video html choosemed
  • 正则表达式获取两个字符之间的字符串信息

    今天工作有一个需求就是捕获两个字符之间的字符串信息 类似就是AcakeB这个字符串中提取cake 当时只想到如下的表达式 A B 复制代码 上述是将以A开头和以B结尾的字符串提取出来 但是本意是不想要有A和B了 通过查资料发现了如下写法 l
  • JSP四大作用域

    一 ServletContext 1 生命周期 当Web应用被加载进容器时创建代表整个web应用的ServletContext对象 当服务器关闭或Web应用被移除时 ServletContext对象跟着销毁 2 作用范围 整个Web应用 3
  • sql两张表统计求比分比。

    数据 表一 compay 表二person 第一步 第一张表统计结果 select sum money from person 第二张表统计结果 select sum money from compay 相除结果 select select
  • 读取word中表格的数据

    在pro文件中加入 QT axcontainer 按步骤 1 创建Word应用程序对象 2 获取文档集 3 打开文档 4 获取活动表格 5 读取表格中的信息 QAxObject myword new QAxObject Word Appli
  • 区块链-技术简介(*)

    1 什么是区块链 区块链技术是利用块链式数据结构来验证与存储数据 利用分布式节点共识算法来生成和更新数据 利用密码学的方式保证数据传输和访问的安全 利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式 简单