<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web3 on Website of SauceWu</title><link>https://saucewu.github.io/tags/web3/</link><description>Recent content in Web3 on Website of SauceWu</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Mon, 20 Apr 2026 20:30:00 +0900</lastBuildDate><atom:link href="https://saucewu.github.io/tags/web3/index.xml" rel="self" type="application/rss+xml"/><item><title>Flutter 交易所架构实战：DDD + Clean 落地指南</title><link>https://saucewu.github.io/posts/flutter-%E4%BA%A4%E6%98%93%E6%89%80%E6%9E%B6%E6%9E%84%E5%AE%9E%E6%88%98ddd-+-clean-%E8%90%BD%E5%9C%B0%E6%8C%87%E5%8D%97/</link><pubDate>Mon, 20 Apr 2026 20:30:00 +0900</pubDate><guid>https://saucewu.github.io/posts/flutter-%E4%BA%A4%E6%98%93%E6%89%80%E6%9E%B6%E6%9E%84%E5%AE%9E%E6%88%98ddd-+-clean-%E8%90%BD%E5%9C%B0%E6%8C%87%E5%8D%97/</guid><description>&lt;h1 id="flutter-交易所架构实战ddd--clean-落地指南"&gt;Flutter 交易所架构实战：DDD + Clean 落地指南&lt;/h1&gt;
&lt;p&gt;交易所项目做到一定规模，就会开始还之前欠下的债——页面里写 API、规则到处复制、改一处牵十处。&lt;/p&gt;
&lt;p&gt;用 &lt;code&gt;DDD + Clean&lt;/code&gt; 不是为了架构好看，是因为不用它的话，这类项目很难不失控。&lt;/p&gt;
&lt;p&gt;这篇不讲大而空的概念，只讲三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;为什么交易所需要 &lt;code&gt;DDD + Clean&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在 Flutter 里到底怎么分层&lt;/li&gt;
&lt;li&gt;一笔下单请求如何在系统里流转（含时序图）&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="一为什么交易所适合-ddd--clean"&gt;一、为什么交易所适合 DDD + Clean&lt;/h2&gt;
&lt;p&gt;交易所天然是“复杂业务系统”，不是普通内容 App。你会长期面对：&lt;/p&gt;</description></item><item><title>ceres-wallet-core：用 Flutter 封装 Trust Wallet Core</title><link>https://saucewu.github.io/posts/ceres-wallet-core%E7%94%A8-flutter-%E5%B0%81%E8%A3%85-trust-wallet-core/</link><pubDate>Thu, 16 Apr 2026 16:00:00 +0000</pubDate><guid>https://saucewu.github.io/posts/ceres-wallet-core%E7%94%A8-flutter-%E5%B0%81%E8%A3%85-trust-wallet-core/</guid><description>&lt;h1 id="ceres-wallet-core用-flutter-封装-trust-wallet-core"&gt;ceres-wallet-core：用 Flutter 封装 Trust Wallet Core&lt;/h1&gt;
&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;在做 Flutter 钱包应用时，密钥管理和交易签名是绕不开的核心模块。社区里能用的方案要么只支持 EVM 单链、要么 Dart 原生实现存在安全隐患、要么直接调 Web3 RPC 把私钥暴露在网络层。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/trustwallet/wallet-core"&gt;Trust Wallet Core&lt;/a&gt; 是目前业界覆盖链最广、经过生产验证的开源密钥库，用 C++ 实现，已经支持 60+ 条链。问题是它没有官方的 Flutter 绑定。&lt;/p&gt;</description></item><item><title>ceres-mpc：基于 DKLs23 的 Flutter 两方 MPC 钱包 SDK</title><link>https://saucewu.github.io/posts/ceres-mpc%E5%9F%BA%E4%BA%8E-dkls23-%E7%9A%84-flutter-%E4%B8%A4%E6%96%B9-mpc-%E9%92%B1%E5%8C%85-sdk/</link><pubDate>Sun, 12 Apr 2026 17:00:00 +0000</pubDate><guid>https://saucewu.github.io/posts/ceres-mpc%E5%9F%BA%E4%BA%8E-dkls23-%E7%9A%84-flutter-%E4%B8%A4%E6%96%B9-mpc-%E9%92%B1%E5%8C%85-sdk/</guid><description>&lt;h1 id="ceres-mpc基于-dkls23-的-flutter-两方-mpc-钱包-sdk"&gt;ceres-mpc：基于 DKLs23 的 Flutter 两方 MPC 钱包 SDK&lt;/h1&gt;
&lt;h2 id="为什么需要-mpc-钱包"&gt;为什么需要 MPC 钱包&lt;/h2&gt;
&lt;p&gt;传统 HD 钱包的私钥完整存储在用户设备上，一旦设备丢失或被攻击，资产就没了。助记词备份虽然能恢复，但本身也是攻击面。&lt;/p&gt;
&lt;p&gt;MPC（Multi-Party Computation）钱包的思路是：&lt;strong&gt;私钥从始至终都不存在于任何单一设备&lt;/strong&gt;，签名由多方协作计算完成。两方 ECDSA 的典型部署是客户端持有一份密钥分片，服务端持有另一份，任意一方单独都无法完成签名。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ceres-mpc&lt;/strong&gt; 基于 &lt;a href="https://eprint.iacr.org/2023/765"&gt;DKLs23 协议&lt;/a&gt; 实现了一套完整的 Flutter MPC 钱包 SDK，密码学核心用 Rust 编写，通过 flutter_rust_bridge 暴露给 Dart 调度层。&lt;/p&gt;</description></item><item><title>MPC 钱包：私钥从未完整存在过</title><link>https://saucewu.github.io/posts/mpc-wallet%E7%AC%94%E8%AE%B0/</link><pubDate>Sun, 15 Mar 2026 10:00:00 +0000</pubDate><guid>https://saucewu.github.io/posts/mpc-wallet%E7%AC%94%E8%AE%B0/</guid><description>&lt;h1 id="mpc-钱包私钥从未完整存在过"&gt;MPC 钱包：私钥从未完整存在过&lt;/h1&gt;
&lt;h2 id="传统钱包的问题"&gt;传统钱包的问题&lt;/h2&gt;
&lt;p&gt;用过普通钱包（MetaMask、Trust Wallet）的人都知道，创建钱包时会生成一组助记词：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;witch collapse practice feed shame open despair creek road again ice least
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这 12 个单词本质上就是你的私钥。它的问题很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;抄错一个字 → 永久丢失资产&lt;/li&gt;
&lt;li&gt;被人拍到 → 资产全部被盗&lt;/li&gt;
&lt;li&gt;手机丢了没备份 → 再见&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;私钥是&lt;strong&gt;单点故障&lt;/strong&gt;。整个安全体系建立在&amp;quot;这串数字只有你知道&amp;quot;的假设上，一旦泄露，没有任何补救手段。&lt;/p&gt;</description></item><item><title>AA 钱包：让智能合约成为你的钱包</title><link>https://saucewu.github.io/posts/aa-wallet%E7%AC%94%E8%AE%B0/</link><pubDate>Wed, 28 Jan 2026 10:00:00 +0000</pubDate><guid>https://saucewu.github.io/posts/aa-wallet%E7%AC%94%E8%AE%B0/</guid><description>&lt;h1 id="aa-钱包让智能合约成为你的钱包"&gt;AA 钱包：让智能合约成为你的钱包&lt;/h1&gt;
&lt;h2 id="传统钱包的体验困境"&gt;传统钱包的体验困境&lt;/h2&gt;
&lt;p&gt;用过 Web3 钱包的人几乎都遇到过这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一次用 DApp，账户里没有 ETH，但用 USDC 付 gas 不行&lt;/li&gt;
&lt;li&gt;想同时 approve + swap，得签两笔交易，付两次 gas&lt;/li&gt;
&lt;li&gt;私钥丢了，资产永久没了，没有任何找回手段&lt;/li&gt;
&lt;li&gt;每次操作都要手动签名确认，体验比 Web2 差太多&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题的根源是以太坊原始账户设计的限制——&lt;strong&gt;EOA（外部账户）&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="两种账户类型"&gt;两种账户类型&lt;/h2&gt;
&lt;p&gt;以太坊上有两种账户：&lt;/p&gt;</description></item><item><title>Solana 交易手续费与常见坑</title><link>https://saucewu.github.io/posts/solana-%E4%BA%A4%E6%98%93%E6%89%8B%E7%BB%AD%E8%B4%B9%E4%B8%8E%E5%B8%B8%E8%A7%81%E5%9D%91/</link><pubDate>Fri, 21 Feb 2025 15:00:00 +0900</pubDate><guid>https://saucewu.github.io/posts/solana-%E4%BA%A4%E6%98%93%E6%89%8B%E7%BB%AD%E8%B4%B9%E4%B8%8E%E5%B8%B8%E8%A7%81%E5%9D%91/</guid><description>&lt;h1 id="solana-交易手续费与常见坑"&gt;Solana 交易手续费与常见坑&lt;/h1&gt;
&lt;p&gt;Solana 的手续费设计和 EVM 差别很大，从 EVM 过来的开发者很容易踩坑。这篇把几个最常见的问题整理一下。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="手续费结构"&gt;手续费结构&lt;/h2&gt;
&lt;p&gt;Solana 的交易费用分两部分：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;总费用 = 基础费用（Base Fee）+ 优先费用（Priority Fee，可选）
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="基础费用"&gt;基础费用&lt;/h3&gt;
&lt;p&gt;每个&lt;strong&gt;签名&lt;/strong&gt;收 &lt;code&gt;5000 lamports&lt;/code&gt;（0.000005 SOL）。一笔交易有几个签名就收几倍。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;基础费用 = 签名数 × 5000 lamports
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;普通转账只有 1 个签名，费用就是 5000 lamports。多签或者复杂交易有多个签名，费用叠加。&lt;/p&gt;</description></item><item><title>EVM 字节码与合约执行过程详解</title><link>https://saucewu.github.io/posts/evm-%E5%AD%97%E8%8A%82%E7%A0%81%E4%B8%8E%E5%90%88%E7%BA%A6%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B%E8%AF%A6%E8%A7%A3/</link><pubDate>Thu, 20 Apr 2023 14:00:00 +0000</pubDate><guid>https://saucewu.github.io/posts/evm-%E5%AD%97%E8%8A%82%E7%A0%81%E4%B8%8E%E5%90%88%E7%BA%A6%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B%E8%AF%A6%E8%A7%A3/</guid><description>&lt;h1 id="evm-字节码与合约执行过程详解"&gt;EVM 字节码与合约执行过程详解&lt;/h1&gt;
&lt;h2 id="目录"&gt;目录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;一、EVM 是什么&lt;/li&gt;
&lt;li&gt;二、Solidity 到字节码的编译过程&lt;/li&gt;
&lt;li&gt;三、EVM 的运行时结构&lt;/li&gt;
&lt;li&gt;四、核心 OPCODE 分类详解&lt;/li&gt;
&lt;li&gt;五、一个完整的合约调用流程&lt;/li&gt;
&lt;li&gt;六、Gas 的本质&lt;/li&gt;
&lt;li&gt;七、常见安全问题的字节码视角&lt;/li&gt;
&lt;li&gt;八、总结&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="一evm-是什么"&gt;一、EVM 是什么&lt;/h2&gt;
&lt;p&gt;EVM（Ethereum Virtual Machine）是以太坊的智能合约运行环境。它是一个&lt;strong&gt;基于栈的虚拟机&lt;/strong&gt;，与 JVM 的基于栈架构类似，但设计上做了很多针对区块链场景的取舍：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;确定性&lt;/strong&gt;：相同输入永远产生相同输出，所有节点独立执行后结果必须一致&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隔离性&lt;/strong&gt;：合约运行在沙箱里，无法访问网络、文件系统、随机数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计量性&lt;/strong&gt;：每条指令都有固定 Gas 费用，防止无限循环&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;EVM 使用 &lt;strong&gt;256 位字长&lt;/strong&gt;（32 字节），这是它最核心的设计决定——与 Keccak-256 哈希和椭圆曲线密钥长度对齐，避免频繁的位数转换。&lt;/p&gt;</description></item><item><title>EIP-1559 手续费机制详解</title><link>https://saucewu.github.io/posts/eip-1559-%E6%89%8B%E7%BB%AD%E8%B4%B9%E6%9C%BA%E5%88%B6%E8%AF%A6%E8%A7%A3/</link><pubDate>Sat, 21 Jan 2023 14:00:00 +0900</pubDate><guid>https://saucewu.github.io/posts/eip-1559-%E6%89%8B%E7%BB%AD%E8%B4%B9%E6%9C%BA%E5%88%B6%E8%AF%A6%E8%A7%A3/</guid><description>&lt;h1 id="eip-1559-手续费机制详解"&gt;EIP-1559 手续费机制详解&lt;/h1&gt;
&lt;p&gt;EIP-1559 是 2021 年 8 月以太坊 London 升级引入的手续费改革，它彻底改变了 Gas 的定价方式。如果你在做钱包或交易所，发交易时不理解这套机制，要么手续费估高了用户体验差，要么估低了交易迟迟不上链。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="老机制的问题"&gt;老机制的问题&lt;/h2&gt;
&lt;p&gt;EIP-1559 之前，以太坊用的是&lt;strong&gt;一价拍卖（First Price Auction）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户自己出一个 &lt;code&gt;gasPrice&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;矿工优先打包出价最高的交易&lt;/li&gt;
&lt;li&gt;网络拥堵时用户只能盲猜出多少合适&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;结果就是：拥堵时大家拼命加价，但实际上很多人出了远超必要的手续费，钱白白浪费。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="eip-1559-的核心变化"&gt;EIP-1559 的核心变化&lt;/h2&gt;
&lt;p&gt;EIP-1559 把手续费拆成两部分：&lt;/p&gt;</description></item></channel></rss>