
区块链
文章平均质量分 86
区块链
小宝哥Code
码农,主策,游戏迷
展开
-
022-Solidity 编译器输出分析
Solidity 编译器生成多种输出格式,满足不同的需求。javascript// 创建警告摘要报告if (!} else {Solidity 编译器输出包含大量有价值的信息,通过系统分析这些信息,可以深入理解合约行为、优化性能、提高安全性并简化调试过程。字节码分析:理解 EVM 指令,识别合约特性和潜在风险。ABI 解析:分析合约接口,了解函数签名和交互方式。源代码映射:将字节码映射回源代码,简化调试和审计。Gas 估算:优化合约的 gas 消耗和执行效率。AST 分析。原创 2025-04-12 10:02:44 · 690 阅读 · 0 评论 -
021-Solidity 编译器输出分析完全指南
Solidity 编译器生成多种输出格式,满足不同的需求。javascript// 创建警告摘要报告if (!} else {Solidity 编译器输出包含大量有价值的信息,通过系统分析这些信息,可以深入理解合约行为、优化性能、提高安全性并简化调试过程。字节码分析:理解 EVM 指令,识别合约特性和潜在风险。ABI 解析:分析合约接口,了解函数签名和交互方式。源代码映射:将字节码映射回源代码,简化调试和审计。Gas 估算:优化合约的 gas 消耗和执行效率。AST 分析。原创 2025-04-12 10:02:20 · 984 阅读 · 0 评论 -
020-Solidity 命令行编译器 (solc) 完全指南
Solidity 命令行编译器是开发以太坊智能合约的核心工具,掌握它的各种选项和用法可以帮助您优化开发工作流、提高合约质量并简化部署过程。本指南涵盖了从基础安装到高级自动化的各个方面,为您提供了使用 solc 的全面参考。无论您是初学者还是有经验的开发者,使用正确的 solc 选项和工作流程都可以显著提高开发效率和合约质量。合理组织编译流程、优化设置和自动化脚本将帮助您在智能合约开发过程中更加高效和专注。原创 2025-04-12 10:01:56 · 729 阅读 · 0 评论 -
019-Solidity 合约开发完全指南
特性至少有一个未实现的函数使用abstract关键字声明不能直接实例化,必须由其他合约继承并实现所有抽象函数可以包含状态变量和已实现的函数可以包含构造函数用途提供基础实现和公共功能强制子合约实现特定接口定义可重用的合约模板将通用功能与特定实现分离语法标记未实现的函数为virtual继承抽象合约的合约必须实现所有抽象函数或自身声明为抽象合约与接口区别抽象合约可以提供部分实现抽象合约可以定义状态变量抽象合约的函数可以有任何可见性。原创 2025-04-12 10:01:25 · 790 阅读 · 0 评论 -
018-Solidity表达式和控制结构技术总结与实例
本指南详细介绍了 Solidity 中的表达式和控制结构,从基础概念到高级应用,为您提供了全面的技术总结。通过掌握这些核心语言特性,您可以编写更高效、更安全、更易维护的智能合约。表达式基础理解不同类型的表达式(字面量、变量、运算符、函数调用等)掌握表达式求值顺序和类型推断规则注意表达式的副作用和安全性算术和逻辑表达式熟悉各种运算符(算术、比较、逻辑、位运算)了解 Solidity 0.8.0+ 的自动溢出检查机制合理使用unchecked块优化 gas条件表达式和控制结构。原创 2025-04-12 10:00:54 · 784 阅读 · 0 评论 -
017-Solidity特殊变量和函数技术总结与实例
Solidity 特殊变量和函数为开发者提供了与区块链环境交互的重要工具。本指南详细介绍了这些特殊元素、它们的用法以及最佳实践。区块和交易属性使用等变量访问当前区块信息通过msg.sendermsg.value获取交易和消息数据注意tx.origin与msg.sender的区别地址相关成员利用查询地址余额使用和发送以太币通过获取合约代码错误处理使用requireassert和revert进行条件检查采用自定义错误提高 gas 效率使用try/catch处理外部调用密码学函数。原创 2025-04-11 13:01:15 · 1019 阅读 · 0 评论 -
016-Solidity 字面量和基本类型转换完全指南
Solidity 中的字面量(Literals)是直接在代码中表示固定值的表示法。理解不同类型的字面量及其转换规则是良好 Solidity 编程的基础。本指南全面介绍了 Solidity 中字面量和基本类型之间的转换技术。这些转换是智能合约开发的基础,掌握它们可以帮助您编写更安全、更高效的代码。原创 2025-04-11 12:41:28 · 929 阅读 · 0 评论 -
015-Solidity 基本类型转换完全指南
本指南全面介绍了 Solidity 中的类型转换技术,从基础概念到高级应用。通过掌握这些知识,你可以编写更高效、更安全的智能合约。理解转换规则:清楚隐式和显式转换的规则及适用情况。安全第一:始终验证转换的安全性,特别是在处理用户输入时。优化 gas 使用:通过适当的类型选择和转换技巧减少 gas 消耗。避免常见陷阱:注意溢出/下溢、精度损失和边界检查等问题。实用性:将类型转换技术应用于实际场景,如代币合约、签名验证和数据编码。原创 2025-04-11 12:16:52 · 754 阅读 · 0 评论 -
引用「docker run hello-world」 Unable to find image ‘hello-world:latest‘ locally,提示这个怎么办
如果仍然遇到问题,可以尝试执行上述步骤,以确保 Docker 正确运行所需的镜像。如果问题仍然存在,请提供更多细节,以便我可以为提供进一步的帮助。这可能是因为该镜像尚未在本地或者 Docker Hub 上下载。的提示,这通常意味着 Docker 无法在本地镜像中找到。原创 2025-04-11 12:06:15 · 579 阅读 · 0 评论 -
014-Solidity操作符技术总结及实例
本指南详细介绍 Solidity 中所有操作符的使用方法、优先级、注意事项及优化技巧,并提供实用示例。掌握这些操作符能让您更高效地开发智能合约,编写更简洁、更优化的代码。原创 2025-04-11 12:03:13 · 702 阅读 · 0 评论 -
013-Solidity 映射类型全面技术指南
映射(Mapping)是 Solidity 中最强大且最常用的引用类型之一,为智能合约提供类似哈希表的键值存储功能。本文将深入探讨映射类型的各个方面,包括基础用法、高级技术、优化策略和实际应用案例。原创 2025-04-11 11:14:57 · 760 阅读 · 0 评论 -
012-Solidity 引用类型完全指南
引用类型是复杂的数据类型,不直接存储在变量中,而是存储数据的位置(引用)。solidity// 使用内联汇编操作内存assembly {// 循环复制每个 32 字节(一个字)mstore(// 处理不能被 32 整除的剩余部分// 创建动态内存数组// 填充数组i < _size;i++) {// 使用内联汇编高效连接字符串assembly {assembly {原创 2025-04-11 11:02:17 · 619 阅读 · 0 评论 -
011-Solidity 值类型完全指南
Solidity 值类型是智能合约开发的基础构建块。通过深入理解每种值类型的特性、限制和最佳实践,您可以编写更高效、更安全的智能合约。类型选择:为每个用例选择最合适的值类型,考虑范围、精度和 gas 成本。优化存储:通过适当排序状态变量和使用合适大小的类型来优化存储布局。安全检查:注意溢出、下溢和类型转换错误,特别是在 Solidity 0.8.0 之前的版本中。gas 优化:利用 unchecked 块、位运算和其他技巧来优化 gas 使用。可读性。原创 2025-04-11 10:47:41 · 1032 阅读 · 0 评论 -
010-Solidity 值类型综合详解
booltrue或falsefalse占用 1 个字节,但在 EVM 中作为 32 字节的字被处理Solidity 提供有符号和无符号整数,从 8 位到 256 位不等。uint8uint16uint24, ...,uint256(或简写uintint8int16int24, ...,int256(或简写int0uint和int分别是uint256和int256的别名Solidity 中的定点数类型目前还未完全实现,虽然保留了关键字,但无法在当前版本使用。开发者通常使用整数来模拟定点数。原创 2025-04-11 10:42:26 · 546 阅读 · 0 评论 -
009-Solidity 编译器 CMake 配置选项完全指南
CMake 是 Solidity 项目使用的跨平台构建系统生成器。它使用文件定义构建过程,并可以为各种平台和构建工具生成原生构建文件(如 Makefiles、Visual Studio 项目等)。bash..原创 2025-04-11 10:23:36 · 941 阅读 · 0 评论 -
008-Solidity 从源代码构建完全指南
bash# 配置自定义安装前缀# 安装# 添加到路径。原创 2025-04-11 00:38:58 · 843 阅读 · 0 评论 -
007-Solidity 静态二进制文件完全指南
静态二进制文件是一种包含了所有必要依赖的可执行文件,无需依赖外部系统库即可运行。对于 Solidity 编译器(solc),静态二进制版本意味着您可以在没有安装任何额外依赖的情况下使用它。dockerfile# 安装依赖# 安装多个 Solidity 版本创建 entrypoint.sh:bash/bin/bash# 第一个参数可以是 Solidity 版本thenshiftfi# 执行命令then# 如果没有提供命令,则打印使用信息exit 0fi# 执行 solc 命令。原创 2025-04-10 23:25:24 · 945 阅读 · 0 评论 -
006-Solidity 在 macOS 上的软件包安装与管理完全指南
Solidity 是以太坊和其他 EVM 兼容区块链的智能合约编程语言。Solidity 编译器(solc)负责将 Solidity 代码转换为 EVM 字节码,以便在区块链上部署和执行。原创 2025-04-10 23:18:54 · 1292 阅读 · 0 评论 -
005-Solidity 在 Linux 系统下的软件包安装与管理完全指南
Solidity 是以太坊和其他兼容 EVM 的区块链平台上开发智能合约的主要编程语言。Solidity 编译器(solc)将 Solidity 代码转换为 EVM 字节码,以便部署到区块链上。原创 2025-04-10 23:08:20 · 873 阅读 · 0 评论 -
004-Solidity 开发环境的 Docker 安装与配置完全指南
创建一个名为Dockerfile的文件,内容如下:dockerfile# 使用 Node.js 作为基础镜像# 设置工作目录# 安装基本工具git \curl \python3 \# 安装 Solidity 编译器# 安装 Hardhat、Truffle 和其他常用工具# 安装额外的分析工具# 预先安装常用依赖,加快后续构建# 设置默认命令bash创建新的 Hardhat 项目:bash编译合约:bash运行测试:bash启动本地开发节点:bash。原创 2025-04-10 23:04:16 · 628 阅读 · 0 评论 -
003-Solidity 开发环境安装指南:NPM/Node.js 方式
本指南详细介绍如何通过 NPM 和 Node.js 安装 Solidity 开发环境,包括所有必要的工具和框架,以便进行以太坊智能合约开发。原创 2025-04-10 20:31:41 · 979 阅读 · 0 评论 -
002-Solidity 在线运行环境完全指南
针对特定版本要求。原创 2025-04-10 20:21:16 · 1161 阅读 · 0 评论 -
001-Solidity 版本控制详解
Solidity 作为以太坊和其他兼容 EVM 的区块链的主要智能合约开发语言,其版本控制是开发安全可靠合约的关键方面。本文将全面介绍 Solidity 的版本控制机制、最佳实践和重要注意事项。原创 2025-04-10 20:17:27 · 938 阅读 · 0 评论 -
assembly的含义及用途
它提供了对底层操作的精细控制,通常用于优化 Gas 消耗、实现复杂逻辑或访问 Solidity 无法直接表达的底层功能。let ptr := add(arr, 0x20) // 数组数据起始位置。// 按位取反(结果仍为 uint8 类型)let len := mload(arr) // 读取数组长度。r1 := a // 直接赋值(可能隐式类型转换)r1 := and(a, 0xff) // 确保高位清零。// 普通 Solidity 代码(Gas 较高)原创 2025-04-10 19:42:27 · 659 阅读 · 0 评论 -
modifier mod() { _; active = false; _; },modifier含义及用途
它可以简化合约中的重复性验证逻辑(如权限控制、状态检查等),增强代码可读性和安全性。:若某个函数应用此修饰器,其逻辑会被执行两次,可能导致状态混乱或 Gas 浪费。是一种特殊的语法结构,用于在函数执行前或后插入代码逻辑,通常用于。// 函数执行后更新状态。// 执行后更新状态。// 第一次执行原函数体。// 第二次执行原函数体。// 表示原函数体在此处执行。// 验证通过后执行原函数体。,用于统一管理函数的前置/后置逻辑。// 前置逻辑(条件检查)// 后置逻辑(状态更新)// 先执行原函数体。原创 2025-04-10 19:16:32 · 706 阅读 · 0 评论 -
Solidity中的bytes32类型
/ 转换为动态字节数组。// 只保留前32字节。类型是一个固定长度的字节数组,占用32字节(256位)。// 字符串需≤32字节,否则截断。// 0x74 ('t'的ASCII):需要高效存储固定长度数据(如哈希、密钥、标识符)。:始终占据32字节(256位),无论存储内容如何。:写入状态变量时,占用固定的32字节存储槽。// 将字符串哈希为bytes32。// 将地址转换为bytes32。原创 2025-04-10 14:33:25 · 793 阅读 · 0 评论 -
Solidity中的:32**22
**指数过大导致溢出** | 确保结果在目标类型的范围内(如 `uint256` 足够存储 \(32^{22}\))。(即 32223222),但具体是否合法取决于编译器的版本和上下文。// 合法,结果为 32^22。在需要大数幂运算的加密逻辑中(如零知识证明),可能用到此类表达式。### **5. 手动实现幂运算(兼容旧版本)**大数运算的 Gas 成本较高,需谨慎使用。作为指数运算符,允许直接进行幂运算。原创 2025-04-10 13:31:52 · 471 阅读 · 0 评论 -
Solidity开发中,contract合约可以理解为一个Class类吗?
function speak() public pure virtual returns (string memory) { // 虚函数。function speak() public pure override returns (string memory) { // 重写。constructor() Animal("Dog") {} // 调用父合约构造函数。constructor(string memory _name) { // 构造函数。// 状态变量(属性)// 部署新合约实例。原创 2025-04-10 13:05:37 · 567 阅读 · 0 评论 -
SPDX-License-Identifier: GPL-3.0
选择许可证需权衡项目目标(开放 vs 商业),智能合约中建议明确声明以避免法律风险。,因此分叉协议(如 SushiSwap)需开源修改后的代码。:不得将代码用于闭源项目,除非完全自行使用(不对外分发)。:任何基于 GPL-3.0 代码的修改或衍生作品,必须。它的目的是通过统一格式,简化代码许可证的声明和识别。区块链上的代码是公开的,但版权和许可证依然适用。,用于明确代码的法律使用条款。他人使用或修改你的代码时,需遵守许可证条款。明确代码使用规则,避免法律纠纷。希望允许商业闭源使用的代码库。原创 2025-04-10 12:43:52 · 561 阅读 · 0 评论 -
Solidity 中payable
用。原创 2025-04-10 12:11:33 · 609 阅读 · 0 评论 -
此处的memory与emit是什么
当合约发生重要事情(比如有人存钱),它通过广播喇叭(事件)通知所有人:“注意!关键字用于触发一个事件,事件的参数会被记录到区块链的交易日志中,供外部程序(如前端应用)监听。是用于不同目的的关键字,下面通过通俗易懂的方式解释它们的作用,并结合你的代码示例说明。你在草稿纸上写写画画(处理数据),用完就丢(不保存到区块链),成本低且灵活。:前端应用可以通过监听事件实时感知合约状态变化(如新请求创建、转账完成)。:触发事件,向外部世界广播关键操作(如状态变更)。事件,实时获取新请求的索引(例如更新 UI)。原创 2025-04-09 16:42:53 · 865 阅读 · 0 评论 -
常用于区块链和虚拟币开发的编程语言及其应用场景
若需针对某个方向(如DeFi合约架构设计或Rust智能合约精讲)展开,可告知具体需求,我将提供更垂直的深度内容。:Go(Hyperledger Fabric) + Java(传统系统集成)生态庞大(Web3.js、Ethers.js、Hardhat 插件)。生态成熟,工具链完善(Remix、Hardhat、Truffle)。代币(ERC-20)、NFT(ERC-721)、DeFi 协议开发。:Rust(Solana生态)或 Move(Aptos/Sui生态)原创 2025-04-09 12:51:53 · 1057 阅读 · 0 评论 -
用通俗易懂的方式解释 Solidity 中的 view 和 pure
函数如果被外部调用(通过交易),不需要消耗 Gas(但如果被其他合约内部调用,可能消耗 Gas)。// ❌ 错误示例:如果在 view 函数中修改状态变量,会编译失败。// ❌ 错误示例:如果在 pure 函数中读取状态变量,会编译失败。// view 函数:读取 totalMoney,但不修改它。:就像数学计算器中的加法,只依赖输入的数字,不涉及任何外部数据。// pure 函数:仅用输入参数计算,不读/写状态变量。如果函数不读取也不修改状态,必须声明为。:能看不能摸(读数据,不修改数据)。原创 2025-04-09 11:51:55 · 612 阅读 · 0 评论 -
用通俗易懂的方式解释 Solidity 中的 library、mapping 和 event
console.log(`${event.from} 转给 ${event.to} ${event.amount} 个 Token`);// 调用库中的 add 函数(像调用成员函数一样):当合约中发生重要事情(如转账)时,触发一个事件,告诉外界发生了什么。像是一个装满了工具的箱子,里面定义了可复用的函数,供其他合约调用。:类似现实中的电话簿,通过“名字”(键)快速查找“号码”(值)。// 记录每个地址的余额(地址 → 余额):工具箱,装可复用的函数(如防止溢出的数学工具)。原创 2025-04-09 00:33:11 · 684 阅读 · 0 评论 -
function send(address receiver, uint amount) public里的public
在 Solidity 智能合约中,public是函数的(visibility modifier),它定义了函数可以被调用的范围。具体到中的public。原创 2025-04-08 19:50:32 · 310 阅读 · 0 评论 -
为什么没有出现的Deploy和changeName相关的UI按钮呢?
若仍无法解决,请提供具体的开发工具名称(如 Remix、Hardhat 或 Truffle)及错误日志,以便进一步排查。:应用程序二进制接口(ABI)是前端与合约交互的桥梁。// ❌ 拼写错误:"changName" 应为 "changeName"// ❌ 错误:构造函数名称应与合约名称一致,且参数格式错误。:在 Remix 中,编译后会自动生成 ABI。标签,选择环境(如 JavaScript VM),点击。标签,选择正确编译器版本(如 0.8.0+),点击。:需通过合约地址和 ABI 初始化合约对象。原创 2025-04-06 20:42:58 · 447 阅读 · 0 评论 -
root@iZt4nfvq8vwzve613d0i7kZ:~# sudo wginterface: wg0 public key: jaaoqt7oylo6G1NQk2k7MPiVSgJtwAo
PublicKey = jaaoqt7oylo6G1NQk2k7MPiVSgJtwAozoxRTJi99YEw= # 服务端公钥。Endpoint = 8.219.80.215:51820 # 服务端公网IP和端口。AllowedIPs = 0.0.0.0/0 # 所有流量走VPN。如果有客户端数据包到达,但服务端未响应 → 检查服务端配置。DNS = 8.8.8.8 # 必须设置有效DNS。# 如果输出0,编辑sysctl.conf。完整输出(服务端和客户端)# 更新服务端和客户端配置。原创 2025-03-07 13:12:57 · 481 阅读 · 0 评论 -
区块链块(Block)的技术开发总结
是存储数据的基本单元,每个区块包含交易记录,并通过哈希指针链接形成。在区块链(Blockchain)系统中,区块链跨链技术允许不同区块链互操作,如。,然后在另一条链上创建相应代币,实现。,可验证交易有效性,而不暴露交易细节。接下来,我们深入探讨。是一种哈希树结构,用于保证。在前面的部分,我们介绍了。,用于处理交易和业务逻辑。原创 2025-03-06 12:29:02 · 1374 阅读 · 0 评论 -
区块链交易详解
包括输入(Inputs)、输出(Outputs)和元数据(Metadata)。在上一部分,我们介绍了区块链交易的流程、类型、代码示例和费用计算。接下来,我们深入探讨。区块链交易(Blockchain Transaction)是指。等步骤,最终被永久记录在区块链的分布式账本上。区块链交易的安全性取决于。原创 2025-03-06 10:49:01 · 1018 阅读 · 0 评论 -
区块链里的子货币是什么,如何理解
类似于法币中的子货币(如 1 美元 = 100 美分)。由于加密货币的价值可能很高,使用子货币单位可以更方便地进行小额交易。原创 2025-03-06 10:16:02 · 573 阅读 · 0 评论