<?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>warwolf</title>
        <link>https://paragraph.com/@warwolf</link>
        <description>undefined</description>
        <lastBuildDate>Fri, 24 Apr 2026 02:17:51 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[如何制作一个质押DAPP--Alchemy第六课]]></title>
            <link>https://paragraph.com/@warwolf/dapp-alchemy</link>
            <guid>IuZDi5fKSxcZWqOZN6SM</guid>
            <pubDate>Fri, 18 Nov 2022 14:57:03 GMT</pubDate>
            <description><![CDATA[感谢Alchemy官网：www.alchemy.com twitter post: https://twitter.com/Z14105361Z/status/1590741530712899584?s=20 你是谁，你的软件开发背景是什么？ web2公司产品经理闯入web3 你为什么要完成这节课？ 前面五节课都学到了新的工具，现在想熟悉一下Scaffold-Eth 你什么时候完成这个项目？ 22 年 11 月 8日 您使用了哪些技术？ Scaffold-Eth 您喜欢本教程的哪些方面？ 通过这个课程，我学会了使用Scaffold-Eth；使用for循环的方式在solidity中处理指数；前端自定义发送的eth数量；合约权限控制。 挑战1：质押奖励非线性处理，我询问了社区大学的其他人，有人建议我使用了for循环的方式，于是我使用for循环方式，按照每秒钟1%的复利计算质押奖励。挑战2：前端自定义发送的eth数量。我添加了一个文本框用于输入eth数量，在点击stake按钮的时候，读取文本框的eth数量并发送交易。挑战3：加入了reset函数，点击“Ping Pong”时可以提取et...]]></description>
            <content:encoded><![CDATA[<p>感谢Alchemy官网：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.alchemy.com/">www.alchemy.com</a></p><p>twitter post: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/Z14105361Z/status/1590741530712899584?s=20">https://twitter.com/Z14105361Z/status/1590741530712899584?s=20</a></p><p>你是谁，你的软件开发背景是什么？</p><p>web2公司产品经理闯入web3</p><p>你为什么要完成这节课？</p><p>前面五节课都学到了新的工具，现在想熟悉一下Scaffold-Eth</p><p>你什么时候完成这个项目？</p><p>22 年 11 月 8日</p><p>您使用了哪些技术？</p><p>Scaffold-Eth</p><p>您喜欢本教程的哪些方面？</p><p>通过这个课程，我学会了使用Scaffold-Eth；使用for循环的方式在solidity中处理指数；前端自定义发送的eth数量；合约权限控制。</p><p>挑战1：质押奖励非线性处理，我询问了社区大学的其他人，有人建议我使用了for循环的方式，于是我使用for循环方式，按照每秒钟1%的复利计算质押奖励。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b998c82fcfc9c3741ff5ee3fca0013f30ee35a92b6e636c001f185fee0a1232b.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：前端自定义发送的eth数量。我添加了一个文本框用于输入eth数量，在点击stake按钮的时候，读取文本框的eth数量并发送交易。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f20314928cb23c20534e87b7611f6658ba5674b928eb331a875a3bc6c43ab22f.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>挑战3：加入了reset函数，点击“Ping Pong”时可以提取eth并重新计时。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d8dd96604ae129a428f410df91f18108b8b2eb70f9123c6286b62037baea4dc9.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>]]></content:encoded>
            <author>warwolf@newsletter.paragraph.com (warwolf)</author>
        </item>
        <item>
            <title><![CDATA[Chailink动态NFT--Alchemy第五课]]></title>
            <link>https://paragraph.com/@warwolf/chailink-nft-alchemy</link>
            <guid>e8E8aNmoPtytT64e7nfF</guid>
            <pubDate>Thu, 10 Nov 2022 16:33:12 GMT</pubDate>
            <description><![CDATA[感谢Alchemy官网：www.alchemy.com 你是谁，你的软件开发背景是什么？ web2公司产品经理闯入web3 你为什么要完成这节课？ 我正好负责一个 NFT 项目，所以我会学习它。 你什么时候完成这个项目？ 22 年 11 月 11 日 您使用了哪些技术？ remix,Webstrom,Chainlink 您喜欢本教程的哪些方面？ 通过这个课程，我学会了使用chainlink语言机器获取价格以及如何动态更新NFT。 遇到一个编译无法通过的问题，花了大约6个小时逐行排查代码，终于解决了问题。 witter post: https://twitter.com/Z14105361Z/status/1590741530712899584?s=20 Contract Address: 0xb73b3211524fDce1D25c1938f134D21A5D58C8e0 NFT link:https://testnets.opensea.io/zh-CN/assets/goerli/0xb73b3211524fdce1d25c1938f134d21a5d58c8e0/0]]></description>
            <content:encoded><![CDATA[<p>感谢Alchemy官网：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.alchemy.com">www.alchemy.com</a></p><p>你是谁，你的软件开发背景是什么？</p><p>web2公司产品经理闯入web3</p><p>你为什么要完成这节课？</p><p>我正好负责一个 NFT 项目，所以我会学习它。</p><p>你什么时候完成这个项目？</p><p>22 年 11 月 11 日</p><p>您使用了哪些技术？</p><p>remix,Webstrom,Chainlink</p><p>您喜欢本教程的哪些方面？</p><p>通过这个课程，我学会了使用chainlink语言机器获取价格以及如何动态更新NFT。 遇到一个编译无法通过的问题，花了大约6个小时逐行排查代码，终于解决了问题。</p><p>witter post: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/Z14105361Z/status/1590741530712899584?s=20">https://twitter.com/Z14105361Z/status/1590741530712899584?s=20</a></p><p>Contract Address: 0xb73b3211524fDce1D25c1938f134D21A5D58C8e0</p><p>NFT link:<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://testnets.opensea.io/zh-CN/assets/goerli/0xb73b3211524fdce1d25c1938f134d21a5d58c8e0/0">https://testnets.opensea.io/zh-CN/assets/goerli/0xb73b3211524fdce1d25c1938f134d21a5d58c8e0/0</a></p>]]></content:encoded>
            <author>warwolf@newsletter.paragraph.com (warwolf)</author>
        </item>
        <item>
            <title><![CDATA[NFT画廊--Alchemy第四课]]></title>
            <link>https://paragraph.com/@warwolf/nft-alchemy-3</link>
            <guid>eMt4A6w0ZlTDP0q37OnN</guid>
            <pubDate>Thu, 10 Nov 2022 04:24:42 GMT</pubDate>
            <description><![CDATA[官网： alchemy.com 你是谁，你的软件开发背景是什么？ web2公司产品经理闯入web3 你为什么要完成这节课？ 我正好负责一个 NFT 项目，所以我会学习它。 你什么时候完成这个项目？ 22 年 11 月 10 日 您使用了哪些技术？ Github、Next.js、Tailwind、Alchemy NFT api、Webstrom 您喜欢本教程的哪些方面？ 学习了Alchemy NFT API的使用，windows默认的复制功能，学习了分页技术，重新整合了html。]]></description>
            <content:encoded><![CDATA[<p>官网：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://alchemy.com">alchemy.com</a></p><p>你是谁，你的软件开发背景是什么？</p><p>web2公司产品经理闯入web3</p><p>你为什么要完成这节课？</p><p>我正好负责一个 NFT 项目，所以我会学习它。</p><p>你什么时候完成这个项目？</p><p>22 年 11 月 10 日</p><p>您使用了哪些技术？</p><p>Github、Next.js、Tailwind、Alchemy NFT api、Webstrom</p><p>您喜欢本教程的哪些方面？</p><p>学习了Alchemy NFT API的使用，windows默认的复制功能，学习了分页技术，重新整合了html。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d8f5448fd989dce26b82c40500eec12098147f1597a7c7ae6bebb3b9f9beb541.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure>]]></content:encoded>
            <author>warwolf@newsletter.paragraph.com (warwolf)</author>
        </item>
        <item>
            <title><![CDATA[用链上元数据生成NFT--Alchemy第三课]]></title>
            <link>https://paragraph.com/@warwolf/nft-alchemy-2</link>
            <guid>IwkmDV09EghIWb5dJNV0</guid>
            <pubDate>Tue, 08 Nov 2022 14:40:46 GMT</pubDate>
            <description><![CDATA[按照第三周的教程，成功生成了NFT，并且完成了挑战。 Twitter: https://twitter.com/Z14105361Z/status/1589990070119194624?s=20 ContractAddress: https://mumbai.polygonscan.com/address/0xd93E6A472fCe68E2C5293083791CCde028270e50#writeContract NFT Address: https://testnets.opensea.io/zh-CN/assets/mumbai/0xd93e6a472fce68e2c5293083791ccde028270e50/1 一共耗时3小时，主要是在完成挑战上，学会了结构体和映射的使用，感谢Alchemy，期待Week 4 ！]]></description>
            <content:encoded><![CDATA[<p>按照第三周的教程，成功生成了NFT，并且完成了挑战。</p><p>Twitter:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/Z14105361Z/status/1589990070119194624?s=20">https://twitter.com/Z14105361Z/status/1589990070119194624?s=20</a></p><p>ContractAddress:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mumbai.polygonscan.com/address/0xd93E6A472fCe68E2C5293083791CCde028270e50#writeContract">https://mumbai.polygonscan.com/address/0xd93E6A472fCe68E2C5293083791CCde028270e50#writeContract</a></p><p>NFT Address:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://testnets.opensea.io/zh-CN/assets/mumbai/0xd93e6a472fce68e2c5293083791ccde028270e50/1">https://testnets.opensea.io/zh-CN/assets/mumbai/0xd93e6a472fce68e2c5293083791ccde028270e50/1</a></p><p>一共耗时3小时，主要是在完成挑战上，学会了结构体和映射的使用，感谢Alchemy，期待Week 4 ！</p>]]></content:encoded>
            <author>warwolf@newsletter.paragraph.com (warwolf)</author>
        </item>
        <item>
            <title><![CDATA[制作Buy me a coffee--Alchemy第二课]]></title>
            <link>https://paragraph.com/@warwolf/buy-me-a-coffee-alchemy</link>
            <guid>3pOQVJE4AiS5ac4xXmR4</guid>
            <pubDate>Mon, 07 Nov 2022 13:04:12 GMT</pubDate>
            <description><![CDATA[因为之前接触了hardhat开发，所以前面关于智能合约的编写及发布轻车熟路，大概花了一小时，后面两小时在完成Dapp页面相关的开发和完成挑战上。 总共耗时：3小时 使用工具：hardhat,remix,webstorm,Replit 完成挑战1：增加一个可以转移智能合约拥有者的功能，并且进行检查 function transferOwnership(address payable newOwner) public { require(owner == msg.sender, "Ownable: caller is not the owner"); require(newOwner != address(0), "Ownable: new owner is the zero address"); owner = newOwner; } function checkowner() public view returns (address) { return owner; } 完成挑战2：增加一个可以购买大咖啡的功能 &#x3C;div> &#x3C;button type="butt...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d919b794920dd3583b0b3b3ca6e00273c3d202f696f2bcfc1e635dde3da84ebb.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>因为之前接触了hardhat开发，所以前面关于智能合约的编写及发布轻车熟路，大概花了一小时，后面两小时在完成Dapp页面相关的开发和完成挑战上。</p><p>总共耗时：3小时</p><p>使用工具：hardhat,remix,webstorm,Replit</p><p>完成挑战1：增加一个可以转移智能合约拥有者的功能，并且进行检查</p><pre data-type="codeBlock" text="    function transferOwnership(address payable newOwner) public {
        require(owner == msg.sender, &quot;Ownable: caller is not the owner&quot;);
        require(newOwner != address(0), &quot;Ownable: new owner is the zero address&quot;);
        owner =  newOwner;
    } 
    function checkowner() public view  returns (address) {
        return owner;
        }
"><code>    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">transferOwnership</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> <span class="hljs-keyword">payable</span> newOwner</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> </span>{
        <span class="hljs-built_in">require</span>(owner <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-built_in">msg</span>.<span class="hljs-built_in">sender</span>, <span class="hljs-string">"Ownable: caller is not the owner"</span>);
        <span class="hljs-built_in">require</span>(newOwner <span class="hljs-operator">!</span><span class="hljs-operator">=</span> <span class="hljs-keyword">address</span>(<span class="hljs-number">0</span>), <span class="hljs-string">"Ownable: new owner is the zero address"</span>);
        owner <span class="hljs-operator">=</span>  newOwner;
    } 
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">checkowner</span>(<span class="hljs-params"></span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">view</span></span>  <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">address</span></span>) </span>{
        <span class="hljs-keyword">return</span> owner;
        }
</code></pre><p>完成挑战2：增加一个可以购买大咖啡的功能</p><pre data-type="codeBlock" text="              &lt;div&gt;
                &lt;button
                  type=&quot;button&quot;
                  onClick={buyBigCoffee}
                &gt;
                  Send 1 BigCoffee for 0.003ETH
                  &lt;/button&gt;
              &lt;/div&gt;
            &lt;/form&gt;
          &lt;/div&gt;
"><code>              <span class="hljs-operator">&#x3C;</span>div<span class="hljs-operator">></span>
                <span class="hljs-operator">&#x3C;</span>button
                  <span class="hljs-keyword">type</span><span class="hljs-operator">=</span><span class="hljs-string">"button"</span>
                  onClick<span class="hljs-operator">=</span>{buyBigCoffee}
                <span class="hljs-operator">></span>
                  Send <span class="hljs-number">1</span> BigCoffee <span class="hljs-keyword">for</span> <span class="hljs-number">0</span>.003ETH
                  <span class="hljs-operator">&#x3C;</span><span class="hljs-operator">/</span>button<span class="hljs-operator">></span>
              <span class="hljs-operator">&#x3C;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">></span>
            <span class="hljs-operator">&#x3C;</span><span class="hljs-operator">/</span>form<span class="hljs-operator">></span>
          <span class="hljs-operator">&#x3C;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">></span>
</code></pre><p>总体并没碰到很大困难，期待第三课！</p>]]></content:encoded>
            <author>warwolf@newsletter.paragraph.com (warwolf)</author>
        </item>
        <item>
            <title><![CDATA[如何部署NFT智能合约--Alchemy第一课总结]]></title>
            <link>https://paragraph.com/@warwolf/nft-alchemy</link>
            <guid>GWQwO9K5rLpoZxkr1RVc</guid>
            <pubDate>Fri, 04 Nov 2022 04:32:14 GMT</pubDate>
            <description><![CDATA[成功部署的合约： https://goerli.etherscan.io/tx/0x5ce559f1a81c100f3cf1d1332b8d63fb90b101d38d02c0706cbd0bb6d4bdb861 我的NFT： https://testnets.opensea.io/zh-CN/assets/goerli/0x31985940a0695eb589ab7ce2e7c6dd628fed9e94/2 我的推特： https://twitter.com/Z14105361Z/status/1588383981040324609?s=20&t=YVSiE8_9dWqfH2BJqQVcCw AlchemyLearn: https://university.alchemy.com/ 我是个有多年工作经验的产品经理，熟悉JavaScript、Python等脚本语言，正在系统学习Solidity和move这类智能合约语言。 学习这节课是因为正在主导一个NFT项目，为了熟悉整套NFT开发流程。 这节课大概花了三小时。 使用了OpenZeppelin库合约，Remix进行编译、发布、交...]]></description>
            <content:encoded><![CDATA[<p>成功部署的合约：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://goerli.etherscan.io/tx/0x5ce559f1a81c100f3cf1d1332b8d63fb90b101d38d02c0706cbd0bb6d4bdb861">https://goerli.etherscan.io/tx/0x5ce559f1a81c100f3cf1d1332b8d63fb90b101d38d02c0706cbd0bb6d4bdb861</a></p><p>我的NFT：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://testnets.opensea.io/zh-CN/assets/goerli/0x31985940a0695eb589ab7ce2e7c6dd628fed9e94/2">https://testnets.opensea.io/zh-CN/assets/goerli/0x31985940a0695eb589ab7ce2e7c6dd628fed9e94/2</a></p><p>我的推特：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/Z14105361Z/status/1588383981040324609?s=20&amp;t=YVSiE8_9dWqfH2BJqQVcCw">https://twitter.com/Z14105361Z/status/1588383981040324609?s=20&amp;t=YVSiE8_9dWqfH2BJqQVcCw</a></p><p>AlchemyLearn: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://university.alchemy.com/">https://university.alchemy.com/</a></p><p>我是个有多年工作经验的产品经理，熟悉JavaScript、Python等脚本语言，正在系统学习Solidity和move这类智能合约语言。</p><p>学习这节课是因为正在主导一个NFT项目，为了熟悉整套NFT开发流程。</p><p>这节课大概花了三小时。</p><p>使用了OpenZeppelin库合约，Remix进行编译、发布、交互。</p><p>在本节课中碰到一个问题：</p><p>我的NFT元数据一直显示不出来，我以为是测试网元数据更新缓慢导致的，但是过了一个晚上之后发现仍然不显示。于是在discord搜索了相关问题，发现不少人也碰到了同样的情况，是因为元数据中的图像IPFS路径错误，修改之后成功展示了图片。</p><p>感谢Alchemy，期待接下来的课程！</p><p>POK地址：0x0EEd9198e9293E7fc79324E2eF3e9b97968a6a8c</p>]]></content:encoded>
            <author>warwolf@newsletter.paragraph.com (warwolf)</author>
        </item>
    </channel>
</rss>