如何快速读懂大火的区块链?(入门级)

2024-03-09 17:50

本文主要是介绍如何快速读懂大火的区块链?(入门级),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于区块链的8个问题(入门级)

1 什么是区块链?

区块链是一种软件技术,本质上是一种分布式的数据库。

首先,区块链的主要作用是存储信息,任何需要保存的信息都可以写在区块链上,也可以从里面读取,所以它是数据库。

其次,区块链不止存在于某一个人那里,所有人都可以架设服务器,加入到区块链的网络里,成为其中的一个节点,所以它是分布式的。在区块链网络里,不存在一个中心的节点,所有的节点都是平等的,都保存着完整的数据库信息,你可以向任何一个节点写入/读取数据,因为所有节点最后都会同步,保持区块链的一致。

举个例子,可以把区块链想象成一个账本,里面记录着一些转账的记录。但这个账本不止一本,而是任何想要的人都可以得到一本账本,而且每本账本的记录都是同步且一致的。

2 区块链就是比特币吗?

不是。

上面说了,区块链是一种技术,而比特币是这种技术的第一个成功应用。

比特币诞生于2008年的一篇论文,一个署名为中本聪的人,提出了一种构想,可以创造出一种不受政府和其他任何人控制的货币,这种货币就是比特币。

这种没有任何资产支持的货币,看似是不可能的狂想,但居然变成了现实,其价格也一路上涨,从开始花一万个比特币买一个披萨,到2017年涨到了两万美元一个,成为了所有人都在关注的焦点。

目前知乎上还记录着一个真实的错过一个亿的例子,:


v2-81156abae513cfcf1d583def92cd4d00_b.jpg


这个在2011年底的回复,五年后的2017年,比特币真的到达了历史高点,真的可以称为神预言了。2011年底一个比特币的价格大约是2美元,6000元人名币可以买500个,到2017年最高点的两万美元1个,也就是1000万美元,6000多万人民币,四舍五入这就是一个亿呀,同志们。

3 区块链是凭空出现的全新技术吗?

不是。

区块链技术其实是一些已经存在技术的整合,它结合了密码学、哈希算法、P2P网络等已有技术,给出了一种解决问题的新思路,不可否认它的创新,但说它是革命性的创新也有点夸大其实了。

4 区块链最大的特点是什么 ?

没有管理员,不能被篡改。

区块链是无中心的,分布式的系统。无中心意味着没有管理员,没有管理员也就是说没有一个人可以轻易更改区块链上的记录,这种不可篡改的特点,导致没有人能控制区块链,这也就保障了区块链上存储信息的可信性。

5 区块链如何实现不能被篡改?

通过更新数据的难度和链式机制保证。

区块链就是由一个个区块连接而成的链。在账本的例子中,可以把每个区块想象成账本中的一页,区块链就是一页页装订在一起构成的账本。

每个区块记录的信息由两部分组成:

  • 区块头:记录当前区块的特征值
  • 区块体:记录实际数据

区块头里面记录了一些特征值,包括生成时间、实际数据的哈希、上一个区块的哈希等。其中需要理解的一个概念是哈希,所谓"哈希"就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。

因此,通过哈希,可以保证两点:

  • 每个区块的哈希都是不一样的,可以通过哈希标识区块
  • 如果区块内容改变了,哈希值会变

接下来,就是链式结构精妙的地方了,由于链上的每个区块都保存了上一个区块的哈希值,这时,如果要篡改区块链上的信息,只修改一个区块的内容是不行的,因为修改了这个区块的数据后,该区块的哈希值会变,这样原来的下一个区块发现新计算的哈希值和原来保存的哈希值不一致,下一个区块就不承认该区块的内容了。如果要让下一个区块承认该区块修改后的内容,则需要依次修改链上后面的所有区块才行。

但是,修改区块内容就要计算哈希,而哈希的计算是一个很耗时耗力的工作,基本不可能被一方独自完成。

因此,这种独自修改的困难加上链式结构带来的联动机制,保证了区块链的内容可信性,也就是说内容一旦写入就无法被篡改。

在账本的例子中,如果要修改其中一页的记录,则需要修改这一页以及该页后面所有页的记录才行,而修改记录本身需要的橡皮是一个 很难获取到的资源,而且每页修改都要重新获取橡皮,这就加剧的困难导致了记录很难修改。

6 区块链如何保证写入数据的可信?

通过密钥和写入确认来保证。

以比特币的交易的过程为例,当 A 要支付给 B 10个比特币,这就是一笔交易。要完成这笔交易,需要两步:

  1. 申报交易:提交这笔交易的必要信息,验证这比交易的可信性
  2. 确认交易:验证过程,将交易记录在区块链上,记录后数据不可被修改

在申报交易的时候,转出比特币的一方,此笔交易中的 A 需要提供以下几个信息:

  • 交易的金额
  • 上一笔交易的哈希(你从哪里得到这些比特币)
  • 本次交易双方
  • 支付方的公钥
  • 支付方的私钥生成的数字签名

验证这笔交易是否属实,需要三步:

  • 第一步,找到上一笔交易,确认支付方的比特币来源。
  • 第二步,算出支付方公钥的指纹,确认与支付方的地址一致,从而保证公钥属实。
  • 第三步,使用公钥去解开数字签名,保证私钥属实。

通过这几步,就能保证 A 确实是这笔钱的主人,同时 A 确实有这笔钱。这样就保证了这笔交易是真实的,可以被记录的。

在交易确认阶段,这笔交易会被记录在区块链上,通过上述区块链的特性保证交易不能被篡改。

7 除了比特币还有什么值得关注的区块链技术?

以太坊 和 Hyperledger。

根据网络范围可以将区块链划分为:公有链、联盟链、私有链三类。

公有链

公有链就是完全对外开放,任何人都可以任意使用,没有权限的设定,也没有身份认证之类,不但可以任意参与使用,而且发生的所有数据都可以任意查看,完全公开透明。

比特币就是一种公有链网络系统。除了比特币,以太坊是最值得关注的公有链。以太坊(ethereum)区块链平台是 2013 年 12 月,Vitalik Buterin 提出的,除了可基于内置的以太币(ether)实现数字货币交易外,还提供了图灵完备的编程语言以编写智能合约(smart contract),从而首次将智能合约应用到了区块链 。以太坊的愿景是创建一个永不停止、无审查、自动维护的去中心化的世界计算机。

联盟链

允许授权的节点加入网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链。

2015 年 12 月,Linux 基金会发起了 Hyperledger 开源区块 链项目,旨在发展跨行业的商业区块链平台。Hyperledger 提 供 了 Fabric 、 Sawtooth 、 Iroha 和Burrow 等多个区块链项目,其中最受关注的项目是Fabric。不同于比特币和以太坊,Hyperledge Fabric专门针对于企业级的区块链应用而设计,并引入了成员管理服务。

私有链

所有网络中的节点都掌握在一家机构手中,称为私有链。

目前好像没有专门的私有链项目,或者说把联盟链部署在一家就是私有链了吧。

8 区块链有什么用?

我也不知道,欢迎大家来找我讨论,不吝赐教。

虽然各种文章给出了很多区块链的应用场景,但是有哪些是必须靠区块链才能解决的,而传统的分布式数据库解决不了的,我也没有想明白。

对于公有链这种完全对外开放和公开的系统,还有一定的应用场景和不可替代性。但要考虑到性能和可用性,没有想到合适的场景。

对于联盟链,有了成员认证,感觉完全可以在分布式数据库的基础上进行修改而来,而且不需要太多修改,把 transcation log 每家保存一份就够了,同样可以达到分布式且不可篡改,成本比基于区块链来做小得多。

不过也要承认包装的作用,虽是新瓶装旧酒,但可能大家关心的就是新瓶而已。

作者:厚之成 (公众号:可乐就是正义)

  • 滴滴云全线标准型云服务器限时特惠,注册即送新手大礼包
  • 新购云服务1月5折 3月4折 6月低至3折
  • 滴滴云使者招募,推荐最高返佣50%
滴滴云-为开发者而生 滴滴云使者

这篇关于如何快速读懂大火的区块链?(入门级)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791470

相关文章

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.