<?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>Alex</title>
        <link>https://paragraph.com/@alex-2</link>
        <description>undefined</description>
        <lastBuildDate>Thu, 09 Apr 2026 04:21:39 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Alex</title>
            <url>https://storage.googleapis.com/papyrus_images/1d40a04576ddc21dfe5388e4e2b2e5a87918ba029d86134ddad1edc9fe4cff77.png</url>
            <link>https://paragraph.com/@alex-2</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[ERC-404分析]]></title>
            <link>https://paragraph.com/@alex-2/erc-404</link>
            <guid>t7ovySDG8EVDraTNCl8i</guid>
            <pubDate>Fri, 16 Feb 2024 12:27:13 GMT</pubDate>
            <description><![CDATA[利益声明：写这个小文时，我还没有持有任何ERC404代币，因此，读完该文你可能“收获智慧但错失财富”，请谨慎分辨。 背景：春节期间ERC404突然爆发，有几个朋友私下问我ERC404是怎么回事儿，我正在老家过春节，就没有展开研究，现在回来补课了。 当我刚从X上看到ERC404的推文时，我就觉得有点神奇，怎么ERC721都出来这么久了，怎么会有404这个编号给到新的ERC标准了，难道拖了这么久？ 后来我查了一下，发现这个ERC404是项目方自称的，并非以太坊社区的EIP标准。 然后，我看了下具体的内容。它是把ERC-20和ERC-721融合到一个合约（也就是多继承），该合约既是代币也是NFT。 我简单看了下代码，感觉略丑陋。举例来说，ERC-20和ERC-721都有balanceOf和totalSupply，而该合约默认展示的是代币的balance和totalSupply，因此，像OpenSea这样的NFT交易平台，不做额外工作，是无法兼容的，很可能NFT交易过程中会出问题。代码截图大量错误交易当然了，项目方优先保证的是代币交易，比如Uniswap的池子等，这些应该不会有太大问题。...]]></description>
            <content:encoded><![CDATA[<p>利益声明：写这个小文时，我还没有持有任何ERC404代币，因此，读完该文你可能“收获智慧但错失财富”，请谨慎分辨。</p><p>背景：春节期间ERC404突然爆发，有几个朋友私下问我ERC404是怎么回事儿，我正在老家过春节，就没有展开研究，现在回来补课了。</p><p>当我刚从X上看到ERC404的推文时，我就觉得有点神奇，怎么ERC721都出来这么久了，怎么会有404这个编号给到新的ERC标准了，难道拖了这么久？</p><p>后来我查了一下，发现<strong>这个ERC404是项目方自称的，并非以太坊社区的EIP标准。</strong></p><p>然后，我看了下具体的内容。它是把ERC-20和ERC-721融合到一个合约（也就是多继承），该合约既是代币也是NFT。</p><p>我简单看了下代码，感觉略丑陋。举例来说，ERC-20和ERC-721都有balanceOf和totalSupply，而该合约默认展示的是代币的balance和totalSupply，因此，像OpenSea这样的NFT交易平台，不做额外工作，是无法兼容的，很可能NFT交易过程中会出问题。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6abd5cade34dcab9fcada28607d71b2137450f8ff5919adc3fd7b0052defd488.png" alt="代码截图" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">代码截图</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/713eca1f43181f3f27285acd010ca5e3a67ecd24e4f0f76dd1596cd3293ff11b.png" alt="大量错误交易" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">大量错误交易</figcaption></figure><p>当然了，项目方优先保证的是代币交易，比如Uniswap的池子等，这些应该不会有太大问题。</p><p>至于有没有其他生态能进来一起玩，那就要看项目方的格局了。</p><p>再次提醒，悲观者收获智慧，乐观者收获财富，这次我是悲观者，但随时可能转变为乐观者。希望大家也保持谨慎的乐观。</p><p>拜个晚年，祝大家龙年发大财。</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[监听以太坊mempool]]></title>
            <link>https://paragraph.com/@alex-2/mempool</link>
            <guid>mNh3T5ZNXslCd3PhAbgC</guid>
            <pubDate>Sun, 25 Jun 2023 09:45:54 GMT</pubDate>
            <description><![CDATA[以太坊mempool（内存池）是已经提交、随时可以打包、但还没有成功打包的交易，它随时都可能被打包广播。 默认mempool是公开的，任何人都可以访问。这给MEV提供了非常重要的基础。而监听mempool里的交易，也是非常重要非常基础的操作。 这一切，靠的是geth提供的API（不是标准API ，是geth特有的API）。 标准API列表： https://ethereum.github.io/execution-apis/api-documentation/ geth特有API eth_subscribe https://geth.ethereum.org/docs/interacting-with-geth/rpc/pubsub#newpendingtransactions 所谓的“监听”，其实就是订阅(subscribe)，利用eth_subscribe接口订阅类型为newPendingTransactions的消息 发送请求{ "id": 1, "jsonrpc": "2.0", "method": "eth_subscribe", "params": [ "newPen...]]></description>
            <content:encoded><![CDATA[<p>以太坊<code>mempool</code>（内存池）是<strong>已经提交、随时可以打包、但还没有成功打包</strong>的交易，它随时都可能被打包广播。</p><p>默认<code>mempool</code>是公开的，任何人都可以访问。这给<code>MEV</code>提供了非常重要的基础。而监听<code>mempool</code>里的交易，也是非常重要非常基础的操作。</p><p>这一切，靠的是<code>geth</code>提供的<code>API</code>（不是标准<code>API</code> ，是<code>geth</code>特有的<code>API</code>）。</p><p>标准<code>API</code>列表：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.github.io/execution-apis/api-documentation/">https://ethereum.github.io/execution-apis/api-documentation/</a></p><p><code>geth</code>特有<code>API</code> <code>eth_subscribe</code></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://geth.ethereum.org/docs/interacting-with-geth/rpc/pubsub#newpendingtransactions">https://geth.ethereum.org/docs/interacting-with-geth/rpc/pubsub#newpendingtransactions</a></p><p>所谓的“监听”，其实就是订阅(<code>subscribe</code>)，利用<code>eth_subscribe</code>接口订阅类型为<code>newPendingTransactions</code>的消息</p><p>发送请求</p><pre data-type="codeBlock" text="{
  &quot;id&quot;: 1,
  &quot;jsonrpc&quot;: &quot;2.0&quot;,
  &quot;method&quot;: &quot;eth_subscribe&quot;,
  &quot;params&quot;: [
    &quot;newPendingTransactions&quot;
  ]
}
"><code><span class="hljs-punctuation">{</span>
  <span class="hljs-attr">"id"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"jsonrpc"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2.0"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"method"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"eth_subscribe"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"params"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>
    <span class="hljs-string">"newPendingTransactions"</span>
  <span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span>
</code></pre><p>响应</p><pre data-type="codeBlock" text="{&quot;jsonrpc&quot;:&quot;2.0&quot;,&quot;id&quot;:2,&quot;result&quot;:&quot;0xc3b33aa549fb9a60e95d21862596617c&quot;}
{
  &quot;jsonrpc&quot;:&quot;2.0&quot;,
  &quot;method&quot;:&quot;eth_subscription&quot;,
  &quot;params&quot;:{
    &quot;subscription&quot;:&quot;0xc3b33aa549fb9a60e95d21862596617c&quot;,
    &quot;result&quot;:&quot;0xd6fdc5cc41a9959e922f30cb772a9aef46f4daea279307bc5f7024edc4ccd7fa&quot;
  }
}
"><code><span class="hljs-punctuation">{</span><span class="hljs-attr">"jsonrpc"</span><span class="hljs-punctuation">:</span><span class="hljs-string">"2.0"</span><span class="hljs-punctuation">,</span><span class="hljs-attr">"id"</span><span class="hljs-punctuation">:</span><span class="hljs-number">2</span><span class="hljs-punctuation">,</span><span class="hljs-attr">"result"</span><span class="hljs-punctuation">:</span><span class="hljs-string">"0xc3b33aa549fb9a60e95d21862596617c"</span><span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">{</span>
  <span class="hljs-attr">"jsonrpc"</span><span class="hljs-punctuation">:</span><span class="hljs-string">"2.0"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"method"</span><span class="hljs-punctuation">:</span><span class="hljs-string">"eth_subscription"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"params"</span><span class="hljs-punctuation">:</span><span class="hljs-punctuation">{</span>
    <span class="hljs-attr">"subscription"</span><span class="hljs-punctuation">:</span><span class="hljs-string">"0xc3b33aa549fb9a60e95d21862596617c"</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">"result"</span><span class="hljs-punctuation">:</span><span class="hljs-string">"0xd6fdc5cc41a9959e922f30cb772a9aef46f4daea279307bc5f7024edc4ccd7fa"</span>
  <span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></pre><p>它会返回一个标示（用于取消订阅），之后如果有新的<code>pending</code>的交易，会把交易<code>hash</code>发送过来。只有交易<code>hash</code>没有细节，其他的参数，需要你自己再查询一次。</p><p><code>Go</code>代码如下</p><pre data-type="codeBlock" text="package main

import (
    &quot;context&quot;
    &quot;github.com/ethereum/go-ethereum/common&quot;
    &quot;github.com/ethereum/go-ethereum/ethclient/gethclient&quot;
    &quot;github.com/ethereum/go-ethereum/rpc&quot;
    &quot;log&quot;
    &quot;os&quot;
    &quot;os/signal&quot;
    &quot;syscall&quot;
)

func watch() {
    wss := os.Getenv(&quot;WSS&quot;)

    rc, err := rpc.Dial(wss)
    if err != nil {
        log.Printf(&quot;failed to dial: %v&quot;, err)
        return
    }
    log.Printf(&quot;connected to %s&quot;, wss)
    gc := gethclient.New(rc)

    hashes := make(chan common.Hash, 100)
    _, err = gc.SubscribePendingTransactions(context.Background(), hashes)
    if err != nil {
        log.Printf(&quot;failed to SubscribePendingTransactions: %v&quot;, err)
        return
    }
    log.Print(&quot;subscribed pending txs now&quot;)
    for {
        select {
        case hash := &lt;-hashes:
            log.Printf(&quot;received tx %s&quot;, hash)
        }
    }
}

func main() {
    go watch()
    signalChan := make(chan os.Signal, 1)
    signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
    &lt;-signalChan
}
"><code><span class="hljs-keyword">package</span> main

<span class="hljs-keyword">import</span> (
    <span class="hljs-string">"context"</span>
    <span class="hljs-string">"github.com/ethereum/go-ethereum/common"</span>
    <span class="hljs-string">"github.com/ethereum/go-ethereum/ethclient/gethclient"</span>
    <span class="hljs-string">"github.com/ethereum/go-ethereum/rpc"</span>
    <span class="hljs-string">"log"</span>
    <span class="hljs-string">"os"</span>
    <span class="hljs-string">"os/signal"</span>
    <span class="hljs-string">"syscall"</span>
)

<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">watch</span><span class="hljs-params">()</span></span> {
    wss := os.Getenv(<span class="hljs-string">"WSS"</span>)

    rc, err := rpc.Dial(wss)
    <span class="hljs-keyword">if</span> err != <span class="hljs-literal">nil</span> {
        log.Printf(<span class="hljs-string">"failed to dial: %v"</span>, err)
        <span class="hljs-keyword">return</span>
    }
    log.Printf(<span class="hljs-string">"connected to %s"</span>, wss)
    gc := gethclient.New(rc)

    hashes := <span class="hljs-built_in">make</span>(<span class="hljs-keyword">chan</span> common.Hash, <span class="hljs-number">100</span>)
    _, err = gc.SubscribePendingTransactions(context.Background(), hashes)
    <span class="hljs-keyword">if</span> err != <span class="hljs-literal">nil</span> {
        log.Printf(<span class="hljs-string">"failed to SubscribePendingTransactions: %v"</span>, err)
        <span class="hljs-keyword">return</span>
    }
    log.Print(<span class="hljs-string">"subscribed pending txs now"</span>)
    <span class="hljs-keyword">for</span> {
        <span class="hljs-keyword">select</span> {
        <span class="hljs-keyword">case</span> hash := &#x3C;-hashes:
            log.Printf(<span class="hljs-string">"received tx %s"</span>, hash)
        }
    }
}

<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span> {
    <span class="hljs-keyword">go</span> watch()
    signalChan := <span class="hljs-built_in">make</span>(<span class="hljs-keyword">chan</span> os.Signal, <span class="hljs-number">1</span>)
    signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
    &#x3C;-signalChan
}
</code></pre><p>当然了，先知道<code>hash</code>其实什么也干不了，还需要再查询一次，拿到具体的数据才行。</p><p>好消息是，从<code>v1.11.0</code>，<code>geth</code>直接就添加了新的<code>SubscribeFullPendingTransactions</code>接口，可以直接拿到<code>transaction</code>了，简直不要太幸福。</p><pre data-type="codeBlock" text="package main

import (
    &quot;context&quot;
    &quot;github.com/ethereum/go-ethereum/core/types&quot;
    &quot;github.com/ethereum/go-ethereum/ethclient/gethclient&quot;
    &quot;github.com/ethereum/go-ethereum/rpc&quot;
    &quot;log&quot;
    &quot;os&quot;
    &quot;os/signal&quot;
    &quot;syscall&quot;
)

func watch() {
    wss := os.Getenv(&quot;WSS&quot;)

    rc, err := rpc.Dial(wss)
    if err != nil {
        log.Printf(&quot;failed to dial: %v&quot;, err)
        return
    }
    log.Printf(&quot;connected to %s&quot;, wss)
    gc := gethclient.New(rc)

    transactions := make(chan *types.Transaction, 100)
    _, err = gc.SubscribeFullPendingTransactions(context.Background(), transactions)
    if err != nil {
        log.Printf(&quot;failed to SubscribePendingTransactions: %v&quot;, err)
        return
    }
    log.Print(&quot;subscribed pending txs now&quot;)
    for {
        select {
        case transaction := &lt;-transactions:
            // 这里的transaction是完整数据，可以直接使用
            txBytes, err := transaction.MarshalJSON()
            if err != nil {
                continue
            }
            log.Printf(&quot;received tx %s&quot;, string(txBytes))
        }
    }
}

func main() {
    go watch()
    signalChan := make(chan os.Signal, 1)
    signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
    &lt;-signalChan
}
"><code><span class="hljs-keyword">package</span> main

<span class="hljs-keyword">import</span> (
    <span class="hljs-string">"context"</span>
    <span class="hljs-string">"github.com/ethereum/go-ethereum/core/types"</span>
    <span class="hljs-string">"github.com/ethereum/go-ethereum/ethclient/gethclient"</span>
    <span class="hljs-string">"github.com/ethereum/go-ethereum/rpc"</span>
    <span class="hljs-string">"log"</span>
    <span class="hljs-string">"os"</span>
    <span class="hljs-string">"os/signal"</span>
    <span class="hljs-string">"syscall"</span>
)

<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">watch</span><span class="hljs-params">()</span></span> {
    wss := os.Getenv(<span class="hljs-string">"WSS"</span>)

    rc, err := rpc.Dial(wss)
    <span class="hljs-keyword">if</span> err != <span class="hljs-literal">nil</span> {
        log.Printf(<span class="hljs-string">"failed to dial: %v"</span>, err)
        <span class="hljs-keyword">return</span>
    }
    log.Printf(<span class="hljs-string">"connected to %s"</span>, wss)
    gc := gethclient.New(rc)

    transactions := <span class="hljs-built_in">make</span>(<span class="hljs-keyword">chan</span> *types.Transaction, <span class="hljs-number">100</span>)
    _, err = gc.SubscribeFullPendingTransactions(context.Background(), transactions)
    <span class="hljs-keyword">if</span> err != <span class="hljs-literal">nil</span> {
        log.Printf(<span class="hljs-string">"failed to SubscribePendingTransactions: %v"</span>, err)
        <span class="hljs-keyword">return</span>
    }
    log.Print(<span class="hljs-string">"subscribed pending txs now"</span>)
    <span class="hljs-keyword">for</span> {
        <span class="hljs-keyword">select</span> {
        <span class="hljs-keyword">case</span> transaction := &#x3C;-transactions:
            <span class="hljs-comment">// 这里的transaction是完整数据，可以直接使用</span>
            txBytes, err := transaction.MarshalJSON()
            <span class="hljs-keyword">if</span> err != <span class="hljs-literal">nil</span> {
                <span class="hljs-keyword">continue</span>
            }
            log.Printf(<span class="hljs-string">"received tx %s"</span>, <span class="hljs-type">string</span>(txBytes))
        }
    }
}

<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span> {
    <span class="hljs-keyword">go</span> watch()
    signalChan := <span class="hljs-built_in">make</span>(<span class="hljs-keyword">chan</span> os.Signal, <span class="hljs-number">1</span>)
    signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
    &#x3C;-signalChan
}
</code></pre><p>打印的<code>transaction</code>内容是如下格式</p><pre data-type="codeBlock" text="{
  &quot;type&quot;: &quot;0x2&quot;,
  &quot;chainId&quot;: &quot;0x14a33&quot;,
  &quot;nonce&quot;: &quot;0x5e1&quot;,
  &quot;to&quot;: &quot;0x290b54a504a3b0cb21888e3e405afc1b2946598c&quot;,
  &quot;gas&quot;: &quot;0xdc2d&quot;,
  &quot;gasPrice&quot;: null,
  &quot;maxPriorityFeePerGas&quot;: &quot;0x59682f00&quot;,
  &quot;maxFeePerGas&quot;: &quot;0x59682f64&quot;,
  &quot;value&quot;: &quot;0x0&quot;,
  &quot;input&quot;: &quot;0xa9059cbb000000000000000000000000f3902d46ffa3730f4733b19e5fca5acd8057316a0000000000000000000000000000000000000000000000000de0b6b3a7640000&quot;,
  &quot;accessList&quot;: [],
  &quot;v&quot;: &quot;0x1&quot;,
  &quot;r&quot;: &quot;0x5783d7fc6ac88e39593de34eff58b059d2bb6045227eea277969a0c4778ec63&quot;,
  &quot;s&quot;: &quot;0x591ac696363bcaa4943b30ab680c8a7df58d27dd1b28f1a90e0345aaca0cd0b4&quot;,
  &quot;hash&quot;: &quot;0xb0d0b538207efc9da6daf97b80e1e5e6c3a18a8a7aa45c84f413af3b0ea2c89d&quot;
}
"><code><span class="hljs-punctuation">{</span>
  <span class="hljs-attr">"type"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x2"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"chainId"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x14a33"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"nonce"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x5e1"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"to"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x290b54a504a3b0cb21888e3e405afc1b2946598c"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"gas"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0xdc2d"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"gasPrice"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">null</span></span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"maxPriorityFeePerGas"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x59682f00"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"maxFeePerGas"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x59682f64"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"value"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x0"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"input"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0xa9059cbb000000000000000000000000f3902d46ffa3730f4733b19e5fca5acd8057316a0000000000000000000000000000000000000000000000000de0b6b3a7640000"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"accessList"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"v"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x1"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"r"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x5783d7fc6ac88e39593de34eff58b059d2bb6045227eea277969a0c4778ec63"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"s"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0x591ac696363bcaa4943b30ab680c8a7df58d27dd1b28f1a90e0345aaca0cd0b4"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"hash"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0xb0d0b538207efc9da6daf97b80e1e5e6c3a18a8a7aa45c84f413af3b0ea2c89d"</span>
<span class="hljs-punctuation">}</span>
</code></pre><p>可见是签过名直接可以用的。</p><p>祝朋友们玩得开心，可以加我推特交流 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/alexgiantwhale">@alexgiantwhale</a></p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[SeeDAO 元规则]]></title>
            <link>https://paragraph.com/@alex-2/seedao-3</link>
            <guid>TTA7WVnN6KYE0Vfbn95m</guid>
            <pubDate>Fri, 23 Dec 2022 02:54:35 GMT</pubDate>
            <description><![CDATA[注：这不是SeeDAO元规则的原始出处，只是我为了测试Mirror导入功能而新建的一个备份。原始文档地址是 https://mirror.xyz/seedao.eth/oYvqxPztTXrE0C_HuW9b1ua5S1TTvZ_hoBTi6hwQk18论坛提案链接： https://forum.seedao.xyz/thread/39871序言SeeDAO 是一个基于区块链的数字城邦，其表现形态为去中心化的数字网络（SeeDAO Network）和映射在全球各地的物理据点 ( SeeShore )，由SeeDAO成员共建、共治、共享。 作为一个数字城邦，SeeDAO强调人的重要性，强调代码服务于人。除金库里的流动性资产外，由SeeDAO成员在共同创造过程中凝结的社会关系、积累的公共资产、形成的组织规则和历史记忆，均为SeeDAO的宝贵财富。 SeeDAO致力于满足成员对经济基础、公共服务与治理等多方面的诉求，促进身在城邦中人的自由发展。第一章：SeeDAO成员的权利与义务成员是SeeDAO基本单元。SeeDAO的一切权限、责任、收益、风险，最终与SeeDAO成员相关。满足以下任...]]></description>
            <content:encoded><![CDATA[<blockquote><p>注：这不是SeeDAO元规则的原始出处，只是我为了测试Mirror导入功能而新建的一个备份。原始文档地址是</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/seedao.eth/oYvqxPztTXrE0C_HuW9b1ua5S1TTvZ_hoBTi6hwQk18">https://mirror.xyz/seedao.eth/oYvqxPztTXrE0C_HuW9b1ua5S1TTvZ_hoBTi6hwQk18</a></p></blockquote><p><em>论坛提案链接：</em></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://forum.seedao.xyz/thread/39871">https://forum.seedao.xyz/thread/39871</a></p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">序言</h2><p>SeeDAO 是一个基于区块链的数字城邦，其表现形态为去中心化的数字网络（SeeDAO Network）和映射在全球各地的物理据点 ( SeeShore )，由SeeDAO成员共建、共治、共享。</p><p>作为一个数字城邦，SeeDAO强调人的重要性，强调代码服务于人。除金库里的流动性资产外，由SeeDAO成员在共同创造过程中凝结的社会关系、积累的公共资产、形成的组织规则和历史记忆，均为SeeDAO的宝贵财富。</p><p>SeeDAO致力于满足成员对经济基础、公共服务与治理等多方面的诉求，促进身在城邦中人的自由发展。</p><hr><h2 id="h-seedao" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第一章：SeeDAO成员的权利与义务</h2><ol><li><p>成员是SeeDAO基本单元。SeeDAO的一切权限、责任、收益、风险，最终与SeeDAO成员相关。</p></li><li><p>满足以下任一条件者，均可被认定为SeeDAO成员： a. SeeDAO PoW账本上被记录的贡献者； b. SeeDAO SGN 或 身份 MSC 持有者。</p></li><li><p>SeeDAO成员享有知晓SeeDAO历史、接受SeeDAO教育、参与PoW获得薪酬回报、竞选SeeDAO公共岗位、监督SeeDAO公共服务、维护SeeDAO公地利益、依据SeeDAO规则自由表达、依据贡献度参与相应层级治理之权利。</p></li><li><p>与之相应，SeeDAO成员具有同步SeeDAO PoW 账本、在DAO内参与工作前明晰相应权责利、维护SeeDAO公地利益、遵守SeeDAO元规则及相应规则并保护其不受践踏之义务。</p></li></ol><h2 id="h-seedao" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第二章：SeeDAO的治理原则及架构</h2><h3 id="h-21" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2.1 治理原则</h3><ol><li><p>SeeDAO遵循自下而上与自上而下相结合、分层治理、有机流动、公开透明的治理原则。</p></li><li><p>SeeDAO采用分层治理结构，鼓励就近治理、专业小组处理专业事务，充分尊重知识与专业的力量。</p></li><li><p>SeeDAO鼓励成员依据专长和兴趣爱好在各个公共岗位、各个公会、各个项目之间流动，充分利用SeeDAO资源进行创造，并积极参与SeeDAO各层级治理，实现人的自由发展。</p></li><li><p>SeeDAO公共岗位招聘、国库资产进出、重大公共事务决策、PoW账本更新应该保持公开透明，以便于接受社区成员的监督。</p></li></ol><h3 id="h-22" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2.2 治理架构</h3><p>依据上述治理原则，SeeDAO建立了如下治理架构：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9e0aa07699e9070e97a333d1411af3151ddbedbf6a1f66b979ee716ce08ef133.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>由SeeDAO节点构成的SeeDAO节点共识大会是SeeDAO的最高决策机构。大会每三个月召开一次，遵循一人一票的原则，对SeeDAO的重要事项进行决策；</p><p>由SeeDAO公共服务者构成的SeeDAO市政厅是SeeDAO的日常治理机构，每三个月轮换一次。SeeDAO的日常治理事项由市政厅负责，具体运行细节参见《SeeDAO治理手册》。</p><p>SeeDAO战略孵化器负责SeeDAO的经济发展，孵化SeeDAO发展所需的基础设施，充实SeeDAO的金库。战略孵化器的治理原则是专家治理。</p><p>公会和项目是SeeDAO的重要组成部分。在不违反《SeeDAO元规则》及《SeeDAO治理手册》的情况下，公会和项目均享有自决权。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第三章：节点共识大会</h2><h3 id="h-31" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">3.1 节点</h3><ol><li><p>参与SeeDAO的公会、项目和SeeDAO公共服务活动越多，成员的贡献度越高。在一个治理季度内，为SeeDAO贡献到一定程度以上的社区成员成为该季度的SeeDAO节点。</p></li><li><p>SeeDAO节点享有参与SeeDAO节点共识大会，对SeeDAO重大事务进行决策并获取相应激励之权利；同时，也具备对SeeDAO发展尽责之义务。</p></li><li><p>节点的产生、延续及激励的具体细节，参见《SeeDAO节点共识大会规则》。</p></li></ol><h3 id="h-32" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">3.2 节点共识大会</h3><ol><li><p>节点共识大会是SeeDAO的最高权力机构，每三个月召开一次。</p></li><li><p>参与共识大会的SeeDAO节点是大会所有事项的决策者，实行一节点一票的投票原则。</p></li><li><p>由市政厅负责组织召开节点共识大会大会，其细节参见《SeeDAO节点共识大会规则》。</p></li><li><p>节点共识大会具备的权力有：</p><ol><li><p>听取市政厅和战略孵化器上一季度的工作汇报，评定市政厅的工作成绩；</p></li><li><p>选举下一届市政厅公共服务人员，公示战略孵化器的工作人员名单；</p></li><li><p>审批下一季度给予市政厅的预算及战略孵化器申请的季度额外预算；</p></li><li><p>决策由市政厅提出的除《治理手册》外的其他II级规则新增、删减、修改提案，判定SeeDAO其他社区规则是否违反元规则；</p></li><li><p>对SeeDAO成员的重要提案进行决策；</p></li><li><p>决定下一届节点共识大会节点的门槛。</p></li></ol></li><li><p>执行上述权力时，投票节点数超过当季节点总数的50%，且赞成票占所有投票的比例超过50%方可执行；</p></li><li><p>节点共识大会具备修改SeeDAO元规则的权力，见”第八章：元规则实行及修改“。</p></li></ol><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第四章：市政厅</h2><ol><li><p>市政厅是 SeeDAO 的公共服务机构，负责 DAO 层面的治理事务。</p></li><li><p>市政厅内设有各自独立、平级运作的公共岗位，共同对全 DAO 提供治理服务。除部份以时薪或按次计算、月结的岗位，薪酬支付方式以每一季结束后补偿为原则。</p></li><li><p>市政厅具有以下权力：</p><ol><li><p>提出 SeeDAO在一个治理季度内的活动计划。</p></li><li><p>依据《SeeDAO治理手册》，为SeeDAO的日常治理服务，包括社区运营、品牌公关、媒体账户、对外联络、财务管理、SeeDAO融资、线下空间法律及会计事务等。</p></li><li><p>协助并完善 SeeDAO 成员日常发起的社区提案。</p></li><li><p>发起《SeeDAO治理手册》修改提案及《SeeDAO节点共识大会》修改提案。</p></li><li><p>依照《SeeDAO节点共识大会组织规则》按期筹备和召开节点共识大会。</p></li></ol></li><li><p>市政厅有向节点共识大会提交当季工作回顾、下一季度预算申请之义务。</p></li><li><p>市政厅设有一个多签的链上金库，称作市政厅金库。每一季经由大会通过预算建议后，由社区金库打入所需资金，补充金库到当季要求。市政厅金库资金用于 SeeDAO 成员提案，且不得以预支社区金库名义超额承诺发放。</p></li><li><p>市政厅所有岗位一季一任，每一季结束后需在节点共识大会重新选举。</p></li></ol><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第五章：战略孵化器</h2><p><em>战略孵化器是孵化 DAO 基础设施、为 SeeDAO 造血、扩大 SeeDAO 生态的主要战略小组。</em></p><h3 id="h-51" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">5.1 战略孵化器的使命</h3><ol><li><p>孵化 SeeDAO 以及生态所需的基础设施，为数字城邦提供 DAO 的底层操作系统。</p></li><li><p>为 SeeDAO 造血，实现经济可持续发展。</p></li><li><p>向 Web3 输出 DAO 时代基础设施，繁荣 SeeDAO 生态，形成 D2D 网络。</p></li></ol><h3 id="h-52" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">5.2 战略孵化器的治理</h3><ol><li><p>在治理架构上，战略孵化器与市政厅平级，按季度向 SeeDAO 节点共识大会汇报工作，并在成立之初一次性申请全部运营预算。</p></li><li><p>战略孵化器采用偏中心化方式运作，由专家治理，自行决定内部岗位、任期和换届事宜。</p></li></ol><h3 id="h-53" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">5.3 战略孵化器的权力</h3><ol><li><p>SeeDAO 使用何种 DAO Tool 以及其他基础设施由战略孵化器决定。</p></li><li><p>战略孵化器代表 SeeDAO 与被孵化项目展开谈判，并签署协议。</p></li><li><p>为宣传战略孵化器和所孵化项目，战略孵化器有权使用 SeeDAO 品牌和媒体账号。</p></li><li><p>战略孵化器初始孵化资金为 100 万 U，全部用于孵化项目。</p></li></ol><h3 id="h-54" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">5.4 金库管理与收益分配</h3><p>战略孵化所获取的全部收益（Token、NFT以及其他资产）由孵化器根据市场情形转化为 U，其中相应比例归 SeeDAO 公共金库，相应比例作为孵化器相关人员激励，由孵化器决定。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第六章：公会与项目</h2><ol><li><p>SeeDAO 公会是由具有相同技能专长和兴趣爱好的 SeeDAO 成员，一同围绕相关主题讨论交流、发起活动而形成的组织。公会能起到为SeeDAO蓄积和培养专业人才、提供专业教育、促进人才交流协作的作用。</p></li><li><p>SeeDAO 项目是从 SeeDAO 中发起的有计划性、目的性的组织，将围绕在项目规划上进行各项活动，其类别包括兴趣小组、公会内部项目、SeeDAO公共项目、SeeDAO孵化项目及短期项目等。</p></li><li><p>无论公会与项目，皆需遵循 SeeDAO 治理手册相关约定。</p></li><li><p>在不违反《SeeDAO元规则》和《SeeDAO治理手册》的情况下，公会与项目享有自决权。其他平行公会、社区项目、战略孵化器、市政厅与节点共识大会有义务尊重公会自决权，且除8.1.3所示情况外，无权干涉公会与项目自决权范围内事务。</p></li></ol><h2 id="h-seedao" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第七章：SeeDAO代币经济模型</h2><p><em>SeeDAO的token代号为$SEED，总量 10 亿枚。其中25%归属于CryptoC团队（包含给予第一轮投资人的token），15%归属于A轮及之后的SeeDAO投资人，60%归属于社区。预计$SEED的发行时间为2024年2月。</em></p><p><em>其中，归属于社区的6亿枚$SEED，有1亿枚用于SeeDAO发展的其他需求。余下的5亿枚$SEED token，全部由社区贡献者以“POW”的形式挖出，并记录到 POW 账本。</em></p><h3 id="h-71" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">7.1 代币产生</h3><p>由社区贡献产生的$SEED，按照每年上限 5 千万枚（占总量5%）的速度根据“POW”原则释放 。在理想情况下（每年 $SEED的POW产量都达到 5% 上限），10年后社区部分会全部释放。</p><p><strong>1. POW原则</strong></p><p>a. 所谓通过POW原则发放 $SEED，是指贡献在适当参考市场价格与SEED未来成长性的基础上，按照$SEED的公认价值来计算发放$SEED的数量。</p><p>b. 在POW原则下，$SEED的释放速度取决于两个条件：$SEED的价格和贡献总量的参照价格。</p><p>c. 关于SeeDAO认定的POW类别及相应激励，参见《SeeDAO治理手册》。</p><p><strong>2. 治理挖矿：奖励参与节点共识大会的节点</strong></p><p>a.根据POW原则，SeeDAO给予构建和维护SeeDAO网络的节点相应奖励。节点参与SeeDAO治理而获得相应token激励的行为即为治理挖矿；</p><p>b.治理挖矿是 POW 的一部分，其挖矿产生的 $SEED 被包含在 POW 每年上限 5% 的预算之内；</p><p>c.治理挖矿数额为该治理季度除治理挖矿以外POW所产生token数量的二十分之一。</p><h3 id="h-72" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">7.2 代币解锁</h3><p>代币解锁的原则是社区POW部分不锁仓，CryptoC与第一轮投资人执行最为严格的锁仓标准。其他投资人根据签署的协议明确锁仓时间。</p><h2 id="h-yuan" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">第八章：元规则实行及修改</h2><h3 id="h-81-yuan" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">8.1 元规则的实行</h3><ol><li><p>依照 SeeDAO 的治理结构，SeeDAO 的规则相应分为三个级别：</p><p>a.SeeDAO 元规则为 I 级规则；</p><p>b.除 SeeDAO 元规则外，其他涉及到整个 SeeDAO 治理范围的规则为II级规则；</p><p>c.SeeDAO内部各公会和项目自行制定，仅适用于公会和项目内部的规则为III级规则。</p></li><li><p>在SeeDAO设立的 II 级规则和 III 级规则均不得与 SeeDAO 元规则相悖，否则视为无效。</p></li><li><p>共识大会可判定 II 级规则和 III 级规则是否违反元规则。</p></li><li><p>共识大会对 II 级规则及其修订案具备是否通过的决定权。</p></li><li><p>在第一届节点共识大会召开之前，市政厅出台的《SeeDAO节点共识大会临时规则》和《SeeDAO治理临时手册》具有与《SeeDAO节点共识大会》规则与《SeeDAO治理手册》同等效力。</p></li></ol><h3 id="h-82-yuan" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">8.2 元规则的修改</h3><ol><li><p>如需修订元规则，则元规则修订案需由超过三分之一的SeeDAO前届节点向当届SeeDAO节点共识大会共同提案，并由超过三分之二的当届节点赞成方可生效。</p></li><li><p>元规则修订案通过后，由SeeDAO节点共识大会授权SeeDAO市政厅完成版本更新和发布。</p></li></ol><hr><p>附：</p><p>测试导入功能的结论：基本可用，部分特殊格式还有提升空间。</p><ol><li><p>链接不能导入（首段论坛链接未导入，已手动修改，下同）；</p></li><li><p>分段符后面的首行丢失（即“第一章”二级标题）；</p></li><li><p>列表中的特殊格式导入失败（第一章第2小节分a、b两个小节，但是a、b小节都是特殊换行(shift+Enter)，与2小节紧密结合，导入失败；后面第8章的8.1小节的列表1下边a、b、c列表使用的普通回车，间距较大，导入就是成功的）；</p></li></ol>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[如何领取Goerli测试币]]></title>
            <link>https://paragraph.com/@alex-2/goerli</link>
            <guid>JvnIkEhrHh30vZ0r2uCG</guid>
            <pubDate>Mon, 12 Dec 2022 03:06:51 GMT</pubDate>
            <description><![CDATA[我在很久以前写过一篇如何领取Rinkeby测试币的文章，并附上了一个示例推特地址。到目前为止，还是不是有一些新手开发者来尝试领水。不过Rinkeby已经关闭了，后面推荐的测试网是Goerli，希望大家从现在开始，尝试使用Goerli进行测试吧，不管你看的文章里是不是用的Rinkeby。 下面就直接说怎么在Goerli领测试币。 Goerli测试币一样没有任何价值，可以免费领取，我们一般把这种免费领取的地方叫做水龙头(faucet)。最稳定的水龙头（没有之一）是Alchemy。 https://goerlifaucet.com/ 如果没有注册过他们的账户，需要提前注册，登录后，直接填自己的以太地址就可以了。填完点击“Send Me ETH”即可，一般会在3分钟之内收到。Goerli Faucet如果觉得领的少，还可以通过发送API请求，让每次领取数量加倍。]]></description>
            <content:encoded><![CDATA[<p>我在很久以前写过一篇如何领取Rinkeby测试币的文章，并附上了一个示例推特地址。到目前为止，还是不是有一些新手开发者来尝试领水。不过Rinkeby已经关闭了，后面推荐的测试网是Goerli，希望大家从现在开始，尝试使用Goerli进行测试吧，不管你看的文章里是不是用的Rinkeby。</p><p><strong>下面就直接说怎么在Goerli领测试币。</strong></p><p>Goerli测试币一样没有任何价值，可以免费领取，我们一般把这种免费领取的地方叫做水龙头(faucet)。<strong>最稳定的水龙头（没有之一）是Alchemy</strong>。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://goerlifaucet.com/">https://goerlifaucet.com/</a></p><p>如果没有注册过他们的账户，需要提前注册，登录后，直接填自己的以太地址就可以了。填完点击“Send Me ETH”即可，一般会在3分钟之内收到。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/175fbbb52e2602f985c82b70d2230e887b2db810bc1fa922682e56455b7ff608.png" alt="Goerli Faucet" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Goerli Faucet</figcaption></figure><p>如果觉得领的少，还可以通过发送API请求，让每次领取数量加倍。</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[EIP1559如何设置合理的Gas]]></title>
            <link>https://paragraph.com/@alex-2/eip1559-gas</link>
            <guid>RQKoCdUz7x5fhU4C7g86</guid>
            <pubDate>Wed, 19 Oct 2022 09:30:16 GMT</pubDate>
            <description><![CDATA[EIP-1559已经运行有一段时间了，不过大部分的库还没有自动支持。这里就以Ethers.js为例说明如何设置新的Gas参数。 一般来说，如果你不设置参数，就像这样直接提交交易await contract.connect(account).method(params...); 你得到的应该是老的交易格式（type=0），即非EIP-1559类型的交易。默认交易类型而想要得到EIP-1559类型的交易（type=2），需要明确设置参数maxFeePerGas和maxPriorityFeePerGas。await contract.connect(account).method(params..., { maxFeePerGas: maxFeePerGas, maxPriorityFeePerGas: maxPriorityFeePerGas, }); 带上这两个参数之后，交易的type会变成2。EIP-1559交易接下来的问题是，如何动态获取网络的拥堵情况，设置合理的值？ 答案是使用feeData https://docs.ethers.io/v5/single-page/#/v5...]]></description>
            <content:encoded><![CDATA[<p>EIP-1559已经运行有一段时间了，不过大部分的库还没有自动支持。这里就以Ethers.js为例说明如何设置新的<code>Gas</code>参数。</p><p>一般来说，如果你不设置参数，就像这样直接提交交易</p><pre data-type="codeBlock" text="await contract.connect(account).method(params...);
"><code>await <span class="hljs-keyword">contract</span>.connect(account).method(params...);
</code></pre><p>你得到的应该是老的交易格式（type=0），即非EIP-1559类型的交易。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/898158018f17f12b55fbca6ce97ec4bd209542e3d9519acc062b75f2ee389a3e.png" alt="默认交易类型" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">默认交易类型</figcaption></figure><p>而想要得到EIP-1559类型的交易（type=2），需要明确设置参数<code>maxFeePerGas</code>和<code>maxPriorityFeePerGas</code>。</p><pre data-type="codeBlock" text="await contract.connect(account).method(params..., {
            maxFeePerGas: maxFeePerGas,
            maxPriorityFeePerGas: maxPriorityFeePerGas,
});
"><code>await <span class="hljs-keyword">contract</span>.connect(account).method(params..., {
            maxFeePerGas: maxFeePerGas,
            maxPriorityFeePerGas: maxPriorityFeePerGas,
});
</code></pre><p>带上这两个参数之后，交易的type会变成2。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f6ecce915ede73c7b3a950972d08d89fc3c0115f57a3eb7eff6867ac224b97d7.png" alt="EIP-1559交易" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">EIP-1559交易</figcaption></figure><p>接下来的问题是，如何动态获取网络的拥堵情况，设置合理的值？</p><p>答案是使用<code>feeData</code></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.ethers.io/v5/single-page/#/v5/api/providers/provider/-%23-Provider-getFeeData">https://docs.ethers.io/v5/single-page/#/v5/api/providers/provider/-%23-Provider-getFeeData</a></p><pre data-type="codeBlock" text="let feeData = await ethers.provider.getFeeData();
console.log(feeData);
"><code>let feeData <span class="hljs-operator">=</span> await ethers.provider.getFeeData();
console.log(feeData);
</code></pre><pre data-type="codeBlock" text="{
  lastBaseFeePerGas: BigNumber { value: &quot;36&quot; },
  maxFeePerGas: BigNumber { value: &quot;1500000072&quot; },
  maxPriorityFeePerGas: BigNumber { value: &quot;1500000000&quot; },
  gasPrice: BigNumber { value: &quot;10000014&quot; }
}
"><code>{
  lastBaseFeePerGas: BigNumber { value: <span class="hljs-string">"36"</span> },
  maxFeePerGas: BigNumber { value: <span class="hljs-string">"1500000072"</span> },
  maxPriorityFeePerGas: BigNumber { value: <span class="hljs-string">"1500000000"</span> },
  gasPrice: BigNumber { value: <span class="hljs-string">"10000014"</span> }
}
</code></pre><p><code>feeData</code>获得的数值即为推荐值，如果不太怕拥堵，可以直接使用。</p><pre data-type="codeBlock" text="let feeData = await ethers.provider.getFeeData();
await contract.connect(account).method(params..., {
            maxFeePerGas: feeData.maxFeePerGas,
            maxPriorityFeePerGas: feeData.maxPriorityFeePerGas,
});
"><code>let feeData <span class="hljs-operator">=</span> await ethers.provider.getFeeData();
await <span class="hljs-keyword">contract</span>.connect(account).method(params..., {
            maxFeePerGas: feeData.maxFeePerGas,
            maxPriorityFeePerGas: feeData.maxPriorityFeePerGas,
});
</code></pre><p>当然，如果是在抢购东西，也可以考虑酌情增加。</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[把NFT设置为ENS头像]]></title>
            <link>https://paragraph.com/@alex-2/nft-ens</link>
            <guid>oNkcKsrWhgPmxIOmamGb</guid>
            <pubDate>Wed, 05 Oct 2022 06:34:19 GMT</pubDate>
            <description><![CDATA[很多人都知道，ENS可以设置avatar，也就是头像，但很多人可能都没用过，我就以我最喜欢的SeeDAO#314为例，告诉大家如何设置。修改之前的默认头像步骤很简单，打开ENS app后有专门设置avatar的地方，格式是： eip155:1/erc[721或者1155]:[合约地址]/[NFT编号] 比如： eip155:1/erc721:0x23fDA8a873e9E46Dbe51c78754dddccFbC41CFE1/314 值得注意的是，所填写的NFT必须是自己持有的，别人的应该不行（我没试过，看文档说不行）。 点击编辑，然后填入准备好的URL，填入后右边会出现一个贴心的绿色小对号，说明没问题了，可以点击“确认”发起交易，确认交易完成。设置avatar然后刷新页面，可以看到ENS的头像已经换成新的了。修改之后的新头像这是ENS官方App的头像，自然响应是快速准确的。至于其他第三方DApp能不能能信，多久能自动更新，可能就得随缘了。]]></description>
            <content:encoded><![CDATA[<p>很多人都知道，ENS可以设置avatar，也就是头像，但很多人可能都没用过，我就以我最喜欢的SeeDAO#314为例，告诉大家如何设置。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e0d9fdc71a2494bdf2082b4a9811ef1fe3f46ce8bfe58c371c5900851fe9c6b0.png" alt="修改之前的默认头像" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">修改之前的默认头像</figcaption></figure><p>步骤很简单，打开ENS app后有专门设置avatar的地方，格式是：</p><p><code>eip155:1/erc[721或者1155]:[合约地址]/[NFT编号]</code></p><p>比如：</p><p><code>eip155:1/erc721:0x23fDA8a873e9E46Dbe51c78754dddccFbC41CFE1/314</code></p><p>值得注意的是，所填写的NFT必须是自己持有的，别人的应该不行（我没试过，看文档说不行）。</p><p>点击编辑，然后填入准备好的URL，填入后右边会出现一个贴心的绿色小对号，说明没问题了，可以点击“确认”发起交易，确认交易完成。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7e50eaf5a7b17a3b32dc8dcb02f145f84fef65cf353def694bfdda53f4332dae.png" alt="设置avatar" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">设置avatar</figcaption></figure><p>然后刷新页面，可以看到ENS的头像已经换成新的了。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/de71a717364417b67bc2e0874a05d078008d3f1f301f8edc930374b00071cf48.png" alt="修改之后的新头像" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">修改之后的新头像</figcaption></figure><p>这是ENS官方App的头像，自然响应是快速准确的。至于其他第三方DApp能不能能信，多久能自动更新，可能就得随缘了。</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[骗子的助记词和私钥列表]]></title>
            <link>https://paragraph.com/@alex-2/w4TasWwsqhLpUSO2zub9</link>
            <guid>w4TasWwsqhLpUSO2zub9</guid>
            <pubDate>Tue, 06 Sep 2022 05:52:24 GMT</pubDate>
            <description><![CDATA[这几个月，我收到了很多推特(@alexgiantwhale)私信，说自己是个学生，刚接触币圈，不知道怎么把账户里的U转出来，并贴出来自己的助记词，希望帮忙转出来，一人一半云云。相信很多人都收到了很多一样的私信，应该也都知道这是骗局，一笑置之就好。 不过总会有人上当，不然他们也不会这么一而再再而三的发私信了。事情是这样的：很多人导入帐户后，发现里边没有Gas，会以为是因为缺少Gas才无法转出USDT的，其实不是。这些帐户在被机器人监控着，目的是骗你的手续费，你转入一点ETH或者TRX做手续费，会被马上转走；那些USDT大多数时候，是已经被列入了黑名单的(Tether在合约层面控制），也就是说就算里边有Gas你也转不走，那些仅仅是骗你上钩的诱饵；为了防止更多人上当，我罗列几个我收到的私信，供大家参考（再次警告，不要觉得自己很聪明，能从骗子的手中抢食吃）Hi! i&apos;m a student I received a sum of 6800USDT(trx20) but I don&apos;t know how to sell USDT to get USD into my b...]]></description>
            <content:encoded><![CDATA[<p>这几个月，我收到了很多推特(<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/alexgiantwhale">@alexgiantwhale</a>)私信，说自己是个学生，刚接触币圈，不知道怎么把账户里的U转出来，并贴出来自己的助记词，希望帮忙转出来，一人一半云云。相信很多人都收到了很多一样的私信，应该也都知道这是骗局，一笑置之就好。</p><p>不过总会有人上当，不然他们也不会这么一而再再而三的发私信了。事情是这样的：</p><ol><li><p>很多人导入帐户后，发现里边没有Gas，会以为是因为缺少Gas才无法转出USDT的，其实不是。这些帐户在被机器人监控着，目的是骗你的手续费，你转入一点ETH或者TRX做手续费，会被马上转走；</p></li><li><p>那些USDT大多数时候，是已经被列入了黑名单的(Tether在合约层面控制），也就是说就算里边有Gas你也转不走，那些仅仅是骗你上钩的诱饵；</p></li></ol><p>为了防止更多人上当，我罗列几个我收到的私信，供大家参考（再次警告，不要觉得自己很聪明，能从骗子的手中抢食吃）</p><blockquote><p>Hi! i&apos;m a student I received a sum of 6800USDT(trx20) but I don&apos;t know how to sell USDT to get USD into my bank account. . Can you teach me how to use my Trust wallet? I will pay 300USDT as a reward! 12 Mnemonic Phrase Tron: board range direct ship napkin false pilot adjust vicious small festival major</p><p>password private key: 348c16ec953726b1b7be86cc04c40407c87a329f6fb54146949aab55de3944c3</p></blockquote><blockquote><p>Hello. i&apos;m a student i have 5000$ usdt in my wallet but i&apos;m not working right now i don&apos;t have money to deposit to withdraw my usdt can you help me withdraw money we can split it in half this is my wallet key code me and my wallet address please help me withdraw it. 12 Mnemonic Phrase Tron: page arrange happy erode uncover cousin certain depend saddle awake merry emerge password private key: fbd73f357e16a7b4cdd7bad65fa7aa26333586c317e1225ebddc59b69e4ee0c1</p></blockquote><blockquote><p>Hi! i&apos;m a student I received a sum of 686USDT(trx20) but I don&apos;t know how to sell USDT to get USD into my bank account. . Can you teach me how to use my Trust wallet? I will pay 200USDT as a reward!</p><p>this is my wallet key: away poem actual drop nuclear cluster saddle decrease engage valve trade airport</p><p>address encoding: 51bd5ae1954a31461a5907683beeed05098b3765b6ff55e25bf89a6283b645f2</p></blockquote><blockquote><p>Hi! i&apos;m a student I received a sum of 686USDT(trx20) but I don&apos;t know how to sell USDT to get USD into my bank account. . Can you teach me how to use my Trust wallet? I will pay 200USDT as a reward!</p><p>this is my wallet key: rate drip find gossip senior diet hungry mirror early absorb despair visit</p><p>address encoding: 11d1fde9b1f191efcef4e473fbd52ef3ed9e9201c8b1786fa5861031f6909606</p></blockquote><blockquote><p>This is my wallet key. 1: practice 2: potato 3: suggest 4:market 5: coconut 6: notable 7: toast 8: tray 9: dwarf 10: toss 11: stick 12: gather Password private key: c976fa3ff9b54de3040785f23843850028e1d84aae96d8de318df854eb9c8a0e</p></blockquote><blockquote><p>Hi! i&apos;m a student I received a sum of 6860USDT(trx20) but I don&apos;t know how to sell USDT to get USD into my bank account. . Can you teach me how to use my Trust wallet? I will pay 200USDT as a reward!</p></blockquote><blockquote><p>Hi! i&apos;m a student I received a sum of 5006USDT(trx20) but I don&apos;t know how to sell USDT to get USD into my bank account. . Can you teach me how to use my Trust wallet? I will pay 200USDT as a reward! 12 Mnemonic Phrase Tron: festival father pear increase office table agree fix dress defense very pudding password private key: 7387e4fe1edeee2f674b4a899f22cf3e9f0976f7a75051d5672c7f141b2d82e3</p></blockquote><blockquote><p>Hello, I have 500 USDT in my wallet now, but I don&apos;t know why I can&apos;t withdraw, can you help me?If the withdrawal is successful, you will transfer 200 USDT as your return, thank you. this is my wallet key: practice potato suggest market coconut notable toast tray dwarf toss stick gather address encoding: c976fa3ff9b54de3040785f23843850028e1d84aae96d8de318df854eb9c8a0e</p></blockquote><blockquote><p>你好，我现在钱包里有3120个USDT（TRC20），但是我不知道为什么会不能取款，你能帮帮我吗？如果取款成功，你划走200个USDT作为对你的回报，谢谢您。 12 位数助记词 crew equip chapter badge firm script world burst smoke hobby chair soda</p></blockquote><p>骗子也挺努力的，还给我翻译成了中文！</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[兔子洞任务之发布Mirror文章]]></title>
            <link>https://paragraph.com/@alex-2/mirror</link>
            <guid>IS3fHy7NXAKiKcTNHFwt</guid>
            <pubDate>Fri, 05 Aug 2022 02:37:32 GMT</pubDate>
            <description><![CDATA[【奖励已经领完，奖励已经领完，奖励已经领完】 【奖励发完后，官方又紧急增加了一批，所以又有一些朋友领到了】 万万没想到，一段时间沉寂之后的兔子洞，放出来的任务竟然是发布 Mirror 文章。任务非常简单，只需要完成过 NFT Skill，并认证过 BrightID 就可以。 https://app.rabbithole.gg/quests/mirror-reflections NFT Skill 当然可以刷，但 BrightID 是 AI+人工认证的（认证时需要开启摄像头参加一个视频会议），所以不好刷。 我一直比较看好 RabbitHole 选项目的能力，而且确实任务都不多，所以我注意到的话，一般都会参加一下，一方面这是撸羊毛，说不定后面有大用，一方面是了解新产品，有些东西就算没有羊毛，也要了解，说不定后面就成为大趋势了呢。]]></description>
            <content:encoded><![CDATA[<p>【奖励已经领完，奖励已经领完，奖励已经领完】</p><p>【奖励发完后，官方又紧急增加了一批，所以又有一些朋友领到了】</p><p>万万没想到，一段时间沉寂之后的兔子洞，放出来的任务竟然是发布 Mirror 文章。任务非常简单，只需要完成过 NFT Skill，并认证过 BrightID 就可以。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.rabbithole.gg/quests/mirror-reflections">https://app.rabbithole.gg/quests/mirror-reflections</a></p><p>NFT Skill 当然可以刷，但 BrightID 是 AI+人工认证的（认证时需要开启摄像头参加一个视频会议），所以不好刷。</p><p>我一直比较看好 RabbitHole 选项目的能力，而且确实任务都不多，所以我注意到的话，一般都会参加一下，一方面这是撸羊毛，说不定后面有大用，一方面是了解新产品，有些东西就算没有羊毛，也要了解，说不定后面就成为大趋势了呢。</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[试用PartyBid]]></title>
            <link>https://paragraph.com/@alex-2/partybid</link>
            <guid>mmhsAipD2Lvy45Iy0Nnk</guid>
            <pubDate>Thu, 21 Jul 2022 09:18:51 GMT</pubDate>
            <description><![CDATA[PartyBid 是一个组团买 NFT 的平台，你可以创建一个 Party，然后输入你想买的NFT的地址，可以是 OpenSea 等商品链接。 比如我选择了一个地板价的SeeDAO Genesis。挑选标的点开选中的NFT，进入详情页，复制地址到 PartyBid，起名字，包括Party的名字和代币的名字，填有效期，确定。创建一个Party创建完成后，自己再加点ETH进去，就可以了。如果拍卖成功，你的份额跟你充进去的钱多少有关，如果失败，你可以拿回你的钱。]]></description>
            <content:encoded><![CDATA[<p>PartyBid 是一个组团买 NFT 的平台，你可以创建一个 Party，然后输入你想买的NFT的地址，可以是 OpenSea 等商品链接。</p><p>比如我选择了一个地板价的SeeDAO Genesis。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4353e3fea8be96467ca15e2da6c4353965c84daaf61792ecaa7d852b5ae7cbdc.png" alt="挑选标的" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">挑选标的</figcaption></figure><p>点开选中的NFT，进入详情页，复制地址到 PartyBid，起名字，包括Party的名字和代币的名字，填有效期，确定。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f11159e5e9b49a8bac26d229964348d75eb9da8af25d7454ebfcd28942d4505e.png" alt="创建一个Party" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">创建一个Party</figcaption></figure><p>创建完成后，自己再加点ETH进去，就可以了。如果拍卖成功，你的份额跟你充进去的钱多少有关，如果失败，你可以拿回你的钱。</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[SeeDAO估值的一种思路]]></title>
            <link>https://paragraph.com/@alex-2/seedao-2</link>
            <guid>51U9J7mDe7MT6YuZscjo</guid>
            <pubDate>Tue, 08 Mar 2022 07:18:25 GMT</pubDate>
            <description><![CDATA[了解SeeDAO项目的人应该都知道，上个月开始，SeeDAO NFT持有人增加了一些福利，每次AMA如果有白名单，会给持有人在单独频道抽奖。 这个抽奖因为参与人少，中奖率非常高。比如一直是中奖绝缘体的我，参加了3次，居然中了2次。这让我不得不对此事重新思考起来。 假设，我是说假设，我参加了每次AMA，中了一些奖，并卖掉那些NFT，有一些盈利的话，这个价值该如何衡量呢？ 假设一个月有2次AMA，中奖概率1/10（现在大概每次50人参加，有5个白单），那么每年中奖的白单有12*2/10=2.4个。假设每个白单平均能赚到0.05E纯利润，那就是2.4*0.05=0.12。 也就是说，SeeDAO NFT别的权益全都不算，光白名单权益，一年带来的现金流有可能达到0.12E。 当然了，这中间也付出了辛苦的劳动（每次AMA都要去Discord频道动手点一次小表情），时间成本也是要计算在内的。 不过我还是不敢相信，也许哪里算的不对，比如中奖概率也许没有那么高，于是我多假设了几个值，把他们都计算了一下，好像最差也能每年获利0.06。获利估算哦，对了，有个很重要的成本没有算进去，如果白单项目跑路或...]]></description>
            <content:encoded><![CDATA[<p>了解SeeDAO项目的人应该都知道，上个月开始，SeeDAO NFT持有人增加了一些福利，每次AMA如果有白名单，会给持有人在单独频道抽奖。</p><p>这个抽奖因为参与人少，中奖率非常高。比如一直是中奖绝缘体的我，参加了3次，居然中了2次。这让我不得不对此事重新思考起来。</p><p>假设，我是说假设，我参加了每次AMA，中了一些奖，并卖掉那些NFT，有一些盈利的话，这个价值该如何衡量呢？</p><p>假设一个月有2次AMA，中奖概率1/10（现在大概每次50人参加，有5个白单），那么每年中奖的白单有<code>12*2/10=2.4</code>个。假设每个白单平均能赚到0.05E纯利润，那就是<code>2.4*0.05=0.12</code>。</p><p>也就是说，SeeDAO NFT别的权益全都不算，光白名单权益，一年带来的现金流有可能达到0.12E。</p><p>当然了，这中间也付出了辛苦的劳动（每次AMA都要去Discord频道动手点一次小表情），时间成本也是要计算在内的。</p><p>不过我还是不敢相信，也许哪里算的不对，比如中奖概率也许没有那么高，于是我多假设了几个值，把他们都计算了一下，好像最差也能每年获利0.06。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ac88c9909a39d26cfb6edefdd5797d6916de07b4fabd88bc9503d50fc198f487.png" alt="获利估算" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">获利估算</figcaption></figure><p>哦，对了，有个很重要的成本没有算进去，如果白单项目跑路或者归零了，mint的成本也是要计算在内的，好吧，那最差的情况应该是没赔没赚。</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[NFT购买攻略]]></title>
            <link>https://paragraph.com/@alex-2/nft</link>
            <guid>Qi67X4ejavqjgA8bcOnx</guid>
            <pubDate>Fri, 11 Feb 2022 05:08:42 GMT</pubDate>
            <description><![CDATA[目前NFT市场可以说鱼龙混杂，大佬们都在抢猴子，韭菜们都在玩空气。 而处于中间阶层的普通投资者，没那么多资金可以操作，因此暂时没当上大佬，但也不甘心当韭菜，那有什么办法，可以少踩坑，快速积累财富吗？ 有的，最少有2条规则可以参考。 第一，监控地板价变化。地板价是大家都在关注的指标，包括项目方和大户，都会关注。地板价持续走高，一般说明项目火热。如果地板价一直走低，那恐怕是热度已经过去了，可能会引起大家的警觉，甚至争相卖出引发踩踏。 在资金量能覆盖多个标的的情况下，聪明的投资者可能会根据地板价的变动，快速的买入卖出，摊薄成本，甚至使自己负成本持有该项目一定数量的NFT。 第二，计算稀有度。一个NFT好看不好看，每个人都有自己的看法。但稀有不稀有，好不好挖出来，大部分人都有类似的感觉。这个直观感觉，基本上和稀有度计算结果重合。也就是说，如果你算了下总的NFT数量，某种NFT占多少个，那么稀缺不稀缺，应该是很明白的了。 如果你手上有所有NFT的排名，根据OpenSea卖单的情况，快速的买入稀有NFT，卖出不太稀有的，这样就会迅速的把你手上的NFT向头部靠拢。最后等大家都开始按稀有度买卖的...]]></description>
            <content:encoded><![CDATA[<p>目前NFT市场可以说鱼龙混杂，大佬们都在抢猴子，韭菜们都在玩空气。</p><p>而处于中间阶层的普通投资者，没那么多资金可以操作，因此暂时没当上大佬，但也不甘心当韭菜，那有什么办法，可以少踩坑，快速积累财富吗？</p><p>有的，最少有2条规则可以参考。</p><p>第一，监控地板价变化。地板价是大家都在关注的指标，包括项目方和大户，都会关注。地板价持续走高，一般说明项目火热。如果地板价一直走低，那恐怕是热度已经过去了，可能会引起大家的警觉，甚至争相卖出引发踩踏。</p><p>在资金量能覆盖多个标的的情况下，聪明的投资者可能会根据地板价的变动，快速的买入卖出，摊薄成本，甚至使自己负成本持有该项目一定数量的NFT。</p><p>第二，计算稀有度。一个NFT好看不好看，每个人都有自己的看法。但稀有不稀有，好不好挖出来，大部分人都有类似的感觉。这个直观感觉，基本上和稀有度计算结果重合。也就是说，如果你算了下总的NFT数量，某种NFT占多少个，那么稀缺不稀缺，应该是很明白的了。</p><p>如果你手上有所有NFT的排名，根据OpenSea卖单的情况，快速的买入稀有NFT，卖出不太稀有的，这样就会迅速的把你手上的NFT向头部靠拢。最后等大家都开始按稀有度买卖的时候，你就可以全部出手了。</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[2022年2月买入BTC和ETH]]></title>
            <link>https://paragraph.com/@alex-2/2022-2-btc-eth</link>
            <guid>vj7d6ZAPkfTiO17352rK</guid>
            <pubDate>Fri, 11 Feb 2022 05:05:30 GMT</pubDate>
            <description><![CDATA[这几天BTC和ETH涨了一些，我已经买入现货。现在虽然又降回去了，我还是记录一下。 BTC 2022-02-08日买入，价位大约是42772上下。BTC日线(FTX)ETH 2022-01-11日买入，价位基本在3237上下。ETH日线(FTX)目前BTC已经快到成本线，ETH已经跌了5%，但我还是选择拿住，因为是现货日线，没有突破止损线。等破了止损线，再卖出不迟。]]></description>
            <content:encoded><![CDATA[<p>这几天BTC和ETH涨了一些，我已经买入现货。现在虽然又降回去了，我还是记录一下。</p><p>BTC 2022-02-08日买入，价位大约是42772上下。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ce0b9c9635acee6aeb7202efca17a38a5f184e9b942c2726ec4eeefa0e6f1a00.png" alt="BTC日线(FTX)" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">BTC日线(FTX)</figcaption></figure><p>ETH 2022-01-11日买入，价位基本在3237上下。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/afa1de51a19773467f3e7a00594b614f258ba13703ec7c973afff81e95fc1c73.png" alt="ETH日线(FTX)" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">ETH日线(FTX)</figcaption></figure><p>目前BTC已经快到成本线，ETH已经跌了5%，但我还是选择拿住，因为是现货日线，没有突破止损线。等破了止损线，再卖出不迟。</p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[我怎么在SeeDAO做项目的]]></title>
            <link>https://paragraph.com/@alex-2/seedao</link>
            <guid>7TBimUey5iOzbwZPeF1M</guid>
            <pubDate>Fri, 28 Jan 2022 07:31:12 GMT</pubDate>
            <description><![CDATA[进入SeeDAO2021年是NFT火爆的一年，各路神仙都赚的盆满钵满。我没有神仙们的技能，因此只能眼馋他们的暴富，却无能为力。 临渊羡鱼，不如退而结网。我羡慕大佬们暴富的同时，也在不停思考自己能干点什么，参与一下目前的热门领域。 我当时的认知是，现下有如下几个领域值得深入研究：Crypto Trading：币圈的交易市场，相对股票还不成熟，还有很多机会，可以进一步研究DeFi：去中心化金融，火了很久，活了很久，应该还会持续创新下去，一定会有更快更好用的DeFi产品出现，是个机会NFT：容易出圈，学习成本低，有一定的艺术性，是个机会具体到NFT这方面，当时我在朋友的介绍下，参与了一个NFT传递的项目，叫CryptoC。具体玩法也简单，在微信群里，发布2枚创始的NFT，如果持有人选择发送给别人，那么他会自动再收到一枚新的。接收人也一样，只要再往后面传递给别人，都可以再收到一枚。活动结束后，持有的NFT就算是以后其他活动的徽章或者门票了。再往后，项目方也没有食言，果然通过几个活动，给持有人空投了一些NFT，其中就包括河里人和SeeDAO。 而SeeDAO项目，是一个关于DAO的实验，尝...]]></description>
            <content:encoded><![CDATA[<h3 id="h-seedao" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">进入SeeDAO</h3><p>2021年是NFT火爆的一年，各路神仙都赚的盆满钵满。我没有神仙们的技能，因此只能眼馋他们的暴富，却无能为力。</p><p>临渊羡鱼，不如退而结网。我羡慕大佬们暴富的同时，也在不停思考自己能干点什么，参与一下目前的热门领域。</p><p>我当时的认知是，现下有如下几个领域值得深入研究：</p><ul><li><p>Crypto Trading：币圈的交易市场，相对股票还不成熟，还有很多机会，可以进一步研究</p></li><li><p>DeFi：去中心化金融，火了很久，活了很久，应该还会持续创新下去，一定会有更快更好用的DeFi产品出现，是个机会</p></li><li><p>NFT：容易出圈，学习成本低，有一定的艺术性，是个机会</p></li></ul><p>具体到NFT这方面，当时我在朋友的介绍下，参与了一个NFT传递的项目，叫CryptoC。具体玩法也简单，在微信群里，发布2枚创始的NFT，如果持有人选择发送给别人，那么他会自动再收到一枚新的。接收人也一样，只要再往后面传递给别人，都可以再收到一枚。活动结束后，持有的NFT就算是以后其他活动的徽章或者门票了。再往后，项目方也没有食言，果然通过几个活动，给持有人空投了一些NFT，其中就包括河里人和SeeDAO。</p><p>而SeeDAO项目，是一个关于DAO的实验，尝试通过DAO这种新兴的组织形式，聚合起一批人做一些事情，主要是基于创作者，想搞搞创作者经济。这种新兴的合作形式，可能是公司制的一种替代，或者补充，也正是我感兴趣的地方。因此我就想更深入的体验一下。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">参与项目</h3><p>我参与SeeDAO的方式也很简单，因为我本来就是开发者，也就顺其自然的加入Discord群，进入了开发者公会。通过一段时间的观察，我发现他们可能需要一些小工具，但又没有清晰的概念，因为很多朋友并不是互联网出身，对各种各样的新工具应接不暇，已经没有精力再思考更多效率问题。</p><p>因此我直接提议通过机器人同步群内消息，迅速得到大家的响应。我又把我的思路经过进一步的整理，做出一个大致的技术方案，并对开发周期和成本做了一定的预估。后来kc也加入进来，把技术方案整理后放到论坛作为一个正式提案。经过反复讨论，我们制定了一个同步方案，即通过机器人同步Discord群内重要信息到官网，形成二次传播。</p><p>说干就干，我们迅速就确定了相关参与人，并在社区会议上讲解我们的计划，得到了大家的认可。有了社区的初步认可，后面就简单了。我们把细化后的技术方案和成本规划提交，申请Grants，分工，开发，交付，一气呵成。</p><p>这个项目有三个参与者，我，kc，F，大家都是专业人士。其中kc是专业产品经理，对互联网产品和区块链产品都可以很好的把握，F是经验丰富的前端工程师，我也有多年的后端经验，因此进展非常快，几乎感觉不到磨合期，项目就结束了。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">后记</h3><p>昨天开了开发者公会的线上会议，感觉到很多开发小伙伴都想帮忙，但不知道从哪里入手，我简单总结下在SeeDAO参与项目的过程，供参考：</p><ul><li><p>在Discord群里关注有价值的提案</p></li><li><p>和发起人一起细化技术细节，进行技术调研，确保可行性</p></li><li><p>如有必要，一起细化提案中的技术方案细节，预估开发周期和报酬</p></li><li><p>在社区广泛讨论，争取更多人支持，并向协调委员会申请Grants或者参加路演</p></li><li><p>落地开发，收取报酬</p></li></ul>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
        <item>
            <title><![CDATA[感谢ENS，我将与你一路同行]]></title>
            <link>https://paragraph.com/@alex-2/ens</link>
            <guid>jf2VKFWStyEATrfFVhHx</guid>
            <pubDate>Thu, 18 Nov 2021 05:57:16 GMT</pubDate>
            <description><![CDATA[2021年11月9日ENS开放空投领取。 OKEx当时即上线了ENS交易对。数小时之后，Gate也上线了，再之后FTX也上线了ENS现货和永续合约。ENS代币价格最低$25，高的时候冲到了$85，现在基本上维持在$50上下。 下图是2021年11月18日截取的ENS价格走势图。ENS/USDT价格走势(OKEx)以太坊的核心基础设施ENS作为以太坊最核心的基础设施，是最标准的去中心化实现，拥有最稳定可靠的盈利模式。最核心的基础设施以太坊域名系统，可以让难记的地址变得好记，从这个方面讲，它的用途和互联网域名一模一样。但不同的是，它可以设置反向解析，因此可以根据地址找到域名，就好比你竟然可以根据IP地址找到该地址绑定的主域名似的。这还是挺酷的。 目前ENS已经广泛的用在Etherscan、MetaMask等等很多地方，未来应该是能展示地址的地方，都可能展示域名（从技术上讲，只需要web3.js等库内置该功能即可，开发者可以平滑升级）。 除了这些基本的解析和反向解析之外，ENS还可以存储诸如Twitter、Reddit等社交帐号和常用网站的账户或地址信息，方便第三方网站直接展示头像、链...]]></description>
            <content:encoded><![CDATA[<p>2021年11月9日ENS开放空投领取。</p><p>OKEx当时即上线了ENS交易对。数小时之后，Gate也上线了，再之后FTX也上线了ENS现货和永续合约。ENS代币价格最低$25，高的时候冲到了$85，现在基本上维持在$50上下。</p><p>下图是2021年11月18日截取的ENS价格走势图。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/644bcf3be6acef49fb645d1317a0e28a02f5b29464853d25bbcfa2e8beba406a.png" alt="ENS/USDT价格走势(OKEx)" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">ENS/USDT价格走势(OKEx)</figcaption></figure><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">以太坊的核心基础设施</h2><p>ENS作为以太坊最核心的基础设施，是最标准的去中心化实现，拥有最稳定可靠的盈利模式。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">最核心的基础设施</h3><p>以太坊域名系统，可以让难记的地址变得好记，从这个方面讲，它的用途和互联网域名一模一样。但不同的是，它可以设置反向解析，因此可以根据地址找到域名，就好比你<strong>竟然</strong>可以根据IP地址找到该地址绑定的主域名似的。这还是挺酷的。</p><p>目前ENS已经广泛的用在Etherscan、MetaMask等等很多地方，未来应该是能展示地址的地方，都可能展示域名（从技术上讲，只需要web3.js等库内置该功能即可，开发者可以平滑升级）。</p><p>除了这些基本的解析和反向解析之外，ENS还可以存储诸如Twitter、Reddit等社交帐号和常用网站的账户或地址信息，方便第三方网站直接展示头像、链接等。这也展示了项目方的勃勃雄心，很显然他不想只是解析个域名，而想做Web3.0时代的登录枢纽。</p><p>国内用户可能还记得，有一年南山必胜客腾讯状告今日头条，其中的一条就是今日头条“盗用”了微信头像和昵称，这里“隐含”的意思很明显，就是用户的头像和昵称等，都是他们腾讯家的资产，就算用户自己，也没资格在别的平台用，更不用讨论同意或者不同意了。</p><p>到了Web3.0，理论上你可以把头像昵称放心地存储在去中心化存储上，用你自己的私钥控制，因此也就不再属于任何第三方，而是完完全全属于你自己了。</p><p>你尽可以畅想一下，你打开电脑，解锁MetaMask钱包，然后打开新淘宝网站，<strong>签名</strong>验证身份，然后开始购物，结账时你点击了<strong>提交</strong>，等待着今天晚上或者明天早上收到你买的衣服。买完衣服以后，你打开新腾讯视频，因为上周你已经签名登录过了，登录还没有过期，因此你不需要重新签名，开始直接看最新的美剧《我的元宇宙邻居杰克》，并开心的和美国佬一起弹幕。看了一会儿后，你想起来昨天美国总统又被枪杀了，不知道到底死了没死，因此你打开了新头条，签名登录，开始浏览美国总统的消息，发现他仍然是薛定谔的总统，医生都不敢说他死没死，只是说脑死亡，但其他身体部位还在机器的维持下正常运转，要等议员们开会讨论后，才能说他到底死没死。</p><p>这三次登录的三个网站，属于三家不同的科技巨头公司，但你的头像和昵称不属于他们，而属于你自己。你在新淘宝上用的是你家里的狗（湾湾）的照片，在新腾讯和新头条则都是用的猫（香香）的头像，所有的昵称都是一样的（宇哥在元宇宙）。是不是有点意思了？</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">最标准的去中心化实现</h3><p>早期的ENS竞拍操作起来非常复杂，后来改良成了现在的模式，只需要3步（其实是2步，中间那步是“等一等”）即可注册一个域名。</p><p>首先注册服务本身是个智能合约，而用户注册之后得到的域名，是一个标准的ERC-721，这就让ENS域名可以在像OpenSea这样的公开商城里直接转让和购买，非常的方便。</p><p>整个ENS系统，没有借助任何中心化的服务，就完成了注册、管理、续费等核心业务，可以说是教科书式的去中心化解决方案。</p><p>（到期邮件提醒服务，不算是ENS核心服务之一，只能算是第三方附加的免费服务，因此不在讨论范围之内）</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">最稳定可靠的盈利模式</h3><p>年费这种盈利模式，像山岳一样古老，基本上不需要讨论。</p><p>唯一值得一提的是，ENS的年费服务内容，其实只有一项，即技术支持。</p><p>为什么呢？因为你ENS上的状态内容存储在以太链上，空间和时间是节点和矿工在负担。ENS提供的是“解析服务”，也就是顺利地把域名映射成地址，或者相反。所以这个年费是解析服务费，而不是存储费。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">代币分配的新标杆</h2><p>ENS项目方最厉害的地方在于，他敢把代币直接撒给用户，而完全不担心币价。这在国内项目方是完全不可能的，国外的恐怕也没几个。</p><blockquote><p>There will be 100 million total $ENS tokens, and the distribution is as follows:</p><ul><li><p>25% airdrop to .ETH holders (&gt;137k accounts)</p></li><li><p>25% to ENS contributors (&gt;100 individuals and groups, plus hundreds of Discord users)</p></li><li><p>50% to the DAO community treasury</p></li></ul></blockquote><p>因为他们的方案没有给投资者留有任何份额，所以白皮书里就有了这么一句霸气的话：</p><blockquote><p>There are no tokens allocated for investors, since there are none.</p></blockquote><p>可以毫不夸张地说，ENS给代币分配方案树立了一个新的行业标杆。也许，未来会有更多的优秀项目会追随ENS的步伐，会引领这种以早期核心用户利益为第一优先的新潮流。</p><h2 id="h-dao" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">值得期待的DAO治理</h2><p>ENS的DAO治理是值得期待的，原因有这么几个：</p><ol><li><p>业务清晰，盈利模式稳定，且有前人可参考；</p></li><li><p>之前的团队做的不错，之后肯定也不会差；</p></li><li><p>有Coinbase申请加入（我猜大概率会通过），应该更重视长期利益，不会太短视；</p></li><li><p>未来年费的价格标准和用途、对新项目的扶持（比如空投）等创新点可能有一两个热点出来；</p></li></ol><p>总之，我觉得DAO治理应该会偏重长期，会越来越好，这也是机构抢筹码的原因和期望所在，我等小散户可以跟上节奏，用时间来制造一些Alpha出来。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">未来展望</h2><p>目前空投的领取速度已经很慢了，剩下的可能是不打算领的，或者领了也不会马上卖的，市场上的供给基本上算稳定了。就看买家这边会变多还是变少。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2b42240400d037a3fa5a6ce6b80666cbc009acebcf5e10b5c519c3904a80c86b.png" alt="空投领取速度" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">空投领取速度</figcaption></figure><p>可以说，50美元的估值，FDV就是50美元*1亿=50亿美元，不能说很高，后续如果BTC和ETH继续涨的话，ENS没有理由会一直跌。</p><p>ENS空投是我收到的最大的一笔空投，甚至是目前为止单日收入的峰值，我非常感谢ENS给了我这个机会，现在也仍有持仓。后续会一直关注ENS项目和币价，争取做到：</p><p><strong>同ENS一路同行，前往未来。</strong></p>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/da152a0f99580c465da04a7b641bd7a001dad648dfb4be181473cef1a534c785.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[撸羊毛必备：Outlook别名邮箱注册]]></title>
            <link>https://paragraph.com/@alex-2/outlook</link>
            <guid>WN9zBLqkOvHabz5wWIxT</guid>
            <pubDate>Sun, 10 Oct 2021 01:01:29 GMT</pubDate>
            <description><![CDATA[Outlook别名，顾名思义，它不是一个单独的邮箱，而只是你原来邮箱的一个别名。所有来往邮件都可以发送到这同一个邮箱查收的，而且你也可以选择用哪个别名回复。 但看起来他真的是另外一个完全不同的邮箱，比Gmail那种后缀邮箱还要好。在注册其他网站撸羊毛的时候，这一点非常有用。 第一步，点击设置； 第二步，全部设置；进入设置第三步，同步电子邮件； 第四步，管理或选择主别名；管理别名第五步，添加电子邮件；添加别名第六步，选择适当的用户名，如果被别人占用了，第7步会提示，重新选择即可； 第七步，点击“添加别名”，你就有一个新的别名邮箱了。添加别名还有一些规则值得注意：每个帐户总共最多可以创建 10 个别名；每周最多可以更改别名两次；]]></description>
            <content:encoded><![CDATA[<p>Outlook别名，顾名思义，它不是一个单独的邮箱，而只是你原来邮箱的一个别名。所有来往邮件都可以发送到这同一个邮箱查收的，而且你也可以选择用哪个别名回复。</p><p>但看起来他真的是另外一个完全不同的邮箱，比Gmail那种后缀邮箱还要好。在注册其他网站撸羊毛的时候，这一点非常有用。</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/bb1e677d80656b3b5e551aefc1e66fa43a541480689c8b043ed54de480acaab4.png" alt="进入设置" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">进入设置</figcaption></figure><p>第三步，同步电子邮件；</p><p>第四步，管理或选择主别名；</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/36244c7d93ba1dbac3dddc5a8956737023e818bda56ad188270136dd833d94a7.png" alt="管理别名" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">管理别名</figcaption></figure><p>第五步，添加电子邮件；</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2b41e69485c6978df913b79d2cd58524182d05402e939370db93b3694c917222.png" alt="添加别名" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">添加别名</figcaption></figure><p>第六步，选择适当的用户名，如果被别人占用了，第7步会提示，重新选择即可；</p><p>第七步，点击“添加别名”，你就有一个新的别名邮箱了。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/512f6f81e0167c3b147f6e32e7f97ff2b3fd7407449494a7788acd04fae5586c.png" alt="添加别名" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">添加别名</figcaption></figure><p>还有一些规则值得注意：</p><ol><li><p>每个帐户总共最多可以创建 10 个别名；</p></li><li><p>每周最多可以<strong>更改</strong>别名两次；</p></li></ol>]]></content:encoded>
            <author>alex-2@newsletter.paragraph.com (Alex)</author>
        </item>
    </channel>
</rss>