区块链入门的几个概念

2023-05-16

区块链入门的几个简单概念

1. What’s Block Chain ?

区块链是一门软件技术, 从本质上来看就像是一个分布式的DataBase, 是一个去中心化, 分布式技术。

由于是分布式的, 所以区块链不会仅仅存在某一个人的服务器上面, 每个人都可以搭建服务器,然后加入到区块链这个网络中来。成为区块链网络中的一个Node, 所有的Node都是对等的,不存在优先级先后。因为是去中心化,分布式的。所以每个Node都会保存完整的DataBase信息,每个人都可以向区块链网络中的任何Node进行数据的write/read, 因为区块链网络的每个Node都会同步跟新,保持区块链网络的一致性。

example:

将一个区块链网络想象为一个记账本,里面的内容就是转账的记录。每个在区块链网络上的节点都对应着一个记账本,也就是说一个区块链网络有N个记账本,并且这N个账本的内容都是一样的,假设某两个用户进行交易, 账本1上A用户支出50给B用户,那么账本1中的用户A的账户-50,账本1中的用户B的账户+50,那么其他节点上的账本2…N都会更新这两个用户的账户资产变动。

2. Bitcoin is Block Chain ?

Answer: No !

区块链是一门软件技术,而比特币是基于区块链技术产生的最早的应用。

比特币是从2008年中本聪一篇paper:Bitcoin: A Peer-to-Peer Electronic Cash System 中提出的一种不受政府银行控制的货币。论文中详细描述了如何创建一套去中心化的电子交易体系,且这种体系不需要创建在交易双方相互信任的基础之上。

3. What Block Chain is new technology ?

Answer:No!

区块链是通过一些现有已经存在的技术:密码学,哈希算法,P2P等技术 ,以一种新的思想去resolve problem,它是一种将现有技术组合创造的解决问题的新思想,方法。

4. What’s Block Chain feature ?

  • 去中心化, 不需要一个中心管理员控制整个系统的运作,也就没有一个人可以轻易篡改数据
  • 对于篡改数据非常困难, 保障了区块链的可信度

5. How can block chain be implemented without being change ?

区块链为什么不能被篡改 ?

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

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

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

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

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

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

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

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

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

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

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

比特币的交易过程

6 How does the blockchain guarantee the credibility of written data ?

区块链如何保障写入数据的可信度 ?

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

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

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

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

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

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

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

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

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

Bitcoin 记账过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HwmZqFIG-1596001792422)(/Users/liyan/Library/Application Support/typora-user-images/image-20200729112435691.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gn4gIxQL-1596001792423)(/Users/liyan/Library/Application Support/typora-user-images/image-20200729112507718.png)]

7. Other blockchain applications ?

以太坊 和 Hyperledger。

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

公有链

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

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

联盟链

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

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

私有链

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

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

reference:

入门Block Chain

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

区块链入门的几个概念 的相关文章

随机推荐

  • 两个互相引用对象的垃圾回收

    部分转自 xff1a 深入理解java虚拟机 一书 判断对象是否存活 1 引用计数算法 给对象添加一个引用计数器 xff0c 每当有一个地方引用它时 xff0c 计数器值就加1 当引用失效时 xff0c 计数器值就减1 任何时刻计数器为0的
  • ssm整合时,通过jdbc.properties文件无法连接mysql问题

    最近在重温ssm框架 在搭建基础的项目进行单元测试时 xff0c 发现无法连接mysql数据库 通过各种查资料终于发现了原因 原始jdbc properties文件 由于username这个属性会被系统的username变量覆盖 xff0c
  • Mysql数据库之左连接left join 右连接right join 内连接inner join

    最近 xff0c 公司的用户达到了700 43 万 xff0c 意味着数据库已经达到700 43 万 xff0c 聊聊傻傻分不清的连接查询吧 xff01 前提 数据库中一共有三个表 class book phone 而且每个数据库表中都有1
  • VMware虚拟机软件,配置Linux Ubuntu操作系统环境,及安装问题总结大全

    文章目录 1 xff1a 前言2 xff1a 基本认识3 下载环境4 xff1a VM虚拟机的安装5 xff1a ubuntu的下载6 xff1a 把ubuntu安装在VM虚拟机上7 VMware Tools工具8 Source insig
  • linux常用命令(Beginner note)

    命令 ls 列出所有文件及文件夹 ls 路径 xff1a 列出所给路径下的所有文件及文件夹 选项 xff1a xff08 可组合使用 xff0c 也可简写组合形式 xff0c 例 xff1a alh xff0c 无先后顺序 xff09 a
  • 利用JS-SDK微信分享接口调用(后端.NET)

    一直都想研究一下JS SDK微信分享的接口调用 xff0c 由于最近工作需要 xff0c 研究了一下 xff0c 目前只是实现了部分接口的调用 xff1b 其他接口调用也是类似的 xff1b 在开发之前 xff0c 需要提前准备一个微信公众
  • Linux文件查找find

    1 find查找概述 为什么要有文件查找 xff0c 因为很多时候我们可能会忘了某个文件所在的位置 xff0c 此时就需要通过find来查找 find命令可以根据不同的条件来进行查找文件 xff0c 例如 xff1a 文件名称 文件大小 文
  • Linux文件打包与压缩

    1 文件打包与压缩 1 什么是文件压缩 将多个文件或目录合并成为一个特殊的文件 比如 搬家 脑补画面 img 2 为什么要对文件进行压缩 xff1f 当我们在传输大量的文件时 xff0c 通常都会选择将该文件进行压缩 xff0c 然后在进行
  • 集中式版本管理SVN与分布式版本管理Git的区别

    集中式版本控制系统SVN CVS 先说集中式版本控制系统 xff0c 版本库是集中存放在中央服务器的 xff0c 而大家工作的时候 xff0c 用的都是自己的电脑 xff0c 所以要先从中央服务器取得最新的版本 xff0c 然后开始工作 x
  • chatgpt Linux 定时任务 清理rancher pod启动服务的日志文件 脚本

    Linux 定时任务执行命令 假设我们想要每隔X分钟 每隔X天 每天X点执行一个脚本文件 xff0c 可以使用 Linux 自带的 cron 工具来创建定时任务 清理步骤 您可以使用 Linux 自带的 cron 工具来创建定时任务 xff
  • Http协议的几种常见状态码

    在开发好了网站后 xff0c 用户通过URL对资源进行操作 xff0c 服务器端要告诉用户交互的结果 xff0c 比如新增资源是成功还是失败了 一个较好的办法就是遵循HTTP协议 xff0c 使用请求响应的HTTP状态码 xff08 Sta
  • 推荐画UML图以及流程图的在线网站Site

    记得当年学UML课程的时候 xff0c 当你还在为了安装Rose而发愁的时候 xff0c 人家都把作业给交了 xff0c 并且现在大多数UML课程都会让学生使用Rational Rose做画图练习 近来 xff0c 做毕业设计需要提供各种流
  • 浙大PTA平台上的题目题解

    记载一些题目的代码 xff0c 之后想要在b站讲题目 xff0c 到时候会把录的视频上传b站 不是大佬 xff0c 是蒟蒻 xff0c 大佬勿喷 xff0c 仅供参考 xff0c 欢迎大家star xff0c qwq 浙大版 C语言程序设计
  • git 入门教程

    想要将一个项目托管到github xff0c 需要进入项目所在文件夹进行git init命令初始化 Git提交代码的基本流程 xff1a 创建或修改 本地文件使用 git add 命令 xff0c 将创建或修改的文件添加到本地的暂存区 xf
  • 博客搬家

    谢谢大家对我的blog的支持 现在本科毕业 xff0c 准备读研 方向大概是机器学习这一块 又是一个新的开始 我想将我读研学习Python以及机器学习 深度学习 以及数据分析处理 大数据等学习教程放在新的blog上 xff1a blog 欢
  • Python多线程笔记(Python_MultiThread)

    4 MultiThreading 多线程 使用 xff1a a 什么是多线程 xff1f 简单明了 xff0c 让计算机在同一时间内同时运行多个程序 xff0c 并且每个程序的计算互不干扰 xff0c 我们称这样的操作为多线程运算 b ad
  • Python多进程笔记(Python_MultiProcess)

    1 MutiProcessing 多进程 使用 xff1a a 什么是多进程 xff1f 在上面我们使用多线程去分别处理不同的事情 xff0c 看起来 xff0c 多线程处理并不比单线程循环处理的效率看起来那么的高 多进程是在利用我们电脑C
  • Python自带的GUI(Tkinter)教程

    1 Python Tkinter xff08 GUI图形界面 xff09 xff1a a What s Tkinter Tkinter 是什么 xff1f Tkinter是Python自带的一个GUI库 xff0c 他可以将我们在comma
  • Python科学计算包NumPy教程

    在我的Github上有一份代码与教程结合的jupyter Notebook文件 xff0c 大家可以clone下来看一看 下面会用实例的方式给出一些examples xff1a Tutorial教程 官方中文文档 span class to
  • 区块链入门的几个概念

    区块链入门的几个简单概念 1 What s Block Chain 区块链是一门软件技术 xff0c 从本质上来看就像是一个分布式的DataBase xff0c 是一个去中心化 xff0c 分布式技术 由于是分布式的 xff0c 所以区块链