区块链(1):区块链简介

2023-09-16 17:53:04

区快链是通过密码技术保护的分布式数据库这是比特币背后的技术。

本文将逐步带您了解区块链。 

1 区块链BLOCKCHAIN的类的定义

区块链有一个区块列表。

它从一个单独的块开始,称为 genesis block【创世区块】

2 区块链BLOCK的类的定义

第一个区块叫做 Genesis[创世] block,每个块存储以下信息:

  • Index
  • Timestamp
  • Hash
  • Previous Hash
  • Data
  • Nonce(挖矿原理,比特币难度举例)

3 区块链中创世区块

创世区块(genesis block)是区块链中的第一个区块,其区块序号是0。它是区块链中唯一一个不指向前一个区块的区块,因为没有前一个区块。它也不包含交易,因为还没产生任何以太币。

只有网络中的两个节点有相同的创世区块,它们才会彼此配对,也就是说,如果两个对等节点有相同的创世区块才会进行同步 区块,否则它们将彼此拒绝。不同的创世区块有较高难度值也不能替代难度值较低的。每一个节点生成自己的创世区块。对于不同的网络,创世区块被硬编码到客户端里。

4 区块Block6个属性的说明

(1)Index

该索引是链中的块的位置。

【创世区块】的索引是0。下一个区块的索引是1。

(2)Timestamp

创建块的时间记录。

时间戳有助于保持区块链的顺序。

(3)HASH

哈希看起来像一堆随机数。它是唯一标识数据的数值,或数据的“数字指纹”。

Hash属性:

  • 哈希具有固定的长度
  • 相同的数据结果相同的hash值。
  • 器实际上不同的数据会导致不同的hash值。
  • 图 Hash值很容易计算。
  •  不可能将Hash值转换为数据。[不可逆]
  • 个数据的小改变会导致Hash值的巨大变化。

  • VALID HASH(有效散列)

有效的Hash是满足特定要求的Hash。对于这种区块链,哈希前面的三个前导零是对有效散列的要求。

注意:所需的前导零的个数是困难或难度系数,个数越多,难度系数越大。

  • BLOCK HASH CALCULATION(块散列计算

Hash函数将数据作为输入,并返回一个唯一的Hasn值。

f(data) = hash

由于哈希是整个块的“数字指纹”,因此数据是索引,时间截,以前的哈希,块数据和随机数的组合

f(index+previous hash+timestamp+data+nonce)= hash

替换我们的起源块的值,我们得到

f(o+"o"+1508270000000+"Welcome to Blockchain Demo 2.!"+604) =ooodc75a315ca1f9c9816247do3ddieid219939d3810hd98ed2

(4)Previous Hash

Previous Hash是前一个Hash,为前一个块的Hash。 由于没有以前的块,因此[创世区块]的前一个散列值为“0”。

(5)Data

Data为存储在块上的数据。在诸如比特币这样的加密货币中,数据将包括货币交易。如果数据发生更改,由于数据是输入变量的Hash,因此更改数据将更改Hash值。新的散列将失去三个前导零,并且变得无效。需重新挖矿生成有效的Hash值。

数据更改后,后续的区块也将无效。Hash更改将导致后续块的前一个Hash值发生变化。由于之前的Hash值用于计算Hash值,因此后面的Hash值会改变。这将导致区块的级联失效。

所以说,挖矿是查找有效Hash值的过程。

(6)Nonce(重点说明:挖矿原理,比特币难度举例)

nonce是用于查找有效散列的数字。nonce从0开始迭代,直到找到有效的散列。这用到了处理能力【工作量证明】!

随着难度的增加,可能的有效散列数量会减少。,使用较少可能的有效哈希值,需要更多的处理能力才能找到有效的哈希。

更多推荐

【跟小嘉学 Rust 编程】二十九、Rust 中的零拷贝序列化解决方案(rkyv)

系列文章目录【跟小嘉学Rust编程】一、Rust编程基础【跟小嘉学Rust编程】二、Rust包管理工具使用【跟小嘉学Rust编程】三、Rust的基本程序概念【跟小嘉学Rust编程】四、理解Rust的所有权概念【跟小嘉学Rust编程】五、使用结构体关联结构化数据【跟小嘉学Rust编程】六、枚举和模式匹配【跟小嘉学Rust

STM32H5开发(4)----开发板介绍

STM32H5开发----4.开发板介绍套件概述样品申请特征系统控制和生态系统访问功能示意图系统框图跳线设置开发板原理图套件概述STM32H503RBTx_LQFP64是STM32H5系列微控制器的一款出色评估套件,它采用了先进的40nm工艺制造,为开发者提供了卓越的性能和能效。主频高达250MHz的Arm®Corte

华为云CodeArts产品体验的心得体会及想法

文章目录前言CodeArts的产品优势一站式软件开发生产线研发安全Built-In华为多年研发实践能力及规范外溢高质高效敏捷交付功能特性说明体验感受问题描述完结前言华为云作为一家全球领先的云计算服务提供商,致力于为企业和个人用户提供高效、安全、可靠的云服务。在其众多产品中,CodeArts作为一款全新的开发工具集,为开

【STM32】基础知识 第十一课 sys, delay & usart 文件夹

【STM32】基础知识第十一课sys,delay&usart文件夹sys文件介绍delay文件夹函数简介SysTickSysTick工作原理SysTick寄存器介绍delay_init()函数delay_us()函数usart文件夹介绍printf的使用常用输出控制符表常用转椅字符表半主机模式简介sys文件介绍函数分类

苹果从成熟到落地,Apple Newton 背后的工程师们 | 历史上的今天

整理|王启隆透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。1983年3月的最后一个星期日,史蒂夫·乔布斯(SteveJobs)和时任百事公司总裁约翰·斯卡利(JonSculley)坐在阳台上俯瞰纽约中央公园。在深思熟虑之后,斯卡利对着眼前年轻人说:“我们已经互相了解彼此,但是,史蒂夫,我已经考虑过了,我不会

Linux系统使用(超详细)

目录Linux操作系统简介Linux和windows区别Linux常见命令Linux目录结构Linux命令提示符常用命令lscdpwdtouchcatechomkdirrmcpmvvimvim的基本使用grepnetstatLinux面试题Linux操作系统简介Linux操作系统是和windows操作系统是并列的关系。

STM32H5开发(3)----电源控制&RCC

STM32H5开发----3.电源控制&RCCSTM32H503供电样品申请STM32H562/563/573LDO供电STM32H562/563/573SMPS供电LDO/SMPS供电PWR特性电源电压监测温度监测低功耗模式低功耗模式-SLEEP模式低功耗模式-STOP模式低功耗模式-STANDBY模式低功耗模式监控

2023年中职组“网络安全”赛项吉安市竞赛任务书

2023年中职组“网络安全”赛项吉安市竞赛任务书一、竞赛时间总计:360分钟竞赛阶段竞赛阶段任务阶段竞赛任务竞赛时间分值A模块A-1登录安全加固180分钟200分A-2本地安全策略配置A-3流量完整性保护A-4事件监控A-5服务加固A-6防火墙策略B模块B-1Windows操作系统渗透测试400分B-2隐藏信息探索B-

STM32 ADC基础知识讲解

文章目录前言一、ADC的基本介绍二、STM32ADC讲解1.ADC分辨率2.ADC通道讲解3.ADC转换模式单次转换模式连续转换模式4.扫描模式5.数据对齐方式左对齐右对齐总结前言在正式的学习如何编写ADC代码时我们先来学习一下ADC的基础知识部分,只有掌握好了这些基础知识才能顺利的进行后面的代码编写。一、ADC的基本

.NET网络编程——TCP通信

一、网络编程的基本概念:1.网络就是将不同区域的电脑连接到一起,组成局域网、城域网或广域网。把分部在不同地理区域的计算机于专门的外部设备用通信线路互联成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。2.计算机网络通过传输介质、通信设施和网络通信协议,将地理位置相

git 常用命令有哪些

Git是我们开发工作中使用频率极高的工具,下面总结下他的基本指令有哪些,顺便温习一下。前言一般项目中长存2个分支:主分支(master)和开发分支(develop)项目存在三种短期分支:功能分支(featurebranch)补丁分支(hotfixbranch)预发分支(releasebranch)一旦完成开发,它们就会

热文推荐