<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on Wong&#39;s Blog</title>
    <link>https://blog.wssh.dev/posts/</link>
    <description>Recent content in Posts on Wong&#39;s Blog</description>
    <generator>Hugo -- 0.146.6</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 07 Apr 2026 23:47:33 +0000</lastBuildDate>
    <atom:link href="https://blog.wssh.dev/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Web3技术频道推荐</title>
      <link>https://blog.wssh.dev/posts/channel-recommend/</link>
      <pubDate>Mon, 10 Oct 2022 12:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/channel-recommend/</guid>
      <description>&lt;p&gt;面对日新月异的&lt;code&gt;Web3&lt;/code&gt;世界，作为开发者，我们需要尽可能获得更多的有关技术的信息。博客主个人维护了一个具有良好&lt;code&gt;tag&lt;/code&gt;标识的&lt;code&gt;telegram&lt;/code&gt;频道，读者可以点击&lt;a href=&#34;https://web3list.t.me&#34;&gt;此链接&lt;/a&gt;访问。
频道内基本涵盖了目前最新的技术类资讯，并附有完整的&lt;code&gt;#tag&lt;/code&gt;索引支持，帮助用户更快的找到特定领域的信息。&lt;/p&gt;</description>
    </item>
    <item>
      <title>形式化证明浅析: 第一个程序证明</title>
      <link>https://blog.wssh.dev/posts/formal-verify-zero/</link>
      <pubDate>Tue, 07 Apr 2026 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/formal-verify-zero/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在计算机领域中，形式证明是时常被讨论的话题。伴随着 LLM 时代的到来，很多工程师和计算机科学家都认为形式化证明将逐渐成为未来软件标配，工程师可能只需要编写软件的 spec 然后 LLM 会编写代码然后利用形式化证明方法验证编写代码的正确性。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Uniswap 系列教程: 从 Uniswap v2 到 Uniswap v4</title>
      <link>https://blog.wssh.dev/posts/uniswap-hackmd/</link>
      <pubDate>Wed, 01 Apr 2026 01:00:00 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/uniswap-hackmd/</guid>
      <description>&lt;p&gt;笔者在不久前编写了一系列关于 Uniswap 的文章，实际上与本博客之前的部分内容是重合的。这一系列文章实际上是为了一个课程而设计的，但目前该课程上线可能遥遥无期。相比于之前的博客内的文章，这一系列文章更加简单，更适合初学者学习。不同于之前的文章大部分都是笔者的学习笔记，这一系列博客实际上是笔者对过去内容的回顾和总结，理论上质量会更好一点，但是细节会更少。由于存在内容重叠，我就索性将这些文章丢在了 HackMD 上，本文主要是给大家一个索引，方便大家去 HackMD 上查看。&lt;/p&gt;</description>
    </item>
    <item>
      <title>现代 DeFi: AAVE V4</title>
      <link>https://blog.wssh.dev/posts/aave-v4/</link>
      <pubDate>Thu, 11 Dec 2025 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/aave-v4/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文核心内容其实是对 AAVE v4 代码仓库的 &lt;a href=&#34;https://github.com/aave/aave-v4/blob/main/docs/overview.md&#34;&gt;Overview 文档&lt;/a&gt; 的翻译，但是相比于文档，本文补充了与该部分对应的代码，所以本文可以视为以文档作为纲领对 AAVE v4 代码库的阅读。 AAVE v4 继承了 AAVE v3 内的一些概念，对于这些概念，建议读者阅读笔者之前编写的 &lt;a href=&#34;https://blog.wssh.dev/posts/aave-interactive/&#34;&gt;AAVE 交互指南&lt;/a&gt; 一文，该文内给出了概念的功能和数学表达。&lt;/p&gt;</description>
    </item>
    <item>
      <title>DeFi 安全观察: Balancer V2 架构与舍入漏洞分析</title>
      <link>https://blog.wssh.dev/posts/balancer-v2-hack/</link>
      <pubDate>Fri, 28 Nov 2025 10:47:30 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/balancer-v2-hack/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;Balancer v2 作为以太坊内最核心的 AMM 之一，不久前遭受了一次严重的黑客攻击，接近 1 亿美金的 ETH 流动性质押代币被盗取。本文将以黑客在主网上发起的 &lt;a href=&#34;https://app.blocksec.com/explorer/tx/eth/0x6ed07db1a9fe5c0794d44cd36081d6a6df103fab868cdd75d581e3bd23bc9742&#34;&gt;攻击交易&lt;/a&gt; 为例，该攻击攻击了 &lt;code&gt;[WETH, BPT, osETH]&lt;/code&gt; 池。我们将以此攻击为例，介绍攻击者如何执行攻击，以及攻击合约到底进行哪些链上计算。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入探索 Gnosis Condition Token 和 LSMR 算法</title>
      <link>https://blog.wssh.dev/posts/gnosis-lsmr/</link>
      <pubDate>Tue, 18 Nov 2025 14:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/gnosis-lsmr/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在预测市场发展的早期阶段，Gnosis 编写了 &lt;a href=&#34;https://github.com/gnosis/conditional-tokens-contracts&#34;&gt;Condition tokens Contract&lt;/a&gt; 和 &lt;a href=&#34;https://github.com/gnosis/conditional-tokens-market-makers&#34;&gt;Condition tokens Market Maker&lt;/a&gt;。其中 Condition tokens 机制仍被 Polymarket 平台使用，读者可以阅读 &lt;a href=&#34;https://rocknblock.io/blog/how-polymarket-works-the-tech-behind-prediction-markets&#34;&gt;How Polymarket Works&lt;/a&gt; 了解更多信息。&lt;/p&gt;
&lt;p&gt;但是 Polymarket 并没有使用 Condition tokens 的核心特性，即 &lt;a href=&#34;http://blog.oddhead.com/2008/12/22/what-is-and-what-good-is-a-combinatorial-prediction-market/&#34;&gt;组合预测市场&lt;/a&gt;。在预测市场在传统金融发展过程中，&lt;a href=&#34;https://mason.gmu.edu/~rhanson/&#34;&gt;Robin Hanson&lt;/a&gt; 编写了两篇论文，这两篇论文提出了 LSMR 算法。读者可以在 &lt;a href=&#34;http://blog.oddhead.com/2006/10/30/implementing-hansons-market-maker/&#34;&gt;Implementing Hanson&amp;rsquo;s Market Maker &lt;/a&gt; 内找到 Hanson 论文的链接和对 LSMR 的介绍。另有&lt;a href=&#34;https://anoma.net/research/uniswapx&#34;&gt;材料&lt;/a&gt; 指出 Hanson 的论文实际上是 AMM 算法的思想来源。Gnosis 基于 LSMR 算法实现了  &lt;a href=&#34;https://github.com/gnosis/conditional-tokens-market-makers&#34;&gt;Condition tokens Market Maker&lt;/a&gt; 合约，该合约内部实现了 LSMR 算法和常规的恒定积算法(就是 Uniswap v2 使用的 AMM 算法)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>基于凸优化构建 AMM 路由求解算法</title>
      <link>https://blog.wssh.dev/posts/optimal-router/</link>
      <pubDate>Sat, 04 Oct 2025 08:00:00 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/optimal-router/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在 AMM 领域，跨多个 AMM 进行路由优化始终是一个问题。所谓路由优化是指单笔 swap 对单个池子可能产生较大冲击，但是假如我们将该笔交易分配到多个池子，那么我们可以获得更好的交易输出。一个典型的案例是 &lt;a href=&#34;https://app.odos.xyz/market&#34;&gt;odos&lt;/a&gt; 求解出的 100 ETH 兑换 USDC 的路径:&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入探索以太坊共识层:存款与提款</title>
      <link>https://blog.wssh.dev/posts/eth2-deposit-withdraw/</link>
      <pubDate>Sat, 27 Sep 2025 06:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/eth2-deposit-withdraw/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;一年前，GCC 基金会使用 &lt;a href=&#34;https://www.kiln.fi/&#34;&gt;Kiln&lt;/a&gt; 服务商进行了 128 ETH 质押，但最近 Kiln 服务商出现了可能的安全问题，为了保持用户资金安全，Kiln 选择提取了所有质押者的资金。本文主要介绍以下内容:&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入浅出借贷市场内的 Pendle 预言机</title>
      <link>https://blog.wssh.dev/posts/pendle-oracle/</link>
      <pubDate>Wed, 17 Sep 2025 08:00:00 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/pendle-oracle/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在构建基于 Uniswap V4 Hook 的借贷协议 &lt;a href=&#34;https://github.com/Licredity&#34;&gt;Licredity&lt;/a&gt; 时，我们希望引入 PT 作为担保品，但此前我并没有详细了解过 PT 预言机的开发生态，所以我阅读了目前 Morpho 内几个较大使用 PT 的市场，并阅读了这些市场内的预言机实现。&lt;/p&gt;</description>
    </item>
    <item>
      <title>从零开始的聚合器开发: Lotus Router 合约解析</title>
      <link>https://blog.wssh.dev/posts/lotus-router/</link>
      <pubDate>Wed, 30 Apr 2025 01:00:00 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/lotus-router/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;Lotus Router 是 &lt;a href=&#34;https://x.com/jtriley2p&#34;&gt;jtriley2p&lt;/a&gt; 开发的一个用于 MEV 的交易路由的合约。此处我们需要特别强调该路由合约是适用于 MEV 交易的，该路由合约完全不会处理来自 Uniswap 合约的回调内的数据，这使得交易发起者必须预先计算出精确数值已进行交易。&lt;/p&gt;</description>
    </item>
    <item>
      <title>现代 DeFi: Uniswap V4 数学库分析</title>
      <link>https://blog.wssh.dev/posts/uniswap-math/</link>
      <pubDate>Fri, 11 Apr 2025 11:11:11 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/uniswap-math/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在 Uniswap V4 内，我们可以看到一些复杂的数学计算模块，这些数学计算相关的模块大部分都使用了内联汇编实现，同时包含了大量的 magic number。在本文，我们将详细分析数学计算模块的实现。&lt;/p&gt;</description>
    </item>
    <item>
      <title>现代 DeFi: Uniswap V4</title>
      <link>https://blog.wssh.dev/posts/uniswap-v4/</link>
      <pubDate>Wed, 01 Jan 2025 01:00:00 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/uniswap-v4/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在上一篇博客内，我们详细介绍了 Uniswap V3 的基础原理。在本篇博客内，我们将继续介绍与 Uniswap V3 差别不大的 Uniswap v4 的原理及代码。需要注意的，Uniswap v4 的 AMM 曲线部分与 Uniswap v3 是一致的，但增加了一些优化的业务逻辑。本文将跳过所有与 Uniswap v3 类似的部分，只介绍 Uniswap v4 的特性。&lt;/p&gt;</description>
    </item>
    <item>
      <title>现代 DeFi: Uniswap V3</title>
      <link>https://blog.wssh.dev/posts/uniswap-v3/</link>
      <pubDate>Thu, 12 Dec 2024 00:47:30 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/uniswap-v3/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文将带领读者从零实现 Uniswap V3 的所有功能。在内容上，本文主要参考了 &lt;a href=&#34;https://www.youtube.com/playlist?list=PLO5VPQH6OWdXp2_Nk8U7V-zh7suI05i0E&#34;&gt;Constructor | Uniswap V3 Core Contract Explained &lt;/a&gt; 系列教程，同时部分内容也来自 &lt;a href=&#34;https://uniswapv3book.com/&#34;&gt;Uniswap V3 Development Book&lt;/a&gt; 以及 &lt;a href=&#34;https://paco0x.org/&#34;&gt;Paco 博客&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;本文内的代码可以参考 &lt;a href=&#34;https://github.com/t4sk/clamm&#34;&gt;clamm&lt;/a&gt; 代码库。&lt;/p&gt;</description>
    </item>
    <item>
      <title>区块链大数据分析:导入 xatu 数据集</title>
      <link>https://blog.wssh.dev/posts/clickhouse-xatu/</link>
      <pubDate>Fri, 06 Dec 2024 23:47:30 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/clickhouse-xatu/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在笔者之前的几篇使用 Clickhouse 进行数据分析的文章内使用了 Clickhouse 作为数据分析工具，并采用了 ifast 作为数据源。但 ifast 在很久前就已经停止运营。而且依赖 ifast 并不是一个很好的选择。本文将摆脱对 ifast 数据源的依赖。但是我们依旧保留之前的文章，因为这些文章内的数据清洗工作具有较高价值。&lt;/p&gt;</description>
    </item>
    <item>
      <title>现代 DeFi: 最小化借贷协议 Morpho</title>
      <link>https://blog.wssh.dev/posts/morpho-bule/</link>
      <pubDate>Thu, 28 Nov 2024 19:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/morpho-bule/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;Morpho 是目前以太坊内第四大借贷协议(数据来源为 &lt;a href=&#34;https://defillama.com/protocols/Lending/Ethereum&#34;&gt;defillama&lt;/a&gt;)。相比于其他高度复杂的借贷协议，Morpho Blue 的合约使用了 500 行代码就完成了所有的借贷工作。同时，Morpho 也是一个无许可的借贷协议，任何用户都可以调用合约内部的 &lt;code&gt;createMarket&lt;/code&gt; 函数使用指定的参数创建交易市场。但是需要注意，Morpho 也并不是完全自由的，用户不可以随意指定一些借贷参数。&lt;/p&gt;</description>
    </item>
    <item>
      <title>椭圆曲线密码学与 Typescript 实现</title>
      <link>https://blog.wssh.dev/posts/secp256k1-ts/</link>
      <pubDate>Thu, 21 Nov 2024 10:47:30 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/secp256k1-ts/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;椭圆曲线密码学是现代区块链的核心之一，Ethereum 和 Bitcoin 等都依赖于椭圆曲线密码学(Elliptic-curve Cryptography，简称为 ECC)。在本文中，我们将介绍 Ethereum 使用的椭圆曲线算法 &lt;code&gt;secp256k1&lt;/code&gt; 并尝试从零开始实现它。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solidity Gas 优化清单及其原理：存储、内存与操作符</title>
      <link>https://blog.wssh.dev/posts/gas-optimize-part1/</link>
      <pubDate>Mon, 26 Aug 2024 02:37:27 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/gas-optimize-part1/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;最近发现了一个 &lt;a href=&#34;https://snappify.com/view/f9a681c7-834c-467e-b34d-5ad443a893f2&#34;&gt;非常有意思的 PPT&lt;/a&gt; 介绍了大量的 gas 优化技巧，本文为此 PPT 的文字版本，但与 PPT 不同的是，本文会会介绍合约内函数 gas 的计算并尽可能介绍每种优化方案的原理。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ERC7527: Premium 驱动的去中心化价值共识范式</title>
      <link>https://blog.wssh.dev/posts/erc7527-premium/</link>
      <pubDate>Sat, 22 Jun 2024 18:45:30 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/erc7527-premium/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;如何对早期的想法或者应用进行价值共识，并参与投资？这在去中心化世界是一个巨大的挑战。ERC7527 遵循“信贷创造货币”的共识，提出了一种基于 Premium 驱动的去中心化定价的范式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>漫步链上定价模型与 ERC7527</title>
      <link>https://blog.wssh.dev/posts/market-function/</link>
      <pubDate>Sat, 11 May 2024 13:45:30 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/market-function/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;纯链上资产定价是一项相当有趣的工作，常见的方案都是基于函数报价。具体来说，包含以下三类:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;各类用于代币互换的 AMM 曲线，以 Uniswap 推出的 x * y = k 最为著名&lt;/li&gt;
&lt;li&gt;直接根据供应量等因子给出报价的 Bonding Curve 方案，近期的 FriendTech 和 pump.fun 都属于此类&lt;/li&gt;
&lt;li&gt;基于拍卖的方案，链上拍卖方案往往使用荷兰式拍卖以提高效率，较少见到因英式拍卖，且由于技术问题，也较难见到基于密封报价的盲拍。较为著名的是 paradigm 推出的 GDA 和 VRGDA 方案，以及 UniswapX 内的荷兰式拍卖方案&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;上述不同的函数定价方案都存在一定的优点和缺陷，本文将首先介绍这些目前已经被广泛使用的链上资产定价方案，然后本文将介绍基于 ERC7527 及连续函数报价的新一代链上资产定价方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>以太坊节点快速部署指南</title>
      <link>https://blog.wssh.dev/posts/ethereum-node/</link>
      <pubDate>Sun, 17 Mar 2024 22:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/ethereum-node/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;作为以太坊开发者，拥有自己的以太坊节点是一个常规操作。而且大量的以太坊项目也依赖于以太坊节点，本文将向读者介绍如何最快的部署以太坊的完整节点，包括执行层节点与共识层节点。我选择使用 &lt;a href=&#34;https://github.com/paradigmxyz/reth&#34;&gt;Reth&lt;/a&gt; 作为执行层节点，选择使用 &lt;a href=&#34;https://github.com/sigp/lighthouse&#34;&gt;Lighthouse&lt;/a&gt; 作为共识层节点。&lt;/p&gt;</description>
    </item>
    <item>
      <title>链上随机数生成:理论与实现</title>
      <link>https://blog.wssh.dev/posts/solady-random/</link>
      <pubDate>Mon, 29 Jan 2024 10:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/solady-random/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;对于伪随机数的生成，特别是正态分布随机数的生成在智能合约内拥有较为广阔的使用场景。本文主要讨论链上的伪随机数生成。链上没有真随机数的观点是正确的，但是此观点不应该阻碍智能合约工程师探索链上高质量伪随机数生成，链上也有具有较难操纵的随机数来源，比如 &lt;a href=&#34;https://eips.ethereum.org/EIPS/eip-4399&#34;&gt;EIP-4399&lt;/a&gt; 引入的 &lt;code&gt;PREVRANDAO&lt;/code&gt; 操作码，但是将此随机数作为种子计算如正态分布的随机数的有关讨论则较少在智能合约领域提及，本文主要对此问题进行讨论。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入探索 GDA 与 VRGDA</title>
      <link>https://blog.wssh.dev/posts/gda-with-vrgda/</link>
      <pubDate>Mon, 25 Dec 2023 14:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/gda-with-vrgda/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;VRGDA(Variable Rate GDAs) 是一种渐进式荷兰式拍卖(Gradual Dutch Auctions, GDAs)的扩展，其作用是在超长代币发行期间保持一个合理价格的且定期的流动性释放。而普通的 GDAs 则是只可以保证代币出售的价格合理，但不能保证代币在合适的时间释放。&lt;/p&gt;</description>
    </item>
    <item>
      <title>多项式逼近及其应用:Huff实现</title>
      <link>https://blog.wssh.dev/posts/huff-approximation/</link>
      <pubDate>Fri, 15 Dec 2023 12:47:30 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/huff-approximation/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在 &lt;a href=&#34;https://blog.wssh.dev/posts/approximate/&#34;&gt;上一篇文章&lt;/a&gt; 中，我们介绍了常见的几种有理多项式插值方法，但我们并没有给出具体的 Huff 语言实现及其测试。本文仍考虑在智能合约内实现以下公式:&lt;/p&gt;
&lt;p&gt;$$
f(x) = e^x
$$&lt;/p&gt;
&lt;p&gt;与上一篇文章不同，本文不会进一步讨论具体的插值原理，而是主要介绍插值的实现及其误差测试。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cairo 实战入门:Starknet Foundry 与组件语法</title>
      <link>https://blog.wssh.dev/posts/sn-foundry-cairo/</link>
      <pubDate>Thu, 16 Nov 2023 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/sn-foundry-cairo/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;随着 &lt;a href=&#34;https://github.com/foundry-rs/starknet-foundry&#34;&gt;Starknet Foundry&lt;/a&gt; 的进一步更新，使用 &lt;code&gt;Starknet Foundry&lt;/code&gt; 进行 Cairo 智能合约开发可能会逐渐成为未来主流。&lt;/p&gt;
&lt;p&gt;本文的主要内容实际上是介绍 &lt;code&gt;cairo v2.3&lt;/code&gt; 引入的 &lt;a href=&#34;https://community.starknet.io/t/cairo-components/101136&#34;&gt;Components&lt;/a&gt; 重大更新，但考虑 &lt;code&gt;Starknet Foundry&lt;/code&gt; 的活跃开发，所以本文使用了 &lt;code&gt;Starknet Foundry&lt;/code&gt; 作为开发框架，而不是与之前的文章一样使用 Cairo 自带的框架。&lt;/p&gt;</description>
    </item>
    <item>
      <title>多项式逼近及其应用:理论与计算</title>
      <link>https://blog.wssh.dev/posts/approximate/</link>
      <pubDate>Wed, 15 Nov 2023 10:47:30 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/approximate/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在 solidity 的 gas 优化过程中，我们常会遇到一些复杂的数学计算，这些复杂的数学计算在 solidity 中实现往往是困难的且极其消耗 gas 的，本文将给出一系列通用的数学方法以实现使用多项式逼近复杂数学公式，并给出对应的相关代码。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入探索 Cairo: Sierra IR 与 Cairo 底层</title>
      <link>https://blog.wssh.dev/posts/deep-in-sierra/</link>
      <pubDate>Sun, 17 Sep 2023 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/deep-in-sierra/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;总所周知，在 StarkNet Cairo 中，合约需要经过以下步骤进行编译和部署:&lt;/p&gt;
&lt;img alt=&#34;Cairo Complie&#34; loading=&#34;lazy&#34; src=&#34;https://img.gopic.xyz/f1424e7997da290ddced38e7f9eb9595.png&#34;&gt;&lt;p&gt;在此流程中，我们发现合约首先被编译为 Sierra 这一中间表示层。Sierra 的全称为 &lt;code&gt;Safe Intermediate Representation&lt;/code&gt; ，直译为安全中间表示层。在本文中，我们将探讨 Sierra 为什么具有 “安全” 和 “中间表示” 两个特性。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cairo 实战入门:可升级合约与跨链信息发送</title>
      <link>https://blog.wssh.dev/posts/cairo1-with-bridge/</link>
      <pubDate>Sat, 29 Jul 2023 14:45:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/cairo1-with-bridge/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;如果读者阅读过笔者之前的文章就会发现，我在 solidity 中使用了 ERC20 代币 -&amp;gt; 可实升级合约的学习路径。为了保持文章的统一性，我准备在此文中介绍 cairo 的可升级合约编程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cairo 实战入门:编写测试部署ERC-20代币智能合约</title>
      <link>https://blog.wssh.dev/posts/cairo1-with-erc20/</link>
      <pubDate>Thu, 06 Jul 2023 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/cairo1-with-erc20/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;Cairo 是 ZK Rollup 的领域专用语言，目前仅用于 &lt;a href=&#34;https://www.starknet.io/en&#34;&gt;StarkNet&lt;/a&gt; 项目。随着 Rollup 叙事的发展，我们认为 cairo 在未来一定会成为智能合约开发的核心语言。&lt;/p&gt;
&lt;p&gt;本文类似我之前编写的 &lt;a href=&#34;https://blog.wssh.trade/posts/foundry-with-erc20/&#34;&gt;Foundry教程：编写测试部署ERC-20代币智能合约&lt;/a&gt; ，介绍了使用 cairo 1 v2 版本(该版本也可称为 &lt;code&gt;Cairo 2&lt;/code&gt;) 进行编程、测试和部署的全流程。由于缺乏易用工具，本文放弃了本地测试网部署。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu Python 多版本安装</title>
      <link>https://blog.wssh.dev/posts/ubuntu-python/</link>
      <pubDate>Wed, 05 Jul 2023 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/ubuntu-python/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;由于 Python 3 有几次较为跳跃的更新，导致大量使用 Python 3 作为开发工具的软件会对 Python 3 的版本进行严格限制，如限制使用 Python 3.8 - Python 3.9 版本。这要求开发者开发环境内应具有多版本的 python 。在 Ubuntu 等 Linux 系统下，Python 的安装都是使用的源码编译方法，这对一些 Python 开发者并不友好，本文会给出一种较为简单的多版本 Python 安装方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入 ENS 系统</title>
      <link>https://blog.wssh.dev/posts/ens/</link>
      <pubDate>Mon, 26 Jun 2023 14:45:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/ens/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;ENS 是一个以太坊上的开放、可拓展的命名系统，也是目前在以太坊中最常用的命名系统。ENS 的功能是将人类较难判读的以太坊地址转化为人类可读的名字，如 &lt;code&gt;vitalik.eth&lt;/code&gt; 。&lt;/p&gt;</description>
    </item>
    <item>
      <title>TxRouter使用指南</title>
      <link>https://blog.wssh.dev/posts/txrouter/</link>
      <pubDate>Mon, 10 Apr 2023 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/txrouter/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在 ETHBeijing 黑客松活动中，我花费三天时间构造了多方资产发送和聚合工具——&lt;a href=&#34;https://github.com/wangshouh/TxRouter&#34;&gt;TxRouter&lt;/a&gt; 工具。本文主要介绍该工具的具体功能、使用方法以及构造思路。&lt;/p&gt;
&lt;h2 id=&#34;项目优势&#34;&gt;项目优势&lt;/h2&gt;
&lt;p&gt;TxRouter 是资产多方发送和聚合工具。更加详细的说，该工具解决了以下问题:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Huff实战:编写测试极致效率数学模块</title>
      <link>https://blog.wssh.dev/posts/huff-math/</link>
      <pubDate>Wed, 15 Mar 2023 11:02:00 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/huff-math/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Huff&lt;/code&gt; 是 EVM 专用语言，与 Solidity 不同，Huff 是面向底层的语言，可以类比与汇编语言。这意味着开发者可以直接操作栈、内存和存储等内容，但另一方面，这些底层操作往往没有安全保证，这需要开发者更加仔细的审计和测试代码。本文章由于涉及大量 EVM 底层操作，希望读者阅读过以下文章:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Foundry 高级测试: Fuzz、Invariant与形式化证明</title>
      <link>https://blog.wssh.dev/posts/foundry-test/</link>
      <pubDate>Tue, 14 Mar 2023 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/foundry-test/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文以较为简单的 &lt;code&gt;WETH&lt;/code&gt; 合约为例，介绍在 &lt;code&gt;Foundry&lt;/code&gt; 架构中常用的几种较为高级的测试方法，如下:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fuzz Testing 基于属性的单元测试的升级版&lt;/li&gt;
&lt;li&gt;Invariant Testing 基于随机数据整体调用的测试&lt;/li&gt;
&lt;li&gt;Formal Verification 形式化证明&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本文也会给出上述测试手段的 &lt;code&gt;github ci&lt;/code&gt; 配置文件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一个简单的Sublime设置</title>
      <link>https://blog.wssh.dev/posts/sublime-setting/</link>
      <pubDate>Sun, 05 Mar 2023 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/sublime-setting/</guid>
      <description>&lt;h2 id=&#34;问题&#34;&gt;问题&lt;/h2&gt;
&lt;p&gt;如果读者熟悉我，应该会发现我经常使用 VSCode 作为主力编辑器，但随着我安装的 VSCode 的插件逐渐增加，我发现对于部分较小的任务使用 VSCode 过于笨重，比如简单的 Markdown 文件编辑工作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 Pandas 分析亿行数据</title>
      <link>https://blog.wssh.dev/posts/python-pandas-million/</link>
      <pubDate>Wed, 01 Mar 2023 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/python-pandas-million/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;声明，本文译自 &lt;a href=&#34;https://datapythonista.me/blog/pandas-with-hundreds-of-millions-of-rows&#34;&gt;pandas with hundreds of millions of rows&lt;/a&gt;。 如果您的英语水平较好，可以阅读原文。为了译文更加流畅，译者补充了部分内容。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;问题&#34;&gt;问题&lt;/h2&gt;
&lt;p&gt;我们希望获得国内航班平均延误最长的 5 个美国机场。&lt;/p&gt;</description>
    </item>
    <item>
      <title>图数据分析:使用 cozodb 分析以太坊交易数据</title>
      <link>https://blog.wssh.dev/posts/eth-graph/</link>
      <pubDate>Wed, 22 Feb 2023 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/eth-graph/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在之前的两篇文章中，我们讨论了对以太坊常规数据的导入和分析。文章链接如下:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.wssh.trade/posts/clickhouse-with-blockchain/&#34;&gt;Clickhouse 以太坊分析:基础交易数据清洗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.wssh.trade/posts/clickhouse-eth-logs/&#34;&gt;Clickhouse 以太坊分析:交易日志分析&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;如果您未阅读过以上文章并不影响您继续阅读本篇文章，本文内所有数据集均提供下载链接。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Clickhouse 以太坊分析:交易日志分析</title>
      <link>https://blog.wssh.dev/posts/clickhouse-eth-logs/</link>
      <pubDate>Wed, 08 Feb 2023 13:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/clickhouse-eth-logs/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在&lt;a href=&#34;https://blog.wssh.dev/posts/clickhouse-with-blockchain/&#34;&gt;上一篇&lt;/a&gt;中，我们介绍了如何使用 &lt;code&gt;Clickhouse&lt;/code&gt; 进行基础的信息提取，这些信息往往依赖于以太坊底层机制，我们只能获得如 ETH 转账、 gas 等信息，这些信息并没有涵盖以太坊中最重要的智能合约的相关数据。这使我们无法获得 ERC-20 代币转账或 NFT 转移等数据。&lt;/p&gt;</description>
    </item>
    <item>
      <title>NFT合约分析:ERC721A</title>
      <link>https://blog.wssh.dev/posts/erc721a-contract/</link>
      <pubDate>Mon, 06 Feb 2023 10:27:17 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/erc721a-contract/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文主要介绍标准NFT实现的一个变体，即&lt;code&gt;ERC721A&lt;/code&gt;合约实现的相关细节。&lt;code&gt;ERC721A&lt;/code&gt;是由著名NFT系列&lt;a href=&#34;https://www.azuki.com/&#34;&gt;Azuki&lt;/a&gt;提出，该系列NFT是著名的蓝筹NFT。本文主要聚焦于&lt;code&gt;Azuki&lt;/code&gt;提出的&lt;code&gt;ERC721A&lt;/code&gt;合约的代码细节分析。&lt;/p&gt;
&lt;p&gt;与传统的&lt;code&gt;ERC721&lt;/code&gt;实现相比，&lt;code&gt;ERC721A&lt;/code&gt;在批量铸造(batch mint)方面具有显著的&lt;code&gt;gas&lt;/code&gt;优势，这得益于&lt;code&gt;ERC721A&lt;/code&gt;的惰性初始化方面的设计。关于&lt;code&gt;ERC721A&lt;/code&gt;与普通&lt;code&gt;ERC721&lt;/code&gt;实现的对比，我们将会在下文展开说明。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Clickhouse 以太坊分析:基础交易数据清洗</title>
      <link>https://blog.wssh.dev/posts/clickhouse-with-blockchain/</link>
      <pubDate>Sat, 21 Jan 2023 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/clickhouse-with-blockchain/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;笔者最近遇到了许多关于数据分析的文章，大部分都使用了 &lt;a href=&#34;https://dune.com/browse/dashboards&#34;&gt;Dune&lt;/a&gt; 等 &lt;code&gt;SaaS&lt;/code&gt; 工具，这些工具往往提供了清洗后的区块链数据和数据库分析工具。对于大部分数据分析师而言，这些工具可以应对一系列复杂的数据分析问题，而且免去了搭建数据处理平台的苦恼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>互联网廉价生活指南:域名</title>
      <link>https://blog.wssh.dev/posts/cost-effective-tld/</link>
      <pubDate>Tue, 17 Jan 2023 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/cost-effective-tld/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;由于最近笔者正在注册域名且希望域名可以长时间使用，所以我特别注意续费价格比较低的域名。&lt;/p&gt;
&lt;p&gt;在本文的开始，我们给出最终结论以方便读者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;来自&lt;a href=&#34;https://porkbun.com&#34;&gt;porkbun&lt;/a&gt;的&lt;code&gt;.stream&lt;/code&gt; 和 &lt;code&gt;.cyou&lt;/code&gt; 域名，域名注册费为 2.56 美元和 2.04 美元，续费费用为 4.59 美元和 4.61 美元。可使用优惠码，减免 1 美元。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入解析AAVE智能合约:取款</title>
      <link>https://blog.wssh.dev/posts/aave-contract-part3/</link>
      <pubDate>Wed, 28 Dec 2022 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/aave-contract-part3/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文主要介绍&lt;code&gt;AAVE V3&lt;/code&gt;合约中的取款&lt;code&gt;withdraw&lt;/code&gt;函数。在阅读本文前，请读者确保已经阅读过以下文章:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.wssh.dev/posts/aave-interactive/&#34;&gt;AAVE交互指南&lt;/a&gt;，本文将大量使用此文中给出的各种数学计算公式&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.wssh.dev/posts/aave-contract-part1/&#34;&gt;深入解析AAVE智能合约:存款&lt;/a&gt;，此篇文章内给出的部分函数和大部分数据结构在本文内页有所使用，重复部分在本文内不再解释&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;读者也可选读&lt;a href=&#34;https://blog.wssh.dev/posts/aave-contract-part2/&#34;&gt;深入解析AAVE智能合约:计算和利率&lt;/a&gt;，此文介绍了数学计算底层实现逻辑，与代码逻辑关系不大，读者可选读此文。&lt;/p&gt;
&lt;p&gt;本文可认为是对&lt;a href=&#34;https://blog.wssh.dev/posts/aave-contract-part1/&#34;&gt;深入解析AAVE智能合约:存款&lt;/a&gt;的进一步补充，由于取款逻辑较为简单，所以此文的关键在于进一步深挖某些常用函数。这些函数在《存款》一文中虽有提及但未深入探讨的函数，如&lt;code&gt;updateInterestRates&lt;/code&gt;等。&lt;/p&gt;
&lt;h2 id=&#34;代码分析&#34;&gt;代码分析&lt;/h2&gt;
&lt;p&gt;在&lt;code&gt;src/protocol/pool/Pool.sol&lt;/code&gt;合约内，我们可以找到如下函数:&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入解析AAVE智能合约:计算和利率</title>
      <link>https://blog.wssh.dev/posts/aave-contract-part2/</link>
      <pubDate>Wed, 21 Dec 2022 13:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/aave-contract-part2/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文主要讨论&lt;code&gt;AAVE V3&lt;/code&gt;中的数学计算模块，该模块位于&lt;code&gt;src/protocol/libraries/math&lt;/code&gt;文件夹内，基础合约为&lt;code&gt;WadRayMath&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入解析AAVE智能合约:存款</title>
      <link>https://blog.wssh.dev/posts/aave-contract-part1/</link>
      <pubDate>Sat, 10 Dec 2022 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/aave-contract-part1/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;我们在上一篇文章&lt;a href=&#34;https://blog.wssh.dev/posts/aave-interactive/&#34;&gt;AAVE交互指南&lt;/a&gt;中主要介绍了&lt;code&gt;aave&lt;/code&gt;前端、利率计算等内容，本篇文章
将在交互指南基础上介绍&lt;code&gt;aave-v3&lt;/code&gt;的合约源代码的相关情况。&lt;/p&gt;
&lt;p&gt;与之前所写的&lt;a href=&#34;https://blog.wssh.dev/posts/deep-in-safe-part-1/&#34;&gt;深入解析Safe多签钱包智能合约&lt;/a&gt;系列文章不同，本文主要以我们在&lt;a href=&#34;https://blog.wssh.dev/posts/aave-interactive/&#34;&gt;AAVE交互指南&lt;/a&gt;中进行的合约操作为主线进行分析介绍，较为实战化。&lt;/p&gt;
&lt;p&gt;相比于其他项目，&lt;code&gt;AAVE&lt;/code&gt;提供了一个较为完整的&lt;a href=&#34;https://docs.aave.com/developers/getting-started/readme&#34;&gt;文档&lt;/a&gt;。在文档内基本涵盖了所有函数的签名及其作用，读者也可作为阅读源代码的重要参考。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;AAVE&lt;/code&gt;的总体架构如下:&lt;/p&gt;</description>
    </item>
    <item>
      <title>基于Python与GraphQL的链上数据分析实战</title>
      <link>https://blog.wssh.dev/posts/on-chain-data-basement/</link>
      <pubDate>Tue, 06 Dec 2022 19:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/on-chain-data-basement/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文主要介绍如何通过免费且高效的的基于GraphQL的&lt;a href=&#34;https://basement.dev/&#34;&gt;basement&lt;/a&gt;进行部分链上数据分析实战。本文不要求读者具有&lt;code&gt;GraphQL&lt;/code&gt;相关经验，但要求读者会使用&lt;code&gt;Python&lt;/code&gt;中的&lt;code&gt;Pandas&lt;/code&gt;库，这是本文主要使用的数据分析工具。换言之，本文适用于了解数据分析而不了解链上数据获取的读者。本文会涵盖以下内容:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;GraphQL&lt;/code&gt;检索数据基础入门&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Basement&lt;/code&gt;的基础API实战&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在阅读本文前，读者最好安装一个支持&lt;code&gt;GraphQL&lt;/code&gt;请求方法的API调试工具，在此处，我个人使用的是&lt;a href=&#34;https://www.postman.com/&#34;&gt;Postman&lt;/a&gt;软件，但读者选择其他软件亦可。本文使用了新兴 Web3 链上数据API提供商&lt;a href=&#34;https://basement.dev/&#34;&gt;basement&lt;/a&gt;，此处我们使用的是免费版，无需 API Key 等配置，具体限制参考下图:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python异步编程实战入门:从概念到实战</title>
      <link>https://blog.wssh.dev/posts/python-asyncio/</link>
      <pubDate>Thu, 01 Dec 2022 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/python-asyncio/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在Python中存在&lt;code&gt;GIL&lt;/code&gt;机制，该机制保证了在Python中同时间内仅能运行一行代码，这导致了Python无法真正实现多线程。但Python中存在另一种神奇的机制，即异步机制。在计算机领域，我们经常提到异步、并行、多线程等名词，但本文不想讨论这些名词具体的含义，这些对于概念的讨论在很多情况下是无意义的。本文将专注于介绍异步机制，在本文的最后，我们会引入多线程等内容以进一步提高Python性能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>加密货币衍生品研究:开放衍生品交易基本数据获取</title>
      <link>https://blog.wssh.dev/posts/crypto-derivatives-data/</link>
      <pubDate>Thu, 17 Nov 2022 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/crypto-derivatives-data/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;最近笔者在写一篇关于加密货币方面的金融小论文，由于在写作过程中涉及到了部分加密货币衍生品，如期货、期权等，所以笔者研究了加密货币衍生品的交易数据获取。本文主要涉及以下衍生品的数据获取:&lt;/p&gt;</description>
    </item>
    <item>
      <title>智能合约开发效率工具</title>
      <link>https://blog.wssh.dev/posts/smart-contract-tool/</link>
      <pubDate>Sat, 12 Nov 2022 10:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/smart-contract-tool/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;随着区块链的发展，智能合约的开发逐渐成为一片新的蓝海。与智能合约发展一同进步的其实还有一系列的智能合约开发工具和安全审计工具，但由于此方面很少有人介绍，导致大量新型工具并不为人所熟知。本文主要介绍智能合约开发和安全审计工具，以智能合约开发和测试为主线，依次介绍涉及以下方面的工具:&lt;/p&gt;</description>
    </item>
    <item>
      <title>AAVE交互指南</title>
      <link>https://blog.wssh.dev/posts/aave-interactive/</link>
      <pubDate>Sat, 15 Oct 2022 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/aave-interactive/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文主要介绍如何在&lt;code&gt;AAVE&lt;/code&gt;内进行质押、借贷等基本操作，为读者进一步研究&lt;code&gt;AAVE&lt;/code&gt;源代码奠定坚实的基础。&lt;/p&gt;
&lt;p&gt;本文要求读者具有以下条件:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;熟悉以太坊钱包使用&lt;/li&gt;
&lt;li&gt;拥有一定的&lt;code&gt;GoerliETH&lt;/code&gt;测试网&lt;code&gt;ETH&lt;/code&gt;，可前往&lt;a href=&#34;https://goerlifaucet.com/&#34;&gt;Goerlin Faucet&lt;/a&gt;进行领取&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;上述条件可以保证读者可以理解本文的大部分内容，由于笔者本人具有较强的技术背景且未来准备编写&lt;code&gt;AAVE&lt;/code&gt;智能合约解析系列文章，所以本文给出了部分合约裸交互(即直接与合约函数交互而并不通过网页)，理解这一部分内容需要读者了解智能合约开发和&lt;code&gt;cast&lt;/code&gt;使用。如果您不是技术人员，可以酌情跳过此部分。考虑到安全性问题，本文提供的裸交互均为&lt;code&gt;eth_call&lt;/code&gt;而不涉及真正的交易(需要签名和区块确认的交易)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>以太坊机制详解:交易与交易池</title>
      <link>https://blog.wssh.dev/posts/ethereum-transcation/</link>
      <pubDate>Fri, 14 Oct 2022 23:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/ethereum-transcation/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;我们在上一篇&lt;a href=&#34;https://blog.wssh.dev/posts/ethereum-gas/&#34;&gt;以太坊机制详解:Gas Price计算&lt;/a&gt;文章内介绍了以太坊中交易的具体&lt;code&gt;gas&lt;/code&gt;计算相关规则。本篇文章将在此基础上介绍以下内容:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;客户端如何构建一笔交易&lt;/li&gt;
&lt;li&gt;服务端如何处理交易并进行打包&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本文以一笔交易的生命周期为主线安排全文，从交易池初始化、交易构造到交易执行，尽可能为读者全景展示以太坊中的交易所涉及的方方面面。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用Quartz部署Obsidian笔记网站</title>
      <link>https://blog.wssh.dev/posts/obsidian-quartz/</link>
      <pubDate>Thu, 06 Oct 2022 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/obsidian-quartz/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;使用双链笔记&lt;a href=&#34;https://obsidian.md/&#34;&gt;Obsidian&lt;/a&gt;进行个人知识管理日益成为主流。但部署&lt;code&gt;Obsidian&lt;/code&gt;展示网站属于付费功能，这对于很多人来说是一个严重的阻碍。本文将介绍如何使用开源且免费的&lt;a href=&#34;https://github.com/jackyzha0/quartz&#34;&gt;Quartz&lt;/a&gt;进行部署&lt;code&gt;Obsidian&lt;/code&gt;笔记并介绍如何进行持续集成和部署。&lt;/p&gt;
&lt;p&gt;在继续阅读前，读者可以前往&lt;a href=&#34;https://quartz.jzhao.xyz/&#34;&gt;此网站&lt;/a&gt;观察部署后的结果。&lt;/p&gt;
&lt;h2 id=&#34;前置条件&#34;&gt;前置条件&lt;/h2&gt;
&lt;p&gt;阅读本文需要读者具有以下条件:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;拥有一个Github账户&lt;/li&gt;
&lt;li&gt;熟悉简单的Git概念，如&lt;code&gt;stage&lt;/code&gt;和&lt;code&gt;commit&lt;/code&gt;等&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;fork仓库&#34;&gt;Fork仓库&lt;/h2&gt;
&lt;p&gt;首先前往&lt;a href=&#34;https://github.com/jackyzha0/quartz&#34;&gt;Quartz&lt;/a&gt;的仓库地址，点击页面中的&lt;code&gt;Use this template&lt;/code&gt;按钮，如下图:&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入解析Safe多签钱包智能合约:Fallback合约</title>
      <link>https://blog.wssh.dev/posts/deep-in-safe-part-3/</link>
      <pubDate>Thu, 22 Sep 2022 13:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/deep-in-safe-part-3/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在&lt;a href=&#34;https://blog.wssh.dev/posts/deep-in-safe-part-2/&#34;&gt;深入解析Safe多签钱包智能合约:模块&lt;/a&gt;中分析&lt;code&gt;FallbackManager&lt;/code&gt;模块时，限于篇幅限制且&lt;code&gt;fallback&lt;/code&gt;合约自成一体，所以我们没有介绍具体的&lt;code&gt;fallback&lt;/code&gt;模块。此篇文章的主要目的是完成这一缺陷，全面介绍&lt;code&gt;fallback&lt;/code&gt;合约。&lt;/p&gt;
&lt;p&gt;本文涉及的代码主要位于&lt;code&gt;src/handler&lt;/code&gt;内，读者可自行查阅&lt;a href=&#34;https://github.com/wangshouh/foundry-safe&#34;&gt;此仓库&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;合理性分析&#34;&gt;合理性分析&lt;/h2&gt;
&lt;p&gt;此节主要关注于我们为什么需要&lt;code&gt;Fallback&lt;/code&gt;合约这一主题，希望可以为读者在后文阅读源代码时起到提纲挈领的作用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>以太坊执行层P2P网络架构与设计:Discv5</title>
      <link>https://blog.wssh.dev/posts/ethereum-p2p-discv5/</link>
      <pubDate>Sun, 11 Sep 2022 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/ethereum-p2p-discv5/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;关于以太坊的&lt;code&gt;P2P&lt;/code&gt;网络问题，目前的资料较为零散，本文尝试结合具体的&lt;code&gt;go-ethereum&lt;/code&gt;源代码，尽可能为读者完整介绍以太坊所使用的&lt;code&gt;ÐΞVp2p&lt;/code&gt;(&lt;code&gt;devp2p&lt;/code&gt;)网络架构和运转流程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入解析Safe多签钱包智能合约:模块</title>
      <link>https://blog.wssh.dev/posts/deep-in-safe-part-2/</link>
      <pubDate>Sat, 10 Sep 2022 16:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/deep-in-safe-part-2/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在上一篇&lt;a href=&#34;https://blog.wssh.dev/posts/deep-in-safe-part-1/&#34;&gt;博客&lt;/a&gt;中，我们已经讨论了&lt;code&gt;safe&lt;/code&gt;合约的代理部署和核心的&lt;code&gt;GnosisSafe&lt;/code&gt;合约。在此博客内，我们主要讨论在上一篇文章内没有介绍的&lt;code&gt;safe&lt;/code&gt;合约内各个模块的概念和代码。我们会按照各模块在&lt;code&gt;GnosisSafe&lt;/code&gt;合约内出现的顺序进行解释。&lt;/p&gt;
&lt;h2 id=&#34;ownermanager&#34;&gt;OwnerManager&lt;/h2&gt;
&lt;p&gt;在&lt;code&gt;GnosisSafe.sol&lt;/code&gt;的&lt;code&gt;setUp&lt;/code&gt;函数中，我们使用了此模块中的&lt;code&gt;setupOwners&lt;/code&gt;函数。&lt;/p&gt;
&lt;p&gt;此模块主要涉及签名者的管理等功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入解析Safe多签钱包智能合约:代理部署与核心合约</title>
      <link>https://blog.wssh.dev/posts/deep-in-safe-part-1/</link>
      <pubDate>Sat, 27 Aug 2022 16:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/deep-in-safe-part-1/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Safe&lt;/code&gt;(或称&lt;code&gt;Gnosis Safe&lt;/code&gt;)是目前在以太坊中使用最为广泛的多签钱包。本文主要解析此钱包的逻辑设计和代码编写。&lt;/p&gt;
&lt;p&gt;读者可以前往&lt;a href=&#34;https://github.com/safe-global/safe-contracts&#34;&gt;Safe Contracts&lt;/a&gt;获得源代码。&lt;/p&gt;</description>
    </item>
    <item>
      <title>以太坊机制详解:Gas Price计算</title>
      <link>https://blog.wssh.dev/posts/ethereum-gas/</link>
      <pubDate>Wed, 24 Aug 2022 15:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/ethereum-gas/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在以太坊London升级后，以太坊启用了&lt;code&gt;EIP1559&lt;/code&gt;进行&lt;code&gt;gas&lt;/code&gt;计算。由于&lt;code&gt;EIP1559&lt;/code&gt;引入的新的&lt;code&gt;gas&lt;/code&gt;机制较为复杂，所以我写了此文介绍了以太坊的&lt;code&gt;gas&lt;/code&gt;机制。&lt;/p&gt;</description>
    </item>
    <item>
      <title>EVM底层探索:字节码级分析最小化代理标准EIP1167</title>
      <link>https://blog.wssh.dev/posts/deep-in-eip1167/</link>
      <pubDate>Mon, 22 Aug 2022 11:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/deep-in-eip1167/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文主要介绍最小化代理合约&lt;code&gt;EIP1167&lt;/code&gt;的相关内容。为了实现最小化，&lt;code&gt;EIP1167&lt;/code&gt;使用了&lt;code&gt;bytecode&lt;/code&gt;(字节码)作为主要编码方式，即直接使&lt;code&gt;EVM&lt;/code&gt;汇编指令进行编写。本文将在&lt;code&gt;openzeppelin&lt;/code&gt;提供的&lt;a href=&#34;https://docs.openzeppelin.com/contracts/4.x/api/proxy#Clones&#34;&gt;合约&lt;/a&gt;基础上，为读者逐个字节码的解析&lt;code&gt;EIP1167&lt;/code&gt;，帮助读者理解&lt;code&gt;EVM&lt;/code&gt;底层汇编和&lt;code&gt;EIP1167&lt;/code&gt;的实现原理。&lt;/p&gt;</description>
    </item>
    <item>
      <title>EIP712的扩展使用</title>
      <link>https://blog.wssh.dev/posts/eip712-extend/</link>
      <pubDate>Tue, 16 Aug 2022 10:27:17 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/eip712-extend/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文在&lt;a href=&#34;https://blog.wssh.dev/posts/ecsda-sign-chain/&#34;&gt;上一篇文章&lt;/a&gt;介绍的&lt;code&gt;EIP712&lt;/code&gt;的基础上进一步讨论了&lt;code&gt;EIP712&lt;/code&gt;结构化哈希的进一步应用:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Meta-transactions，解决用户&lt;code&gt;gas&lt;/code&gt;费用问题&lt;/li&gt;
&lt;li&gt;ERC20-Permit&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;meta-transactions&#34;&gt;Meta-transactions&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;meta-transactions&lt;/code&gt;指在交易中包含另一个实际交易。具体流程为用户签署实际交易，将交易提交给区块链运营商，此过程不需要&lt;code&gt;gas&lt;/code&gt;费用和与区块链交互。运营商收到用户提交的交易后，由运营商较此交易提交给区块链。此过程实现了的意义在于将用户与区块链交易的&lt;code&gt;gas&lt;/code&gt;费转移到运营商身上，有效降低了用户使用区块链的门槛。当然，运营商可以直接与矿池合作降低交易费用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>基于链下链上双视角深入解析以太坊签名与验证</title>
      <link>https://blog.wssh.dev/posts/ecsda-sign-chain/</link>
      <pubDate>Mon, 08 Aug 2022 11:27:17 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/ecsda-sign-chain/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本文主要介绍在以太坊中的签名问题，主要涵盖以下内容:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ECDSA公钥密码学的数学原理与代码实现解析&lt;/li&gt;
&lt;li&gt;以太坊客户端对交易信息签名的基本流程与源代码分析&lt;/li&gt;
&lt;li&gt;智能合约内签名的验证&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;ecdsa公钥密码学&#34;&gt;ECDSA公钥密码学&lt;/h2&gt;
&lt;p&gt;为了方便读者理解和实战本文中的内容，本文将结合一个可以使用&lt;code&gt;Typescript&lt;/code&gt;编写用于生产环境的&lt;code&gt;noble-secp256k1&lt;/code&gt;库作为实战案例解析。你可以在&lt;a href=&#34;https://github.com/paulmillr/noble-secp256k1&#34;&gt;这里&lt;/a&gt;找到源代码。当然，为了节省篇幅，本文不会对此库中的所有代码进行解析。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Foundry教程：使用多种方式编写可升级的智能合约(下)</title>
      <link>https://blog.wssh.dev/posts/foundry-contract-upgrade-part2/</link>
      <pubDate>Sat, 30 Jul 2022 21:27:17 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/foundry-contract-upgrade-part2/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;正如我们在&lt;a href=&#34;https://blog.wssh.dev/posts/foundry-contract-upgrade-part1/&#34;&gt;上篇博客&lt;/a&gt;结尾时所述，本文主要依靠&lt;code&gt;openzeppelin&lt;/code&gt;库介绍代理合约的编写。&lt;/p&gt;
&lt;p&gt;本文主要介绍的代理类型如下:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EIP-1967&lt;/li&gt;
&lt;li&gt;EIP-2535&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;由于本文依赖于&lt;code&gt;Openzeppelin/openzeppelin-contracts&lt;/code&gt;进行介绍EIP标准，所以请读者使用以下命令在项目内安装对应的库:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Foundry教程：使用多种方式编写可升级的智能合约(上)</title>
      <link>https://blog.wssh.dev/posts/foundry-contract-upgrade-part1/</link>
      <pubDate>Tue, 26 Jul 2022 21:27:17 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/foundry-contract-upgrade-part1/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在以太坊智能合约中，很长时间都保持着“一次部署，永不修改”的情况。但随着智能合约的逐渐发展，出现了诸如修复BUG、增加特性、修复漏洞等需要修改智能合约的需求，我们非常希望可以编写可升级的智能合约。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Foundry教程：编写测试部署ERC-20代币智能合约</title>
      <link>https://blog.wssh.dev/posts/foundry-with-erc20/</link>
      <pubDate>Thu, 14 Jul 2022 21:37:27 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/foundry-with-erc20/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本博客的内容主要分为以下四部分：&lt;/p&gt;
&lt;p&gt;一是Foundry的介绍与安装，主要介绍为什么选择Foundry进行智能合约开发和安装过程中的各种官方文档中未提及的问题；&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python2Go：将Python豆瓣爬虫使用Go重构</title>
      <link>https://blog.wssh.dev/posts/douban-python-crawler-to-go/</link>
      <pubDate>Tue, 05 Jul 2022 13:50:22 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/douban-python-crawler-to-go/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;本篇文章主要适用于Python爬虫程序员使用Go&lt;!-- raw HTML omitted --&gt;注释&lt;!-- raw HTML omitted --&gt;(Golang，在下文中主要使用goalng名词。)编写爬虫，由于目前我个人水平有限，所以此篇文章主要介绍一些简单的爬虫编写，主要包括使用&lt;code&gt;requests&lt;/code&gt;、&lt;code&gt;bs4&lt;/code&gt;等库的初级Python爬虫的改写，暂时不涉及多线程、异步、反爬、登录等复杂情况。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Cloudflare中自动化部署hexo博客</title>
      <link>https://blog.wssh.dev/posts/cloudflare-hexo/</link>
      <pubDate>Mon, 27 Jun 2022 10:47:33 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/cloudflare-hexo/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;CloudFlare Pages&lt;/code&gt;是一个免费且使用简单的&lt;code&gt;CI/CD&lt;/code&gt;工具，可用来编译并部署大部分知名前端框架。如果您查阅&lt;code&gt;cloudflare Pages&lt;/code&gt;的文档会发现其支持&lt;code&gt;hexo&lt;/code&gt;框架的编译和发布。但如果您直接进入cloudflare pages dashboard进行设置时，你会发现在&lt;code&gt;Build settings&lt;/code&gt;中的&lt;code&gt;Framework preset&lt;/code&gt;并没有给出&lt;code&gt;hexo&lt;/code&gt;框架的选项，如下图。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MetaMask一键登录设计</title>
      <link>https://blog.wssh.dev/posts/metamask-login/</link>
      <pubDate>Mon, 06 Jun 2022 22:52:13 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/metamask-login/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在目前的网站用户体系搭建中，社会化登录主要依赖于Google、QQ等服务商，中心化趋势较强。在Web3中，作为网站建设者的我们应该考虑使用去中心化的登录方式。在此篇博客中，我们将以使用&lt;a href=&#34;https://metamask.io/&#34;&gt;MetaMask&lt;/a&gt;钱包中的API为例介绍去中心化登录的基本方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Openwrt系列教程：使用SmartDNS加速DNS解析</title>
      <link>https://blog.wssh.dev/posts/smartdns_setting/</link>
      <pubDate>Tue, 15 Feb 2022 13:53:00 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/smartdns_setting/</guid>
      <description>&lt;h2 id=&#34;smartdns介绍&#34;&gt;SmartDNS介绍&lt;/h2&gt;
&lt;p&gt;SmartDNS是一个运行在本地的DNS服务器，SmartDNS接受本地客户端的DNS查询请求，从多个上游DNS服务器获取DNS查询结果，并将访问速度最快的结果返回给客户端，提高网络访问速度。 同时支持指定特定域名IP地址，并高性匹配，达到过滤广告的效果。&lt;/p&gt;</description>
    </item>
    <item>
      <title>基于wireguard与NAT实现windows10代理服务器</title>
      <link>https://blog.wssh.dev/posts/wireguard_nat_proxy/</link>
      <pubDate>Fri, 11 Feb 2022 09:50:30 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/wireguard_nat_proxy/</guid>
      <description>&lt;h3 id=&#34;前言&#34;&gt;前言&lt;/h3&gt;
&lt;p&gt;WireGuard是一个免费的网络通信隧道，它可以让您的私有网络和公共网络之间通过一个隧道，让您的私有网络不会被窃听。一般情况下，我们选择使用Linux服务器自带的iptables实现路由转发，实现私有网络和公共网络之间的通信。但是，在Windows上，尤其是个人Windows计算机上，我们缺乏有效的工具实现路由转发，因此我们很难实现私有网络和公共网络之间的通信。搭建出的WireGuard隧道毫无意义。此教程主要讲解如何使用Windows的NAT实现路由转发，并进一步实现私有网络和公共网络之间的通信。&lt;/p&gt;</description>
    </item>
    <item>
      <title>以Openwrt路由器为核心的家庭网络构建</title>
      <link>https://blog.wssh.dev/posts/home_network/</link>
      <pubDate>Tue, 01 Feb 2022 13:53:00 +0000</pubDate>
      <guid>https://blog.wssh.dev/posts/home_network/</guid>
      <description>&lt;h2 id=&#34;环境概览&#34;&gt;环境概览&lt;/h2&gt;
&lt;p&gt;家庭的基本情况如下：&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;/p&gt;
&lt;ul&gt;
&lt;li&gt;软路由器，系统为openwrt&lt;/li&gt;
&lt;li&gt;千兆双频无线路由器&lt;/li&gt;
&lt;li&gt;百兆无线路由器，品牌为TP-Link&lt;/li&gt;
&lt;li&gt;联通自带千兆光猫&lt;/li&gt;
&lt;li&gt;多部手机&lt;/li&gt;
&lt;li&gt;具备千兆网卡的笔记本电脑&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;网络接线情况&#34;&gt;网络接线情况&lt;/h2&gt;
&lt;img alt=&#34;Wiring Diagrams&#34; loading=&#34;lazy&#34; src=&#34;https://img.gopic.xyz/network.svg&#34;&gt;&lt;p&gt;联通光猫与接入光纤直接相连，光猫已设置为桥接模式并不进行拨号，功能仅为转换光电信号。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
