- 博客(47)
- 收藏
- 关注
原创 web3简介
中心化网络已经帮助数十亿人融入了互联网,并在其上创建了稳定、可靠的基础设施。与此同时,少数中心化巨头几乎垄断了互联网,甚至可以为所欲为。Web3 是摆脱这一困境的方案。不同于科技巨头垄断的传统互联网,Web3 采用去中心化,由所有用户构建、运营和拥有。Web3 将权力赋予个人而非公司。在我们讨论 Web3 之前,先来看看我们是如何走到这一步的。
2025-08-29 10:45:11
850
原创 区块链技术原理(18)-以太坊共识机制
我们在之前的章节协议和节点与矿工中简单提及过共识机制。以太坊的共识机制是网络中节点达成 “账本一致性” 的核心规则,决定了区块如何生成、交易如何验证以及全网如何同步状态。其发展经历了从工作量证明(PoW) 到权益证明(PoS) 的重大变革(2022 年 “合并” 完成),两种机制在安全性、能耗、效率等维度差异显著。我们所说的共识,是指达成了广泛的一致。比如,一群人去看电影, 如果他们对于提议“看某部电影”没有任何异议,那么就可以说共识达成了。如果存在异议,那么他们就必须通过某种方法决定看哪一部电影。
2025-08-25 15:47:03
752
原创 区块链技术原理(17)-以太坊网络
以太坊网络并非单一整体,而是由主网(生产环境)、测试网(公开测试环境)、开发网 / 本地网(私有调试环境) 及特殊用途网络(如侧链、联盟链)共同构成的网络矩阵。不同网络的设计目标、安全性、代币价值和适用场景差异显著,核心是为 “真实资产交易”“应用开发测试”“本地调试” 等不同需求提供适配环境。
2025-08-22 15:16:49
1037
原创 区块链技术原理(16)-以太坊节点与客户端
以太坊是一个由计算机组成的分布式网络,这些计算机运行可验证区块和交易数据的软件,称为节点。该软件必须在你的计算机上运行,才能将其转化为以太坊节点。一个节点由两个独立的软件(名为“客户端”)构成。节点是接入以太坊网络的参与单元(如服务器、电脑),而客户端是实现节点功能的软件程序(节点通过运行客户端接入网络)。一个节点需要运行两种客户端软件:共识客户端和执行客户端。执行客户端(也称为执行引擎。
2025-08-18 15:58:32
715
原创 区块链技术原理(15)-以太坊虚拟机 (EVM)
以太坊虚拟机 (EVM) 是一个去中心化虚拟环境,它在所有以太坊节点上一种安全一致地方式执行代码。节点运行以太坊虚拟机,以执行智能合约,利用“燃料”度量执行操作所需的计算工作,从而确保高效的资源分配和网络安全性。EVM以太坊区块链的核心执行引擎,相当于 “世界计算机” 的 “CPU”—— 它负责运行智能合约的字节码、处理交易触发的逻辑,并维护全网账户状态的一致性。
2025-08-18 15:00:09
979
原创 区块链技术原理(14)-以太坊数据结构
以太坊的数据结构是其实现 “去中心化世界计算机” 功能的核心支撑,围绕账户状态管理、交易完整性验证、合约执行追溯三大需求设计,形成了“区块容器 + Merkle Patricia Trie(MPT)树 + 账户 / 交易 / 收据结构化数据” 的分层体系。这些数据结构不仅确保了全网状态一致性和数据不可篡改,还为智能合约的复杂逻辑、轻节点高效验证提供了技术基础。顶层用区块打包数据,确保链式不可篡改;中层用MPT 三棵树实现数据索引和快速验证,解决稀疏存储和高效同步问题;
2025-08-16 12:20:38
1055
原创 区块链技术原理(13)-以太坊燃料费Gas
Gas 对以太坊网络至关重要。正是这种燃料使它能够运行,正如车辆需要汽油一样。在以太坊中,Gas(燃料)是衡量网络执行操作所需计算资源的单位,类似于汽车的燃油。它不仅是支付验证者(矿工)的报酬,更是维持网络安全、防止滥用的核心机制。以下从技术原理、费用模型、优化策略和未来趋。燃料是指在以太坊网络上执行特定操作所需的计算工作量。由于每笔以太坊交易都需要使用计算资源来执行,因此必须为这些资源付费,以确保以太坊不容易受到垃圾信息的攻击,并且不会陷入无限的计算循环。计算费用以燃料费的形式支付。燃料费是。
2025-08-15 17:28:15
759
原创 区块链技术原理(12)-以太坊区块
区块是指一批交易的组合,并且包含链中上一个区块的哈希。 这将区块连接在一起(成为一个链),因为哈希是从区块数据中加密得出的。 这可以防止欺诈,因为以前的任何区块中的任何改变都会使后续所有区块无效,而且所有哈希都会改变,所有运行区块链的人都会注意到。为了保存交易历史,区块被严格排序(创建的每个新区块都包含一个其父块的引用),区块内的交易也严格排序。 除极少数情况外,在任何特定时间,网络上的所有参与者都同意区块的确切数目和历史, 并且正在努力将当前的活动交易请求分批到下一个区块。随机选择的验证者在网络上构建完区
2025-08-15 16:54:55
751
1
原创 区块链技术原理(11)-以太坊交易
交易是由帐户发出,带密码学签名的指令。帐户将发起交易以更新以太坊网络的状态。最简单的交易是将 ETH 从一个帐户转到另一个帐户。“交易(Transaction)” 是从一个账户向另一个账户发送的经过数字签名的指令。例如,如果 Bob 发送 Alice 1 ETH,则 Bob 的帐户必须减少 1 ETH,而 Alice 的帐户必须增加 1 ETH。交易会造成状态的改变(如转移以太币、调用智能合约、部署合约等)。改变 EVM 状态的交易需要广播到整个网络。任何节点都可以广播在以太坊虚拟机上执行交易的请求;
2025-08-15 15:13:33
981
原创 区块链技术原理(10)-以太坊帐户
一个以太坊帐户是一个具有以太币 (ETH) 余额的实体,可以在以太坊上发送交易。帐户可以由用户控制,也可以作为智能合约部署。以太坊的账户体系是 “用户 - 合约” 交互的基础:EOA 作为用户的 “数字身份”,通过私钥控制资产和操作;合约账户作为 “自动执行的程序”,按代码逻辑处理交易和数据。两者的协同让以太坊不仅能实现价值转移,更能支撑去中心化应用的复杂功能,是 Web3 生态 “可编程价值” 的核心载体。
2025-08-14 17:10:32
807
1
原创 区块链技术原理(9)-什么是以太币
以太币(Ether,简称 ETH)是以太坊(Ethereum)区块链的原生加密货币,既是以太坊网络的 “燃料”,也是其生态系统的价值载体。它不仅可以像比特币一样作为点对点的价值转移工具,更核心的作用是支撑以太坊智能合约的运行和网络共识的维护,是理解以太坊生态的基础。加密货币是一种基于分布式账本(区块链)的交换媒介。交换媒介是指被广泛接受、可支付任何商品和服务的物品,而分类账是记录交易的数据存储系统。区块链技术允许用户在分类账上进行交易,而不必依赖受信赖的第三方来维护分类账。
2025-08-13 15:43:38
1051
原创 区块链技术原理(8)-什么是以太坊
以太坊(Ethereum)是一条区块链,是全球首个支持智能合约的开源区块链平台,由 Vitalik Buterin 等人于 2013 年提出,2015 年正式上线。它不仅是一种加密货币(以太币,ETH)的载体,更是一个去中心化的全球计算机,允许开发者通过编写智能合约构建各类去中心化应用(DApps),推动了去中心化金融(DeFi)、非同质化代币(NFT)、元宇宙等领域的爆发式增长。以太坊不仅是区块链技术的集大成者,更是 Web3 时代的基础设施。
2025-08-13 14:35:38
1110
原创 区块链技术原理(7)-安全问题
区块链凭借密码学、分布式存储和共识机制等技术,构建了一套相对安全的信任体系,但其 “不可篡改”“去中心化” 的特性并非绝对安全。从技术设计到实际应用,区块链仍面临多种安全风险,这些风险既源于技术局限,也与生态参与者的操作漏洞相关。区块链的安全并非一劳永逸,其风险随着技术演进和生态扩张不断变化(如智能合约诞生后,代码漏洞取代 51% 攻击成为主要风险;跨链普及后,桥接安全成为新焦点)。
2025-08-12 09:57:05
855
原创 区块链技术原理(6)-匿名性
区块链的 “匿名性” 是其被广泛讨论的特性之一,但严格来说,大多数公链的匿名性并非 “绝对匿名”,而是“伪匿名性”(Pseudonymity)—— 通过 “地址” 替代真实身份,隐藏用户的直接个人信息,但交易轨迹和地址关联仍可能被追踪。其匿名性的实现逻辑、局限及增强方式,需结合技术设计和实际场景具体分析。区块链的匿名性并非绝对:基础公链的 “伪匿名” 本质是 “地址替代身份”,但无法阻止链上分析;隐私公链通过密码学技术实现强匿名,但牺牲了部分效率和透明性。
2025-08-12 09:13:59
650
原创 区块链技术原理(5)-网络
区块链网络是一种 “基于协议的分布式协作系统”,通过节点、P2P 通信、账本和共识的协同,在无中心机构的情况下实现了 “数据可信” 与 “价值传输”。从公有链的开放自由到联盟链的可控协作,它正在重塑金融、供应链、政务等多个领域的信任机制,成为 “价值互联网” 的核心基础设施。
2025-08-11 15:23:24
880
原创 区块链技术原理(4)-节点与矿工
在区块链网络中,“节点” 是构成网络的基础单元,而 “矿工” 是一类特殊的节点(主要存在于 PoW 等共识机制中),两者既紧密关联又有明确分工,共同支撑区块链的去中心化运行。
2025-08-11 12:02:30
758
原创 区块链技术原理(3)-协议
区块链的协议(Blockchain Protocol)是区块链网络运行的核心规则体系,定义了节点如何通信、数据如何存储、共识如何达成、交易如何验证等关键逻辑。它类似互联网的 TCP/IP 协议,是区块链从技术概念落地为可运行网络的 “操作系统”,确保全网节点在去中心化环境下保持一致。区块链的去中心化、不可篡改、透明可追溯等特性,本质是协议规则的 “数学化实现”—— 协议通过代码定义 “谁可以记账”“数据如何存储”“交易如何验证”,让互不信任的节点能在规则下协同运行。
2025-08-11 10:31:50
920
原创 区块链技术原理(2) -数据结构
区块链的核心功能是 “可信存储与高效验证”,而这一功能的实现,依赖于其精心设计的数据结构。从最基础的 “区块 - 链条” 结构,到用于高效验证的默克尔树,再到支持复杂状态管理的多叉树,这些结构共同构成了区块链的 “骨架”。不可篡改性:通过链式哈希和默克尔树,使数据篡改成本极高;高效验证:通过默克尔路径、Patricia 树等,实现轻量节点的快速验证;可扩展性:通过分层结构(区块头 - 区块体)和压缩树(Patricia),适应海量数据存储与动态更新。
2025-08-07 16:00:17
708
原创 区块链技术原理(1) -密码学
区块链的核心是 “去中心化信任”,而这一信任的建立,完全依赖密码学作为底层支撑。从数据不可篡改到身份验证,从交易安全到隐私保护,密码学技术像一把把 “数字锁”,为区块链的运行筑牢安全防线。区块链的去中心化、不可篡改、透明可追溯等特性,本质是密码学技术的 “组合应用”:哈希算法确保数据完整,非对称加密解决身份问题,数字签名保障交易有效,默克尔树提升效率,零知识证明保护隐私。这些技术共同构建了一套 “无需中介即可信任” 的数学机制,让区块链从概念走向可落地的信任工具。
2025-08-07 11:01:28
925
原创 区块链技术原理(0)
当中本聪在 2008 年的白皮书中写下 “区块链” 三个字时,没人料到这个嵌在比特币底层的技术,会在十余年间掀起从金融到民生的链式革命。它不止是数字货币的基石,更是重构信任的密码 —— 用去中心化的账本消解中介壁垒,以不可篡改的特性锚定数据价值,凭智能合约激活千万行业的协同可能。这个系列文章将沿着技术脉络拾级而上:从哈希算法的数学美感,到共识机制的博弈逻辑;从公有链的自由与喧嚣,到联盟链的务实与协同;从 NFT 的数字确权,到 DeFi 的金融重构。文章主要记录笔者自己的学习心得体会,欢迎评论区交流。
2025-08-06 11:31:25
656
原创 Go从入门到精通(26) - 一个简单web项目-实现服务注册
服务注册与发现,在分布式系统(微服务)扮演重要角色,这里以接入nacos为例,看看go-web服务怎么接入。
2025-07-21 09:28:58
383
原创 Go从入门到精通(25) - 一个简单web项目-实现链路跟踪
分布式链路跟踪技术(Distributed Tracing)是分布式系统(尤其是微服务架构)中用于追踪请求全链路流转的核心技术。它通过记录请求在多个服务间的传播路径、执行耗时、状态等信息,帮助开发者定位跨服务调用的性能瓶颈、故障点和依赖关系,是保障分布式系统可观测性(Observability)的三大支柱之一(另外两个是日志和指标)。使用 OpenTelemetry 标准:通过 go.opentelemetry.io/otel 实现与 Zipkin 的集成,遵循 CNCF 标准。
2025-07-16 10:03:58
836
原创 Go从入门到精通(24) - 一个简单web项目-添加redis缓存
在 Go 语言中使用 Redis 缓存频繁访问的数据,可以显著提升应用性能。
2025-07-15 09:54:39
458
原创 Go从入门到精通(23) - 一个简单web项目-使用数据库存储数据
GORM 是 Go 语言中最流行的 ORM(对象关系映射)库之一,用于简化数据库操作。它提供了直观的 API,支持主流数据库(如 MySQL、PostgreSQL、SQLite 等),并具备自动迁移、关联查询、事务管理等功能。
2025-07-14 17:12:38
563
原创 Go从入门到精通(22) - 一个简单web项目-统一日志输出
在 Go 语言中选择日志库时,需要结合项目规模、性能需求、功能复杂度以及是否需要结构化日志等因素综合考量。
2025-07-14 10:58:24
1199
原创 Go从入门到精通(21) - 一个简单web项目-添加swagger文档
Api比较多,没有文档不能清晰的知道每个文档的参数。下面我们引入swagger文档来解决这一个问题// User 用户模型// @Description 用户信息。
2025-07-11 14:44:33
1054
原创 Go从入门到精通(20)-一个简单web项目-服务搭建
本章开始,我们以一个真实项目的形式来展现前面所学的内容。这个示例实现了用户管理、认证和基本的 CRUD 操作。
2025-07-10 16:02:20
1210
原创 Go从入门到精通(19)-协程(goroutine)与通道(channel)
作为一门 21 世纪的语言,Go 原生支持应用之间的通信(网络,客户端和服务端,分布式计算)和程序的并发。程序可以在不同的处理器和计算机上同时执行不同的代码段。Go 语言为构建并发程序的基本代码块是 协程 (goroutine) 与通道 (channel)。他们需要语言,编译器,和runtime的支持。Go 语言提供的垃圾回收器对并发编程至关重要。不要通过共享内存来通信,而通过通信来共享内存。通信强制协作。一个应用程序是运行在机器上的一个进程;进程是一个运行在自己内存地址空间里的独立执行体。
2025-07-09 16:33:48
1133
原创 Go从入门到精通(18)-代码测试
Go 语言中,单元测试和基准测试是保证代码质量和性能的重要工具。Go 标准库提供了 testing 包,结合简单的命名约定,让测试变得简洁高效。Go 的测试工具链简洁而强大,通过命名约定和标准库提供的 testing 包,开发者可以轻松编写单元测试和基准测试。合理运用表驱动测试、子测试和模拟技术,能够提高测试覆盖率和代码质量,同时通过基准测试持续优化性能。
2025-07-08 16:08:16
1070
原创 Go从入门到精通(17)-错误处理
Go 没有像 Java 和 .NET 那样的 try/catch 异常机制:不能执行抛异常操作。但是有一套机制,前面章节也有部分使用到,这里细讲一下。Go 的设计者觉得 try/catch 机制的使用太泛滥了,而且从底层向更高的层级抛异常太耗费资源。他们给 Go 设计的机制也可以 “捕捉” 异常,但是更轻量,并且只应该作为(处理错误的)最后的手段。Go 是怎么处理普通错误的呢?
2025-07-08 15:41:53
726
原创 Go从入门到精通(15)-包(package)
包是 Go 语言中代码组织和代码编译的主要方式。关于它们的很多基本信息已经在前面博文,最引人注目的便是可见性。现在我们来看看具体如何来使用自己写的包。当写自己包的时候,要使用短小的不含有 _(下划线)的小写单词来为文件命名。这里有个简单例子来说明包是如何相互调用以及可见性是如何实现的。它包含了一个整型变量 Pack1Int 和一个返回字符串的函数 ReturnStr。这段程序在运行时不做任何的事情,因为它没有一个 main 函数。//import "包的路径或 URL 地址"import (
2025-07-08 10:52:51
1466
原创 Go从入门到精通(12)-结构体(struct)
结构(struct)与方法(method)Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型。一个带属性的结构体试图表示一个现实世界中的实体。结构体是复合类型(composite types),当需要定义一个类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把数据聚集在一起。然后可以访问这些数据,就好像它是一个独立实体的一部分。结构体也是值类型,因此可以通过 new 函数来创建。组成结构体类型的那些数据称为 字段(fields)。每个字
2025-07-07 15:27:44
725
原创 Go从入门到精通(11)-map
map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典。这是一种快速寻找值的理想结构:给定 key,对应的 value 可以迅速定位。map 这种数据结构在其他编程语言中也称为字典(Python)、hash 和 HashTable 等。提示:以下是本篇文章正文内容,下面案例可供参考。
2025-07-07 11:25:08
672
原创 Go从入门到精通(10)-数组与切片
以 [] 符号标识的数组类型几乎在所有的编程语言中都是一个基本主力。Go 语言中的数组也是类似的,只是有一些特点。Go 没有 C 那么灵活,但是拥有切片(slice)类型。这是一种建立在 Go 语言数组类型之上的抽象,要想理解切片我们必须先理解数组。
2025-07-07 10:19:19
844
原创 Go从入门到精通(9)-函数
函数是 Go 里面的基本代码块:Go 函数的功能非常强大,以至于被认为拥有函数式编程语言的多种特性编写多个函数的主要目的是将一个需要很多行代码的复杂问题分解为一系列简单的任务(那就是函数)来解决。而且,同一个任务(函数)可以被调用多次,有助于代码重用。当函数执行到代码块最后一行(} 之前)或者 return 语句的时候会退出,其中 return 语句可以带有零个或多个参数;这些参数将作为返回值供调用者使用。简单的 return 语句也可以用来结束 for 死循环,或者结束一个协程(goroutine)
2025-07-05 16:38:29
829
原创 Go从入门到精通(8)-控制结构
我们看到的 Go 程序都是从 main() 函数开始执行,然后按顺序执行该函数体中的代码。但我们经常会需要只有在满足一些特定情况时才执行某些代码,也就是说在代码里进行条件判断。if-else 结构switch 结构select 结构,用于 channel 的选择for (range) 结构一些如 break 和 continue 这样的关键字可以用于中途改变循环的状态。此外,你还可以使用 return 来结束某个函数的执行,或使用 goto 和标签来调整程序的执行位置。
2025-07-05 11:22:33
831
原创 Go从入门到精通(7)-指针
不像 Java 和 .NET,Go 语言为程序员提供了控制数据结构的指针的能力;但是,你不能进行指针运算。通过给予程序员基本内存布局,指针对于性能的影响是不言而喻的,而如果你想要做的是系统编程、操作系统或者网络应用,指针更是不可或缺的一部分。程序在内存中存储它的值,每个内存块(或字)有一个地址,通常用十六进制数表示,如:0x6b0820 或 0xf84001d7f0。Go 语言的取地址符是,放到一个变量前使用就会返回相应变量的内存地址。
2025-07-05 09:56:10
738
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人