- 博客(217)
- 资源 (1)
- 收藏
- 关注
原创 Solidity——returns和return区别、命名式返回、解构式赋值
这一讲,我们介绍 Solidity 函数返回值,包括:返回多种变量,命名式返回,以及利用解构式赋值读取全部或部分返回值。这些知识点有助于我们在编写智能合约时,更灵活地处理函数返回值。
2025-07-06 22:41:24
363
原创 Solidity——pure 不消耗gas的情况、call和sendTransaction区别
是指:向区块链发起一笔真实交易(transaction),从一个地址调用一个合约函数,消耗 gas,可能改变链上状态。只要你用的是.send()或不带.call()的 await 函数调用,并且指定了,那就是发了交易(),会上链、花 gas、不直接返回结果。如果你想,我可以再写一段完整的 ethers.js 示例,对比.call和两种方式的执行行为。需要吗?
2025-07-06 22:12:58
566
原创 Solidity——什么是低级调用(low-level calls)和操作码的内联汇编
低级调用(Low-level calls)Solidity 提供了几种**“低级”函数调用方式**,用于替代标准的函数调用。这些函数更原始、更灵活,但使用不当容易出 bug(比如失败不报错、容易被 reentrancy 攻击)。内联汇编(Inline Assembly)Solidity 支持使用 Yul 或旧版本的汇编语言直接写 EVM 操作码。这可以让你:完全掌控执行逻辑做极致 gas 优化使用 Solidity 无法访问的底层功能名称是什么使用场景低级调用。
2025-07-06 22:01:37
379
原创 Solidity——什么是selfdestruct
会销毁当前合约并把余额发给指定地址,是不可逆的链上操作,慎用!如果你想我帮你写一个带 selfdestruct 的合约升级机制(配合代理合约),可以继续问我。
2025-07-06 21:51:26
313
原创 Solidity——是否所有代码都会消耗 gas、发交易是什么、
场景是否消耗 gas是否改链上状态通过call执行viewpure函数❌ 否❌ 否发交易执行viewpure函数✅ 是❌ 否发交易执行non-view函数✅ 是✅ 是(可能)memory中操作临时变量✅ 是(极少)❌ 否如果你需要,我可以演示用 Remix 分别调用view和write函数,看它们的 gas 消耗差异,是否继续?“发交易”指的是:你把一段操作请求发送到以太坊区块链上,由矿工/验证者执行并打包入区块,从而永久改变链上的状态(例如存储变量、转账、铸币等)。
2025-07-06 21:48:43
897
原创 Solidity——memory、storage、calldata 的区别
这是 Solidity 中非常核心的概念,搞清楚它们的区别有助于你写出高效、低 gas 的代码。
2025-07-06 21:44:33
375
原创 Solidity——修改状态变量注意事项和简单优化建议
操作是否消耗 gas建议连续多次对状态变量赋值✅ 多次消耗❌ 不推荐只赋值一次(初始化/构造)✅ 只消耗一次✅ 推荐函数中无效重复赋值(最终值没变)✅ 每次都算❌ 浪费如果你要进一步学习如何在部署或调用中优化 gas 成本,我可以教你如何使用Remix或 Hardhat 查看具体 gas 消耗和 storage 操作,是否需要?
2025-07-06 21:10:54
316
原创 rust所有权系统,变量用完就删,会不会影响程序的效率
问题Rust 的表现用完即删会影响效率吗?❌ 不会,反而更高效和 GC 有什么不同?无需 GC,编译期管理所有权会不会提前释放影响逻辑?编译器静态分析,确保安全所有权模型的核心优点?安全 + 高效,无运行时成本如果你感兴趣,我可以展示 Rust 的 drop 顺序、堆栈回收过程的汇编级展开。是否继续?
2025-06-29 14:43:00
415
原创 Rust结构体字段能否单独加 mut
mut修饰的是变量绑定本身,不能单独修饰结构体字段。想修改结构体字段,必须绑定结构体实例为mut。需要对某些字段单独内部可变,需用到内部可变性类型(CellRefCell等)。如果你想,我可以帮你写完整示例代码说明不同场景。好的!下面是CellRefCellMutex和RwLock的简单介绍和代码示例,帮助你理解它们的区别和使用场景。类型单线程/多线程内部可变性适用场景Cell<T>单线程是(Copy)小型简单数据类型内部修改RefCell<T>单线程是复杂类型内部可变性,运行时检查。
2025-06-29 14:19:06
494
原创 Rust所有权转移概念、let x = “123“是什么类型
栈分配的简单类型多数实现了Copy,赋值时会复制数据,原变量仍然有效。堆分配类型不实现Copy,赋值时发生所有权移动,确保内存安全。如果需要,我还可以帮你写示例代码演示这两种赋值行为,或者解释编译器背后的所有权机制。该类型的值完全存储在栈上,不涉及堆内存分配,也没有复杂的资源管理(比如文件句柄、网络连接等);该类型实现了 Rust 的Copytrait,意味着赋值或传递时是按位复制(bitwise copy),不会发生所有权转移(move)。实现了Copy。
2025-06-29 14:08:36
783
原创 Rust函数与所有权
类型传参行为是否可以继续使用原变量示例String移动(move)不可以i32等标量复制(copy)可以堆分配类型同时存在情况是否移动是否还能使用原变量struct 全是标量❌ Copy✅ 可以继续用struct 含有堆分配类型(String 等)✅ Move❌ 无法再访问如有需要,也可以强制实现Copy,前提是所有字段都必须是Copy的。是否需要我帮你写一段 struct 混合字段(标量 + String)演示 move 行为?
2025-06-29 13:53:18
329
原创 Rust标量、复合类型与自定义类型、第三方并发结构
这些类型通常在栈上保存其自身结构,但若包含如StringVec等堆分配成员,则这些成员的实际数据存储在堆上,仅其指针或元数据位于栈上。类型是否标量是否对象是否堆上是否 Copy多线程安全是否动态大小示例i32bool✅❌❌✅✅(本地)❌let x = 1;[1,2]struct❌✅✅/❌❌❌❌/✅自定义结构体Box<T>❌✅✅❌❌✅Box::new()Rc<T>❌✅✅❌。
2025-06-29 13:48:06
757
原创 Rust变量初始化赋值不写mut的问题
Rust 中let x;是合法的,只要在使用前初始化就行。但不加mut的话,只能赋值一次,不能重复修改。需要我给你展示编译器报错信息或者用 Rust Playground 来演示吗?
2025-06-29 00:21:09
235
原创 Rust宏和普通函数的区别
宏是为了解决不能用函数解决的问题,比如代码生成和语法扩展,而函数是写程序逻辑的主力。能用函数就不要用宏,除非你需要编译期的代码生成能力。需要我举更复杂的例子,比如自己实现一个my_vec!宏、或者对比println!和print_fn吗?
2025-06-29 00:10:17
412
原创 记忆力锻炼方法
记忆力锻炼的核心在于科学方法、持续训练和健康生活习惯的结合。通过重复训练、关联记忆、充足睡眠等方式,可有效提升大脑信息处理与存储能力。关键在于长期坚持,并结合多种技巧形成适合自己的记忆策略。
2025-06-28 21:57:43
447
原创 Rust代码规范之蛇形命名法和驼峰命名法
Rust 使用两种主要的命名风格:驼峰命名法(UpperCamelCase)和蛇形命名法(snake_case)。通常,类型(如结构体、枚举、特征)使用驼峰命名法,而变量、函数、方法等使用蛇形命名法。Rust 在类型级别(type-level)的构造,如结构体、枚举、特征等,倾向于使用驼峰命名法。Rust 在值级别(value-level)的构造,如变量、函数、方法等,倾向于使用蛇形命名法。总而言之,Rust 的命名规范是:类型用驼峰,变量和函数用蛇形。这种风格将每个单词的首字母大写,没有下划线分隔。
2025-06-28 21:45:03
353
原创 ethers.js express vue2 定时任务每天凌晨2点监听合约地址数据同步到Mysql整理
🔧 确保将 Infura Key、合约地址、ABI 替换为你自己的✅Transfer事件仅适用于符合 ERC721/1155 标准的 NFT 合约# 安装依赖# 启动后端# 启动前端(Vue2)如果你还想加:统计活跃地址数展示 NFT TokenId 的交易趋势接入钱包连接用 NestJS 替换 Express可以继续说,我可以帮你逐步拓展。
2025-06-26 20:29:03
269
原创 Rust——内存最快内存共享方式和触发方式
场景最快方案✅单服务/单进程是最快、最安全、最轻的选择🚀 多服务部署 / 分布式Redis pub/sub 次之🏢 企业级 / 海量并发Kafka + 分布式集群如果你在同一个程序中编写监听器 + 策略模块,直接用就是最快捷、稳健的选择。要不要我马上给你搭一个完整可运行的 Rust 示例项目(监听 → 策略判断 → 通道分发)?适合真实项目嵌入。
2025-06-26 13:05:47
336
原创 WEB3合约开发以太坊中货币单位科普
1 wei是 ETH 的最小单位,1 ether = 10¹⁸ wei,相当于货币里的“最小面值”。如果你需要我出一个合约例子演示单位转换或转账,我可以继续写。
2025-06-22 23:29:56
247
原创 WEB3测试网的apikey如何获取?以及验证合约的方法
如果你现在已经部署了一个合约,想让我帮你写验证命令和配置文件(带构造函数参数的),贴一下合约地址和构造函数,我马上帮你搞定。如需我帮你写一整套部署 + 验证模板,或调试 verify 报错,也可以贴出报错我帮你排查 🔍。点击 “Add” 或 “+ Create API Key”,起个名字,如。,它会根据你验证的网络自动区分用途。上再注册或获取 API Key,,API Key 也是一样获取!这就是你的 API Key!Sepolia 测试网验证。Goerli 测试网验证。,不需要去别的网站。
2025-06-22 14:00:39
690
1
原创 WEB3开启 Hardhat 自动验证有什么意义
开启 Hardhat 自动验证的意义是:让你的合约在区块链浏览器(如 Etherscan)上公开显示源码、函数、ABI,从而实现可读、可查、可交互。部署合约时,链上只存储字节码(EVM bytecode),别人是看不到你写的 Solidity 源码的。“验证合约”就是:向 Etherscan 等区块浏览器提交你的源码、编译器版本、构造函数参数等让 Etherscan 编译后比对字节码,确认一致验证成功后,就会公开显示你合约的源码 + 自动生成函数界面是否需要开启 Hardhat 自动验证?
2025-06-22 13:38:59
428
原创 NODE_ENV是什么东西
NODE_ENV是用于区分运行环境的变量,常用于加载不同配置、控制日志输出、优化构建结果等,是实际开发中不可或缺的工具。需要我演示一个完整的项目里如何利用NODE_ENV控制行为吗?例如根据环境加载不同数据库或中间件。
2025-06-16 12:41:44
521
原创 NodeJS缓冲区是什么东西
Buffer 是 Node.js 为了高效处理**原始数据(binary)**而引入的对象,提供了类数组方式对内存的直接操作,是文件、流、网络编程中不可缺少的工具。如果你想深入了解Buffer 的底层内存结构或高性能文件处理示例,我可以进一步补充,是否需要?
2025-06-16 12:41:33
387
原创 NodeJS的中间件是什么
中间件是构成 Node.js Web 框架(如 Express/Koa)核心机制之一,它将请求处理拆分为多个函数链式执行,使得逻辑清晰、易于复用和维护。如果你想自己写一个中间件系统(类 Express),我可以提供底层实现原理代码。是否需要?
2025-06-16 12:41:23
504
原创 NodeJS如何渲染十万条数据
方式适用场景优点缺点分页(前后端结合)页面展示、交互简单实用,性能高需要分页逻辑流式传输导出、下载大量数据节省内存、节省传输延迟不能随机跳页虚拟滚动前端大列表渲染页面不卡、体验佳实现稍复杂,需额外依赖库压缩传输大量 JSON 响应减少数据量,提升传输速度对 CPU 有少量压力如果你告诉我你是想在终端、页面、Excel 还是 API 返回十万条,我可以给你定制具体的实现方式。是否要我帮你搭一个 demo?你要展示什么推荐方式理由表格/列表/数据项带按钮虚拟列表。
2025-06-16 12:40:15
873
原创 掌握 Solidity:以太坊开发者必知的面试问题
在以太坊开发的动态领域中,Solidity 专业知识至关重要。Solidity 开发人员的面试通常包括实际的编码挑战,以评估候选人解决现实问题的能力。本文提供了一个全面的指南,涵盖了重要的面试问题,附有 Solidity 0.8.18 的示例代码、现实场景、常见陷阱和最佳实践。require比较自定义错误和带错误字符串的require在 EVM 层的编码方式。if (!自定义错误更节省 gas,因为它们在交易数据中使用的空间比require中的字符串少。
2025-06-16 12:39:40
788
原创 以太坊开发面试题
超过100道以太坊区块链开发技术岗位的面试题,附参考答案。面试题目涵盖 以太坊的基本概念、Geth客户端使用、智能合约基本概念、Solidity开发语言、去中心化 应用DApp、web3.js开发库等方面。
2025-06-16 12:39:16
601
原创 最全Solidity面试问题及答案
顺序:检查条件 → 修改状态 → 外部调用,防止重入攻击。ERC20 授权抢跑攻击使用anonymous关键字声明的事件,不存储事件签名到日志主题,节省gas但无法按事件类型过滤。自定义错误:keccak256(Error(string))[:4]+ 参数,require错误字符串:Error(string)全哈希。前者gas更省。代理合约从信标合约动态获取实现地址,允许批量升级多个代理的指向。EIP-3448定义的MetaProxy,使用最小字节码代理模式,通过CREATE2实现确定性部署地址。
2025-06-16 12:38:53
739
原创 你不需要区块链:8 种流行案例以及为什么它们不成功
这篇文章整体逻辑清晰、分析有理,大多数批评都成立,尤其是在强调“区块链不是物联网(Blockchain is not IoT)”和“不要用区块链去替代数字签名、数据库、监管机制等原本能更好解决问题的技术”这两点上,论据充分。不过,也有部分观点可以细化或补充,从中挖掘出真正“成功”的区块链应用方向。我将逐条判断其分析是否合理,并补充具有潜力的成功应用场景要素解释1. 多方协作 & 信任成本高多个机构之间缺乏信任,才需要共识机制2. 数据本身天然是数字化的。
2025-06-16 12:37:41
999
原创 UI/UX设计原则和实现方法
UI/UX 原则Node.js 实现方式一致性接口风格统一、状态码规范简洁性数据结构简明,接口字段精炼可见性实时反馈机制(WebSocket)易用性快速响应、缓存优化、接口友好用户控制允许前端灵活操作、后端逻辑可回滚(如操作历史)如果你需要具体的案例,比如:登录注册流程 UI/UX 设计 + Node.js 实现;NFT 铸造流程 UX 设计 + 后端实现;DApp 中钱包连接的 UX 优化方式 + Express 实现;我可以帮你针对这些做进一步拆解和代码演示。你想看哪一个。
2025-06-16 12:31:26
443
原创 NodeJS怎么通过集群提高NodeJS的性能
cluster模块允许你通过主进程创建多个子进程(每个子进程是一个 Node 实例),每个子进程共享同一个服务器端口,实现负载均衡和多核并发执行。每个子进程:独立运行在自己的线程中。拥有独立的事件循环、内存、V8 实例。可以与主进程通信(通过 IPC 通道)。
2025-06-15 17:40:14
416
原创 进程和线程区别、管道和套接字、共享变量、TCP三次握手,是否可以少一次握手、子进程和主进程区别和API——Nodejs
进程是房子,线程是房间”一个进程里可以有多个线程,但线程不能脱离进程单独存在。如果你在学 Node.js、Java 或 Python 并发模型,我可以分别帮你分析线程/进程的用法和适用场景。需要我进一步展开哪门语言下的实践案例?匿名管道亲缘深,命名管道通陌生;写端数据流向读,半双工最常见。如果你想知道在 Java、C/C++、Python 中怎么实现管道通信,也可以举例说明。是否需要我给出跨语言的管道实现?Socket 是个洞,进程互打通。可远程可本地,网络通信最通用。UDP socket和。
2025-06-15 16:58:23
664
原创 NodeJS中你经常会做前后端的加密,请你解释一下秘钥
秘钥是加密算法中的一个核心参数,它控制了加密或解密的方式。对称加密使用同一个密钥加解密,效率高但安全性较弱。非对称加密使用公钥和私钥配对,安全性更强,常用于认证和秘钥交换。如你还在学习前后端安全,可以继续聊这些相关概念:什么是数字签名与数字证书JWT 中签名部分是怎么构造的HTTPS 握手阶段是如何通过秘钥交换实现加密通信的。
2025-06-15 16:45:54
339
原创 Node.js 中常用的异步函数讲解、如何检测异步操作时间和事件
同步代码 > process.nextTick > Promise.then > setTimeout/setInterval/setImmediate。
2025-06-15 16:28:17
325
原创 NodeJS中老生代和新生代和垃圾回收机制
V8 引擎采用分代垃圾回收策略绝大多数对象生命周期很短,马上就会被回收少数对象会存活较长时间新生代(New Generation):用于存放新创建的对象老生代(Old Generation):用于存放存活时间较长的对象方面新生代 (New Generation)老生代 (Old Generation)作用存放新创建的短命对象存放存活时间长的对象大小小大GC 类型GC 频率高低GC 耗时短长性能影响小大。
2025-06-15 16:01:31
953
花呗0.05%日息计算
2019-01-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人