自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

本郡主是喵

分享自己的学习笔记,争取每天都进步一点!

  • 博客(102)
  • 收藏
  • 关注

原创 基于区块链的电子签署系统的设计与实现(源码+文档+部署讲解)

本文介绍了一个基于区块链技术的电子签署系统,采用FISCO BCOS平台开发,具备个人签署、多人签署和文档验证功能。系统技术栈包括Spring Boot后端、Vue.js前端和Solidity智能合约,确保数据不可篡改。详细说明了运行环境、开发工具、功能模块、技术实现和部署流程,并展示了部分关键代码。该系统实现了文件签署、记录管理和文档验证等核心功能,为电子签署提供了安全可靠的区块链解决方案。

2025-07-07 19:55:23 637

原创 Solidity学习 - ABI 应用二进制接口

ABI(应用二进制接口)是以太坊智能合约与EVM交互的核心编码规范,用于将人类可读函数转换为EVM可执行的二进制数据。关键点包括:1)ABI与API的区别,前者用于二进制交互;2)ABI JSON结构包含函数、事件和错误定义;3)编码过程由函数选择器(前4字节哈希)和参数编码组成;4)解码可还原交易数据和事件日志;5)Solidity提供多种编码函数(如encode、encodePacked等)。开发者可通过ChainToolDAO的可视化工具辅助编解码操作。

2025-06-28 10:01:45 407

原创 Solidity学习 - 继承

继承是面向对象编程中的核心概念之一,Solidity作为一种面向对象的智能合约语言,同样支持继承机制。通过继承,开发者可以实现代码重用、功能扩展,使合约结构更加清晰。本文将详细介绍Solidity中继承的使用方法、特性及最佳实践。

2025-06-28 09:50:48 1222

原创 Solidity学习 - 错误处理

在Solidity智能合约开发中,错误处理是保障合约安全和可靠性的重要环节。与传统编程语言不同,EVM(以太坊虚拟机)的错误处理机制具有独特的特性,本文将详细介绍Solidity中错误处理的核心概念、方法及最佳实践。

2025-06-28 09:46:22 489

原创 Solidity学习 - 事件(Event)

在Solidity智能合约开发中,事件(Event)是一种特殊机制,用于实现合约与外部世界的通信。本文将详细介绍事件的概念、用法、技术原理及最佳实践,帮助开发者理解如何利用事件高效地传递和存储链上数据。事件通过event关键字声明,无需实现,只需定义事件名和参数;通过emit关键字触发事件,会在链上生成日志条目。// 定义事件// 触发事件在Remix中调用deposit函数后,可在交易收据的logsaddress:事件所属的合约地址topics:事件的主题标识(第一个主题为事件签名哈希)

2025-06-28 09:44:09 548

原创 Solidity学习 - 函数修改器(modifier)

在Solidity智能合约开发中,函数修改器(modifier)是一种强大的工具,它可以改变函数的行为,常用于在函数执行前检查前置条件。本文将详细介绍函数修改器的概念、用法、工作原理及实际应用场景,帮助开发者更好地理解和使用这一特性。

2025-06-28 09:40:13 349

原创 Solidity学习 - 合约如何接收 ETH

在以太坊区块链中,智能合约作为运行在EVM(以太坊虚拟机)上的程序,其接收ETH的机制与普通账户有所不同。本文将详细介绍Solidity合约接收ETH的关键机制,包括receive函数、fallback函数以及payable修饰符的使用,帮助开发者正确实现合约的ETH接收功能。receive函数名固定为receive,无需function关键字无参数和返回值必须使用external可见性修饰符必须添加payable修饰符每个合约最多只能有一个receive函数fallback。

2025-06-28 09:38:01 357

原创 Solidity学习 - 映射(mapping)

在Solidity智能合约开发中,映射(mapping)是一种非常重要的数据结构,它提供了键值对的映射关系存储功能,类似于Java中的Map或Python中的Dict。本文将详细介绍Solidity中映射的定义、特性、使用场景以及相关操作,帮助开发者更好地理解和应用这一数据结构。映射类型是一种键值对的映射关系存储结构,在合约中常充当类似数据库的角色。映射的定义形式为,其中KeyType表示键的类型,ValueType表示值的类型。通过键可以获取对应的值,例如。

2025-06-28 09:34:49 478

原创 Solidity学习 - 数组类型

在Solidity编程中,数组是一种非常重要的数据结构,用于存储一组相同类型的数据。本文将详细介绍Solidity中数组类型的定义、初始化、访问以及相关操作,帮助开发者更好地理解和使用数组。和大多数编程语言一样,在Solidity中,只需在一个类型后面加上[],就构成了一个数组类型,表示可以存储一组该类型的值。需要注意的是,数组类型是引用类型,在声明引用类型变量时,需要指定该变量的位置。// 状态变量缺省位置为storage// 固定长度的数组,长度为10// 动态长度的数组。

2025-06-28 09:28:40 632

原创 Solidity学习 - 使用地址类型

在Solidity智能合约开发中,地址类型是一个非常基础且重要的概念,它用于表示以太坊网络中的账户。下面将从多个方面详细介绍Solidity中地址类型的使用。

2025-06-28 09:25:39 882

原创 Solidity学习 - 外部调用漏洞

Solidity智能合约中的外部调用漏洞是常见的安全隐患,主要包括电梯攻击和重入攻击两类。电梯攻击通过操控外部合约返回值欺骗主合约决策,而重入攻击则利用外部调用间隙重复提取资金。解决方案包括:遵循Checks-Effects-Interactions模式(先检查更新状态再调用)、使用重入锁机制,以及减少对外部合约不可预测行为的依赖。这些措施能有效防范外部调用引发的安全风险,保障智能合约的可靠性。开发者需特别注意call、delegatecall等调用方式的特性差异,从设计层面规避潜在漏洞。

2025-06-28 09:11:36 468

原创 Solidity学习 - 随机数生成漏洞

摘要:区块链智能合约中随机数生成存在安全隐患,因区块链的确定性特性导致链上随机数容易被预测或操控。Solidity开发者常用的区块哈希和时间戳等方法易被矿工或攻击者利用,如抽奖合约和猜数字游戏案例所示。解决方案包括引入外部随机数源(如Chainlink预言机)以及采用commit-reveal方案,通过多阶段提交和验证确保随机数安全不可预测,从而提升智能合约的安全性和公平性。(149字)

2025-06-28 09:11:19 458

原创 Solidity学习 - Gas限制和DoS攻击

智能合约Gas限制与DoS攻击安全分析 以太坊智能合约开发中,Gas机制与DoS攻击密切相关。Gas作为计算费用和防滥用机制,通过交易和区块Gas限制确保网络稳定运行。攻击者可能通过高Gas消耗操作、无限循环或恶意外部合约调用发起DoS攻击,耗尽Gas资源阻碍正常交易。典型案例如DeFi借贷平台和区块链游戏中的循环漏洞被利用。防范措施包括:优化合约代码(限制循环、减少冗余操作)、控制外部调用(设置Gas限制、验证可靠性)以及添加超时机制。这些方法能有效降低攻击风险,保障合约安全运行。

2025-06-28 09:10:56 739

原创 Solidity学习 - 时间依赖性漏洞

在Solidity智能合约的世界里,安全性至关重要,而时间依赖性漏洞犹如隐藏在暗处的礁石,随时可能让智能合约这艘航船触礁沉没。随着区块链技术的广泛应用,智能合约承载着越来越多的价值与信任,对其安全性的要求也达到了前所未有的高度。时间依赖性漏洞作为智能合约安全领域的重要议题,正逐渐受到开发者和安全研究人员的密切关注。接下来,我们将深入剖析时间依赖性漏洞的原理,通过实际案例揭示其危害,并探讨行之有效的解决办法。

2025-06-27 11:02:33 900

原创 Solidity学习 - 代理模式中的初始化漏洞

在Solidity智能合约开发中,代理模式因其强大的可升级性与灵活性,成为了众多项目的首选架构方案。通过将合约的逻辑实现与存储分离,开发者能够在不改变合约地址(从而不影响用户交互)的前提下,对合约的功能进行升级和优化。然而,正如任何强大的工具一样,代理模式若使用不当,也会引入严重的安全隐患,其中初始化漏洞便是最为常见且危险的问题之一。接下来,我们将深入探讨代理模式中初始化漏洞的原理、实际案例以及应对策略。在代理模式中,初始化过程至关重要。

2025-06-27 10:49:18 665

原创 Solidity学习 - 断言失败

在Solidity智能合约开发领域,确保代码的稳健性和安全性是至关重要的。其中,断言失败漏洞是一个需要开发者高度警惕的问题,它可能会对智能合约的正常运行造成严重影响,甚至导致资金损失等灾难性后果。接下来,我们将从原理、实际案例以及解决办法等方面,深入探讨Solidity断言失败漏洞。

2025-06-27 10:44:09 798

原创 Solidity学习 - 短地址攻击

在Solidity智能合约的开发领域,安全始终是重中之重。其中,短地址攻击作为一种较为隐蔽的安全漏洞,犹如一颗隐藏在暗处的“定时炸弹”,随时可能对智能合约的安全性造成严重威胁。接下来,我们将深入剖析短地址攻击的原理,通过实际案例感受其危害,并探讨有效的解决办法。

2025-06-27 10:34:21 983

原创 Solidity学习 - 不当的继承顺序

Solidity智能合约的不当继承顺序可能导致严重漏洞。文章剖析了继承机制原理:函数覆盖遵循反向C3线性化规则,状态变量可能被遮蔽,构造函数执行顺序由继承列表决定。通过两个案例说明问题:权限控制混乱案例中构造函数顺序错误导致权限校验失效;函数功能混淆案例中继承顺序错误引发计算逻辑错乱。解决方案包括:遵循从通用到具体的继承顺序、避免菱形继承结构、使用super关键字明确调用父合约函数。开发者应重视继承顺序设计,确保合约安全性和预期功能实现。

2025-06-27 10:30:20 521

原创 Solidity学习 - 未授权访问

在Solidity智能合约开发中,未授权访问是最常见且危害极大的安全漏洞之一。它如同一扇未上锁的门,允许恶意用户绕过权限限制,执行敏感操作,进而导致资金损失、数据篡改或合约控制权被窃取。以下从原理、真实案例及解决方法三方面深入解析。

2025-06-27 10:23:04 432

原创 Solidity学习 - 整数溢出和下溢

在Solidity智能合约开发中,整数溢出和下溢是极为常见且危险的安全漏洞,许多严重的安全事件都与之相关。下面从原理、案例、解决办法三个方面,为你深入剖析这一问题。

2025-06-27 10:19:26 1090

原创 Solidity学习 - 重入攻击

本文分析了智能合约中的重入攻击原理与防范方法。重入攻击利用合约提现或调用第三方合约时状态未及时更新的漏洞,通过二次调用获取不当利益。通过一个Bank合约示例演示了攻击流程:攻击合约利用fallback函数多次调用提现方法,导致合约余额被耗尽。文中提出三种防范措施:1)使用非重入锁机制,如OpenZeppelin的ReentrancyGuard;2)先修改状态再转账;3)禁止向合约地址转账。这些方法可以有效防止重入攻击,保障智能合约安全性。

2025-06-27 10:00:30 931

原创 基于区块链的农产品溯源系统的设计与实现(源码+文档+部署讲解)

本文介绍了一个基于区块链的农产品溯源系统,采用SpringBoot+Vue技术栈,结合FISCO BCOS区块链平台与IPFS分布式存储。系统支持多角色用户管理(生产商、经销商、消费者等),实现农产品生产、流通、销售全流程信息上链与溯源查询。功能包括智能合约开发、数据上链、二维码追溯及后台管理,技术涵盖Solidity、Java SDK和Vue前端。环境需JDK8、Node.js及FISCO BCOS节点,提供完整的部署指南和代码示例(含智能合约、后端控制器及前端页面),确保农产品信息透明可信。

2025-06-27 09:43:49 1641

原创 基于区块链的食品溯源系统的设计与实现(源码+文档+部署讲解)

本文介绍了一个基于区块链的食品溯源系统开发方案。系统采用SpringBoot+Vue技术栈,整合FISCO BCOS区块链平台,实现食品全流程信息上链与追溯。主要功能包括多角色用户管理、食品各环节信息录入、区块链存证、二维码溯源查询等。技术架构涵盖Java、Solidity智能合约、Vue前端等,支持MySQL数据库和文件存储。文档详细说明了系统运行环境要求、开发工具配置、功能模块设计以及核心代码示例(包括智能合约、后端控制器和前端页面),为开发者提供了完整的实现参考。

2025-06-27 09:42:21 2537

原创 Solidity学习 - 投票合约讲解

本文介绍了基于Solidity的投票合约实现,包含选民和提案数据结构设计、投票权分配机制、委托投票和自主投票功能,以及计票与结果查询方法。核心功能包括:主席通过构造函数初始化提案并分配投票权;选民可委托他人投票或直接投票,系统通过权重机制和防重复投票验证确保公平性;最终通过遍历提案数组统计最高得票数并返回获胜提案名称。该合约实现了完整的去中心化投票流程,适用于区块链场景下的透明表决系统。

2025-06-27 08:51:21 581

原创 Solidity学习 - 内联汇编

Solidity内联汇编是直接与EVM交互的低级编程工具,通过assembly{...}块实现Yul语言编写。它提供对底层操作的精细控制,可用于性能优化和实现Solidity无法直接支持的功能,但会绕过类型检查等安全机制,增加风险。基础用法包括EVM操作码调用和内存管理,典型应用场景如合约代码获取和数组运算优化。内联汇编可与Solidity变量交互,但需遵循特定规则处理值类型、内存引用等。开发者必须遵循Solidity内存管理惯例,合理使用空闲指针,并可选声明"memory-safe"以

2025-06-27 08:50:48 709

原创 Solidity学习 - 合约创建和基本语法

本文深入解析Solidity合约的核心概念,包括创建方式、可见性规则和继承机制。合约可通过交易或编程方式创建,构造函数仅执行一次。状态变量和函数具有四种可见性级别(public/external/internal/private),直接影响访问权限。修饰器可声明式改变函数行为,常量和不可变变量则限制状态修改。特殊函数receive和fallback处理以太接收与未知调用。Solidity支持多重继承,需使用virtual/override实现多态。通过事件机制,合约还能在EVM日志中记录重要信息,为DApp

2025-06-27 08:50:16 812

原创 Solidity学习 - 认识Solidity表达式和控制结构

Solidity中的表达式与控制结构是实现智能合约逻辑的基础。本文介绍了常见的控制结构(if/else、循环等)的使用规范,包括条件语句必须带括号且不支持非布尔转换。函数调用分为内部调用(高效跳转)和外部调用(消息传递),后者支持命名参数和资源配置。合约可通过new创建,但需注意递归限制和地址未知性。循环结构包括for、while和do-while,并介绍了break/continue控制语句。这些特性与其他语言类似,但需特别注意Solidity特有的安全约束和资源管理机制。

2025-06-27 08:49:45 728

原创 Solidity学习 - 单位、全局变量以及函数

在Solidity智能合约开发中,单位和全局变量是非常基础且重要的概念。它们为开发者提供了操作以太币、获取区块链信息以及实现各种功能的基础工具。本文将详细介绍Solidity中的单位表示和全局可用变量,帮助开发者更好地理解和使用这些特性。

2025-06-26 15:18:21 926

原创 Solidity学习 - 认识Solidity类型

在Solidity编程中,数据类型是构建智能合约的基石。合理使用不同的数据类型,不仅能精准表达合约逻辑,还直接影响合约的存储效率与运行性能。Solidity官方文档对各类数据类型进行了系统阐述,本文将结合实际应用场景,深入解析Solidity类型体系,帮助开发者掌握其核心要点。

2025-06-26 15:07:56 1086

原创 Solidity学习 - 认识Solidity合约结构

Solidity作为以太坊等区块链平台上编写智能合约的核心语言,其合约结构的设计直接关系到智能合约的功能实现、安全性与可维护性。深入理解Solidity合约结构,是每位智能合约开发者的必修课。本文将结合官方文档,详细拆解Solidity合约的组成部分,帮助开发者掌握其设计精髓。函数名:如transfer,标识函数功能。参数列表,定义函数输入参数。可见性修饰符public,表示外部合约可调用。返回值,定义函数返回值类型。函数体:包含具体执行逻辑,如上述代码中实现代币转账的逻辑。

2025-06-26 14:20:38 1003

原创 Solidity学习 - 认识Solidity 源文件结构

在智能合约开发领域,Solidity 是最常用的编程语言之一。深入理解Solidity源文件的结构,是编写高效、安全智能合约的基础。Solidity 源文件包含多种元素,从版本声明、导入语句到合约定义,每个部分都承担着独特功能。本文将结合官方文档,详细解读Solidity源文件结构,帮助开发者掌握其核心要素。合约是Solidity 源文件的核心组成部分,用于实现具体业务逻辑;接口则定义合约需遵循的规范。合约使用contract// 状态变量// 构造函数// 函数状态变量。

2025-06-26 13:24:06 809

原创 Fisco Bcos学习 - 运维部署工具-一键部署

在区块链应用中,节点部署与网络搭建是一项复杂且关键的工作。FISCO BCOS提供的一键部署工具,通过自动化脚本大大简化了联盟链的部署流程,让开发者可以快速搭建多机构、多群组的区块链网络。本文将详细介绍如何使用该工具完成3机构2群组6节点的网络部署,并演示节点扩容与新增群组的操作流程。

2025-06-26 12:55:34 414

原创 Fisco Bcos学习 - JavaSDK使用

FISCO BCOS的Java SDK(Web3SDK)是用于与FISCO BCOS区块链网络进行交互的Java开发工具包,提供了丰富的API,支持访问节点、查询状态、发送交易、部署和调用智能合约等功能。本文将详细介绍JavaSDK的基本使用方法,帮助开发者快速上手。

2025-06-26 12:26:58 1039

原创 Fisco Bcos学习 - 区块链浏览器手动部署

在区块链技术的应用与实践中,区块链浏览器是可视化查看链上数据、追踪交易记录的重要工具。FISCO BCOS提供的区块链浏览器,能直观展示区块信息、交易详情、合约数据等内容。相较于一键部署,手动部署可让我们更深入了解其架构与配置逻辑。本文将结合官方文档,详细介绍FISCO BCOS区块链浏览器的手动部署流程。

2025-06-26 11:30:09 1092

原创 Fisco Bcos学习 - 区块链浏览器一键部署

本文介绍了FISCO-BCOS区块链浏览器的一键部署流程。首先需要检查并安装JDK8+、MySQL5.6+、Python3.4+等环境依赖;然后通过git拉取代码,修改数据库和服务端口配置;随后使用deploy.py脚本完成安装部署,支持启停所有服务;最后通过浏览器访问指定端口即可使用。部署及运行日志分别存储在log/、server/log/和web/log/目录下。该方案提供了快速搭建区块链浏览器的完整指南,包含环境准备、配置修改、服务部署等关键步骤。

2025-06-26 10:45:29 688

原创 Fisco Bcos学习 - 节点存储加密

在区块链系统中,数据存储的安全性至关重要。FISCO BCOS作为企业级联盟链平台,通过节点存储加密机制,为区块链数据提供了坚实的安全保障。本文将结合官方文档,详细解读FISCO BCOS节点存储加密的原理、配置与应用,帮助读者深入理解这一重要安全特性。FISCO BCOS的节点存储加密基于国密算法,对区块链数据进行加密存储,确保即使存储介质被窃取,数据也无法被非法读取。该加密机制采用全库加密模式,对LevelDB数据库中的所有数据进行加密处理,有效防止数据泄露风险。

2025-06-26 10:04:23 683

原创 Fisco Bcos学习 - CA黑白名单操作

在区块链网络中,节点间的安全连接至关重要。FISCO BCOS提供的CA黑白名单机制,能够有效地控制节点之间的连接,增强区块链网络的安全性。本文将详细介绍CA黑白名单的配置方法和实际操作案例,帮助读者快速掌握这一重要安全机制。黑名单:通过配置黑名单,节点可以拒绝与指定的节点建立连接。白名单:通过配置白名单,节点可以只与指定的节点建立连接,拒绝与白名单之外的节点连接。这两种机制可以单独使用,也可以混合使用,其中黑名单的优先级高于白名单。

2025-06-26 09:35:48 643

原创 Fisco Bcos学习 - 权限控制台实操操作

在区块链系统中,权限控制是保障系统安全和规范操作的重要机制。FISCO BCOS提供了完善的权限控制体系,允许管理员对不同账户的操作权限进行精细管理。本文将通过实际操作案例,详细介绍如何使用控制台进行权限控制,包括授权账户为链管理员、系统管理员,以及授权各类操作权限等。在开始权限控制操作前,需要先配置并启动FISCO BCOS 2.0区块链节点和控制台,具体步骤可参考官方安装文档。

2025-06-26 09:25:25 963

原创 Fisco Bcos学习 - 并行合约(Solidity合约)

在区块链技术的应用中,交易处理速度一直是一个关键的性能指标。FISCO BCOS提供了并行合约开发框架,允许开发者编写可以并行执行的合约,从而显著提高区块链系统的吞吐量和性能。高吞吐:多笔独立交易可以同时执行,充分利用机器的CPU资源,大幅提升TPS(交易每秒)可拓展:通过提高机器配置即可提升交易执行性能,轻松支持业务规模的扩大本文将重点介绍如何编写并行Solidity合约,包括基本概念、开发框架和实际案例,帮助开发者快速掌握这一重要特性。互斥参数:合约接口中与合约存储变量的"读/写"操作相关的参数。

2025-06-26 09:20:30 862

原创 Fisco Bcos学习 - Solidity合约开发

Solidity是一种面向对象的编程语言,专门为实现智能合约而设计,广泛应用于以太坊和FISCO BCOS等区块链平台。在FISCO BCOS中,Solidity合约与预编译(Precompiled)合约是两种主要的合约形式。其中,Solidity合约使用Solidity语法实现,最高支持0.5.2版本,具有灵活的开发模式,适合实现各种业务逻辑;而预编译合约使用C++开发,内置于平台,性能更优,适合逻辑固定但需要共识的场景。

2025-06-26 09:11:46 908

全国区块链职业技能大赛样题第9套前端源码

全国区块链职业技能大赛样题第9套前端源码

2024-07-28

全国区块链职业技能大赛样题第9套后端代码

全国区块链职业技能大赛样题第9套后端代码

2024-07-28

全国区块链职业技能大赛第7套后端代码源码

第7套后端部分源码

2024-07-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除