区块链到底是什么?

2023-10-26

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

翻译人:ArrayZoneYour,该成员来自云+社区翻译社

原文链接:https://www.investinblockchain.com/what-exactly-is-blockchain/

原文作者:Matt Bourke

如果我告诉你:

区块链不存在。

或者区块链有两种完全不同的含义。

或者,区块链是三个完全不同的东西的别称。

觉得不对?听我把话说完。区块链是一个效率非常低的数据库,它作为比特币中拼图难题(jigsaw puzzle)正常运转必须的技术之一而被人们熟知。比特币技术是基于“区块链”技术实现的,而不是区块链技术基于比特币技术。“区块链技术”与“一个区块链”(A Blockchain)或“这个区块链”(The Blockchain)的概念是截然不同的。是不是感到很困惑?从技术角度来看,这些不同的术语有着细微的差别。在本文中,你将了解到每个术语的真正含义并深入理解区块链的工作原理。

让我们从“区块链技术”(Blockchain Technology)开始

区块链技术其实就是一个分散的不可信网络,它利用本地资产,分散账本和一些基于博弈论模型的算法来使网络中的每一方达成共识。

什么是“一个区块链”(A Blockchain)?

假想你现在有一个Excel电子表格,表格中的每一行都有包含着几列的数据,其中一列包含着“交易信息”。

现在,如果每一行中的特定列中包含着该行的所有数据加上上一行传递的哈希(Hash)值对应的唯一指纹(一个新的哈希值),此时这些行顺序串联起来就构成了一个“哈希链”。

一个哈希链的实例。所有的数据都具有唯一的哈希值,就像指纹一样,修改其中的任意一个数据都将打破这个链条

用户可以利用软件来检测这些哈希值。软件可以通过哈希链的计算方式来判断每一个哈希值的有效性。一旦出现了无效的哈希值,用户就可以知道有人在后来(哈希链创建后)伪造了某一行的数据。

哈希链可能有很大用处,但是并没有什么令人激动的特性。我们为什么要讲哈希链,哈希链与“一个区块链”又有什么联系呢?

再进一步,把上面电子表格中的行扩展为多个电子表格,每个电子表格中充满了交易信息。我们将通过这种方式组合起来的交易信息称为“交易块”。

如果你在一个电子表格中创建了所有数据的哈希值,然后在另一个电子表格中创建该表中所有数据的哈希值,通过上面的方式我们可以通过两表的哈希值组合计算得到新的哈希值。像下图一样串联起来,你就得到了一个电子表格组成的链。

请记住:由于这些表格包含着一个交易块,所以它们构成了一个简单有效的区块链。

那么“区块链”意味着什么?

最初,“区块链”是一项大型现代企业看来都很具有颠覆性的技术,即使不用“加密货币”或者“分散式账本”(Distributed ledger)这样听起来具有颠覆性的名称也是如此。

现在,你可能经常听到有人通过说“我们在做区块链”来吸引投资者的注意。“区块链”的概念也被广泛传播,此时的概念基本上是指“围绕分散式账本概念构建的开放式的计算机网络”。

我们甚至看到了不使用“一个区块链”来构建的“区块链”,取而代之的是其他的存储技术,比如说DAG(有向无环图)。

很多在职者提到“区块链”时,他们指的其实是“一个只与我们信任的人分享的共享式数据库(shared database)”。这并不是一个新鲜的事物,分布式数据库(distributed database)在比特币出现时已经存在了至少十年。

“区块链”的魅力在哪里?

区块链真正的魅力不是在于数据存储的技术,而是如何使网络中所有的不可信用户达成共识。

举例来说,通过“区块链”,可以让每个人都承认Alice支付且仅只支付给了Bob。通过她的交易信息可以证明她没有支付双倍的金额。(例:Alice在完全相同的精确时间同时支付了$5给Bob和John)。

双重支付问题是比特币所取得的主要突破。

交易信息将被存储在于网络绑定的“一个区块链”当中。网络中的任何用户都可以下载该区块链的副本(如果他们选择这样做的话),然后运行软件检验网络中加入的交易信息。

软件将拒绝任何形式的双重支付尝试。如果交易有效,软件将更新区块链中比特币(或其他资产)的所有权。

当用户使用“区块链”进行交易时,他们的软件实际上做了以下工作:

软件(用户的钱包)创建一个脚本。这个脚本是用所有计算机都可以处理、检验的计算机语言编写的。这个脚本通过私钥进行了签名,网络的用户可以通过他们的私钥来证明他们对某一区块链的所有权。

一旦通过数字签名证明所有权之后,网络就可以继续处理脚本内容。以上面提到的场景作为最简单的脚本实例——“Alice支付给Bob五美元”,此时网络中的计算机将检验Alice交易条目的真实性,如果交易有效,整个网络将同意更新信息,Alice的账户将减少5美元,Bob的账户将增加五美元。

一旦使用数字签名证明了所有权,网络就可以继续处理脚本。最简单的脚本将简单地说“给Alice 5美元”。然后网络上的计算机将验证Alice在区块链中有一个条目; 如果有效,整个网络将同意更新Alice的账户,减少5美元,而Bob的账户增加5美元。

这里还有一个有趣的现象:一个常见的误解是“比特币不提供合约”。实际上提供了!一个脚本就是一份合约。当你听到“智能合约”一词时应当意识到这是交易脚本的营销术语。

“区块链”的关键问题是双重支付问题——我上面解释的过程并不能解决这个问题。

如果世界各地的两台电脑同时收到来自Alice的不同脚本怎么办?一个脚本说:“给Bob五美元”,另一个脚本说:“给苏珊五美元”——网络如何达成共识?

你瞧,“区块链”的魅力不在于“区块链”,而在于工作量证明。

工作量证明是区块链网络用来确保网络分散性的计算机算法,它还可以防止网络中的计算机自己构建历史信息。

下面给出理解工作量证明的一个简单方法:

想象在网络中运行着一个彩票系统,每隔几分钟网络会随机选择一台计算机为获胜方。此时网络会说:“这台电脑是赢家!”

然后网络对获奖的电脑说:“把你最新的有效交易块和中奖彩票交给所有其他的电脑。如果你能证明你有中奖彩票,所有其它的计算机将检查你提供的交易块是否只包含有效的交易信息。如果确实如此的话我们会更新我们的区块链来获得你新创建的区块,相应地你会获得你的奖励。”

这是简化的加密货币挖掘(cryptocurrency mining)。通过仅允许一个用户提供一个交易块,我们可以确保Alice的双重支出尝试中只有单个记录进入交易块。

此时如果不同的计算机正在构建不同的交易块即Alice目前有双重支付的交易在网络中传递,Alice最终只能花一笔钱。这是因为会根据提供的之前最新的区块来完成他们的副本的更新,之后的更新会忽略任何与最新副本不匹配的区块。

现在每个人都拥有最新的区块链副本,之后创建的任何新区块都必须通过哈希链接在当前区块链之上。

什么是“区块链”(The Blockchain)?

通常来说,这个术语通常用来代表第一个区块链——比特币区块链。不过,在现在的营销环境下,它的概念已经很模糊了。

问答

区块链专题——什么是区块链?

相关阅读

什么是区块链?

简明区块链原理

如何学习区块链技术


此文已由作者授权腾讯云+社区发布,转载请注明文章出处

 原文链接:https://cloud.tencent.com/developer/article/1055228

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

区块链到底是什么? 的相关文章

  • 实施MES系统的成功率只有50%,你知道为什么吗?

    MES系统可以称之为生产制造产业生产和管理方法实现代化的管理中心 假如可以非常好的执行和运用MES 那么将有益于提升公司的生产率 降低消耗成本 但为什么会有些公司MES执行实际效果不佳呢 原因之一 我国制造业存在管理方法基础的先天发育不足
  • Android中LCD背光驱动

    分类 Linux驱动 Android系统 2013 06 17 16 28 287人阅读 评论 0 收藏 举报 目录 Android的Setting Android的背光JNI层 Android的背光HAL层 Linux的背光内核层 Lin
  • 【web基础】html常用标签+作品展示

    前言 小亭子正在努力的学习编程 接下来将开启javaEE的学习 分享的文章都是学习的笔记和感悟 如有不妥之处希望大佬们批评指正 同时如果本文对你有帮助的话 烦请点赞关注支持一波 感激不尽 说明 此部分是java web基础知识 学的不深 仅

随机推荐

  • python爬虫万能模板

    以下是一个简单的 Python 爬虫模板 可以用于爬取网页数据 python import requests from bs4 import BeautifulSoup 设置请求头 模拟浏览器访问 headers User Agent Mo
  • kubectl命令详解

    目录 一 kubectl命令详解 1 查看某个资源的详细信息 kubectl describe pod pod name n nameapace 2 查看指定命名空间中pod的基本信息 kubectl get pods n namespac
  • kubernetes自建单节点elasticsearch ,用做数据库

    apiVersion v1 kind ConfigMap metadata name es configmap namespace kube system data elasticsearch yml cluster name NAMESP
  • redis key以目录展示的算法 以及其他redis相关

    文章目录 前言 一 redis相关 二 目录展示算法 结果展示 前言 一般在开发中使用redis时 都会使用冒号进行key的分割 例如login token admin等等 最近被要求编写可视化redis管理的工具 要以树形文件夹目录展示r
  • 环境类传感器介绍

    经过前几篇的原理讲解 大家对市面上类似气体 PM2 5 火焰呀这类传感器有一定的了解 但是到采购环节就迷茫了 毕竟市面上的产品五花八门 挑的眼花缭乱 今天给大家介绍几款简单的传感器 如果大家有别的传感器 也可以采用 甲醛检测 ZE08 CH
  • unity2017Progressive Lightmapper,Navmesh,Timeline三大新特性总结

    今天看了刘国柱的unity2017新特性 keynote大会三大核心详解视频课程 以免忘记 所以总结了下 想要具体了解的话可以去51cto观看刘国柱的视频 一 更强大的图像处理 1 Progressive LightMapper 2 新灯光
  • 如何计算Map

    一 VOC07 11点计算法 在VOC2010以前 只需要选取当Recall gt 0 0 1 0 2 1共11个点时的Precision最大值 然后AP就是这11个Precision的平均值 在VOC2010及以后 需要针对每一个不同的R
  • MySQL查询条件中字符串包含空格的问题

    2013 11 27 wcdj 问题 最近在联调某个业务时发现使用的签名总是验证不过 在MySQL中查询了该业务的私钥配置和业务侧的配置是一样的 问题就出在SQL查询这里 最后将配置导出到本地发现私钥后面多了一个空格 将空格删除然后签名计算
  • table嵌套table

  • QT 打开txt文件以及出现的乱码问题

    在用QT实现记事本打开功能时 在导入txt文件后会出现乱码问题 这时需要对导入文件编码进行设置 代码如下 void MainWindow open QString fileName 弹出打开文件对话框 fileName QFileDialo
  • Vb仓库管理系统与实现(论文+源代码+开题报告+外文翻译+文献综述)

    随着科学技术的不断提高 计算机科学不断发展 其强大的功能已经被人们深刻认识 它已经进入了人类社会的各个领域并发挥着越来越重要的作用 作为计算机应用的一部分 使用计算机对产品库存信息进行管理 是一直必然的趋势 本文主要分析了库存管理系统的一些
  • 在iOS开发中使用FMDB

    我的第一个应用使用的数据库是操作sqlite3 熟悉了之后 还不愿意换了 说实话这个方法并不是很轻量级 繁琐 复杂的数据读取插入后果就是崩了 我知道很大一部分原因是因为我的线程没处理好 出现死锁 逻辑混乱导致的 所以我想使用更轻量级的数据库
  • 离散数学:主范式(主析取范式、主合取范式)

    求解主析取范式 主合取范式方法 1 真值表法 在表中列出变元值的全部可能 查表判断命题 命题结果真 变元值对应主析取范式 命题结果假 变元值对应主合取范式 2 等值演算法 命题化简 蕴涵等值式 A B A B 作用 去 矛盾律 A A 作用
  • Latex作者上标和通讯作者图标

    作者上标 author Lily textsuperscript 1 and Alexw textsuperscript 2 通讯作者图标 usepackage misc ifsym begin document institute Let
  • fs 模块

    fs 全称为 file system 称之为 文件系统 是 Node js 中的 内置模块 可以对计算机中的磁盘进行操作 本章节会介绍如下几个操作 1 文件写入 2 文件读取 3 文件移动与重命名 4 文件删除 5 文件夹操作 6 查看资源
  • 数据结构笔记 第六章 查找技术

    查找技术 在计算机科学中定义为 在一些 有序的 无序的 数据元素中 通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找 也就是根据给定的某个值 在查找表中确定一个关键字等于给定值的记录或数据元素 线性表的查找技术 顺序查找 顺序查找
  • 【报名中】【5G探索】深度揭秘5G核心技术与挑战,云+社区开发者大会北京站等你来!

    报名渠道 扫描下方二维码 开发者专属福利 限量手办 现场幸运签到开发者即可获得 早到获奖几率更大 幸运抽奖 一等奖 1名 JBL LIVE650 BTNC无线主动降噪智能耳机 二等奖 3名 JBL GO SMART2 音乐魔方二代便携式人工
  • Thread类常见方法及属性及线程的状态

    本篇文章思维导图如下 目录 Thread构造方法 Thread常见属性 守护线程 start 方法 创建一个线程 中断线程 总结一下interrupt方法 等待线程 join 休眠线程sleep 线程的状态 Thread构造方法 Threa
  • 实验一 以太网组建

    实验一 以太网组建 一 实验目的和要求 1 认识交换机和路由器的结构与连接方法 2 区分直通线和交叉 3 掌握简单的局域网配置方法以及组网方法 4 了解ip地址的组成 5 了解子网掩码 MAC 默认网关 数据链路地址的概念 6 了解配置路由
  • 区块链到底是什么?

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 翻译人 ArrayZoneYour 该成员来自云 社区翻译社 原文链接 https www investinblockchain com what exactly is blockc