<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>kittenyang</title>
        <link>https://paragraph.com/@kittenyang</link>
        <description>I am somebody.</description>
        <lastBuildDate>Mon, 04 May 2026 23:33:31 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>kittenyang</title>
            <url>https://storage.googleapis.com/papyrus_images/2fa0c5c306564954eb8bfb053dcb564661f98cbabf2db6d002580e352bc5bf3a.jpg</url>
            <link>https://paragraph.com/@kittenyang</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[SafeSnap 发布，一款开源的 DAO 治理工具 App]]></title>
            <link>https://paragraph.com/@kittenyang/safesnap-dao-app</link>
            <guid>wFwurR9a39eBkwOIHhbN</guid>
            <pubDate>Thu, 09 Feb 2023 16:52:00 GMT</pubDate>
            <description><![CDATA[前言在过去 Web3 大浪淘沙的几年，涌现了一大批所谓的 Web3 链上应用，内容涉及各个赛道。虽然大多数最后都是昙花一现的炮灰，但其中不乏非常有创意、有前景 App。我个人非常看好 DAO 这一赛道。不仅在于它极大地发挥了区块链的特点，更重要的是这将重构人类社会协作的范式。如果说区块链是技术革命，那么 DAO 更像是一次社会革命，虽然现在只是故事的开始，真正实现这个目标恐怕还要很久。 在 2022 上半年上海 Covid-19 疫情封锁期间，我也深刻体验到了 DAO 模式在现实世界的力量。当时小区全部封锁，线上的物资几乎抢购一空，群众只能依靠有渠道的小区楼长统一采购物资。大家自发在小区群里分工合作，采购的采购、搬运的搬运、线上答疑的答疑..... 当时给我的第一感觉是，这俨然就像一个热门的 Web3 项目。Web3 项目的玩法就是在早期你为社区贡献越多，后续就能获得越多项目的空投，包括但不限于 Token 或者 NFT，从而后续项目火了，你可以在市场上套现。本质上和创业获得原始股是一个道理。有人说这是投机和浪费时间的工作，但现实世界中的工作何尝不是这样呢？搞好上级关系、拼命工作...]]></description>
            <content:encoded><![CDATA[<h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">前言</h1><p>在过去 Web3 大浪淘沙的几年，涌现了一大批所谓的 Web3 链上应用，内容涉及各个赛道。虽然大多数最后都是昙花一现的炮灰，但其中不乏非常有创意、有前景 App。我个人非常看好 DAO 这一赛道。不仅在于它极大地发挥了区块链的特点，更重要的是这将重构人类社会协作的范式。如果说区块链是技术革命，那么 DAO 更像是一次社会革命，虽然现在只是故事的开始，真正实现这个目标恐怕还要很久。</p><p>在 2022 上半年上海 Covid-19 疫情封锁期间，我也深刻体验到了 DAO 模式在现实世界的力量。当时小区全部封锁，线上的物资几乎抢购一空，群众只能依靠有渠道的小区楼长统一采购物资。大家自发在小区群里分工合作，采购的采购、搬运的搬运、线上答疑的答疑..... 当时给我的第一感觉是，这俨然就像一个热门的 Web3 项目。Web3 项目的玩法就是在早期你为社区贡献越多，后续就能获得越多项目的空投，包括但不限于 Token 或者 NFT，从而后续项目火了，你可以在市场上套现。本质上和创业获得原始股是一个道理。有人说这是投机和浪费时间的工作，但现实世界中的工作何尝不是这样呢？搞好上级关系、拼命工作赚钱、努力充电学习，不都是为了各种利益，只要别去坑蒙拐骗。所以说底层逻辑是没问题的：越早对社区有贡献的人，理应获得更丰厚的回报，只是区块链把这一过程变得门槛更低、程序化、并且链上可证了。对于项目来说也有好处，早期拥有一批全心全意的粉丝共建，也为后续发展提供了更多可能。</p><p>回到小区 DAO 的例子，群里答疑的人就像 Discord 里的 MOD、采购就像项目的运营在和外界洽谈商务合作、搬运的人就像是开发者埋头写着代码。可以想象如果真的按现有 Web3 项目的路子走下去，发行小区治理代币，任何对小区有利的举动都能获得相应激励，比如上面的采购、搬运、答疑等早期角色都能获得大量空投，那么反过来也会促进更多人加入进来参与小区的共建。到时候小区变得更和谐、居民幸福指数，房价自然水涨船高，然后又会吸引更多优质教育、医疗资源聚集，最终又会不断推动房价。如果外部居民虽不能直接体验小区的居住环境，但通过购买你们的小区货币也能分一杯羹。看吧，Web3 项目的这套玩法放在现实世界似乎也行得通。而那段时间，长宁辖区的居民能分配更好的物资，人民都是用脚投票的，舆情情绪里明显表现出未来在长宁区置业的意向明显高于其他区。现实世界也确实证实了这一点。因此如果 DAO 的基础设施和政策一切准备就绪的时候，是对全社会组织形式的一次大洗牌。</p><p>上面对于 DAO 的案例太过于宏大了，其实我们家庭就是一个小型的 DAO，比如你和你的爱人小孩三个人是家庭DAO 的成员，发行一个初始供应量为10000的家庭币，那么谁为家庭做出了贡献了都能获得一定的货币激励，包括但不限于做家务、为家庭创收、孩子做了一件优秀的事等等等等，大家表面上为了获得激励努力为家庭做贡献，实际上最终都是让这个家变得更好了。同时可以加入多签钱包的思路，每一笔激励需要家庭指定数目的成员同时同意才可以通过，后续这些激励可以作为治理代币进行家庭投票，比如今年选择去哪里旅游啊、周末吃什么好吃的、小孩是出国留学还是国内读研...... 谁的货币持有量越多，谁的投票权重就越大，毕竟代表你过去对家庭做出贡献更大嘛，最后投票数最多的提案才能通过。一切都是透明、可追溯、不可篡改的。</p><p>当我和家庭成员讨论了这个想法，大家都对觉得这个玩法可以尝试下，失败就失败嘛，人生就是在不断试错。于是我开始调研市面上已有的方案。这里就不得不提智能合约的好处了，你能想到的点子这个世界上某个角落的人可能早就已经想到了，并且代码都是链上公开透明的，也就是说你不用自己重复造轮子，更重要的不用担心 Web2 世界里各种环境依赖、不兼容等问题，直接几行代码调用智能合约就行了。而上面想法需要的两个关键应用，正是多签钱包和链上投票。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">多签钱包</h1><p>所谓多签钱包，顾名思义就是需要多份签名。一个最基本 BIP 钱包拥有一个彼此唯一对应的公钥、私钥对，一旦你的私钥泄漏了，那么你的这个钱包就彻底废了，因此安全性大打折扣。因此在这之上，就有人想到了，为啥不可以人为的再包装一层逻辑呢？反正都是一个智能合约的事。于是，多签钱包的市场就出现了。在如今堪比黑暗森林的早期 Web3 世界，多签钱包可以说是进场狩猎的猎人们必备的防弹衣了。其重要性不言而喻。</p><p>而这个赛道目前的佼佼者，非 Gnosis Safe 莫属。</p><p>在体验了 Gnosis Safe 的 DApp、拜读了 Github 开源的源码、潜水 Discord 开发者日常群一段时间之后，我果断选择了这个DApp。主要还是因为它迭代频繁、支持最多主流链、最完善的拓展服务。这应该是目前多签领域现有的最佳方案了。</p><p>而且 Gnosis Safe 还有 GNU 协议的 iOS 客户端源码，对于自己实现这些多签规则的细节也有很多参考价值。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">链上投票</h1><p>DAO 的另一个重要组成便是如何消费货币。对于大多数没有金融属性的社区货币，最有用的功能便是社区治理了。而治理中投票便是最常见的方式。</p><p>这个赛道的选择就很多了。Aragon、Syndicate、Snapshot 等等，最终评估下来还是链下签名、链上提交结果的方式更经济，因此选择了 Snapshot，而且 Snapshot 正好也有测试网的环境，方便配合 Gnosis Safe 进行开发调试，而且 Snapshot 的开发社群也很活跃，提交的问题基本秒回复。</p><p>但是 Snapshot 是一个纯前端的 DApp，因此要移植到移动端需要逆向很多接口和步骤。比如它要求你先有一个 ENS 域名，所以还得先逆向出 ENS 的注册逻辑，在端上重新实现一遍。好在都是开源的合约，需要挖坟一些隐藏地比较深的代码。移植的这个过程就像是寻宝，你挠破头皮的想不出的一个参数，最后在一个毫不起眼的 repo 里找到了上古 JS 实现。</p><p>同时 Snapshot 可以说是把投票玩出花了，除了最基本的单选投票，还有赞成投票、排序选择投票、二次投票、加权投票等多种玩法，同时社区还在不断开发新功能。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">组装起来</h1><p>有了上述两个核心功能，接下来就要把它们串联起来了，当然还需要自己实现一些 DAO 的基本功能。</p><p>目前 SafeDao 只支持 ETH 主网和 Goreli 测试网，主要是因为 Snapshot 支持这两个；因此需要在主网上发布一个 TokenFactory 的智能合约，用来发行 DAO 货币；同时初始货币在创建后就要全部转移到多签钱包以便后续从多签钱包分发给成员。而多签钱包的成员只要持有了相应 DAO 的 token，就会自动成为拥有 Snapshot 投票权的成员。至于两个服务如何串联起来，我想了一个比较 triky 的路子，直接用多签钱包的 hash 地址作为 Snapshot 的 Space 名，虽然有点搓就是了。</p><p>另外，这是我完全用 SwiftUI 框架编写的第一个完整 App，心得就是，SwiftUI 目前还是一个很早期的 Baby，处理数据的机制非常现代和高效，但是很多自定义动画和追求极致性能的需求下，目前还是有很多限制和 bug。</p><p>名字取自 Gnosis Safe 和 Snapshot 的拼接，也意味着这款 App 就是把这两个服务链接起来变成了一个 DAO 产品。Logo 也是取自两个产品的 logo 的融合。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/bc6823f6c208216b9e4013461679620e92940c05d55978f99082284ba0e723d8.png" alt="SafeSnap Logo" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">SafeSnap Logo</figcaption></figure><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">使用指南</h1><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">介绍</h3><p>SafeSnap 是一个整合了 Gnosis Safe 和 Snapshot 两大 DAO 治理工县的 iOS App.</p><p>旨在将两者集成到一个易于使用的界面中，在让用户更轻松地操作并实现 DAO 治理。</p><p>其中 Gnosis Safe 是一款安全的以太坊钱包，可以将您的以太坊资产保存在大多数主流以太坊区块链网络中。它支持多重签名，可以容易地实施复杂的交易，并自动执行以太坊智能合约，使您的 DAO 治理更安全、更有效。</p><p>Snapshot 是一款 DAO 治理工具，可以让我们更轻松地实施决策流程，从而使 DAO 更加有效地运作。它可以让用户更容易地进行投票和决策，并有效地提高协作效率。</p><p>使用 SafeSnap，你可以轻松访问 Gnosis Safe 和 Snapshot，让您更加安全有效地实现DAO 治理投票，更轻松地管理您的资产，以及更安全地使用以太坊区块链网络。</p><p>整个注册流程图如下：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cca6b0cdcc4810ac3fd297b63b21d6445437ab8cac98ebb54f440a8bf5782df4.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">创建用户</h1><p>当你首次安装 App 后，软件会自动弹出创建用户页面。在这里，你可以新建一个用户，其实准确来说，这是一个 Web3 钱包，你完全可以导入已有的钱包（软件完全开源，不用担心后门）。注意这里不是 Gnosis Safe 的多签钱包。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/59b18ec21602cc388e62f3d322bc791870537cf45dd4d1844ccf63f586774440.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>当然你也可以手动创建一个新的，一般也推荐这么做。等待一会儿，你就会看到自动生成的12 个助记词。然后就是常用的 Web3 钱包逻辑了，你可以手动保存这些助记词，也可以一键保存在 iCloud。一般都推荐保存到 iCloud，登录其他 App 也可以一键导入。如果你选择手动保存，软件自动把 12 个助记词分成了两段（为了避免第三方 App 读取剪切板），然后就可以转移到你认为安全的的地方了。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/66d83fe9dcc06b306df61b976e76abd38ee1608c94fa1cc3d6fd6d4ad3941268.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-dao" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">创建 DAO</h2><p>SafeSnap 里的一个 DAO 其实包括了一个多签和一个 Snapshot Space。</p><h4 id="h-" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">创建多签钱包+初始货币</h4><p>当你完成上面的用户创建之后，App 会自动弹出创建 DAO 的页面。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/089f2915ae3be9be44a47d74970acceb53e9fa09e2ab26a3fe9629785ee1daae.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>这里同样你可以导入一个已有的 DAO，也就是多签钱包。这一步没有隐私安全问题，因为只是导入钱包的公钥，每个钱包的 transctions 本来就是公开透明的。创建 DAO 时填写的配置除了 Safe 多签钱包本身包括的配置之外（名称、成员、最低通过人数、区块链ID），还会创建一个社区货币，因此还需要你输入货币的名称、符号、初始总发行量。然后程序会自动把初始货币都转移到这个多签钱包，后续都从这里分配给成员。</p><p>以上完成，你就完成一个 DAO 创建的 60% 了。这个过程大概<strong>1~2分钟</strong>。对了，需要<strong>全程科学上网！！</strong></p><h4 id="h-snapshot-space" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">创建 Snapshot Space</h4><p>剩下的 40% 就是创建 Space。这一步需要步骤更多，完整需要5分钟左右。因为你正常去注册一个 Space 就有这么多步骤：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9f8441735c11219fad0ad7392e0074ec90f40c8b5ad99cc04812c3b91b99bb47.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ol><li><p>你需要先有个 ENS 域名。光这一步就有很多子步骤，ENS 官方没有公布完整的创建规则，只要一个 GUI 前端。网上也没有 ENS 注册的自动化脚本。我通过分析 ENS 的智能合约和一些链上成功的记录，逆向出了创建一个 ENS 域名的规则，全程不需要你动手，只要确保 App 打开即可。</p></li><li><p>有了 ENS 域名，你用这个域名去创建一个 Space。然而 Space 官方也只有一个 GUI 的前端页面。要不怎么说前端生态成熟呢，上产品太快了，也方便随时改，这一点开发原生 App 的确实遥不可及。</p></li><li><p>设置 ENS 域名的 Controller</p></li><li><p>配置 Space 的基本信息（名称、头像等）</p></li><li><p>配置 Space 投票策略</p></li><li><p>配置 Space 成员</p></li></ol><p>但是不用担心，上面的所有步骤我都用 App 自动化了，你只要确保 App 保持打开的状态就行了。当你看到下面这个界面就表示在创建 Space ，这一步因为步骤繁琐，差不多需要 5 分钟，请耐心等待，一劳永逸。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/de8fd1f0d46da9966e2fdf2896596b3591d80081279b691e25dee4f5293a6101.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">开始使用</h2><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c2620518de017c2ba8528b6a66532de630186ec30b67a32f5334c5063c870764.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>当你看到这个页面的时候，说明所有准备工作都已经创建完成了。为了确保是否如此，你可以去设置页面最顶部，如果看到🟢绿灯全部亮起了，说明所有准备工作都完成了。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ad7c48255202adad01e94899b6d16b5d64d34376e4a717c43316724d7c96b8df.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">发起多签</h2><p>然后你就可以点击 Tabbar 中间的加号，来增加一笔转账申请。比如初创团队 CEO 需要决定给某个成员多少奖励，可以发起一笔多签活动，App 会自动推送给其他创始成员，满足最低人数之后，这笔奖励就会真正达到目标成员的钱包里。</p><p>又比如是一个三口之家，孩子今天做了一件好人好事，父母准备奖励一笔资金给孩子，就可以点击加号，选择相应的金额，发起一笔多签。妈妈收到之后也同意这笔交易，那么孩子就会最终得到这笔奖励。</p><p>同时，每次发起的多签交易你都可以保存起来成为模板，方便下次快速发起，不用再重复输入。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">同意、拒绝多签</h2><p>当你点击第二个 Tab，你会发现一个列表。这个列表就是你第一步中发起的所有的多签操作。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/11740f956ed418d56aac918160b1e1e08dd5941d975f7807ba21eee3a89092ca.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>这里需要注意几个规则：</p><ol><li><p>你可以表决任意一笔</p></li><li><p>但区块链只能按照从上到下的顺序上链。也就是说只有最上面的一笔才可以表决完立刻上链。</p></li><li><p>上链才代表着一笔交易最终完成。</p></li><li><p>所以除了最上面的一笔之外，其余的交易你仍然可以<strong>投反对票</strong>。</p></li><li><p><strong>反对票</strong>也是一种特殊的交易，当对方投了反对票，也会反过来要求你再同意。</p></li><li><p>总是，多签钱包里的任何一个不一致的操作，都需要达到最低成员阈值。</p></li></ol><p>这在使用上确实会增加操作成本，但这是区块链安全的机制决定的。或许后面可以考虑端上做免签的方案，但这样就降低了安全性。后续继续探索优化找个平衡点。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">发起提案</h3><p>点击加号，选择新建投提案，你就可以发起一笔提案。你可以添加标题、描述、选项，点击发送即可。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2833329ef3ce24fa9db766d71ef9cf44d2531c77a97835fb14efc6e0e43e6cef.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">发起投票</h3><p>来到倒数第二个 Tab。这里就是你刚才所有的提案汇聚的地方。你可以选择一个你自己想要投票的选项进行投票即可。这里要注意的是，你持有的 DAO 货币越多，你对该提案的投票权重就越大。这些 DAO 货币就是你平时对家庭有贡献时积累的资本，证明了你之前对家庭的贡献，投票有更大的权重也合理。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7d1fc0b880d68066f8c678f8315fdbdb6b6fd54bdb11c6e0b94b09ce37a3664f.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">最后</h1><p>起初这个想法还是为了自己家庭服务的，后来发现市面上对这两个产品有需求的不在少数，并且都没有一个整合起来的移动端，因此有了对外发布的想法，当然必然是开放源代码的，毕竟我也是从开源项目中来的。</p><h2 id="h-github" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Github</h2><p>完整项目地址在这里：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/KittenYang/SafeSnap">https://github.com/KittenYang/SafeSnap</a></p><h1 id="h-testflight" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Testflight</h1><p>由于 App Store 不支持个人开发者发布虚拟货币相关的应用，我也懒得搞个公司，就直接通过 TestFlight 发布了，好在有 1W 个名额，DAO 用户毕竟小众。我感觉能有1000人使用就很了不得了，所以也不用担心名额不够。</p><p>TestFlight 链接：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://testflight.apple.com/join/yYciI6d2">https://testflight.apple.com/join/yYciI6d2</a></p><h2 id="h-gitcoin" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Gitcoin</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://grantshub.gitcoin.co/#/chains/1/registry/0x03506eD3f57892C85DB20C36846e9c808aFe9ef4/projects/273">https://grantshub.gitcoin.co/#/chains/1/registry/0x03506eD3f57892C85DB20C36846e9c808aFe9ef4/projects/273</a></p><h2 id="h-tip-jar" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">☕️ Tip Jar ❤️</h2><p>Open Source works will not be longer without your support.</p><p>ETH: <strong>0x9D68df58C48ce745306757897bb8FaA3FE72A1BF</strong></p><p>最后的最后，希望区块链不再只有炒币、数字藏品这些投机的东西了，让影响现实世界的那一天早点到来，真正点燃人类协作的潜力。</p>]]></content:encoded>
            <author>kittenyang@newsletter.paragraph.com (kittenyang)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/4286f176c5870559c065a9518fd5077106c9890348359effc3ebaf4260b0be6e.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[超详细回顾 2000 万 OP 被盗始末]]></title>
            <link>https://paragraph.com/@kittenyang/2000-op</link>
            <guid>WP09Bj7KB7KzkPuyexcp</guid>
            <pubDate>Fri, 10 Jun 2022 18:35:19 GMT</pubDate>
            <description><![CDATA[这几天加密圈最劲爆的新闻应该非 2000w OP 被盗一事莫属，社区用户炸开了锅。作为对技术感兴趣的码农，对这样的新闻当然不仅仅停留在凑热闹层面，还是花了点时间研究了一下其中缘由，也顺便加深了对加密世界的理解。 废话不多说，直接进入正题。背景OP 作为 Layer2 四大天王之首的生态链，一直以来拥有强大的社区。而6月刚好发币，热度火爆，因此官方需要做市商提供 OP 的流动性，让市场活跃起来。Wintermute 就是最知名的老牌做市商，OP 官方也是看中了 Wintermute 的背书，故而决定转 2000W OP 币给 Wintermute 让其帮忙做市。那么很自然的， Wintermute 展示了自己的多签钱包合约地址。由于本篇涉及到太多地址，为了方便读者记忆，我们称 Wintermute 的多签钱包合约地址为【最终地址-L2】（0x4f3a120E72C76c22ae802D129F599BFDbc31cb81）。时间线May-26-2022 11:55:44 PM +UTC OP 官方发送 1 个币到【最终地址-L2】，Wintermute 说收到了！May-27-20...]]></description>
            <content:encoded><![CDATA[<p>这几天加密圈最劲爆的新闻应该非 2000w OP 被盗一事莫属，社区用户炸开了锅。作为对技术感兴趣的码农，对这样的新闻当然不仅仅停留在凑热闹层面，还是花了点时间研究了一下其中缘由，也顺便加深了对加密世界的理解。</p><p>废话不多说，直接进入正题。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">背景</h1><p>OP 作为 Layer2 四大天王之首的生态链，一直以来拥有强大的社区。而6月刚好发币，热度火爆，因此官方需要做市商提供 OP 的流动性，让市场活跃起来。Wintermute 就是最知名的老牌做市商，OP 官方也是看中了 Wintermute 的背书，故而决定转 2000W OP 币给 Wintermute 让其帮忙做市。那么很自然的， Wintermute 展示了自己的多签钱包合约地址。由于本篇涉及到太多地址，为了方便读者记忆，我们称 Wintermute 的多签钱包合约地址为【最终地址-L2】（<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://optimistic.etherscan.io/address/0x4f3a120E72C76c22ae802D129F599BFDbc31cb81">0x4f3a120E72C76c22ae802D129F599BFDbc31cb81</a>）。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">时间线</h1><ul><li><p>May-26-2022 11:55:44 PM +UTC OP 官方发送 1 个币到【最终地址-L2】，Wintermute 说收到了！</p></li><li><p>May-27-2022 04:05:27 PM +UTC OP 官方分两笔发送剩下的 100W+1900W 共计2000W OP 到【最终地址-L2】</p></li><li><p>May-30-2022 Wintermute 发现这个多签钱包只是在主网上存在，地址相同，只不过在主网上，我们称之为【最终地址-L1】。但【最终地址-L2】还没有人认领，也就是 2000W OP 转到了一个尚未被人认领的地址。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/optimismPBC/status/1534631770330746880?s=20&amp;t=r9YHgdPyaQgmbsTWcZNZqw">https://twitter.com/optimismPBC/status/1534631770330746880?s=20&amp;t=r9YHgdPyaQgmbsTWcZNZqw</a></p></li><li><p>May-30-2022 Wintermute 联系多签钱包开发团队 Gnosis Safe ，请求认领这个地址。但不知道什么原因，竟然计划在 06.07 日修复账户权限。</p><blockquote><p>这里是我觉得本次事件是<strong>自导自演</strong>最可疑的地方，太匪夷所思了，心这么大吗？你想想，明明知道这个地址谁都可以去认领，还要拖一个星期？难道就不怕内部员工或者但凡闻到点风声的技术人员提前下手吗?</p></blockquote></li><li><p>Jun-01-2022 10:19:11 AM +UTC 黑客部署了攻击合约。说明此时黑客已确定了完整的攻击流程。</p></li><li><p>Jun-05-2022 03:54:19 AM +UTC 不知为何，黑客直到四天之后才完成了认领。</p><blockquote><p>也就是说，5月30号 ~ 6月5号之间，真正5天时间，Wintermute 和 Gnosis Safe 两个各自领域决定领头的团队，竟然无动于衷？？ 我不相信这里面没有技术人员意识到这件事分秒必争的重要性。再次加深了我对其自导自演的怀疑。</p></blockquote></li></ul><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">基础知识</h1><p>在以太坊中，一个常见的 0x 地址可以是2种账户：外部账户（EOA）、合约账户。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4b8ea8602d03e6e0ec9c8518a066d5b5229d12785c673f5e8856f6f1ca194b60.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>而决定合约地址的代码有CREATE 和 CREATE2 两种，公式如下：</p><ul><li><p>CREATE： 与【发起部署的地址】 &amp; 【该地址关联的 nonce 】 有关</p></li><li><p>CREATE2： <code>new_address = hash(0xFF, sender, salt, bytecode)</code></p><ol><li><p>0xff 是固定的常数</p></li><li><p>sender为发起部署的地址</p></li><li><p>salt为 sender指定的任意值</p></li><li><p>bytecode 为要部署的合约代码</p></li></ol><blockquote><p>CREATE2 避免了引入递增的 nonce 。将其替换为sender可控的 salt，这样可以更好地控制合约部署地址。</p></blockquote></li></ul><p>合约就是一个链上的 App，可以由开发者按医院编写。因此合约完成自身创建后，开发者可能内部又继续调用 CREATE 或者 CREATE2 方法创造了新的合约地址。</p><p><strong>对于 EOA 账户，每发起一笔交易 nonce 就会 +1</strong></p><p><strong>对于合约账户，每次部署一个新的合约则 nonce +1。</strong></p><p>因此如果一个合约内部通过 CREATE 方法创建了其他合约，根据上面的公式，【发起部署的地址】就是自身发起的，所以是固定的，【该地址关联的 nonce 】会不断累加。因此只要确定了自身地址，子合约的地址<strong>都是可以预测</strong>的。</p><p>接下去我们顺藤摸瓜，从目标地址 0x4f3a120E72C76c22ae802D129F599BFDbc31cb81 一步一步往前倒。</p><p>先放大图，方便大家对后面的知识有个全局认识。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/93fe52883b5e24c2b5252c5d52320d17308a2ba3cb2dbc97770244e004853105.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第一个运气</h1><p>打开主网上<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0x4f3a120E72C76c22ae802D129F599BFDbc31cb81">【最终地址-L1】</a>的合约地址，点击 Creator 的 txn</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2353ae1637b02b5e291f9c67b5a5c7383caa69aba29ae3743085610bcafa1709.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>拉到最下面，可以看到，是一个叫 <code>createProxy</code> 的方法。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b106bd7c720fcac4f038b3ce717f86d5fc3dab360a3dfae38accddb7ce2e777d.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>这里有一个基础知识，就是所有最终的多签钱包都是由这个 Proxy Factory 合约（下面简称【工厂合约-L2】）生成的。我们看一下【工厂合约】的代码，点开上图1中的链接即可。代码地址：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0x76e2cfc1f5fa8f6a5b3fc4c8f4788f0116861f9b#code">0x76e2cfc1f5fa8f6a5b3fc4c8f4788f0116861f9b</a>。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4ad8685065358fcbea785b9aeb6c34d6ee6a9a070f4349d68c5c1a282422a174.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>第一个运气来了。 <code>createProxy</code> 方法内部使用了 <code>new Proxy()</code> 从而间接使用 <strong>CREATE</strong> 底层方法部署合约。从上面的背景知识我们知道，CREATE 我们只与【发起部署的地址】 &amp; 【该地址关联的 nonce 】 有关。</p><p>因此，接下去我们的目标就转换成了如何去「认领」layer2 上的【工厂合约-L2】地址（即 0x76e2cfc1f5fa8f6a5b3fc4c8f4788f0116861f9b） 。我们继续往前倒。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第二个运气</h1><p>我们在主网上继续搜索 0x76e2cfc1f5fa8f6a5b3fc4c8f4788f0116861f9b 这个【工厂合约-L1】，点击右边的三个点，选择 <strong>View Contract Creation,</strong> 把 raw hash 用代码 decode 一下 .</p><pre data-type="codeBlock" text="const tx_receipt = ethers.utils.parseTransaction(raw_transaction_has)
console.log(&quot;tx_receipt:&quot;, tx_receipt)
"><code>const tx_receipt <span class="hljs-operator">=</span> ethers.utils.parseTransaction(raw_transaction_has)
console.log(<span class="hljs-string">"tx_receipt:"</span>, tx_receipt)
</code></pre><pre data-type="codeBlock" text="{
        nonce: 2,
        gasPrice: BigNumber { _hex: &apos;0x02540be400&apos;, _isBigNumber: true },
        gasLimit: BigNumber { _hex: &apos;0x114343&apos;, _isBigNumber: true },
        to: null,
        value: BigNumber { _hex: &apos;0x00&apos;, _isBigNumber: true },
        data: &apos;0x......&apos;,
        chainId: 0,
        v: 28,
        r: &apos;0xc7841dea9284aeb34c2fb783843910adfdc057a37e92011676fddcc33c712926&apos;,
        s: &apos;0x4e59ce12b6a06da8f7ec7c2d734787bd413c284fc3d1be3a70903ebc23945e8c&apos;,
        from: &apos;0x1aa7451DD11b8cb16AC089ED7fE05eFa00100A6A&apos;,
        hash: &apos;0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261&apos;,
        type: null
    }
"><code>{
        <span class="hljs-attr">nonce:</span> <span class="hljs-number">2</span>,
        <span class="hljs-attr">gasPrice:</span> <span class="hljs-string">BigNumber</span> { <span class="hljs-attr">_hex:</span> <span class="hljs-string">'0x02540be400'</span>, <span class="hljs-attr">_isBigNumber:</span> <span class="hljs-literal">true</span> },
        <span class="hljs-attr">gasLimit:</span> <span class="hljs-string">BigNumber</span> { <span class="hljs-attr">_hex:</span> <span class="hljs-string">'0x114343'</span>, <span class="hljs-attr">_isBigNumber:</span> <span class="hljs-literal">true</span> },
        <span class="hljs-attr">to:</span> <span class="hljs-literal">null</span>,
        <span class="hljs-attr">value:</span> <span class="hljs-string">BigNumber</span> { <span class="hljs-attr">_hex:</span> <span class="hljs-string">'0x00'</span>, <span class="hljs-attr">_isBigNumber:</span> <span class="hljs-literal">true</span> },
        <span class="hljs-attr">data:</span> <span class="hljs-string">'0x......'</span>,
        <span class="hljs-attr">chainId:</span> <span class="hljs-number">0</span>,
        <span class="hljs-attr">v:</span> <span class="hljs-number">28</span>,
        <span class="hljs-attr">r:</span> <span class="hljs-string">'0xc7841dea9284aeb34c2fb783843910adfdc057a37e92011676fddcc33c712926'</span>,
        <span class="hljs-attr">s:</span> <span class="hljs-string">'0x4e59ce12b6a06da8f7ec7c2d734787bd413c284fc3d1be3a70903ebc23945e8c'</span>,
        <span class="hljs-attr">from:</span> <span class="hljs-string">'0x1aa7451DD11b8cb16AC089ED7fE05eFa00100A6A'</span>,
        <span class="hljs-attr">hash:</span> <span class="hljs-string">'0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261'</span>,
        <span class="hljs-attr">type:</span> <span class="hljs-literal">null</span>
    }
</code></pre><p><strong>nonce = 2; 并且 v = 28</strong></p><p>这意味着我们可以很轻松实现「重放攻击」！</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">什么是重放？</h3><p>我们知道数字签名就是在数字世界模拟了现实世界里的手动签名的含义。现实世界中，大到总统对政策签署文件，小到朋友间对借条签字画押，作用都是 A 同意当前自己的操作，通过签名画押这个操作留下凭证。那么同样的，数字世界里的签名也是同样的作用。</p><p>由于以太坊第二层解决方案(L2)底层方案都是基于以太主网，所以主网上的一些交易可以重新在L2 上发生。比如我在主网上签名了一个交易，而基于区块链的特性，签名的内容都是透明的，所以任何人拿这个签名都可以在任何一个L2平行链上重新执行这个交易，并且产生的结果一模一样。</p><p>在没有出现多链之前，以太坊并没有考虑这种情况，随着后面 L2 不断壮大， 官方才推出了 EIP155 补丁，不再允许这种跨链重放的行为。</p><p>根据 EIP-155 ，v = 28 或者 v = 27 的交易未使用 EIP-155 签名，不会将 ChainID 引入到交易签名中，因此可以进行重放攻击。</p><p>同时因为 nonce = 2，非常小，黑客手动把前两笔 nonce=0,1 的也重放了，花不了太多力气。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cb53b4019d726181674266d5a573fda27052f60fd2775fda8e10d88987a48db5.png" alt="重放代码" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">重放代码</figcaption></figure><p>大家亲自打开用浏览器并排对比下下面两个链接，只是host 不一样，其他一模一样的两个链接</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/tx/0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261">https://etherscan.io/tx/0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://optimistic.etherscan.io/tx/0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261">https://optimistic.etherscan.io/tx/0x75a42f240d229518979199f56cd7c82e4fc1f1a20ad9a4864c635354b4a34261</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5dc8071530fab49d38e8798b47b0fcadf0f60548989249b4281c62974f84ced3.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>至此，一模一样的【工厂合约-L2】已经在 OP 上拷贝出来了，剩下的只需要第一时间疯狂刷nonce， 创建最终的【目标多签钱包】即可，这一步就比谁快了。从时间记录来看，黑客在工厂合约诞生后 18 秒就启动了刷 nonce 程序，最终只用了1分24秒就创建出了【目标多签钱包】。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://optimistic.etherscan.io/tx/0x00a3da68f0f6a69cb067f09c3f7e741a01636cbc27a84c603b468f65271d415b">https://optimistic.etherscan.io/tx/0x00a3da68f0f6a69cb067f09c3f7e741a01636cbc27a84c603b468f65271d415b</a></p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">为什么【第一个运气】里面不能直接用重放呢？</h3><ol><li><p>因为 decode raw transaction hash 出来发现 v=25，说明这一条交易 hash 已经包含了 chain id，不能在 layer2 上重放了。</p></li><li><p>虽然关上了这扇门，但还留了一扇窗 —— Create Factory 方法底层使用 CREATE 部署合约，让我们得以靠刷 nonce 的方式实现目的。</p></li><li><p>即使第一个运气里 v=27 或 v=28 可以重放，但因为正常多签钱包的 Creator 都是个人，我们可以看到主网上这个多签钱包的 Creator 是一个 EOA 0xF3B8FbE5Efb62E36855c51f4678F2bF6aE064DEd，并且 nonce == 395 ，也就是说即使可以重放，你也重放这个 EOA 账户前面 395 次，还不如直接用 CREATE 刷 nonce 部署来得方便。</p></li></ol><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/92cfdbbd9e6f8cf42bb1b01a8750bb3d18d2feecd313b573505935f8cb71df4a.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/28843a7dea36bd10f68ab6bb0b9b230ce520c0f4c2e5cb6e242d2968564c6d03.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第三个运气</h1><p>非得说第三个的运气的话，我想应该就是 OP 官方开发团队竟然还允许 v=27、28 的交易重放，要知道现在很多测试链都做了放重放限制。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c9a999ca346f7cabcd9aa3ac15cb1319791031d810bc4aa94575ec897c0ebbef.png" alt="Polygon 不允许 EIP-155 之前的交易重放" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Polygon 不允许 EIP-155 之前的交易重放</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b5062d191d1e73d0a25aef1dc8da3d34acbedd2164e29241550659a7da0d7b44.png" alt="OP 没有做防护" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">OP 没有做防护</figcaption></figure><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">总结</h1><p>最后再次附上这张大图。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/93fe52883b5e24c2b5252c5d52320d17308a2ba3cb2dbc97770244e004853105.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure>]]></content:encoded>
            <author>kittenyang@newsletter.paragraph.com (kittenyang)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/79a797a87272223910644af34f9838d77e5de17d14c8b8121a585654d2729bea.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[我为什么看好 Syndicate]]></title>
            <link>https://paragraph.com/@kittenyang/syndicate</link>
            <guid>hFY3pf4fdZNjLiWM2Qjj</guid>
            <pubDate>Sun, 29 May 2022 11:40:49 GMT</pubDate>
            <description><![CDATA[在未来十年内，投资将分散、民主化和社区驱动。 Syndicate正在建设基础设施以实现这一目标——我们正在开发去中心化投资和社交网络协议、先进的法律技术解决方案和下一代社交网络平台，使社区能够以前所未有的方式筹集、协调和投资资本。近期看到一个项目 —— Syndicate，研究了一下，感觉有点东西，这里分享一下。 简单来说，它就是一个投资DAO。DAO 的概念大家应该很熟悉了，就是去中心化自治组织。而 Syndicate 就是这样一个以投资为主题的 DAO。不要看到投资好像离自己很遥远，其实我们身边经常有投资的行为，举几个例子：亲人开饭店找你借钱。以往只能口头承诺多久后一定还，更没有合同说占比多少股份，后面收益怎么分红。大部分情况下，这笔钱是打水漂了。小区业主成立一个社区DAO，主动打扫楼道、帮邻居收养几天宠物、停车位共享….都能获得奖励，从而彻底废除物业。你和女朋友为了鼓励对方，制定一个1个月的目标，1个月之后谁完成指定的目标就可以获得奖励。 ….. 这样的例子还有很多官方给 Syndicate 的定义是：一款去中心化投资和社交网络协议。Syndicate 功能主要是通过允许组...]]></description>
            <content:encoded><![CDATA[<blockquote><p>在未来十年内，投资将分散、民主化和社区驱动。 Syndicate正在建设基础设施以实现这一目标——我们正在开发去中心化投资和社交网络协议、先进的法律技术解决方案和下一代社交网络平台，使社区能够以前所未有的方式筹集、协调和投资资本。</p></blockquote><p>近期看到一个项目 —— Syndicate，研究了一下，感觉有点东西，这里分享一下。</p><p>简单来说，它就是一个投资DAO。DAO 的概念大家应该很熟悉了，就是去中心化自治组织。而 Syndicate 就是这样一个以投资为主题的 DAO。不要看到投资好像离自己很遥远，其实我们身边经常有投资的行为，举几个例子：</p><ol><li><p>亲人开饭店找你借钱。以往只能口头承诺多久后一定还，更没有合同说占比多少股份，后面收益怎么分红。大部分情况下，这笔钱是打水漂了。</p></li><li><p>小区业主成立一个社区DAO，主动打扫楼道、帮邻居收养几天宠物、停车位共享….都能获得奖励，从而彻底废除物业。</p></li><li><p>你和女朋友为了鼓励对方，制定一个1个月的目标，1个月之后谁完成指定的目标就可以获得奖励。</p><p>….. 这样的例子还有很多</p></li></ol><p>官方给 Syndicate 的定义是：一款去中心化投资和社交网络协议。Syndicate 功能主要是通过允许组织创建分散的投资安排来使投资民主化。它使链上流程自动化，让任何人都可以在不到一分钟的时间内以低至 1 美元的价格创建一个投资 DAO。</p><p>Syndicate 在主页打出的 Slogan 是：“invest together, win together”，它旨在通过降低操作门槛，让 DAO 的创始用户可以简单地将钱包转换为 DAO 工具。</p><p>另外，其投资方极其豪华，包括A16Z、Coinbase Ventures、OpenSea、Yuga等，都是大牌。未来如果空投应该有对早期参与者有不错的空投。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8535cdcd1b5ab20f96f0b9f8e994a6a0b25a4285e804b8a9398e9e2315be7031.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Syndicate 支持 Metamask 或者 Gnosis Safe 多签钱包，目前只支持以太主网部署，已经在考虑 L2 或其他链的支持。</p><p>现在在上面创建一个 DAO 成本较高（60刀左右），但是加入比较便宜，下面是我花了巨资开的 DAO，看到文章的小伙伴可以最低金额加入一下。</p><h1 id="h-acoustic-helmet" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Acoustic Helmet</h1><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.syndicate.io/clubs/0x953a98cf8a3c64bbcb83a7217cbffd0994c7a860">https://app.syndicate.io/clubs/0x953a98cf8a3c64bbcb83a7217cbffd0994c7a860</a></p>]]></content:encoded>
            <author>kittenyang@newsletter.paragraph.com (kittenyang)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/975de655a6b5ae112c1975eea89b0cc686710098af31fa9585731c91ffca9967.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[StarkNet 星链孵化器 ZKPad]]></title>
            <link>https://paragraph.com/@kittenyang/starknet-zkpad</link>
            <guid>IcIEjY83WpDWiwpaLyHp</guid>
            <pubDate>Fri, 20 May 2022 03:35:39 GMT</pubDate>
            <description><![CDATA[项目官网： zkpad.io 项目简介 ZKPad 是 StarkNet 上的第一个启动板。目前Zkpad有获得项目代币的机会。具体来说，就是代币化白名单（Tokenized Whitelist）的概念。也就是说，您会收到 NFT 作为参加活动的确认。最重要的是，你可以出售或交换这些 NFT。ZkPad的使命是通过提供一个平台来促进StarkNet生态系统的创新，用户将能够投资于由我们内部专家团队策划的项目。ZkPad正在为项目提供一种可编程的方式，以使用链上分析和Quest系统围绕其产品定位和构建最佳社区。 ZkPad的愿景 通过ZkPad将散户投资者和个人金融市场带入zk-Rollups。我们坚信，我们可以克服上面提到的两个主要问题，即zk-Rollups的可访问性问题，以及个人在项目早期投资时的高风险问题。打造可访问的平台我们的首要任务是促进个人和开发人员访问zk-Rollups的技术。为此，我们将提供有关该技术的教育内容，包括教程，分析，生态系统数据等...我们将建立复杂的技术监控工具，以及数据收集工具，以便能够为所有人提供重要的数据和信息。 我们还致力于为开发人员和构建...]]></description>
            <content:encoded><![CDATA[<p>项目官网： <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zkpad.io/">zkpad.io</a></p><p><strong>项目简介</strong></p><p>ZKPad 是 StarkNet 上的第一个启动板。目前Zkpad有获得项目代币的机会。具体来说，就是代币化白名单（Tokenized Whitelist）的概念。也就是说，您会收到 NFT 作为参加活动的确认。最重要的是，你可以出售或交换这些 NFT。ZkPad的使命是通过提供一个平台来促进StarkNet生态系统的创新，用户将能够投资于由我们内部专家团队策划的项目。ZkPad正在为项目提供一种可编程的方式，以使用链上分析和Quest系统围绕其产品定位和构建最佳社区。</p><p><strong>ZkPad的愿景</strong></p><p>通过ZkPad将散户投资者和个人金融市场带入zk-Rollups。我们坚信，我们可以克服上面提到的两个主要问题，即zk-Rollups的可访问性问题，以及个人在项目早期投资时的高风险问题。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">打造可访问的平台</h2><p>我们的首要任务是促进个人和开发人员访问zk-Rollups的技术。为此，我们将提供有关该技术的教育内容，包括教程，分析，生态系统数据等...我们将建立复杂的技术监控工具，以及数据收集工具，以便能够为所有人提供重要的数据和信息。</p><p>我们还致力于为开发人员和构建者开发工具，特别是在开罗，以便希望在zk-Rollups上进行开发的团队和初创公司能够更快地采用。我们在教育领域有双重使命，无论是个人还是创业公司和建筑商。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">降低散户投资者的风险</h2><p>我们的第二个任务是降低使用ZkPad的个人的风险，因为在当今的环境中，在骗局，弱队或市场危害之间，投资风险很大。我们选择首先专注于公共销售领域，并带有启动板，但是我们计划在未来为用户提供更早的投资。稍后，我们希望提供种子投资，其策略可以保证散户投资者无论如何都要零损失，但这将在以后出现。关于我们将在ZkPad上推出的IDO，我们将进行必要的研究，以确保用户的最大安全性。将运行内部审查流程，以确保用户在投资时的安全。本文稍后将详细介绍这两个选择过滤器，但是我们认为有必要进行几个验证阶段，以免错过任何内容。另一方面，核查并不总是足以保证投资者的安全，这就是为什么我们认为应该增加另一种更多的财务安全。</p><p><strong>ZkPad的主要功能</strong></p><p><strong>链上彩票系统</strong></p><p>需要创建一个独特的彩票系统，以解决我们在现有启动板上观察到的当前问题。</p><p>首先，彩票将被标记为ERC1155令牌，因此可以在Oasis等市场上作为NFT进行交易。作为其他发射台的用户，我们经常发现自己处于没有使用的彩票的情况下，因此丢失了。有了这个系统，如果用户对即将到来的IDO不感兴趣，他们将能够将他们的彩票出售给可能希望在此特定IDO中获得进一步分配的其他用户。我们鼓励用户围绕此系统构建策略并共享它们，以便改进底层技术。</p><p>其次，由于Chainlink VRF和L1-L2通信，彩票中奖者将在链上被抽出。Chainlink的随机数生成器与Starknet的可扩展性相结合，可以实现完全链上的抽奖活动。目前，在大多数发射台上，个人无法找出他们为什么在彩票中获胜/没有中奖。我们认为这必须是完全透明和公开的，这样任何人都可以分析数据，并确保系统对每个人都是公平的。</p><p><strong>智能分配</strong></p><p>用户将能够锁定其$ZKP令牌。锁定流动性也将被允许，因此激励用户为代币带来更多的流动性，确保协议的长期可持续性。锁定的时间越长，您收到的代币$xZKP就越多，因此您拥有IDO分配的机会就越大。</p><p>但是，不是使用经典的层机制，而是接收分配的机会取决于您已下注的金额和时间。我们将添加第三个参数&apos;p&apos;，它将依赖于项目。</p><p>事实上，我们意识到并非每个项目都有相同的需求和相同的期望。以相同的方式分配每个项目的流动性最终将导致较小或大型项目的流动性不平衡和不公正。我们相信每个项目都有不同的需求，我们需要一个可定制的彩票系统来更好地适应每个项目。</p><p>引入boost参数“p”，以防止鲸鱼的统治并鼓励更好的权力下放。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1540f19f662befda69075d0f888b75ef911efb29f1fe41783a996723dd6f45a8.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>示例：用户 A 有 100 个 xZKPAD，因此 N = 1，项目 X 想要筹集 500k$</p><p>然后，我们有p = 5，这导致用户A有5%的机会获得抽奖。</p><p>用户B有5000 xZKPAD，因此N = 100和p = 1，这给了1%的几率提升。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2c19e82bd9572e4ce28dfde58e2fe9d4eaa8a6b635dacda219265ba398c81326.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><strong>代币经济学</strong></p><p>17.5%的代币将在项目启动时出售，其中3.5%分配给种子阶段，10%分配给私人销售，最后4%分配给公开销售。17.5%将分配给DAO金库，因此将根据社区的决定使用，并允许项目的开发。20%将保留给旨在为项目带来流动性的不同计划，无论是形成初始流动性还是在我们的金库中抵押LP，以获得xZKP允许访问ZKP生态系统。20%用于团队和未来加入ZkPad实验室的人才。5%的顾问将帮助我们设计最佳协议，并审查在ZkPad上启动的项目。最后，20%将保留用于$ZKP代币的金库中的质押。这将是对现有各种战略的补充。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d79127b730392577d509b19c4cf2945d3f1c844084c5c156966110ff11489bba.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2914fa2c9ad60a186f6c2bd1b65add731107a783ec720921782de87b7e6c700d.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><strong>进入市场战略</strong></p><p>我们的第一个目标是zk-Rollups生态系统的所有用户和构建者，他们已经相信生态系统。我们还在第一阶段将我们的目标扩展到以太坊生态系统的所有散户投资者，无论是通过L1还是其他L2。</p><p>在第二阶段，我们正在逐步将目标扩展到其他连锁店的用户，最后扩展到CEFI的个人用户，这代表了我们长期愿景的一个非常重要的进步空间。</p><p>为了具体化这一策略，我们将首先在第一阶段使用经典的影响力杠杆，通过空投来吸引某些目标群体，但也通过媒体和影响者的策略来吸引这些目标受众。</p><p><strong>发展路线图</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/92759306125c9c176a69c513f18fd89859e23d62bdae1cf3c1fe5b4028b7f90e.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>项目官网： <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zkpad.io/">zkpad.io</a></p>]]></content:encoded>
            <author>kittenyang@newsletter.paragraph.com (kittenyang)</author>
        </item>
        <item>
            <title><![CDATA[Luna & UST 崩盘事件复盘解析]]></title>
            <link>https://paragraph.com/@kittenyang/luna-ust</link>
            <guid>xIX2ENxCPDe40UBMPBCt</guid>
            <pubDate>Sat, 14 May 2022 16:28:41 GMT</pubDate>
            <description><![CDATA[今天尝试复盘一下5月10号发生在加密货币世界的 UST 归零事件，以时间线为线索从头到位理一下整件事情的来龙去脉。同时基于普通非加密世界用户的视角，争取让小白也能看懂。最后再附带一些自己的思考。好了，那我们现在开始。什么是稳定币首先，大家肯定会问，什么是稳定币？就像现实世界有法定货币一样，这些法定货币往往波动极小。而加密世界的原生货币往往波动很大，其实并不方便加密世界的发展。那如何把这种稳定性也带到加密货币世界呢？于是自然就有聪明人想到了「稳定币」。 稳定币首先是一种特殊类型的加密货币。它用现实世界的美元、黄金、债券等稳定资产作为锚定，1:1 等值映射到加密货币的世界，就成为一种稳定的加密货币。市值排名前三的稳定币项目，Tether(USDT), Circle(USDC)和Binance USD(BUSD)都是采用美元等稳定资产作为背书的稳定币。为什么要有稳定币加密货币最常见的特征之一是高波动性。而稳定币通过将其价值与美元、黄金等联系起来，具有比其他加密货币更固定的价值。这样一来遇到波动比较大的时候，稳定币就可以作为临时的安全港。如果没有稳定币，加密货币持有者将不得不将他们的资产...]]></description>
            <content:encoded><![CDATA[<p>今天尝试复盘一下5月10号发生在加密货币世界的 UST 归零事件，以时间线为线索从头到位理一下整件事情的来龙去脉。同时基于普通非加密世界用户的视角，争取让小白也能看懂。最后再附带一些自己的思考。好了，那我们现在开始。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">什么是稳定币</h1><p>首先，大家肯定会问，什么是稳定币？就像现实世界有法定货币一样，这些法定货币往往波动极小。而加密世界的原生货币往往波动很大，其实并不方便加密世界的发展。那如何把这种稳定性也带到加密货币世界呢？于是自然就有聪明人想到了「稳定币」。</p><p><strong>稳定币首先是一种特殊类型的加密货币</strong>。它用现实世界的美元、黄金、债券等稳定资产作为锚定，1:1 等值映射到加密货币的世界，就成为一种稳定的加密货币。市值排名前三的稳定币项目，Tether(USDT), Circle(USDC)和Binance USD(BUSD)都是采用美元等稳定资产作为背书的稳定币。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">为什么要有稳定币</h1><p>加密货币最常见的特征之一是高波动性。而稳定币通过将其价值与美元、黄金等联系起来，具有比其他加密货币更固定的价值。这样一来遇到波动比较大的时候，稳定币就可以作为临时的安全港。如果没有稳定币，加密货币持有者将不得不将他们的资产再次转换为法定货币。由于大多数加密交易所在其平台上不支持法定交易，所以资金首先需要转移到支持法币交易的交易所，然后再进行转换。这一额外步骤的缺点是会产生大量的手续费。</p><p>有了稳定币，加密货币透明度和安全性的优势就可以结合稳定币的稳定性，更有利于加密领域的发展。</p><p>同时，稳定币在传统的国际汇款中有巨大优势，这个不属于本期讨论重点暂不展开。</p><p>总之，加密货币发展到现在十几年，市场上需要这样一种稳定的加密货币存在。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">算法稳定币</h1><p>上面我们知道，常见的稳定币（比如USDT、BUSD）都是由现实世界中的美元、黄金等「硬通货」作为背书的，因此就需要这个中心化机构屯有大量资产。但是这又会导致中心化问题。你怎么知道他真的有那么多1：1 的资产？你怎么保证他不会觉得这些资产闲着也是闲着，偷偷地挪用做别的用途？或者直接 rug pull 了你也无能为力。</p><p>所以，去中心化的算法稳定币应运而生。</p><p>通过一套算法，让稳定币即使没有实体美元作为保底，也能让其价值始终徘徊在 1美元 附近。</p><p>我们今天的主角 —— UST，这是目前，准确说应该是5月10号以前，最成功的<strong>算法稳定币</strong>。在开始讲 UST 如何保持 1美元锚定的机制之前，我们不妨先探讨一下，为什么大家都要以美元为背书？</p><p>说白了，就是靠信用，大家都相信美元。这也是传统货币的本质。为啥大家相信美元？因为美元已经牢牢和这个星球的经济命脉绑定在一起了，各种大宗商品、黄金、能源、外汇交易等都以美元作为标准结算货币。这已经是大家也默认的事实了。因此只要你手里有美元，相当于走到哪里都是「硬通货」，一定能消费出去。所以加密世界里，常见的稳定币都用现实世界中的美元做为背书，即使加密世界崩盘了，你任何可以1:1地换回现实世界中的美元。</p><p>而算法稳定币的初衷就是，<strong>打破美元的垄断</strong>。为啥要让美元作为我的背书？我不能直接变成美元吗？这其实是直接站到了美元功能这一层，通过复制美元如何一步一步深入现实世界命脉的过程，算法稳定币也想成为加密世界里真正的稳定币，从而彻底拜托美元。</p><p>其实这才是中本聪最开始设计「比特币」的精髓，<strong>点对点</strong>，<strong>去中心化</strong>。只不过后面比特币的发展让它更具备了黄金的功能，背离了去中心化的初衷。但还是有不少算稳币的信徒接过了接力棒，这里面就包括 UST、Luna 的创始人，毕业于斯坦福计算机系的 Do Kwon。与此同时，一旦算法稳定币的运转经过社会检验并且成立了，这必然会动了美元的蛋糕，这块后面会说到。</p><h1 id="h-ust-luna" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">UST - Luna 代币经济学</h1><p>好了，说完这么多，终于可以来说说 1UST 是如何锚定到价值1美元的。</p><p>Terra 公司主要发行了两种主要Token：</p><ul><li><p><strong>Terra</strong></p><p>Terra类型的稳定币，用来绑定法币价格。例如TerraUSD(UST)用于与美元挂钩，TerraKRW(KRT)用来与韩元挂钩，等等。只不过 UST 用的最多，我们下面都有 UST 举例。</p></li><li><p><strong>Luna</strong></p><p>Luna 最主要的作用是来消化 UST 的不稳定性(valatility)。除此之外，还有Terra网络的质押挖矿、社区治理的作用。</p></li></ul><p>具体来说核心就一个公式：</p><p><code>1 USD (LUNA) == 1UST</code></p><p>这是 Terra 生态的铁律！<strong>任何时候1美元价值的Luna</strong> 都可以和 <strong>1个UST</strong> 进行 <strong>互换</strong>。</p><p>UST 通胀时， LUNA 通缩；UST 通缩时， LUNA 通涨。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cdbc75a283a495cee2a05159ff83cdaefddbfceb67f22f8a342a539523fda7d2.png" alt="UST-Luan 套利机制" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">UST-Luan 套利机制</figcaption></figure><p>如上图所示。假设创世纪开始的时候，设计者就规定 1UST 的价值等于 1美元，然后投入市场。</p><ul><li><p>当市场开始疯抢 UST 时， UST 的价格变成了 1.1 美元，即高于 1 美元的锚定价。此时，套利者会看到利润可图，因为有那条铁律在：<strong>任何时候1美元价值的Luna</strong> 都可以和 <strong>1个UST</strong> 进行 <strong>互换</strong>。于是会立刻销毁等值 1 美元的 LUNA ，同时铸造新的 UST。然后再卖出 UST，获利 1.1 - 1.0 = 0.1 USD。毫不费力的稳赚10%利润。此时市场上的结果就是：UST 数量变多，价格下降，成功回到目标锚定价格 （即 1 美元）；而 Luan 由于被销毁，整体数目减少，luan 升值。相当于是 Luna 把 UST 的上涨空间「吸收」了。</p></li><li><p>当 UST 的交易低于 1 美元的锚定价格时，也存在类似的套利机会，这意味着 UST 稳定币的供应超过了需求。如果 UST 的价格是 0.9 美元，套利者就会被激励销毁 UST 来铸造 1 美元的 LUNA。这将减少 UST 的供应， UST 的价格重新拉回到 1 美元的价格。而 Luna 由于通胀而贬值。</p></li></ul><p>可以看出，LUNA 就像是一个「吸血鬼」，把 UST 的波动全部吸收到自己身上，从而保证 UST 的稳定。因此 Luna 的持有人为了自身利益，会不遗余力的去推广 UST。因为 UST 的使用场景越多，对 UST 的需求量就会越来越大，从经济模型上推导出 Luna 的价格也会越来越高，从而自己手里的 Luna 越来越值钱。</p><p>所以下面的事情就简单了，如何让 UST 用的人越来越多？LFG （运作 Terra 生态的部门）的人也是想了很多办法，比如让韩国政府开始线上线下消费都开始用 UST 支付，扩大其现实生活中的落地。但事实证明，市面上大概 80% 的 UST 都躺在 Anchor Protocol 里吃 20% 超高利息，这对于稳定币来说简直就是巨大的吸引。LFG 刚开始为了把盘子做大，每年都在补贴这个利息，这也无可厚非，但其实这样会导致很少有实际的流通性场景。这里面就有一个很大的隐患！</p><p>如果 Anchor 里面所有 UST 开始同时抛售，导火索可能是没有20%利率了、比如 Anchor 网站被人黑了、比如其他黑天鹅事件导致恐慌情绪扩散等等，总之如果 Anchor 里的 UST 开始如水库开闸泄洪般抛售，而市场上又没有更多的地方消化 UST，那么 UST 就会供大于求，导致不断抛压，价格连连走低。这时 LFG 就会开始救场，通过储备的 BTC、ETH 大量买入 UST 控制住市场的供需关系，从而控制住 UST 币价。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">死亡循环</h2><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cdbc75a283a495cee2a05159ff83cdaefddbfceb67f22f8a342a539523fda7d2.png" alt="UST-Luan 套利机制" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">UST-Luan 套利机制</figcaption></figure><p>从上图我们看出，好像传导是单向的对吧？</p><p>因为 1UST 始终是和 1美元等值的 LUNA 挂钩，无论你 LUNA 价格怎么变，最后始终都是等值成1美元去和 UST 互换，差别只是 LUNA 的数目。看着没问题是吧？但是这里面其实有 BUG 的！</p><p>还记得 Terria 世界里的那条铁律吗？</p><p><strong>任何时候1美元价值的Luna</strong>可以和<strong>1个UST</strong>进行<strong>互换</strong>。</p><p>这句话背后的潜台词其实是，LUNA 的市值一定要大于等于 UST 的市值。因为 UST 的上涨都被 LUNA 吸血了，所以正常情况下 LUNA 市值肯定是大于 UST 的。但是一旦 LUNA 开始快速崩塌，1UST无法足额兑换1美元的LUNA的时候，那么 BUG 就会触发了。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ac79364ac67a572cbdc599b00092bac0cc8ce7b19c0ddef3653174dbad539831.png" alt="死亡循环" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">死亡循环</figcaption></figure><p>LUNA 暴跌 -&gt; UST 持有者无法兑换足额LUNA -&gt; UST 抛售 -&gt; UST 供大于求 -&gt; UST 脱锚 -&gt; 矿工开始用UST铸造更多的LUNA已借此稳定 UST -&gt; LUNA 继续暴跌</p><p>这就是死亡循环。</p><p>这里面任何一个节点都可以作为导火线，然后引爆整个循环。而最容易引爆的点，就是触发 UST 的抛售。因此早就有机构早早就盯上了。接下来就让我们来具体复盘一下510 这次加密货币史上足以写入历史的 UST 狙击事件。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">事件复盘</h1><p>首先我们要知道，任何重大的历史金融事件都不是简简单单一个因素导致的，这次的 UST 崩盘也一样。在此之前 UST 脱锚不是一次两次了，最后通过项目方的积极救市也都弥补了回来，可见项目方对于脱锚处理能力其实是很有经验的，但为什么这一次打击这么彻底。主要还是多种不利因素累加到一起，也就是天时地利人和，让币圈巨鳄们的这场蓄谋已久的以少胜多阻击战成功执行！</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">天时</h2><p>5.5，美联储宣布再次加息 50 个基点后，纳斯达克指数持续下滑，市场对宏观形势的反应极度悲观，比特币价格也连续数日下跌近 10%，恐慌情绪在整个加密市场迅速蔓延。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">地利</h2><p>5.8 ，LFG 为组建自己更强大更稳定的 UST-4Crv 池，宣布调整暂时还比较小的 UST-3Crv 流动性池，从 UST-3Crv 池中撤走了 1.5 亿美元的 UST 流动性。这让短时间内 3Crv 池子变得极为脆弱，但也就是这个窗口期，为空头狙击者创造了一个绝佳的机会。</p><h3 id="h-2022-05-07-094427pm-utc" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2022-05-07 09:44:27PM + UTC</h3><p>LFG 开始从 3Crv 池中撤走1.5亿美金UST</p><h3 id="h-2022-05-07-095727pm-utc" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2022-05-07 09:57:27PM + UTC</h3><p>十三分钟后，一个前期默默囤积了大量 UST 的地址开始突然抛售8400万 UST，导致原本就很脆弱的池子立刻供大于求，UST 瞬间脱锚</p><h3 id="h-2022-05-07-105227pm-utc" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2022-05-07 10:52:27PM + UTC</h3><p>一个小时后，为了保持 UST-3Crv 池流动性的平衡，LFG 只能又从资金池里撤走了 1 亿美元的 UST。</p><h3 id="h-2022-05-08-032127am-utc" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2022-05-08 03:21:27AM + UTC</h3><p>没过多久，多个巨鲸帐户开始不断在币安抛售 UST，每笔交易金额都是百万美元级别。</p><h3 id="h-2022-05-08-045632am-utc" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2022-05-08 04:56:32AM + UTC</h3><p>UST 做市商 Jump Trading 开始抛售了大量 ETH 以买入 UST，试图稳定 UST 的锚定。</p><p>以上，第一波攻击结束，UST 虽然最低下探到0.985，但后面被 Jump Trading 通过 ETH 成功救回到了 0.9977。</p><p>而又因为 UST 始终在 0.95 美元以上，根据 Do kwon 的说法这并不算脱钩，而且从历史经验来看，也多次出现脱锚的情况，但都被救市和市场慢慢消化回来。因此 LFG 并没有特别理会这次的攻击，更不会在这个阀值之上动用库存里的比特币。</p><p>这也导致了5.8、5.9这两天的时间里，虽然 UST 迟迟没有回到1美元，但 LFG 并没有理睬。</p><p>其实市场是给过 LFG 两天时间的，如果这两天 LFG 破例直接动用比特币把 UST 拉回来，可能就又是一次平稳化解危机的案例。但事实是，LFG 没有。</p><p>就是因为这两天的疏忽，导致 UST 持有者发现稳定币迟迟没有回归正常1美元，恐慌情绪不断在 UST 持有者之间蔓延。然后就爆发了真正的危机 —— Anchor 中的 UST 出逃！</p><h3 id="h-2022-05-09-075632pm-utc" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2022-05-09 07:56:32PM + UTC</h3><p>这也是导致本次崩盘的直接原因。从 Anchor 里出逃的 UST 开始大规模抛售，UST 锚定跌破 0.95 美元阀值。LFG 才开始被迫动用比特币救市。</p><p>虽然BTC 救市效果很明显，但是万万没想到的是，BTC 大量抛售导致 BTC 价格也开始下跌，BTC 下跌又导致 Luna 出现大规模清算，导致 luna 开始暴跌，然后就回到了我们上面那张图了，至此，死亡螺旋正式触发。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ac79364ac67a572cbdc599b00092bac0cc8ce7b19c0ddef3653174dbad539831.png" alt="死亡循环" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">死亡循环</figcaption></figure><p>Jump Trading 和 LFG 也意识到局势的天平已经不在自己控制范围内了，不再出售比特币储蓄以保护锚定，任凭事态恶化。因为在巨量的出逃资金面前，LFG 手里的比特币已经是螳臂当车了。</p><p>到此为止呢，UST 的事态到了无法弥补的地步了，也就有了我们现在看到的已经基本归零的 UST 了。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">人和</h1><p>整个5月份，我们看到有大多数知名的 defi 负责人开始渲染 Terra 上最大的应用 Anchor 存在的危机，这很可能是空头们给投资者蓄意植入这样的思想。与此同时，很可能早就在 Anchor 里埋伏了好多这样的账号了，等待一波总号角吹响，开始「揭竿而起」集体撤资，挑起崩盘的势头。散户们一看大家都在撤了，于是自己也撤了。一旦墙倒众人推了，这个态势就已经止不住了。</p><p>算法稳定币的根基建立在信心之上，一旦信心瓦解了，整座大厦可以瞬间瓦解。本来 crv3 升级到 crv4 池子是一个巩固信心有力的方式，没想到还是倒在了最后一步。有点可惜。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">真正的幕后？</h1><p>纵观整件事情下来我们发现，这是一场非常成功的、有预谋的、以少胜多的商战。而且时间之短，实时在链上直播，不得不说非常精彩。然而就在归零后不久，就传出了监管层面的新闻。5 月 10 日在国会山的会议上，美国财政部长耶伦谈到加密市场中美元 Stablecoin 的监管，耶伦认为，美元 Stablecoin 监管的立法迫在眉睫，「这个领域增长迅速，并随之带来巨大风险，众所周知，今天 Terra UST 经历了一轮下跌」。</p><p>这不免让人感觉到蹊跷。因为真正币圈里的人，其实还是希望 Terra 生态能够做起来的，随着算法稳定币的应用越做越大，不断渗透人们的生活，它的不稳定性其实会越来越小，直到让人们都相信算法稳定币就是稳定币。最大的一个证据就是，像 Binance 这次也参与了 UST 保卫战，强行为 UST 订单簿设置了交易地板价，在较长一段时间内用户都无法在 0.7 美元阀值下提交订单。</p><p>于是我们可以想一下，算法稳定币真正动了谁的蛋糕？我们前面提到，算法稳定币其实是想跳过美元背书，直接做用户信用替换美元的作用。这就实实在在地动了法定货币的蛋糕啊。你想想要是现在大家出门购物、打车都可以用一个不受政府控制的货币，而且大家还都认这种货币，极其稳定，这对传统的金融机构和政府部门来说，那是万万不会允许的。</p><p>当然以上观点有点阴谋论了，只代表我的一种推测啊，但也不排除这个可能。</p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">总结</h1><p>总的来说，在日新月异的加密领域，有这样创新的项目出来还是很值得鼓励的，人类的发展也需要不断挑战权威，勇于革新的人。单就这一个机制来看，我觉得还是一个伟大的发明，只是倒在了历史的进程中，有点可惜。未来不知道还会不会有算法稳定币的出现不得而知，毕竟这个心智需要社会消化几年甚至几十年吧。</p><p>最后，关于死亡螺旋这个事情，还让我想起了大自然的一个 BUG：</p><p>话说有这么一种动物叫行军蚁，行军蚁的行动规则是：每一只蚂蚁都会分泌 “踪迹费洛蒙” 让其后面的蚂蚁跟随。正常情况下，如果领头的行军蚁轨迹正常，大部队都能跟上，整个系统就能超高效率的运转。但是当领头的行军蚁一旦失去方向，导致 “踪迹费洛蒙” 混乱，而后面的蚂蚁不知道前面的情况，依然跟着踪迹无脑向前冲，就会让整个系统崩溃，甚至陷入死亡旋涡，整个系统绕着一个圈不停打转，直到体力耗尽全军覆没。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5004719feead6a9eaa26f1b0ee1b0169a5ac900e28b156e5303a59be86d94fda.png" alt="行军蚁死亡转圈" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">行军蚁死亡转圈</figcaption></figure><p>蚂蚁们可能并不知道自己在转圈，它们只是知道跟着气味跑肯定是对的，只要前面还有气味，就证明领头的蚂蚁带的路正确，后面都会无脑跟随。那么人类创造的看起来完美的智能合约，又何尝不是这样一个事物？人们想得很美好的是，一旦合约部署到区块链上了，就会永远按规则为人们服务，一切都按合约看似很有效率地办事，但一旦合约存在一些边界 case 触发 bug，那它就是一台失去控制的机器，谁也不知道会发生什么样的后果。</p><p>连大自然都避免不了这样的 BUG 存在，更不要说弱小的人类了。但我还是对加密世界抱有热情和希望，因为人类就是这样，不会因为有风险就停止不前，人类习惯在一片片废墟上继续滋养出更完善的事物，正如这个星球一样，经历一个又一个世纪的更替，一遍又一遍地迭代。</p>]]></content:encoded>
            <author>kittenyang@newsletter.paragraph.com (kittenyang)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/ec7142434b87344806a558a7f8ee27315385dae0dde6c6f3c8baf0134470ee2e.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[五个月，我开发了一款中华百科 App]]></title>
            <link>https://paragraph.com/@kittenyang/app</link>
            <guid>ErAXmwaNTt076xjhAn4Q</guid>
            <pubDate>Sat, 08 Jan 2022 05:03:09 GMT</pubDate>
            <description><![CDATA[2019年未，新冠疫情席卷全球，人们与世界的连结被这小小的病毒彻底打破。历史总是惊人的相似，就像鲸落一样，一座鲸的尸体可以供养一套以分解者为主的循环系统长达百年，一次世界性的危机也可以孕育出世界性的变革。2008年经济危机，影响了中本聪创造了划时代的区块链；2019年新冠疫情，成为了元宇宙再次崛起的导火索。其实元宇宙压根就不是一个空间概念，而是一个时间概念。如果你一天 24 小时在数字世界花费的时间大于现实世界，那你其实就已经进入了元宇宙。在这个角度上，难道我们我们不是已经早就进入元宇宙了吗？ 最近一年我在物理空间的移动明显受到了限制，这也让我更加怀念疫情前的环游中国之旅。2017年12月~2019年5月，我完成了环中国之旅。这一年半对我的改变真的是翻天覆地，我知道，旅途结束了，但是它带来的影响所产生的巨大惯性足够了我消化好一阵子了。 这一年半时间，上溯祖国山川河流，下访各地百姓生活，跳脱出书本让我对自己的国家有了更加深刻的认识，了解得越深，就愈发喜爱这片土地上留下的东西。在这段漫长的旅程中我逐渐萌生出了一个念头，就是希望能唤起人们对中华优良传统文化的重视以及对大自然的热爱。 作...]]></description>
            <content:encoded><![CDATA[<p>2019年未，新冠疫情席卷全球，人们与世界的连结被这小小的病毒彻底打破。历史总是惊人的相似，就像鲸落一样，一座鲸的尸体可以供养一套以分解者为主的循环系统长达百年，一次世界性的危机也可以孕育出世界性的变革。2008年经济危机，影响了中本聪创造了划时代的区块链；2019年新冠疫情，成为了元宇宙再次崛起的导火索。其实元宇宙压根就不是一个空间概念，而是一个时间概念。如果你一天 24 小时在数字世界花费的时间大于现实世界，那你其实就已经进入了元宇宙。在这个角度上，难道我们我们不是已经早就进入元宇宙了吗？</p><p>最近一年我在物理空间的移动明显受到了限制，这也让我更加怀念疫情前的环游中国之旅。2017年12月~2019年5月，我完成了环中国之旅。这一年半对我的改变真的是翻天覆地，我知道，旅途结束了，但是它带来的影响所产生的巨大惯性足够了我消化好一阵子了。</p><p>这一年半时间，上溯祖国山川河流，下访各地百姓生活，跳脱出书本让我对自己的国家有了更加深刻的认识，了解得越深，就愈发喜爱这片土地上留下的东西。在这段漫长的旅程中我逐渐萌生出了一个念头，就是希望能唤起人们对中华优良传统文化的重视以及对大自然的热爱。</p><p>作为一个软件开发者，有什么是我可以做的呢？</p><p>很自然的，我想到了开发了一款 App。但是以什么形式展现是个问题。是做一个全网海量信息聚合的大百科全书吗？那和浏览器有什么区别？既然我的初衷是唤起大众对中华传统文化和自然的兴趣，那么一定不能是过于枯燥的，有没有什么形式能让用户参与进来学习的？我首先想到的就是游戏。</p><p>这当然是最好的选择，通过寓教于乐的形式，从而激发兴趣。但是这不符合实际，我面前的可是 34 个省份啊，倘若每个省份都要做成游戏的形式，以我一人之力估计没个两三年是做不下来了。退而求其次，最后我把这部分做了一个交互式幻灯片的形式。</p><p>这款 App 主要包含了百科和图库两大部分，其中百科是对每个省份分别就地缘、历史、文化、世遗、市镇、饮食 6 个方面的介绍，使用了类似于幻灯片的横向滚动设计，像一幅画卷徐徐展开，介绍每个省份的独一无二的故事。</p><p>图库部分，我把这一年半拍摄的所有照片精挑细选之后，分门别类，放到每个省份之下，作为对各个省份的补充。所有图片均可以免费下载供个人使用。</p><p>最后取名字真是个随缘的活，有时候灵光一现立马就能取出来，有时候绞尽了脑汁半天也没个结果。最终，我还是选用了一开始作为备用的名字 —— 华夏万象，英文名叫 China Guide，如果你切换到英文语言下可以看到。</p><p>诚然，一款小小的应用不足以承载中华大地几千年积淀而成的文化底蕴的庞大体量，App 中也只能尽可能多地展现具有代表性的事物，做到抛砖引玉，点到为止。若能唤起人们热爱自然、探寻历史、传承优良习俗的意识，并为之付诸行动，便算是达到了这款应用本来的目的，这样也就足够了。</p><p><strong>能给这个世界留下点什么一直是我努力追求的事情之一</strong>，这款 App 更多的算是满足我的一个愿望，所以一开始就不打算以营利为目的，但是请允许我象征性地收取 3 块钱以 cover 服务器开销。同时还特意适配了 iPad。唯一的内购也是以捐赠的形式，但这完全是自愿的。</p><p>以下是《华夏万象》 App 的宣传片：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/68/05/105990568/105990568-1-208.mp4?height=400&amp;width=640&amp;controls=true&amp;e=ig8euxZM2rNcNbhH7bdVhwdlhzejhwdVhoNvNC8BqJIzNbfq9rVEuxTEnE8L5F6VnEsSTx0vkX8fqJeYTj_lta53NCM=&amp;uipk=5&amp;nbs=1&amp;deadline=1642955706&amp;gen=playurlv2&amp;os=kodobv&amp;oi=3073951711&amp;trid=fe85dd1831ae4da182c05bef06c3c994T&amp;platform=html5&amp;upsig=f40ad9646c8d7e82f888b2c202e2728e&amp;uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&amp;mid=0&amp;bvc=vod&amp;nettype=0&amp;bw=397948&amp;orderid=0,1&amp;logo=80000000">https://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/68/05/105990568/105990568-1-208.mp4?height=400&amp;width=640&amp;controls=true&amp;e=ig8euxZM2rNcNbhH7bdVhwdlhzejhwdVhoNvNC8BqJIzNbfq9rVEuxTEnE8L5F6VnEsSTx0vkX8fqJeYTj_lta53NCM=&amp;uipk=5&amp;nbs=1&amp;deadline=1642955706&amp;gen=playurlv2&amp;os=kodobv&amp;oi=3073951711&amp;trid=fe85dd1831ae4da182c05bef06c3c994T&amp;platform=html5&amp;upsig=f40ad9646c8d7e82f888b2c202e2728e&amp;uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&amp;mid=0&amp;bvc=vod&amp;nettype=0&amp;bw=397948&amp;orderid=0,1&amp;logo=80000000</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.bilibili.com/video/BV1ot411A7YU/">视频链接</a></p><p>现在，如果您是苹果用户，你可以点击下方 App Store 的 Today 首页推荐链接下载体验，感谢支持~</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://apps.apple.com/cn/story/id1479523620?l=en">https://apps.apple.com/cn/story/id1479523620?l=en</a></p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">摄影作品</h1><p>值得一提的是，这一年半时间趁着环游中国的经历，我留下了许多风光摄影作品，也靠这些图片获得了不少版税收入。随着 NFT 的热潮，我明显感觉到未来去中心化的优势和稀缺性带来的虚拟世界个性化。因此我诞生了把我的优秀摄影作品搬上区块链的想法，获得此 NFT 的用户，不仅可以获得传统中心化平台购买版权拥有的权利，还可以作为独一无二的收藏。在可预见的虚拟世界（或者你也可以称它为元宇宙）里，陈列它，供其他网友欣赏。就像你在自己家墙壁上挂了一幅画。</p><p>我会把一年半的「小K中国行」中绝版（因为时间原因其机位基本已无法复制）的几张作品放在 OpenSea 上。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://opensea.io/assets/matic/0x2953399124f0cbb46d2cbacd8a89cf0599974963/42093201683870922203243999321296062302825578850127261087349099630517012135941/">https://opensea.io/assets/matic/0x2953399124f0cbb46d2cbacd8a89cf0599974963/42093201683870922203243999321296062302825578850127261087349099630517012135941/</a></p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">徽章</h1><p>同时，我也会在 Mirror 发布 10枚 华夏万象限量款徽章。此徽章只会在 Mirror 独家发售。不能保证短期立刻升值，如果你看好 NFT 的未来，同时喜欢华夏万象这款产品，那将它尽早收入囊中肯定是没错的。如果你就是想拥有，那就买买买吧~</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0xDF5b5ee15CC96ba7d0CB6BD9b2c0fc4417ab6445">edition://0xDF5b5ee15CC96ba7d0CB6BD9b2c0fc4417ab6445?editionId=3472</a></p><h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">尾巴</h1><p>到这里本文基本就结束了，下面的内容是一点开发时候的心路历程，读者们可以选择性阅读，因为我觉得自己挺话痨的。</p><p>现在回过头来看一看，开发这款 App 的过程中，最耗时的还要算是整理内容了，这也是最费精力的工作。5 个月真正用来写代码的时间可能不到一个月，其他时间都用在了内容整理上。整理的内容包括文字和配图。关于文字部分，比如现在要开始一个新的省份的话，我会先浏览完维基百科关于这个省份的介绍，归纳出关键字，然后就每个关键字接着去查阅维基百科。很多时候，我都会迷失在维基百科这些超链接里，一层一层点进去就忘了要归纳点什么。除了看维基百科之外，我还会翻看星球研究所、地球知识局、地球旅客的相关文章，这三个公众号写的都是关于各省或各地区人文、历史的文章，虽然主观性比较强，但也值得一看，对于维基百科上冷冰冰的知识会有更感性的补充。看完了上面这些资料后，基本就可以归纳出 App 中关于每个省份的文案了。到这里，通常一个白天的时间也就过去了。</p><p>接下来就到了制图环节了。App 里所有图片都使用了 Public Domain 或者 CC0 协议或者自己拍摄的图片，以避免版权争议。枯燥的抠图工作真是让我怀疑人生，好多时候，我都怀疑自己在干嘛？不好好写代码在这里浪费时间做这些毫无技术含量的活儿。后来我找到了解决办法，就是听书。因为这一环节主要还是大脑处理视觉的区域在工作（我自己感觉的，不知道科学上解释是不是这样），不需要动用大脑的文字处理和逻辑处理能力，所以可以同时进行。我开始了在微信读书上听书。从开始听书到现在的 2 个月时间，我一边制图一边印象深刻地听完了 17 本书，收获颇丰。到后来，制图环节成了我最喜欢的环节。这也让我现在养成了一个习惯，就是在做不需要动脑的事情的时候（比如吃饭、画画、做手工的时候）都会开始听书。反正大脑闲着也是闲着，既然有多线程的能力为什么不利用起来呢？</p><p>最后就是编写代码了。这一部分开始时还需要费点脑力，后来由于重复性代码比较多，甚至不需要动脑了，于是顺理成章地也变成了我的听书时间。</p><p>回顾这五个月，我还从来没有拿出这么大一段时间用来密集地看书和思考，这真是一段难得的经历，让我感受到了读书洗涤心灵、充实心灵的魔力。</p><p>现在《华夏万象》告一段落了，以后基本以小修小补为主。我希望这波热度赶紧过去，因为我对《华夏万象》的愿景还是细水长流，能持续影响后来的人。我希望未来某一天，当我甚至忘了曾经开发过这个 App ，邮箱里突然出现一封年轻人的来信，上面写着：“感谢前辈开发了这款应用，让我对中华文化和大自然产生了兴趣。” 这才是我最想要的。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/dd38c2185e94ec08fe15fcc4db1d67747f4ee10cbfec1454101afefbeed22b6e.webp" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure>]]></content:encoded>
            <author>kittenyang@newsletter.paragraph.com (kittenyang)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/6c3122131d56f332cb7f4e3524535a4e65d52f9080ad5d00db4929a3d2d9e3ef.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[风光摄影机位指南]]></title>
            <link>https://paragraph.com/@kittenyang/mDTV88w4qsm1xsilFJ1X</link>
            <guid>mDTV88w4qsm1xsilFJ1X</guid>
            <pubDate>Fri, 07 Jan 2022 16:13:30 GMT</pubDate>
            <description><![CDATA[Some landscape photos taken in ChinaSome landscape photos taken in China上面的照片是我在全国各地拍摄的一些作品。在我没有入坑 风光摄影1 之前，我看这些照片的感觉就和在壁纸网站选壁纸是一个心情，觉得很美但是从来没想过自己去试试。主要一个原因就是对于当时还是白领的我来说，户外拍摄是奢侈的；好不容易有个小长假了，看到热门景点人头攒动的景象，心想：我去遭这罪？算了算了，周围转转吧；一看周围，平均海拔 4 米，全市最高峰佘山海拔 100 米，想想又算了。 2017 年 5 月，我开始了作为独立软件开发者的日子，期间去了趟贝加尔湖，这是我第一次有意识地拍摄风光，用我的第一台入门单反 —— Nikon D5200 + 18-105「狗头」。 现在回头看当时的照片，看起来就是很普通的「游客照」：贝加尔湖西伯利亚森林2017 年 12 月，我开始了环中国行。并且换了一台入门级全画幅微单 —— Sony A7M2 + 蔡司 55 1.8、三阳 14 2.8 两个镜头。心想，这都上全画幅了，可不能浪费了，然后开始学习前期拍摄和后...]]></description>
            <content:encoded><![CDATA[<h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/fd1ed0f2cbf4460c472d387caa95d6c10319818168a444f66f785851a3815826.jpg" alt="Some landscape photos taken in China" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Some landscape photos taken in China</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d0e2a3f1b06ad2ac26ab29dcfa8043bf10375ad5d2ffe16db47dbc27e25c6f49.jpg" alt="Some landscape photos taken in China" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Some landscape photos taken in China</figcaption></figure><p>上面的照片是我在全国各地拍摄的一些作品。在我没有入坑 风光摄影1 之前，我看这些照片的感觉就和在壁纸网站选壁纸是一个心情，觉得很美但是从来没想过自己去试试。主要一个原因就是对于当时还是白领的我来说，户外拍摄是奢侈的；好不容易有个小长假了，看到热门景点人头攒动的景象，心想：我去遭这罪？算了算了，周围转转吧；一看周围，平均海拔 4 米，全市最高峰佘山海拔 100 米，想想又算了。</p><p>2017 年 5 月，我开始了作为独立软件开发者的日子，期间去了趟贝加尔湖，这是我第一次有意识地拍摄风光，用我的第一台入门单反 —— Nikon D5200 + 18-105「狗头」。</p><p>现在回头看当时的照片，看起来就是很普通的「游客照」：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/dbb422a1684882d5dd91fd3cf2a4d8b88ef3080503eeb941e18dff54c2d8308b.jpg" alt="贝加尔湖" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">贝加尔湖</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1fcf96efa28182c00a4a909a6da4a79942410a58337fd3c0b1a9719b9c9d62ca.jpg" alt="西伯利亚森林" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">西伯利亚森林</figcaption></figure><p>2017 年 12 月，我开始了环中国行。并且换了一台入门级全画幅微单 —— Sony A7M2 + 蔡司 55 1.8、三阳 14 2.8 两个镜头。心想，这都上全画幅了，可不能浪费了，然后开始学习前期拍摄和后期处理。我就这么在外面拍了一年、满中国跑，白天拍照晚上修图，也积累了一点经验，所以准备写一篇文章，为喜欢户外和风光摄影的朋友分享一点「干货」。</p><p>关于风光摄影，摄影师往往喜欢说自己拍这张照片等了多久多久，以显得来之不易。其实，现在的风光摄影已经不是以往靠人品靠蛮力一味「等」出来的时代了。了解自然规律、运用好工具，再加上那么一点点运气，完全可以做到「未卜先知」，极大地提高出片率。</p><p>下面我将通过几个例子完整走一遍我现在的摄影工作流程，介绍一下我是如何从头开始寻找一个拍摄机位并且规划拍摄方案的。我强烈建议你先下载好接下来我会介绍到的一些工具，这样可以一边看一边跟着做，帮助加深印象。</p><p>以下是我在进行风光摄影时会用到的软件清单，如无特别说明，均为手机端 App：</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://apps.apple.com/cn/app/windy-com/id1161387262">Windy</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://apps.apple.com/cn/app/planit%E5%B7%A7%E6%91%84%E7%8E%B0%E5%9C%BA%E7%89%88-%E6%91%84%E5%BD%B1%E7%8E%B0%E5%9C%BA%E5%88%A9%E5%99%A8/id1455712879">巧摄</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://apps.apple.com/cn/app/%E4%B8%A4%E6%AD%A5%E8%B7%AF-%E6%88%B7%E5%A4%96%E5%8A%A9%E6%89%8B/id646277024">两步路</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://apps.apple.com/cn/app/star-walk-2-%E6%98%9F%E7%A9%BA%E6%BC%AB%E6%AD%A5-ar-%E6%98%9F%E7%A9%BA%E5%9B%BE-%E5%A4%A9%E6%96%87%E8%A7%82%E6%B5%8B/id892279069">Star Walk 2</a></p></li><li><p>「莉景天气」微信小程序</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.google.com/earth/versions/#download-pro">Google Earth Pro</a> (电脑端)</p></li></ul><p>接下来开始正式介绍我的风光摄影工作流。</p><p>我们先以四川的贡嘎雪山为例。</p><h2 id="h-part-1" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Part 1 ：寻找候选机位</h2><p>像拍摄这类山脉雪峰主题的照片，我会先打开 <strong>Google Earth</strong> ，搜索「贡嘎雪山」，大致用「上帝视角」看一看附近的环境。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>按住「Shift」键同时拖拽鼠标，你就能操控三维视角了。记得打开 Google Earth 自带的「照片**」**图层，这些照片会告诉你在这个角度能看到什么样的构图，有很大参考价值。如果觉得某个点的构图有潜力，比如搭配上某个特殊时刻的天空、或者搭配一些地景会产生不同的视觉效果等等…… 这些都属于「有潜力」的范畴。</p><p>如果你初步找到了合适的地点，可以使用左上角的「添加地标」功能，在这个地方打上一个点、写上备注，方便筛选和快速定位。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>然后，打开「<strong>两步路</strong>」这个 App，这是一个在「驴友圈」很知名的 App，上面有很多徒步爱好者贡献的徒步路线。在地势复杂的山区，如果有一条被别人证实过可以安全通行的路线，那无疑是一份珍贵的宝藏。在「两步路」搜索「贡嘎」，会出现许多可用的徒步线路。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>驴友们大多以徒步为主，照片自然就不会太注重质量，但对于摄影师来说有这样的现场照片提供参考已经足够了。接下去让我们对照着驴友们提供的线路，重新回到  <strong>Google Earth</strong> 上走一遍。利用  Google Earth  的 3D 功能，实地模拟一遍；把右上角的这个小人图标拖动到你想要的位置，视角就会自动切换到第一人称，方便我们进行构图。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>接下去就需要耐心了。把「两步路」上的线路都用 Google Earth 模拟一遍，寻找那些有潜力的机位。如果已知的路线都走完了，就可以在 Google Earth 上探索新机位了。比如，雪山倒影是一个经典的构图，你可以在贡嘎峰周围找一找湖泊、或者在网上搜索关键词「贡嘎倒影」，看看有没有已知的机位。</p><p>由于「蜀山之王」的名气实在太高，因此倒影的机位早就有人探索到了，分别是「冷噶措」和「贡布措」两个地方。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>又比如以雪山为背景，山谷延伸为前景也是很经典的构图。「老贡嘎寺」就是一个类似的机位。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>还有看贡嘎最佳的位置「子梅垭口」「玉龙西垭口」等等.....</p><p>除此之外，你还可以寻找新的机位。比如下面是我们团队里的成员拍到的亚丁央迈勇。计划图和实拍图：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>对于新手我建议先拿类似贡嘎的这些热门机位练手，因为这些拍摄点已经比较成熟，容易到达。另外非常不推荐一上来就盲目去创造新的机位，因为山区地势复杂，实地情况往往比计划复杂。我们现在去山区拍摄依然会找当地向导带路。</p><p>好，现在你已经找到很多机位了，如果你每次都标注的话，你的  Google Earth  左侧应该已经有很多「大头针」了；下一步就要开始进行精确构图了。</p><h2 id="h-part-2" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Part 2 ：精确构图</h2><p>这时候就该隆重介绍「<strong>巧摄</strong>」了。这款 App 对风光摄影的意义可以说是巨大的，它完全拓宽了摄影师的思维边界，创造了很多前所未有的构图。举个例子，看下图。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">图片已授权：乔文杰计划，曾诚宇拍摄</figcaption></figure><p>放在以前，你第一眼看到这张图片一定会以为是 PS 的：哪有这么巧月亮刚好和金茂大厦、环球中心连成一线，而且正中开瓶器缺口，假的。</p><p>但事实是这就是通过「巧摄」计算出来的，并且它还会告诉你：未来十年内这个构图只会出现 5 次，每次只有短短十几秒，还很可能因为天气不好拍不到。</p><p>从上面这个例子我们可以看到，巧摄的精确度已经很高了。可以预见，以后会出现大量类似这种神奇瞬间的照片，剩下的就看摄影师的想象力了。</p><p>让我们来看一看巧摄的操作。其实开发者已经很贴心地把功能介绍做成视频放在各个视频网站了，比如你可以在哔哩哔哩搜索「Planit巧摄」、或者关注公众号「PlanItPhoto」，里面很详细地介绍了应用每个功能的使用方法。</p><p>「巧摄」是一款非常专业的软件，想要熟练使用需要花费非常大的学习成本。接下来我就以实际案例演示一下它的具体用法。</p><p>打开「巧摄」，你一定会被这密密麻麻的功能吓坏。没错，典型的工程师审美 😂。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="">Planit - 巧摄</figcaption></figure><h3 id="h-1" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">构想 1： 一条完整的银拱下方有一座山峰</h3><p>我们以南美热门拍摄地 Monte Fitz Roy 峰为例。</p><p>打开「巧摄」搜索「Monte Fitz Roy」，找到目的地后，选择添加标记，方便我们后续寻找。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>下面的操作比较重要，我将通过视频讲解的方式演示一遍。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/22/19/142821922/142821922-1-208.mp4?height=480&amp;width=640&amp;controls=true&amp;e=ig8euxZM2rNcNbhMhWdVhwdlhzK1hwdVhoNvNC8BqJIzNbfq9rVEuxTEnE8L5F6VnEsSTx0vkX8fqJeYTj_lta53NCM=&amp;uipk=5&amp;nbs=1&amp;deadline=1641587995&amp;gen=playurlv2&amp;os=bcache&amp;oi=2043228660&amp;trid=0000cef9a1da10054179b8e48f0238c8e7cfT&amp;platform=html5&amp;upsig=51e66c5fee3cb521cc6a7d713682a34f&amp;uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&amp;cdnid=61314&amp;mid=0&amp;bvc=vod&amp;nettype=0&amp;bw=342211&amp;orderid=0,1&amp;logo=80000000#vp">https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/22/19/142821922/142821922-1-208.mp4?height=480&amp;width=640&amp;controls=true&amp;e=ig8euxZM2rNcNbhMhWdVhwdlhzK1hwdVhoNvNC8BqJIzNbfq9rVEuxTEnE8L5F6VnEsSTx0vkX8fqJeYTj_lta53NCM=&amp;uipk=5&amp;nbs=1&amp;deadline=1641587995&amp;gen=playurlv2&amp;os=bcache&amp;oi=2043228660&amp;trid=0000cef9a1da10054179b8e48f0238c8e7cfT&amp;platform=html5&amp;upsig=51e66c5fee3cb521cc6a7d713682a34f&amp;uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&amp;cdnid=61314&amp;mid=0&amp;bvc=vod&amp;nettype=0&amp;bw=342211&amp;orderid=0,1&amp;logo=80000000#vp</a></p><p>视频演示比较快，大家可以边暂停边看具体操作。我再用文字总结一遍：</p><ul><li><p>选择「银河搜索」功能</p></li><li><p>选择「银河升起」条件</p></li><li><p>打开模拟取景框，调整成 14mm 超广角、全景拼接模式</p></li><li><p>拖动时间条让银河运动到目标位置</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>比如我上面这个构图，一年中有很多时间能拍到；因为是在南半球，所以银河季和北半球相反；应用种一共有 145 个结果，说明一年中有 145 个时刻银河会运动到这个位置。结果如下：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>但我们还要考虑月光的影响。像上面月亮仰角是正数（说明月亮在地平线以上）、或者满月附近的几天，即使银河运动到了我们想要的位置，但是也会出现根本拍不出银河或者效果很差的结果。比如下面这几天，倒数第二栏的月亮仰角都是正数、月相也是满月附近，也都不适合拍摄银河。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>点击「没有月亮」之后，结果瞬间减少一半：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>但是完全没有月亮之后又有个新问题：地景会一片漆黑。</p><p>这时候通常的办法就是寻找月亮在地平线附近的几天，表现在仰角为-5°- 5°。月亮在地平线以上时，可以先拍被照亮的地景、然后保持相机不动，等月亮沉入地平线再单独拍摄银河部分，后期将天地进行合成；或者等月亮刚沉入地平线时，由于地球大气的折射作用，柔和的月光仍可以照亮地景，此时是拍摄银河的最佳时刻。</p><p>但这些时刻都是转瞬即逝的机会，前后也就不过 2 - 3分钟左右，需要不断实践积累经验才能拍出完美的照片。</p><p>好，现在让我们选出这几天吧。打开筛选条件「月亮仰角 &lt; ±6°」，瞬间只有 6 条结果了。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>同理，这一规律也适用于日升、天蒙蒙亮的时候，阳光会经过大气折射提前照亮地景，强度也不会过度影响银河的成像。</p><p>综合起来，上图结果中「2019/05/03 06:58**」**是我们拍摄这一构图最完美的时机。对于这种广角拼接的大景，前后差几天对构图不会影响太多，只是时间会稍微浮动。幸运的是，2019 年 5 月 8 号，我们团队中的成员刚好去了趟南美，并且成功拍到了这个构图。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>再来对照下「巧摄」取景框模拟的构图，准确度还是相当高的。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>对于新手，需要不断实践才能用好「巧摄」，头几次失败很正常；但别气馁，只要成功一次你就会爱上这种运筹帷幄的感觉了。</p><p>除了银河，「巧摄」还可以预测日食、月食、流星、彩虹、光污染等。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>看完上面的例子，觉得南美太远？一个例子不够？下面我再举一个城市里就能拍的例子：万春亭悬月。</p><h3 id="h-2" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">构想 2： 万春亭悬月</h3><p>这里先普及一个日升月落的常识：</p><blockquote><p>初一新月时，月亮和太阳同时升起。然后每过一天，月亮升起时间晚 52 分钟。到了十五，月亮在太阳落下时升起。然后同样是每过一天，月亮出来晚 52 分钟。到廿九、三十，太阳追上月亮，开始新一轮的往复。</p></blockquote><p>城市不像山区，可以通过海拔进行模拟。城市里地面情况复杂，会有很多遮挡。这就需要用到「巧摄」的建模功能。</p><p>我们以北京南北中轴线上最高观景点的万春亭为拍摄对象，以北海公园五龙亭为拍摄点，计划一次月亮和万春亭同框的构图。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>首先上网查万春亭的相关资料：山相对高度为 45.7 米、高 17.4 米；然后在万春亭的位置创建两个标记，一个是山、一个是亭子。填写海拔高度和宽度这两个关键参数。对于海拔高度，我们可以优先参考官方的数据，其次参考 Google Earth 的数据，最后再参考「巧摄」里的数据。并且全部以零海拔开始算起。</p><p>在 Google Earth 中我们查得景山山脚的海拔为 55 米，官方给出山的相对高度为 45.7 米、建筑高 17.4 米。所以景山的海拔为 55m + 45.7m = 100.7m， 万春亭的海拔应为 55m + 45.7m + 17.4m = 118.1m。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>建模完成之后，你就会看到两个矩形，分别代表了万春亭和景山：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>下面的操作又比较重要了，依然用视频进行演示：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/72/25/142822572/142822572-1-208.mp4?height=480&amp;width=640&amp;controls=true&amp;e=ig8euxZM2rNcNbhanwdVhwdlhzu3hwdVhoNvNC8BqJIzNbfq9rVEuxTEnE8L5F6VnEsSTx0vkX8fqJeYTj_lta53NCM=&amp;uipk=5&amp;nbs=1&amp;deadline=1641588473&amp;gen=playurlv2&amp;os=kodobv&amp;oi=707995672&amp;trid=6fca733c0b744dc4ab6eb0047123af18T&amp;platform=html5&amp;upsig=d968126a1375d120237bd279db6ed6dc&amp;uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&amp;mid=0&amp;bvc=vod&amp;nettype=0&amp;bw=384368&amp;orderid=0,1&amp;logo=80000000#vp">https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/72/25/142822572/142822572-1-208.mp4?height=480&amp;width=640&amp;controls=true&amp;e=ig8euxZM2rNcNbhanwdVhwdlhzu3hwdVhoNvNC8BqJIzNbfq9rVEuxTEnE8L5F6VnEsSTx0vkX8fqJeYTj_lta53NCM=&amp;uipk=5&amp;nbs=1&amp;deadline=1641588473&amp;gen=playurlv2&amp;os=kodobv&amp;oi=707995672&amp;trid=6fca733c0b744dc4ab6eb0047123af18T&amp;platform=html5&amp;upsig=d968126a1375d120237bd279db6ed6dc&amp;uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&amp;mid=0&amp;bvc=vod&amp;nettype=0&amp;bw=384368&amp;orderid=0,1&amp;logo=80000000#vp</a></p><p>用文字总结一遍视频内容：</p><ul><li><p>将模式切换到「日月搜索」，选择月出</p></li><li><p>调整日月轨迹，让月亮轨迹靠近万春亭</p></li><li><p>精确调整月亮位置</p></li></ul><p>此时，App 就会自动计算出指定时间段内月亮运动到该位置所有可能的时刻：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>同时你还可以进一步筛选结果，比如你希望出现的是满月，那么 2020 年你只有两天能拍到满月和万春亭同框的画面了：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>当然，你还得考虑北海公园晚上关门的时间，北海公园开放时间为 06:30-20:00，上面两天的拍摄时间都没问题。</p><p>「巧摄」的出现真正帮助了风光摄影师开始科学地摄影，但拍到一张成功的照片的阻碍可远没有结束。即使银河、日月的位置、公园开放时间等都计划妥了，云量、风速、空气质量、光污染等都会影响最终的成片效果。下面，就该介绍气象软件 <strong>Windy</strong> 了。</p><h2 id="h-part-3" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Part 3 ：天气为王</h2><p>Windy 是一款专业的气象工具，我平时使用 Windy 最多的功能就是看云图了。山区小气候，不能依赖天气预报，最靠谱的方式还是看天气雷达图，Windy 可以准确地预测出未来一段时间的天气变化。</p><p>Windy 内置有中文语言，所以基础功能大家上手就明白了，我主要说说 Meterogram 功能。（Meterogram 功能在国内暂时无法使用，后面我会介绍替代方案）</p><p>在 Windy 中点击实时温度，会弹出一个参数表，选择 Meterogram。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>解读一下：</p><ul><li><p>中间灰色阴影表示云量，越黑表示云越厚；</p></li><li><p>最后一行云底的高度，显示横杠即数据缺失，根据我的经验，这些地方一般都是大于 12K 的高度；</p></li><li><p>300h=300hpa，即气压值，故从下至上数值减小；</p></li><li><p>9km 即为正常的公制高度表示，FL300 为英制高度表示，在民航中很常见；</p></li><li><p>贯穿全图的长曲线表示地面气压。</p></li></ul><p>至于「对流雨」和「雨」的区别，简单说，对流雨因为不同高度层温度变化形成高空空气下沉、低空空气上升的对流情况，有对流雨时经常会伴有大风等。</p><p>点击「更多」，会出现天气模型选择。ECMWF 是欧洲主导的预报模型、GFS 是美国主导的预报模型，经过多次实践来看，ECMWF 要比 GFS 准确。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>最后介绍下「莉景天气」微信小程序。</p><p>这个小程序主要是用来预测晚霞、朝霞、云海，还集成了一些实用的小工具，比如查看光污染、日出月落时间、云图等，用不了 Windy 的朋友可以用这个小程序看云图。</p><p>「莉景天气」的晚霞预测功能很实用，下班前看一眼预报，如果刚好有 S 级彩霞，那就放慢回家的脚步，享受城市生活里为数不多的自然馈赠吧。微信常备，强烈推荐。这款小程序的使用方法已经很明了了，数值越高概率越高，打开一看就明白了。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>下面是我用「莉景天气」查看预测数据之后拍到的一些照片：</p><ul><li><p>2018 年 9 月 22 日广西涠洲岛 S 级晚霞预报成功：</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>2018 年 3 月 10 日云南撒玛坝梯田云海，日出前下了场雷阵雨：</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>2018 年 4 月 9 日云图显示日落时分有个窗口期，成功目睹南迦巴瓦峰真容：</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">总结</h2><p>以上就是我总结的风光摄影科学指南的全部内容了，希望对你有所启发，如果你有更好的风光摄影工作流欢迎在评论区留言，我们相互交流学习。</p><p>风光摄影传递的不仅仅只有美景，它还代表了一种户外精神、热爱自然的生活态度。我曾经也是一个「科技宅」，在城市里呆久了，似乎也习惯了钢筋水泥的世界，但真的走出去了之后，内心的世界才感受到了从未有过的开阔。户外拍摄辛苦是必然的，但这不正好能培养坚强的品格吗？新的一年，我也希望看到更多科学摄影带来的风光作品。</p>]]></content:encoded>
            <author>kittenyang@newsletter.paragraph.com (kittenyang)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/0530e8bd131af51d8e2d7d36c475a9a5050c38b3054d2b5114d07628e87ce643.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>