<?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>zhanglu.eth</title>
        <link>https://paragraph.com/@zhanglu</link>
        <description>A Defi GameFi SocialFi Experiencer</description>
        <lastBuildDate>Fri, 24 Jul 2026 23:38:38 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>zhanglu.eth</title>
            <url>https://storage.googleapis.com/papyrus_images/ec97ba0598f392eeefcf31e63992b88cee97ecedbe20be5dd33f74b91493fa32.webp</url>
            <link>https://paragraph.com/@zhanglu</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[https://tap.eclipse.xyz/养牛脚本]]></title>
            <link>https://paragraph.com/@zhanglu/https-tap-eclipse-xyz</link>
            <guid>90lKgAREel6YIBFvhjLU</guid>
            <pubDate>Mon, 30 Dec 2024 06:33:47 GMT</pubDate>
            <description><![CDATA[右键检查元素，点击控制台，粘贴脚本，enter键执行// 脚本源码在下面没有邀请码的这里还有3个：prwheA TtvAZ5 erYPRG图1 // 第一步：找到 &#x3C;canvas> 元素 const canvasElement = document.querySelector('canvas'); if (canvasElement) { let clickCount = 0; // 当前点击次数 const maxClicks = 10000; // 最大点击次数，可以根据需要修改 // 第二步：创建一个函数来模拟点击 const simulateClick = () => { // 创建一个点击事件 const clickEvent = new MouseEvent('click', { bubbles: true, // 确保事件会冒泡 cancelable: true, // 允许事件取消 view: window, // 使事件感知到窗口的上下文 }); // 派发事件到 canvas 元素 canvasElement.dispatchEvent(clickE...]]></description>
            <content:encoded><![CDATA[<p>右键检查元素，点击控制台，粘贴脚本，enter键执行</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">// 脚本源码在下面</h2><h3 id="h-3prwhea-ttvaz5-eryprg" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">没有邀请码的这里还有3个：prwheA TtvAZ5 erYPRG</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/02aacfe5ee9668454327f2bf67d952fd544ec3afff8dd1ac8ac2eae37fdad6bb.png" alt="图1" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">图1</figcaption></figure><pre data-type="codeBlock" text="

// 第一步：找到 &lt;canvas&gt; 元素
const canvasElement = document.querySelector(&apos;canvas&apos;);

if (canvasElement) {
    let clickCount = 0; // 当前点击次数
    const maxClicks = 10000; // 最大点击次数，可以根据需要修改

    // 第二步：创建一个函数来模拟点击
    const simulateClick = () =&gt; {
        // 创建一个点击事件
        const clickEvent = new MouseEvent(&apos;click&apos;, {
            bubbles: true, // 确保事件会冒泡
            cancelable: true, // 允许事件取消
            view: window, // 使事件感知到窗口的上下文
        });

        // 派发事件到 canvas 元素
        canvasElement.dispatchEvent(clickEvent);
        // console.log(`模拟点击次数：${clickCount + 1}`);

        clickCount++; // 增加点击次数

        // 如果点击次数达到最大值，清除定时器
        if (clickCount &gt;= maxClicks) {
            clearInterval(intervalId); // 停止定时器
            console.log(&apos;达到最大点击次数，停止模拟点击&apos;);
        }
    };

    // 第三步：每 0.1 秒执行一次点击
    const intervalId = setInterval(simulateClick, 300); // 100ms = 0.1s

} else {
    console.error(&apos;未找到 canvas 元素&apos;);
}
"><code>

<span class="hljs-comment">// 第一步：找到 &#x3C;canvas> 元素</span>
const canvasElement <span class="hljs-operator">=</span> document.querySelector(<span class="hljs-string">'canvas'</span>);

<span class="hljs-keyword">if</span> (canvasElement) {
    let clickCount <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; <span class="hljs-comment">// 当前点击次数</span>
    const maxClicks <span class="hljs-operator">=</span> <span class="hljs-number">10000</span>; <span class="hljs-comment">// 最大点击次数，可以根据需要修改</span>

    <span class="hljs-comment">// 第二步：创建一个函数来模拟点击</span>
    const simulateClick <span class="hljs-operator">=</span> () <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
        <span class="hljs-comment">// 创建一个点击事件</span>
        const clickEvent <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> MouseEvent(<span class="hljs-string">'click'</span>, {
            bubbles: <span class="hljs-literal">true</span>, <span class="hljs-comment">// 确保事件会冒泡</span>
            cancelable: <span class="hljs-literal">true</span>, <span class="hljs-comment">// 允许事件取消</span>
            <span class="hljs-keyword">view</span>: window, <span class="hljs-comment">// 使事件感知到窗口的上下文</span>
        });

        <span class="hljs-comment">// 派发事件到 canvas 元素</span>
        canvasElement.dispatchEvent(clickEvent);
        <span class="hljs-comment">// console.log(`模拟点击次数：${clickCount + 1}`);</span>

        clickCount<span class="hljs-operator">+</span><span class="hljs-operator">+</span>; <span class="hljs-comment">// 增加点击次数</span>

        <span class="hljs-comment">// 如果点击次数达到最大值，清除定时器</span>
        <span class="hljs-keyword">if</span> (clickCount <span class="hljs-operator">></span><span class="hljs-operator">=</span> maxClicks) {
            clearInterval(intervalId); <span class="hljs-comment">// 停止定时器</span>
            console.log(<span class="hljs-string">'达到最大点击次数，停止模拟点击'</span>);
        }
    };

    <span class="hljs-comment">// 第三步：每 0.1 秒执行一次点击</span>
    const intervalId <span class="hljs-operator">=</span> setInterval(simulateClick, <span class="hljs-number">300</span>); <span class="hljs-comment">// 100ms = 0.1s</span>

} <span class="hljs-keyword">else</span> {
    console.error(<span class="hljs-string">'未找到 canvas 元素'</span>);
}
</code></pre>]]></content:encoded>
            <author>zhanglu@newsletter.paragraph.com (zhanglu.eth)</author>
        </item>
        <item>
            <title><![CDATA[linux上运行StarkNet 主网节点教程（说不定有大毛）]]></title>
            <link>https://paragraph.com/@zhanglu/linux-starknet</link>
            <guid>gcK1VjO4t55tH1VTa42g</guid>
            <pubDate>Thu, 11 Aug 2022 07:23:48 GMT</pubDate>
            <description><![CDATA[warning:本教程使用的是Ubuntu 20.04 LTS or 18.04 LTS的linux操作系统。非该系统不适用此教程。第一部分 更新系统，下载必要的工具一、更新Ubuntu，安装必备软件（依次执行下列命令）sudo apt update && sudo apt upgrade -ysudo apt install curl gitsudo apt install curl build-essential gcc make -y二、更新所需要的软件包（依次执行下列命令）sudo apt install -y python3-pipsudo apt install -y build-essential libssl-dev libffi-dev python3-devsudo apt-get install libgmp-devpip3 install fastecdsasudo apt-get install -y pkg-config三、安装 Rust curl --proto &apos;=https&apos; --tlsv1.2 -sSf https://sh...]]></description>
            <content:encoded><![CDATA[<p><strong><em>warning</em></strong>:本教程使用的是<strong>Ubuntu 20.04 LTS</strong> or <strong>18.04 LTS的linux操作系统。非该系统不适用此教程。</strong></p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">第一部分 更新系统，下载必要的工具</h3><p><strong>一、更新Ubuntu，安装必备软件（依次执行下列命令）</strong></p><ul><li><p><code>sudo apt update &amp;&amp; sudo apt upgrade -y</code></p></li><li><p>sudo apt install curl git</p></li><li><p>sudo apt install curl build-essential gcc make -y</p></li></ul><p><strong>二、更新所需要的软件包（依次执行下列命令）</strong></p><ul><li><p><code>sudo apt install -y python3-pip</code></p></li><li><p><code>sudo apt install -y build-essential libssl-dev libffi-dev python3-dev</code></p></li><li><p><code>sudo apt-get install libgmp-dev</code></p></li><li><p><code>pip3 install fastecdsa</code></p></li><li><p><code>sudo apt-get install -y pkg-config</code></p></li></ul><p><strong>三、安装 Rust</strong></p><p>curl --proto &apos;=https&apos; --tlsv1.2 -sSf <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://sh.rustup.rs">https://sh.rustup.rs</a> | sh</p><p>执行到如下图，输入1，回车确认</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/621e38c99e3c57933d9885bb68ebc5540b89bd5a29399261b72cd8336141624f.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>出现下图说明Rust 安装成功，根据提示执行</p><p>source &quot;$HOME/.cargo/env&quot;</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6785d12ea7e4bb94f39f6d02f319fba4112927e549630961a12ba7a065839c9e.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>执行rustc --version 查看rust版本号是否是1.62以上</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/217a0276020d3abaced8f8b69534619bb5e084f7ff87b779ac4904dc6cbf0ead.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>rust版本不正确会无法运行最新的starkNet版本v0.3.0-alpha，运行后会报E0658错误（如果遇到这种情况需要重新安装Rust就好了）</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/58c2b4450538ef7672d2238c5dab48e1f18aa6ae1f6ff1080ad1df1889752dbc.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><strong>四、克隆对应的github代码库（黑体字为运行的代码版本）</strong></p><p>git clone --branch <strong><em>v0.3.0-alpha</em></strong> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/eqlabs/pathfinder.git">https://github.com/eqlabs/pathfinder.git</a></p><p><strong>五、为节点创建虚拟环境（依次执行下列命令）</strong></p><ul><li><p><code>sudo apt install python3.8-venv</code></p></li><li><p><code>cd pathfinder/py</code></p></li><li><p><code>python3 -m venv .venv</code></p></li><li><p><code>source .venv/bin/activate</code></p></li><li><p><code>PIP_REQUIRE_VIRTUALENV=true pip install --upgrade pip</code></p></li><li><p><code>PIP_REQUIRE_VIRTUALENV=true pip install -r requirements-dev.txt</code></p></li><li><p>pytest</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a44af79cce5b93bb5dc8318720d57062365f00a3f997b878cbad250c11624266.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><strong>六、编译pathfinder</strong></p><p><code>cargo build --release --bin pathfinder</code></p><p>（耗时较长，耐心等待）</p><p><strong>七、创建 Infura 或 Alchemy 帐户(我用的是Alchemy)</strong></p><p>参考<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/dzupp.eth/8HfjYCkbid2vlayxyPtSD9_wtb9a-wHb1uOENsAOwng">这里</a> Part 7</p><p><strong>八、运行节点（我运行的是Mainnet）</strong></p><p>cargo run --release --bin pathfinder -- --ethereum.url <strong>XXXXX</strong></p><p>XXX为下图中copy的地址</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/bbc9797670e01499d92a9ab50b0f9d9d72a63e79a2f27b6ee2cd7dd7497af277.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/4542d6346cbeb2c67ff3810b5236d4cc1268b84ea8a00e9c630ee8f7cb97e01a.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>欢迎关注我的<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/Craaie1">推特</a>,<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.lensfrens.xyz/zhanglu.lens">lens</a>,<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.cyberconnect.me/address/0xF53a69e7B19D3A92CEaE7eFB9C621d01D5Ab365A">cyberconnect</a></p><p>参考文献：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/dzupp.eth/8HfjYCkbid2vlayxyPtSD9_wtb9a-wHb1uOENsAOwng">https://mirror.xyz/dzupp.eth/8HfjYCkbid2vlayxyPtSD9_wtb9a-wHb1uOENsAOwng</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/eqlabs/pathfinder#readme">https://github.com/eqlabs/pathfinder#readme</a></p>]]></content:encoded>
            <author>zhanglu@newsletter.paragraph.com (zhanglu.eth)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/5cee45d5832d9d3792ce3b6e904a5429bbbbc5b24fbf77d3802fb4765e2792f5.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[登黄鹤楼]]></title>
            <link>https://paragraph.com/@zhanglu/omFrTeLkvf8QXVqN9x9I</link>
            <guid>omFrTeLkvf8QXVqN9x9I</guid>
            <pubDate>Thu, 18 Nov 2021 15:19:22 GMT</pubDate>
            <description><![CDATA[昔人已乘黄鹤去，此地空余黄鹤楼。 黄鹤一去不复返，白云千载空悠悠。 晴川历历汉阳树，芳草萋萋鹦鹉洲。 日暮乡关何处是？烟波江上使人愁。]]></description>
            <content:encoded><![CDATA[<p>昔人已乘黄鹤去，此地空余黄鹤楼。</p><p>黄鹤一去不复返，白云千载空悠悠。</p><p>晴川历历汉阳树，芳草萋萋鹦鹉洲。</p><p>日暮乡关何处是？烟波江上使人愁。</p>]]></content:encoded>
            <author>zhanglu@newsletter.paragraph.com (zhanglu.eth)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/eb6e2576aa5ab4275a8b0e4d677681ac99dc9800dbaa09c76a289ad19c8bea4a.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>