| timezone |
|---|
UTC+8 |
GitHub ID: leopc999
Telegram: @elegant_5T
大家好,我是高校在校生,对Web3领域的技术产品感兴趣。了解Web3一年多,熟悉一些Linux shell脚本编写,平时也在使用Python和C++来实现一些关于课题的小脚本与开源程序的二次开发。希望和大家一起在“Web3实习计划”学习进步
今天参加了实习计划的最后一次周会,到了和大家说再见的时候了。这个月真的很充实,学到了很多 Web3 的知识,结识了志同道合的朋友,一起参加了休闲黑客松。请大家记住我们 Moment-NFT 小队,Leo、Jared 和 Thomas ♥
很怀念和实习计划所有的小伙伴一起学习进步的这一个月,大家有缘再会~
- BlockSec 公司介绍:
- 公司定位与团队:致力于Web3 安全,是区块链安全服务引领者,创始团队有工业界和学术界背景,成员包括博士生、硕士生。
- 服务内容:提供全生命周期安全解决方案,包括上线前安全审计和上线后持续安全监控;平台用于攻击监控和阻断,还提供开发者工具和加密货币追踪调查平台。
- 审计方法:采用半自动化方法,内部工具辅助,人工确认;认为自动化工具在检测复杂逻辑漏洞上有局限,基于大模型检测有可能性。
- 社区贡献:提供免费工具;开源静态分析工具;输出安全事件分析文章。
- 招聘情况:招聘研究生、社招人员,岗位有安全审计和工具开发;要求有安全意识和 Web3 知识,通过两轮面试可参加内部培训;投递尽量在 9 月中之前。
- 万向区块链介绍:
- 公司历程与业务:是万向控股子公司,2015 年成立实验室,2017 年成立股份公司,专注区块链生态,为企业级和政府客户提供联盟链数字化转型解决方案,布局供应链金融、RWA 赛道。
- 活动举办:举办区块链国际周(峰会和黑客松)和香港 Web3 嘉年华。
- 岗位需求:招聘实习生和社招人员,岗位包括后端、前端、研发、产品、运营等;对实习生要求不高,有导师制;工作地点将迁至上海陆家嘴万向大厦。
- 孵化项目:主要集中在 RWA 领域,负责联盟链和跨链桥部分;研发实习生暂不出差,研究岗位可能出差。
- OneKey 公司介绍:
- 公司概况:成立于 2019 年,是全球畅销的开源硬件钱包和软件钱包品牌之一。
- 产品特点:硬件钱包可离线生成和存储私钥,保障安全;APP 注重安全体验,有签交易模理解析和诈骗网站检测功能。
- 愿景:让机构级安全触手可及,普及安全技术,保障所有用户资产安全。
- 岗位需求:招聘营销、运营、合约开发等岗位,社招和应届生均可;营销岗对外语有要求,基础交流即可;技术岗后端需求多;可远程工作,但偏好深圳实地;每年都有招聘计划。
- Arbitrum 大使计划介绍:
- 计划概况:已触及 10 个地区,有超 500 位大使,全球内容产出近 2 万份,覆盖超 6 亿;旨在通过技术和非技术贡献者建设社区,赋能大使。
- 大使工作:可进行内容创作(非技术的教育性或 Meme 内容、技术型文章)和线下活动举办;申请线下活动需提交申请表,基金会提供支援。
- 申请要求:对 Arbitrum 社区和生态有热情,能创作原创内容,了解主流协议原理;不要求是 KOL;申请后两三周内回复结果。
- 成长路线:有大使成为全职员工负责东南亚市场,为想进入基金会工作的人提供机会。
今天我们参加的休闲黑客松的 NFT 纪念奖章发布了,我看到它是遵循 ERC-1155 标准的 NFT,因而学习一下 ERC-1155 标准。
ERC-1155 是以太坊上的一种多代币标准,允许在同一个合约中同时管理多种类型的代币,包括同质化(fungible)、非同质化(non-fungible),甚至是半同质化代币(semi-fungible)。
-
在单个合约中高效管理多种资产,极大减少部署成本和复杂度。
-
支持 批量传输(batch transfers),通过一次交易处理多个 token 操作,显著节省 gas 费用。
-
增强灵活性,可以兼容 ERC-20、ERC-721 的功能,在同一合约里统一融合管理。
接口结构:
ERC-1155 标准包括三类接口:
-
IERC1155:核心接口,定义资产管理功能; -
IERC1155MetadataURI:可选扩展,提供元数据 URI; -
IERC1155Receiver:接收合约须实现此接口以支持安全转账(回调机制)。
必需函数(来源:IERC1155):
| 功能 | 函数签名 |
|---|---|
| 查询单个地址某代币余额 | balanceOf(address account, uint256 id) |
| 批量查询余额 | balanceOfBatch(address[] accounts, uint256[] ids) |
| 批准操作员管理所有代币 | setApprovalForAll(address operator, bool approved) |
| 查询是否已批准操作员 | isApprovedForAll(address account, address operator) |
| 安全转移特定 token 类型 | safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data) |
| 批量安全转移多种 token | safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data) |
| 接口支持查询 | supportsInterface(bytes4 interfaceId)(继承自 IERC165) |
必需事件:
-
TransferSingle(address operator, address from, address to, uint256 id, uint256 value) -
TransferBatch(address operator, address from, address to, uint256[] ids, uint256[] values) -
ApprovalForAll(address account, address operator, bool approved) -
URI(string value, uint256 indexed id)— 当特定 token ID 的 metadata URI 更新时触发。
-
极致的效率与节省 gas
同一笔交易可同时处理多个 token,让批量操作更迅捷、更经济。 -
功能融合,多种 token 类型合约统一管理
同时支持 fungible, non-fungible, 甚至半同质化 token,大幅简化合约结构。 -
游戏和NFT生态中的强大适配性
非常适合游戏中实现道具(可重复)与唯一物品(NFT)混合管理,整体性能提升尤为显著。 -
完善的接收机制避免资产丢失
安全转移需要接收方合约实现IERC1155Receiver,否则交易会 revert,防止资产锁死。 -
丰富的元数据支持(URI模板)
支持以{id}占位符形式的 URI 可批量生成 metadata 路径,大幅节省存储及 gas。
“ERC1155 is a powerful and flexible token standard. It lets developers implement multiple different token collections, both non-fungible and fungible.”
(Reddit)
“ERC1155 is better than ERC20 and ERC721 in multiple ways. Batch transfer… supports fungible and non-fungible tokens in the same contract… more gas efficient.”
(Reddit)
“ERC-721 might have nicer in-built stuff… but if you don’t mind handling that outside… ERC-1155 is a lot better.”
(Reddit)
另一方面也有人提醒:部分项目仍偏好 ERC-721,因其已有成熟生态和工具支持(Reddit)。
-
区块链游戏:道具、资源、特殊装备统一管理更高效。
-
数字收藏品:可发行限量 NFT,同时保留重复发行方案。
-
批量转移场合:如空投、多种 token 组合操作等。
-
统一资产管理平台:一合约实现多资产类型,便于维护与更新。
| 标准 | 类型 | 核心功能 | 优势 | 适用场景 |
|---|---|---|---|---|
| ERC-20 | 同质化 token | 转账、授权、查询余额 | 简单、广泛支持 | 货币、稳定币等 |
| ERC-721 | 非同质化 token | 单个 NFT 唯一标识管理 | 独一无二,生态成熟 | 艺术品、单独收藏品 |
| ERC-1155 | 多代币标准 | 同时管理多类型 token、批量操作 | 高效、灵活、结构简单 | 游戏、收藏、批量转移等 |
- 投递前准备:
- 深入调研岗位:明确求职方向、行业、公司和团队,了解项目产品团队、岗位要求和未来发展可能性,掌握关键技能需求,通过各种渠道获得真实评价。
- 建立联系与贡献:提前在开源项目、社区等建立联系,做出实际贡献,增加获得工作机会的概率。
- 简历准备:排版要注重细节,可套用专业模板,突出卖点和特长,内容要真实有把握,针对岗位列举技能,避免模糊描述,最好提供实际数据或证据。
- 常见问题解答:
- 经验与学历排序:转行找实习较难,可通过社区打磨经验,有工作经验者若转行找实习,建议突出工作经验;学生找实习可将教育经历放前面。
- 海投与精准投:建议精准投,精准调研目标岗位,定制简历,提高获得工作的概率。
- 技术栈选择:深耕主线技术,做到比竞争者更深入,聚焦特定方向。
- 面试流程及建议:
- 一般流程:包括电话或远程面试、在线作业或带回家任务、深度讨论作业和专业知识技能面试,部分公司有试岗和行为面试。
- 面试建议:默认打开摄像头,注意面部表情、肢体动作和精神面貌,确保网络稳定,提前测试设备,表现得逻辑清晰、机智主动,注意穿着打扮,提前准备有深度的问题提问。
- 入职后建议:
- 靠谱习惯:做到可预期、可沟通、可复盘,及时暴露问题,预估时间留有余地,避免出现人间蒸发、明日复明日、闷头工作等不靠谱表现。
- 日报制度:实习生可每天写日报,展示积极态度。
- Web3 行业特点:
- 远程办公:文化普遍,但可能缺少人际交流,需适应。
- 国际化:英语重要,自驱力和主动性强的人机会多。
- 持续学习:行业变化快,需不断学习。
- 学历要求:相对不看重学历,更看重实践经验。
- 薪酬待遇:形式多样,可能有口头承诺和加密货币支付,需谨慎衡量。
- WEB3行业发展阶段:
- 草莽时期(早期 - 2014 年):最早接触挖矿的是网吧打游戏、做代练的人群和技术大佬。当时挖到比特币后在淘宝几块钱售卖。
- 以太坊阶段(2015 - 2020 年):以太坊上主网后,因造富效应吸引更多人进入。虽行业生态开始繁荣,但优秀人才较少,招人要求相对较低。
- 出圈阶段(2020 - 至今):2020 年 DeFi Summer 和 2021 - 2022 年 NFT 火热,吸引大学生、炒鞋炒卡人群等进入。随着高素质人才进场,行业逐步完善,吸引更多 Web2 人员转行。
- Web3 求职现状:
- 远程工作普遍:因合规和成本考虑,很多公司不在国内设办公室,允许远程工作,工作环境接近外企。
- 人才供给不足:大量人才聚集在外包行业,多数人对 web3 行业存在信息差,不敢轻易进入。
- 求职渠道多样:2022 - 2023 年开始出现招聘产品,也可通过 Twitter、LinkedIn、公司官网、行业大会等渠道求职。
- Web3 用人特征:
- 团队规模小:多数团队十几人,招聘需求少,招聘方式较挑剔,但找工作相对 Web2 更简单。
- 面向海外用户:业务模式多面向海外用户,建议新人多玩 Twitter、Discord、Telegram 等平台。
- 海外注册为主:公司主体多在海外注册,部分团队在内地有办公室。
- 招聘要求提高:需要 985、211 或一本以上学历,有互联网行业背景者有优势,自学能力要求高,区块链行业背景不是必选项。
- 不同岗位能力要求:
- 开发岗:需先学 Solidity 语言,Rust 语言稀缺高薪,新公链出现有学习和获利机会。
- 运营和市场岗:面向海外用户,需熟悉 Twitter 等渠道,有口语能力要求,要积极参与行业活动和链上玩法。
- 产品和投研岗:类似 Web2 传统岗位,适合喜欢研究链上数据的人,金融背景者有优势。
- 问题解答:
- 甄别出海岗位:靠交叉验证,可咨询行业老人、查官网、利用 LinkedIn 和链捕手工具等,但行业本身缺乏合规性。
- 招聘平台回复率低:原因包括岗位未关闭、HR 兼职不专业、假招人宣传等,建议多渠道求职。
- APP 问题:安卓系统无搜索和筛选功能,可加微信群获取最新职位。
- 其他问题:如交易所和项目方前途选择因人而异;找 mod 岗位可去 Discord 私信管理人员;媒体岗位适合新人积累经验等。
今天参加了休闲黑客松,我们的项目叫做 Moment-NFT,玩得很开心,感谢大家的支持!
https://github.com/Thomas-YHS/AI-pixel-NFT
-
活动介绍:
- 活动性质:由 ETHPanda 与 LXDAO 联合主办,是一场专为 Web3 初学者和爱好者打造的休闲黑客松活动。
- 活动特色:注重轻量运营、低成本商业化创意和用户体验,开源公共产品,灵感源于各种黑客松,参与者可借助 AI 工具解决代码难题。
- 活动目标:让参与者在轻松氛围中完成首个 Dapp,迈出 Web3 第一步,期待大家贡献有趣项目。
- 时间安排:Open Day 后正式开始构建,期待 Demo day 展示。
- 评审流程:评估标准发布在 GitHub,参与项目获 NFT 荣誉勋章。
-
赞助商发言:
- 组织介绍:Blockchain for good alliance 去年4月由 Bybit 发起,是长期协作非营利倡议,目标是用区块链技术解决现实问题,助力社会公益。
- 赞助目的:为黑客松增添区块链公益元素,提供多样资源支持。
- 主要工作:包括赞助黑客松、内部孵化项目、设立联合基金和举办年度活动。
- 评分规则:从社会影响、技术实施、创新、可持续性和可扩展性以及用户体验五方面评分。
- 后续支持:获胜项目有机会进入最终黑客松,入选项目可获孵化支持,如无股权赠款、全球导师网络、联合营销等。
-
嘉宾分享:
- 项目介绍:Bruce 老师分享 LXDAO 的 Fair Sharing 项目,是去中心化协作的公平分配记录项目,成员登记贡献、投票验证后获取 Token,按贡献分配收益。
- 需求挖掘:源于良心道早期成员合作时资金分配和贡献量化难题,旨在解决公平性、证明和自动化问题。
- 设计流程:包括技术架构设计、画架构图、数据库结构和 API 设计、产品界面设计等,设计需经评审。
- 设计原则:遵循隐私、安全、抗审查三大原则,以及不可变、去中心化治理、开放访问、全球协作、持续迭代五大属性。
-
创意盲盒环节:
- 规则说明:分享者用三个字描述创意,观众猜,第一个猜对者获盲盒奖品。
- 部分创意:有涉及积分、游戏化、博弈,与个人贡献和团队荣誉相关的项目;链上的 OnlyFans,含打赏、舔狗经济元素的项目;与老师有关的项目。
分享了 Web3 远程办公的重要性、挑战、工具、效率提升方法,以及数字游民的生活体验、价值观思考等内容。
- Web3 远程办公的重要性:
- 团队分布特性:Web3 项目团队成员通常分布在各个国家,类似外企,无固定工作场所,如一个项目可能有中国程序员、欧洲合规人员、美国市场人员等。
- 远程模式普遍:远程办公在 Web3 非常重要,去中心化组织和开源项目普遍采用远程模式及异步协作。
- Web3 远程办公的挑战:
- 跨时区协作:不同国家存在时差,如中美相差 8 小时,需要全团队做好时间安排,以实现 24 小时团队运转。
- 异步沟通难题:可能出现自己上班时团队成员还在睡觉或已下班的情况,导致沟通成本高、时间拉长。
- 社区文化建设困难:受距离、时区等因素影响,社区文化建设相对困难。
- 安全性要求高:Web3 中钱包、代码库等安全需严格保护和脱敏处理。
- Web3 远程办公的核心工具:
- 代码协作平台:GitHub 是主流代码协作平台,有众多开源项目;GitLab 与 GitHub 相似,可在 GitHub 提交代码出现问题时使用。
- 沟通软件:Discord 和 Telegram 在 Web3 很受欢迎,运营向同学应熟悉,Telegram 有时比微信好用。
- 文档协作工具:Notion 可作为团队协作工具,清晰追踪任务、安排和负责人,也可作为个人学习文档输出工具。
- 表格收集工具:Tally 可用于日常表格收集,还可进行投票,可连接钱包使用。
- Web3 远程办公的效率提升:
- 明确工作时间:从线下转线上办公,易从 8 小时工作制变成 24 小时工作,需明确工作和休息时间,超出工作时间可选择不回消息或延后处理任务。
- 使用任务管理器:Linear 更偏向产品管理,可与 GitHub 直接联动,适合产品端同学。
- 时间分块工作:理解同事集中工作时间段,避免打断其注意力,自己负责的事情负责到底。
- 保持上班状态:尽量保持适当工作时间,避免颠倒时差,可使用日历安排工作。
- Web3 远程办公的沟通方式:
- 以文档和 PR 为核心:工作阶段提交清晰文档,方便同事接管工作。
- 定期同步会议:每周举行周会制定工作内容,站会可通过玩游戏增加团队默契和凝聚力。
- 周会模板议程:包括以太坊最新动态追踪、核心数据 review、上周工作回顾等。
- Web3 远程办公的心理健康:
- 关注心理状态:远程办公可能导致无人交流,引发抑郁等心理问题,需关注心理健康。
- 调整心态方法:可多与朋友见面,调整心态。
- Web3 工作的其他方面:
- 岗位薪资情况:Web3 薪资比 Web2 多一些,技术岗位薪资较高,运营和 BD 岗位可身兼数职拿多份薪水。
- 岗位适应性:居家办公对 i 人是天堂,对 e 人较难受;BD 类工作受地域限制小,但运营工作量大。
- 工作机会获取:可海投简历、参加线下活动,勇于尝试面试。
- 数字游民的生活体验:
- 个人经历分享:20 岁的分享者休学一年,游历 17 个国家,在 Web3 工作赚钱支持旅行。
- 推荐地点:推荐清迈和巴厘岛,清迈可学泰拳、考驾照、爬山、做公益等。
- 数字游民的价值观思考:
- 体验多元价值观:做数字游民可体验不同国家的价值观冲突,跳出东亚文化圈,发现其他国家不太“卷”。
- 思考工作与生活:通过了解不同国家人们的工作和生活状态,思考自身工作和生活,避免焦虑和内耗。
- 数字游民的连接平台:
- 国内平台:推荐小红书、NCC 游牧岛等,可找到数字游民相关聚集点。
- 国际平台:推荐 Facebook,可找到当地有趣活动。
- 旅行安全与国家选择:
- 参考旅游保险:可通过国际旅游保险未承保的国家,尽量避免前往不安全地区。
- 客观看待国家:不要因个别国家的负面事件而歧视该国人民,每个国家都有其问题和优点。
- 开发者关系岗位介绍:
- 岗位要求:开发者关系岗位需懂开发、运营、产品,运营开发者社区,对接 b 端和 c 端。
- 工作内容示例:如服务开发者接入公链 SDK,参加黑客松寻找有意义项目等。
- 产品概念及业务逻辑:
- 产品开发流程:做产品需进行竞品分析,撰写 PRD 文档,交给开发按照文档开发,开发完后交给运营。
- 职业选择思考:学明白业务逻辑后,有想法有勇气可创业,喜欢现有工作可提升业务能力。
-
定义(实用方向):DApp 是指在区块链上运行、其关键状态或业务逻辑不依赖单一中心化服务器的应用。核心是链上读写(查询链上状态与提交交易)。
-
去中心化程度:完全去中心化罕见——需分别评估前端、后端、存储是否可去中心化。常见形态:
- 简单型:中心化前端 + 链交互(轻量 NFT 应用);
- 混合型:前端 + 常规后端 + 链交互(多数 DeFi 与复杂 DApp);
- 极端去中心化型:前端托管于 IPFS,后端尽量链上化(实现高度去中心化)。
-
分层结构:前端(UI) / 后端服务 / 区块链(智能合约) / 外部服务(RPC、IPFS、索引、预言机、区块浏览器)。
-
关键组件与作用:
- RPC 节点服务(Infura、Alchemy 等):提供链上读写 API;
- IPFS:用于存储图片与 metadata,减少链上存储成本;
- 索引服务(The Graph 或自建):将链上事件/交易打包进数据库、便于查询;
- 预言机(Chainlink 等):为链上合约提供链外数据;
- 区块浏览器(Etherscan 等):查看交易与合约详情。
-
资源准备:
- 将图片与 Metadata 上传到 IPFS(或中心化存储,根据需求权衡);
- 准备测试钱包并在测试网(如 Sepolia)获取测试币;
- 获取区块浏览器或 RPC 服务的 API key(如 Etherscan、Infura)。
-
合约开发与部署:
- 推荐开发框架:Foundry;
- 合约标准:ERC-721(关注
tokenURI接口、safeMint/mint/transferFrom等); - 部署注意:配置正确的 RPC 节点地址、私钥管理与 gas 设置,进行充分单元与集成测试。
-
前端集成:
- 钱包接入:使用 MetaMask 或其它钱包,封装 Web3 provider;
- ABI 导入:前端引入合约 ABI 与合约地址;
- 交互逻辑:Mint 按钮触发写操作(合约调用),使用常见库或 hook(如 wagmi)简化读写逻辑;
- UX 考虑:交易等待、链切换提示、错误处理与用户反馈。
- 开发与测试:Foundry(合约开发/测试/部署)、Remix(快速调试)。
- 存储与索引:IPFS(去中心化存储)、The Graph(索引)。
- 基础设施:Infura / Alchemy(RPC)、Etherscan(区块浏览器 API)。
- 前端库:ethers.js、web3.js、wagmi。
- MetaMask 的角色:属于钱包/客户端基础设施,负责签名与发送交易;
- 前端可否直接与钱包交互:可以,通过 provider 请求签名与发送交易;
- AI 辅助开发:可提高效率,但不要直接信任未审计的合约代码;
- 职业发展建议:Web3 倾向复合型人才,掌握前端(JS/TS)、合约基础、安全意识更易胜任相关岗位。
- 推荐阅读项目源码:Uniswap(理解生产级合约与架构);
- 强调合约安全:上线前尽可能做充分测试与代码审计(至少进行严格的单元测试与简单的审计检查)。
此类工具主要用于开发过程中快速、本地化地测试智能合约,特点在于“轻量快速模拟”:
- 是一个本地 EVM 节点,类似于 Ganache 和 Hardhat Network,但用 Rust 编写,具备高性能特点。
- 默认设置下,提交事务立即出块;也支持定时出块、按需出块等模式,非常灵活。
- 一个经典的轻量化本地测试链,有 GUI 和 CLI 版本,适合快速部署和调试智能合约。
- 无需挖矿过程,几乎瞬间处理交易,适合合约开发和测试。
- 但功能相对简单,适合入门或小规模测试项目。
- JavaScript/TypeScript 环境中的内置本地开发网络,功能丰富、插件生态完善。
- 与 Ganache 相比,对复杂项目支持更好;一些开发者反映运行速度略慢。
| 特性 | Anvil | Ganache | Hardhat Network |
|---|---|---|---|
| 语言 | Rust(高性能) | JavaScript | JavaScript/TS |
| 出块方式 | 自动 / 定时 / 手动 | 自动 | 自动(可配置) |
| 性能 | 极高 | 快速 | 较快,但 JS 环境略慢 |
| 可扩展性 | 程序化控制强 | 简单易用 | 插件丰富、调试工具完善 |
| 主要用途 | 快速测试,性能敏感 | 入门级开发测试 | 中大型项目开发与测试 |
这类方式通过 Docker 容器运行完整的共识层和执行层客户端(如 Geth、Lighthouse、Teku),搭建接近真实网络的本地测试环境。
- Kurtosis 框架 可以帮助你在本地用 Docker 快速配置一个完整的私有以太坊测试网,包含 EL 和 CL 客户端,还可以模拟多个节点、定制共识参数。
- 真实模拟主网结构,包括共识机制、验证者、最终性等,不限于合约行为,还可测试协议层面功能。
- 高度可配置,适合测试多节点交互、协议升级、跨客户端兼容性等高级场景。
- 需要更多资源和配置,启动成本和复杂度显著高于简单模拟工具。
| 方面 | 模拟工具(Anvil/Ganache/Hardhat) | Docker + CL/EL 客户端(如 Kurtosis) |
|---|---|---|
| 部署速度 | 快速启动,少量配置 | 较慢,需要编写配置、Docker 启动 |
| 模拟程度 | 合约逻辑测试为主 | 协议层、共识、多个客户端交互 |
| 场景适用 | 单机合约开发、快速迭代 | 多节点网络测试、协议开发、分布式场景 |
| 学习成本 | 低 → 中等 | 中等 → 高 |
| 资源占用 | 极少 | 显著(多个容器、日志、状态同步) |
-
开发智能合约、写单元测试、快速迭代建议选用 Anvil/Ganache/Hardhat Network:
- 如需要快速测试交易逻辑、模拟 fork,Anvil(Rust 性能强)是优秀选择;Hardhat 提供丰富生态;Ganache 简单易上手。
-
如在做协议层开发、升级测试、跨客户端兼容调测, 或者使用多节点环境测试消息传播、finality 等,则建议使用 Docker + CL/EL 模式(如通过 Kurtosis)来搭建更接近真实的本地以太坊网络。
总结:模拟节点偏向“快速、合约级、开发调试”;Docker 全栈节点偏向“真实、协议级、网络行为模拟”。
ERC721 是以太坊上的非同质化代币(NFT)标准,定义了每个代币的唯一性。每个 ERC721 代币都有一个独特的标识符(token ID),用于表示一个独特的资产,比如艺术作品、游戏道具等。
ERC721 标准确保了不同项目发行的 NFT 能在以太坊生态中兼容,钱包、市场和其他平台都可以统一支持这些代币的转移和交互。
-
balanceOf(address _owner) - 返回特定地址拥有的 NFT 数量
function balanceOf(address _owner) public view returns (uint256 balance);
-
ownerOf(uint256 _tokenId) - 返回指定
tokenId的拥有者地址function ownerOf(uint256 _tokenId) public view returns (address owner);
-
safeTransferFrom(address _from, address _to, uint256 _tokenId) - 安全转移
tokenId所代表的 NFTfunction safeTransferFrom(address _from, address _to, uint256 _tokenId) public;
-
transferFrom(address _from, address _to, uint256 _tokenId) - 非安全转移
tokenId所代表的 NFTfunction transferFrom(address _from, address _to, uint256 _tokenId) public;
-
approve(address _to, uint256 _tokenId) - 允许
to地址管理特定tokenId的 NFTfunction approve(address _to, uint256 _tokenId) public;
-
setApprovalForAll(address _operator, bool _approved) - 允许
operator地址管理当前用户所有的 NFTfunction setApprovalForAll(address _operator, bool _approved) public;
-
getApproved(uint256 _tokenId) - 获取
tokenId被批准的地址function getApproved(uint256 _tokenId) public view returns (address operator);
-
isApprovedForAll(address _owner, address _operator) - 判断
operator是否被授权管理owner的所有 NFTfunction isApprovedForAll(address _owner, address _operator) public view returns (bool);
-
Transfer - 当 NFT 转移时触发
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
-
Approval - 当授权某个地址转移 NFT 时触发
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
-
ApprovalForAll - 当授权或撤销授权某个地址管理所有 NFT 时触发
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
- 数字艺术:每个艺术作品都对应一个独特的 NFT。
- 游戏道具:如游戏内皮肤、装备等。
- 收藏品:如虚拟卡片、纪念品等。
- 房地产:虚拟世界中的土地、房产代币化。
ERC4626 是一种标准接口,定义了通过存入和提取资产的方式来与金库(Vault)交互。它旨在为资产管理协议(例如存款协议、借贷协议、流动性池等)提供统一标准,允许用户通过相同的接口存取资产并获得相应的收益。
ERC4626 主要用于提供更高效、标准化的资产存储方式,尤其是集中资产管理系统的标准化协议。
-
totalSupply():返回金库中持有的总份额。
function totalSupply() external view returns (uint256);
-
balanceOf(address account):返回特定地址的金库份额。
function balanceOf(address account) external view returns (uint256);
-
deposit(uint256 assets, address receiver):向金库存入资产并获取份额。
function deposit(uint256 assets, address receiver) external returns (uint256 shares);
-
withdraw(uint256 assets, address receiver, address owner):从金库提取资产并返回份额。
function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares);
-
convertToShares(uint256 assets):将存入的资产转换为份额。
function convertToShares(uint256 assets) external view returns (uint256);
-
convertToAssets(uint256 shares):将份额转换为资产。
function convertToAssets(uint256 shares) external view returns (uint256);
-
Deposit:当用户存入资产时触发。
event Deposit(address indexed sender, address indexed receiver, uint256 assets, uint256 shares);
-
Withdraw:当用户提取资产时触发。
event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares);
- DeFi 存款池:用户存入资产,获得相应的份额,并能通过 ERC4626 标准提取资产。
- 借贷协议:如 Compound 和 Aave,借贷资产都可以通过 ERC4626 进行管理。
- 流动性池:支持 LP(流动性提供者)存入流动性资产并通过标准化方式提取。
本次 Space 讨论了 Web3 职场的多个方面,包括术语学习、职场适应、项目筛选、技能提升、职业规划等,还介绍了实习计划的相关活动。
- Web3 术语学习:
- 学习工具与资料:可参考实习计划手册,利用 Defilama 网站,该网站分类好且对术语有简单描述;还有 CoinMarketCap 等平台会收录正规项目信息。
- 学习方法:多玩 Web3 应用、活跃于社区,可在一到两周掌握基本词汇;也可根据领域分类,依据大纲找资料串联知识,再深入学习额外材料。
- Web3 职场适应:
- 首月成长要点:保持真诚,积极请教解决问题;努力思考解决问题的途径;保持求知心和好奇心,关注新鲜项目和社区动态。
- 零经验转行建议:无需过度包装,保持真诚,可适当提及项目经历并稍作增色。
- Web3 与传统职场对比:
- 区别:Web3 远程工作较多,薪资发放形式多样,可能有代币激励,更扁平化,无明确上下级关系。
- 优劣势:优势是更自由、可能节税、融资机会多;劣势是生活与工作融合,对个人主动性要求高,远程办公对 E 人不友好。
- 工资发放与纠纷处理:
- 有合同情况:走劳动仲裁,流程与普通公司相同。
- 发 U 情况:在国内不受劳动法保护,延迟发放可先停止工作等待;签合同尽量选择以法币为主的劳务合同。
- 靠谱项目筛选:
- 基础判断:查看推特、官网、TG 群或 Discord 群是否齐全,粉丝量和社群参与度情况;可借助 RootData 等平台判断是否刷粉。
- 深入了解:查看项目白皮书、产品文档,判断是否完善;与 HR 沟通,了解项目情况;观察社区讨论内容,避免多级返佣、撸空投等项目。
- 远程协作与沟通技巧:
- 协作技巧:先鼓励再指出问题,避免情绪对抗;与老外同事沟通直接说事情,注重在时间节点完成任务。
- 文化差异应对:直接交代事情,面向事情完成工作。
- 新项目上手与技能提升:
- 上手工具:基础协作工具如 Notion、谷歌文档;不同 DAO 管理可能涉及链上分配协议。
- 技能提升:前三年提升专业度,3 - 5 年思考技术在项目中的角色和优化方法。
- 职业规划建议:
- 初期选择:新人先确定感兴趣或擅长的领域深耕,再考虑拓展其他方向。
- 后续发展:根据自身成长情况和项目资源决定是否换公司或赛道。
- 初级岗位选择:
- 运营岗:可从社区运营开始,了解项目受众和所需技能。
- 技术岗:根据自身技能匹配岗位,入职后先锻炼基础能力,如代码编写、文档撰写等。
- 实习计划活动介绍:
- 休闲黑客松:主题是“My first DApp”,8 月 22 日晚 8 点开始,8 月 24 日下午 6 点结束,内容发布在技术分流微信群,可通过 GitHub 链接进入主页。
- 互动问答:明天在大群开展关于 Web3 和 DApp 的知识问答。
-
核心架构:
- 前端 UI:使用 HTML/CSS/JS(如 React、Vue),集成钱包(如 MetaMask)用于身份验证和签名交易。
- 智能合约:部署在区块链上的业务逻辑,通常用 Solidity 编写、在 EVM 上运行。
- 数据检索器(Indexer):监听合约事件(如 NFT 的
Transfer),将数据写入传统数据库(如 PostgreSQL),供前端查询展示。 - 去中心化存储:如 IPFS 或 Arweave,存储非结构化数据(如图片),增强数据持久性和去中心化特性。
-
开发流程阶段:
- 需求分析与规划:明确应用功能、选择区块链平台(如以太坊、Solana 等)、UX 设计。
- 智能合约开发:编写 Solidity,编写测试用例,并进行安全审计和优化。
- 检索器开发:确定所需数据,使用 TypeScript 和框架(如 ponder、subgraph)开发事件抓取逻辑,部署运维。
- 前端开发:接入钱包,展示链上数据、签署和发送交易等。
- 区块链交互:使用现代库如 Viem、Ethers.js、Wagmi 进行读取与写入操作。
- 部署与上线:使用 Hardhat 或 Foundry 部署合约到测试网或主网;前端可部署到 IPFS 或 Vercel 等;上线运营,继续维护。
-
基础环境:Node.js(建议通过 nvm 管理)、npm 或 yarn、Git。
-
本地链搭建方式:
- Foundry(Rust 实现,速度快):工具包括
forge、anvil、cast,支持构建、测试、调试和部署。 - Hardhat(现代以太坊开发框架):支持快速创建示例项目、启动本地节点、部署脚本等。
- Foundry(Rust 实现,速度快):工具包括
-
前端与钱包交互工具:推荐使用 MetaMask,配合 Viem 和 Wagmi 进行智能合约交互。
-
其它辅助工具:Remix IDE(适合快速测试)、OpenZeppelin 库、Chainlink 预言机集成等。
-
语言特性:
- 静态类型、支持继承、库、复杂数据结构(映射、结构体、枚举等)。
- 支持版本声明、可见性修饰符、状态修饰符(如
public、view、pure、payable)。
-
合约结构:包括状态变量、构造函数、函数组件(注释、状态机逻辑、事件驱动、模块化设计)。
-
继承与重写:支持多继承与
virtual/override。 -
接口与抽象合约:通过
interface与abstract contract定义规范。 -
事件机制:合约操作中可触发事件,前端与检索器可监听以构建交互体验或索引数据。
-
常见攻击与防护:
- 重入攻击(Reentrancy):建议采用 Check–Effects–Interactions(先更新状态再外部调用)和
ReentrancyGuard。 - 访问控制:使用
onlyOwner或 OpenZeppelin 的AccessControl防止未授权行为。 - 整数溢出:Solidity 0.8+ 内置检查;老版本可用 SafeMath 库。
- 预言机操控:建议使用 Chainlink 等可信预言机、多源验证、防止单源操纵。
- 未初始化代理问题:注意代理模式下初始化函数的安全问题。
- 前置交易/三明治攻击:需采用防滑点、TWAP 等策略保护交易。
- 重入攻击(Reentrancy):建议采用 Check–Effects–Interactions(先更新状态再外部调用)和
-
Gas 优化技巧:
- 减少写入 Storage,优先使用 Memory 缓存。
- 使用 Bit Packing 压缩多个变量节省空间。
- 优化循环,缓存
arr.length,减少重复读取开销。 - 对外调用函数可以使用
external替代public提升效率。
-
审计流程:
- 静态分析(如 Slither、MythX)
- 动态测试(Fuzzing / Property testing,Foundry 支持)
- 人工评审
- 输出审计报告([Web3 实习手册][1])。
-
协作规范:
- Git 分支策略(main / develop / feature / fix / release)
- 提交消息规范(如 feat、fix、docs 等)
- PR 流程与代码审核清单。
-
项目描述:实现一个链上留言板,用户可记录留言,留言被存储并可查询。
-
合约结构:
mapping(address => string[]) public messages; event NewMessage(address indexed sender, string message); constructor() { … emit NewMessage(…); } function leaveMessage(string memory _msg) public { … emit NewMessage(_msg); } function getMessage(address user, uint256 index) public view returns (…) { … } function getMessageCount(address user) public view returns (…) { … }
-
开发流程:
- 使用 Remix IDE 编写、编译、部署合约。
- 本地选择 JavaScript VM 或连接 MetaMask 到测试网络部署。
- 前端通过 Web3.js 或现代库连接钱包、实例化合约、交互调用(
send()与call())。
- 账户模型:包括 EOA(Externally Owned Account)与合约账户;状态字段如 nonce、balance 等不同。
- Gas 机制:概念包括 Gas、Gas Limit、Base Fee、Priority Fee、Max Fee 等,EIP-1559 机制引入基础费和小费结构。
- 交易生命周期:签名构造 → 广播 mempool → 打包执行 → 区块确认 → Finality(PoS 下大约 12 分钟或更多确认)。
- 测试网部署:推荐使用 Sepolia 或 Holesky 测试网;领取测试币后部署并通过 Etherscan 验证合约及事件。
- 依赖管理:建议使用
soldeer进行依赖管理,它类似npm包管理,能锁定依赖的版本和哈希,避免供应链攻击。 - 架构对比:对比 V4 和项目自身架构,V4 用特定依赖管理,项目用
soldeer;V4 有remapping.txt,项目写在配置文件中。 - 合约目录介绍:
lib目录:存放 Uni V4 依赖项,现代方法用soldeer管理依赖。test目录:包含 Uni V3 代码,V4 有等效性测试证明与 V3 在核心逻辑上一致;但 V3 和 V4 编译版本冲突,项目采用部署二进制合约方式解决。
- 合约部署与 FFI 调用:
- 合约部署:通过特定指令获取 V4 编译后的字节码,用专门部署器,结合构造器参数和内联汇编进行部署,部署时需跳过字节码长度部分并给合约发钱,同时要配置文件读写权限。
- FFI 调用:用于调用外部非 Solidity 代码,如 JS 和 Python 代码,可判断 Solidity 输出与预期数学结果是否一致,但会拉低合约运行速度,需特殊配置。
-
组合大于继承:现代编程提倡组合大于继承,V4 合约核心模块较少通过继承实现,常用用户自定义类型和运算符重载优化代码开发体验,自定义类型在编译和外部调用时会还原成底层类型。
-
library使用:library有两种调用方式,含internal或private函数的会编译到合约里,含public函数的会单独部署,library可对合约状态做读写,可通过内联汇编优化 gas 消耗。 -
现代合约特性:
- 不写
view函数:正式项目为节省合约体积,不写public状态变量避免自动生成view函数,通过export函数读存储槽内容获取状态。 - 单体架构:V4 通过 Mapping 实现单体合约,优化链式兑换的 gas 消耗。
- Delta 机制:可做 n 笔操作后统一清算,抵消资产和负债,优化交易流程。
- 终局原子性:类似 Flash loan 拓展,要求合约交易结束时账平,Uni 和项目都有相关机制,可实现 call data 不进内存的 gas 优化。
- 不写
-
合约审计相关:
- 审计方式:项目审计由外部审计公司进行,通过 Uni 官方平台汇集审计公司报价,Uni 基金会报销审计资金。
- 审计关注点:选择审计公司时关注其与项目的相似度和附加服务,如形式化证明;bug bounty 是按月付费的附加服务。
-
学习与职业相关:
- 学习路线:建议先写 Erc20 合约,再看 Uniswap V2 或 V3、Safe 合约,借贷项目可看 Morpho 合约。
- 入门标准:读懂 V4 的非数据库部分算入门,不同项目有不同要求。
- 内联汇编学习:通过项目阅读学习,可尝试等效替换代码,参考
Solady库的优化技巧。
本次会议分享了本地搭建区块链网络,主要是快速启动以太坊测试网络。
- 不同视角理解:从开发者看,以太坊是运行智能合约的区块链平台,可调用已有合约搭建应用;从网络角度,是庞大抗审查的去中心化网络;从用户角度,是完整经济系统,用户可找到对应角色参与运行。
- 发展前景:以太坊发展前景好,承载重要角色,能改变人类协作和去中心化网络模式。
- 以太坊网络架构演变:
- 升级变更:2015年诞生时架构与现在不同,后经过“The merge”升级,共识方式从 PoW 驱动变为 PoS 驱动,能源消耗大幅降低,通过质押以太币保证网络安全。
- 架构变化:升级前,区块产生、P2P 网络、状态数据库、EVM 等都在执行层完成,包括共识过程;升级后,共识机制从执行层分离成共识层,两层通过 Engine API 通信,执行层需共识层驱动,还出现了验证者客户端。
- 质押模式:
- 两种模式:以太坊网络有托管质押和独立质押两种模式。托管质押如将币质押到 Lido,由其找供应商运行验证者,用户拿收益;独立质押是用自己私钥管理资金。
- 优缺点:托管质押简单,不牺牲资金流动性,但无法控制资金,有被攻击风险;独立质押可完全管理资金,但有较高技术和硬件成本。目前多数用户选择可信赖的托管质押供应商。
- 网络规模与节点多样性:
- 网络规模:当前活跃验证者接近 110 万,接近协议层设计极限,总质押以太币超 3500 万,占以太坊发行量超 1/4。
- 节点多样性:早期以太坊主要靠 Geth 客户端,现在执行层和共识层都出现约三种主流客户端,比例趋于 33%,较健康。
- 本地搭建原因及优势:
- 原因:开发阶段在以太坊主网或测试网部署合约成本高,测试网币难获取,本地搭建测试网可快速完成程序调试和开发,后续再到公开测试网测试。
- 优势:模拟以太坊主网运行机制,流程与线上基本一致,可加深对网络的了解,本地可无限制使用,避免公开 RPC 收费问题。
- 实操软件及搭建过程:
- 软件介绍:使用 Docker 和 Kurtosis 软件,Kurtosis 可将以太坊或区块链镜像组合成可部署形式,方便创建测试网或开发环境,还使用 ETHPandaops 提供的包。
- 搭建配置:最简配置用 Geth 作执行层客户端,Lighthouse 作共识层客户端,设置节点数量和网络参数,采用最小化方式,可后续调整。添加 tx_fuzz 服务随机发送交易,使网络持续出块和产生数据。
- 搭建完成:提前准备配置文件,运行后可看到服务列表,包括共识层、执行层、随机交易服务和验证者客户端等,可查看容器运行情况和日志信息。
- RPC 访问及相关问题解答:
- RPC 重要性:钱包与网络交互需通过 RPC 提交交易,交易提交后在节点间广播,给足 gas 费可打包进区块执行。
- 访问演示:演示获取链 ID 和最新区块高度等操作,搭建本地测试网后可使用各种与网络交互的方式。
- 提升节点可观测性:
- 添加工具:在最小化网络基础上添加 Prometheus 和 Grafana,方便查看网络指标。
- 部署效果:部署过程方便快捷,网络运行一段时间后可在 Grafana 看到展示节点指标的漂亮图表,对高端玩家和套利者很重要,可配置告警规则。
- 练习与后续学习建议:
- 练习内容:布置两个练习,部署 Prometheus 和 Grafana 相关内容,深入研究可使用对应镜像本地启动。
- 加入主网及其他问题解答:
- 加入主网:运行共识层和执行层客户端,将Chain ID置为 1 即可加入主网,做验证者需 32 个以太币,仅同步数据可不运行验证者客户端,主网硬件要求较高。
- 其他问题:解答轻客户端、轻验证者保护网络等问题,轻客户端参与共识技术上有路径但探索期长,轻验证者质押资金可能减少,诚实验证者签名出块可保护网络,恶意验证者会被罚没资金甚至踢出网络。
- Web3 核心:大部分 Web3 产品核心是 DeFi 基建。
- DeFi 定义:基于区块链技术构建的开放式生态系统,核心点包括去中心化、无许可、可验证、可组合性。
- 代表性 DeFi 产品 - Uniswap:
- 发展历程:从 2018 年到现在历经 V1 - V4 多个版本,如 2018 年提出 AMM 机制,2019 年支持 LP,2020 年支持任意 ERC20 做 LP 等。
- 各版本特点:V1 支持以太坊和 ERC20 交易;V2 支持任意 ERC20,有闪电贷和价格预研机等创新;V3 提出集中流动性,提升资本效率;V4 提供 Hook 机制,利于开发者定制改造。
- 行业影响:塑造了整个 Web3 DeFi 产品的开始,其代码开源,引发大量 fork 产品,如 SushiSwap。
- SushiSwap 与 Uniswap 竞争:
- 吸血鬼攻击:SushiSwap 针对 Uniswap 发起吸血鬼攻击,通过代币激励吸引 Uniswap 的流动性提供者迁移。
- Uniswap 反击:Uniswap 通过向早期用户空投治理代币 Uni 进行反击。
- 产品启示:治理代币是激励用户社区的手段;吸血鬼攻击是启动产品的短期策略,但产品持续发展需机制创新。
- 代表性 DeFi 产品 - MakerDAO:
- 发展脉络:2017 年支持单抵押贷,2019 年支持多抵押贷,2023 - 2024 年进行重大改革,改名为 Sky,提出 Make it again,做子 DAO 扩展,发行算法稳定币,扩展 RWA。
- 稳定币 DAI:是去中心化稳定币,由 MakerDAO 发行,近似等于1美元,有超额抵押,抗风险属性高于 UST 等。
- Web3 产品启示:
- 可组合性:区块链产品可将不同产品机制和收益集成,协议间可无缝集成。
- 产品启动方式:如吸血鬼攻击是短期策略,长期需产品机制创新。
- 代币标准化:产品应支持更多 ERC20,降低标准门槛。
- 治理和团队稳定性:去中心化产品也需要专业治理团队。
- 传统货币与加密货币对比:
- 货币增发:传统货币如 USD 和人民币发行量总体上升,以太坊在一定时间内会通缩。
- 经济循环:加密货币生态更健康,可自适应调控。
- 链上金融服务:
- 借贷平台:以 Aave 为例,7×24 小时服务,资金可查,利率由市场调控,有安全模块保障协议安全。
- 交易所:以 Uniswap 为例,7×24 小时、无地域限制,人人可做市商,未出现过流动性枯竭问题。
- 支付:稳定币是区块链主要流通货币,有新型加密货币银行将银行卡做成 NFT,可绑定支付工具在全球消费。
- 去中心化自治组织(DAO):包括去中心化治理、多签国库、激励登记等,可让更多人参与组织,资金流向可实时监控。
- 产品入门:多体验 Web3 产品;分析头部协议各版本改造找机会;结合基金会扶持计划和自身分析能力做产品。
- 技术转产品:了解用户需求、产品面向人群;阅读头部协议的 Doc 文档。
Dapp 从 0 到线上开发,包括概念、合约开发、部署及前端集成等,具体如下:
- 架构差异:前端技术都与 JS 相关,但 Dapp 前端融合了钱包集成;后端方面,Dapp 将智能合约作为纯后端架构,与传统后端架构差异大,区块链有分布式、存储等特性。
- 数据存储差异:Dapp 数据存储在链上链下,与传统数据库存储差别明显,其数据量轻量、存储有成本,算法和数据一致性也不同。
- 用户体验流程差异:传统应用登录是邮箱密码登录,后端校验返回 JWT TOKEN;Dapp 依赖钱包,包括钱包链接、操作确认和私钥管理。传统交易靠后端代码和认证;Dapp 依赖区块链状态,交易数据打包、确认、广播后永久存储。
- 基本概念:以太坊智能合约是以太坊基础应用层的基础,代码创建后不可修改,具有不可篡改、透明性、可编程性等特性。
- 执行机制:智能合约本身不能自行执行,需被调用后才能产生逻辑,其交易在区块链上会同步到所有节点。
- 状态表现:区块链按一定时间产生区块,将交易打包,新区块链接到前一个区块,状态基于前一个区块叠加,交易顺序执行。
- 常用语言:以太坊智能合约开发常用 Solidity 语言,与 JS 相似,有基本数据类型、map 类型、数组等,还有方法函数修饰符用于合约优化。
- 合约示例:合约以 contract 开头,数据状态和逻辑集中,适合 Dapp 开发初学者。
- Gas 机制与优化:
- Gas 消耗:以太坊上每笔写状态的交易都需消耗 Gas,类比打车消耗汽油,其计算方式为当前交易使用的 Gas 加上基础网络费用和优先费。
- 自动调节:网络拥堵时,Gas 基础费用会自动升高,矿工优先打包 Gas 小费高的交易。
- 存储消耗:区块链上永久存储数据消耗最大,临时存储消耗低,写合约时需考虑存储优化。
- 优化话题:Gas 优化和安全是智能合约开发重要话题,需注意安全问题,避免合约被攻击。
- 事件与日志:
- 日志作用:写数据状态时,可采用日志形式记录数据,通过扫区块获取数据,用于数据结构化和前端展示。
- 索引注意:事件中的 index 可用于索引,获取日志数据时需注意。
- 学习资料:推荐查看 Solidity 的语法特性文档,可作为临时学习对照。
- 合约介绍:以金库合约为例,用户存入代币可线性获得奖励,合约继承 ERC4626。
- 以太坊改进协议:介绍了 EIP1559、ERC4626、ERC20、ERC721 等以太坊改进协议,可通过 EIP find 查询协议定义和作用,也可在 OpenZeppelin 查看合规实现。
- 合约功能:包括存款、取款、申息等功能,涉及代币和份额的存入与取出,可实时计算利息。
- 安全设计:合约存在重入、数学、安全精度、边界权限等安全问题,有合约审计职业保障合约安全。
- 合约测试与部署:
- 测试重要性:合约开发后需进行测试,确保测试用例尽可能覆盖100%,提高合约安全性,严格测试需模拟真实网络环境。
- 部署流程:部署到测试网或正式网流程相同,需通过 RPC 网络提交数据,部署时需私钥和 RPC 节点,私钥部署不安全,推荐使用 Remix 通过钱包交互部署。
- 部署配置:部署需配置私钥、RPC 网络、Chain ID 等,部署成功后将合约地址配置到前端。
- 前端集成与演示:
- 前端配置:将部署好的合约地址配置到前端代码的 Env_example 中。
- 演示效果:前端运行后,展示金库前端初始页面,连接钱包后显示余额,可进行存款、取款、查看奖励等操作,操作时钱包会弹出确认交易。
- 交互要点:前端与合约交互涉及钱包连接、合约读写和数据展示,使用通用 SDK,区分读合约数据和提交交易的 RPC 网络,合约部署后需校验,有 ABI 作为接口供前端调用。
- 收益计算差异:示例中收益固定为5%,真实 DeFi 收益动态变化,根据供需和流动性调整。
- 工作原理差异:示例是简单存款计息,真实 DeFi 代币需有流动性池子,可在 DEX 交易。
- 复杂性差异:示例简单,真实 DeFi 涉及二级交易,代币必须有流动性才有价值。
在加密货币钱包的语境下,助记词和私钥都是管理和控制数字资产的关键组成部分,但它们在形式、功能和使用层面存在重要区别。
定义与形式:
- 私钥是一串由随机数字和字母组成的长字符串,是加密货币钱包的核心之一。
- 它通常由64位十六进制字符组成,例如以“5”、“K”或“L”开头的长串字符。
- 在正常的随机生成下,一个钱包只有一个私钥且不能修改,且与他人相同的概率几乎为零。
作用:
- 控制钱包中的资金:任何拥有私钥的人都可以使用它来签署交易,从而发送加密货币。
- 生成收款地址:你的收款地址是由私钥计算并产生的。
- 签署交易:你的交易是由私钥签名授权发出去的。
- 资产恢复:私钥也能帮助在钱包中恢复你的资产。
- 所有权决定:私钥决定了数字资产的所有权,拥有私钥才能支配相应的加密资产。
重要性与风险:
- 私钥是加密货币钱包中最核心的文件,拥有者应严格保密。
- 丢失私钥意味着你的币也就丢了,可能永远无法找回。
- 私钥的复杂性使其难以理解、记忆和抄录,容易出错。
定义与形式:
- 助记词是私钥的另一种表现形式。
- 它是一组易于记忆的单词,通常由12、15、18、21或24个单词组成。
- 这些单词并非随机生成,而是根据 BIP-39 标准从2048个单词库中选出,并且顺序固定、不可更改。
作用:
- 方便备份与恢复钱包:助记词旨在提高用户备份和恢复钱包的便捷性和安全性,因为它比长串的随机字符更易于记忆和手写备份。
- 生成种子和私钥:助记词通过 PBKDF2 等算法转换为种子(一个随机二进制序列)。这个种子是分层确定性钱包(HD 钱包)结构中的起点,可以进一步生成根私钥、子私钥和子公钥,从而形成整个钱包的层次结构。
- 管理多个私钥和地址:一个助记词可以生成无穷个私钥,因此可以管理钱包账户下的所有钱包地址。它就像一把万能钥匙,让你能在任何支援相同标准的设备上,重新取回对资产的控制权。例如,通过 BIP44 标准,同一个助记词可以支持多币种、多账户等,从而生成多个加密货币的钱包及其对应的地址。
- 增加安全性:使用助记词的方式,用户无需频繁处理私钥,降低了私钥泄露的风险。助记词生成算法通常包含校验和,以协助检测用户是否正确输入了助记词。
重要性与风险:
- 助记词是加密钱包的“主密码”或“解锁密码”。
- 妥善保存助记词是你保护资产的最后一道也是唯一一道防线。
- 任何人得到了你的助记词,可以不费吹灰之力的夺走你的资产。
- 助记词的安全性取决于其背后的随机数强度,12个或24个助记词均被认为足够安全,但妥善保存是关键。
- 丢失助记词或忘记助记词(或其口令)都将导致 HD 钱包丢失,资产将永远无法恢复。
| 特征 | 私钥 (Private Key) | 助记词 (Mnemonic Phrase / Seed Phrase) |
|---|---|---|
| 形式 | 一串复杂、无规律的64位十六进制字符 | 一组易于记忆、有固定顺序的英文单词(通常12或24个) |
| 可读性 | 难以理解、记忆和抄录 | 人类可读,方便记忆和手写备份 |
| 功能本质 | 直接控制数字资产的所有权和交易签名 | 用于派生/恢复私钥及相关地址 |
| 数量关系 | 一个钱包通常有一个根私钥,每个私钥对应一个地址 | 一个助记词可以生成无穷个私钥和所有钱包地址 |
| 主要用途 | 签署交易、控制资产、恢复特定地址 | 备份和恢复整个 HD 钱包,管理多币种多账户 |
| 生成方式 | 通过加密算法随机生成 | 基于 BIP-39 标准,通过随机数、校验码和单词库生成 |
| 备份方式 | 不推荐直接备份私钥,容易出错且不安全 | 推荐手写在纸上、离线保存,避免截图、云端存储 |
简而言之,私钥是数字资产的“钥匙”,直接用于控制资产;而助记词则更像是“密码本”,能够安全地推导出(或恢复)所有相关的私钥,从而控制整个钱包中的所有数字资产。两者都极其重要,且丢失其中任何一个都可能导致资产永久丢失。
前段时间币安钱包上新了一个 Bonding curve TGE 活动,当时看官方介绍没太看懂,这次在实习手册中发现在 Sudoswap 的 AMM 改进中提到将 Uniswap 的 AMM 模型应用到 NFT 交易,创建 NFT 流动性池。价格曲线通过 Bonding Curve 算法自动调整不同稀有度 NFT 的价格。于是查阅了相关资料,整理了关于 Bonding curve 及其在 Web3 代币经济中的应用。
Bonding Curve(联合曲线)是一种 Web3 项目中使用的数学公式,用于根据代币的供需关系调整其价格。它被集成到代币的智能合约中,当代币被购买时价格上涨,当被出售时价格下跌。这种机制旨在提供传统经济模型之外的创新替代方案,并解决许多相关问题。
- 动态价格计算:Bonding Curve 通过公开透明的数学公式动态计算代币价格。这种透明性和预定义性使得用户能够根据供需预测价格变动,从而消除价格波动的投机行为。
- 价格与供应量关系:这种定价算法是一个可图形化的曲线,定义了代币价格与其供应量之间的关系,即代币价格随供应量增加而增加。
- 智能合约自动化:代币的铸造(购买)和销毁(出售)是直接通过智能合约自动进行的。购买代币时,新代币被创建并增加到总供应量;出售代币时,代币被销毁并从流通中移除。买家支付的资金通常作为抵押品保留在智能合约中。
- 价格计算(积分):在 Bonding Curve 中,购买或出售代币的价格并非简单地将当前价格乘以代币数量。由于价格是连续变化的(即每增加一个代币都会影响后续代币的价格,产生滑点),因此需要通过对曲线进行积分来计算总价格。曲线下方的面积代表了抵押在曲线中的储备货币总量(例如 DAI)。
- 曲线类型:存在多种类型的 Bonding Curve,以满足项目的特定需求和目标。常见的类型包括:
◦ 线性曲线(Linear Curves):价格与供应量成正比增加,每次购买都使价格固定增加一个预定金额。
◦ 指数曲线(Exponential Curves):价格随供应量呈指数级增长,早期买家获益最多,这激励了早期参与。
◦ 对数曲线(Logarithmic Curves)/ 亚线性曲线(Sub-linear Curves):价格初期迅速上涨,但随着供应量增加,增长速度放缓。这种曲线同样有利于早期投资者。
◦ S型曲线(S-Curves / Sigmoid Curves):价格初期缓慢上涨,中期快速增长,后期趋于稳定。这种曲线被认为更适合项目生命周期的增长模式。
◦ 分段曲线(Piecewise Curves):由多种子曲线组合而成,允许项目在特定代币区间内对增长进行最大程度的控制。
- 动态、可预测和透明的定价:价格由公开的数学公式动态计算,允许用户预测价格走势,从而做出更明智的买卖决策并增强信心,鼓励长期参与。
- 消除人为偏见和操纵:通过算法公式,Bonding Curve 自动根据项目活动调整代币供应,无需人工干预,确保了所有参与者的公平代币估值和动态市场平衡。这对于用户基数和需求快速变化的早期项目至关重要。
- 持续和自动流动性:代币可直接通过智能合约买卖,确保流动性始终可用。用户无需担心潜在的流动性问题,减少等待时间,并使项目更具吸引力。它还允许 Web3 项目无需依赖外部交易平台即可生成自己的流动性,从而降低相关费用并提供更直接的市场控制。
- 无需大量初始流动性:与传统流动性池模型不同,Bonding Curve 通过“铸币和销毁”系统根据需求自动创建流动性,从而消除了进入门槛,使资源有限的项目更容易启动。
- 公平和可访问性:所有参与者都能在公平条件下获得代币,价格仅反映供需,没有外部干预。这确保了公平的代币分配,并简化了新用户对代币定价的理解,降低了参与门槛。
- 调节投机和创造稀缺性:购买行为会根据预设曲线推高代币价格,从而抑制过度投机行为,稳定市场。Bonding Curve 在不设定最大代币数量的情况下产生稀缺性,旨在维持供需平衡,稳定代币价格。
- 激励早期采用者和社区参与:早期用户可以以较低的初始价格购买代币,鼓励他们从一开始就支持项目。随着需求增加,代币价格上涨,为早期和积极参与创造了有吸引力的激励。这有助于建立一个强大而多样化的用户基础,并鼓励社区参与。
- 去中心化融资:通过智能合约实施,Bonding Curve 实现了自动化、无中介的融资。募集的资金直接锁定在智能合约中,确保透明和安全的资源管理,并降低了费用和延迟。
- 减少滑点和费用:用户可以精确预测其交易对价格的影响,从而减少意外和滑点。
Bonding Curve 在加密领域有广泛的应用,尤其在去中心化金融(DeFi)中扮演着基础机制的角色。
1. 自动化做市商(AMM)和去中心化交易所(DEX):
◦ Bonding Curve 是 AMM 的核心机制,用于初始去中心化交易所发行(IDOs)中的自动流动性引导。
◦ Uniswap:使用“恒定乘积公式”(x * y = k),这是一种特定类型的 Bonding Curve,通过维持流动性池中两种资产数量的恒定乘积来确保流动性。
◦ Bancor:是该领域的第一批 AMM 之一,开创了在 DEX 中使用 Bonding Curve 的先河。Bancor 使用其原生代币 BNT 作为所有流动性池的共同中间货币,促进跨链互操作性。它的不变式是储备金比率。
◦ Curve Finance:专注于稳定币,采用针对具有相似价值资产优化的专业 Bonding Curve,以减少滑点并保持价格稳定。
◦ Balancer:使用恒定乘积公式的广义版本,允许自定义流动性池中最多八种资产的任意加权比例。它允许用户选择代币和自定义代币权重,以及交易费用。
2. 代币生成事件(TGE):
◦ Binance在其钱包中引入了一种新的基于 Bonding Curve 的 TGE 模型,用于新的代币发行,尤其是病毒式传播的模因代币。
◦ 在此模型中,代币价格会根据需求实时增加。
◦ 在 TGE 期间,用户可以在活动落地页上交易代币,获得早期交易机会。
◦ 已购买的代币在活动结束前不可转让,但在认购期内可以在 Bonding Curve 生态系统内转售给其他买家。
3. 稳定币协议:
◦ Bonding Curve 在稳定币协议中至关重要,通过算法调整供应量来建立货币储备和维持挂钩。例如,MakerDAO(现已更名为 Sky)允许用户通过超额抵押资产生成与美元挂钩的 DAI 稳定币。
◦ 然而,也存在风险,例如算法稳定币 TerraUSD(UST)在2022年5月因挤兑而失去挂钩。
4. 去中心化自治组织(DAO)治理:
◦ Bonding Curve 通过允许购买投票代币来促进 DAO 治理,使投资与治理参与保持一致,并确保定价反映对 DAO 的承诺水平。
5. 策展市场(Curation Markets):
◦ Bonding Curve 可用于策展市场,作为内容策展的质押和声誉系统。
6. NFT:
◦ Sudoswap 改进了 AMM 模型,将其应用于 NFT 交易,通过 Bonding Curve 算法自动调整不同稀有度 NFT 的价格,并创建 NFT 流动性池。
尽管 Bonding Curve 具有许多优势,但它们并非适用于所有项目,也面临一些挑战。
- 技术复杂性:需要深入的数学和智能合约开发知识。
- 收入预测复杂:由于价格由实际需求决定,收入预测可能很复杂。
- 用户教育:需要教育用户了解 Bonding Curve 的工作原理,这可能成为初始采用的障碍。
- 交易成本:在某些区块链上与智能合约相关的交易成本可能很高,影响 Bonding Curve 的效率。
- 监管不确定性:Bonding Curve 的监管待遇仍是一个悬而未决的问题。大多数司法管辖区尚未明确指导 AMM 是否构成受监管的交易场所或证券发行。
- 设计风险:如果曲线设计不当(例如太陡或太浅),可能会导致价格操纵。
总而言之,Bonding Curve 为 Web3 项目提供了创新和灵活的流动性管理、价格确定和去中心化融资机制。它们促进了透明度、公平性和可访问性。通过采用 Bonding Curve,Web3 项目可以优化其经济模型,增强用户信任,并支持可持续增长。
前几天的 Web3 安全分享会上,我提了一个关于以太坊 EIP-7702 落地之后,普通用户在钱包安全方面有哪些需要注意的问题。会上老师分享了一个相关视频(https://www.youtube.com/watch?v=uZTeYfYM6fM)。会后我结合残酷共学往期的课程,整理了一些 EIP-7702 的内容。
EIP-7702 是以太坊近期一项重要的更新,它引入了一种新的交易类型(0x04),允许外部拥有账户(EOA)将其执行委托给智能合约。这使得 EOA 能够获得可编程和可组合的能力,而无需用户迁移到全新的智能账户。EIP-7702 旨在解决当前 dApp 用户体验中的痛点,例如多步交易、仅支持原生代币支付 Gas 费、以及私钥管理等问题。通过 EIP-7702,EOA 可以像智能合约一样执行代码,同时保留其原有的自发交易能力,模糊了 EOA 和智能合约之间的界限。
EIP-7702 的核心目标是提升用户体验和增强 EOA 功能,具体体现在以下几个方面:
- 改善用户体验: 解决 EOA 固有的局限性,例如“用户必须签署多笔交易才能进行简单操作,只能用原生代币支付 Gas 费,并且必须管理对其账户拥有完全访问权限的私钥。”这些限制源于 EOA 的基本结构。
- 无需账户迁移: 智能账户虽然功能强大,但用户迁移的意愿不高,因为“智能账户需要用户部署新合约(需要 Gas 费)、向新账户存入资金、学习新界面和工作流程,以及支付部署 Gas 费(对新用户来说是先有鸡还是先有蛋的问题)”。此外,迁移还会导致“失去账户历史和身份”,以及“受限的便携性”。EIP-7702 通过“允许 EOA 将其执行委托给智能合约,从而有效地赋予它们可编程能力,而无需用户迁移到全新的钱包”来解决这些问题。
- 交易批处理 (Transaction Batching): 允许在一次原子交易中执行同一用户的多个操作。例如,“目前,像‘批准代币和兑换’这样的常见操作需要两笔单独的交易。有了 EIP-7702,这些操作可以合并为一笔原子交易。”
- Gas费赞助 (Gas Sponsorship): 启用第三方支付 Gas 费的场景,如“应用程序可以为其用户的交易付费”、“用户可以用 ERC-20 代币而不是 ETH 支付 Gas 费”、“服务可以提供交易捆绑和费用优化”。
- 权限管理 (Permission Management): 用户可以创建具有受限权限的子密钥,例如“只能与特定应用程序交互的密钥”、“每天只能花费总持有量1%的密钥”、“可以交易 ERC-20 代币但不能交易 ETH 的密钥”。这“显著降低了钓鱼攻击的风险和影响,防止恶意行为者访问其完整的钱包或资产”。
- 社交恢复 (Social Recovery): “EIP-7702 支持 EOA 用户的社交恢复”。这对于担心丢失私钥的用户特别有益。
- 与 ERC-4337 的兼容性: EIP-7702 与 ERC-4337 的兼容性带来了显著优势,允许智能 EOA 与现有智能合约钱包生态系统无缝集成,简化了新功能的开发和采用。
- 便宜的智能账户部署: “EIP-7702 的一个常被忽视的特性是,它使开发者能够以比以前便宜80%的价格为用户部署新的智能账户。”
EIP-7702 通过引入一种新的交易类型实现上述功能,该交易类型包含一个“授权列表”(authorization_list)字段:
- 新的交易类型: EIP-7702 引入了 SET_CODE_TX_TYPE(0x04)这种新交易类型。“这种交易类型允许 EOA 定义一个智能合约地址进行委托”,即“将 EOA 委托给一个智能合约地址”。
- 授权列表 (authorization_list): 这是一个包含多个授权元组的列表,每个元组格式为 [chain_id, address, nonce, y_parity, r, s]。
- address:表示委托代码的目标智能合约地址。
- chain_id:表示此授权委托生效的链 ID。如果设置为0,则该授权在所有支持 EIP-7702 的兼容链上有效,但前提是用户的 EOA 在所有链上的 Nonce 必须匹配,这在实际中“很少发生”。
- nonce:包含在授权元组中,用于防止重放攻击。
- y_parity, r, s:是 EOA 所有者对 keccak(MAGIC || rlp([chain_id, address, nonce])) 签名后得到的签名数据。MAGIC(0x05)是“一个固定的标识符”,用作“预分隔符”以避免不同签名类型的结果冲突。
- 委托指示器 (Delegation Indicator): 当授权成功处理后,EOA 的 code 字段会被设置为 0xef0100 || address。这个前缀 0xef0100 是一个固定标识符,0xef 是 EIP-3541 中禁止的 opcode,确保此类标识符只能由 EIP-7702 部署。这使得 EOA “可以像智能合约一样执行代码”,并且“msg.sender 在这些交易中仍然是 EOA 的地址”。
- 撤销委托: 用户可以通过将 address 字段设置为 0x0000000000000000000000000000000000000000 来撤销先前的授权,这将清除账户代码并重置账户的代码哈希。
- Nonce 递增: EIP-7702 引入了一种新的 Nonce 递增机制。交易 Nonce 首先被检查和递增,然后授权列表中每个授权的 Nonce 也会被检查和递增。如果交易签名者和授权签名者是同一个 EOA,tx.nonce 应设置为 account.nonce,authorization.nonce 应设置为 account.nonce + 1。
- Gas成本: 新交易的固有成本继承自 EIP-2930。每处理一个授权元组,会额外收取 PER_EMPTY_ACCOUNT_COST(25000 gas)的费用。如果账户在委托之前已存在,则会退还部分 Gas。
尽管 EIP-7702 带来了诸多好处,但也伴随着重要的限制和新的安全挑战:
- EOA 私钥仍具有最高控制权: “私钥可以随时通过签署新交易来覆盖任何委托。这意味着你无法实现真正的多重签名或时间锁功能。”即使委托完成并删除了本地私钥,“仍无法缓解由于私钥泄露导致的安全风险”,尤其是在供应链攻击场景中。
- 非永久性部署: “与拥有自己地址的已部署智能合约账户不同,EIP-7702 委托可以被覆盖。这意味着EOA 仍然是 EOA,只是拥有智能功能,而不是真正的智能账户。”如果一个 EOA 的authorization_list中包含多个相同签名者的授权元组,“最终只有最后一个条目会生效”,其他会被覆盖。
- 多链挑战: “默认情况下,EIP-7702 授权是链特定的,这意味着用户需要在每条链上签署单独的授权。”虽然可以将 chain_id 设置为0来跨链有效,但这要求“用户的 EOA 在所有链上的 Nonce 相同,这在实践中很少发生。”
- 钱包控制,而非应用控制: “EIP-7702 由钱包控制,而不是应用程序。”钱包提供商将拒绝来自应用程序的包含授权字段的交易。这意味着“每个钱包将选择自己的智能账户实现”,并且“应用程序不能直接使用 EIP-7702 将用户账户委托给它们偏好的智能账户”。这将导致“碎片化”。
- 禁止循环委托: EIP-7702 禁止递归委托(例如,创建潜在的指定者链或循环)以确保协议简单性。节点只检索“一个级别的委托”。
- 禁止委托给预编译合约: 如果委托目标是预编译合约地址,则“检索到的代码被认为是空的”,并且对该账户的 CALL 等指令将执行空代码。
- 私钥存储风险: “EOA 的私钥仍然对整个账户拥有最高控制权限。”开发者和用户必须将私钥保护放在首位。
- 多链重放攻击: 尽管 chain_id = 0 方便多链重放,但“多链上相同的智能合约地址,其代码不一定相同。”用户应谨慎对待对 chain_id = 0 的委托交易签名,并确保了解每条链上委托地址的合约代码是相同的。钱包服务商应提醒用户多链重放可能带来的风险。
- 合约初始化问题: EIP-7702 委托不运行 initcode,即“委托交易不包含 initcode,因此构造函数逻辑不会执行”。如果委托交易没有同时调用钱包的初始化函数,那么“委托者可能被迫需要重新发起一笔交易来进行钱包的初始化”,这可能导致“初始化被抢跑”的风险。因此,开发者在将 EIP-7702 与现有智能合约钱包基础设施结合时,“需要注意钱包的初始化操作中需要进行权限检查”。
- 存储冲突: “委托代码不会清除现有存储。”在从一个委托合约迁移到另一个合约时,如果新旧合约的存储结构不同,可能导致“存储冲突”和“意外行为”,例如“一个布尔值在第二个合约中会被解释为一个无符号整数”。开发者应遵循 ERC-7201 标准,通过命名空间为合约变量分配独立存储空间,或设计无状态合约。
- 充值攻击(针对中心化交易所): EOA 作为智能合约使用后,中心化交易所可能面临用户通过智能合约伪造充值的攻击。中心化交易所需要“检查每笔充值交易的状态”,以防范此类风险。
- 安全假设被打破: EIP-7702 打破了现有智能合约中的一些安全假设:
- msg.sender == tx.origin 检查失效: 过去,这一检查常用于确保 msg.sender 是 EOA 或防止重入攻击。但现在“当账户自发交易进行外部调用时,外部协议获得的 msg.sender 和 tx.origin(交易发起者)将是同一个地址,并且这个地址还是一个智能合约”。这意味着“未来的开发者应该假定所有的参与者都有可能是智能合约”,不再依赖于对 tx.origin 或 msg.sender == tx.origin 的检查进行安全假设。
- EOA Nonce 递增: “EOA 的 nonce 可能在一次交易中多次递增。”
- EOA 余额减少: “一旦账户被委托,对账户的任何调用也可能导致余额减少。”
- 兼容性问题: EOA 作为智能合约使用时,需要考虑与现有主流基础设施的兼容性,例如 ERC-721 和 ERC-20 代币的接收需要实现相应的回调函数。
- 钓鱼风险: “一旦用户将账户委托给恶意智能合约地址,攻击者获取该账户中的资产变得轻而易举。”钱包服务商应“尽快支持此新交易类型”,并在用户委托签名时“向用户着重展示你要将你的账户委托到的目标地址是什么”,并进行“更深入的自动分析”或维护“白名单”。
由于应用程序无法直接控制 EIP-7702 授权,它们可以采取以下几种方式利用其功能:
- ERC-7710/7715 方法: 结合 ERC-7710(标准化的委托权限接口)和 ERC-7715(新的 JSON-RPC 方法 wallet_grantPermissions)。钱包首先使用 EIP-7702 将 EOA 委托给支持 ERC-7710 的智能合约,然后应用程序通过 ERC-7715 请求权限,经用户批准后执行操作。应用程序可以请求直接权限,或部署“伴生账户”(Companion Account)进行交互。
- ERC-5792 方法: 利用 wallet_sendCalls JSON-RPC 方法,应用程序可以发送多个函数调用给钱包。钱包负责将这些调用捆绑,并可能在后台使用 EIP-7702 进行批处理。用户只需一次签名。该方法主要用于简单批处理,例如代币批准和兑换。
- 伴生账户 (Companion Account) 方法: Biconomy 的解决方案,应用程序为自身部署一个伴生智能账户作为中介。用户授权该伴生账户(通过 ERC-7710/7715),伴生账户处理批处理、Gas 赞助等复杂操作。“这允许每个应用程序实现其所需的精确智能账户功能。”
- Fusion Execution (Biconomy 的备用方案): 当钱包不支持新标准时,Biconomy 的“Fusion Execution”利用常规 EVM 交易或 ERC-20 permit 函数中的字段,将额外信息(压缩成哈希)隐藏其中,实现复杂操作。
EIP-7702 是以太坊用户体验演进的重要一步,但并非最终形态。它将与 ERC-4337、ERC-7710、ERC-7715 等其他标准结合,创造新的用户体验,例如与意图(intent-based)系统结合,允许用户表达“想要完成什么”(例如,“在所有 DEX 中将 X 兑换成 Y 的最大可能数量”),而不是指定具体的交易参数。尽管初期可能存在碎片化和“成长之痛”,但总体方向是实现更用户友好的区块链交互,在不牺牲安全性或控制权的情况下隐藏复杂性。
在以太坊路线图上,EIP-7702 可以帮助 EOA 用户体验智能合约钱包的功能,并且与原生 AA 的提案(如 L2上的 RIP-7560 和以太坊上的 EIP-7701)兼容。当这些提案广泛采用后,用户可以利用 EIP-7702 更新其委托合约以支持新的接口,确保平滑过渡。EIP-7851(草案)甚至允许用户在 EIP-7702 委托后停用私钥权限,进一步提升安全性。
作为普通用户,在使用 EIP-7702 相关功能时,要特别注意以下几点,以确保资产安全和良好体验:
-
私钥的最高控制权:
- 即使外部拥有账户(EOA)通过 EIP-7702 委托给智能合约,EOA 私钥仍然对该账户拥有最高控制权。这意味着,无论设置了多少智能合约功能(如社交恢复、多签等),持有私钥的人都可以随意处置账户中的所有资产。
- 因此,保护私钥仍然是至关重要的,私钥泄露所带来的资金损失风险无法通过 EIP-7702 的委托功能完全缓解。
-
谨慎对待委托目标:
- 用户需要极其谨慎地选择将 EOA 委托给哪个智能合约地址。一旦将账户委托给一个恶意智能合约,攻击者就可以轻易地控制并转移账户中的资产。
- 由于委托的代码对账户拥有不受限制的访问权限,因此钱包服务商在提供此功能时应进行严格审计,并向用户明确展示委托的目标地址,同时提供风险提示或自动安全分析。
-
多链重放与 Nonce 匹配问题:
- EIP-7702 允许用户签署一个
chain_id为0的授权,这在理论上可以让该委托在所有支持 EIP-7702 的 EVM 兼容链上重放。 - 然而,这种跨链重放的前提是 EOA 在所有这些链上的 nonce(交易序号)必须完全匹配,但在实际操作中这很少发生。
- 此外,即使目标智能合约地址相同,在不同链上部署的合约代码也可能存在差异。因此,请谨慎对待签署
chain_id为0的委托交易,并确保了解所有相关链上目标合约的代码行为是一致且安全的。
- EIP-7702 允许用户签署一个
-
重新委托时的存储管理:
- 更改 EOA 的委托对象是一个安全关键操作。请注意,委托新的智能合约并不会清除 EOA 原有的存储数据。
- 如果从一个委托合约重新委托到另一个合约,而这两个合约的内部存储结构不同,可能会导致存储冲突,进而引发意外行为、账户锁定甚至资产损失。
- 在进行重新委托之前,建议最好先将账户中的所有重要资产取出,并尽可能验证新委托合约的存储插槽是否与之前兼容。一些标准如 ERC-7201 旨在帮助避免此类冲突。
-
合约初始化挑战:
- 与部署普通智能合约不同,当用户委托 EOA 代码时,委托目标合约的构造函数(constructor)不会在 EOA 的上下文中执行。
- 如果委托合约需要进行初始化设置,而钱包或用户没有在委托时同步进行初始化操作(即在同一笔交易中完成委托和初始化),攻击者可能会抢先初始化账户,从而获得对账户的控制权。
- 因此,请确保使用的钱包能够在委托的同时原子化地完成必要的初始化步骤。
-
钱包的控制与兼容性:
- EIP-7702 的授权功能主要由钱包软件控制,应用程序无法直接决定将 EOA 委托给哪个智能合约。
- 这意味着不同的钱包提供商可能会选择不同的智能账户实现,这可能导致生态系统出现碎片化。
- 用户需要关注所使用的钱包将如何支持和实现 EIP-7702,因为这直接影响用户能够使用的功能和整体用户体验。
-
了解钓鱼风险:
- 由于 EIP-7702 允许将 EOA 的执行权限委托给智能合约,一旦用户不慎将账户委托给钓鱼或恶意合约,攻击者将更容易控制资产。
- 钱包服务商在用户签署委托时,应清楚地展示正在委托的地址信息,并提供额外的安全提示,甚至可以维护白名单来帮助避免此类风险。
EIP-7702 是一个重要且复杂的技术升级,它模糊了 EOA 和智能合约之间的界限。作为用户,保持警惕并依赖可信赖的钱包服务商至关重要。
今晚我参加了由来自上海曼昆深圳律师事务所的饶炜彤律师带来的 Web3 法律知识分享会,介绍了 Web3 打工人在工作中面临的法律风险及控制方法。
- 分享主题:Web3 打工人的风险控制,主要集中在合规性分享,重点是项目的形式风险控制。
- 背景现状:Web3 目前一些项目人员紧缺,招聘待遇优于传统行业,但对于传统从业人员转入存在风险,仅根据招聘信息无法判断项目风险。
- 风险罪名:
- 集资诈骗和非法吸收公众存款:主要与 ICO 发币有关,我国禁止在中国大陆区域进行虚拟货币的发行和募资,海外发币也需持牌,否则违法。
- 传销:与项目扩张方式有关,多级返佣和团队奖励是典型传销特征,项目扩张应避免此类方式。
- 开设赌场:部分地区公安将交易所对赌型合约、杠杆合约及 NFT 藏品激进玩法视为赌场。
- 非法经营:做结算业务容易触及此罪名。
- 风险判断要点:
- 资金汇集:交易所、虚拟货币基金等业务可能涉及资金汇集,无特定目标的资金汇集风险高于特定目标,涉及法币的资金汇集项目合规难度大。
- 海外合规性:项目涉及资金汇集时,需关注海外合规性,包括 AML(反洗钱)和 KYC(对客户的认知),同时在技术上要排除中国大陆用户。
- 多级返佣和团队奖励:应避免多级返佣和团队奖励的扩张方式,以免触及传销红线。
- 洗钱和外汇兑换:打工人难以判断项目是否为洗钱链条一环或外汇兑换媒介,但需警惕,项目应具备反洗钱制度。
- 判断经验之谈:
- 注册司法辖区:项目应在有明确受监管的司法辖区内注册,否则风险较高。
- 第三方审计和安全测试:为取得合规资质,项目需经过专业机构的第三方审计和安全测试。
- KYC 和反洗钱制度:项目应具备 KYC 和反洗钱等制度,否则可能存在风险。
- 信息公开:合规项目会对外公开项目负责人、团队背景、资金来源等基本信息。
- 高风险模块和扩张方式:项目存在高风险模块(如混币器)和高风险扩张方式(如多级返佣)时,风险较高。
- 责任分级与知情推断:
- 责任分级:核心管理层风险最高,宣传链条负责人和社区负责人风险次之,核心链条负责人再次之,纯粹技术人员风险相对较低。
- 知情推断:法律上知情分为事实知情、推定知情和应当知情,纯粹技术人员若不知情可作为免责借口。
- 尽力防范与合规:
- 尽力防范:打工人需尽力防范风险,做到 KYC 和 AML,平台应按各国要求做到合规。
- 海外合规性关键:海外合规性完备,项目即使存在资金汇集等情况,风险也相对较低。
- 一些问题讨论:
- 法律系同学融入 Web3:建议采用陪跑型合规,从了解各国虚拟货币规定开始,与项目深度合作。
- 严查重罚行为:我国严查资金通过不可监管方式汇集的行为,纯粹 Web3 资讯类岗位无法律风险。
- 线下与远程办公:无本质区别,结合项目判断风险。
- 技术人员违法工作:结合红线要点和判断经验之谈判断,难以判断时可咨询律师或资深前辈。
- 空投 NFT 合规:需结合具体空投方案分析,无统一答案。
- 外贸使用 U:涉及税务问题,目前实践监管较少。
- 中国做 U 商:做 OTC 场外交易风险高,可能涉及非法经营罪和外汇对焦。
- 智能合约发币:一般认为是联合发币,需看合约和用户协议及资金走向。
- Web3 用 U 结算工资:国内税务部门不支持,目前暂不征税。
- U 卡消费:不涉及外汇额度和税务问题,银行结算税务。
参加本次 Web3 法律知识分享会,最大的收获是对 Web3 行业的法律风险有了更系统、深入的认知。过去只知道这个领域法律风险较高,但却对背后具体的合规 “雷区” 一知半解,而律师结合实际案例,清晰拆解了集资诈骗、传销、非法经营等常见罪名,尤其是资金汇集、多级返佣这些看似常规的业务模式,原来可能隐藏着不小的法律风险,需要更谨慎的风险判断。
更让我印象深刻的是律师提到的 “知情推断” 原则,它打破了 “技术人员可以免责” 的固有认知。无论是核心管理层还是普通技术、运营人员,都可能因 “应当知情” 而承担责任,这提醒我们在选择项目时,不能只看表面的合规包装,更要关注项目的注册资质、反洗钱措施、用户定位等细节。未来面对 Web3 相关工作机会,我会带着 “风险雷达” 去审视,必要时主动咨询专业意见,避免踩入法律红线。
今天参加了作为 LXDAO 核心成员、Optimism Delegate 与 GovNERDs 的 Marcus 老师主讲的故事分享会,讨论了 Vitalik 和 BM 的相关区块链项目故事,涉及以太坊、EOS 等项目,探讨区块链治理重要性,以及这些项目带来的思考和启发。
- BM 与比特币及比特股故事:
- 与中本聪交流:2010年 BM 刚接触比特币,在比特币论坛发现比特币出块时间慢(约10分钟)的问题,与中本聪交流希望改变 PoW 机制,因交流方式问题被中本聪怼。
- 推出比特股:2014年 BM 打着超越比特币的口号推出比特股(BTS),它是真正行业第一个 Dex,采用委托权益证明(DPoS)治理结构,可交易稳定币,采用订单簿模式。
- 比特股失败原因:没有智能合约,在 BTS 上开发难;内部生态未形成价值循环;按订单簿模式做去中心化交易所难以对抗传统交易所,交易深度差。
- 比特股的启发:启发 Vitalik 产生智能合约想法并融入以太坊;促使 Uniswap 等推出 AMM(xy = k)模型解决去中心化交易所流动性深度问题;启发 MakerDAO 联创做稳定币业务。
- ICO 时代及 EOS 诞生:
- ICO 介绍:2016年是 ICO 爆发年前夕,ICO 是首次代币发行,比传统 IPO 少监管、更跨地域、传播迅速。2016年 ICO 较正常,2017年变得乱象丛生,国内五部委下发文件取缔,美国后来监管政策逐渐明朗。
- EOS 诞生背景:2017 - 2018年,以太坊出块速度慢,难以满足大规模应用,BM 为提升区块链 TPS 并兼顾去中心化,发行 EOS 项目,它是币圈最大的 ICO,募资40亿美金。
- EOS 特点:号称百万级 TPS,采用 DPoS 制度,选21个超级节点;免除 gas 费,重新设计资源模型;最早提出账户抽象模型。
- EOS 与以太坊对比:早期以太坊采用 PoW 制度,EOS 采用 DPoS,EOS TPS 速度快、交易成本低,开发语言为 C++ 和 rust,治理模式为链上投票,最早提出账户模型。
- Dapp 爆发及 EOS 失败原因:
- Dapp 爆发:2018年是 Dapp 第一波爆发年,出现 DeFi、GameFi 等原型,当时 EOS 和 Steem 的 Dapp 用户占比大于以太坊,但多为博彩和资金盘应用。
- EOS 失败原因:过度中心化,DPoS 制度易带来贿选问题;资源模型设计失败,RAM 被大量炒作;用户体验恶化,注册钱包需付费;技术承诺未兑现,实际 TPS 未达百万级;生态激励不足,资金耗尽与开发者流失;社区分裂与品牌失信,核心创始人未给用户和开发者激励,导致社区信任丧失。
- 会议延伸问题:
- 治理与技术问题:解答去中心化和高性能抉择、公链不同制度模型优劣、激励用户和开发者优先级、公链资金管理获取信任等问题。
参加本次 Web3 故事会,通过回顾公链发展的关键案例,我对行业核心问题有了更直观的认识。
在去中心化与高性能的取舍上,案例给出了清晰答案。EOS 曾以高性能为卖点,却因治理机制缺陷和资金管理问题失去社区信任,最终走向沉寂。而以太坊坚持去中心化底线,虽早期性能有限,却凭借生态的持续积累形成核心竞争力。这说明,高性能是重要优势,但去中心化才是公链长期发展的根基。
公链治理模型各有特点,并无绝对优劣。PoW 去中心化程度高但效率有限,PoS 在效率与去中心化间寻求平衡,DPoS 性能突出却存在中心化风险。理想的治理模式应具备适应性,既能应对危机,又能兼顾不同群体的诉求,以太坊的治理演进便是典型例证。
生态激励需注重优先级。EOS 早期虽用户基数较大,但因对开发者激励不足,生态中缺乏有价值的应用,最终难以持续。以太坊则优先支持开发者,通过培育优质基础设施吸引用户,形成良性循环。可见,开发者是生态的基础,需优先保障其权益,才能支撑生态的长期繁荣。
公链资金管理的核心是建立信任。EOS 在募资后资金使用不透明,违背对社区的承诺,导致信任崩塌。而以太坊基金会公开资金流向,确保资源用于生态建设,赢得了社区认可。资金管理需做到透明公开,让社区参与决策,才能将资金转化为生态发展的动力。
总的来说,Web3 领域的竞争,本质是在效率与公平间寻找平衡。唯有坚守用户信任,注重长期生态建设,公链才能实现可持续发展。
参加本次 Web3 故事会,通过回顾公链发展的关键案例,我对行业核心问题有了更直观的认识。
在去中心化与高性能的取舍上,EOS 曾以高性能为卖点,却因治理机制缺陷和资金管理问题失去社区信任,最终走向沉寂。而以太坊坚持去中心化底线,虽早期性能有限,却凭借技术和生态的持续积累形成核心竞争力。这说明,高性能是重要优势,但去中心化才是公链长期发展的根基。
公链治理模型各有特点,并无绝对优劣。PoW 去中心化程度高但效率有限,PoS 在效率与去中心化间寻求平衡,DPoS 性能突出却存在中心化风险。理想的治理模式应具备适应性,既能应对危机,又能兼顾不同群体的诉求,以太坊的治理演进便是典型例证。
生态激励需注重优先级。EOS 早期虽用户基数较大,但因对开发者激励不足,生态中缺乏有价值的应用,最终难以持续。以太坊则优先支持开发者,通过培育优质基础设施吸引用户,形成良性循环。可见,开发者是生态的基础,需优先保障其权益,才能支撑生态的长期繁荣。
公链资金管理的核心是建立信任。EOS 在募资后资金使用不透明,违背对社区的承诺,导致信任崩塌。而以太坊基金会公开资金流向,确保资源用于生态建设,赢得了社区认可。资金管理需做到透明公开,让社区参与决策,才能将资金转化为生态发展的动力。
总的来说,Web3 领域的竞争,本质是在效率与公平间寻找平衡。唯有坚守用户信任,注重长期生态建设,公链才能实现可持续发展。
来自 DeFiHackLabs 的 0xRory 老师介绍了 Web3 钓鱼攻击的现状和反钓鱼训练平台 https://unphishable.io/ 的使用,还有常见钓鱼手法及应对方法。我总结了如下的重点内容:
- 去年情况:总损失金额 4.94 亿美元,受害用户约 33 万,单笔大额损失(超 100 万美元)约 30 笔,其中超 5540 万美元的约 3 笔。
- 今年上半年情况:损失总金额约 3973 万美元,受害用户约 4.3 万,大笔损失(超 100 万美元)约 5 笔,最高单笔 310 万美元。
- 攻击事件类型:包括授权、Uniswap 签名、假账号、交易等。
- 开发初衷:防止大笔钓鱼交易发生,让用户提前注意钓鱼风险,与网络教学互动。
- 平台设想:做沉浸式钓鱼手法演练,通过历史案例让用户体验被控制流程;邀请人员提供案例和呈现案例,形成持续更新的循环。
- 平台操作:输入网址,点击进入挑战,先完成第一题(安装 MetaMask、建立钱包、添加测试链、领测试币、连接钱包)才能继续挑战,可筛选挑战难度,也可点击贡献进入贡献流程。
- 助记词诈骗:不要将助记词给任何人,若接收索要助记词的信息要警惕,拒绝索要助记词可挑战成功。
- Approve 攻击:授权时查看信息,若看到无限授权要警惕,可复制地址到 scanner 上查询是否正常,若地址异常则不授权,放慢操作速度。
- 剪贴板攻击:钓鱼应用会在复制地址时做手脚,复制粘贴地址时要仔细核对,放慢速度。
- 搜索引擎广告钓鱼:攻击者会买 Google 广告做钓鱼网站,排名靠前的可能是钓鱼网站,有赞助或 ad 标识,要注意网址域名,放慢点击速度,最安全的就是直接忽略广告网站。
- 恶意 RPC 提供商:有人会提供恶意 RPC,连接时要有警觉,可查看 chainlist,若上面没有则不要连接。
- 浏览器扩展商店:可能存在恶意插件或钓鱼网站,选择时要注意人数,人少的可能是钓鱼应用。
- Deepfake 线上会议链接:可能会伪装成朋友邀请面试或聊天,要注意链接网址,不点可疑链接,不安装不明软件。
- 模拟交易诈骗:进入钓鱼网站后,模拟交易画面按确定签署时可能被监听,要了解交易流程,搞清楚细节,避免上当。
参加这次 Web3 安全分享会,让我对区块链安全有了更直观的认识。那些触目惊心的钓鱼损失数据,以及老师拆解的助记词诈骗、剪贴板攻击等手法,让我意识到 Web3 世界的风险远比想象中近。
反钓鱼训练平台的沉浸式体验很有新意,比起枯燥的理论,亲身体验钓鱼场景更能形成 “肌肉记忆”。印象最深的是老师反复强调的 “放慢速度”—— 授权前查地址、转账前核域名、遇诱惑先质疑,这些简单却关键的习惯,正是防范钓鱼的核心。
今天开始了自己的第一天正式学习,在前两天周末阅读了《 Web3 实习手册》中关于常用 Web3 工具的注册安装指引基础上,尝试上手操作。
Twitter、Telegram、Discord 和 Github 账号我以前都注册有,发布了入营推文(Leot
@vicanksolanki2,求关注~),并加入了官方 TG 群。
新注册了 Zoom、Notion 和 Linkedin 账号,发现 Notion 功能丰富强大,在学习官方文档的使用说明,逐步熟练上手写作。
注册完 Linkedin 账号后,尝试在手机端登录,发现不能顺利登录,提示账户需要验证。按指引提交了身份验证,收到官方邮件告知等待核实结果。猜测账户正常使用需要 KYC,或者是 IP 或者设备变动触发了风控。
安装了 MetaMask 钱包浏览器插件,创建了新钱包,并使用 Sepolia 挖水网站(https://sepolia-faucet.pk910.de/)来获取 SepoliaETH 测试水。并联系尝试给同学钱包地址发送 SepoliaETH。
我理解了“区块链”的概念。它不是炒币或者比特币的代名词,而是一种去中心化、不可篡改的账本系统。每个区块都记录着历史数据并通过加密方式相互连接,确保整个系统的安全性与透明度。这种技术架构在保障数据可信性方面有着天然优势,非常适合金融、供应链等对数据一致性要求极高的场景。
比特币的出现不仅是技术的突破,更是机制设计的创新。通过引入矿工、算力和奖励机制,比特币实现了在没有中央机构的前提下维持网络正常运行和安全性。这种“激励即治理”的思想让我对去中心化系统的可行性有了更多信心,也意识到设计合理的经济模型在 Web3 世界中至关重要。
Web3 所描绘的未来互联网图景让我兴奋——用户真正拥有自己的数据、身份和资产,不再受制于平台和中介。这种理念让我对数字主权和网络自由产生共鸣。但感觉现在 Web3 仍面临诸多挑战,比如性能瓶颈、能源消耗和合规问题等。今后的广阔前景值得我们去投身其中,继续发展 Web3 领域的大规模应用。
还有 Web3 和 Web 3.0居然不一样,这确实填补了我的知识空白。