web3-区块链基础:从区块添加机制到哈希加密与默克尔树结构
区块链基础:从区块添加机制到哈希加密与默克尔树结构
什么是区块链
抽象的回答:
区块链提供了一种让多个参与方在没有一个唯一可信方的情况下达成合作
若有可信第三方 > 不需要区块链
[金融系统中常常没有可信的参与方]
像股票市场,或者一个国家的债券等等这些是有信用参与方的那这些就不需要区块链来互通。
区块链的核心就是共识层和计算层,共识层和计算层默认是合在一起的。
1️⃣ 共识层(Consensus Layer)
定义:
提供数据一致性和不可篡改性的保障机制,确保所有参与节点在不需要相互信任的前提下,达成对数据的统一认定。
特点:
- 公共数据结构:所有交易数据、区块等均记录在公开账本中。
- 不可篡改性:一旦数据上链,无法删除或修改。
- 一致性:所有诚实节点维护相同账本副本。
- 活性:诚实节点能够持续添加新交易和区块。
- 开放性:任何人均可参与数据的添加与验证(依据公链/联盟链而定)。
2️⃣ 计算层(Computation Layer)
定义:
DApp的业务逻辑与规则以程序形式部署在区块链上,节点共同执行和验证程序结果。
特点:
- 透明性:应用逻辑写在开放、公开的源代码中,无需依赖中心化可信方。
- 公共可验证性:任何人都能独立验证程序执行过程与结果。
- 去信任执行:新区块的创建者(矿工/验证者)需执行DApp程序,记录状态变更。
3️⃣ 应用层(Application Layer)
定义:
基于区块链的去中心化应用程序(DApps)与智能合约,构建具体业务场景,如DeFi、NFT、DAO等。
特点:
- 运行在链上计算机(虚拟机)上
- 应用逻辑透明、数据不可篡改
- 无需中心化服务方
4️⃣ 用户交互层(Interaction Layer / Interface Layer)
定义:
用户与区块链网络及DApps交互的界面与入口。
组成:
- 钱包(如MetaMask、Phantom)
- 浏览器插件、移动端App
- 前端界面与API交互
特点:
- 提供友好的交互体验
- 管理用户身份、密钥、签名等
- 调用区块链节点API,与链上数据与应用交互
区块链的生态
区块如何被添加到链上
假设有3个参与方A,B,C;他们3个人每个人都有私钥对交易进行签名,3个人每个人都创建了独立的交易 ;3个人都有矿工的地址他们也将交易发送到了对应的矿工的地址中;矿工收到发布的交易然后通过一些网络协议把这些交易发出去
这边会有有一个出块者的选择机制,矿工会被随机的选中,假设这一轮最上面的矿工被选中;他就会构建包含当前区块的区块链接然后把区块发布在交易上;这时候就会给这个矿工奖励我们称之为区块奖励;
加密:哈希函数
加密哈希函数
一个有效计算函数。H:M ->T
其中:||>>||
无论输入多少字节的数据,哈希函数最后就是输出一个32字节的数据
抗碰撞性(Collision resistance)
定义:碰撞是指对于:H M–>T,一对X≠Y€M使得H(x) = H(y)
因为定义域 |M|>> 值域|T|说明存在很多碰撞
白话来说就是无论你输入多少字节的数据最后输出的都是一个32字节的算数,由于函数是抗碰撞的,这32个字节都是唯一的没有重复。
大家如果感兴趣可以去了解一下密码学的课程。
默克尔树(Merkle tree-1989)
首先承诺一个大小为N的列表S,如下图有8个元素,生成一个承诺h–32个字节 ;其实就是一个哈希值
当在区块链上写入一个区块交易时,只需要写入的承诺就足够,保持小链。
后面,可以证明每个链上的内容。
总结
区块链是一种去中心化技术,使多方在没有可信第三方的情况下达成共识。其架构分为四层:共识层确保数据安全和一致性;计算层运行智能合约业务逻辑;应用层构建DeFi、NFT等场景;用户交互层提供钱包等入口工具。新区块通过矿工随机选择机制添加,包含交易记录和奖励。区块链采用哈希函数确保数据唯一性和抗碰撞性,并通过默克尔树结构高效存储交易承诺,实现链上数据验证。这种架构使区块链具有去中心化、透明和不可篡改的特性。
相关文章:

web3-区块链基础:从区块添加机制到哈希加密与默克尔树结构
区块链基础:从区块添加机制到哈希加密与默克尔树结构 什么是区块链 抽象的回答: 区块链提供了一种让多个参与方在没有一个唯一可信方的情况下达成合作 若有可信第三方 > 不需要区块链 [金融系统中常常没有可信的参与方] 像股票市场,或者一个国家的…...

TCP小结
1. 核心特性 面向连接:通过三次握手建立连接,四次挥手终止连接,确保通信双方状态同步。 TCP连接建立的3次握手 抓包: client发出连接请求; server回应client请求,并且同步发送syn连接; clien…...
django ssh登录 并执行命令
在Django开发环境中,通常不推荐直接通过SSH登录到服务器并执行命令,因为这违背了Django的架构设计原则,即前端与后端分离。Django主要负责处理Web请求、逻辑处理和数据库交互,而不直接执行系统级命令。然而,在某些情况…...
unix/linux,sudo,其高级使用
掌握了sudo的基石,现在是时候向更高阶的技巧和应用进发了!sudo的强大远不止于简单的sudo <command>。它的高级用法能让你在复杂的系统管理和安全场景中游刃有余,如同经验丰富的物理学家巧妙运用各种定律解决棘手问题。 sudo 的高级使用技巧与场景 精细化命令控制与参…...

Python 打包指南:setup.py 与 pyproject.toml 的全面对比与实战
在 Python 开发中,创建可安装的包是分享代码的重要方式。本文将深入解析两种主流打包方法——setup.py 和 pyproject.toml,并通过一个实际项目示例,展示如何使用现代的 pyproject.toml 方法构建、测试和发布 Python 包。 一、setup.py 与 pyp…...
计算机视觉与深度学习 | 基于OpenCV的实时睡意检测系统
基于OpenCV的实时睡意检测系统 下面是一个完整的基于OpenCV的睡意检测系统实现,该系统使用眼睛纵横比(EAR)算法检测用户是否疲劳或瞌睡。 import cv2 import numpy as np import dlib from scipy.spatial import distance as dist import pygame import time# 初始化pygame用…...
python打卡day44@浙大疏锦行
知识点回顾: 预训练的概念常见的分类预训练模型图像预训练模型的发展史预训练的策略预训练代码实战:resnet18 作业: 尝试在cifar10对比如下其他的预训练模型,观察差异,尽可能和他人选择的不同尝试通过ctrl进入resnet的…...

性能优化 - 案例篇:缓存_Guava#LoadingCache设计
文章目录 Pre引言1. 缓存基本概念2. Guava 的 LoadingCache2.1 引入依赖与初始化2.2 手动 put 与自动加载(CacheLoader)2.2.1 示例代码 2.3 缓存移除与监听(invalidate removalListener) 3. 缓存回收策略3.1 基于容量的回收&…...
NiceGUI 是一个基于 Python 的现代 Web 应用框架
NiceGUI 是一个基于 Python 的现代 Web 应用框架,它允许开发者直接使用 Python 构建交互式 Web 界面,而无需编写前端代码。以下是 NiceGUI 的主要功能和特点: 核心功能 1.简单易用的 UI 组件 提供按钮、文本框、下拉菜单、滑块、图表等常见…...
生动形象理解CNN
好的!我们把卷积神经网络(CNN)想象成一个专门识别图像的“侦探小队”,用破案过程来生动解释它的工作原理: 🕵️♂️ 案件:识别一张“猫片” 侦探小队(CNN)的破案流程&am…...

python入门(1)
第一章 第一个python程序 1.1 print函数 print方法的作用 : 把想要输出的内容打印在屏幕上 print("Hello World") 1.2 输出中文 在Python 2.x版本中,默认的编码方式是ASCII编码方式,如果程序中用到了中文,直接输出结果很可能会…...

【PDF提取表格】如何提取发票内容文字并导出到Excel表格,并将发票用发票号改名,基于pdf电子发票的应用实现
应用场景 该应用主要用于企业财务部门或个人处理大量电子发票,实现以下功能: 自动从 PDF 电子发票中提取关键信息(如发票号码、日期、金额、销售方等)将提取的信息整理并导出到 Excel 表格,方便进行财务统计和报销使…...

Hugging Face 最新开源 SmolVLA 小模型入门教程(一)
系列文章目录 目录 系列文章目录 前言 一、引言 二、认识 SmolVLA! 三、如何使用SmolVLA? 3.1 安装 3.2 微调预训练模型 3.3 从头开始训练 四、方法 五、主要架构 5.1 视觉语言模型(VLM) 5.2 动作专家:流匹…...

封闭内网安装配置VSCode Anconda3 并配置 PyQt5开发
封闭内网安装配置VSCode Anconda3 并配置 PyQt5开发 零一 vscode1.1 下载 vscode1.2 下载插件1.3 安装 二 anaconda 32.1 下载2.2 新建虚拟环境1 新建快捷方式,启动base2 新建虚拟环境 3 配置Qt designer3.1 designer.exe和uic.exe3.2 设置插件,3.4 ui文件转为py文件 4使用4.1 …...

大话软工笔记—组合要素2之逻辑
1. 逻辑的概念 逻辑,指的是思维的规律和规则,是对思维过程的抽象。 结合逻辑的一般定义以及信息系统的设计方法,对逻辑的概念进行抽提、定义为三个核心内涵,即:规律、顺序、规则。 (1)规律&a…...
浅谈边缘计算
(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮࿰…...
宝塔专属清理区域,宝塔清理MySQL日志(高效释放空间)
1. 删除超过 365 天的积分变更记录 宝塔面板 → 数据库 → 选择数据库 → 点击 管理 进入 phpMyAdmin 后: 选择在用的数据库名 看到顶部的 SQL 点击 输入命令 然后点击执行 DELETE FROM pre_common_credit_log WHERE dateline < UNIX_TIMESTAMP(DATE_SUB(NO…...

7.Demo Js执行同步任务,微任务,宏任务的顺序(3)
一个包含 同步任务、微任务(Promise)、宏任务(setTimeout) 的例子,JS 是怎么调度这些任务的。 🎯 例子代码(建议复制到浏览器控制台运行) console.log(‘同步任务 1’); setTimeo…...

边缘计算网关赋能沸石转轮运行故障智能诊断的配置实例
一、项目背景 在环保行业,随着国家对大气污染治理要求的不断提高,VOCs废气处理成为了众多企业的重要任务。沸石转轮作为一种高效的VOCs治理设备,被广泛应用于石油化工、汽车制造、印刷包装等主流行业。这些行业生产规模大、废气排放量多&…...
机器学习之深入理解机器学习常见算法:原理、公式与应用
机器学习之深入理解机器学习常见算法:原理、公式与应用 机器学习是一门让计算机自动从数据中学习规律的技术体系。常见的机器学习算法可以分为监督学习、无监督学习和深度学习三大类。本文将系统介绍每类中具有代表性的算法,并深入剖析其核心原理与数学基础。 一、监督学习(…...
Python实例题: Python 的简单电影信息
目录 Python实例题 题目 代码实现 实现原理 网页请求: 内容解析: 数据存储: 反爬策略: 关键代码解析 1. 网页请求处理 2. 电影列表解析 3. 电影详情解析 4. 爬虫主逻辑 使用说明 安装依赖: 修改配置&a…...
MyBatis 的动态 SQL
1. 动态 SQL 的定义 动态 SQL 是 MyBatis 的核心特性之一,它允许开发者根据运行时条件动态生成 SQL 语句。通过特殊的 XML 标签或注解语法,实现 SQL 的灵活拼接,避免在 Java 代码中手动拼接 SQL 字符串的复杂性和安全风险。 2. 核心作用 条…...
Redis中的setIfAbsent方法和execute
Redis中的setIfAbsent方法 Redis中的setIfAbsent方法是一种原子操作,它的作用是只有在指定的键不存在时才会设置值。这个方法在并发环境下非常有用,因为它可以避免多个客户端同时尝试设置相同键而导致的冲突。 代码示例 在Java中使用setIfAbsent方法通…...
高考数学易错考点02 | 临阵磨枪
文章目录 前言解析几何立体几何排列组合概率导数及应用前言 本篇内容下载于网络,网络上的都是以 WORD 版本呈现,缺字缺图很不完整,没法使用,我只是做了补充和完善。有空准备进行第二次完善,添加问题解释的链接。 ##平面向量 40.向量 0 ⃗ \vec{0} 0 与数 0 0 0 有区别…...
国产高性能pSRAM选型指南:CSS6404LS-LI 64Mb QSPI伪静态存储器
一、芯片基础特性 核心参数 容量 :64Mb(8M 8bit)电压 :单电源供电 2.7-3.6V (兼容3.3V系统)接口 :Quad-SPI(QPI/SPI)同步模式封装 : SOP-8L (150mil) &#…...
Go 中 `json.NewEncoder/Decoder` 与 `json.Marshal/Unmarshal` 的区别与实践
Go 中 json.NewEncoder/Decoder 与 json.Marshal/Unmarshal 的区别与实践(HTTP 示例) 在 Go 中处理 JSON 有两种主要方式:使用 json.Marshal/Unmarshal 和使用 json.NewEncoder/Decoder。它们都能完成 JSON 的序列化与反序列化,但…...

UE5 2D角色PaperZD插件动画状态机学习笔记
UE5 2D角色PaperZD插件动画状态机学习笔记 0.安装PaperZD插件 这是插件下载安装地址 https://www.fab.com/zh-cn/listings/6664e3b5-e376-47aa-a0dd-f7bbbd5b93c0 1.右键创建PaperZD 动画序列 2.添加动画序列 3,右键创建PaperZD AnimBP (动画蓝图&am…...

Ubuntu 16.04 密码找回
同事整理的供参考: 进入GRUB菜单 重启系统,在启动过程中长按Shift键(或Esc键)进入GRUB引导菜单。 若未显示GRUB菜单,可尝试在启动时连续按多次Shift/Esc键。 在GRUB菜单中选择默认的Ubuntu启动项(第一…...

【论文阅读】DanceGRPO: Unleashing GRPO on Visual Generation
DanceGRPO: Unleashing GRPO on Visual Generation 原文摘要 研究背景与问题 生成模型的突破:扩散模型和整流流等生成模型在视觉内容生成领域取得了显著进展。核心挑战:如何让模型的输出更好地符合人类偏好仍是一个关键问题。现有方法的局限性࿱…...

CentOS在vmware局域网内搭建DHCP服务器【踩坑记录】
1. 重新设置环境 配置dhcp服务踩了不少坑,这里重头搭建记录一下: 1.1 centos 网卡还原 如果之前搭了乱七八糟的环境,导致NAT模式也没法上网,这里重新还原 我们需要在NAT模式下联网,下载DHCP服务 先把centos的网卡还…...