<?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>scriptmoney</title>
        <link>https://paragraph.com/@scriptmoney</link>
        <description>undefined</description>
        <lastBuildDate>Fri, 15 May 2026 11:46:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>scriptmoney</title>
            <url>https://storage.googleapis.com/papyrus_images/d0303b858808ecd7e226f62582c7852e766403bc447d6baf0b9c5b48aab677c4.png</url>
            <link>https://paragraph.com/@scriptmoney</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[StarkNet代码交互流程]]></title>
            <link>https://paragraph.com/@scriptmoney/starknet</link>
            <guid>RYfeOh5teZ8xMdX2wamr</guid>
            <pubDate>Mon, 29 Aug 2022 17:25:35 GMT</pubDate>
            <description><![CDATA[一些开发类的StarkNet教程教的是创建新的账户、编写新合约和测试。而本文主要介绍如何导出已有钱包账户，并和已经上线的合约进行交互。1. 初始化nile项目nile 是 StarkNet 上流行的cli开发工具，能简化流程提高效率。根据README安装后，确保输入 nile version 会显示版本号。 然后新建文件夹，输入nile init初始化项目并用nile compile编译一下示例合约。2. 导出私钥私钥可以本地生成，也可以从钱包导出，重点介绍钱包导出的私钥如何使用。下图分别是argent和braavo的导出位置。01 argent导出02 braavos导出获得私钥后，在nile init生产的项目的根目录创建一个 .env文件，设置一个变量放置私钥，比如PK1=1234，这个PK1是alias，可以设置简单一些，后面会用到。03 env然后输入nile setup PK1 --network goerli，会在测试网部署一个合约账户，同时根目录会出现一个 goerli.accounts.json ，里面包含PK1这个私钥派生出的公钥和地址。这个新生成的合约地址和...]]></description>
            <content:encoded><![CDATA[<p>一些开发类的StarkNet教程教的是创建新的账户、编写新合约和测试。而本文主要介绍如何导出已有钱包账户，并和已经上线的合约进行交互。</p><h2 id="h-1-nile" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1. 初始化nile项目</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/OpenZeppelin/nile/">nile</a> 是 StarkNet 上流行的cli开发工具，能简化流程提高效率。根据<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/OpenZeppelin/cairo-contracts">README</a>安装后，确保输入 <code>nile version</code> 会显示版本号。</p><p>然后新建文件夹，输入<code>nile init</code>初始化项目并用<code>nile compile</code>编译一下示例合约。</p><h2 id="h-2" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2. 导出私钥</h2><p>私钥可以本地生成，也可以从钱包导出，重点介绍钱包导出的私钥如何使用。下图分别是argent和braavo的导出位置。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/25dc6f7db194cf25fe99d7beeea39b220625418d07ff26718844cd9ece8bf0e7.png" alt="01 argent导出" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">01 argent导出</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/80c1709e89b6012cd198c65e663f251fa0fdc2933fdac19a235ad43a4e156d32.png" alt="02 braavos导出" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">02 braavos导出</figcaption></figure><p>获得私钥后，在nile init生产的项目的根目录创建一个 <code>.env</code>文件，设置一个变量放置私钥，比如PK1=1234，这个<strong>PK1</strong>是alias，可以设置简单一些，后面会用到。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/689d606a4e919af710b79da28bf861dc94c69e4af1d6a1be825518dd61e1f053.png" alt="03 env" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">03 env</figcaption></figure><p>然后输入<code>nile setup PK1 --network goerli</code>，会在测试网部署一个合约账户，同时根目录会出现一个 <em>goerli.accounts.json</em> ，里面包含PK1这个私钥派生出的公钥和地址。这个新生成的合约地址和之前钱包里的不一样，需<strong>手动替换</strong>成网页钱包的地址。同样还需要替换 <em>goerli.deployments.txt</em> 中的账户合约地址。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2dc532f6317902aac6e56e1289b0c9046f3d5527564a8767709c38e961a17048.png" alt="04 替换地址" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">04 替换地址</figcaption></figure><h2 id="h-3-abi" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">3. 获取目标合约abi</h2><p>打开 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://goerli.voyager.online/">voyager</a>，搜索目标合约，在<em>code</em>标签里找到abi，复制到新文件<code>artifacts/abis/[alias].json</code>下。文件名alias可以任意取。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6103983bfe83393c59ca69d255c6f2fb02ded93bcbc431b7f67c33a533cc2e22.png" alt="05 获取abi" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">05 获取abi</figcaption></figure><p>在根目录的 <em>goerli.deployments.txt</em> 下添加 <strong>合约地址:abi路径:别名</strong>，我用的是 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/starknet-edu/starknet-cairo-101">starknet-cairo-101</a> 的第1个练习，别名写的是ex01。所以 <em>goerli.deployments.txt</em> 的新增的内容是：<code>0x29e2801df18d7333da856467c79aa3eb305724db57f386e3456f85d66cbd58b:artifacts/abis/ex01.json:ex01</code></p><h2 id="h-4" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">4. 发送交易</h2><p>创建一个python脚本，一般放到scripts或tests目录下，编写<code>def run(nre)</code>方法通过<code>nile run</code>指令去执行测试脚本。</p><p>下面示例代码是让PK1这个账户去执行ex01的<code>claim_points</code>方法，没有参数。</p><blockquote><p>参数通常需要转换，建议先参考<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.openzeppelin.com/getting-started-with-openzeppelin-contracts-for-cairo/">该教程</a>。</p></blockquote><p>最后 max_fee 需要用官方cli的<code>starknet estimate_fee</code>指令去获取，可以先随意设置，如果debug报错再修改。</p><pre data-type="codeBlock" text="from nile.nre import NileRuntimeEnvironment
from nile.core.account import Account

def run(nre: NileRuntimeEnvironment):
    account: Account = nre.get_or_deploy_account(&quot;PK1&quot;)
    result = account.send(         &quot;0x29e2801df18d7333da856467c79aa3eb305724db57f386e3456f85d66cbd58b&quot;,  # 目标合约地址
        &quot;claim_points&quot;, # 方法
        [],  # 参数
        2278140156336 # max_fee
    )
    print(result)
"><code><span class="hljs-keyword">from</span> nile.nre <span class="hljs-keyword">import</span> NileRuntimeEnvironment
<span class="hljs-keyword">from</span> nile.core.account <span class="hljs-keyword">import</span> Account

<span class="hljs-keyword">def</span> <span class="hljs-title function_">run</span>(<span class="hljs-params">nre: NileRuntimeEnvironment</span>):
    account: Account = nre.get_or_deploy_account(<span class="hljs-string">"PK1"</span>)
    result = account.send(         <span class="hljs-string">"0x29e2801df18d7333da856467c79aa3eb305724db57f386e3456f85d66cbd58b"</span>,  <span class="hljs-comment"># 目标合约地址</span>
        <span class="hljs-string">"claim_points"</span>, <span class="hljs-comment"># 方法</span>
        [],  <span class="hljs-comment"># 参数</span>
        <span class="hljs-number">2278140156336</span> <span class="hljs-comment"># max_fee</span>
    )
    <span class="hljs-built_in">print</span>(result)
</code></pre><blockquote><p>如果需要通过发送交易到合约钱包去和其他合约交互，必须使用account.send方法，而不是invoke。</p></blockquote><p>输入<code>nile run tests/demo.py --network goerli</code> 会执行上面的脚本，并输出交易的hash和地址</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/781df7bb923d3631f8bb38a5a4b7cf4b4d0ad04b3977251d53451fd835f3c4e7.png" alt="06 地址和Hash" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">06 地址和Hash</figcaption></figure><p>最后用 <code>nile debug [TxHash] --network goerli</code> 去检查交易状态。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c195f0817b082190a250cfffccf7e9c8b73aa6cc0070d2ad95992a2e9fcb317e.png" alt="07 交易状态" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">07 交易状态</figcaption></figure><p>以上就是StarkNet用钱包和合约进行代码交互的流程，有疑问欢迎和我沟通，推特是 @scriptdotmoney</p>]]></content:encoded>
            <author>scriptmoney@newsletter.paragraph.com (scriptmoney)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/18165f79c6472fe1ac0b242d708a0c9a955ab8e64653a312101ff69f5f979720.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Cairo开发工具 nile 介绍]]></title>
            <link>https://paragraph.com/@scriptmoney/cairo-nile</link>
            <guid>IBpAZ8xBl4WBiPbThi8a</guid>
            <pubDate>Mon, 29 Aug 2022 14:05:48 GMT</pubDate>
            <description><![CDATA[nile 是由 OpenZeppelin 主导的开源项目，是一款开发 StarkNet 项目的 cli 工具，帮助用户编译、部署、测试，主要由 Python 编写，如果你在学习 StarkNet 开发，那么在各种教程都能见到它。nile 的安装和基本使用，参考README，链接是 https://github.com/OpenZeppelin/nile ，按着步骤一步一步走，不多做介绍。主要说一下它的功能和范围： StarkNet 有官方的 Python 库（cairo-lang），那么 cairo-nile 的作用是什么呢？经过一番使用和源码阅读，以下是我的回答：nile 有个项目模版，用户可以用nile init初始化一个Cairo的新项目，会安装最新的依赖包，初始化文件夹，提供基础合约和测试用例。用户设置别名运行了部署账户和合约命令后，都会以json的形式存储在根目录，后续无论是用指令访问，还是手动查看，都很方便。转译了常用的 starknet cli 的指令，并通过访问存储的json信息，可以简化大量的参数输入。提供run script 的功能，可以编写Python代码去...]]></description>
            <content:encoded><![CDATA[<p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/OpenZeppelin/nile">nile</a> 是由 OpenZeppelin 主导的开源项目，是一款开发 StarkNet 项目的 cli 工具，帮助用户编译、部署、测试，主要由 Python 编写，如果你在学习 StarkNet 开发，那么在各种教程都能见到它。nile 的安装和基本使用，参考README，链接是 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/OpenZeppelin/nile">https://github.com/OpenZeppelin/nile</a> ，按着步骤一步一步走，不多做介绍。主要说一下它的功能和范围：</p><p>StarkNet 有官方的 Python 库（cairo-lang），那么 cairo-nile 的作用是什么呢？经过一番使用和源码阅读，以下是我的回答：</p><ol><li><p>nile 有个项目模版，用户可以用<code>nile init</code>初始化一个Cairo的新项目，会安装最新的依赖包，初始化文件夹，提供基础合约和测试用例。</p></li><li><p>用户设置别名运行了部署账户和合约命令后，都会以json的形式存储在根目录，后续无论是用指令访问，还是手动查看，都很方便。</p></li><li><p>转译了常用的 starknet cli 的指令，并通过访问存储的json信息，可以简化大量的参数输入。</p></li><li><p>提供run script 的功能，可以编写Python代码去运行nile运行时环境暴露出来的指令。避免编写shell代码。</p></li><li><p>最新版本0.8.1提供了一些int、felt、uint256互转的一些utils函数。</p></li></ol><p>在我使用的过程中也发现了一些缺点，当然这些问题肯定会随着版本更新慢慢解决：</p><ol><li><p>缺少测试网生产环境的一些功能，比如没有 estimate_gas，需要用户手动去修改源码扩展，或者用官方的 starknet cli 的指令完成。</p></li><li><p>只支持venv环境，如果用 conda 会报错。</p></li><li><p>文档有一些缺失的部分，可以参考<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/OpenZeppelin/cairo-contracts">https://github.com/OpenZeppelin/cairo-contracts</a>会有更详细的安装说明。</p></li></ol><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">总结</h2><p>nile 是一款基本可以平替官方 starknet cli 的 cairo开发工具，能提高不少合约编写、开发、测试的效率，适合 Python 工程师使用。</p>]]></content:encoded>
            <author>scriptmoney@newsletter.paragraph.com (scriptmoney)</author>
        </item>
        <item>
            <title><![CDATA[Polynomial期权机枪池介绍]]></title>
            <link>https://paragraph.com/@scriptmoney/polynomial</link>
            <guid>1A7ulmLzxgCMFj6QcVgt</guid>
            <pubDate>Tue, 23 Aug 2022 16:30:17 GMT</pubDate>
            <description><![CDATA[Polynomial 是 Optimism 生态的一个期权机枪池(DeFi Options Vaults，DOV)项目。介绍 Polynomial 之前，首先要介绍下什么是期权。期权简介以下图期权DeFi平台 lyra 的 ETH 期权为例，假如你看多，花了 67.45U，买入1手 1600U 行权价 8月26日4PM 到期的看涨期权（Buy Call）。撰文当天是8月23日，还有3天行权。 如果到了行权日时，ETH 低于 1600U，你不会获得任何收益，净亏损购买时的 67.45U 权利金。相对的，你的对手盘，卖出看涨期权（Sell Call）的人就会赚取这 67.45U 权利金。 如果到期时 ETH 价格为 1700U ，你可以赚 100-67.45=32.55U。以此类推，到 1800U 就是 132.55U。对手盘卖方就会亏损对应金额。 图中右下角可以看到收益曲线，只要到期时ETH过了 1667.45U 的冲击价格，这笔交易就是赚钱的。lyra买方损失有限，收益可能无限。卖方的亏损可能无限，所以卖方需要抵押权利金数倍金额的保证金防止爆仓。 俗话说得好，买期权像是买彩票，花...]]></description>
            <content:encoded><![CDATA[<p>Polynomial 是 Optimism 生态的一个期权机枪池(DeFi Options Vaults，DOV)项目。介绍 Polynomial 之前，首先要介绍下什么是期权。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">期权简介</h2><p>以下图期权DeFi平台 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.lyra.finance/">lyra</a> 的 ETH 期权为例，假如你看多，花了 67.45U，买入1手 1600U 行权价 8月26日4PM 到期的看涨期权（Buy Call）。撰文当天是8月23日，还有3天行权。</p><p>如果到了行权日时，ETH 低于 1600U，你不会获得任何收益，净亏损购买时的 67.45U 权利金。相对的，你的对手盘，卖出看涨期权（Sell Call）的人就会赚取这 67.45U 权利金。</p><p>如果到期时 ETH 价格为 1700U ，你可以赚 100-67.45=32.55U。以此类推，到 1800U 就是 132.55U。对手盘卖方就会亏损对应金额。</p><p>图中右下角可以看到收益曲线，只要到期时ETH过了 1667.45U 的冲击价格，这笔交易就是赚钱的。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7587fa6e1efbd1a76174ca93742ed9cfe107deb83011072ccbb392ad8d4872d7.png" alt="lyra" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">lyra</figcaption></figure><p>买方损失有限，收益可能无限。卖方的亏损可能无限，所以卖方需要抵押权利金数倍金额的保证金防止爆仓。</p><p>俗话说得好，买期权像是买彩票，花点钱买个中大奖的可能。卖期权像是做生意，稳赚现金流。</p><p>虽然期权卖方收益有限，风险无限，但胜率高很多，而且可以通过策略对冲风险。后文会介绍机枪池采用的一些策略。</p><blockquote><p>更多期权入门建议阅读 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twisty-sign-c8b.notion.site/af443219baa74d2b9c0471f608b269a3">全聚德期权小白书</a></p></blockquote><h2 id="h-defi-dov" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">DeFi 期权机枪池（DOV）</h2><p>DeFi 期权机枪池（DOV）是指把资金存入合约后，会自动根据策略去期权平台上交易期权获利。</p><p>传统金融市场里，由于期权卖方需要占用大量资金，所以卖方通常由专业做市商和机构从事。而 DOV 的存在，让金额不多的散户也可以当卖方赚现金流。</p><p>期权价格和波动率正相关，由于加密货币波动率很大，卖期权的收益相对其他市场较高。波动最小的 BTC 年化也大于 20%，这个收益是排除掉代币激励的真实收益。</p><h2 id="h-polynomial" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Polynomial的期权策略</h2><p>结合现货和合约，期权策略有很多种，以对应不同的市场行情，理解各自的原理很重要。</p><p>Call Selling 是卖出看涨期权为主的策略。只要不遇到极端暴涨超过行权价，可以稳收权利金，币本位的数量是会一直增加的。Polynomial 的UI上做了明显提示，指出该策略 This strategy is good for: Bearish, Moderately Bullish，Not ideal for: Extremely Bullish Market。适合熊市和小牛，不适合大牛市。</p><p>界面上还能看到该Vault里有72个sETH（synthetix合成的ETH），执行了2个日期的操作，卖出了54份8月26日1800U的Call，和卖出6份9月2日的2000U的Call。操作会到期权平台 lyra 上完成。</p><p>和其他 DOV 不同，Polynomial还推出了 U本位 的 Call Selling 池子。相比E本位，如果遇到暴跌，对U计价也不会有亏损。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/eb348fd3afa863bcfb10b65503f3d9f9e408d83c90ea28c2fbf2403d8c038085.png" alt="call selling" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">call selling</figcaption></figure><p>对应的，Put Selling 池是不断卖出看跌期权赚取权利金，最不想看到的是暴跌行情。图中执行的是卖出了42手 8月26日到期 1400U 看跌期权，保证金质押了 58800 sUSD。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4faf5d53dc8921c1cfc88e127816abb8524399eca7a0685fef1fc3a912ee10ce.png" alt="put selling" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">put selling</figcaption></figure><p>另外 Polynomial 即将推出的新池子Gamma Vault，<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://degenscore.com/cafe?opportunity=polynomial">degenscore</a> 超过450分可以加入白名单。是通过买入看涨期权并做空期货，实现暴涨暴跌都能赚钱的策略，但横盘会亏损。具体可见<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/0xf3897707d8Fa5dC27b2A6575319e409a464eB8D8/QttnsvjS3JM__pJzT602iwOF0mZZ8PCeSiM3OQvYlj8">Introducing the Gamma Vault</a>。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7381934ccab6049612e35b9de1f948a467d9f8dacac239b61c444b86b47ce054.png" alt="gamma" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">gamma</figcaption></figure><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">相似产品对比</h2><p>几个 DOV 产品，Polynomial、Opyn的Crab、StakeDAO、Thetanuts、Ribbon，我多少都存有一些资金。说一下各自特点：</p><p>Polynomial 是其中界面做得最好的，手续费最低，即将出的gamma池很期待。没发币。</p><p>Opyn 的 Crab 名气最大，放开上限会很快抢完。Crab 策略是做空波动率的策略，横盘赚钱，其他平台没有该策略。没发币。</p><p>StakeDAO 目前是锁仓状态，而且收益较低，有特色的是提供了一个黑天鹅保护的ETH策略。已发币。</p><p>Thetanuts 有很多山寨币，收益会更高。并且提供了存 USDC 购买一篮子的 Put Selling 以降低单币黑天鹅的风险。未发币。</p><p>Ribbon 是最早代币治理的老项目，经常能在 layer3 上看到，部分山寨币收益高。已发币。</p><p>另外还有一些 Solana 和 Polygon 上的 DOV 没有尝试过就不介绍了。</p><p>总之，没发币的上述平台都建议试一下，但是为了防范风险，不要存太多币进去。目前最看好的是 Polynomial。</p>]]></content:encoded>
            <author>scriptmoney@newsletter.paragraph.com (scriptmoney)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e267b7eea97ff8c806f5429a57f56b6c38e51d2e3c64229ba1e471ad708e2a63.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Solve2Mint玩法解析]]></title>
            <link>https://paragraph.com/@scriptmoney/solve2mint</link>
            <guid>zgHxLele4nHDKDLaAB5y</guid>
            <pubDate>Fri, 05 Aug 2022 11:30:12 GMT</pubDate>
            <description><![CDATA[ISSAC是 @topology_gg 在StarkNet上开发的链游，他们开发了一个谜题，共50道题，成功解密的50个地址获得ISSAC alpha测试的白名单。目前名额已满，但解密过程挺有趣，于是写这篇文章介绍下规则。 进入 s2m2 的网站(https://s2m2.netlify.app)，先连上 StarkNet 的钱包，在后边选择题目，然后在 8x8 的网格画线形成路径，最后点 let&apos;s go 发送交易。所有规则和逻辑都写到了合约里： https://github.com/topology-gg/s2m2/blob/main/contracts/s2m2.cairo 规则如下，路径闭环无重复经过的格子方形点满足所有方形点规则（必须是转角，且不和另一个转角相邻）圆形点满足所有圆形点规则（必须是由直线穿过，且相邻至少有一个转角）路径经过所有的方形和圆形点看懂规则可以自己去尝试了，有点像玩数独，过程挺有趣。 搞不定的可以看看下面第一题的解答过程。 圆形需要直线穿过，以44为例，可能是垂直或水平，不确定或者不合法的用虚线标注。而处于边缘的 3 8 47 61 已经...]]></description>
            <content:encoded><![CDATA[<p>ISSAC是 @topology_gg 在StarkNet上开发的链游，他们开发了一个谜题，共50道题，成功解密的50个地址获得ISSAC alpha测试的白名单。目前名额已满，但解密过程挺有趣，于是写这篇文章介绍下规则。</p><p>进入 s2m2 的网站(<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://s2m2.netlify.app">https://s2m2.netlify.app</a>)，先连上 StarkNet 的钱包，在后边选择题目，然后在 8x8 的网格画线形成路径，最后点 let&apos;s go 发送交易。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1fe9e312401c83c95c94b04c2c42b29d9ad28734bf526e8aadbd648707a8f1c5.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><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/topology-gg/s2m2/blob/main/contracts/s2m2.cairo">https://github.com/topology-gg/s2m2/blob/main/contracts/s2m2.cairo</a></p><p>规则如下，</p><ol><li><p>路径闭环</p></li><li><p>无重复经过的格子</p></li><li><p>方形点满足所有方形点规则（必须是转角，且不和另一个转角相邻）</p></li><li><p>圆形点满足所有圆形点规则（必须是由直线穿过，且相邻至少有一个转角）</p></li><li><p>路径经过所有的方形和圆形点</p></li></ol><p>看懂规则可以自己去尝试了，有点像玩数独，过程挺有趣。</p><p>搞不定的可以看看下面第一题的解答过程。</p><p>圆形需要直线穿过，以44为例，可能是垂直或水平，不确定或者不合法的用虚线标注。而处于边缘的 3 8 47 61 已经可以确定，用实线标注。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/669fb2fe97f4ee594e57dfea4147cbcd6a41194140ff378e58b117d4d9337ad5.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>圆点相邻至少有一个转角，所以如下图的 50→60→61→62→63 是不合法的。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/fb6a25c3a5881180ef4e8fd97652e524fd5ab9e10a4862f5ef110d999272031a.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>方形不和另一个转角相邻，所以如下图 40→48→49 的虚线是不合法的。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6fb95594225202df14f247e0c628d732868f6f54d0692f20e3393e08d4fb1c39.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>也就得知方形必须和2格的直线形成直角，对于边缘的方形，如下图，要么是24→32→40→41→42，要么是56→48→40→41→42，所以40→41→42可以确定。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/baa0ca601398147517c46f6bd1f6636446a7fbcee5fae68f5214b11fc829d7b3.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>同理，处于边缘内一环的方形也可以至少确定一条边的路径。如下图22→23不合法，20→21→22是确定的。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4d9cabfd8fd2fd85ea270ea6bee20e3d1ace4708e9c2ff6ad64009f67faf634d.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>根据无重复经过的格子规则，下图的33→41→49不合法。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ff6df192b3ab0a40aa03d1c20c17ab2385d03319002ac663256e50a2fb84acb4.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>根据上面的推导，可以把部分路径确定并标注。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/84bc6fce07e00b6d1ad2ab25754f819c46b20a623383a6506cc4f2272f726896.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>根据路径闭环规则，下图中的绿线们是唯一路径，所以也可以确定。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7ddb21225ddcf4274668a4048aadeb63a2107355eca3e2bd4e52244f23214376.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>接下来不能直接得到结论，可以用假设法。假设44是水平连线，就只考虑下半区，很容易得到以下唯一路径，但这样61就不合法，所以44只能是垂直。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7d5eaf5c7de36ea5cbc1fc7790951db98a96e68e30c5a821aaffd9a79683db06.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>同理，假设 27→35 是正解，那左上角必然不会形成闭环。所以35→43才是正解，然后就可推导出更多的路径。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8dfd9b2e86527ce0db0db64fbccf80a412a6431810db9256b4a39b8483b066ba.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>最后部分很容易就能补全</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/03335dfdfa15e7abcb99996753ae2357921c10e91a566af3ec6f6d74e89c1894.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>有兴趣的可以玩玩其他题目。</p>]]></content:encoded>
            <author>scriptmoney@newsletter.paragraph.com (scriptmoney)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/fa9c078d27ad1530aa438a817f559fbef33ab4dfb15a348295d573963f13388f.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[关于 STEPN 正向外部性的思考]]></title>
            <link>https://paragraph.com/@scriptmoney/stepn</link>
            <guid>GQ343m2RCQB0Y7klrSNn</guid>
            <pubDate>Sat, 07 May 2022 11:26:46 GMT</pubDate>
            <description><![CDATA[原 Multicoin 的 @Mable_Jiang 今天加入了 STEPN 团队，发了一个 thread 讲述 STEPN 的未来发展。 她提到了需要引入「正向经济外部性」，并提供让社区成员通过证明在 App 中的活动来赚钱的便利。 「外部性」在《经济学原理：微观经济学分册》的原话是「当一个人从事一种影响旁观者福利并对这种影响既不付报酬又不得报酬的活动时，就产生了外部性」。 Mable 提出的解决方法是扩展合作，比如运动品牌、碳中和组织、本地商家，把外部收入引入给 App 的用户，同时让社区成员选择和哪些组织合作。 A&T Capital 的 @Jun_Yu 也发过关于 STEPN 正向外部性的内容，表示 STEPN 目前还缺少正向外部性，只是在修改规则维持庞氏经济。 作为一名高投入玩家（400km+里程，1蓝2绿30+灰，拉了一些家人和好朋友一起玩），我认为 STEPN 已经具有很强的正向外部性。除了获得更强的心肺功能，通过 STEPN，我部分家人朋友的关系得到了很大改善。 根据经济学原理，如果物品存在正向外部性，那最优价格大于均衡价格，也就是说鞋子贵一些或者收益低一些是可以...]]></description>
            <content:encoded><![CDATA[<p>原 Multicoin 的 @Mable_Jiang 今天加入了 STEPN 团队，发了一个 thread 讲述 STEPN 的未来发展。</p><p>她提到了需要引入「正向经济外部性」，并提供让社区成员通过证明在 App 中的活动来赚钱的便利。</p><p>「外部性」在《经济学原理：微观经济学分册》的原话是「当一个人从事一种影响旁观者福利并对这种影响既不付报酬又不得报酬的活动时，就产生了外部性」。</p><p>Mable 提出的解决方法是扩展合作，比如运动品牌、碳中和组织、本地商家，把外部收入引入给 App 的用户，同时让社区成员选择和哪些组织合作。</p><p>A&amp;T Capital 的 @Jun_Yu 也发过关于 STEPN 正向外部性的内容，表示 STEPN 目前还缺少正向外部性，只是在修改规则维持庞氏经济。</p><p>作为一名高投入玩家（400km+里程，1蓝2绿30+灰，拉了一些家人和好朋友一起玩），我认为 STEPN 已经具有很强的正向外部性。除了获得更强的心肺功能，通过 STEPN，我部分家人朋友的关系得到了很大改善。</p><p>根据经济学原理，如果物品存在正向外部性，那最优价格大于均衡价格，也就是说鞋子贵一些或者收益低一些是可以接受的，不可能会像反对者所说币价下跌就很快进入死亡螺旋。这是一般的打金 GameFi 项目不具备的特性。</p><p>虽然目前 STEPN 高收益是高投入玩家贴钱给单灰玩家，但 STEPN 目标是向社交平台发展，会获得更多的正向外部性，从而发展得更久。长远来看，高投入玩家也会获得更多的收益，例如空投和社交货币。</p>]]></content:encoded>
            <author>scriptmoney@newsletter.paragraph.com (scriptmoney)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/fde6e72a023ef77211299d53e94c34b32f7df26b49f4d3d07e7ac6deefa73d72.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[程序员入坑Web3学习路径]]></title>
            <link>https://paragraph.com/@scriptmoney/web3-2</link>
            <guid>VkBJecnIQFoaZ3CGy13p</guid>
            <pubDate>Mon, 13 Dec 2021 00:39:11 GMT</pubDate>
            <description><![CDATA[今天有网友咨询我，他在大厂干成了 996，想通过换道区块链这个行业里，让自己以后的工作空间和时间更自由一些，问我怎么切入。和他聊了一些经验，趁灵感写成文章。 作为 coder，有四个比较明显的发展流派，分别是开发者、科学家、教育者、黑客。 当然可以参加多个方向，例如我，除了黑客都干过。早期写技术文章组建社区、中期上自动化分析脚本玩 nbatopshot 和 bitclout，目前正在打黑客松，所以我的经验之谈是有一定立场的。 首先，不管做哪一块，都要懂基础。小狐狸的母公司 Consensys 在他的bootcamp-basic-training列了 5 项技能，Unix/Linux+命令行+编辑器+Git+JavaScript，再加上英语阅读，这 6 项我认为不仅是程序员，一般玩家最好也能学习掌握。开发者开发者主要是开发项目，想要获得收入，你可以参加黑客松比赛赚奖金，可以去接 Gitcoin 开发的赏金，可以参加别的项目开发，可以拿公共产品的捐赠甚至机构投资。 当开发的优势是复利明显，潜力巨大。复利包括技术积累和个人影响力。随着技术积累加深，写新项目会越来越快；有一定的成果，别人...]]></description>
            <content:encoded><![CDATA[<p>今天有网友咨询我，他在大厂干成了 996，想通过换道区块链这个行业里，让自己以后的工作空间和时间更自由一些，问我怎么切入。和他聊了一些经验，趁灵感写成文章。</p><p>作为 coder，有四个比较明显的发展流派，分别是开发者、科学家、教育者、黑客。</p><p>当然可以参加多个方向，例如我，除了黑客都干过。早期写技术文章组建社区、中期上自动化分析脚本玩 nbatopshot 和 bitclout，目前正在打黑客松，所以我的经验之谈是有一定立场的。</p><p>首先，不管做哪一块，都要懂基础。小狐狸的母公司 Consensys 在他的<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://courses.consensys.net/courses/bootcamp-basic-training">bootcamp-basic-training</a>列了 5 项技能，Unix/Linux+命令行+编辑器+Git+JavaScript，再加上英语阅读，这 6 项我认为不仅是程序员，一般玩家最好也能学习掌握。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">开发者</h2><p>开发者主要是开发项目，想要获得收入，你可以参加黑客松比赛赚奖金，可以去接 Gitcoin 开发的赏金，可以参加别的项目开发，可以拿公共产品的捐赠甚至机构投资。</p><p>当开发的优势是复利明显，潜力巨大。复利包括技术积累和个人影响力。随着技术积累加深，写新项目会越来越快；有一定的成果，别人信任你并找你合作。Uniswap 的创始人当初一个人完成了第一版的开发，后续变成了最重要的 DeFi 之一。</p><p>缺点是短期赚钱少，周期长。比赛的赏金一般就几千刀，如果能做成项目，收获的时间也很长，需要投资方的哺育。</p><p>开发所需要的技能和传统的互联网开发类似。包括不限于产品设计、前端开发、后端开发、测试、运维。</p><p>做产品设计的需要对行业和用户有很深的理解，这其实和传统行业的产品经理一样。不同的是大部分厉害的产品都是由开发者设计的。</p><p>前端开发和界面设计很重要，前端是否美观流畅直接影响项目的好坏。React 是主流，Typescript 比 Javascript 好用，原生移动端的需求很少。前端工程师可以不懂合约，但要知道如何接入和调用。</p><p>后端很大一部分功能由合约所替代了，常见的合约开发者多是服务端工程师转过去的。不同链的合约所用的开发语言不同，最常见以太坊的 solidity 是要会的。rust 是第二大合约语言，很多新公链的合约是用 rust 编写。有的公链的合约语言是全新的编程语言，需要一定的学习成本。</p><p>测试所需技能和传统行业类似。不同的是，合约测试和审计比较吃香，可以去相关机构打工，也可以接测试的赏金。</p><p>运维干得多是节点运维，云服务的很少。同样有很多活动赏金可以做。</p><p>我认为，当开发者是程序员入坑最好的选择，对于熟悉行业、发展自身很有帮助，切换过渡难度不大。</p><p>相关学习资料很多，推荐 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://learn.figment.io/tutorials">figment</a> 和 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.alchemy.com/alchemy/tutorials/">alchemy</a>。</p><p>我维护了一个「web3 for BUIDL」的推特列表，推荐关注 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/i/lists/1398817010012725249">https://twitter.com/i/lists/1398817010012725249</a></p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">科学家</h2><p>科学家是圈内对「用代码和区块链直接交互的玩家」的称呼。区块链可以看作一个公开的数据库，一般用户是通过界面交互，科学家通过合约，类似传统互联网产品直接调 API，看起来很高级，所以被称为科学家。</p><p>科学家赚钱方式五花八门，核心就是利用「毫秒级速度」+「不停机」+「规模化」赚取新项目上一般用户手动能赚取的 N 倍收益。例如上新币的打新和自动打金。</p><p>当科学家的好处是短期赚钱效应很强，几分钟赚 5 位数以上是常事。</p><p>缺点是需要很短时间肝出能用的代码，对执行力要求非常高。另外收益和风险对等，可能一个小数点没输对就亏不少钱，需要很小心。</p><p>当科学家所需技能之前有做过总结：</p><ul><li><p>刷钱初级（玩新项目混奖励和空投）：配置开发环境、基础编程知识、养多个账号</p></li><li><p>刷钱中级（开 N 个号刷一个项目）：合约接口调用、接 IP 池、接短信、web 自动化</p></li><li><p>刷钱高级（hack 机制并写套利机器人）：数据库、数据分析、消息队列、容器化、日志</p></li></ul><p>当科学家不需要很懂合约，但是基本的要能看懂，知道如何用顺手的编程语言去调用。最主要工作在于优化程序的速度、算法、稳定性。</p><p>另外做量化交易的也可以归为高级科学家，但不同的是量化交易只需要优化一个系统，不需要看很多新项目。</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>优点是信息优势，打造优质信息网是很重要但被大多数人忽略的技能，特别在 Web3 世界。你一个人是无法关注所有领域的，但只要你占住一个领域，优质的人和信息就会向你靠近。</p><p>缺点就是累，写文章需要找素材和灵感，跟项目需要做好整理，运营社区需要大量精力。</p><p>所需要的技能主要是写作或者做视频，研修下心理学、说服、运营也很有帮助。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">黑客</h2><p>黑客赚钱的方式也很多，不做展开也不建议，玩一段时间被坑一次就懂了。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">总结</h2><p>发展路线可以根据自己情况做选择：</p><p>因为我对赚钱兴趣不大，而创造需求较强，所以我目前是作为开发者在 Flow 链上创建社区项目。平时会参与下新项目，但不会上科学家手段。预计明年会针对技术类项目再做一轮研究和宣传。</p><p>对于没啥经验的 coder，建议朝开发者发展，在有一定积累后，尝试下另外的角色。</p><p>最后打个广告，如果想加入我的技术社区，可以在 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/crypto-chasers/builder-register">https://github.com/crypto-chasers/builder-register</a> 提交 pull request，我审核后拉群。</p>]]></content:encoded>
            <author>scriptmoney@newsletter.paragraph.com (scriptmoney)</author>
        </item>
        <item>
            <title><![CDATA[Web3 程序员的“道法术器”]]></title>
            <link>https://paragraph.com/@scriptmoney/web3</link>
            <guid>MuPIKuCKUsPQJRmbZ9nV</guid>
            <pubDate>Mon, 13 Dec 2021 00:37:44 GMT</pubDate>
            <description><![CDATA[本文素材来源于CryptoChasers技术社区从 2021 年 5 月底到 12 月初的群聊记录，经过整理编辑后，分为“道、法、术、器” 四大部分。适合新进社区的成员阅读，用于补全知识。问答组成的段落开头的 Q: 是提问，A: 是回答。一、道“道”是指遵循事物的发展规律，确定自身的发展方向、愿景和战略。 程序员在 Crypto 发展的方向有多个，推荐新入行的程序员阅读「 程序员入坑 Web3 学习路径」 https://mirror.xyz/scriptmoney.eth/H2vA62y8O7YirC2UQStGmsVb5YqjuZ1JpDW4-dvw4To程序员在币圈可以做的事情Q: 这边有一些给对币圈接触不深的程序员，你能说下你的建议吗？ A: 币圈目前的状态， 有点像早期互联网。 就很缺开发，但凡会点技术，一周赚的比你一个月工资多，适合不想当打工人的朋友尝试。炒币适合日常搞搞， 但是做 builder 真心舒服。 目前应该还不算内卷。各种生态，各种项目方， 各种链，基础设施，都在吸引开发者去搞东西。让你帮忙给测个节点，部署一下环境，给你打个几千$。开发的有门槛，做起来也好...]]></description>
            <content:encoded><![CDATA[<p>本文素材来源于<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/crypto-chasers/builder-register">CryptoChasers</a>技术社区从 2021 年 5 月底到 12 月初的群聊记录，经过整理编辑后，分为“道、法、术、器” 四大部分。适合新进社区的成员阅读，用于补全知识。</p><blockquote><p>问答组成的段落开头的 Q: 是提问，A: 是回答。</p></blockquote><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">一、道</h2><p>“道”是指遵循事物的发展规律，确定自身的发展方向、愿景和战略。</p><p>程序员在 Crypto 发展的方向有多个，推荐新入行的程序员阅读<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/scriptmoney.eth/H2vA62y8O7YirC2UQStGmsVb5YqjuZ1JpDW4-dvw4To">「 程序员入坑 Web3 学习路径」</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/scriptmoney.eth/H2vA62y8O7YirC2UQStGmsVb5YqjuZ1JpDW4-dvw4To">https://mirror.xyz/scriptmoney.eth/H2vA62y8O7YirC2UQStGmsVb5YqjuZ1JpDW4-dvw4To</a></p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">程序员在币圈可以做的事情</h3><p>Q: 这边有一些给对币圈接触不深的程序员，你能说下你的建议吗？</p><p>A: 币圈目前的状态， 有点像早期互联网。 就很缺开发，但凡会点技术，一周赚的比你一个月工资多，适合不想当打工人的朋友尝试。炒币适合日常搞搞， 但是做 builder 真心舒服。 目前应该还不算内卷。各种生态，各种项目方， 各种链，基础设施，都在吸引开发者去搞东西。让你帮忙给测个节点，部署一下环境，给你打个几千$。开发的有门槛，做起来也好玩，更适合有技术的参加。正经生态的中长期，能组队 build 起来，也挺好的。而且搞搞开发对自己积累也有好处 。所以平时还是要多刷刷 github 的 commit，早先也有项目对 github 开发者空投的。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">开发入门实践建议</h3><p>Q: 能给还不是码农的门外汉指一条入门的学习路径吗?</p><p>A: 推荐 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.alchemy.com/alchemy/tutorials/demo-app">alchemy 的教程</a></p><p>A: 可以先跟着 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hardhat.org/">hardhat</a> 的官方教程部署一个合约体验一下。</p><p>A: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://cw.hubwiz.com/card/c/web3j/1/1/1/">web3j(JAVA 库)</a> 有一些简单的接口，solidity 和 web3j 可以一起学习</p><p>A: 去 fork ETH 的链上，利用 ETH 生态完善的工具链，去开发项目。对于刚刚接触区块链的开发者来说还是很有锻炼机会的。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">黑客松</h3><p>Q: 想问组队做项目，是一般去 hackathon 还是什么渠道？目前大家都在做什么项目</p><p>A: 黑客松有好多，但写黑客松一个月的奖励还不如一笔交易。大家没啥心思做黑客松，估计熊市做项目的就多了。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">科学家赚钱</h3><p>要想在币圈用代码开挂赚钱，首先你得是个币圈的资深老韭菜，要对币圈热点风向有足够的把握，对各种币圈能让你亏钱的骗术了如指掌，能快速收集信息情报并做筛选过滤，能有足够的远见和风险意识，而不是看着币圈的暴富神话。传统企业程序员明明都不了解币圈的玩法，就贸然进入做发财美梦。你的代码只是让你比别的老韭菜胜率增大些的工具，而不是对币圈啥都不懂人的傻瓜式赚钱工具。</p><p>赚钱的机会稍纵即逝。 币圈要想通过技术赚钱，一定需要深厚的技术积累，看到好项目好机会，立马动身研究写代码，给你的时间可能都没有十来分钟，搞定了就是波大的。</p><p>固定模式的不一定赚钱，一般都是新发现的，从未有人涉猎的才赚大钱。</p><p>通过技术开挂赚钱要基于目前行情好的基础上才能展开，去年的时候真的是遍地黄金，只要你稍微会点代码都能赚不少。今年感觉就非常内卷，但是今年也不是说没有赚钱的路子，只是可能金钱的门槛变高了不少，现在光有技术已经没啥用了，还得要有钱。去年才是真正用技术以小博大，一波发家致富的好时机。</p><p>一定要善于学习，不断发现新东西。核心是要一直保持关注，不要幻想莫名冲一个项目就致富这件事</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">信息</h3><p>当科学家冲新，信息很重要，信息是关键，技术只是扩大你的收入。</p><p>多关注推特和 discord，一般新的项目都是这两者比较多。</p><p>还有多关注链上数据的挖掘，例如 3ac，a16 那些鼎鼎大名的机构的钱包。</p><p>一天抽时间研究 5 个项目，好的就加入社区跟踪起来，干一个月应该上道了。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">找现成代码</h3><p>有些程序员是真的勤快，代码都给你写好开源在 gayhub 了</p><p>有时候把项目的合约直接丢 gayhub 里面搜，就可以看到很多现成的代码</p><p>拿来用吧，省得自己麻烦了，反正都是程序员，代码大家都看得懂，也不怕后门</p><p>想赚钱一定不要有技术偏见和倔强，有些程序员会有代码洁癖，不喜欢用别人的代码，觉得很 low，非要自己写，想显示自己技术强，大可不必，等你写好，可能行情都过去了，时间就是金钱，必须要迅速</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">打工</h3><p>而且币圈赚钱是有正反馈的，一旦你抓住了一波，后面就会越来越顺，你想啊，你抓住了一波，有资金了，以后资金对你而言也没有门槛了，然后你又自由离职了，时间也充裕了，就会有越来越多时间抓住一些机会</p><p>打工影响暴富</p><p>要是还在 996 上班，又没钱的，今年怕是抓不到暴富机会了</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">薅羊毛</h3><p>得跟着行情来，牛市就好好看项目炒币，什么在热点风口上就炒哪个，撸毛做项目钻研技术适合熊市干。</p><p>这个市场每年都会有很多人进来也有很多人出局，能熬下来，在熊市静静撸毛的，都暴富了。</p><p>我的逻辑是，撸毛我也会撸，但是我一定会避开内卷大军，会内卷的毛一定没有撸的价值，行情不好的时候，很多人离场，才是去发现好项目撸毛好机会。</p><h3 id="h-gamefi" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">gamefi</h3><p>gamefi 要看团队还有经济模型，要是经常修改规则，国人团队的，直接略过，然后看经济模型，有消耗，有赌博，币本位，这种能稍微玩久些。国人的也不一定垃圾，国人的项目可以买币做波段，但不适合去玩游戏</p><p>gamefi，你主要要问清楚，你赚的钱到底是谁的钱。如果大家都在想几天回本的事，那结果就是几天就崩</p><p>gamefi 经济模型都已经升级过好几轮了，现在金本位的我已经几乎不看了，金本位的游戏可以买币做波段，一般币价容易涨，但是玩游戏的话就容易被坑。金本位目前已经好多游戏证明是长久不了的</p><p>在 gamefi 崩盘前，再好的画质都不顶用</p><p>头部 gamefi 还是值得去玩一玩</p><h3 id="h-nft" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">NFT</h3><p>不要只会闭门搞技术，nft，我记得是今年 7 月份开始火的，那时候才是最好的时候，随便 mint 都能赚好几倍，那时候都没多少科学家搞 nft 的 mint，很多人连 flashbot 都不会用，每天就推特、discord 找最新最火的 nft 项目，轻轻松松获利</p><p>而现在，nft 都已经凉了好久了，我认为现在 nft 并不是赚钱的好领域，现在整体行情都不太行。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">当黑客</h3><p>能有做黑客的能力，还不如发跟热点发仿盘项目，不 rug，做出来给市场玩</p><p>可以匿名发仿盘项目。一般区块链项目，大家都能同意项目方（开发者）自己保留一部分额度</p><p>做黑客的话，不要以为简单，数额太小你看不上，数额太大怕你洗不走</p><p>不要以为 tornado 这种完全可以匿名，你数额小的话还好，数额大的话，根据一些特征还有最终流入地址可以大致跟踪出来的</p><p>之前慢雾抓到个从 tornado 跑走的黑客</p><p>数额如果巨大的话，通过多方合作还有不少方法可以找到人的，比如查看黑客使用的地址之前是否有 ip 登陆 etheraacn 查询过</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">二、法</h2><p>“法“是指策划制定符合事物规律、规避风险和实现愿景的目标、方法、方案、行动路线</p><p>程序员可以通过编写代码，跳过前端页面，设计规则，直接和区块链进行交互，来达成想要的结果。社区对不同场景进行过讨论，总结如下，部分需要有一定的背景知识才能读懂。</p><h3 id="h-web" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">web 风控</h3><p>web 风控有查 IP、设备指纹算法、CloudFlare</p><p>一般的买节点然后换换 IP 就可以。也可以接第三方的 IP 库。为了获取过风控接口数据，可以用那种垃圾的海量 IP。为了长期使用来维护账号的固定 IP，舍得花钱的话就 luminati 租，911 和 s5 也可以，每个月几刀。</p><p>过设备指纹算法，简单的可以用 chrome 自带的多 profile，可以隔离 cookie，但还是有被检测到的可能。专业的可以用指纹浏览器，每个配置指向不同的代理端口。</p><p>CloudFlare 的风控可以使用 CloudFlare 自家的 pages 服务，用自己家的矛戳自己家的盾。用 Pages 代理走一成流量。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">养多号</h3><p>养号的原因是，很容易被风控，要求认证手机号，而且 GV 这种号还不行</p><p>注册：Discord 可以用 Gmail 注册，推特可以用 GV。用接码平台容易被人改绑，不靠谱。也可以直接去淘宝买海外电话卡来注册。可以尝试的还有移和多号、无忧行香港号、无忧行 app、易博通、腾讯微小号等。GitHub 上还有批量注册 Discord 的代码可以参考。</p><p>操作：可以用 chrome 分身并写代码把类似 canvas 的特征去掉，或者直接用指纹浏览器。然后用 playwright 或 selenium 来群控，也可以直接抓 Discord 的接口发消息。无法技术解决的可以花几百块钱找大学生来点。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">签名</h3><p>Metamask 弹出的签名，除了模拟点击，也可以直接用 web3 的 签名方法去签名然后 Post</p><p>签名的内容，推荐直接去 Dapp 的源码里面去拿，或者把页面下载下来去查找。</p><p>签名的算法有多种，需看看小狐狸文档。</p><p>Post 的目标地址，如果开源就直接去源码找。如果没有源码，可以在扩展插件里找到 metamask，有个查看视图 background.html，会出来个开发者工具，里面就是 metamask 的请求。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">监听</h3><p>监听可以用来判断是否有合约创建，添加了流动池，或者交易跟单。</p><p>监听事件可以用 etherscan/bscscan API，但是有频率限制。</p><p>监听 mempool，公共 RPC 都不提供内存池，得自建。也可以用 blocknative 的服务，但是贵</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">查历史记录</h3><p>历史记录主要用来做数据分析</p><p>可以用 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://graphql.bitquery.io/ide/xhpalmYmQW">bitquery</a> 按条件查询</p><p>可以自建节点查询。以太坊节点拿双核 4G 机器都能跑，对于 bsc 不推荐自建，tps 比较高处理不过来</p><p>tokenview 在卖多链的全套服务，价格不便宜，适合后端使用，并且自己还要做缓存</p><p>相比 etherscan、 bscscan 的会员，不如买 nansen</p><h3 id="h-key" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">白嫖 Key</h3><p>infura 有限制，但可以白嫖，有几种方法</p><ol><li><p>去 Github 一搜一大堆，用别人的</p></li><li><p>那 zapper 或者小狐狸的 infura</p></li><li><p>自己多申请一些做轮询</p></li></ol><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">抢购</h3><p>讨论过两种抢购，一种是商品上架抢购，一种是合约写好时间的申购</p><p>对于商品上架抢购：挂单和扫货可以在一个区块，一般都是相同 gas 做，但是不一定中，可能会排在挂单前面，而且需要节点速度快。通常是在后一个区块拼竞价。选用哪种方法主要看实际情况，比如是否有同行竞争。</p><p>对于合约写好时间的申购：建议提前几秒一直发送交易，手动做 nonce +1，浪费点 gas 可以保证每个区块都能挤进去。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">闪电贷</h3><p>闪电贷只是指最终实施时候用到了闪电贷，但是攻击本质还是合约有漏洞，有利可图。难点是挖掘这种攻击机会</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.quicknode.com/guides/defi/how-to-make-a-flash-loan-using-aave">闪电贷套利</a>的例子，有兴趣可以在测试网上玩玩</p><p>另一个<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.infura.io/build-a-flash-loan-arbitrage-bot-on-infura-part-i/">闪电贷套利的教程</a></p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">碰撞私钥</h3><p>从数学上来说很难，像在海滩上找沙粒</p><p>从人入手最简单，比如监控手机钱包剪切板之类的</p><p>碰 bip39 或 bip44 里常用单词的助记词更靠谱一些</p><p>有碰私钥的计算能力，直接挖矿保证赚更多</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">随机数漏洞</h3><p>扳手腕之前有随机数 bug，开卡随机数是用的当前区块信息，如果用合约去执行开卡，如果根据当前区块信息计算出来的卡不是高星的，直接中断后续代码执行。后来采取了发 nft 不在同一个区的方案，避免了这个 bug</p><p>主网的狼羊游戏之前也有过随机数漏洞。可以通过 flashbots 去 mint 然后 stake，如果 mint 出来不是指定的动物，stake 就会失败，两笔交易就会一起失败。只有主网的游戏才能用这个方法</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">私钥救援</h3><p>群里出现过两次私钥泄露，一次是在 GitHub 上传了私钥，另一次是用了 Dapp 网站生成的公私对</p><p>私钥被泄露后，转进去的 ETH 和其他有价值的币马上就会被清道夫转走</p><p>黑客使用了 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.uniswap.org/protocol/reference/periphery/interfaces/IERC721Permit">Permit</a> 来授权，并用 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/flashbots/searcher-sponsored-tx">flashbots</a> 代付手续费打包交易，转移了 UniV3 NFT 资产</p><p>后来社区成员在 ENS 和 PSP 发空投时，通过 flashbots 在同一区块里领取空投并马上转移，拯救了被泄露私钥钱包的空投。 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/script-money/ens-claim-flashbot-example">参考代码</a></p><p>私钥上传时一定要注意放在 .env 中。如果是 vps 上跑程序，不要用明文的私钥，自己设计个复杂的加解密的算法。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">三、术</h2><p>具体策划制定具体实施的技术层面的方法、技巧，以有效的做好每一件事</p><p>大多数的问题可以通过谷歌和文档找到，少数问题不好找，需要一定的技巧和经验。这部分可以大概看一下，遇到相似问题就有思路解决。</p><h3 id="h-input-data" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">解析交易 Input Data</h3><p>对于没有开源的合约，需要自己手动解析 Input Data。</p><p>比如这样一段的 data：<em>0xa9059cbb000000000000000000000000b8790157b2e27f2a81d3ca72752fd1a46b87c9940000000000000000000000000000000000000000000000000000000000000001</em> 进行拆分，前面 4 字节（除去 0x）是方法，后面 32 字节，32 字节这样拆 拆开就是： _0xa9059cbb（MethodID）</p><p>0xa9059cbb（MethodID）这个方法是什么，可以无视，能直接复用就行，直接看后边猜猜是什么。也可以搜索一下类似的，现在几乎没原创合约。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://script.money/post/033-web3_coder_dfsq/000000000000000000000000b8790157b2e27f2a81d3ca72752fd1a46b87c994"><em>0</em></a><em>:000000000000000000000000b8790157b2e27f2a81d3ca72752fd1a46b87c994</em> 这个一看就知道，是个地址 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://script.money/post/033-web3_coder_dfsq/0000000000000000000000000000000000000000000000000000000000000001_"><em>1</em></a><em>:0000000000000000000000000000000000000000000000000000000000000001</em> 这个靠经验看，就是 16 进制的数量了</p><p>只要有网站，就能拿到 abi，拿到 abi 后用函数加上入参类型，sha3 哈希下，前四个字节就是调用的函数</p><p>方法名和参数，小狐狸发送交易的时候也会有提示</p><p>实在找不到，调用的时候方法名可以直接写 0xa9059cbb 也可以</p><blockquote><p>更详细的可参考<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.163.com/dy/article/GMBJHUQB0531I6Y1.html">以太坊 Input Data 解析</a> 和 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.sohu.com/a/298453584_100195591">我们为什么需要交易数据?</a></p></blockquote><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">数值转换</h3><p>Q: 这个要怎么转换：<em>“amount”:“0x0233c8fe42703e800000”</em>，16 进制转 10 进制</p><p>A: 0x0233c8fe42703e800000 == 10400000000000000000000 去掉 Deciamls 18 == 10400</p><p>A: <code>ethers.utils.formatUnits(&quot;0x0233c8fe42703e800000&quot;, 18)</code></p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">合约间交互</h3><p>有人把「发 mint 交易-查 id-判断-取消交易」 的逻辑做成了合约用于开盲盒，中间会涉及到智能合约中调用字节码。</p><p>合约间调用，直接用 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://solidity-by-example.org/call/">call</a> 调用即可。</p><p>还有个 delegatecall 方法，类似 call。不同的是 A 合约 delegateCall B 合约时，可以使用 A 合约的存储、msg.sender 和 msg.value</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">前端数字更新</h3><p>Q: 页面上有个数字一直在变动（该数字是质押挖矿后，待收获的矿币数量）。我想知道这个数字是由前端页面的哪段代码来负责更新的呢，有没有思路？</p><p>A: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/pancakeswap/pancake-frontend/blob/96e8e5b85e0a5555032ae8e30340b0a4d0df4e39/src/views/Home/components/FarmStakingCard.tsx#L70">FarmStakingCard.tsx</a></p><h3 id="h-swap" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">swap 分析</h3><p>Q: 如何获取交易对</p><p>A:<code>var pool_address = await uniswapFactory.methods.getPair(input_token_address, out_token_address).call();</code></p><p>Q: uniswap router 上的 swap function 沒有要输入 slippage tolerance， 那如果用 web3 交互应该怎么调这个参数？</p><p>A: minOutputAmount，最少也要换到这么多币，slippage tolerance 在发送转账的时候实际上也是被转换成了这个，只是用 slippage 更直观</p><h3 id="h-opensea" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">opensea 相关</h3><p>Q: opeasea 如何点赞？</p><p>A: 先签名 login。然后拿到 token，存下来。带上 token ，拼个请求 post 过去就行了。你可以走一遍流程，看看自己签出来的和小狐狸签出来的一样不一样。</p><h3 id="h-metamask" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">metamask 自动登录</h3><p>Q: selenium 怎么让 metamask 来登录的？</p><p>A: <code>Google\ Chrome --remote-debugging-port=9222 --user-data-dir=&apos;~/ChromeProfile&apos;</code>直接用 chrome app 开一个 debug port (即先登录好 metamask，程序再 attach 到浏览器)</p><p>A: 点击按钮弹出小狐狸后，可以轮询窗口获取到小狐狸</p><h3 id="h-sol" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">sol 相关</h3><p>Q: 请教下，solana 中的 uint8 array 格式的私钥， 怎么通过 javascript 变成 sollet， mathwallet 等钱包支持的私钥格式呢？</p><p>A: <code>const keyOutput = isArrayFormat ? `[${[].slice.call(wallet.provider.account.secretKey)}]` : bs58.encode(wallet.provider.account.secretKey); bs58.encode</code> 在一个 solana 钱包的 GitHub issue 看到的。</p><p>Q: 话说 solana 上，只是转一下 token，咋这么麻烦？getOrCreateAssociatedAccountInfo， 这都啥玩意？</p><p>A: 它的账户体系，是每个代币都有自己的合约地址和收款地址，一开始真的好多人转账出错 现在是统一账户，但是实际上你转账，是要转给目标账户下跟这个 token 相关的账户 现在改成 如果你账户里已经生产代币的收款地址 那么就是获取地址转账 如果没有就帮你生成一个 再转账 你去 explorer 看就知道了，A 转给 B，实际上是 A 地址跟 Token 关联地址转给 B 地址跟 Token 关联的地址。 所以你看代码，他首先获取了 mint 这个玩意，用它来取得 A 和 B 地址下 跟 token 相关的子地址，然后作为参数去转账的。</p><p>A: 我说下 sol 链的理念，按照这个去想，有些事就能想明白了，sol 你把他想成一个 Linux 系统，里面所有的地址就是你系统里的文件，所有信息都是存在不同的地址里的，这些地址生成的 owner 就是文件信息的所有者。按照这个理解，比如你创建了一个钱包地址，这个就是你的 root 身份，你有不同的文件需要存储，对应于 sol 上就是你有多个币需要存放，那就是多个不同的地址，地址由 mintAddress 和你当前的钱包地址计算得出</p><p>A: spl 我觉得就像是 sol 官方出的 openzeppelin，很多合约进行标准化了。sol 和各种 token 的转账，都是通过系统内置的一个 program 来转账的。官方提供了很多的 programid，这些就像标准函数库，你就直接构造他们需要的参数直接调他们就行了</p><h3 id="h-web3js-and-ethersjs" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">web3js &amp; ethersjs 相关</h3><p>与 web3 相比，ethers 执行合约函数极其简单，它封装了很多细节，只需要:</p><p>1 实例化合约: <code>contract = new ethers.Contract(合约地址, 合约 abi, provider);</code></p><p>2 使用钱包对合约进行签名: <code>contractWithSigner = contract.connect(wallet);</code></p><p>3 调用合约函数: <code>tx = await contractWithSigner.函数 A(参数 1，参数 2);</code> 这样就可以与链上合约进行交互了，进行质押、转账、swap 等。 不需要像 web3 一样手动设置 from to value data 等交易参数</p><p>Q: transfer 和 web3.eth.sendSignedTransaction 还有 methods.myMethod.send 这些有什么区别</p><p>A: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://web3js.readthedocs.io/en/v1.4.0/web3-eth.html?highlight=sendSignedTransaction#sendsignedtransaction">sendsignedtransaction</a>， 一个是合约内函数，一个是 web3 提供的访问 ethereum 的方法</p><p>Q: 有没有计算 gas 的好方法，用 gasEstimate 的结果和 metamask 的不同</p><p>A: Metamask 大概乘了个 1.5</p><p>Q: 转账出现 invalid sender 错误</p><p>A: ethereum-tx 在 bsc 上要自己定义一个 forCustomChain</p><h3 id="h-nonce" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">nonce 处理</h3><p>Q: 如果我有笔交易 nonce 是 1 pending 中，然后又产生一笔交易 nonce 是 2 跟着 pending，如果我这个时候手动指定 nonce 为 1，抬高 gas price，是不是也没法成功冲掉前面两笔交易了？</p><p>A: nonce == 1 的交易会成交， 之后 nonce == 2 的交易如果 gas price 够的话 也会跟着成交，evm 链的都是这样的</p><p>Q: 在 metamask 里没法发起 nonce 为 1 的交易了，用 web3.py 去发起个交易倒是会提交成功生成 tx hash 但是老是不成功</p><p>A: 重新构造一笔交易，和以前的那笔交易数据一致就行，nonce 和卡主的那笔交易一样， gas 提高一点，这样可以覆盖掉前面卡住的交易</p><p>Q: 程序批量发了 10 个交易 nonce 在累加。然后一直不上链， 我等了一会以为卡住了。这个时候 我发了一个 高 gas，nonce=第一笔交易，然后卡住的 10 个交易， 瞬间就打出来了。是怎么回事？</p><p>A: nonce 必须一次确认 比如现在 10 没确认， 10 后面的 nonce 都不会得到确认。要依次确认，只要第一笔卡住了，后面就都卡住了。相同的 nonce 被覆盖的交易不会消耗 gas，不会上链的。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">四、器</h2><p>在做事时使用适宜的工具器具，以保证达到“术”的结果，提高“术”的效率</p><h3 id="h-react-vs-vue" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">React vs Vue</h3><p>框架只是工具，自己擅长最好</p><p>React：1. 海外区块链项目基本都是 react,有很多代码可以参考,比如 uniswap-interface； 2. 岗位需求大； 3. react hooks 上手快</p><p>Vue： 1. 包体小，省 CDN 的钱；2. 一看就是国产项目</p><h3 id="h-rust" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Rust</h3><p>SOL、ICP、DOT、NEAR 的开发都是用 rust</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://serokell.io/blog/learn-rust">学习 rust 的教程</a></p><h3 id="h-solidity" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Solidity</h3><p>IDE 推荐用 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://remix.ethereum.org/">Remix</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://capturetheether.com/">Capture the Ether</a> 是一个游戏，在这个游戏中，你要入侵以太坊智能合约，以了解安全问题。</p><p>辅助参考资料： <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://cmichel.io/capture-the-ether-solutions/">解答 1</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.anquanke.com/post/id/154104#h3-9">解答 2</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://celebrusadvisory.com/smart-contract-exploits-part-3/">解答 3</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://xz.aliyun.com/t/2718">解答 4</a></p><h3 id="h-flashbots" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">flashbots</h3><p>用来打包交易和避免失败的神器</p><p>有群友用来领取私钥被泄露钱包的空投</p><p>flashbots 对矿工是有利的，有 80%+的矿池都支持了，有专有的 API <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.flashbots.net/flashbots-auction/overview/">文档</a></p><p>官方制作的手把手教编写 flashbots 发送交易的<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=1ve1YIpDs_I">视频</a></p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">反编译工具</h3><p>反编译整个合约 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethervm.io/decompile">ethervm</a> 查找函数名 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.4byte.directory/signatures/">4byte.directory</a></p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">合约调试</h3><p>Q: 问一个问题。现在有什么好用的智能合约调试器吗？类似通用 ide 的</p><p>A: hardhat 可以打 console.log，还行</p><p>Q: 话说除了 remix 这种在线的，合约的开发与编译调试有本地的工具吗？</p><p>A: truffle compile</p><h3 id="h-vps" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">VPS</h3><p>Q: 性价比比较高的服务器商，都有哪些啊，国外的</p><p>A: contabo（用国外的邮箱注册、美西最快）、linode、datapacket、hostloc、hetzner</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">批量转账工具</h3><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://disperse.app/">disperse.app</a> banteg 开发好现成的了，直接用就行。省很多的 gas，转越多省越多</p><p>去其他链用的话，我就直接拿他的 code 去其他链 deploy 一下，都不需要编译了</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">指纹浏览器</h3><p>指纹浏览器就是一个浏览器可以开几百个指纹不一样的独立应用，自动生成字体，系统语言这些指纹信息的一套环境</p><p>免费的可以试试 Ghostbrowser，免费可以开 3 个 session 好像</p><p>刷 coinlist 用 adspower 指纹浏览器，价格还可以，50 刀 200 个号</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">生产电脑</h3><p>Q: 想买个 mac，请问大家是推荐 M1 还是 intel 的，主要开发用</p><p>A: 前端买 M1 可以，后端用兼容性不行，各种包安装很麻烦。</p><p>A: 我是 air，拿 m1 咖啡厅可以待一天</p><p>A: 我有 mac 也有 win 的台式机，讲道理，我觉得用起来都差不多，在家台式，出去都是 mbp</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">邮箱注册</h3><p>Q: 有什么好用的邮箱， 可以生成很多个子邮箱那种。 大佬求推荐个</p><p>A: 这是个简单好用的<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/huan/docker-simple-mail-forwarder">邮件转发系统</a>，两行代码就能跑起来，我用这个，注册了一大堆 discord</p><p>A: 用了下谷歌的 add+无限邮箱 还可以</p><p>A: 直接用谷歌手机注册真实的 gmail 账号、ip 够干净可以无限注册不要手机号</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">节点服务</h3><p>节点就那几家有卖的，infura，quicknode，alchemy，ankr，你花钱给他，他给你个节点地址，包括 wss 都有</p><p>自己跑节点至少 500-1t 的 ssd，你还很折腾</p><p>blocknative 专门做 mempool 的，是贵，但是真的特别及时</p><p>节点服务都很贵，如果量大，自己搭划算一些</p>]]></content:encoded>
            <author>scriptmoney@newsletter.paragraph.com (scriptmoney)</author>
        </item>
    </channel>
</rss>