<?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>0xLin</title>
        <link>https://paragraph.com/@0xlin</link>
        <description>undefined</description>
        <lastBuildDate>Mon, 07 Sep 2026 02:16:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>0xLin</title>
            <url>https://storage.googleapis.com/papyrus_images/b45ffc37266b59ff896c510ef7851c1ac42fc4f130c426414ae2135ddea7b265.png</url>
            <link>https://paragraph.com/@0xlin</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[基于EIP聊聊未来NFT会怎么发展]]></title>
            <link>https://paragraph.com/@0xlin/eip-nft</link>
            <guid>8Q3aTM10rmiATxOYEkJ1</guid>
            <pubDate>Thu, 11 May 2023 10:54:50 GMT</pubDate>
            <description><![CDATA[在2021年至2022年间，大部分早期信仰 NFT 会有大规模应用的用户已享受到 NFT 爆发的行业红利，但事实上，NFT依然还处于非常早期的阶段。尽管此刻我们正处于NFT的低潮期，但NFT 基础设施项目依然在有条不紊的发展壮大，我认为其中一个不可忽略的原因则是离不开以太坊底层协议的良好设计。ERC-721与ERC-4907「ERC-721 」为我们定义了一套NFT的标准，它主要定义了虚拟世界中的所有权验证，即——每个人在虚拟世界中都能看到“作品”，但只有一个人能拥有“作品”。这让Web2的信息传输时代终于有机会跨越到Web3的价值传输时代。 而当「ERC-4907」（可租赁 NFTs）通过以太坊最终审核时，我们开始探讨NFT的商业使用权在未来如何可以将NFT价值最大化。 简单概括「ERC-4907」，它是在「ERC-721」的标准协议上扩展了NFT的租赁功能， 将所有权与使用权进行分离，解锁了 NFT 使用权的新市场。 如下图所示，便是一个非常典型的NFT租赁场景。假设 Alice 拥有 NFT，想出租一个 NFT，Bob 想租一个 NFT。Alice为自己拥有的 NFT 设置...]]></description>
            <content:encoded><![CDATA[<p>在2021年至2022年间，大部分早期信仰 NFT 会有大规模应用的用户已享受到 NFT 爆发的行业红利，但事实上，NFT依然还处于非常早期的阶段。尽管此刻我们正处于NFT的低潮期，但NFT 基础设施项目依然在有条不紊的发展壮大，我认为其中一个不可忽略的原因则是<strong>离不开以太坊底层协议的良好设计</strong>。</p><h2 id="h-erc-721erc-4907" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">ERC-721与ERC-4907</h2><p>「ERC-721 」为我们定义了一套NFT的标准，它主要定义了虚拟世界中的所有权验证，即——<strong>每个人在虚拟世界中都能看到“作品”，但只有一个人能拥有“作品”</strong>。这让Web2的信息传输时代终于有机会跨越到Web3的价值传输时代。</p><p>而当「ERC-4907」（可租赁 NFTs）通过以太坊最终审核时，我们开始探讨NFT的商业使用权在未来如何可以将NFT价值最大化。</p><p>简单概括「ERC-4907」，它是在「ERC-721」的标准协议上扩展了NFT的租赁功能， 将所有权与使用权进行分离，解锁了 NFT 使用权的新市场。</p><p>如下图所示，便是一个非常典型的NFT租赁场景。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c815d843c1ac99a539127201a2ab12fe54dbe9312cf84ab3080c4e4ea49c1309.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>假设 Alice 拥有 NFT，想出租一个 NFT，Bob 想租一个 NFT。</p><ol><li><p>Alice为自己拥有的 NFT 设置出租权。</p></li><li><p>Alice向租赁合同发送租赁清单。</p></li><li><p>Bob 填写租赁请求，NFT 的使用权转移给 Bob。同时，因为设置了出租权，Alice 无法再转让 NFT 的出租权。</p></li><li><p>Bob 登记租金。</p></li><li><p>Alice可以从租赁合同中提取租金。</p></li><li><p>如果协议期限已经结束并且保留协议（即立即支付租金），协议完成，释放该NFT的出租权。</p></li><li><p>如果违反协议（例如未按时支付租金），Alice 可以撤销协议并撤销租户权利并接管使用 NFT 的权利。</p></li></ol><h2 id="h-erc-5585" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">ERC-5585</h2><p>但让NFT拥有租赁功能，也许还无法最大化NFT的商业价值，特别是想打造IP的蓝筹NFT而言。 于是我们看到「ERC-5585」出现了（还在审查阶段），同样的，<strong>该协议也是将ERC-721 NFT 的所有权与其商业使用权进行分离，以允许独立管理这些权利。</strong></p><p>不同于「ERC-4907」的是，<strong>「ERC-5585」 使NFT的拥有者在不转移自己的所有权时，能分别将NFT的展示权、出租权、发行权、复制权、修改权、再许可权等一系列商业使用权在链上进行交易授权、转移、拍卖。</strong></p><p>协议最难的地方在于如何能够在尽可能简单的程度下，去支持拓展出更多复杂的业务场景，它要求优雅且克制，很显然，「ERC-5585」做到了足够简单与易扩展，它是一个更偏向于底层的协议，可以理解为仅是NFT IP权益的链上授权管理协议，同时将复杂的业务场景交给更上层的NFT应用设施。</p><p><strong>现在，让我们设想下这个协议未来能给NFT带来哪些想象空间？</strong></p><p>当我想在线下开一间咖啡店时，我不想花高额的加盟费去加盟知名的咖啡品牌，我希望能通过建立与蓝筹NFT的商业合作，提高咖啡店的商业曝光度，以此带来更大的商业收入。但同时，我也不希望花高额的费用买下某一个蓝筹NFT的所有权才能建立品牌合作。</p><p>如果此时，假设Blur或Opensea支持了Azuki 持有者可以在平台上以1ETH的价格售卖自己的Azuki #9999线下商业展示权时，我可以直接以1/10甚至更低的价值获得我对该NFT的线下商业展示权，以此为主题来设计和装修我的咖啡店！</p><p><strong>这将意味着：</strong></p><ul><li><p>对NFT项目方而言，他们可以基于自己的NFT版权许可，通过链上标准协议连接更多使用场景，增加自身品牌影响力。</p></li><li><p>对合作的商业品牌而言，他们可以以更低廉的成本获得某一NFT 项目IP的商业使用权。</p></li><li><p>对NFT持有者而言，他们可以最大化自身NFT的使用价值，而无需真正出售NFT。</p></li></ul><h2 id="h-nft" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">NFT版权局限性</h2><p><code>CODE IS LAW</code>是一个很好的愿景，「ERC-5585」将NFT版权许可实现了通过智能合约进行标准化和实施，但就目前而言，该协议还无法解决线上与线下使用不一致的问题，<strong>因为它对NFT的使用权不提供法律约束力。一旦有人不遵守该标准而滥用NFT的线下商业使用权，该协议则是失效的。</strong></p><p>而关于新技术的立法往往是迟缓而艰难的，在目前没有适用的合同和法律的情况下，对于NFT引发的侵权问题，除了网站的自觉监督之外，还没有哪个官方权威机构可以监管和处理。即使美国的版权法允诺作品未经允许而遭 NFT 侵权者有申诉的权利，但要弄清楚哪些现实世界的法律可以适用于区块链以及知识产权相关的争端又变得非常复杂。更别说各国对版权的规定还不尽相同。</p><p>幸运的是，我们看到a16z和一些行业从业者便在努力做这样的尝试，<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://a16zcrypto.com/content/article/introducing-nft-licenses/">The Can&apos;t Be Evil NFT Licenses</a> - a16z crypto推出了一系列链上NFT许可协议，提供了一套标准化的NFT权利。相信随着行业的发展，<strong>一定会形成具有法律约束力的标准化的NFT许可协议，同时可以兼容各国的版权相关法律，更好的保护到用户的权益。</strong></p><p><strong>完。</strong></p><p>参考资料： <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4907">https://eips.ethereum.org/EIPS/eip-4907</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-2615">https://eips.ethereum.org/EIPS/eip-2615</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-5585">https://eips.ethereum.org/EIPS/eip-5585</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/eip-5585-erc-721-nft-authorization-review/10661">https://ethereum-magicians.org/t/eip-5585-erc-721-nft-authorization-review/10661</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.chaincatcher.com/article/2077624">https://www.chaincatcher.com/article/2077624</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.thepaper.cn/newsDetail_forward_12196654">https://www.thepaper.cn/newsDetail_forward_12196654</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.binance.com/zh-CN/news/top/7180607">https://www.binance.com/zh-CN/news/top/7180607</a></p>]]></content:encoded>
            <author>0xlin@newsletter.paragraph.com (0xLin)</author>
        </item>
        <item>
            <title><![CDATA[聊聊Blur对NFT的发展]]></title>
            <link>https://paragraph.com/@0xlin/blur-nft</link>
            <guid>td7GmGLG7kcXPGEXWJhN</guid>
            <pubDate>Thu, 11 May 2023 10:40:30 GMT</pubDate>
            <description><![CDATA[毋庸置疑，我们正处于NFT的低潮期。似乎多数人都将矛头指向Blur，并关注其最近推出的Blend，但我并不这么认为。 👇（没有数据说明，只是简单的阐述观点） 首先，我完全同意@waleswoosh关于Blur设计问题的探讨，我认为这是一篇高质量且见解深刻的文章。尽管如此，我们还是要对Blur给予肯定，因为它确实让NFT的流动性更上了一层楼。 https://twitter.com/waleswoosh/status/1653717581180567553 因为在Web3领域的应用，我认为任何降低普通用户进入门槛和成本的途径都不应该被反对，再细分到NFT赛道，我认为任何有助于提高流动性和实际用途的发展方向都不应该被反对。 面对Web2变迁至Web3的时代，任何一个产品的重大发展或更替始终模糊不清，这些变动都可能被视为一次震荡。就像驾驶汽车在蜿蜒曲折的山路上转弯，拐弯的时刻前方道路无法直接看见，充满了不确定性。虽然不能完全了解前方情况，但也不是一无所知。凭借经验和直觉，可以对前方部分情况进行把控，但仍有无法预估的部分，是谓“混沌”。在我看来，Blur正是在这条探索道路上砥砺前行。 ...]]></description>
            <content:encoded><![CDATA[<p>毋庸置疑，我们正处于NFT的低潮期。似乎多数人都将矛头指向Blur，并关注其最近推出的Blend，但我并不这么认为。</p><p>👇（没有数据说明，只是简单的阐述观点）</p><p>首先，我完全同意@waleswoosh关于Blur设计问题的探讨，我认为这是一篇高质量且见解深刻的文章。尽管如此，我们还是要对Blur给予肯定，因为它确实让NFT的流动性更上了一层楼。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/waleswoosh/status/1653717581180567553">https://twitter.com/waleswoosh/status/1653717581180567553</a></p><p>因为在Web3领域的应用，我认为任何降低普通用户进入门槛和成本的途径都不应该被反对，再细分到NFT赛道，我认为任何有助于提高流动性和实际用途的发展方向都不应该被反对。</p><p>面对Web2变迁至Web3的时代，任何一个产品的重大发展或更替始终模糊不清，这些变动都可能被视为一次震荡。就像驾驶汽车在蜿蜒曲折的山路上转弯，拐弯的时刻前方道路无法直接看见，充满了不确定性。虽然不能完全了解前方情况，但也不是一无所知。凭借经验和直觉，可以对前方部分情况进行把控，但仍有无法预估的部分，是谓“混沌”。在我看来，Blur正是在这条探索道路上砥砺前行。</p><p>“混沌”是秩序的开始，活力的源头，反倒是发展陷入停滞才真正具有致命性，我们不应该被短暂的“混沌”甩下车，请让我们用时间来见证NFT的混沌与秩序吧。</p>]]></content:encoded>
            <author>0xlin@newsletter.paragraph.com (0xLin)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/1b787e9ea67925eb3214528d31d66bc348150f3f99f5465f18a8c548c5d56518.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[喜欢Azuki的理由：交付细节（一）]]></title>
            <link>https://paragraph.com/@0xlin/azuki</link>
            <guid>YEttmzStBHJbT403GNM3</guid>
            <pubDate>Thu, 27 Apr 2023 16:07:39 GMT</pubDate>
            <description><![CDATA[喜欢azuki的理由有很多，但其中有一个是我很在意的点，即交付细节，是的，Azuki的每次交付处处能体现出细节，它甚至使我着迷。中国有句古话叫细微之处见真章，让我们一同看看Azuki到底做了哪些？让我们从最近的说起，Azuki团队对vegas门票的处理，是的，这是Azuki团队的一贯作风，不放过任何细节。https://twitter.com/jojochuu/status/1650938107892764672?s=20当其他项目方在乐此不疲的诉说着他们的“Roadmap”时，而Azuki叫做“Mindmap”，整体叙事清晰和完整。当人们觉得Roadmap缺乏了想象力时，Azuki又推出了Hilumia世界，更令人惊喜的是，它从来不是一成不变的，而是会随着时间的推移与社区一同成长，你知道以下场景至发布以来更新了哪些内容吗？让我们再重新回到Azuki官网上，你喜欢这缕随风而动的烟气吗？我时常盯着它。你喜欢这样的设计和色调吗？我认为这样的设计体现了团队高级的审美。当你进入花园alley时，你一定看到了很多提示，你知道这个牌匾指向了哪里吗？是的，Bitcoin Forum，中本聪当时...]]></description>
            <content:encoded><![CDATA[<p>喜欢azuki的理由有很多，但其中有一个是我很在意的点，即交付细节，是的，Azuki的每次交付处处能体现出细节，它甚至使我着迷。中国有句古话叫细微之处见真章，让我们一同看看Azuki到底做了哪些？</p><ul><li><p>让我们从最近的说起，Azuki团队对vegas门票的处理，是的，这是Azuki团队的一贯作风，不放过任何细节。</p></li></ul><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/jojochuu/status/1650938107892764672?s=20">https://twitter.com/jojochuu/status/1650938107892764672?s=20</a></p><ul><li><p>当其他项目方在乐此不疲的诉说着他们的“Roadmap”时，而Azuki叫做“Mindmap”，整体叙事清晰和完整。</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9545625426bdd4617433542c310edc33a3353affd5764a2c08fe414ece11b7c6.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><ul><li><p>当人们觉得Roadmap缺乏了想象力时，Azuki又推出了Hilumia世界，更令人惊喜的是，它从来不是一成不变的，而是会随着时间的推移与社区一同成长，你知道以下场景至发布以来更新了哪些内容吗？</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a9bb80c9a56650bd682876dfb2c21baba37ea931fe2cb05ed086c25b7f7fdaa7.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><ul><li><p>让我们再重新回到Azuki官网上，你喜欢这缕随风而动的烟气吗？我时常盯着它。</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/60f6909b129a138b5ae0caea6bd7e5febeedf7af6c71ac4306bfa1a5d01ef63e.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><ul><li><p>你喜欢这样的设计和色调吗？我认为这样的设计体现了团队高级的审美。</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ebb9c238ce27e399d7af91863233af6cc49a37baa0a3e32269f03b4cd50d7dfa.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><ul><li><p>当你进入花园alley时，你一定看到了很多提示，你知道这个牌匾指向了哪里吗？是的，Bitcoin Forum，中本聪当时讨论的地方，顺带提一句，我始终猜不到这个链接与Azuki有什么联系？如果你知道，请告诉我。</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9cd1ed1e275647fca1b18464edbe3fbe09b139f076d9fc7cd19aefbb0be4c7f9.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><ul><li><p>让我们看看Beanz，当我们翻到Penny时，it&apos;s slightly tilted to show she a bit tipsy，我爱死这个小细节了。</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/38a7610645d2263b63f1ea226d006f0a35e212ecaa6d3d2b246d2dbb7aad0105.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><ul><li><p>OK，Beanz有了，Bobu呢？当然也有，看看Bobu送我们bucket hat时的说明吧。如果你了解Bobu的人设，你一定知道我在说什么。</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ab00e6a15891f0f2bc8181d26dd659d80589669bc7d5c3c78cf593c0c539771b.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><ul><li><p>Azuki的智能合约也处处体现着团队力求完美的态度，当他们认为ERC721的gas太高时，于是ERC721A出现了，相信这是大多数NFT玩家都知道的故事。</p><p>Azuki的细节远不止以上这些，你还能找到哪些？让我们一起享受这样的细节吧。</p></li><li><p><strong>ready to take the red bean?</strong></p><p>这是一个关于Azuki的系列文章，接下来一篇，我会重点讲Azuki PFP的设计。</p></li></ul>]]></content:encoded>
            <author>0xlin@newsletter.paragraph.com (0xLin)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/94634c3a14f96c2e846c8a31b91d2e56c93febe7300af93ee1d1eacf864b3151.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[我见证了2022年世界杯决赛...]]></title>
            <link>https://paragraph.com/@0xlin/2022</link>
            <guid>jxCx6dIIMyjozMaVuGOq</guid>
            <pubDate>Mon, 19 Dec 2022 09:44:52 GMT</pubDate>
            <description><![CDATA[2022年的世界杯，终于看到梅西和阿根廷队友们拿到大力神杯，同时，真的有幸能见证这有可能是世界杯历史上最精彩的一场终局之战。 我看过02年日韩世界杯决赛，我记得巴西2:0德国，以及大罗的救赎与卡恩的脱手； 我看过06年德国世界杯决赛，我记得意大利1:1法国，以及齐达内的红牌； 我看过10年南非世界杯决赛，我记得西班牙1:0荷兰，以及小白的灵光一现； 我看过14年巴西世界杯决赛，我记得德国1:0阿根廷，以及格策的加时绝杀与伊瓜因的泪流满面； 我看过18年俄罗斯世界杯决赛，我记得法国4:2克罗地亚，以及高卢雄鸡的强势与莫德里奇的无奈； 昨日，我又看了22年卡塔尔世界杯决赛，有太多太多无法忘记的瞬间。“这是你一生都不会忘记的世界杯决赛”，贺炜说。 我想是的。感谢梅西，感谢迪玛利亚，感谢姆巴佩，感谢马丁内斯，感谢斯卡洛尼和德尚，感谢阿根廷和法国。 上半场领先、下半场绝平、补时上半场再度领先、补时下半场再度绝平、点球大战； 撞墙配合，极致防反，梅开二度，帽子戏法，点球大战，神级扑救，错失单刀......过程曲折，峰回路转，令人震撼。 感谢世界杯，让这个冬天燃烧起来。 而关于梅西，个人与团队...]]></description>
            <content:encoded><![CDATA[<p>2022年的世界杯，终于看到梅西和阿根廷队友们拿到大力神杯，同时，真的有幸能见证这有可能是世界杯历史上最精彩的一场终局之战。</p><p>我看过02年日韩世界杯决赛，我记得巴西2:0德国，以及大罗的救赎与卡恩的脱手；</p><p>我看过06年德国世界杯决赛，我记得意大利1:1法国，以及齐达内的红牌；</p><p>我看过10年南非世界杯决赛，我记得西班牙1:0荷兰，以及小白的灵光一现；</p><p>我看过14年巴西世界杯决赛，我记得德国1:0阿根廷，以及格策的加时绝杀与伊瓜因的泪流满面；</p><p>我看过18年俄罗斯世界杯决赛，我记得法国4:2克罗地亚，以及高卢雄鸡的强势与莫德里奇的无奈；</p><p>昨日，我又看了22年卡塔尔世界杯决赛，有太多太多无法忘记的瞬间。“这是你一生都不会忘记的世界杯决赛”，贺炜说。 我想是的。感谢梅西，感谢迪玛利亚，感谢姆巴佩，感谢马丁内斯，感谢斯卡洛尼和德尚，感谢阿根廷和法国。</p><p>上半场领先、下半场绝平、补时上半场再度领先、补时下半场再度绝平、点球大战； 撞墙配合，极致防反，梅开二度，帽子戏法，点球大战，神级扑救，错失单刀......过程曲折，峰回路转，令人震撼。 感谢世界杯，让这个冬天燃烧起来。</p><p>而关于梅西，个人与团队的荣誉至此再无死角，但依然看到不少造神阴谋论与抹黑、嘲讽，我不清楚他们为何要这样，理由兴许有很多，我也可以试着去理解与包容，但我想，梅西的时代在历史中已经被书写了，几十年后，你我的观点都将变得毫无意义。</p><p>我爱足球，如同我爱这个世界。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a37a13395457cc825d840af60220e0604063821eca1cb43fb17723679f74bfb9.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>]]></content:encoded>
            <author>0xlin@newsletter.paragraph.com (0xLin)</author>
        </item>
        <item>
            <title><![CDATA[V2Ray搭建笔记(WS+TLS+Web)]]></title>
            <link>https://paragraph.com/@0xlin/v2ray-ws-tls-web</link>
            <guid>x3UKtgxBnKnPMKE1JJ03</guid>
            <pubDate>Fri, 09 Dec 2022 08:35:29 GMT</pubDate>
            <description><![CDATA[域名解析将二级域名解析至对应的VPS IP地址证书注册(1) 安装Certbot：yum install -y python38 &#x26;&#x26; pip3 install certbot 运行这条命令后，如果显示：Successfully installed xxxx, xxxx, xxxx (各种软件包名字)就表示成功。 (2) 停止防火墙systemctl stop firewalld &#x26;&#x26; systemctl disable firewalld 注意，在CentOS7版本以上，默认开启防火墙，不关闭防火墙将无法申请证书。某些系统上没有安装firewalld防火墙，执行这一步命令会报错，但是不影响后面的操作。 运行这条命令后，如果显示：Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.就表示成功 (3) 申请SSL证书...]]></description>
            <content:encoded><![CDATA[<h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">域名解析</h2><p>将二级域名解析至对应的VPS IP地址</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/df358c3386119fc09d329d9642ba4da252f457787dcd6133f7518dd7b062ecf1.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><p><strong>(1) 安装Certbot：</strong></p><pre data-type="codeBlock" text="yum install -y python38 &amp;&amp; pip3 install certbot
"><code>yum install <span class="hljs-operator">-</span>y python38 <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> pip3 install certbot
</code></pre><p>运行这条命令后，如果显示：</p><blockquote><p>Successfully installed xxxx, xxxx, xxxx (各种软件包名字)</p></blockquote><p>就表示成功。</p><p><strong>(2) 停止防火墙</strong></p><pre data-type="codeBlock" text="systemctl stop firewalld &amp;&amp; systemctl disable firewalld
"><code>systemctl stop firewalld <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> systemctl disable firewalld
</code></pre><p>注意，在CentOS7版本以上，默认开启防火墙，<strong>不关闭防火墙将无法申请证书</strong>。某些系统上没有安装firewalld防火墙，执行这一步命令会报错，但是不影响后面的操作。 运行这条命令后，如果显示：</p><blockquote><p>Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.</p></blockquote><p>就表示成功</p><p><strong>(3) 申请SSL证书</strong> 这一步做个填空题，把这条命令里的域名和邮箱，换成你自己的信息。</p><pre data-type="codeBlock" text="certbot certonly --standalone --agree-tos -n -d &lt;域名&gt; -m &lt;邮箱&gt;

# 如果遇到openssh报错，则
pip3 uninstall pyOpenSSL
pip3 install pyOpenSSL==22.0.0
"><code>certbot certonly <span class="hljs-operator">-</span><span class="hljs-operator">-</span>standalone <span class="hljs-operator">-</span><span class="hljs-operator">-</span>agree<span class="hljs-operator">-</span>tos <span class="hljs-operator">-</span>n <span class="hljs-operator">-</span>d <span class="hljs-operator">&#x3C;</span>域名<span class="hljs-operator">></span> <span class="hljs-operator">-</span>m <span class="hljs-operator">&#x3C;</span>邮箱<span class="hljs-operator">></span>

# 如果遇到openssh报错，则
pip3 uninstall pyOpenSSL
pip3 install pyOpenSSL<span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-number">22.0</span><span class="hljs-number">.0</span>
</code></pre><p>运行这条命令后，如果显示： IMPORTANT NOTES:</p><ul><li><p>Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.hrw1rdzqa7c5a8u3ibkn.website/fullchain.pem">www.hrw1rdzqa7c5a8u3ibkn.website/fullchain.pem</a> Your key file has been saved at: /etc/letsencrypt/live/<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.hrw1rdzqa7c5a8u3ibkn.website/privkey.pem">www.hrw1rdzqa7c5a8u3ibkn.website/privkey.pem</a> Your cert will expire on 2020-06-04. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew <em>all</em> of your certificates, run &quot;certbot renew&quot;</p></li><li><p>Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal.</p></li><li><p>If you like Certbot, please consider supporting our work by:</p><p>Donating to ISRG / Let&apos;s Encrypt: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://letsencrypt.org/donate">https://letsencrypt.org/donate</a> Donating to EFF: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eff.org">https://eff.org</a></p></li></ul><p>就表示成功。</p><p><strong>注意：这一步比较容易出错，常见的问题有：</strong></p><ul><li><p><code>其它代理占用了80，443端口。</code></p><p>解决方法：停止其它代理软件，或重装VPS。</p></li><li><p><code>没有正确配置域名解析。</code></p><p>解决方法：ping一下域名，看看能不能正确解析到IP。注意不要打开CDN。</p></li><li><p><code>没有关闭防火墙。</code></p><p>解决方法：回到（2），关闭防火墙。</p></li></ul><p><strong>(4) 配置证书自动更新</strong></p><pre data-type="codeBlock" text="echo &quot;0 0 1 */2 * systemctl stop nginx ; certbot renew; systemctl  start nginx;&quot; | crontab
"><code><span class="hljs-built_in">echo</span> <span class="hljs-string">"0 0 1 */2 * systemctl stop nginx ; certbot renew; systemctl  start nginx;"</span> | crontab
</code></pre><p>我们申请的证书只有三个月期限，上面的命令表示每隔两个月，证书就自动续命一次，从而保证可以一直用下去。</p><h2 id="h-nginxv2ray" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">nginx和v2ray安装</h2><p>V2Ray和Nginx可以一键安装，把下列命令复制粘贴到控制台，运行即可。</p><pre data-type="codeBlock" text="yum install -y nginx &amp;&amp; 
yum install -y curl &amp;&amp; 
bash &lt;(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
"><code>yum install <span class="hljs-operator">-</span>y nginx <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> 
yum install <span class="hljs-operator">-</span>y curl <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> 
bash <span class="hljs-operator">&#x3C;</span>(curl <span class="hljs-operator">-</span>L https:<span class="hljs-comment">//raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)</span>
</code></pre><p>运行这条命令后，如果最后一行显示： V2Ray vx.x.x is installed. 就表示成功。（如果V2Ray安装成功，那么Nginx也一定安装成功）</p><p><strong>(2) 关闭SELinux</strong> 在某些系统上，需要关闭SELinux，否则Nginx无法正常将流量转发给V2Ray，输入</p><pre data-type="codeBlock" text="setsebool -P httpd_can_network_connect 1 &amp;&amp; setenforce 0
"><code>setsebool <span class="hljs-operator">-</span>P httpd_can_network_connect <span class="hljs-number">1</span> <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> setenforce <span class="hljs-number">0</span>
</code></pre><p>关闭SELinux，没有提示就表示成功。</p><h2 id="h-nginx" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">nginx配置</h2><pre data-type="codeBlock" text="vi /etc/nginx/conf.d/xxx.conf

server {
    ### 1:
    server_name &lt;域名&gt;;

    listen 80 reuseport fastopen=10;
    rewrite ^(.*) https://$server_name$1 permanent;
    if ($request_method  !~ ^(POST|GET)$) { return  501; }
    autoindex off;
    server_tokens off;
}

server {
    ### 2:
    ssl_certificate /etc/letsencrypt/live/&lt;域名&gt;/fullchain.pem;

    ### 3:
    ssl_certificate_key /etc/letsencrypt/live/&lt;域名&gt;/privkey.pem;

    ### 4:
    location /&lt;path&gt;
    {
        proxy_pass http://127.0.0.1:8964;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &quot;upgrade&quot;;
        proxy_set_header Host $host;

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_requests 10000;
        keepalive_timeout 2h;
        proxy_buffering off;
    }

    listen 443 ssl reuseport fastopen=10;
    server_name $server_name;
    charset utf-8;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_requests 10000;
    keepalive_timeout 2h;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve secp384r1;
    ssl_prefer_server_ciphers off;

    ssl_session_cache shared:SSL:60m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 10s;

    if ($request_method  !~ ^(POST|GET)$) { return 501; }
    add_header X-Frame-Options DENY;
    add_header X-XSS-Protection &quot;1; mode=block&quot;;
    add_header X-Content-Type-Options nosniff;
    add_header Strict-Transport-Security max-age=31536000 always;
    autoindex off;
    server_tokens off;

    index index.html index.htm  index.php;
    location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF|png)$ { access_log off; }
    location / { index index.html; }
}
"><code>vi <span class="hljs-operator">/</span>etc<span class="hljs-operator">/</span>nginx<span class="hljs-operator">/</span>conf.d/xxx.conf

server {
    ### <span class="hljs-number">1</span>:
    server_name <span class="hljs-operator">&#x3C;</span>域名<span class="hljs-operator">></span>;

    listen <span class="hljs-number">80</span> reuseport fastopen<span class="hljs-operator">=</span><span class="hljs-number">10</span>;
    rewrite <span class="hljs-operator">^</span>(.*) https:<span class="hljs-comment">//$server_name$1 permanent;</span>
    <span class="hljs-keyword">if</span> ($request_method  <span class="hljs-operator">!</span><span class="hljs-operator">~</span> <span class="hljs-operator">^</span>(POST<span class="hljs-operator">|</span>GET)$) { <span class="hljs-keyword">return</span>  <span class="hljs-number">501</span>; }
    autoindex off;
    server_tokens off;
}

server {
    ### <span class="hljs-number">2</span>:
    ssl_certificate <span class="hljs-operator">/</span>etc<span class="hljs-operator">/</span>letsencrypt<span class="hljs-operator">/</span>live<span class="hljs-operator">/</span><span class="hljs-operator">&#x3C;</span>域名<span class="hljs-operator">></span><span class="hljs-operator">/</span>fullchain.pem;

    ### <span class="hljs-number">3</span>:
    ssl_certificate_key <span class="hljs-operator">/</span>etc<span class="hljs-operator">/</span>letsencrypt<span class="hljs-operator">/</span>live<span class="hljs-operator">/</span><span class="hljs-operator">&#x3C;</span>域名<span class="hljs-operator">></span><span class="hljs-operator">/</span>privkey.pem;

    ### <span class="hljs-number">4</span>:
    location <span class="hljs-operator">/</span><span class="hljs-operator">&#x3C;</span>path<span class="hljs-operator">></span>
    {
        proxy_pass http:<span class="hljs-comment">//127.0.0.1:8964;</span>
        proxy_redirect off;
        proxy_http_version <span class="hljs-number">1.1</span>;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection <span class="hljs-string">"upgrade"</span>;
        proxy_set_header Host $host;

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_requests <span class="hljs-number">10000</span>;
        keepalive_timeout 2h;
        proxy_buffering off;
    }

    listen <span class="hljs-number">443</span> ssl reuseport fastopen<span class="hljs-operator">=</span><span class="hljs-number">10</span>;
    server_name $server_name;
    charset utf<span class="hljs-number">-8</span>;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_requests <span class="hljs-number">10000</span>;
    keepalive_timeout 2h;

    ssl_protocols TLSv1<span class="hljs-number">.2</span> TLSv1<span class="hljs-number">.3</span>;
    ssl_ciphers TLS13<span class="hljs-operator">-</span>CHACHA20<span class="hljs-operator">-</span>POLY1305<span class="hljs-operator">-</span>SHA256:TLS13<span class="hljs-operator">-</span>AES<span class="hljs-number">-128</span><span class="hljs-operator">-</span>GCM<span class="hljs-operator">-</span>SHA256:TLS13<span class="hljs-operator">-</span>AES<span class="hljs-number">-256</span><span class="hljs-operator">-</span>GCM<span class="hljs-operator">-</span>SHA384:ECDHE<span class="hljs-operator">-</span>ECDSA<span class="hljs-operator">-</span>AES128<span class="hljs-operator">-</span>GCM<span class="hljs-operator">-</span>SHA256:ECDHE<span class="hljs-operator">-</span>RSA<span class="hljs-operator">-</span>AES128<span class="hljs-operator">-</span>GCM<span class="hljs-operator">-</span>SHA256:ECDHE<span class="hljs-operator">-</span>ECDSA<span class="hljs-operator">-</span>AES256<span class="hljs-operator">-</span>GCM<span class="hljs-operator">-</span>SHA384:ECDHE<span class="hljs-operator">-</span>RSA<span class="hljs-operator">-</span>AES256<span class="hljs-operator">-</span>GCM<span class="hljs-operator">-</span>SHA384:ECDHE<span class="hljs-operator">-</span>ECDSA<span class="hljs-operator">-</span>CHACHA20<span class="hljs-operator">-</span>POLY1305:ECDHE<span class="hljs-operator">-</span>RSA<span class="hljs-operator">-</span>CHACHA20<span class="hljs-operator">-</span>POLY1305:DHE<span class="hljs-operator">-</span>RSA<span class="hljs-operator">-</span>AES128<span class="hljs-operator">-</span>GCM<span class="hljs-operator">-</span>SHA256:DHE<span class="hljs-operator">-</span>RSA<span class="hljs-operator">-</span>AES256<span class="hljs-operator">-</span>GCM<span class="hljs-operator">-</span>SHA384;
    ssl_ecdh_curve secp384r1;
    ssl_prefer_server_ciphers off;

    ssl_session_cache shared:SSL:60m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver <span class="hljs-number">8.8</span><span class="hljs-number">.8</span><span class="hljs-number">.8</span> <span class="hljs-number">8.8</span><span class="hljs-number">.4</span><span class="hljs-number">.4</span> valid<span class="hljs-operator">=</span>300s;
    resolver_timeout 10s;

    <span class="hljs-keyword">if</span> ($request_method  <span class="hljs-operator">!</span><span class="hljs-operator">~</span> <span class="hljs-operator">^</span>(POST<span class="hljs-operator">|</span>GET)$) { <span class="hljs-keyword">return</span> <span class="hljs-number">501</span>; }
    add_header X<span class="hljs-operator">-</span>Frame<span class="hljs-operator">-</span>Options DENY;
    add_header X<span class="hljs-operator">-</span>XSS<span class="hljs-operator">-</span>Protection <span class="hljs-string">"1; mode=block"</span>;
    add_header X<span class="hljs-operator">-</span>Content<span class="hljs-operator">-</span>Type<span class="hljs-operator">-</span>Options nosniff;
    add_header Strict<span class="hljs-operator">-</span>Transport<span class="hljs-operator">-</span>Security max<span class="hljs-operator">-</span>age<span class="hljs-operator">=</span><span class="hljs-number">31536000</span> always;
    autoindex off;
    server_tokens off;

    index index.html index.htm  index.php;
    location <span class="hljs-operator">~</span> .*\.(js<span class="hljs-operator">|</span>jpg<span class="hljs-operator">|</span>JPG<span class="hljs-operator">|</span>jpeg<span class="hljs-operator">|</span>JPEG<span class="hljs-operator">|</span>css<span class="hljs-operator">|</span>bmp<span class="hljs-operator">|</span>gif<span class="hljs-operator">|</span>GIF<span class="hljs-operator">|</span>png)$ { access_log off; }
    location <span class="hljs-operator">/</span> { index index.html; }
}
</code></pre><p><strong>nginx命令</strong></p><pre data-type="codeBlock" text="systemctl restart nginx
systemctl stop nginx
systemctl start nginx
"><code>systemctl restart nginx
systemctl stop nginx
systemctl start nginx
</code></pre><h2 id="h-v2ray" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">v2ray配置</h2><pre data-type="codeBlock" text="vi /usr/local/etc/v2ray/config.json

{
  &quot;log&quot; : {
    &quot;access&quot;: &quot;/var/log/v2ray/access.log&quot;,
    &quot;error&quot;: &quot;/var/log/v2ray/error.log&quot;,
    &quot;loglevel&quot;: &quot;warning&quot;
  },
  &quot;inbound&quot;: {
    &quot;protocol&quot;: &quot;vmess&quot;,
    &quot;listen&quot;: &quot;127.0.0.1&quot;,
    &quot;port&quot;: 8964,
    &quot;settings&quot;: {
      &quot;clients&quot;: [
        {
          &quot;id&quot;: &quot;&lt;uuid&gt;&quot;,
          &quot;alterId&quot;: &lt;ID&gt;
        }
      ]},
    &quot;streamSettings&quot;: {
      &quot;network&quot;: &quot;ws&quot;,
      &quot;wsSettings&quot;: {&quot;path&quot;: &quot;/&lt;nginx path&gt;&quot;}
    }
  },
  &quot;outbound&quot;: 
  {
    &quot;protocol&quot;: &quot;freedom&quot;
  }
}
"><code>vi <span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>local<span class="hljs-operator">/</span>etc<span class="hljs-operator">/</span>v2ray<span class="hljs-operator">/</span>config.json

{
  <span class="hljs-string">"log"</span> : {
    <span class="hljs-string">"access"</span>: <span class="hljs-string">"/var/log/v2ray/access.log"</span>,
    <span class="hljs-string">"error"</span>: <span class="hljs-string">"/var/log/v2ray/error.log"</span>,
    <span class="hljs-string">"loglevel"</span>: <span class="hljs-string">"warning"</span>
  },
  <span class="hljs-string">"inbound"</span>: {
    <span class="hljs-string">"protocol"</span>: <span class="hljs-string">"vmess"</span>,
    <span class="hljs-string">"listen"</span>: <span class="hljs-string">"127.0.0.1"</span>,
    <span class="hljs-string">"port"</span>: <span class="hljs-number">8964</span>,
    <span class="hljs-string">"settings"</span>: {
      <span class="hljs-string">"clients"</span>: [
        {
          <span class="hljs-string">"id"</span>: <span class="hljs-string">"&#x3C;uuid>"</span>,
          <span class="hljs-string">"alterId"</span>: <span class="hljs-operator">&#x3C;</span>ID<span class="hljs-operator">></span>
        }
      ]},
    <span class="hljs-string">"streamSettings"</span>: {
      <span class="hljs-string">"network"</span>: <span class="hljs-string">"ws"</span>,
      <span class="hljs-string">"wsSettings"</span>: {<span class="hljs-string">"path"</span>: <span class="hljs-string">"/&#x3C;nginx path>"</span>}
    }
  },
  <span class="hljs-string">"outbound"</span>: 
  {
    <span class="hljs-string">"protocol"</span>: <span class="hljs-string">"freedom"</span>
  }
}
</code></pre><p><strong>v2ray命令</strong></p><pre data-type="codeBlock" text="systemctl restart v2ray
systemctl stop v2ray
systemctl start v2ray

###
Usage:

        v2ray &lt;command&gt; [arguments]

The commands are:

        run           run V2Ray with config
        api           call V2Ray API
        convert       convert config files
        test          test config files
        tls           TLS tools
        uuid          generate new UUID
        verify        verify if a binary is officially signed
        version       print V2Ray version

Use &quot;v2ray help &lt;command&gt;&quot; for more information about a command.

Additional help topics:

        config-merge  config merge logic
        format-loader config formats and loading

Use &quot;v2ray help &lt;topic&gt;&quot; for more information about that topic.
"><code>systemctl restart v2ray
systemctl stop v2ray
systemctl start v2ray

###
Usage:

        v2ray &#x3C;command> [arguments]

The commands are:

        run           run V2Ray with config
        api           call V2Ray API
        convert       convert config files
        test          test config files
        tls           TLS tools
        uuid          generate <span class="hljs-keyword">new</span> UUID
        verify        verify <span class="hljs-keyword">if</span> a binary is officially <span class="hljs-type">signed</span>
        version       print V2Ray version

Use <span class="hljs-string">"v2ray help &#x3C;command>"</span> <span class="hljs-keyword">for</span> more information about a command.

Additional help topics:

        config-merge  config merge logic
        format-loader config formats <span class="hljs-keyword">and</span> loading

Use <span class="hljs-string">"v2ray help &#x3C;topic>"</span> <span class="hljs-keyword">for</span> more information about that topic.
</code></pre><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">验证</h2><ol><li><p>开启nginx</p></li><li><p>访问https:// 验证是否成功访问nginx主页</p><ul><li><p>开启v2ray</p></li><li><p>配置客户端验证是否成功</p></li></ul></li><li><p>出现问题</p><pre data-type="codeBlock" text="2022/12/09 09:53:44 127.0.0.1:52970 rejected  common/drain: common/drain: drained connection &gt; proxy/vmess/encoding: invalid user: VMessAEAD is enforced and a non VMessAEAD connection is received. You can still disable this security feature with environment variable v2ray.vmess.aead.forced = false . You will not be able to enable legacy header workaround in the future.
"><code><span class="hljs-number">2022</span><span class="hljs-operator">/</span><span class="hljs-number">12</span><span class="hljs-operator">/</span>09 09:<span class="hljs-number">53</span>:<span class="hljs-number">44</span> <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>:<span class="hljs-number">52970</span> rejected  common<span class="hljs-operator">/</span>drain: common<span class="hljs-operator">/</span>drain: drained connection <span class="hljs-operator">></span> proxy<span class="hljs-operator">/</span>vmess<span class="hljs-operator">/</span>encoding: invalid user: VMessAEAD <span class="hljs-keyword">is</span> enforced and a non VMessAEAD connection <span class="hljs-keyword">is</span> received. You can still disable <span class="hljs-built_in">this</span> security feature with environment variable v2ray.vmess.aead.forced <span class="hljs-operator">=</span> <span class="hljs-literal">false</span> . You will not be able to enable legacy header workaround in the future.
</code></pre><p>如何解决？</p><pre data-type="codeBlock" text="1、修改v2ray.service 文件 vi /etc/systemd/system/v2ray.service
2、添加：Environment=&quot;V2RAY_VMESS_AEAD_FORCED=false&quot;
3、重启服务 systemctl daemon-reload systemctl restart v2ray
"><code><span class="hljs-number">1</span>、修改v2ray.service 文件 vi <span class="hljs-operator">/</span>etc<span class="hljs-operator">/</span>systemd<span class="hljs-operator">/</span>system<span class="hljs-operator">/</span>v2ray.service
<span class="hljs-number">2</span>、添加：Environment<span class="hljs-operator">=</span><span class="hljs-string">"V2RAY_VMESS_AEAD_FORCED=false"</span>
<span class="hljs-number">3</span>、重启服务 systemctl daemon<span class="hljs-operator">-</span>reload systemctl restart v2ray
</code></pre><p>参考链接：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/233boy/v2ray/issues/812">https://github.com/233boy/v2ray/issues/812</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://91ai.net/thread-950258-1-1.html">https://91ai.net/thread-950258-1-1.html</a></p><h2 id="h-1cdnip" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">可选配置1：使用CDN隐藏IP</h2><p>CDN相当于在服务器前又加了一层代理，墙只知道你的域名和CDN的IP，无法得知代理服务器的真实IP。如果伪装网站开启了DoH+ESNI，甚至连域名都可以隐藏。因此v2ray+ws+tls+web+CDN相当于事实上的双重代理，它的隐蔽性和安全性非常高。缺点是Cloudflare 会让访问延迟变高一些。除非遇到IP被墙，或者六四前后等墙加高等极端情况，如果平时翻墙很稳定，就没有必要打开CDN。</p><h2 id="h-2" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">可选配置2：加固服务器，配置防火墙</h2><p>如果VPS上没有其它服务，建议打开防火墙。服务器对外只暴露80，443，SSH端口，可以降低代理服务器被探测的风险。 前面的步骤中禁用了防火墙firewalld，不是所有的机器都安装了firewalld，我们这里使用ufw防火墙作为替代。 安装ufw：</p><pre data-type="codeBlock" text="yum install -y epel-release &amp;&amp; yum install -y ufw
"><code>yum install <span class="hljs-operator">-</span>y epel<span class="hljs-operator">-</span>release <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> yum install <span class="hljs-operator">-</span>y ufw
</code></pre><p>打开SSH，HTTP，HTTPS端口，运行：</p><pre data-type="codeBlock" text="ufw disable &amp;&amp; ufw allow ssh &amp;&amp; ufw allow http &amp;&amp; ufw allow https &amp;&amp; ufw enable
"><code>ufw disable <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> ufw allow ssh <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> ufw allow http <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> ufw allow https <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> ufw enable
</code></pre><p>如果ssh端口不是22，那么需要将ssh改为端口号。例如ssh端口为14320，则：</p><pre data-type="codeBlock" text="ufw disable &amp;&amp; ufw allow 14320 &amp;&amp; ufw allow http &amp;&amp; ufw allow https &amp;&amp; ufw enable
"><code>ufw disable <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> ufw allow <span class="hljs-number">14320</span> <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> ufw allow http <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> ufw allow https <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> ufw enable
</code></pre><p>ufw和firewalld的底层实现都是一样的，都调用了linux iptables，本质并无太大区别。</p><h2 id="h-3bbr" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">可选配置3：使用BBR加速</h2><p>BBR是谷歌开发的拥塞控制算法，可以降低延迟，加快访问速度。启用BBR需要4.10以上版本Linux内核，现在大多数VPS都满足这一条件，输入uname(空格)-a可以查看内核版本. 如果内核版本大于4.10就可以用BBR了，把以下三条命令复制到命令窗口执行：</p><pre data-type="codeBlock" text="bash -c &apos;echo &quot;net.core.default_qdisc=fq&quot; &gt;&gt; /etc/sysctl.conf&apos;
bash -c &apos;echo &quot;net.ipv4.tcp_congestion_control=bbr&quot; &gt;&gt; /etc/sysctl.conf&apos;
sysctl -p
"><code>bash <span class="hljs-operator">-</span>c <span class="hljs-string">'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'</span>
bash <span class="hljs-operator">-</span>c <span class="hljs-string">'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'</span>
sysctl <span class="hljs-operator">-</span>p
</code></pre><p>然后运行以下命令，查看BBR是否启动成功：</p><pre data-type="codeBlock" text="sysctl net.ipv4.tcp_congestion_control
"><code>sysctl net.ipv4.tcp_congestion_control
</code></pre><p>如果提示</p><pre data-type="codeBlock" text="net.ipv4.tcp_congestion_control = bbr
"><code>net.ipv4.tcp_congestion_control <span class="hljs-operator">=</span> bbr
</code></pre><p>就表示成功启动了BBR加速。</p><h2 id="h-4nginx" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">可选配置4：编译Nginx</h2><p>某些系统上，通过yum安装的Nginx不支持TLS1.3，需要自行编译。启用TLS1.3可以明显降低VMess+WS+TLS的延迟（握手1-RTT，恢复会话0-RTT）。此外，TLS1.3第一个RTT之后的握手包均被加密，（可能）会降低TLS协议的指纹特征。</p><p>Caddy（另一个HTTP反向代理软件）也支持TLS1.3，但自行配置和编译的Nginx可以通过调整多种参数，达到更高的性能。自行编译Nginx也可以启用一些其它反向代理中的特征，例如HTTP/2等。</p><p>Nginx编译安装步骤：</p><p>更新所有软件及系统内核（用时较长，可选）：</p><pre data-type="codeBlock" text="yum -y update
"><code>yum <span class="hljs-operator">-</span>y <span class="hljs-keyword">update</span>
</code></pre><p>安装依赖软件和库：</p><pre data-type="codeBlock" text="yum -y install wget gcc make perl pcre pcre-devel zlib zlib-devel
"><code>yum <span class="hljs-operator">-</span>y install wget gcc make perl pcre pcre<span class="hljs-operator">-</span>devel zlib zlib<span class="hljs-operator">-</span>devel
</code></pre><p>下载OpenSSL 1.1.1g（截至2020年4月21日的最新版）</p><pre data-type="codeBlock" text="wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_1g.zip
unzip OpenSSL_1_1_1g.zip
rm OpenSSL_1_1_1g.zip &amp;&amp; mv openssl-OpenSSL_1_1_1g openssl
"><code>wget https:<span class="hljs-comment">//github.com/openssl/openssl/archive/OpenSSL_1_1_1g.zip</span>
unzip OpenSSL_1_1_1g.zip
rm OpenSSL_1_1_1g.zip <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> mv openssl<span class="hljs-operator">-</span>OpenSSL_1_1_1g openssl
</code></pre><p>下载Nginx 1.18.0</p><pre data-type="codeBlock" text="wget https://nginx.org/download/nginx-1.18.0.tar.gz
tar -xzvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
"><code>wget https:<span class="hljs-comment">//nginx.org/download/nginx-1.18.0.tar.gz</span>
tar <span class="hljs-operator">-</span>xzvf nginx<span class="hljs-number">-1.18</span><span class="hljs-number">.0</span>.tar.gz
cd nginx<span class="hljs-number">-1.18</span><span class="hljs-number">.0</span>
</code></pre><p>配置编译选项</p><pre data-type="codeBlock" text="./configure --with-openssl=../openssl --with-openssl-opt=&apos;enable-tls1_3&apos; --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module
"><code>./configure <span class="hljs-operator">-</span><span class="hljs-operator">-</span>with<span class="hljs-operator">-</span>openssl<span class="hljs-operator">=</span>../openssl <span class="hljs-operator">-</span><span class="hljs-operator">-</span>with<span class="hljs-operator">-</span>openssl<span class="hljs-operator">-</span>opt<span class="hljs-operator">=</span><span class="hljs-string">'enable-tls1_3'</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span>with<span class="hljs-operator">-</span>http_v2_module <span class="hljs-operator">-</span><span class="hljs-operator">-</span>with<span class="hljs-operator">-</span>http_ssl_module <span class="hljs-operator">-</span><span class="hljs-operator">-</span>with<span class="hljs-operator">-</span>http_gzip_static_module
</code></pre><p>这一步是Nginx启用TLS1.3的关键，--with-openssl-opt=&apos;enable-tls1_3&apos;表示启用TLS1.3，--with-http_v2_module表示启用HTTP/2</p><pre data-type="codeBlock" text="make &amp;&amp; make install
"><code><span class="hljs-built_in">make</span> &#x26;&#x26; <span class="hljs-built_in">make</span> install
</code></pre><p>编译完成的Nginx二进制文件位置在/usr/local/nginx/sbin/nginx，可用以下命令进行测试：</p><pre data-type="codeBlock" text="/usr/local/nginx/sbin/nginx -V
"><code><span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>local<span class="hljs-operator">/</span>nginx<span class="hljs-operator">/</span>sbin<span class="hljs-operator">/</span>nginx <span class="hljs-operator">-</span>V
</code></pre><p>与此对应的，Nginx配置文件目录和网页文件目录分别在：</p><pre data-type="codeBlock" text="/usr/local/nginx/conf
/usr/local/nginx/html
"><code><span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>local<span class="hljs-operator">/</span>nginx<span class="hljs-operator">/</span>conf
<span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>local<span class="hljs-operator">/</span>nginx<span class="hljs-operator">/</span>html
</code></pre><p>为了把Nginx配置成系统服务，还需要配置systemd文件：</p><pre data-type="codeBlock" text="[Unit]
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
"><code>[Unit]
After<span class="hljs-operator">=</span>syslog.target network.target remote<span class="hljs-operator">-</span>fs.target nss<span class="hljs-operator">-</span>lookup.target

[Service]
Type<span class="hljs-operator">=</span>forking
PIDFile<span class="hljs-operator">=</span><span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>local<span class="hljs-operator">/</span>nginx<span class="hljs-operator">/</span>logs<span class="hljs-operator">/</span>nginx.pid
ExecStartPre<span class="hljs-operator">=</span><span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>local<span class="hljs-operator">/</span>nginx<span class="hljs-operator">/</span>sbin<span class="hljs-operator">/</span>nginx <span class="hljs-operator">-</span>t
ExecStart<span class="hljs-operator">=</span><span class="hljs-operator">/</span>usr<span class="hljs-operator">/</span>local<span class="hljs-operator">/</span>nginx<span class="hljs-operator">/</span>sbin<span class="hljs-operator">/</span>nginx
ExecReload<span class="hljs-operator">=</span><span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>kill <span class="hljs-operator">-</span>s HUP $MAINPID
ExecStop<span class="hljs-operator">=</span><span class="hljs-operator">/</span>bin<span class="hljs-operator">/</span>kill <span class="hljs-operator">-</span>s QUIT $MAINPID
PrivateTmp<span class="hljs-operator">=</span><span class="hljs-literal">true</span>

[Install]
WantedBy<span class="hljs-operator">=</span>multi<span class="hljs-operator">-</span>user.target
</code></pre><p>最后把上述文件命名为nginx.service，放在/etc/systemd/system下，就完成了Nginx的编译安装。</p></li></ol>]]></content:encoded>
            <author>0xlin@newsletter.paragraph.com (0xLin)</author>
        </item>
        <item>
            <title><![CDATA[双币投资怎么玩？]]></title>
            <link>https://paragraph.com/@0xlin/AECyJizXOe3u09pEQaic</link>
            <guid>AECyJizXOe3u09pEQaic</guid>
            <pubDate>Fri, 17 Jun 2022 11:22:05 GMT</pubDate>
            <description><![CDATA[注：本文不是投资建议，请大家一定要做好风险控制。 近期随着BTC的价格不断下行，有一些朋友开始找我咨询一些抄底的策略，大家都有自己心理的底部区间，朋友们也都有较为一致的预期。但聊天过程中发现，大部分朋友对抄底策略中的期权套利了解甚少，因此，本文将会简单科普下数字货币市场中的双币投资应该如何玩。双币投资介绍双币投资是一种数字货币市场中的新型理财玩法，它的概念其实并不新奇，主要源自于传统金融中的双元货币投资（Dual Currency Investment，简称DCI），而双元货币投资，是一种与货币汇率挂钩的投资产品，按照用户的投资取向及对货币汇率的预期，并根据货币表现，而获取潜在收益，同时，它也可以以一个用户既定的汇率买入挂钩货币。 按照中国银行的官网介绍，如下图所示：总结来看，双元货币投资是一种结合外元存款，以及卖出汇率选择的结构性理财产品。双币投资则与双元货币投资类似，只是将外元汇率挂钩改成了以BTC为首的市场价挂钩。 那双币投资的具体概念以及收益又是如何计算的呢？我觉得币安的介绍已经很详细。1.什么是双币投资？ 双币投资是一种非保本高额收益结构型理财产品，以两种币种中的某一种...]]></description>
            <content:encoded><![CDATA[<p><code>注：本文不是投资建议，请大家一定要做好风险控制。</code></p><p><em>近期随着BTC的价格不断下行，有一些朋友开始找我咨询一些抄底的策略，大家都有自己心理的底部区间，朋友们也都有较为一致的预期。但聊天过程中发现，大部分朋友对抄底策略中的期权套利了解甚少，因此，本文将会简单科普下数字货币市场中的双币投资应该如何玩。</em></p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">双币投资介绍</h2><p>双币投资是一种数字货币市场中的新型理财玩法，它的概念其实并不新奇，主要源自于传统金融中的<strong><em>双元货币投资（Dual Currency Investment，简称DCI</em>）</strong>，而双元货币投资，是一种与货币汇率挂钩的投资产品，按照用户的投资取向及对货币汇率的预期，并根据货币表现，而获取潜在收益，同时，它也可以以一个用户既定的汇率买入挂钩货币。</p><p>按照中国银行的官网介绍，如下图所示：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/84c2c398a6548cce385cd01855a3071f23ac369fed3b7678c30dadba321130be.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>双币投资则与双元货币投资类似，只是将外元汇率挂钩改成了以BTC为首的市场价挂钩。</strong></p><p>那双币投资的具体概念以及收益又是如何计算的呢？我觉得币安的介绍已经很详细。</p><pre data-type="codeBlock" text="1.什么是双币投资？
双币投资是一种非保本高额收益结构型理财产品，以两种币种中的某一种进行结算。用户在申购时可选择基础资产、投资币种、认购额度及到期时间。投资回报将会根据以下情况结算为所投资币种或替代币种。
双币投资有两种类型：（1）高卖和（2）低买。
对于高卖产品
简单来说，意味着如果结算价格高于（上升）目标价格，那么产品将会被行权。
若结算价格 ≥ 目标价格则产品 被行权

产品“不被行权”若结算价格&lt;目标价格
对于低买产品
简单来说，意味着如果结算价格低于（下跌）目标价格，那么产品将会被行权。
若结算价格≤挂钩价格则产品被执行

“不被行权” 若结算价格 &gt;目标价格
无论投资的双币投资基础资产，若产品并未行权，您将会以投资币种的形式收到投资回报。若产品到期行权，您将会以替代币种的形式收到投资回报。
每个被申购产品都有指定到期日。我们将会使用结算日08:00 (UTC) 的现货价格作为结算价格。

2.我的收益是如何计算的？
(1) 当所申购的产品 被行权时，您所申购的金额与利息收益将会以目标价格被交易为 替代币种。以下公式为您将收到的总金额。
高卖:
(申购金额 *目标价格) * [1 + (年化收益率% * 到期天数 / 365)]
低买:
(申购金额 / 目标价格) * [1 + (年化收益率% * 到期天数 / 365)]
当所申购的产品不被行权时，您所申购的金额与利息收益将不会被交易为替代币种，您将最终收到投资币种. 。以下公式为您将收到的总金额。
申购金额 * [1 + (APY% * 到期天数 / 365)]
"><code><span class="hljs-number">1.</span>什么是双币投资？
双币投资是一种非保本高额收益结构型理财产品，以两种币种中的某一种进行结算。用户在申购时可选择基础资产、投资币种、认购额度及到期时间。投资回报将会根据以下情况结算为所投资币种或替代币种。
双币投资有两种类型：（<span class="hljs-number">1</span>）高卖和（<span class="hljs-number">2</span>）低买。
对于高卖产品
简单来说，意味着如果结算价格高于（上升）目标价格，那么产品将会被行权。
若结算价格 ≥ 目标价格则产品 被行权

产品“不被行权”若结算价格<span class="hljs-operator">&#x3C;</span>目标价格
对于低买产品
简单来说，意味着如果结算价格低于（下跌）目标价格，那么产品将会被行权。
若结算价格≤挂钩价格则产品被执行

“不被行权” 若结算价格 <span class="hljs-operator">></span>目标价格
无论投资的双币投资基础资产，若产品并未行权，您将会以投资币种的形式收到投资回报。若产品到期行权，您将会以替代币种的形式收到投资回报。
每个被申购产品都有指定到期日。我们将会使用结算日08:00 (UTC) 的现货价格作为结算价格。

<span class="hljs-number">2.</span>我的收益是如何计算的？
(<span class="hljs-number">1</span>) 当所申购的产品 被行权时，您所申购的金额与利息收益将会以目标价格被交易为 替代币种。以下公式为您将收到的总金额。
高卖:
(申购金额 <span class="hljs-operator">*</span>目标价格) <span class="hljs-operator">*</span> [<span class="hljs-number">1</span> <span class="hljs-operator">+</span> (年化收益率<span class="hljs-operator">%</span> <span class="hljs-operator">*</span> 到期天数 <span class="hljs-operator">/</span> <span class="hljs-number">365</span>)]
低买:
(申购金额 <span class="hljs-operator">/</span> 目标价格) <span class="hljs-operator">*</span> [<span class="hljs-number">1</span> <span class="hljs-operator">+</span> (年化收益率<span class="hljs-operator">%</span> <span class="hljs-operator">*</span> 到期天数 <span class="hljs-operator">/</span> <span class="hljs-number">365</span>)]
当所申购的产品不被行权时，您所申购的金额与利息收益将不会被交易为替代币种，您将最终收到投资币种. 。以下公式为您将收到的总金额。
申购金额 <span class="hljs-operator">*</span> [<span class="hljs-number">1</span> <span class="hljs-operator">+</span> (APY<span class="hljs-operator">%</span> <span class="hljs-operator">*</span> 到期天数 <span class="hljs-operator">/</span> <span class="hljs-number">365</span>)]
</code></pre><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">双币投资实际案例</h2><p>也许上面的介绍还不够简洁明了，下列我会以实际可操作的案例来分享。</p><p>假设当前市场上的BTC价格为20000美元，市场也处于低迷的状态，但你的心理抄底价位是18000美元。此时你在二级市场中以18000美元挂单买入1BTC，如果短时间内BTC无法跌到18000美元，则你的资金便得不到很好的利用，因为USDT已被挂单行为锁死。当然，如果市场真如你的预期跌到了18000美元，那便意味着你能得到1个BTC。</p><p>而通过双币投资，你一样可以按照心理预期的18000美元进行“低买”双币投资产品，假设年化收益率为x%、申购金额18000美元、结算周期为一周。等到结算周期到时，即交割日当天，有两种情况会发生：</p><ol><li><p>若交割当日BTC现货均价≤18000，則原先投入的USDT将被换算成BTC，此时你可获得的收益为1BTC+ 年化收益率为x%利息的BTC，即意味着你能得到大于1个BTC。</p></li><li><p>若交割日当日BTC现货均价&gt;18000，则原先投入的USDT不会被执行，此时你可获得的收益为18000+年化收益率为x%利息的USDT。</p></li></ol><p>反之，如果你手中有BTC，可以用同样的方式进行“高卖”，具体不再展开。当然，除了以上的例子，其实通过双币投资，还能产生更高阶的玩法，即通过短期波动市场实现套利，如果后续有朋友感兴趣，我将单独展开讲。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">双币投资的风险性</h2><p>任何投资行为都存在一定的风险，且收益越高代表风险越高，相信大家都有这方面的尝试。<strong>同样的，双币投资也存在着较大的风险。</strong></p><p>用理财用户常描述的「赚了利息，赔了价差」来举例，同样有两种情况：</p><ul><li><p>当你以18000美元的价格“低买”双币投资产品，如果在交割日当天，BTC的现货价格跌到了15000美元，则按照约定，系统会将原先投入的USDT换算成BTC，虽然得到的BTC大于1个，但按照U本位来计算，你的总资产其实是缩水的。</p></li><li><p>当你手里有一个BTC，以22000美元的价格“高卖”双币投资产品，如果交割日当天的BTC现货价格达到了30000美元，但系统依然会按照22000的美元进行最后的结算，虽然你能得到22000+年化收益率为x%利息的USDT，但22000美元到30000美元的BTC涨幅所带来的收益已与你无关。</p></li></ul><p>这也是为什么双币投资属于一种高风险高报酬的理财产品，不过用户可以根据不同的策略而有不同的年化收益，理论上，如果不想承担高风险的朋友，则可以选择结算日较短且交割目标价格较远的产品，但缺点是年化收益率也会较小。<strong>总而言之，年化收益率越高伴随着风险越高。</strong></p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">什么情况下适合双币投资？</h2><p>如果你是一名资深投资者，知道怎么利用短期波动市场获利，则双币投资会是个比传统金融更简单、高效的一种方式。</p><p>如果你是一位长期囤加密数字货币的价值投资者，且已有了币本位的概念，所持资产不会受短期币价暴涨暴跌而影响投资心态。如果市场恰好处于熊市的可囤币区间，那我觉得双币投资策略会很有意义。毕竟，双币投资的用处不仅仅是赚取利息和买卖。</p><p><strong><em>最后再次强调，双币投资并非保本产品，请大家一定要做好风险控制。</em></strong></p>]]></content:encoded>
            <author>0xlin@newsletter.paragraph.com (0xLin)</author>
        </item>
        <item>
            <title><![CDATA[元宇宙与GameFi：Otherside]]></title>
            <link>https://paragraph.com/@0xlin/gamefi-otherside</link>
            <guid>oICNGR7WdXUQWpcQRJmV</guid>
            <pubDate>Wed, 01 Jun 2022 07:29:47 GMT</pubDate>
            <description><![CDATA[我是一名游戏爱好者，同时也一直在关注着web3赛道中的GameFi。但遗憾的是，截至今日，我观察到的GameFi时代的游戏，大多还是披着游戏外皮的金融工具，其本质上都是拆东墙补西墙的庞氏模型。 如果我们回到游戏最初的设定，它最终应该是为了有趣才被创造出来的。 因此，一款游戏不够好玩、有趣，它的目标或者使命便没有完成。 我认为一款好的GameFi，首先应该是有趣，其次才应该去谈如何利用区块链来构建游戏的经济机制、开发者的激励、游戏道具/模型、项目方与玩家之间的治理等。当这些游戏的核心机制上链之后，玩家们可以查看过去只隐藏在中心化服务器中的游戏规则，这给游戏开发商和玩家之间建立了更强的信任纽带。 即利用区块链只是为了更好的让游戏机制相对透明、纯粹。 有趣是好游戏的基础，才有真正娱乐性质的应用场景作为内在价值来吸引更多的玩家、建设者以及投资者进入。当新玩家因为游戏的乐趣性而愿意将时间或金钱投入到游戏中，才能真正形成流入游戏生态的价值超过流出生态的价值。 也只有如此，GameFi用户的留存问题才能得到根本性解决，即游戏生态才能可持续。 那什么才是好玩的游戏呢？ 如今大多数传统的3A游戏可...]]></description>
            <content:encoded><![CDATA[<p>我是一名游戏爱好者，同时也一直在关注着web3赛道中的GameFi。但遗憾的是，截至今日，我观察到的GameFi时代的游戏，大多还是披着游戏外皮的金融工具，其本质上都是拆东墙补西墙的庞氏模型。</p><p>如果我们回到游戏最初的设定，它最终应该是为了有趣才被创造出来的。 <strong>因此，一款游戏不够好玩、有趣，它的目标或者使命便没有完成。</strong></p><p>我认为一款好的GameFi，首先应该是有趣，其次才应该去谈如何利用区块链来构建游戏的经济机制、开发者的激励、游戏道具/模型、项目方与玩家之间的治理等。当这些游戏的核心机制上链之后，玩家们可以查看过去只隐藏在中心化服务器中的游戏规则，这给游戏开发商和玩家之间建立了更强的信任纽带。 即利用区块链只是为了更好的让游戏机制相对透明、纯粹。</p><p>有趣是好游戏的基础，才有真正娱乐性质的应用场景作为内在价值来吸引更多的玩家、建设者以及投资者进入。当新玩家因为游戏的乐趣性而愿意将时间或金钱投入到游戏中，才能真正形成流入游戏生态的价值超过流出生态的价值。 也只有如此，GameFi用户的留存问题才能得到根本性解决，即游戏生态才能可持续。</p><p>那什么才是好玩的游戏呢？ 如今大多数传统的3A游戏可以告诉我们答案，此文不再赘述。值得一提的是，很多3A游戏团队已经开始进入加密游戏领域，也有很多链游团队开始使用虚幻5和其他更好的游戏引擎来创造更好的游戏体验。这让我们看到了未来有更好质量的链游诞生的希望。 此外，Web3中大量的蓝筹NFT社区也开始布局自己的游戏，在元宇宙中创建新的游戏体验。</p><p>其中，我认为直接从Web3领域中孵化出的最有希望成功的便是由Yuga Labs团队出品的<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://otherside.xyz/">Otherside</a>。 我个人看好的原因主要有以下几点：</p><ul><li><p>Web3的NFT领域中拥有一系列最强的IP和最强大的社区共识，CryptoPunks、BAYC、MAYC、以及近期收购的Meebits无一不在Yuga labs团队旗下。</p></li><li><p>顶级VC和强大的资金做支撑，截至2022年4月份，通过新一轮的4.5亿美元融资，Yuga Labs在短短一年内已经成为估值<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://thedefiant.io/yuga-labs-otherside-nfts/">40亿美元的NFT巨头</a>。</p></li><li><p>有元宇宙技术公司Improbable做技术支撑，通过最新的宣传视频来看效果似乎可圈可点。（但不可否认的是画面、特效等离3A大作还有些距离，希望Yuga多花时间打磨）</p></li></ul><p>Otherside是什么呢？ 简单来说，它是一个游戏化的、可互操作的虚拟世界，目前正在开发中。游戏融合了大型多人在线角色扮演游戏 (MMORPG) 和支持 web3 运行机制的虚拟世界。 当前任何介绍Otherside的社交媒体都逃离不开官网放出的资料，所以想要了解更多的信息，建议研究<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://otherside.xyz/">官网</a>即可。 此文也不会过多介绍。</p><p>我主要想借由Otherside目前放出的宣发资料对Otherside这款游戏或对未来有吸引力的GameFi中利用区块链技术所呈现的形式做一些猜想。<strong>需要特别强调的是，以下内容全由作者个人粗浅理解下的主观性猜测。</strong></p><hr><h3 id="h-nft" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">游戏的角色与NFT</h3><p>正如Otherside官网介绍的一样，你的Web3身份（钱包）拥有的某一个NFT可以变成游戏中的角色进入到游戏世界，并与同样形式的其他玩家在线的、实时的在Otherside世界中娱乐、社交。 这其实也是目前大多数GameFi最基本的机制， 如Axie Infinity的宠物、StepN的虚拟跑鞋等。但与之不同的是，Otherside不会只局限于拥有了Yuga Labs旗下的一个NFT才能玩（游戏最开始的内测阶段可能会存在这种情况），他允许所有开发者通过Otherside的SDK创建符合标准的NFT角色、服装、工具并接入后，拥有该NFT的玩家便可以通过该NFT角色映射到游戏世界中。<strong>这便意味着，你拥有的NFT不再是只作为其社交账号的头像，还有了真正的应用场景。</strong> 这在<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arcade.inc/">Arcade</a>这款游戏中可以作为参考：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/arcadedotinc/status/1519606093479096321">Arcade Demo</a></p><p>额外提一点，你的NFT作为你的资产，因为区块链技术的特性，这些玩家资产则有了更广泛意义上的流通性，如果行业形成了一套标准的、通用的NFT或元宇宙的SDK协议（Yuga Labs的SDK可能会去做这个事），此时不仅可以在Otherside中使用，还可以在其他应用开发商中的世界使用，真正实现多元宇宙的互联互通。</p><blockquote><p><em>NFT本身是一个技术名词，泛指链上的非同质化代币，作为一类代币标准，它可以适用于各种垂直类的应用，艺术图片、音乐、游戏角色、游戏道具、Uniswap V3的LP token等等都可称为NFT。</em></p><p><em>目前NFT广泛指使用</em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-721"><em>ERC721</em></a><em>/</em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-1155"><em>ERC1155</em></a><em>等协议（或其他链上类似的协议）所创造的链上资产。想了解NFT更多的知识点建议看以太坊官网的介绍即可：</em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/nft/"><em>Non-fungible tokens (NFT)</em></a></p></blockquote><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">游戏的经济体系与合约设计</h3><p>与Sandbox、Decentraland类似，Otherside也将游戏世界中的土地卖给了玩家。而拥有这些土地的玩家即拥有了这个游戏的”生产资料”，根据官方的资料显示，可以根据不同的土地属性产生不同的资源、道具，可能还会产生游戏Token。 这其实是有着巨大的商业逻辑转变——商业模式、生产关系、组织治理方式都将会有巨大的重构。</p><p>另外，未来还可能出现土地抵押/租借的模式，这将允许土地所有者获得由租用者支付的Token，租用者也将有能力从他们在租用的土地上生产的资源赚钱。 而利用游戏世界中的土地生产的资源、道具等，一切皆上链形成NFT，当然，与角色、土地类NFT采用ERC721协议不同的是，因为资源、道具的批量/重复性等特点需要采用ERC1155协议实现。</p><p>这些资源、道具不仅可以在游戏中使用、合成/消耗，同样可以作为NFT任意时刻买卖、交易。 同时，Otherside官网明确说明游戏的经济机制是建立在ApeCoin Token上，如果玩家打算在Otherside购买任何物品，需要使用ApeCoin Token。</p><p>如果仅利用Ape作为游戏的代币，游戏的经济机制采用的则是单代币模型。 但在Token设计方面，我依然是双代币模型的支持者，比如ApeCoin作为主代币，同时增加一个游戏代币。 正如Axie 中的 SLP，可以被项目用来引导初始用户基础或初始流动性；StepN 中，你只能在达到 30 级时才能通过游戏代币GMT兑换成主代币GST。</p><p>好处是，双代币模型可以使项目在不影响其主治理代币的情况下，在快速引导用户基础方面更具创造性。特别是Otherside这种MetaRPG游戏，可能会更需要。</p><p>但这样的设计又带来了巨大的系统复杂性，需要非常优秀的数值策划师来做一个很好的平衡，一旦项目决定推出双代币模型，就需要关注主代币和游戏代币的供需波动。因为这不像传统的Web2网络游戏，GameFi的经济系统一旦被创建，就意味着游戏中的金币系统会间接的与现实中的货币挂钩，假设设计的游戏代币可以无限增发，那对应的游戏资产就可能无限贬值，这是对游戏的毁灭性打击。但反过来说，优秀的数值策划与设计同样能给玩家带来更多的激励，带来游戏资产流通和升值，达到游戏的平衡性与可持续性。</p><p><strong>需要坦白的说，没有完美的游戏经济，就像比较游戏经济和国家货币储备一样。一款MMORPG开放世界游戏实际上就像一个国家，没有完美的设计，一切都需要尝试。我们依然处在早期阶段。</strong></p><p>另外，我个人认为Otherside的经济机制、游戏规则、资源/道具等在智能合约上已经是透明的逻辑下，并非需要做到不可修改，游戏一定会不断的更新迭代，这便需要部分的游戏机制可以参数化，所以可以建立主合约+多个子合约的模式，主合约除了用来存储核心元数据外，还可以根据不同的场景调用不同的子合约，不同的子合约用来建立游戏的各种机制。如果遇到游戏机制需要更新时，则更新相应子合约即可。</p><p>关于游戏的核心机制设计，我们有理由可以期待一下Yuga Labs的决策者们的考虑和最终设计。</p><h3 id="h-yuan" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">平台型元宇宙游戏</h3><p><strong>理想的游戏是能够构建成平台型游戏的，从而步入元宇宙。</strong> 我认为Yuga Labs推出Otherside不仅只是为了推出一款GameFi那么简单，团队的野心与实力有十足的动力去构建元宇宙。事实上，从官网有限的资料来看，也几乎可以肯定Otherside是一款元宇宙世界的游戏。</p><p>Yuga Labs通过构建Otherside元宇宙游戏平台，将巨大的用户流量圈在游戏中，同时也圈住了所有玩家的链上资产，此时则可通过类似链上游戏商城来构建元宇宙游戏版的Opensea、Magic Eden甚至Uniswap。我们通过链上数据看到，当前Opensea的2.5%的交易手续费已经让该团队赚得盆丰钵满。</p><p>当然，除了Opensea这种NFT交易平台。其实还会涉及到SocailFi领域，通过类似RSS3的协议，玩家可以在游戏中拥有自己的社交主页、社交关系，以及产生任何社交内容，比如发一条“推特”、写一篇游戏攻略，你还可以直接在游戏中给其他玩家的某一篇文章点赞、赠送Token。这些内容都可以通过IPFS存储在链上，也属于用户个人的资产。<strong>区块链技术发展至今，早已有一些较为成熟的技术方案。</strong></p><p>通过NFT+SocailFi，传统的如WOW的游戏公会概念将开始转变成各个NFT社区及多个子社区的概念，当你用BAYC NFT游走在Otherside的世界中时，已经可以证明你是BAYC社区的一员，而无需在你的推特主页中贴出你的Opensea地址、无需在Discord的Holder认证中来证明你自己。</p><p>如果你作为某个NFT社区的一名共建者，在Otherside以Koda和不同土地等为主世界背景、故事、框架下，你完全可以贴合游戏的故事背景去建立自己的社区文化、故事，当然你也可以不用太在乎Otherside的背景，只建立自己独特的社区，只要符合Otherside的主框架和标准。此外，你还可以与其他社区联动，比如在Otherside中开发出一款小游戏，供本社区和其他联动社区社交、娱乐，以此来带动社区的繁荣。</p><p>但有一点也许是我对区块链技术的掌握还不够，所以我个人目前还无法预知，即Otherside将会以何种形式处理玩家间的即时通信（IM）？ 需要承载亿级用户的IM系统似乎用现有的区块链技术还无法很好的满足IM中最核心的高QPS、低时延的要求。另外，用户的实时聊天数据是海量且杂乱无章的，这些数据不见得需要链上永久存储以及去中心化。我们同样可以期待Yuga的设计。</p><hr><p>最后提一下关于Otherside剩余土地的分配猜想，分为两部分：</p><ol><li><p>已发行的100000块土地中剩余的15000个土地，官方资料已明确说明会将其发放给Yuga和其他有意愿参与到该项目中的开发者。开发者们可能将通过Yuga发布的SDK来贡献自己的技术与设计，以此获得Yuga Labs的空投。</p></li><li><p>剩余未发型的100000块土地，将会专门奖励持有第一批土地且为Otherside的发展做出贡献的玩家、开发者。这一点其实没有很明确的规则说明，大家也只能做一些猜测。</p></li></ol><p>我们从合约代码来分析，futureMinter的地址并未分配（0x000...），且每个地址最大的mint数量为150块，也并没有设置类似公售时KYC的机制，完全由Yuga来分配futureMinter的地址。（稍微要吐槽的一点是，mint的方式似乎并未像ERC721A一样做优化。）</p><pre data-type="codeBlock" text="uint256 constant public MAX_MINT_PER_BLOCK = 150;

modifier onlyFutureMinter() {
    require(futureMinter == msg.sender , &quot;Only futureMinter can call this method&quot;);
    _;
}

//future
function setFutureMinter(address _futureMinter) external onlyOwner {
    futureMinter = _futureMinter;
}

function mintFutureLands(address recipient) external onlyFutureMinter {
    mintFutureLandsWithAmount(recipient, MAX_MINT_PER_BLOCK);
}

function mintFutureLandsWithAmount(address recipient, uint256 maxAmount) public onlyFutureMinter {
    require(maxAmount &lt;= MAX_MINT_PER_BLOCK, &quot;maxAmount cannot exceed MAX_MINT_PER_BLOCK&quot;);    
    require(futureLandsNftIdCurrent &lt; MAX_LANDS_WITH_FUTURE, &quot;All future lands were already minted&quot;);
    for(uint256 claimed; claimed &lt; maxAmount &amp;&amp; futureLandsNftIdCurrent &lt; MAX_LANDS_WITH_FUTURE; ++claimed){
        _safeMint(recipient, futureLandsNftIdCurrent++);
    }
}
"><code><span class="hljs-keyword">uint256</span> <span class="hljs-keyword">constant</span> <span class="hljs-keyword">public</span> MAX_MINT_PER_BLOCK <span class="hljs-operator">=</span> <span class="hljs-number">150</span>;

<span class="hljs-function"><span class="hljs-keyword">modifier</span> <span class="hljs-title">onlyFutureMinter</span>(<span class="hljs-params"></span>) </span>{
    <span class="hljs-built_in">require</span>(futureMinter <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-built_in">msg</span>.<span class="hljs-built_in">sender</span> , <span class="hljs-string">"Only futureMinter can call this method"</span>);
    <span class="hljs-keyword">_</span>;
}

<span class="hljs-comment">//future</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">setFutureMinter</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> _futureMinter</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> <span class="hljs-title">onlyOwner</span> </span>{
    futureMinter <span class="hljs-operator">=</span> _futureMinter;
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">mintFutureLands</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> recipient</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> <span class="hljs-title">onlyFutureMinter</span> </span>{
    mintFutureLandsWithAmount(recipient, MAX_MINT_PER_BLOCK);
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">mintFutureLandsWithAmount</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> recipient, <span class="hljs-keyword">uint256</span> maxAmount</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title">onlyFutureMinter</span> </span>{
    <span class="hljs-built_in">require</span>(maxAmount <span class="hljs-operator">&#x3C;</span><span class="hljs-operator">=</span> MAX_MINT_PER_BLOCK, <span class="hljs-string">"maxAmount cannot exceed MAX_MINT_PER_BLOCK"</span>);    
    <span class="hljs-built_in">require</span>(futureLandsNftIdCurrent <span class="hljs-operator">&#x3C;</span> MAX_LANDS_WITH_FUTURE, <span class="hljs-string">"All future lands were already minted"</span>);
    <span class="hljs-keyword">for</span>(<span class="hljs-keyword">uint256</span> claimed; claimed <span class="hljs-operator">&#x3C;</span> maxAmount <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> futureLandsNftIdCurrent <span class="hljs-operator">&#x3C;</span> MAX_LANDS_WITH_FUTURE; <span class="hljs-operator">+</span><span class="hljs-operator">+</span>claimed){
        _safeMint(recipient, futureLandsNftIdCurrent<span class="hljs-operator">+</span><span class="hljs-operator">+</span>);
    }
}
</code></pre><p>综上，我个人非常期待Otherside不管是商业模式还是用户的口碑都能够取得一定成功，最终打破GameFi庞氏模型的现状。 因此，我甚至隐隐希望Yuga可以合理的跳票几次，因为好玩的有质量的游戏一定是需要时间打磨的，如果Yuga不久后便宣布近一两个进度内就可以开始内测游戏，那我也许会降低对它的预期。</p>]]></content:encoded>
            <author>0xlin@newsletter.paragraph.com (0xLin)</author>
        </item>
        <item>
            <title><![CDATA[算法稳定币：Luna事件的思考]]></title>
            <link>https://paragraph.com/@0xlin/luna</link>
            <guid>5bkJmZYcmyBctHTG08Rv</guid>
            <pubDate>Fri, 13 May 2022 11:11:12 GMT</pubDate>
            <description><![CDATA[2022年5月11日，加密货币历史上出现了有可能是最严重的稳定币脱锚事件，事件主角即大家所熟知的Terra 生态下的原生算法稳定币 UST 和治理代币 LUNA，算法稳定机制的「脆落性」、资本采用索罗斯式的围猎直接触发死亡螺旋，在短短 2 天时间同时重演了泰铢和雷曼的恐怖灾难。 当然，这种恐慌性砸盘也同样影响到了币圈，BTC和ETH均有不同程度的下跌。而在恐慌情绪和资本围剿的夹击下，LUNA 成了当前加密市场最惨的受害者。 这篇文章我不会着重聚焦事件始末，感兴趣的朋友可以看这篇文章： https://www.theblockbeats.info/news/30504 我这边主要想讲讲区块链技术中的「稳定币」。 「稳定币」，这个区块链行业最基层的领域，在短短两年的时间里涌现出近百个项目。它桥接所有公链生态，驱动无数协议和应用，是加密领域必不可少的基础设施，也是当之无愧的最大赛道。 区块链中的稳定币可大致归类为法定资产背书、超额抵押加密资产、算法稳定这三类，本文将分别探讨这三类稳定币背后的机制以及为什么我认为「算法稳定币」是我认为最脆落的，甚至事实上，我认为「算法稳定币」是本身就有术...]]></description>
            <content:encoded><![CDATA[<p>2022年5月11日，加密货币历史上出现了有可能是最严重的稳定币脱锚事件，事件主角即大家所熟知的Terra 生态下的原生算法稳定币 UST 和治理代币 LUNA，算法稳定机制的「脆落性」、资本采用索罗斯式的围猎直接触发死亡螺旋，在短短 2 天时间同时重演了泰铢和雷曼的恐怖灾难。</p><p>当然，这种恐慌性砸盘也同样影响到了币圈，BTC和ETH均有不同程度的下跌。而在恐慌情绪和资本围剿的夹击下，LUNA 成了当前加密市场最惨的受害者。</p><p>这篇文章我不会着重聚焦事件始末，感兴趣的朋友可以看这篇文章：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.theblockbeats.info/news/30504">https://www.theblockbeats.info/news/30504</a></p><p><strong>我这边主要想讲讲区块链技术中的「稳定币」。</strong></p><p>「稳定币」，这个区块链行业最基层的领域，在短短两年的时间里涌现出近百个项目。它桥接所有公链生态，驱动无数协议和应用，是加密领域必不可少的基础设施，也是当之无愧的最大赛道。</p><p>区块链中的稳定币可大致归类为<strong>法定资产背书、超额抵押加密资产、算法稳定</strong>这三类，本文将分别探讨这三类稳定币背后的机制以及为什么我认为「算法稳定币」是我认为最脆落的，甚至事实上，我认为「算法稳定币」是本身就有术语上的矛盾，即算法稳定币完全缺乏「稳定币」。</p><h3 id="h-usdtusdc" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">以USDT/USDC为首的法定资产背书的稳定币</h3><p>银行是运营法定价值转移网络的公用事业。他们帮助个人和组织开展商业活动。在比特币区块链出现之前，银行是唯一可以执行这些功能的可信中介。但不得不承认，即使有比特币，银行仍然是现阶段和未来长期阶段最受欢迎的中介。</p><p>于是，Tether 在公共区块链上创建了一种新的数字资产类别，由银行机构持有的法定资产 1:1 支持，我们现在将其称为法定支持的稳定币。在 Tether（也称为 USDT）和 USDC 之后，各种其他由法币支持的稳定币如雨后春笋般涌现，每个项目持有的法币托管资产（AUC）随着对这些代币的兴趣增长而激增。目前，USDT 和 USDC 合计拥有超过 1000 亿美元的法币托管资产。</p><p>但这类稳定币可能存在一个问题——它需要有意愿的银行持有支持该代币的法定资产。没有一个 Satoshi 或 Wei 的稳定币交易费最终落入银行家的口袋，但银行持有这些巨额法定资产是有成本的。众所周知，中央银行对货币时间价值的破坏彻底破坏了商业银行的借贷业务模式——这使得它们同意持有数十亿美元的协议来实现它们的去中介化是一种奇怪的政策，而这些协议没有可识别的上行空间。</p><p>法定货币支持的稳定币想要使用银行的存储设施，但不为此支付任何费用。对我来说，这种策略在规模上将无法生存。几十亿不会引起大问题，但期望商业银行允许法定支持的稳定币的法币托管资产达到数万亿美元是几乎不可能。</p><p>另外，法定货币支持的稳定币不会成为支持 Web3 或真正去中心化的全球经济的支付解决方案。他们不会被允许增长到足以为需要快速、廉价和安全数字支付的互联网连接实体世界提供适当的服务。当美联储禁止 Silvergate 银行成为 Facebook 的 Diem 稳定币的仓库时，我们看到了这种矛盾。如果 Diem 推出，由于 Facebook 的用户群，它会立即成为全球最大的流通货币之一。它将与各种支持银行铁路的法定货币直接竞争，这是不被允许发生的。</p><p>当然，这个基本问题并没有在加密行业中丢失。</p><h3 id="h-dai" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">以DAI为代表的超额抵押加密货币的稳定币</h3><p>这类稳定币允许参与者铸造一个锚定的法定代币以换取加密抵押品。这类最成功的稳定币是 MakerDAO。MakerDAO 有两种货币。Maker (MKR) 是管理系统的代币。它类似于银行的股份，但银行的目标是资产大于负债。这些资产是各种大型加密货币，如比特币和以太币，它们承诺创建与美元挂钩的代币 DAI。</p><p><strong><em>1 DAI = 1 美元</em></strong></p><p>你从 MakerDAO 借 DAI 以换取一定数量的加密抵押品。由于加密抵押品的价格可能会以美元价值下跌，因此 Maker 将以编程方式清算质押的抵押品以满足 DAI 贷款。这是在以太坊区块链上透明地完成的。因此，可以计算 Maker 必须强制平仓的水平。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a13e5808e5162e265dd0750a99e3bfb323a9c5dc2beaf04cc619231b966beec9.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>这是 DAI 与其 1 美元挂钩的百分比偏差图表。读数为 0% 意味着 DAI 完美地保持了挂钩。正如您所看到的，Maker 在保持挂钩方面做得很好。</p><p>该系统很强大，因为它在比特币和以太币的各种价格暴跌中幸存下来，其 DAI 代币在公开市场上仍保持接近 1 美元的价值。这个系统的缺点是它是超额抵押的。它实际上消除了加密资本市场的流动性，以换取挂钩法定资产的稳定性。众所周知，停滞和平静是昂贵的，而波动是免费的。</p><p>MakerDAO 和其他超额抵押稳定币的 f(x): 最大值完全耗尽了更广泛生态系统的流动性和抵押品。Maker 代币持有者可以选择将风险引入商业模式，以通过借出闲置的质押抵押品来换取更大的收入。但是，这会将信用风险引入系统。谁是可靠的借款人，可以可靠地以加密货币支付正利率，他们承诺什么抵押品？那抵押品是原始的吗？</p><p>法定分数银行的好处是系统可以成倍增长，而不会从经济中耗尽所有货币良好的抵押品。这些超额抵押的稳定币填补了一个非常重要的利基市场，但由于上述基本原因，它们始终是利基市场。</p><h3 id="h-ust" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">以UST为代表的算法稳定币</h3><p>这些稳定币的既定目标是创建一个具有小于 1:1 加密或法定抵押品的锚定资产。</p><p>鉴于 Terra 是当前的主题，我将使用 LUNA 和 UST 作为示例来解释算法稳定币的机制。</p><p>LUNA 是 Terra 生态系统的治理代币。</p><p>UST 是一种与 1 美元挂钩的稳定币，其“资产”只是流通中的 LUNA 代币。</p><p>以下是挂钩的工作原理：</p><p>扩展：如果 1 UST = 1.01 美元，则 UST 与其挂钩的价值被高估。在这种情况下，该协议允许 LUNA 持有者将价值 1 美元的 LUNA 换成 1 UST。LUNA 被烧毁或退出流通，UST 被铸造或投入流通。假设 1 UST = 1.01 美元，交易者赚取 0.01 美元的利润。这就像 LUNA 价格的顺周期放大器，因为它的供应量减少了。</p><p>收缩：如果 1 UST = 0.99 美元，那么 UST 相对于其挂钩汇率被低估。在这种情况下，该协议允许 UST 持有者将 1 UST 换成价值 1 美元的 LUNA。假设您可以用 0.99 美元购买 1 UST 并兑换 1 美元的 LUNA，您将获利 0.01 美元。UST 被烧毁，LUNA 被铸造。这充当了 LUNA 价格下行趋势的顺周期放大器，因为它的供应量在下行过程中增加。最大的问题是，现在拥有新铸造的 LUNA 的投资者会决定立即出售它，而不是抱着价格上涨的希望持有它。这就是为什么当 UST 以与其挂钩的大幅折价交易时，LUNA 面临持续的抛售压力。</p><p>LUNA 被认为越有价值，UST 在 Web3 去中心化经济中的商业使用越多。这种铸造和销毁机制在上升的过程中非常有用，或者当 UST 越来越受欢迎时，但如果 UST 无法保持其下行趋势，那么死亡螺旋可能会从无限期铸造 LUNA 开始，以试图让 UST 回归与其挂钩。</p><p>所有算法稳定币都具有治理令牌和挂钩稳定币之间的某种铸币/销毁相互作用。所有这些协议都有一个相同的问题，即当锚定稳定币的交易价格低于法定挂钩时，如何诱使人们支持挂钩。</p><p>由于死亡螺旋现象，几乎所有算法稳定币都失败了。如果治理代币的价格下跌，那么支持锚定代币的治理代币资产就不会被市场视为可信。那时，参与者开始抛售他们的挂钩代币和治理代币。一旦螺旋开始，要恢复对市场的信心是非常昂贵和困难的。</p><p><strong>综上，算法稳定币其实本质上是脆弱的。这些无抵押的数字资产试图利用金融工程、算法和市场激励来锚定参考资产的价格，它们根本不稳定，而是处于永久脆弱的状态。迄今为止的迭代一直在努力维持稳定的挂钩，但几乎所有算法稳定币都已经灾难性地失败了，正如IRON 、 BAC 到 FEI再到这次的UST。</strong></p><h3 id="h-terra-ust" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Terra / UST 后续猜想</h3><p>UST目前还处于死亡螺旋状态，要想停止螺旋，只有当 UST 市值等于 LUNA时才会发生。由当前的算法协议继续运作且任其发展的话，协议最终将找到市值平衡。那么问题就变成了最终的静止市值是多少。但问题是，当套利者购买便宜的 UST 创造新的 LUNA 时，谁会购买那个 LUNA？当你知道只要 UST &lt; 1 美元，就会有数十亿美元的 LUNA 以编程方式产生，你为什么要从那些卖它的人那里购买 LUNA？</p><p>即使 LUNA 和 UST 在这一事件中幸存下来，从长远来看，必须进行一些天才的协议更改，以增强市场对 LUNA 的市值将始终超过 UST 浮动的信心。</p><p>但，我不知道如何做到这一点。</p>]]></content:encoded>
            <author>0xlin@newsletter.paragraph.com (0xLin)</author>
        </item>
        <item>
            <title><![CDATA[Hello Web3]]></title>
            <link>https://paragraph.com/@0xlin/hello-web3</link>
            <guid>Ny5A33Rwiw0XjzzQqAbc</guid>
            <pubDate>Tue, 25 Jan 2022 06:17:14 GMT</pubDate>
            <description><![CDATA[“…每次技术革命都是被当作一次震荡被社会接受的。它在扩散过程中会遇到人们和制度的强大抵抗。因此，技术革命在财富创造潜力上的充分展开，最初总会产生相当混乱而且矛盾的社会后果，此后则需要一次重大的社会重组。这不仅包括改变那些影响所有市场和经济活动的调节框架，重新设计成整整一系列制度——包括政府、金融管制以及教育，而且包括对社会行为和观念进行修正。正是由于重塑了与技术革命潜力相适应的环境，“黄金时代”才得以出现。”——《技术革命与金融资本》Web3.0时代的开端相信不少朋友在近期都会听到一个词语：「Web3.0」，特别是在元宇宙的浪潮下，Web3.0已越来越多地被业界所提及，据谷歌趋势数据显示，截止至2022年1月，“web3”一词在最近3个月的全球搜索量更是有着呈指数级上升的趋势。web3谷歌搜索趋势我们必须承认的是，Web3.0的轮廓从目前来看依旧处于模糊状态，对Web3.0的定义也还未完全得到传统互联网的认可——围绕这一话题曾出现过许多不同观点的探讨甚至是争议。此外，Web2.0巨头们对Web3.0的到来似乎也并未感到压力。但可以很明确的说，我们已悄然处于Web3.0时代的开端，...]]></description>
            <content:encoded><![CDATA[<p><em>“…每次技术革命都是被当作一次震荡被社会接受的。它在扩散过程中会遇到人们和制度的强大抵抗。因此，技术革命在财富创造潜力上的充分展开，最初总会产生相当混乱而且矛盾的社会后果，此后则需要一次重大的社会重组。这不仅包括改变那些影响所有市场和经济活动的调节框架，重新设计成整整一系列制度——包括政府、金融管制以及教育，而且包括对社会行为和观念进行修正。正是由于重塑了与技术革命潜力相适应的环境，“黄金时代”才得以出现。”——《技术革命与金融资本》</em></p><h2 id="h-web30" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Web3.0时代的开端</h2><p>相信不少朋友在近期都会听到一个词语：「Web3.0」，特别是在元宇宙的浪潮下，Web3.0已越来越多地被业界所提及，据谷歌趋势数据显示，截止至2022年1月，“web3”一词在最近3个月的全球搜索量更是有着呈指数级上升的趋势。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3c5b340413014ee13d5372e2d48b20b77ebe8c35fb900c68addb2f221300f2df.png" alt=" web3谷歌搜索趋势" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">web3谷歌搜索趋势</figcaption></figure><p>我们必须承认的是，Web3.0的轮廓从目前来看依旧处于模糊状态，对Web3.0的定义也还未完全得到传统互联网的认可——围绕这一话题曾出现过许多不同观点的探讨甚至是争议。此外，Web2.0巨头们对Web3.0的到来似乎也并未感到压力。但可以很明确的说，我们已悄然处于Web3.0时代的开端，并且它几乎以一种不可逆的趋势向我们加速走来。</p><h2 id="h-web30" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">前Web3.0时代</h2><p>早在1989年 Tim Berners-Lee 提出万维网概念至今，互联网产业便已经历过Web1.0与Web2.0两个惊涛骇浪的时代，所以想要更加全面的了解什么是Web3.0，我想需要让我们先回顾和梳理下「前Web3.0时代」。</p><p>简单来说，Web1.0通常指的是第一代互联网，它通过TCP、IP、SMTP 和 HTTP等数据传输协议，将互联网世界中的独立计算机进行相互连接，很大程度上降低了信息交换的成本，它以早期的门户、搜索网站、个人博客等为代表，主要特点是网络平台单向地向用户提供内容，这个阶段的用户只能被动地接收网络传递的内容，无法参与到网络中。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9004eb9592124647308f3de38dbe1c83e4d2e571979c800dbe57d751660f8cd1.png" alt="Web1.0 时代的协议 " blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Web1.0 时代的协议</figcaption></figure><p>接下来是Web2.0时代，其实在Web2.0概念被提出来时，还并没有Web1.0的说法。Web2.0是由 Darcy DiNucci 于1999年发明，后来在2004年底的 O&apos;Reilly Media Web2.0大会上由 Tim O&apos;Reilly 和 Dale Dougherty 推广，Web2.0才更被大家所接受。而为了区分，便把之前的网络发展时期称为Web1.0。</p><p>Web2.0时代，用户不再是内容的被动接收者，而是可以在网络平台创建自己的内容（包括文字、图片、视频等等），并和网络上其它用户进行交互。在这一阶段，互联网从单向传播变成了双向或多向互动。</p><p>也因此，Web2.0时代爆发出了如Google、Amazon、Facebook等巨头企业，这些科技巨头当前已成为我们在互联网上所赖以生存的新中介和看门人，涉及社交、购物、娱乐等不同领域，让信息、商品和服务的生产者和消费者之间的联系更加紧密。简而言之，Web2.0 更注重用户的交互，用户既是网站内容的浏览者，也是网站内容的制造者。内容互联网的产品模式，由单纯的「读」向「写」以及「共同建设」发展，即Web2.0从 Web1.0 的「只读」升级到 「可读-可交互」。</p><p>但需要警惕的是，我们不得不被迫信任这些科技巨头编写的不透明代码和所维护的中心服务器。——关于Web2.0的弊端，我会在下面更加详尽地展开，不在此赘述。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4bfd2b74ea4713b42c64743e43700d21b367a0992153d0b000423db532370ff9.png" alt="Web2.0时代 " blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Web2.0时代</figcaption></figure><h2 id="h-web30" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">什么是Web3.0？</h2><p>虽然Web3.0在近期才开始被越来越多人关注，但早在2011年左右，万维网之父 Tim Berners-Lee 便提出了Web3.0的概念，它将其定义为：Semantic network （语义网络），感兴趣的可以看该出处：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www2.slideshare.net/ghazalhina/detail-history-of-web-10-to-30">Detail History of web 1.0 to 3.0</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9bdceb1e68e3791952e8a2be43c65d98be626a4347362ab30676c7c8144c1f35.png" alt="Web3.0 语义网络" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Web3.0 语义网络</figcaption></figure><p>语义网络，可简单理解为「机器语言网络」。即机器互联互通之后形成一个系统（一般意义上理解为软件系统），这个系统中的机器设备能够交流互动，对信息分类。因此，基于机器语言的定义，语义网络一般与AI（人工智能）、IoT（物联网）等关联在一起，但如果从日常的交易机制、事务以及我们的日常生活都会由机器与机器之间的沟通来处理，即「机器智能代理」的角度来看，这又似乎与「智能合约」的概念不谋而合——智能合约更多代指区块链上的自动化执行程序。</p><p>时间来到2014年，由以太坊联合创始人、波卡创始人、Web3基金会创始人 Gavin Wood 进一步提出了当前更加主流的Web3.0的概念。他认为 Web3 是一组包容性协议，可以让互联网更加去中心化、可验证和安全。Web3 的愿景是实现无服务器、去中心化的互联网，即用户掌握自己的身份ID、数据。随着 Web3 概念不断被普及，内容由用户创造，数据归用户所有，平台通过用户行为和内容获得的收益，同样应该分给用户的概念深入人心。感兴趣的可以看该出处：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://gavwood.com/dappsweb3.html">ĐApps: What Web 3.0 Looks Like</a></p><p>由以上的定义我们不难推敲出，Web3.0 基于无服务器、去中心化的网络，在Web2.0的基础上加入了信任的、可验证的机制，用户不再受限于科技巨头们的“控制”。即Web3.0从Web2.0的 「可读-可交互」跃迁到「可读-可交互-可拥有」。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5836b71562c866cb4b142f4f19199835de6ad77e1fa7e7cdef924d59651d747a.png" alt="从内容消费者和生产者之间的交互看 Web 1.0、2.0 和 3.0" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">从内容消费者和生产者之间的交互看 Web 1.0、2.0 和 3.0</figcaption></figure><h2 id="h-web20" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Web2.0的局限性</h2><p>回顾互联网从Web1.0到Web2.0的演进，一切似乎都朝着用户体验越来越好的方向发展，事实也的确如此，那为何还要另辟蹊径的创造出Web3.0呢？因为从技术的底层逻辑来看我更偏向于Web3.0相较于Web2.0是一种破坏性创新与技术跃迁，而不仅仅只是在Web2.0的基础上做技术更新。</p><p>尽管此时Web3.0还处于早期阶段，但被历史所选择时，是否可以认为，Web3.0必定有着Web2.0所无法解决的问题和得天独厚的优势？答案几乎显而易见，下面我将试着从用户和企业两个角度来分析Web2.0世界下所面临的局限性。</p><h3 id="h-web20" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">用户：Web2.0架构所带来的弊端</h3><p>Web2.0的世界里，我们仍采用着Client-Server这样的架构模型，用户数据在互联网巨头的服务器上集中存储和管理。即当你在Web2.0的某个平台上注册你的账号且打勾了《服务协议》和《隐私条款》时，便意味着后续你在该平台的一切行为产生的数据都存储在该平台的中心服务器上，且你的数据归属平台所有。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9319336d02e7734967394cdc4b1bed9d5c7ce318b7be153fea3a6ab215a300a3.png" alt="Client-Server模型" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Client-Server模型</figcaption></figure><p>对用户来讲，这带来了以下几个弊端：</p><blockquote><p><strong>数据信任和安全问题</strong></p></blockquote><p>当Web2.0 产生的数据在服务器端集中管理时，便难免存在着安全隐患。一切都可归因为天灾人祸：黑客的入侵或监守自盗、中心服务器的损毁、企业倒闭后的数据销毁等。以安全为例，当黑客试图非法操作着你所使用的平台的背后服务器集群，就好像试图闯进一座房屋，房屋的防盗门会阻拦黑客，警报系统也会发出警报。但即使房屋围墙再坚固、警报系统再灵敏，只要黑客够高明，或存在监守自盗，这座房屋便还是很容易被攻破，此时你的数据便存在着隐私问题。因此，互联网公司常常发生着服务器被非法入侵、数据泄露等事故。「社工库」便是数据隐私问题的典型。</p><p>当然，有攻就有守，Web2.0发展至今，也同样伴随着一系列技术升级和相应监管机制的完善，如引入隐私计算，通过同态加密、多方安全计算、可信执行环境等技术，保证数据在使用过程中是明文不可见的；如在服务器层面引入多机房部署与冷备；如在监管层面引入用户数据保护条例等。但我个人认为这些手段依然未从根本性上解决问题。</p><blockquote><p><strong>经济模型的不对等</strong></p></blockquote><p>从前面描述的Web2.0架构模型来看，我们的数据虽然有价值，但实际上并不属于我们，而是完全归属于企业，且可以被任意使用和变现。其实，就我所知的大部分Web2.0的企业平台或应用，每一个都在无所不用其极的锁住用户，提高粘性和留存，把用户和数据的护城河建立起来，并从中榨取最大的价值。</p><p>因此，在Web2.0的世界里，我们的数据不但不属于我们，连数据所产生的价值也不会分给我们。—— 当然，数据的价值归归属方所有在商业逻辑上也无可指摘。但我们依然可以说，Web2.0时代，以互联网巨头为核心，形成着一个个生态圈，并“统治”着生态，垄断着生态的数据、价值和网络效应。——但不得不说，这与世风日下、人心不古无关，这是自由市场竞争、员工实现股东利益最大化的正常行为逻辑产生的必然结果。</p><p>此外，作为互联网的垄断型平台，“收割”的不仅是平台使用用户，还同时“收割”着产品的生产者或服务的提供者。这其实是一种寻租行为，即平台在没有从事生产的情况下，为垄断社会资源或维持垄断地位，从而得到垄断利润（亦即经济租）所从事的一种非生产性寻利活动。以国内某打车平台为例，它同时服务着乘客用户和网约车司机，我们的数据都由该平台所掌握和所属，并几乎垄断着国内市场份额。基于该背景，员工们为公司股东赚钱这一原则下会尽可能地提高网约车的费用，并压低司机的分成，以此实现利润最大化。正是由于垄断平台持续地寻租，获取的收益分配比重才越来越大。这也是为什么越来越多人都开始意识到，滥用垄断优势、不正当牟利已逐渐成为互联网平台的常态，Gavin Wood甚至感叹：今天的互联网在设计上就是坏掉的。</p><p>面对以上的问题，Web2.0世界同样也在尝试着升级或者改革。如越来越多的平台开始呼吁“用户第一”，以国内某巨头企业为例，其作为垄断型平台企业，已把“用户第一、员工第二、股东第三”作为价值观的第一条，这是一次不小的变革。但在当前商业环境下，能否真正实现并长期坚持，有待未来证实。再比如行业监管的力度也再进一步地增强：据近些年的数据显示，欧盟及欧盟各国对Google的罚款，总额已经超过100亿欧元。但同样的，我个人认为以上措施依然未从根本性上解决问题。</p><blockquote><p><strong>用户数据的不互通</strong></p></blockquote><p>我们前面提到，用户产生数据，企业则把用户和数据的护城河建立起来，并从中产生价值。这其实促使着各个企业有着把数据建立起壁垒的动力，即数据闭源。</p><p>于是我们能够看到，在Web2.0的世界里，我们在每个网站上使用一个新的产品时，都要不厌其烦的走一遍手机号/邮箱/用户+密码/验证码的流程，然后往往不怎么用的产品第二次使用的时候还要再点击找回密码，这间接的降低了互联网用户的使用体验。近期就我所发生的一件事让我对数据的不互通所带来的感受更为颇深，因为我过往的电子支付行为几乎都在支付宝上，因此支付宝可以利用一套非常丰富的算法且根据我的一系列行为数据来衡量我的信用分（目前给到我的芝麻信用分已在750分以上）， 但我在近期又尝试开通了微信支付分，由于我在支付宝产生的数据因为商业壁垒不会也不允许共享给微信，等于我在微信的支付行为几乎为0， 因此微信支付只能给我设置了初始的650+分（当然两者的衡量算法和分数体系并不一致，但并不影响我想表达的意思）。</p><p>说到数据互通的作用性，互联网巨头们也早已明白，特别是加上大数据赋能的情况。于是最近几年，我们几乎可以看见巨头们正在加速并购各种垂类应用，以此建立起自己完整的生态圈，然后利用大数据的力量使数据价值更大化。我们不妨思考一个问题：企业平台应该如何做到广告的精准推送？方法有非常多，但其中一定绕不开用户画像的建设与完善。举个例子：也许有一天我们在某个视频网站上搜索关于“如何防止脱发”的科普视频，此时我们的用户画像可能就已经被动的被打上了“脱发”的属性，未来的某一天当我们打开购物网站时，赫然眼前的就很有可能是一则“植发”广告或“防脱发”药水。这其实是老生常谈的话题，相信大多数朋友也早已知晓和习以为然。</p><p>但我想引出我要表达的意思：Web2.0的数据互通依然受限于企业的生态圈，且中心化，当我们换到其他生态圈时互通的那条数据线就已经被无形掐断。因此，只要存在着商业壁垒，就无法真正做到用户身份、数据的互通，这就如最近常说的元宇宙的概念，我个人认为被科技巨头控制的元宇宙，不是真正的元宇宙，真正的元宇宙最终需要实现跨链互通、身份互认、价值共享，它不属于任何一家科技巨头，而是属于每一个人。</p><h3 id="h-web20" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">企业：Web2.0的流量见顶</h3><p>Web1.0至Web2.0时代，我们常提及「流量」一词——流量从供给不足（互联网刚出现）再到市场争夺流量入口（互联网普及），进而实现流量变现。可以笼统的说Web2.0是流量为王的时代。</p><p>拥有着用户流量的平台同时控制着用户的行为数据，建立起属于平台的护城河，以此享有对应的市场红利。但从近两年的趋势来看，Web2.0的世界里不仅早已过了流量井喷的时代，在人口增速下降和互联网渗透率已提高到一定程度的宏观因素下，更面临着流量逐渐见顶的不可逆趋势。</p><p>实际上也确实如此，根据艾瑞咨询联合华为发布的《2021互联网行业挑战与机遇白皮书》，流量的增长乏力是全球互联网的共同特点，传统“砸钱铺规模”的流量获取思路捉襟见肘。截至2021年3月31日，全球互联网用户数量达到51.69亿人，全球占总人口的72.3%。这点在发达国家表现更为明显，截至2021年3月31日，北美地区互联网渗透率最高，达到93.9%，其次为欧洲地区，互联网渗透率为88.2%。流量见顶几乎板上钉钉。</p><p>流量见顶和流量获取成本越来越大的趋势下，各大企业便需要开辟新的战场，市场从海内触及至海外，终端从2C到2B或2T，云原生、AI、大数据等进行技术升级，无不都在改善这个问题。当然，从Web2.0至Web3.0，我认为也是一种甚至是更有效的方式，至少目前从个人创作者、社区、中小型企业来说是。——已越来越多的创作者、社区等在Web3.0构建自己的世界并取得成功。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4d6cce2b8aca0e979bf3cd9b691e20e0e25ccdf6e2eb42dac1d34f2c420832e7.png" alt="全球互联网用户数量" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">全球互联网用户数量</figcaption></figure><h2 id="h-web30" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Web3.0的价值体现</h2><p>Web3.0常被人称为“后端革命”，主因是它利用了区块链技术重新定义了互联网后端的连接方式，这项技术彻底改变了互联网的数据存储和管理方式，最终打造出更加去中心化、受信任、可验证和安全的网络。</p><p>前面讲到Web2.0的局限性时从用户层面阐述了三个问题，即：数据信任和安全问题、经济模型的不对等、用户数据的不互通。那么回到Web3.0，正是由于其利用了区块链技术升级出新的数据结构和模式，较好的解决了Web2.0中较难甚至无法解决的问题：</p><blockquote><p><strong>用户数据受信任和隐私保护</strong></p></blockquote><p>区块链的设计方式是分散式的，服务器不再是一座坚固的房屋，而是散布在全球各地的众多的房屋。每间房屋，都有自己的围墙和警报系统来保护数据。如果你是一名黑客，此时你需要同时闯入全球多个房屋，每个房屋都有自己的围栏和警报系统，这才能突破它们。这是可能的，但相比Web2.0来说所花的代价将变得非常昂贵。正因为这种数据结构的升级，必然使用户数据相比Web2.0得到更好的保护。</p><p>同时，基于数据权益通证化、数据确权与授权的区块链技术，用户数据的隐私也相比Web2.0将得到更好的保护。在Web3.0中，用户的所有数据归用户自己所有，因此在没有得到用户授权之前，使用者无权使用。</p><p>最后，Web3.0的世界中，随着应用的去中心化，链上数据可查的情况下，用户行为、产生的数据乃至应用协议同样需得到隐私保护。隐私保护是多方面的，包括基础区块链平台隐私保护、存储数据隐私（分布式存储）、用户私钥管理、匿名协议等多方面。</p><blockquote><p><strong>经济模型更对等</strong></p></blockquote><p>在Web3.0，链上数据属于每个人，同时又对每个人或组织可读，大家都可以对这些数据进行价值捕获，价值的分配方式其实已被重塑。本质上Web3.0是去中介化的、去平台经济的、或降低平台在双边市场中对价值定位和商业策略的影响的。这种机制可以让使用者群体之间实现直接交易/交互，共同创造着价值和网络效应。但不可否认，只要存在用户之间的交易/交互，在商业的正常运转逻辑下双边或多边平台必然产生，但与现有Web2.0平台不同的是，Web3.0的平台不是由企业运营，而是由众多相互独立的实体组成的社区共同维护运营，它不受单一实体或少数实体组成的利益同盟控制。</p><p>同时，Web3.0的平台由于内置了激励机制，根据社区规则向参与者分发加密通证。参与者对平台增长贡献越大，分到的通证越多。通证价值随着平台经济规模增长，参与者群体共同创造价值、分享收益。可见，Web3.0的世界是平台组织方式和分配方式的革命，对传统平台构成降维打击。</p><blockquote><p><strong>数据的互通性</strong></p></blockquote><p>在Web3.0中，平台或应用将打破Web2.0的生态圈界限，应用之间的复合性、组合性将不受限制，用户在Web3.0世界将以开放的姿态驰骋，同时在隐私得到充分保护的情况下充分发挥着创造力。另外，Web3.0内部基于不同基础设施的应用之间可以被「跨链」协议解决互联互通。因此，用户在Web3.0世界多个应用的行为可以生产类似社交关系图谱，进一步提升数据价值的挖掘潜力。这也意味着你可以穿梭在任何一个世界里面，用同一个套账号地址体系，资产和数据全部共享。而且，游戏/金融/社交/电商任何类型的应用都可以无缝融入这个世界。这带来的想象空间将是巨大的，也是元宇宙甚至多元宇宙的实现基础。</p><p>数据的互通性，目前已有的最直接的案例就是所谓「DeFi Lego」，任何应用都可以对底层基础协议（如DEX）做调用或聚合，以及合成资产平台将现实世界资产映射到链上（无交割关系），这等于打破了所谓线上线下和虚拟与现实的界限。</p><p>截止目前，Web3.0的生态图景其实已经涵盖游戏、社交、金融、内容平台等领域。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/631f87c30aecebfb4a12fd46e8ee9cc01e6f46a22e6b720e2422191c7db120c5.png" alt="Web3.0的生态图景" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Web3.0的生态图景</figcaption></figure><p>通过上述的描述，似乎还无法很好的勾勒出Web3.0世界的模样，我们不妨再畅想下未来的世界应该是什么样的：</p><pre data-type="codeBlock" text="早上醒来，我用DID（Web3.0世界用户登录行为依靠去中心化身份：DID （Decentralized IDentity））登录到了WOW的世界中并游玩起来，当我与队友经历了数小时的配合后共同推倒了BOSS，因此，我获得了一件不错的装备，但可惜这件装备并不是我想要的且我暂时还不缺游戏里的流动资金，于是我将这件装备挂到了NFT交易平台上进行拍卖，不久的某一天，我成功出售并赚取了我在Web3.0世界中的一笔Token（资产），在得到这笔Token后我正好看到了这个平台上挂着一件我想要的头像NFT，于是我拿出一部分Token毫不犹豫的把这个NFT拍了下来，拍下后的不久Twitter便给我发了个通知，内容大致是能否将我的Twitter头像更新成最新的NFT头像，于是我同样用同一套身份认证体系登录到了Twitter，在我的授权和许可下，我的头像被成功替换。当我在关闭Twitter平台之前看到我的一位好朋友发了一条令人激动的推文，于是我点赞了它，与以往不同的是，这个点赞的动作同时意味着我的这位朋友将收获Twitter平台发的一枚Token。 
"><code>早上醒来，我用DID（Web3<span class="hljs-number">.0</span>世界用户登录行为依靠去中心化身份：DID （Decentralized <span class="hljs-keyword">IDentity</span>））登录到了WOW的世界中并游玩起来，当我与队友经历了数小时的配合后共同推倒了BOSS，因此，我获得了一件不错的装备，但可惜这件装备并不是我想要的且我暂时还不缺游戏里的流动资金，于是我将这件装备挂到了NFT交易平台上进行拍卖，不久的某一天，我成功出售并赚取了我在Web3<span class="hljs-number">.0</span>世界中的一笔Token（资产），在得到这笔Token后我正好看到了这个平台上挂着一件我想要的头像NFT，于是我拿出一部分Token毫不犹豫的把这个NFT拍了下来，拍下后的不久Twitter便给我发了个通知，内容大致是能否将我的Twitter头像更新成最新的NFT头像，于是我同样用同一套身份认证体系登录到了Twitter，在我的授权和许可下，我的头像被成功替换。当我在关闭Twitter平台之前看到我的一位好朋友发了一条令人激动的推文，于是我点赞了它，与以往不同的是，这个点赞的动作同时意味着我的这位朋友将收获Twitter平台发的一枚Token。 
</code></pre><p>我们可以看到，在Web3.0的时代，你可以穿梭在任何一个世界里，用同一套账号地址体系，资产和数据全部共享，并且不只是游戏，金融/社交/电商任何类型的应用都可以无缝融入到这个世界，且你在Web3.0使用任何一个应用的时候，不是从零开始，而是带着你的地址画像和标签在每一个应用里行走，价值的载体是你的数据，也属于你自己。Web3.0时代，可以勾划出只属于你的异常丰富的用户画像和行为模式。</p><h2 id="h-web30" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">web3.0的不确定性</h2><p>前面我们提到Web3.0相较于Web2.0的进步，但web3.0的世界同样面临着一些不确定性，我将列出我认为最大的两个点来展开阐述。</p><blockquote><p><strong>Web3.0的去中心化是基石也是绊脚石？</strong></p></blockquote><p>谈及Web3.0，最直接的印象非「去中心化」莫属，而且似乎倾向于认为去中心化程度越高越好。如果将这个叙事逻辑套在比特币这样的「资产类项目」之上是毋庸置疑的，但如果将这样的逻辑放在「应用类项目」上似乎又难以契合市场预期，因为一味去中心化的结果必然带来用户体验的下降。</p><p>这个现象可以通过三元悖论来解释，在分布式领域有个著名的 CAP 定理：分布式系统无法同时确保一致性（Consistency）、可用性（Availability）和分区容忍性（Partition），设计中需要弱化对某个特性的需求。因此CAP 原理认为，分布式系统最多只能保证三项特性中的两项特性。同样的，Web3.0中利用到的区块链技术也存在三元悖论，即“不可能三角”，指的是去中心化（Decentralization）、可扩展性（Scability）、安全性（Security）这三项要求无法同时满足，必须有所取舍。</p><p>因此我们不得不面临一个问题，如果Web3.0的确是未来需要承载十亿级别用户且体验也符合用户心理预期的方向，那以众多应用类项目需要性能（可扩展性）来保证用户体验的前提下，在“不可能三角”面前，Web3.0的发展路径是否需要从「去中心化」向「高性能」让步？事实上，区块链领域也确实有不少通过牺牲一些去中心化来提高性能的尝试，比如比特币的闪电网络、以太坊的分片技术、Layer 2方案等。但不管怎么样，我始终认为，Web3.0应该在安全、公开透明、公平这些必要因素中寻找平衡才能谋求市场最大化，也即才符合Web3.0的精神。</p><blockquote><p><strong>Web3.0时代的自由与监管该如何平衡？</strong></p></blockquote><p>Web3.0的核心之一是DAO（全称是“去中心化自治组织，Decentralized Autonomous Organization”）带来的权力下放，公开透明的计算机代码是DAO的精神内核，完全受区块链保护的交易记录与程序规则是DAO的灵魂所在，一币一票完全受控于股东是DAO的最终诉求。在这些内核下，DAO成了完全自治的乌托邦代名词。但是，完全的权力下放真的能够成就Web3.0吗？</p><p>我个人对于这种方式还是持怀疑和悲观的态度，至少从目前的良好运作的社会组织结构来看，99%的决策应该来自一个有远见的领导团队、顶尖的专业团队、核心的开发社区，而不是完全的社区治理和权力下放。</p><p>此外，理想的DAO似乎并不能解决所有问题，往往在需要仲裁、追讨被盗资产等问题发生后，通过引入社会政府机构和监管机构来寻求帮助。DAO本身就有其局限性。由此我们可以设想， DAO的治理，似乎少不了现实社会监管机构的参与？监管又如何在Web3.0开放、包容、隐私和共建的背景下得到平衡呢？</p><p>总之，Web3.0带来的监管挑战无疑是巨大的，但毫无疑问，由于Web3.0应用业务模式的巨大革新，监管方式势必会产生大的变化以适应新事物的发展业态。</p><h2 id="h-web30" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Web3.0的架构</h2><p>作为用户，在互联网上使用着Web2.0或Web3.0的应用时，展现在我们眼前的往往只是应用的前端，我们似乎很难窥探到应用背后究竟是如何实现的。应用架构中的每一个组件其实都决定着应用的底层属性，若想真的理解 Web2.0 与 Web3.0 应用之间的本质差异，我们似乎可以从应用的架构入手。正好近期读到一篇a16z前合伙人写得Web3.0应用架构的文章：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application?ref=tokendaily">The Architecture of a Web 3.0 application</a>，也结合我自身的认知，想尝试着从架构层面去解剖Web3.0。</p><p>想要真正了解Web3.0的架构，我想还是需要先从Web2.0的架构开始。前面讲到Web2.0的通用架构是Client-Server模式。Client-Server模式可简单理解为互联网用户使用浏览器或客户端界面通过网络与Web server交互的模式。于是，当我们在某个网站上想写一篇博客并发布到互联网上时，你首先需要利用浏览器输入该网站的域名，并通过DNS指向真正的你想与之交互的Web server。此时你将与它的前端（Front-end）交互——在界面输入框中输入你的博客内容，前端和后端（Back-end）交互——前端在点下保存按钮后将博客内容传输至后端，后端再与它的数据库（Database）交互——后端将博客内容保存至数据库。所有这些代码都托管在中心化服务器上，并通过互联网浏览器发送给用户。这便是当今大多数Web2.0应用的基础架构：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7c70fa1963ef0d161567959e2f3565e789e87741125e9054891f3fda2d0228e5.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>现在，区块链技术为 Web 3.0 应用开启了令人兴奋的新方向，与Web2.0 应用不同，Web3.0 去除了中间层，Web server只保留了前端部分，这中间没有了中心化服务器用于存储后端逻辑，也没有了存储应用程序状态的中心化数据库，而是换成了由区块链（此处用以太坊为例）构建的去中心化的各个服务节点。更重要的是，没有单一实体控制这个去中心化的状态机，它由网络中的每个人共同维护。而我们的应用程序逻辑，则是由我们编写的智能合约来定义。 有关区块链和智能合约的更多知识，不在此展开阐述，建议感兴趣的朋友可以关注下比特币白皮书：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bitcoin.org/bitcoin.pdf">A Peer-to-Peer Electronic Cash System</a>与以太坊白皮书：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/zh/whitepaper/">Ethereum Whitepaper</a>。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/be5369203b5ed277a87cd59b4ca9feed592c4b3c8f4d694705311fde87dcc403.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>Web3.0的架构远不止如此，让我们更进一步，当Web3.0的应用程序逻辑换成了由区块链构建的去中心化的各个服务节点时，架构模型则变成了前端和区块链上的数据和代码进行交互，即意味着我们要和区块链中的某一节点进行通信。因为任何节点都可以广播在以太坊虚拟机上进行交易的请求，此时我们需要想办法部署节点。 有两种方式： 1． 自己设立一个运行以太坊程序的节点 2． 使用 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://infura.io/">Infura</a> 或者 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.alchemy.com/">Alchemy</a> 第三方提供的节点 我们默认使用第三方节点，因为它能让我们免去自己运行全节点所带来的麻烦，原因不在此展开。每个以太坊客户端（Provider）实行 JSON-RPC 规范，这确保了前端应用程序想要与区块链交互时有一组统一的方法。此时Web3.0的架构变成了下图所示：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/563a4523c11ae34bc6d8ce96fce0382c8a48056fd93499f3a86c3cb21766e76e.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><p>举个例子，假设我们运行了一个 Web3.0的应用，它可以让用户阅读或发布博客文章到区块链，同时它在前端设置了一个按钮，允许任何人查询特定用户撰写的博客文章。此时，阅读区块链中的文章并不需要我们对交易进行签名。但是，当我们想要在区块链上发布新的文章时，Web3.0应用会要求我们使用他们的私钥「签署」交易，只有这样Web3.0应用才会将交易传播到区块链上，而签署交易这个环节通常是需要使用 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://metamask.io/">Metamask（小狐狸）</a>这样的签名者工具。此时Web3.0的架构又变成了下图所示：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e28065c3c4a52779cf8155a1413e968de24dcd9a2bff958898d2e94e4df1c8e0.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>此时，我们已经在以太坊上搭建了我们的应用程序，并能够与之交互，但是有一个问题，在区块链上存储数据虽然快捷，但价格也不菲。——我们每次在以太坊上添加新数据时都要付费给维护节点的矿工。所以，如果Web3.0应用每次在用户需要添加新状态时，都要求他们支付额外费用的话，那么用户体验是极差的。为了解决这一问题，于是我们引入了使用去中心化链下存储的方案，如 IPFS 或 Swarm。关于更多的去中心化存储方案知识，建议可以直接参考<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.ipfs.io/">IPFS使用文档</a>或<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.ethswarm.org/docs/">Swarm使用文档</a>。</p><p>所以现在，有了 IPFS 或 Swarm，我们的应用架构变成了这样：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1ca35c5665773f28742153020c147c8436f77d9b374a19909e4c7d18078fdca1.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>而如果我们需要搭建一个真正的去中心化应用程序，我们同样需要把Web server中的前端代码存储在IPFS或Swarm，所以我们的应用架构又变成了这样：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7b6ee60f468133de12af03f4c0667fcf160d5b13050f3373dd0fae14f2b997cb.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>到目前为止，我们已经探讨了如何通过签署交易并将它们发送到区块链上来完成交易的写入。但从区块链上的智能合约中读取数据又该如何操作呢？这时就该让「The Graph」上场了，The Graph 是一个链下数据索引方案，可以方便我们在以太坊上查询数据。在 The Graph 中，你既可以定义哪些智能合约需要索引、哪些事件与函数调用需要监听，也可以规定如何将传入的事件转化为前端逻辑（或任何正使用 API 的程序）可处理的实体。它使用 GraphQL 作为查询语言，与传统的 REST API 相比，它能传达更多信息。</p><p>同样的关于更多的链下数据索引方案，建议可以直接参考<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://thegraph.com/docs/en/">The Graph使用文档</a>。</p><p>至此，我们的应用架构大概是这样：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/501b9430ff331cf9520405663422689c1a9a0cf07039f445d8a3004dbbfeb18a.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>我们还需要解决最后一个问题，即性能（可扩展性）问题。我们在前面章节提到，区块链因为去中心化的机制而导致处理性能下降，这必将导致用户在Web3.0应用中的体验严重降低，为了解决这个问题，我们引入的Layer 2方案，目前主流的L2方案有<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://polygon.technology/">Polygon</a>、<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/developers/docs/scaling/layer-2-rollups">Optimistic Rollups 和 zkRollups</a>等。</p><p>至于什么是Layer 2方案，简而言之，Polygon、Optimistic Rollups、zkRollups等都属于以太坊的「侧链」，而每次用户在状态变更的行为都均由「侧链」而非主链来完成，每隔一段时间，侧链就会将其最近的区块聚合起来提交给主链，即某种意义上的批量操作。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/faa2bc0871fabc2e967fa2c1f62c239f4413e50a95529da2c722e1c6c1aab671.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>于是，我们的Web3.0应用构建好了！它的最终架构长这样：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b039df958213875c2c11078cca8db78540692626f0bf7034e68ab984609c6924.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-web3" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">面向web3可能的未来</h2><p>当我在刚接触区块链技术并尝试着去理解它时，曾通过类似MetaMask的工具创建过自己的钱包，当时我的第一印象是，通过私钥和助记词的方式实在是太影响用户体验了。但如今，我似乎开始觉得影响用户体验的反而是我在Web2.0世界中时使用的每个应用都需要独立的账号体系这一设定。如果不是1password，我找回密码的邮件一定要收到成百上千次。看，Web3.0的世界似乎已开始向我招手！</p><p>但需要让我们保持清醒的是，Web3.0的世界又的确还处于萌芽阶段。—— 当前Web2.0应用的用户体验比Web3.0好太多，可谓降维打击。我个人倾向于Web3.0要想真正走向用户，一定要在界面、交互等表现形态上跟Web2.0的区别并不明显，甚至看不出什么区别。</p><p>在用户体验上除了要接近Web2.0甚至超越Web2.0外，Web3.0的未来到底又将给我们带来什么呢？我最近就这个问题与大多数已投身至Web3.0的用户或从业者做过一些探讨，他们给出的答案多数是元宇宙。但元宇宙这个概念太大了，除了用Web3.0来构建外，它还常涉猎到虚拟现实、数字孪生、硬件终端等领域，实在是超出了我的知识范畴。</p><p>为此，我仅以我的个人见识来预测一个Web3.0可能能带给我们的未来，即未来将会弱化公司、企业的概念，个人用户或创造者将隶属于某一个或多个社区并在有限的生命内为之贡献着自己的价值。</p><p>讲到这里，由衷的希望你已通过这篇文章对Web3.0的概念有了了解并甚至开始喜欢上它。如果你想作为普通用户的身份接触到Web3.0，那么去寻找并加入到你喜欢的社区吧！如果你想作为内容创作者、开发者、运营者等等身份加入到Web3.0的世界，也同样的行动起来吧！</p><p>总之，Web3.0的可能性是无穷的，而这只是开端，让我们一起向他招手，并等候着他向我们走来吧！</p>]]></content:encoded>
            <author>0xlin@newsletter.paragraph.com (0xLin)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e0d4d953eca31f498eba63fcbcc89add48bc14909c41955b6cdd438f99ffe735.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>