文章 课程 首页 集训营
更多
  • 视频
  • 百科图谱
  • 问答
  • 提问
  • 专栏
  • 活动
  • 文档
  • 工作
  • 集市
  • 首页
  • 文章
  • 视频
  • 课程
  • 集训营
  • 工作
    • 工作
    • 问答
    • 活动
    • 文档
    • 集市
搜索
  • 登录/注册
Tiny熊
  • 文章
  • 专栏
  • 问答
  • 视频
  • 课程
  • 集市作品
  • 活动
  • 招聘
TA的视频 TA的合集
使用 Foundry 框架开发智能合约
视频 AI 总结: 视频主要介绍了以太坊智能合约开发框架Foundry,相较于在Linux环境下的手动部署与测试,Foundry支持本地开发、AI结合编程、Git管理代码,并提供自动化测试和模拟功能。讲解了其核心工具Forge、Cast、Anvil的用法,包括项目初始化、编译、测试和部署流程,强调了使用Keystore加密存储私钥的安全性,并推荐用AI辅助操作。 关键信息: 1. Foundry是一个本地合约开发框架,支持编译、测试、部署,可结合AI编程和Git管理。 2. 使用Forge build编译、forge test测试(支持无状态和fuzz测试)、forge create/script部署。 3. Anvil可启动本地区块链节点模拟环境,提供测试账户。 4. 通过forge install可安装依赖库(如OpenZeppelin),使用Remapping简化路径。 5. 部署时推荐使用Keystore加密存储私钥,避免明文私钥暴露给AI Agent或命令行历史记录。
5
0
0
4 小时前
理解 ERC20 授权与ERC777/ERC1363 回调改进
视频 AI 总结: 本视频主要讲解 ERC20 代币转账与 ETH 转账的核心区别:ETH 转账会自动触发合约的 receive 回调,从而能记录存款;而 ERC20 转账没有回调机制,需要用户先授权(approve)再发起存款(deposit),导致两笔交易,体验差且存在安全隐患。为改善这一问题,视频介绍了 ERC777(通过注册表实现回调)和 ERC1363(提供 transferAndCall 等函数,转账后自动调用接收者回调)两种改进方案,均可实现单次调用完成存款。此外,还指出了 USDT 等非标准 ERC20 代币可能没有返回值或返回 false,造成合约调用出错,建议使用 OpenZeppelin 的 SafeTransfer 方法来处理兼容性问题。最后布置了练习:扩展 TokenBank 实现回调记录存款,以及使用 Uniswap 进行 token 交易体验授权流程。
6
0
0
4 小时前
VibeCoding: 使用 TokenBank实现 ERC20 的存取款
视频 AI 总结: 视频讲解了如何实现一个“token bank”智能合约作业。核心是让用户存入ERC20代币时,必须通过token bank合约的`deposit`方法执行,而不是直接转账。直接转账会导致token bank的代码不被执行,无法记录存款信息。因此用户需要先调用`approve`授权token bank使用其代币,然后由token bank调用`transferFrom`完成转账并记录存款。视频还演示了在Remix中的部署与调用步骤。 **关键信息:** - 直接使用ERC20的`transfer`转账到token bank,token bank的代码不会执行,无法记录存款。 - 正确流程:用户先调用`approve`授权token bank,再调用token bank的`deposit`方法,合约内部使用`transferFrom`从用户地址拉取代币。 - `transferFrom`允许一个实体(token bank)代另一个实体(用户)执行转账。 - 部署顺序:先部署MyToken,再部署TokenBank并传入MyToken地址。 - 演示中不直接授权大额(需注意精度),需先授权后调用`deposit`。
4
0
0
4 小时前
ERC20代币标准
视频 AI 总结: 视频主要讲解了以太坊开发中 ERC20 Token 标准的核心概念与实践。内容涵盖同质化资产(Token)与非同质化资产(NFT)的区别、ERC 标准与 EIP 提案的作用、ERC20 的标准接口定义(如 totalSupply、balanceOf、transfer 等),以及如何使用 OpenZeppelin 库快速实现 ERC20 Token。重点强调了 Token 与 ETH 转账的区别:ETH 余额存储在账户层,而 Token 余额存储在合约的 mapping 中;转账时目标合约的代码不会被调用,资金可能被锁死。还介绍了小数精度处理(乘以 10^18)及作业中的 token bank 实现要点(必须提供 withdraw 方法)。 关键信息: 1. ERC20 是代币标准,定义了统一的接口(name、symbol、decimals、totalSupply、balanceOf、transfer、transferFrom 等),降低沟通成本,增强互操作性。 2. EIP 是链改进提案(如 EIP-1559 修改手续费机制),由社区讨论、客户端实现;ERC 是应用层合约标准。 3. Solidity 不支持浮点数,用 uint 放大 10^18 倍表示小数(如 decimals 默认为 18)。 4. ETH 转账直接转给接收者地址,余额存在账户;Token 转账需调用合约的 transfer 方法,余额更新在合约内部的 mapping 中,目标合约不会触发 receive/fallback。 5. token bank 合约中,只有合约自身作为 msg.sender 调用 transfer 才能转出 Token,否则资金会永久锁死,必须实现 withdraw 方法。 6. 实现 Token 的核心逻辑:用 mapping 记录地址余额,转账做加减,并进行余额检查和零地址处理。
13
0
0
3 天前
ABI 与 Solidity底层调用
视频 AI 总结: 该视频深入讲解了 Solidity 中的 ABI 编码与底层调用机制,并介绍了 ERC20 相关基础知识。首先回顾了三种交易方式(普通转账、调用合约、创建合约),重点说明了调用合约时如何将函数选择器和参数编码为 ABI 数据。随后详细比较了底层调用 `call`、`delegatecall` 和 `staticcall` 的区别:`call` 切换上下文,`delegatecall` 保持当前合约上下文(常用于库和合约升级),`staticcall` 用于只读操作。此外,视频还介绍了 `library`(库)的两种使用方式(内联代码复制与委托调用)以及 `import` 语法用于代码组织。最后强调了利用 OpenZeppelin 等第三方库提高安全性和开发效率。 视频中提出的关键信息包括: 1. ABI 编码由函数选择器(函数签名哈希前4字节)和参数编码组成,用于在交易 data 中表示调用的函数。 2. 底层 `call` 允许直接传入 ABI 编码数据调用任意合约方法,类似反射机制,但需自行处理返回值。 3. `delegatecall` 不切换上下文,被调用函数的代码在当前合约存储中执行,常用于库和可升级合约模式。 4. 库(library)中的 `internal` 函数会被复制到调用合约中,而 `external/public` 函数则通过委托调用链接。 5. 鼓励使用经过社区审计的第三方库(如 OpenZeppelin)以避免重复造轮子和安全风险。
7
0
0
3 天前
VibeCoding: 合约间调用与权限控制实现
视频 AI 总结: 该视频讲解了一个智能合约编程作业:基于已有的 Bank 合约,通过接口、修饰符以及 Admin 合约实现合约间调用与权限控制。核心是让 Admin 合约成为 BigBank 的 Owner,只有 Admin 才能调用 withdraw 取款。部署后需手动转移 Owner,用户存款后必须通过 Admin 合约才能取出资金。视频还强调了 receive 函数的重要性——缺少会导致转账失败,以及资金锁死的风险。 关键信息: 1. 作业要求:在 Bank 合约基础上,利用 iBANK 接口、modify 修饰符,引入独立 Admin 合约作为 BigBank 的 Owner。 2. 部署后必须调用 transferOwnership 将 BigBank 的 Owner 转移给 Admin 合约地址。 3. 调用流程:EOA 用户 → Admin 合约 → BigBank 合约(只有 Owner 可 withdraw)。 4. 实际应用:模拟多人管理公司资金(如董事会通过合约共同管理)。 5. 代码实现要点:继承、modify 控制存款条件、Owner 转移函数。 6. 测试验证:直接调用 withdraw 会失败;通过 Admin 合约的 withdraw 才能成功取出资金。 7. 注意事项:合约接收 ETH 必须实现 receive 或 fallback 函数,否则转账失败;资金进出应对称,否则可能锁死。
5
0
0
3 天前
Solidity详解:错误处理与接口继承
视频 AI 总结: 本视频主要介绍了 Solidity 中的修改器(Modifier)、错误处理、事件、接口和继承等核心概念。视频首先解释了修改器作为代码复用的语法糖,用于条件检查(如权限控制)。接着重点讲解了 Solidity 的错误处理机制,包括 require、assert、revert 和 try-catch 的用法,强调 EVM 交易的原子性(全部成功或全部回滚),并指出只有外部调用的错误才能被捕获。随后介绍了事件(event)作为链上日志记录的作用,以及索引(indexed)字段对日志查询的优化。最后讲解了接口(interface)用于抽象函数调用,以及继承(inheritance)和抽象合约(abstract contract)在编译时的代码复用,包括 virtual、override 和 super 关键字的使用。 关键信息: 1. **修改器(Modifier)**:一种语法糖,用于代码复用,常见于权限检查(如 onlyOwner)。编译时进行代码扩展,可能增加字节码大小。 2. **错误处理原子性**:EVM 交易具有原子性,出错时所有状态回滚到最初状态(与数据库事务类似)。 3. **错误处理方法**: - **require**:用于检查外部输入条件,不满足时抛出异常。 - **assert**:用于检查内部编码错误(如数组越界、除零)。 - **revert**:可携带错误消息或自定义 error(推荐使用 error 以节省 gas)。 - **try-catch**:仅能捕获**外部调用**(如其他合约的函数调用)产生的错误;内部调用、合约不存在、out of gas(非程序指定)等错误无法被捕获。 4. **事件(Event)**:用于记录链上日志,便于外部监听。其中 `indexed` 字段会存入 topic 建立索引,非 indexed 字段存入 data。 5. **接口(Interface)**:函数声明的抽象,用于编译时的类型检查。调用时依赖具体实例的合约地址,接口与实现合约之间不需要显式继承,只要函数签名匹配即可。 6. **继承与抽象合约**:继承是编译时的代码复用,部署时只有最终派生合约存在。使用 `virtual` 标记可重写函数,`override` 表示重写,`super` 调用父合约方法。抽象合约不能部署,专为代码复用设计。
11
0
0
4 天前
Solidity 详解:函数调用与特殊函数
视频 AI 总结: 视频主要讲解了 Solidity 中合约函数调用的两种方式——内部调用和外部调用,以及特殊函数(构造函数、receive、fallback)的触发条件与用途。内部调用在同一 EVM 环境,直接用函数名;外部调用需用合约地址,可用 this 或实例调用,并可指定 value 和 gas。构造函数仅在部署时执行,链上代码不含构造函数;receive 在合约接收普通转账(无数据)时调用,消耗 2300 gas;fallback 在调用不存在的函数时触发,也可在无 receive 时处理转账,常用于代理升级模式,转发所有调用。 关键信息: 1. 内部调用直接使用函数名;外部调用必须通过合约地址(如 this 或合约实例)。 2. 外部调用时可通过 value 和 gas 指定传递的 ETH 数量和 gas 上限。 3. 构造函数只在部署时执行,链上运行时代码不含构造函数;有参数的构造函数部署交易需包含参数编码。 4. receive 函数在合约接收无附加数据的转账(普通转账)时被调用,gas 限制为 2300。 5. fallback 函数在调用不存在的函数时触发,若无 receive 也会处理转账;常用于代理合约,将所有调用转发到实现合约,实现合约升级。
6
0
0
4 天前
VibeCoing:实现 Bank 合约
视频 AI 总结: 本节课讲解了上一节的 Bank 合约作业,利用 AI 工具(Codex)快速生成了包含管理员、存款(payable)、取款(transfer/call)及前三名排序功能的合约代码。讲师重点指出了常见错误:不必存储用户余额(账户自带余额),并且 view 函数不会降低其被调用的 gas 成本(内部计算量仍计入总 gas)。最后鼓励同学自行实践并理解合约的余额管理逻辑。 关键信息: - 使用 AI 辅助编写 solidity 合约,需提供上下文(如运行环境)以确保生成独立文件。 - 合约部署时管理员由 `msg.sender` 确定。 - 存款函数通过 `payable` 接收 ETH,用 `msg.value` 获取金额并存入 mapping。 - 取款时使用 `address(recipient).transfer()`(旧写法)或更推荐 `call{value: amount}("")`(解决 gas 限制问题)。 - 合约无需额外变量记录总余额或用户余额,链上每个账户已有 balance 属性。 - 在 public 函数内部调用 view 函数仍会消耗 gas,view 仅免除交易费中的 gas 价格部分,计算量 gas 不会消失。 - 避免冗余存储(如单独记录前三名数组),尽量复用已有数据,降低链上存储成本。
9
0
0
4 天前
Solidity基础:函数与变量
视频 AI 总结: 本视频主要讲解 Solidity 的基础语法,包括值类型、引用类型、映射类型、函数定义、可见性及状态可变性。Solidity 是静态编译型高级语言,专为 EVM 设计,语法类似 C++ 和 JavaScript。通过 Remix 工具演示了函数可见性(public、private、internal、external)和状态可变性(view、pure、payable)的实际效果,并强调了整数溢出在新版本中会被自动检查并 revert。 关键信息: - Solidity 是静态编译型语言,需先编译再运行。 - 函数可见性共有 4 种,public 内外可见,private 仅合约内部,internal 合约及继承访问,external 仅外部访问。 - 状态可变性:默认修改链状态;view 只读不写;pure 纯计算;payable 可接收 ETH。 - 值类型包含 bool、整数(uint/int)和地址类型(address/address payable),整数需注意位数和溢出问题(新版本自动检查)。 - address payable 才能接收转账,transfer 仅消耗 2300 gas。 - 常量有 constant(编译时确定)和 immutable(构造函数赋值),不占用存储空间。
14
0
0
5 天前
  • ‹
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • ...
  • 48
  • 49
  • ›
Tiny熊
Tiny熊
0xd682...e8ab
贡献值: 22895 学分: 1051354
登链社区发起人 通过区块链技术让世界变得更好而尽一份力。
2288 关注 1329 粉丝
关于
关于我们
社区公约
学分规则
Github
伙伴们
DeCert
ChainTool
GCC
UpChain
合作
广告投放
发布课程
联系我们
友情链接
关注社区
Discord
Twitter
Youtube
B 站
公众号

关注不错过动态

微信群

加入技术圈子

©2026 登链社区 版权所有
粤公网安备 44049102496617号 粤ICP备17140514号 粤B2-20230927 增值电信业务经营许可证

发送私信

请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!

提醒

检测到你当前登录的账号还未绑定手机号
请绑定后再发布
去绑定
编辑封面图
封面预览

创建课程

编辑封面图
建议尺寸: 1920*1080
编辑封面图
封面预览