<?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>oneclicktoken</title>
        <link>https://paragraph.com/@oneclicktoken</link>
        <description>within 1 click to deploy your own token</description>
        <lastBuildDate>Fri, 24 Apr 2026 00:42:48 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>oneclicktoken</title>
            <url>https://storage.googleapis.com/papyrus_images/c73331943288f2c00f9dd3156027bccbbeeaa1f0dfc86257a289421becdc96cd.jpg</url>
            <link>https://paragraph.com/@oneclicktoken</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[一个重入漏洞如何导致合约池子被清空]]></title>
            <link>https://paragraph.com/@oneclicktoken/一个重入漏洞如何导致合约池子被清空</link>
            <guid>mDPKPRiTI6btHoScK6nQ</guid>
            <pubDate>Fri, 27 Mar 2026 03:27:03 GMT</pubDate>
            <description><![CDATA[时间点在Mar-22-2026 03:39:56 PM +UTC的时候合约: https://bscscan.com/address/0x9292a7d96389d94caf41296c2a226ad60ee0e347 由于一个重入的漏洞导致了里面的BNB被清空了。 通过代码片段：https://github.com/nftgem/nftgem-contracts/blob/master/src/pool/ComplexPoolLib.sol#L565-L578 INFTGemMultiToken(self.multitoken).mint(msg.sender, claimHash, 1) <@; INFTGemMultiToken(self.multitoken).setTokenData( claimHash, INFTGemMultiToken.TokenType.CLAIM, address(this) ); addToken(self, claimHash, INFTGemMultiToken.TokenType.CLAIM); // record the claim...]]></description>
            <content:encoded><![CDATA[<p>时间点在Mar-22-2026 03:39:56 PM +UTC的时候合约: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bscscan.com/address/0x9292a7d96389d94caf41296c2a226ad60ee0e347">https://bscscan.com/address/0x9292a7d96389d94caf41296c2a226ad60ee0e347</a></p><p>由于一个重入的漏洞导致了里面的BNB被清空了。</p><p>通过代码片段：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/nftgem/nftgem-contracts/blob/master/src/pool/ComplexPoolLib.sol#L565-L578">https://github.com/nftgem/nftgem-contracts/blob/master/src/pool/ComplexPoolLib.sol#L565-L578</a></p><pre data-type="codeBlock" text="        INFTGemMultiToken(self.multitoken).mint(msg.sender, claimHash, 1) &lt;@;
        INFTGemMultiToken(self.multitoken).setTokenData(
            claimHash,
            INFTGemMultiToken.TokenType.CLAIM,
            address(this)
        );
        addToken(self, claimHash, INFTGemMultiToken.TokenType.CLAIM);

        // record the claim unlock time and cost paid for this claim
        uint256 claimUnlockTimestamp = block.timestamp + (_timeframe);
        self.claimLockTimestamps[claimHash] = claimUnlockTimestamp;
        self.claimAmountPaid[claimHash] = cost * (_count);
        self.claimQuant[claimHash] = _count;
        self.claimsMade[msg.sender] = self.claimsMade[msg.sender] + (1);"><code>        INFTGemMultiToken(<span class="hljs-built_in">self</span>.multitoken).mint(<span class="hljs-built_in">msg</span>.<span class="hljs-built_in">sender</span>, claimHash, <span class="hljs-number">1</span>) <span class="hljs-operator">&lt;</span>@;
        INFTGemMultiToken(<span class="hljs-built_in">self</span>.multitoken).setTokenData(
            claimHash,
            INFTGemMultiToken.TokenType.CLAIM,
            <span class="hljs-keyword">address</span>(<span class="hljs-built_in">this</span>)
        );
        addToken(<span class="hljs-built_in">self</span>, claimHash, INFTGemMultiToken.TokenType.CLAIM);

        <span class="hljs-comment">// record the claim unlock time and cost paid for this claim</span>
        <span class="hljs-keyword">uint256</span> claimUnlockTimestamp <span class="hljs-operator">=</span> <span class="hljs-built_in">block</span>.<span class="hljs-built_in">timestamp</span> <span class="hljs-operator">+</span> (_timeframe);
        <span class="hljs-built_in">self</span>.claimLockTimestamps[claimHash] <span class="hljs-operator">=</span> claimUnlockTimestamp;
        <span class="hljs-built_in">self</span>.claimAmountPaid[claimHash] <span class="hljs-operator">=</span> cost <span class="hljs-operator">*</span> (_count);
        <span class="hljs-built_in">self</span>.claimQuant[claimHash] <span class="hljs-operator">=</span> _count;
        <span class="hljs-built_in">self</span>.claimsMade[<span class="hljs-built_in">msg</span>.<span class="hljs-built_in">sender</span>] <span class="hljs-operator">=</span> <span class="hljs-built_in">self</span>.claimsMade[<span class="hljs-built_in">msg</span>.<span class="hljs-built_in">sender</span>] <span class="hljs-operator">+</span> (<span class="hljs-number">1</span>);</code></pre><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">函数的逻辑</h2><p>这个函数的大概的作用是用户可以stake一定数量的token到期/没到期都能够赎回，只是赎回的数量是根据到期时间来动态计算的。而这个`claimHash` 应该是每次都会是不同的值，claimHash的计算逻辑大体根据id自增，这个值绑定了用户的stake金额。</p><p>我们可以看到在这个mint NFT到用户的地址之后还做了一些更新的操作。把唯一值claimHash和stake的金额深度绑定在一起。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">如何预防重入漏洞</h2><ul class="task-list" data-type="taskList"><li class="task-list-item" data-type="taskItem"><label><input type="checkbox"><span></span></label><div><p>直接引入openZepplin的ReentrancyGuard库</p></div></li><li class="task-list-item" data-type="taskItem"><label><input type="checkbox"><span></span></label><div><p>在外部的调用之后不再做storage更新</p></div></li></ul><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">漏洞重现</h2><div data-type="embedly" src="https://gist.github.com/coffiasd/56df554cbfb29632c8231ce54ae8fc5a" data="{&quot;provider_url&quot;:&quot;http://github.com&quot;,&quot;description&quot;:&quot;bug重现. GitHub Gist: instantly share code, notes, and snippets.&quot;,&quot;title&quot;:&quot;bug重现&quot;,&quot;author_name&quot;:&quot;coffiasd&quot;,&quot;thumbnail_width&quot;:1280,&quot;html&quot;:&quot;&lt;script src=\&quot;https://gist.github.com/coffiasd/56df554cbfb29632c8231ce54ae8fc5a.js\&quot;&gt;&lt;/script&gt;&quot;,&quot;author_url&quot;:&quot;http://github.com/coffiasd&quot;,&quot;version&quot;:&quot;1.0&quot;,&quot;provider_name&quot;:&quot;GitHub&quot;,&quot;thumbnail_url&quot;:&quot;https://storage.googleapis.com/papyrus_images/3805d297c498e93dc92bd3064322b192861ba99ef51d04585cb781f025743578.png&quot;,&quot;type&quot;:&quot;rich&quot;,&quot;thumbnail_height&quot;:640,&quot;image&quot;:{&quot;base64&quot;:&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAIAAAD4YuoOAAAACXBIWXMAAAsTAAALEwEAmpwYAAACQElEQVR4nGMQk1KAI2FxWWFxGVxISExaWk5JVFJWUhYLKSYlLy6tIC6tAFEpKgk1ikFUSh6O8JguDEZwbZhIWg5kh4yCsqScspiUvJyiKtgyaQYxKXk4wm+6kJg0VreLSsqKSyuISckrqGpCvCKjoCwqLiMpqwzyAfEWCMN8gExiiqMhEoJICK8P4P5At4BCH4jCSDiiyAJh0hEdLZCUU4akYriXCSZNYWIsgESvmJQ8AwMHAwMDJI/w8IsJiEpC/CSElGtEJWUFRCUFRCXRHIHPAkjUC4nLtHX1Tps5R1xagUdQ3NDEUk5JnZVbCGIWr6AEv7Akv7AkD7+YnKKqgrK6gKgkj6A4j6A4URYwsPB290zcum3nkuUrpkydHp+Ysm3HnrbO7gkTpyxcvGzX7r0BQaExCUnLV6xWUddJTc92dPV0dfe2sXcNDo2AexTiG2Q2hARbwMC678CRgKBQS2uHoydOV9U2nDt/6du3n5euXLty9cbbd+/v3X947/7DX3/+tnX2+PqHpGbmdvVMzMorik9O5+EXk1EA5VhIMSUtp4TMBoW8qKQsJ5+Ii4dPWlZeV09/Snq2qKRsQ1NbfGKKX1BYVGySuZV9YVF5Tl5hcVmloYmlpbWDp0+Ao4uHi4ePqbkNJJLwkAwQv/DwiwmJSfMKS4DDXYqBgYuBjZ+ZW4iJU4BHUJyBkYuBhZeBkQsS7hz8Yjz8Ypx8IjyC4piuRiZBPkBLixAGJOYhSFRSFlwUy0HKAzSEP3sLi8sAAAG41Vpp2VSLAAAAAElFTkSuQmCC&quot;,&quot;img&quot;:{&quot;width&quot;:1280,&quot;height&quot;:640,&quot;src&quot;:&quot;https://storage.googleapis.com/papyrus_images/3805d297c498e93dc92bd3064322b192861ba99ef51d04585cb781f025743578.png&quot;}}}" format="iframe"><link rel="preload" as="image" href="https://storage.googleapis.com/papyrus_images/3805d297c498e93dc92bd3064322b192861ba99ef51d04585cb781f025743578.png"><div class="react-component embed my-5" data-drag-handle="true" data-node-view-wrapper="" style="white-space:normal"><a class="link-embed-link" href="https://gist.github.com/coffiasd/56df554cbfb29632c8231ce54ae8fc5a" target="_blank" rel="noreferrer"><div class="link-embed"><div class="flex-1"><div><h2>bug重现</h2><p>bug重现. GitHub Gist: instantly share code, notes, and snippets.</p></div><span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link h-3 w-3 my-auto inline mr-1"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>http://github.com</span></div><img src="https://storage.googleapis.com/papyrus_images/3805d297c498e93dc92bd3064322b192861ba99ef51d04585cb781f025743578.png" alt="bug重现"></div></a></div></div><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gist.github.com/coffiasd/56df554cbfb29632c8231ce54ae8fc5a">https://gist.github.com/coffiasd/56df554cbfb29632c8231ce54ae8fc5a</a></p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"> 联系我们</h2><p>有合约开发，合约安全审计方面的需求可以联系我们：</p><p>twitter:<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/coffiasse">https://x.com/coffiasse</a></p><p>tg:@coffiasd</p><p>mail:coiiasd88@gmail.com</p><br>]]></content:encoded>
            <author>oneclicktoken@newsletter.paragraph.com (0x9527)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/af99f1db333bcad815e1a8719ae0eebb7ddd1fd0ad132f01eae07fa06126cf9a.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[How to use phaver to claim free lens and warpcast account]]></title>
            <link>https://paragraph.com/@oneclicktoken/how-to-use-phaver-to-claim-free-lens-and-warpcast-account</link>
            <guid>L6v0ZNH52FkYfjXKTFhU</guid>
            <pubDate>Thu, 30 May 2024 06:05:05 GMT</pubDate>
            <description><![CDATA[1.what&apos;s phaver ? why we need it ?Summary of Phaver: Phaver is a Web3 social app designed for the permissionless and non-custodial ecosystem of the next-gen internet. It uniquely enables cross-posting and consolidates reactions from both the Lens protocol and Farcaster, with the native $SOCIAL token integrated into its ecosystem. Users can also connect MocaID, CyberConnect, and various NFTs. Launched in May 2022 alongside the Lens protocol’s mainnet launch, Phaver allows users to sign up...]]></description>
            <content:encoded><![CDATA[<hr><h2 id="h-1whats-phaver-why-we-need-it" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1.what&apos;s phaver ? why we need it ?</h2><p><strong>Summary of Phaver:</strong></p><p>Phaver is a Web3 social app designed for the permissionless and non-custodial ecosystem of the next-gen internet. It uniquely enables cross-posting and consolidates reactions from both the Lens protocol and Farcaster, with the native $SOCIAL token integrated into its ecosystem. Users can also connect MocaID, CyberConnect, and various NFTs.</p><p>Launched in May 2022 alongside the Lens protocol’s mainnet launch, Phaver allows users to sign up with Web2 logins, facilitating a smooth transition to Web3. Users can share posts on blockchain social networks, maintain full ownership of their social graph, showcase NFT collections, prove authenticity, create gated communities, and send wallet-to-wallet direct messages via XMTP.</p><p>With over 350k downloads, Phaver is a major contributor to Lens protocol posts and reactions and is the largest third-party app on Farcaster. As a pioneer in Web3 social, Phaver helps users build their reputations within decentralized social networks, rewarding constructive contributions with off-chain points convertible to tokens post-TGE.</p><p>Phaver aims to deliver a personalized and relevant feed for each user through incentivized curation and digital reputation, striving to build a more meritocratic and user-owned social network with its community and partners.</p><h2 id="h-2what-can-i-get" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2.what can i get ?</h2><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4515427d80b9cf2ae47a1b3fd312ab771058e0058422828147c2aaef1c82dd00.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-3whats-the-process" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">3.what&apos;s the process ?</h2><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3d4e80d47f4170fb653c742c5c413d26869f8ebf5e719f5fd495b0195e199553.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><strong>Finish Tasks:</strong> After you successfully install the app, you will see some beginner tasks. You can mint a free NFT, set the NFT as your profile picture, create a free Moca ID, prove you are human with Anima, and complete a series of other tasks. After approximately 1-2 days of waiting, when you open the Phaver app again, you will be notified that you have been upgraded to level 2.</p><p><strong>Claim Accounts</strong> Finally, you can click the <code>Get connected</code> button, followed by the <code>Get Farcaster</code> button, to claim your free Lens and Farcaster accounts. Enjoy your socialfi app experience!</p><h2 id="h-4conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">4.conclusion</h2><p>By following these simple steps, you can mint two premium accounts for free with just a little bit of time. If you have any questions, feel free to contact us</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/oneclicktoken">twitter</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.oneclicktoken.xyz/">oneclicktoken</a></p>]]></content:encoded>
            <author>oneclicktoken@newsletter.paragraph.com (0x9527)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/347f66282700fb5fd8d6ebd808c69f82978b2d76a7db99fc91eaa698b5a3c56f.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[How to verify a evm contract through http api - oneclicktoken - Medium]]></title>
            <link>https://paragraph.com/@oneclicktoken/how-to-verify-a-evm-contract-through-http-api-oneclicktoken-medium</link>
            <guid>Xu7ELFu6k1wKVapJrJHX</guid>
            <pubDate>Mon, 27 May 2024 12:58:25 GMT</pubDate>
            <description><![CDATA[1.Parameters to be preparedSince different chains may require different parameters, let&apos;s use mainnet as an example.1.1 api urlThe API URL for mainnet is https://api.etherscan.io/api. If you are using a different chain, you will need to refer to the official documentation to find the corresponding API URL.1.2 api key1.3 chain idGet your target chain id from chainlist1.4 contractaddressAfter successfully deploying the contract, you can obtain the deployed contract address.1.5 compilervers...]]></description>
            <content:encoded><![CDATA[<hr><h2 id="h-1parameters-to-be-prepared" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1.Parameters to be prepared</h2><p>Since different chains may require different parameters, let&apos;s use mainnet as an example.</p><h3 id="h-11-api-url" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">1.1 api url</h3><p>The API URL for mainnet is <code>https://api.etherscan.io/api</code>. If you are using a different chain, you will need to refer to the official documentation to find the corresponding API URL.</p><h3 id="h-12-api-key" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">1.2 api key</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4f1bdfabba827746feff31562cd0fc56352fcc7c1d673f40ad2cdd237097a029.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><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3a129339673dbcec91593b2615260e66d02350abdc33d950a30008ac017f9e02.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-13-chain-id" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1.3 chain id</h2><p>Get your target chain id from <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://chainlist.org/">chainlist</a></p><h2 id="h-14-contractaddress" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1.4 contractaddress</h2><p>After successfully deploying the contract, you can obtain the deployed contract address.</p><h2 id="h-15-compilerversion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1.5 compilerversion</h2><p>For my contract, we use Solidity version <code>v0.8.24+commit.e11b9ed9</code> to compile the code.</p><h2 id="h-16-constructorarguments" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1.6 constructorArguments</h2><p>we should encode the constructor arguments</p><pre data-type="codeBlock" text="const args = abi.encode([&quot;address&quot;, &quot;string&quot;, &quot;string&quot;, &quot;uint256&quot;, &quot;bytes32&quot;], [sd, name, symbol, premintFormat, merkle]);
"><code>const args <span class="hljs-operator">=</span> <span class="hljs-built_in">abi</span>.<span class="hljs-built_in">encode</span>([<span class="hljs-string">"address"</span>, <span class="hljs-string">"string"</span>, <span class="hljs-string">"string"</span>, <span class="hljs-string">"uint256"</span>, <span class="hljs-string">"bytes32"</span>], [sd, name, symbol, premintFormat, merkle]);
</code></pre><p>And we can use <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://abi.hashex.org/">hashex</a> to encode the constructor arguments online.</p><h2 id="h-2send-http-request" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2.Send http request</h2><p>After collecting all the required data, we can send it to the API server using <code>axios</code>.</p><pre data-type="codeBlock" text="axios.request(config)
.then((response) =&gt; {
    console.log(JSON.stringify(response.data));
})
.catch((error) =&gt; {
    console.log(error);
});
"><code>axios.request(config)
.then((response) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
    console.log(JSON.stringify(response.data));
})
.catch((<span class="hljs-function"><span class="hljs-keyword">error</span>) => </span>{
    console.log(<span class="hljs-function"><span class="hljs-keyword">error</span>)</span>;
});
</code></pre><h2 id="h-3check-the-result-on-explorer" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">3.check the result on explorer</h2><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3ab144da32913e3a4eff0b26ef7f767e7ffb67e0753325e66f2151faa49c3e20.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-4full-code" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">4.full code</h2><p>check the full code from github gist <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gist.github.com/coffiasd/eb3df6a2e94fc1b3aab30f407e114904">gist</a></p><h2 id="h-5origin" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">5.origin</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.oneclicktoken.xyz/posts/verify-deployed-contract">https://www.oneclicktoken.xyz/posts/verify-deployed-contract</a></p>]]></content:encoded>
            <author>oneclicktoken@newsletter.paragraph.com (0x9527)</author>
        </item>
        <item>
            <title><![CDATA[Luanch a meme coin on base chain with zero code using oneclicktoken]]></title>
            <link>https://paragraph.com/@oneclicktoken/luanch-a-meme-coin-on-base-chain-with-zero-code-using-oneclicktoken</link>
            <guid>ZDTnbEP7hOz1a52IZd4x</guid>
            <pubDate>Sat, 25 May 2024 06:32:05 GMT</pubDate>
            <description><![CDATA[1.why we launch token on base chain?According to data from DeFiLlama, Base is currently ranked #7 among all chains in terms of Total Value Locked (TVL)Base is a secure, low-cost, developer-friendly Ethereum Layer 2 (L2) solution. Users familiar with Ethereum can easily use Base.Recently, a lot of memecoins have been launched on Base, as reported by CoinGecko.Memecoins on the Base chain are very active, and keeping an eye on the latest memecoins on Base can offer opportunities for significant ...]]></description>
            <content:encoded><![CDATA[<br><h2 id="h-1why-we-launch-token-on-base-chain" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1.why we launch token on base chain?</h2><p>According to data from DeFiLlama, Base is currently ranked #7 among all chains in terms of Total Value Locked (TVL)</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d8530748d899e196a70398fe3ef1c85111a701a5c37707bea923ca187e1d87ef.webp" 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>Base is a secure, low-cost, developer-friendly Ethereum Layer 2 (L2) solution. Users familiar with Ethereum can easily use Base.Recently, a lot of memecoins have been launched on Base, as reported by CoinGecko.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/beb1bbcde8d2f55afc024a8bc836f8a4b036661ba5b3c3fd1ad6edc910a35e7f.webp" 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>Memecoins on the Base chain are very active, and keeping an eye on the latest memecoins on Base can offer opportunities for significant returns. Data provided by some third-party platforms make it easy to find information about recently launched tokens on Base.</p><h2 id="h-2how-to-use-oneclick-token-launch-token-to-base-chain" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2.how to use oneclick token launch token to base chain</h2><h2 id="h-21-step1" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2.1 step1</h2><p>As an ordinary user on a base chain, rather than a professional Solidity developer, you can easily launch your own token through our platform.</p><p>First, log in to our website at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.oneclicktoken.xyz/">oneclicktoken.xyz</a> and navigate to the “Create Token” page. From there, you can customize your token by selecting your preferred name and symbol.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/38ff13baf274ded0a50517ef4f0b25f5ce21d1d888c68dac9b48733f8d54d95d.webp" 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>Click the top right corner of the webpage to select your chain. Here, you can choose the base chain.</p><h2 id="h-22-step2" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2.2 step2</h2><p>By default, the current user is set as the token owner, but you can enter a new address if desired. The Merkle tree root is used for airdrop values; if you don’t need this feature, you can choose to skip it.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/463bf851437d0a44763d3967c0a28d158d841c43a85fa94519932d39b02f87f9.webp" 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>Finally, you can select some default attributes for the contract</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cfb9fe2b5ab4405e047597e47b39b3a4f779a0924de6848e48df8f706a002501.webp" 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>Then you can simply click <code>Deploy</code> to proceed.</p><h2 id="h-3feel-free-to-contact-us" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">3.feel free to contact us</h2><p>If you encounter any issues during usage, or if you need a custom token contract, or if you want to claim an airdrop, or if you have any questions related to contracts, feel free to contact us.</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/oneclicktoken">twitter</a></p></li><li><p>tg:@coffiasd</p></li><li><p>mail:coiiasd88@gmail.com</p></li></ul>]]></content:encoded>
            <author>oneclicktoken@newsletter.paragraph.com (0x9527)</author>
        </item>
        <item>
            <title><![CDATA[Solidity 之地址（address)]]></title>
            <link>https://paragraph.com/@oneclicktoken/solidity-address</link>
            <guid>AxIX5ApDt7iBYKniCN3O</guid>
            <pubDate>Fri, 18 Nov 2022 02:17:54 GMT</pubDate>
            <description><![CDATA[# Solidity 之地址(address) ## 概览 1. 什么是 ETH 地址？ 1. 可支付地址 1. 地址对应的方法(solidity) 1. 检查地址是否存在 1. 零地址 1. 地址相关的 web3.js ## 介绍 ETH 中的地址都是唯一的，因为他们都是来自一个公钥或者合约。 在 ETH 交易中的支付环节，预期的收款人都是一个地址。类似于银行中的转账账号。 ETH 中的地址(address)分为两种: 1. Externally Owned Accounts (EOA)(外部拥有账户):这些账户通过私钥来控制。通过私钥可以控制账户中的 TOKEN，在和智能合约进行交互的时候，私钥还可以用来提供身份认证。 1. Contracts Accounts (Smart Contracts)(合约地址):这些账号是通过代码(solidity)控制的。和 EOAs 账号不同的是，智能合约账号是没有关联一个秘钥的。因为智能合约不受私钥控制，所以我们可以说智能合约是独立的。每个合约的地址都来自于合约创建的交易。ETH 的合约地址可以作为交易中的接收者，发送 token 到合约...]]></description>
            <content:encoded><![CDATA[<pre data-type="codeBlock" text="# Solidity 之地址(address)

## 概览

1.  什么是 ETH 地址？
1.  可支付地址
1.  地址对应的方法(solidity)
1.  检查地址是否存在
1.  零地址
1.  地址相关的 web3.js

## 介绍

ETH 中的地址都是唯一的，因为他们都是来自一个公钥或者合约。

在 ETH 交易中的支付环节，预期的收款人都是一个地址。类似于银行中的转账账号。

ETH 中的地址(address)分为两种:

1.  Externally Owned Accounts (EOA)(外部拥有账户):这些账户通过私钥来控制。通过私钥可以控制账户中的 TOKEN，在和智能合约进行交互的时候，私钥还可以用来提供身份认证。
1.  Contracts Accounts (Smart Contracts)(合约地址):这些账号是通过代码(solidity)控制的。和 EOAs 账号不同的是，智能合约账号是没有关联一个秘钥的。因为智能合约不受私钥控制，所以我们可以说智能合约是独立的。每个合约的地址都来自于合约创建的交易。ETH 的合约地址可以作为交易中的接收者，发送 token 到合约或者调用别的合约中的方法。

## 什么是 ETH 地址(技术上)?

hash 函数是把 ETH 公钥(或者合约)转化为地址的关键。ETH 使用 hash 函数(keccak-256)来生成地址。在 ETH 或者 solidity 中，一个地址由 20byte 长度的值组成，这个地址对应于公钥的 hash 函数(keccak-256)的最后 20bytes 的值。一个地址总固定是以 ox 开头,因为它是以 16 进制的格式表示的。

下面就来详细的介绍下如何创建地址：

1.  首先我们拿到一个公钥

    ```shell
    pubKey = 6e145ccef1033dea239875dd00dfb4fee6e3348b84985c92f103444683b......
    ```

1.  对这个公钥进行 hash(keccak-256)运算,最后输出一个 64 个字符/32bytes 长度的字符串。

    ```shell
    Keccak256(pubKey) = 2a5bc342ed616b5ba5732269001d3f1ef827552ae1114027bd3ecf1f086ba0f9
    ```

1.  截取 hash 结果字符串末尾的 40 个字符/20bytes.这个 40 个字符/20bytes 就是我们的地址

    ```shell
    Address = 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9
    ```

    当我们加上 0x 的固定开头之后，这个地址就变成 42 个字符。ETH 的地址以原始的 16 进制表示，而且需要重点注意的是它不区分大小写。所有的钱包都支持接收大写或者小写的地址，解析起来没有任何的区别。

```shell
0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9 or
0X001D3F1EF827552AE1114027BD3ECF1F086BA0F9
"><code><span class="hljs-section"># Solidity 之地址(address)</span>

<span class="hljs-section">## 概览</span>

<span class="hljs-bullet">1.</span>  什么是 ETH 地址？
<span class="hljs-bullet">1.</span>  可支付地址
<span class="hljs-bullet">1.</span>  地址对应的方法(solidity)
<span class="hljs-bullet">1.</span>  检查地址是否存在
<span class="hljs-bullet">1.</span>  零地址
<span class="hljs-bullet">1.</span>  地址相关的 web3.js

<span class="hljs-section">## 介绍</span>

ETH 中的地址都是唯一的，因为他们都是来自一个公钥或者合约。

在 ETH 交易中的支付环节，预期的收款人都是一个地址。类似于银行中的转账账号。

ETH 中的地址(address)分为两种:

<span class="hljs-bullet">1.</span>  Externally Owned Accounts (EOA)(外部拥有账户):这些账户通过私钥来控制。通过私钥可以控制账户中的 TOKEN，在和智能合约进行交互的时候，私钥还可以用来提供身份认证。
<span class="hljs-bullet">1.</span>  Contracts Accounts (Smart Contracts)(合约地址):这些账号是通过代码(solidity)控制的。和 EOAs 账号不同的是，智能合约账号是没有关联一个秘钥的。因为智能合约不受私钥控制，所以我们可以说智能合约是独立的。每个合约的地址都来自于合约创建的交易。ETH 的合约地址可以作为交易中的接收者，发送 token 到合约或者调用别的合约中的方法。

<span class="hljs-section">## 什么是 ETH 地址(技术上)?</span>

hash 函数是把 ETH 公钥(或者合约)转化为地址的关键。ETH 使用 hash 函数(keccak-256)来生成地址。在 ETH 或者 solidity 中，一个地址由 20byte 长度的值组成，这个地址对应于公钥的 hash 函数(keccak-256)的最后 20bytes 的值。一个地址总固定是以 ox 开头,因为它是以 16 进制的格式表示的。

下面就来详细的介绍下如何创建地址：

<span class="hljs-bullet">1.</span>  首先我们拿到一个公钥

<span class="hljs-code">    ```shell
    pubKey = 6e145ccef1033dea239875dd00dfb4fee6e3348b84985c92f103444683b......
    ```
</span>
<span class="hljs-bullet">1.</span>  对这个公钥进行 hash(keccak-256)运算,最后输出一个 64 个字符/32bytes 长度的字符串。

<span class="hljs-code">    ```shell
    Keccak256(pubKey) = 2a5bc342ed616b5ba5732269001d3f1ef827552ae1114027bd3ecf1f086ba0f9
    ```
</span>
<span class="hljs-bullet">1.</span>  截取 hash 结果字符串末尾的 40 个字符/20bytes.这个 40 个字符/20bytes 就是我们的地址

<span class="hljs-code">    ```shell
    Address = 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9
    ```
</span>
<span class="hljs-code">    当我们加上 0x 的固定开头之后，这个地址就变成 42 个字符。ETH 的地址以原始的 16 进制表示，而且需要重点注意的是它不区分大小写。所有的钱包都支持接收大写或者小写的地址，解析起来没有任何的区别。
</span>
<span class="hljs-code">```shell
0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9 or
0X001D3F1EF827552AE1114027BD3ECF1F086BA0F9
</span></code></pre><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">如何来定义一个地址变量?</h2><p>在 ETH 中只需要简单的在变量的前面加上 address 关键词就可以定义一个变量为一个地址。 下面的例子展示了 solidity 中我们获取当前与合约进行交互的地址。</p><pre data-type="codeBlock" text="address user = msg.sender
"><code><span class="hljs-keyword">address</span> user <span class="hljs-operator">=</span> <span class="hljs-built_in">msg</span>.<span class="hljs-built_in">sender</span>
</code></pre><h2 id="h-address-literal" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">地址字面量(address literal)</h2><h2 id="h-vs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">地址 VS 可支付地址</h2><p>地址(address)和可支付地址(payable address)的区别在 solidity0.5 版本中有过介绍。可支付地址可以接受 ETH TOKEN,而普通的地址则不行。但给地址分配了一个 payable 关键字之后,这个地址可以接受和发送 ETH TOKEN。结果就是别的一些方法(transfer, send, call, delegatecall and staticcall),对这个地址也是可行的。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">地址和可支付地址之间的类型转换</h2><ul><li><p>从可支付地址到地址的隐式转换(Implicit conversions)是被允许的</p></li><li><p>从地址到可支付地址的隐式转换(Implicit conversions)是不被允许的</p></li><li><p>从地址或者到地址的显式转换只允许:integers、integers literal、bytes20、contract type</p></li><li><p>显式转换方式 payable(x),x 可以是 integers, integer literal, bytes 或者 contract type</p></li></ul><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">合约地址</h2><p>在 0.5.0 之前的版本中，合约直接来源于地址类型(因为地址和可支付地址之间没有任何区别)。 从 0.5.0 版本开始，合约不再来源于地址类型。然而如果合约有一个 payable fallback 方法，它们仍然可以转化为地址和可支付地址。</p><pre data-type="codeBlock" text="contract NotPayable {

    // No payable function here

}

contract Payable {
    // Payable function
    function() payable {
        // do something with payable function
    }

}

contract HelloWorld {
    address x = address(NotPayable);
    address y = address(Payable);

    function hello_world() public pure returns (string memory) {
        return &quot;hello world&quot;;
    }
}
"><code><span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">NotPayable</span> </span>{

    <span class="hljs-comment">// No payable function here</span>

}

<span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">Payable</span> </span>{
    <span class="hljs-comment">// Payable function</span>
    <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) <span class="hljs-title"><span class="hljs-keyword">payable</span></span> </span>{
        <span class="hljs-comment">// do something with payable function</span>
    }

}

<span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">HelloWorld</span> </span>{
    <span class="hljs-keyword">address</span> x <span class="hljs-operator">=</span> <span class="hljs-keyword">address</span>(NotPayable);
    <span class="hljs-keyword">address</span> y <span class="hljs-operator">=</span> <span class="hljs-keyword">address</span>(Payable);

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">hello_world</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">pure</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">string</span> <span class="hljs-keyword">memory</span></span>) </span>{
        <span class="hljs-keyword">return</span> <span class="hljs-string">"hello world"</span>;
    }
}
</code></pre><p>让我们看下上面这个 HelloWorld 合约：</p><ul><li><p>NotPayable 是一个合约不包含 payable fallback 方法。变量 X 分配了 address(NotPayable)将会是一个地址类型。</p></li><li><p>Payable 是一个合约包含了 payable fallback 方法。变量 Y 分配了一个 address(Payable)将会是一个可支付地址。</p></li><li><p>外部函数签名地址用于地址类型和可支付地址类型。</p></li></ul><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">地址类型比较</h2><pre data-type="codeBlock" text="- 小于等于 `&lt;=`
- 小于 `&lt;`
- 等于`==`
- 不等于 `≠`
- 大于等于 `≥`
- 大于`&gt;`
"><code><span class="hljs-bullet">-</span> 小于等于 <span class="hljs-code">`&#x3C;=`</span>
<span class="hljs-bullet">-</span> 小于 <span class="hljs-code">`&#x3C;`</span>
<span class="hljs-bullet">-</span> 等于<span class="hljs-code">`==`</span>
<span class="hljs-bullet">-</span> 不等于 <span class="hljs-code">`≠`</span>
<span class="hljs-bullet">-</span> 大于等于 <span class="hljs-code">`≥`</span>
<span class="hljs-bullet">-</span> 大于<span class="hljs-code">`>`</span>
</code></pre><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">检查一个地址是否存在?</h2><pre data-type="codeBlock" text="modifier addressExist(address _address) {
    require(_address != address(0));
    _;
}
"><code><span class="hljs-function"><span class="hljs-keyword">modifier</span> <span class="hljs-title">addressExist</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> _address</span>) </span>{
    <span class="hljs-built_in">require</span>(_address <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-keyword">_</span>;
}
</code></pre><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">可以用于地址的交易方法</h2><p>你可以想象到，地址可以像别的地址发送资金(ethers)。这块内容主要介绍不同的可用的方法。</p><blockquote><p>1 Ether = 1¹⁸ Wei = 1,000,000,000,000,000,000 wei</p></blockquote><p><strong>1.address.transfer() (not recommend)</strong></p><ul><li><p>转账一定量的 ether(以 wei 为单位)到指定的账户.</p></li><li><p>失败后还原并且抛出一个错误异常.</p></li><li><p>花费 2300gas，并且不可调节</p></li></ul><p><strong>2.address.send() (not recommend)</strong></p><ul><li><p>和 address.transfer()类似</p></li><li><p>失败之后返回 false</p></li><li><p>花费 2300gas，并且不可调节</p></li></ul><p><strong>3.address.balance</strong></p><ul><li><p>返回账号对应的金额以 Wei 为单位</p></li></ul><p>有两种方法可以查看 eth 地址/合约地址的余额</p><pre data-type="codeBlock" text="address public _account = msg.sender;

// look-up balance from sender (Method 1)
uint public sender_balance = _account.balance;

// look-up balance from _account (Method 2)
uint public sender_balance = address(_account).balance;

// look-up balance from the current contract (Method 2)
uint public contract_balance = address(this).balance;
"><code><span class="hljs-keyword">address</span> <span class="hljs-keyword">public</span> _account <span class="hljs-operator">=</span> <span class="hljs-built_in">msg</span>.<span class="hljs-built_in">sender</span>;

<span class="hljs-comment">// look-up balance from sender (Method 1)</span>
<span class="hljs-keyword">uint</span> <span class="hljs-keyword">public</span> sender_balance <span class="hljs-operator">=</span> _account.<span class="hljs-built_in">balance</span>;

<span class="hljs-comment">// look-up balance from _account (Method 2)</span>
<span class="hljs-keyword">uint</span> <span class="hljs-keyword">public</span> sender_balance <span class="hljs-operator">=</span> <span class="hljs-keyword">address</span>(_account).<span class="hljs-built_in">balance</span>;

<span class="hljs-comment">// look-up balance from the current contract (Method 2)</span>
<span class="hljs-keyword">uint</span> <span class="hljs-keyword">public</span> contract_balance <span class="hljs-operator">=</span> <span class="hljs-keyword">address</span>(<span class="hljs-built_in">this</span>).<span class="hljs-built_in">balance</span>;
</code></pre><p><strong>4.address.call(bytes memory) returns (bool, bytes memory)</strong></p><ul><li><p>创建一个任意的消息调用，通过传递一个 memory 类型的参数</p></li><li><p>返回一个 tuple 类型包括:</p><ul><li><p>一个调用结果的 bool 值(成功的时候是 true，失败的时候是 false)</p></li><li><p>data 以 bytes 格式</p></li></ul></li><li><p>转发所有可用 gas，可调节</p></li></ul><p><strong>5.address.delegatecall(bytes memory) returns (bool, bytes memory)</strong></p><ul><li><p>底层的 DELEGATECALL,通过传递一个 memory 类型的参数</p></li><li><p>返回一个 tuple 类型包括:</p><ul><li><p>一个调用结果的 bool 值(成功的时候是 true，失败的时候是 false)</p></li><li><p>data 以 bytes 格式</p></li></ul></li><li><p>转发所有可用 gas，可调节</p></li></ul><p><strong>6.address.staticcall(bytes memory) returns (bool, bytes memory)</strong></p><p><strong>7.address.callcode(payload) (deprecated)</strong></p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">相关的返回一个地址的方法</h2><ul><li><p>msg.sender()</p></li><li><p>tx.origin</p></li><li><p>block.coinbase()</p></li><li><p>block.coinbase(_address payable)</p></li><li><p>ecrecover()</p></li></ul><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">零地址</h2><p>一旦一个只能合约被编译之后，它就会使用一个特殊的合约创建交易来部署到 eth 平台上。然后，一笔交易可以会得到一个具体的地址。所以创建合约的时候应该拿到哪个具体的地址呢？</p><p>当在接受者的字段上填上了一个特殊的地址的时候，EVM 就会明白这笔交易打算创建一个新的合约。这个特殊的地址就被称作为零地址(zero-address)。</p><p>一个零地址在 ETH 中也是 20bytes 的长度，但是只包含了空的 bytes。这就解释了为什么叫做零地址,因为它只包含 0x0。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">参考</h2><ul><li><p><code>&lt;address&gt;.balance(uint256)</code></p></li><li><p><code>&lt;address payable&gt;.transfer(uint256 _amount)</code></p></li><li><p><code>&lt;address payable&gt;.send(uint256 _amount) returns (bool)</code></p></li><li><p><code>&lt;address payable&gt;.call(bytes memory) returns (bool, bytes memory)</code></p></li><li><p><code>&lt;address payable&gt;.delegatecall(bytes memory) returns (bool, bytes memory)</code></p></li><li><p><code>&lt;address payable&gt;.staticcall(bytes memory) returns (bool, bytes memory)</code></p></li></ul><pre data-type="codeBlock" text="
"><code></code></pre>]]></content:encoded>
            <author>oneclicktoken@newsletter.paragraph.com (0x9527)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/fbe3f63d2f953c3fa50de2a66b61466961c23e78f4121f86b4736c08a94c23c1.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>