<?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>hatake</title>
        <link>https://paragraph.com/@hatake</link>
        <description>crypto man</description>
        <lastBuildDate>Fri, 24 Jul 2026 15:14:18 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>hatake</title>
            <url>https://storage.googleapis.com/papyrus_images/9e476f4a42debdef7268cb56d26668797b85b6f554c68e888aa09c0afd48f3d6.jpg</url>
            <link>https://paragraph.com/@hatake</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Hướng dẫn Deploy Contract trên mạng lưới StarkNet]]></title>
            <link>https://paragraph.com/@hatake/h-ng-d-n-deploy-contract-tr-n-m-ng-l-i-starknet</link>
            <guid>RyYTNmKXFLGtCJ4cmsow</guid>
            <pubDate>Sun, 12 Nov 2023 05:29:15 GMT</pubDate>
            <description><![CDATA[Deploy trên Remix: Go to : link bên dưới 🔻🔻🔻 https://remix.ethereum.org/ Click : Plugin Manager (hình 1)Hình 1Gõ starknet vào ô tìm kiếm → enter → click→ Activate(hinh 2)Hình 2Click →File exploer (1)→ click chọn New file(2)→ đặt tên file với đuôi .cairo (3) → EnterHình 3Click→ logo Starknet (hình 4)Hình 4Chọn wallet → kết nối ví Starknet(hình 5)Hình 5Copy Code bên dưới#[starknet::interface] trait ISimpleCounter&#x3C;TContractState> { fn get_current_count(self: @TContractState) -> u128; fn ...]]></description>
            <content:encoded><![CDATA[<p>Deploy trên Remix: Go to : link bên dưới 🔻🔻🔻</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://remix.ethereum.org/">https://remix.ethereum.org/</a></p><p>Click : Plugin Manager (hình 1)</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c80cbf1d7470a6480503b440ec57f9aa04fbebae10ae55751a2fb6904f254223.png" alt="Hình 1" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Hình 1</figcaption></figure><p>Gõ starknet vào ô tìm kiếm → enter → click→ Activate(hinh 2)</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a0c6b4dd9ba730efd16447581b1d57238d873932f5b9e402e884e742559c2c8f.png" alt="Hình 2" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Hình 2</figcaption></figure><p>Click →File exploer (1)→ click chọn New file(2)→ đặt tên file với đuôi .cairo (3)</p><p>→ Enter</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d9de3127866cb802adc2bf91f6ce327369dd31ada963d659e79ef8ce7dd95010.png" alt="Hình 3" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Hình 3</figcaption></figure><p>Click→ logo Starknet (hình 4)</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/20fa71cd98fe34f9058fa4d39221276a5fcbe0491cb339124e2648b91ad759ae.png" alt="Hình 4" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Hình 4</figcaption></figure><p>Chọn wallet → kết nối ví Starknet(hình 5)</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cbb31e3e4cbb92d589338ef2881872dda5ebce6cebd4d84515e0e65b3a66c0b1.png" alt="Hình 5" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Hình 5</figcaption></figure><p>Copy Code bên dưới</p><pre data-type="codeBlock" text="#[starknet::interface]
trait ISimpleCounter&lt;TContractState&gt; {
    fn get_current_count(self: @TContractState) -&gt; u128;
    fn increment(ref self: TContractState);
    fn decrement(ref self: TContractState);
}

#[starknet::contract]
mod SimpleCounter {
    #[storage]
    struct Storage {
        // Counter variable
        counter: u128,
    }

    #[constructor]
    fn constructor(ref self: ContractState, init_value: u128) {
        // Store initial value
        self.counter.write(init_value);
    }

    #[abi(embed_v0)]
    impl SimpleCounter of super::ISimpleCounter&lt;ContractState&gt; {
        fn get_current_count(self: @ContractState) -&gt; u128 {
            return self.counter.read();
        }

        fn increment(ref self: ContractState) {
            // Store counter value + 1
            let counter = self.counter.read() + 1;
            self.counter.write(counter);
        }
        fn decrement(ref self: ContractState) {
            // Store counter value - 1
            let counter = self.counter.read() - 1;
            self.counter.write(counter);
        }
    }
}
"><code>#[starknet::<span class="hljs-class"><span class="hljs-keyword">interface</span>]
<span class="hljs-title">trait</span> <span class="hljs-title">ISimpleCounter</span>&#x3C;<span class="hljs-title">TContractState</span>> </span>{
    fn get_current_count(<span class="hljs-built_in">self</span>: @TContractState) <span class="hljs-operator">-</span><span class="hljs-operator">></span> u128;
    fn increment(ref <span class="hljs-built_in">self</span>: TContractState);
    fn decrement(ref <span class="hljs-built_in">self</span>: TContractState);
}

#[starknet::<span class="hljs-class"><span class="hljs-keyword">contract</span>]
<span class="hljs-title">mod</span> <span class="hljs-title">SimpleCounter</span> </span>{
    #[<span class="hljs-keyword">storage</span>]
    <span class="hljs-keyword">struct</span> <span class="hljs-title">Storage</span> {
        <span class="hljs-comment">// Counter variable</span>
        counter: u128,
    }

    #[<span class="hljs-function"><span class="hljs-keyword">constructor</span>]
    <span class="hljs-title">fn</span> <span class="hljs-title"><span class="hljs-keyword">constructor</span></span>(<span class="hljs-params">ref <span class="hljs-built_in">self</span>: ContractState, init_value: u128</span>) </span>{
        <span class="hljs-comment">// Store initial value</span>
        <span class="hljs-built_in">self</span>.counter.write(init_value);
    }

    #[<span class="hljs-built_in">abi</span>(embed_v0)]
    impl SimpleCounter of <span class="hljs-built_in">super</span>::ISimpleCounter<span class="hljs-operator">&#x3C;</span>ContractState<span class="hljs-operator">></span> {
        fn get_current_count(<span class="hljs-built_in">self</span>: @ContractState) <span class="hljs-operator">-</span><span class="hljs-operator">></span> u128 {
            <span class="hljs-keyword">return</span> <span class="hljs-built_in">self</span>.counter.read();
        }

        fn increment(ref <span class="hljs-built_in">self</span>: ContractState) {
            <span class="hljs-comment">// Store counter value + 1</span>
            let counter <span class="hljs-operator">=</span> <span class="hljs-built_in">self</span>.counter.read() <span class="hljs-operator">+</span> <span class="hljs-number">1</span>;
            <span class="hljs-built_in">self</span>.counter.write(counter);
        }
        fn decrement(ref <span class="hljs-built_in">self</span>: ContractState) {
            <span class="hljs-comment">// Store counter value - 1</span>
            let counter <span class="hljs-operator">=</span> <span class="hljs-built_in">self</span>.counter.read() <span class="hljs-operator">-</span> <span class="hljs-number">1</span>;
            <span class="hljs-built_in">self</span>.counter.write(counter);
        }
    }
}
</code></pre><p>Dán vào khung bên phải (hình 6) → Click nút Compile (hinh 6) →chọn Accept (hinh 7)</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3cd97d6f2427014adccebc599632048e2b7f59b1a09c55e2d122d784f1d55973.png" alt="Hình 6" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Hình 6</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/89bb3b8cd31a12872168f3b88613d4a80dfd77d3fd49a0c684851d416ad46dc4.png" alt="Hình 7" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Hình 7</figcaption></figure><p>Điền số lượng token cần deploy (hình 8)→ bấm Deploy (hình 8)</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e12e779396c2f2deb1875b1cf515722e52dbaf20211aa424dbd0efeea6c417e7.png" alt="Hình 8" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Hình 8</figcaption></figure><p>Xác nhận giao dịch trên ví , phí tầm $0.28 → DONE</p>]]></content:encoded>
            <author>hatake@newsletter.paragraph.com (hatake)</author>
        </item>
        <item>
            <title><![CDATA[Instructions for Deploy Contrac.]]></title>
            <link>https://paragraph.com/@hatake/instructions-for-deploy-contrac</link>
            <guid>9GjXWTPFHVKOIEsoZQw2</guid>
            <pubDate>Fri, 27 Oct 2023 05:23:35 GMT</pubDate>
            <description><![CDATA[1/ Go to Link: remix.ethereum.org 2/ Create a new folder on remix :3/ Name this item and press Enter:4/ Copy the code below and paste it into the blank field.// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; contract FunctionTypes{ uint256 public number = 5; constructor() payable {} // 函数类型 // function (&#x3C;parameter types>) {internal|external} [pure|view|payable] [returns (&#x3C;return types>)] // 默认function function add() external{ number = number + 1; } // pure: 纯纯牛马 function addPu...]]></description>
            <content:encoded><![CDATA[<p>1/ Go to Link: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://remix.ethereum.org">remix.ethereum.org</a></p><p>2/ Create a new folder on remix :</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/10797a7e39c1a30b5a73d8f24a2ebd989cffc067ced00d1e3743923df38b44ef.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/ Name this item and press Enter:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/85a2de650eb2a93a59600b6fee21d098c0394bb423e9428273a456612b7dd608.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>4/ Copy the code below and paste it into the blank field.</p><pre data-type="codeBlock" text="// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract FunctionTypes{
    uint256 public number = 5;
    
    constructor() payable {}

    // 函数类型
    // function (&lt;parameter types&gt;) {internal|external} [pure|view|payable] [returns (&lt;return types&gt;)]
    // 默认function
    function add() external{
        number = number + 1;
    }

    // pure: 纯纯牛马
    function addPure(uint256 _number) external pure returns(uint256 new_number){
        new_number = _number+1;
    }
    
    // view: 看客
    function addView() external view returns(uint256 new_number) {
        new_number = number + 1;
    }

    // internal: 内部
    function minus() internal {
        number = number - 1;
    }

    // 合约内的函数可以调用内部函数
    function minusCall() external {
        minus();
    }

    // payable: 递钱，能给合约支付eth的函数
    function minusPayable() external payable returns(uint256 balance) {
        minus();    
        balance = address(this).balance;
    }
}
"><code><span class="hljs-comment">// SPDX-License-Identifier: MIT</span>
<span class="hljs-meta"><span class="hljs-keyword">pragma</span> <span class="hljs-keyword">solidity</span> ^0.8.4;</span>
<span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">FunctionTypes</span></span>{
    <span class="hljs-keyword">uint256</span> <span class="hljs-keyword">public</span> number <span class="hljs-operator">=</span> <span class="hljs-number">5</span>;
    
    <span class="hljs-function"><span class="hljs-keyword">constructor</span>(<span class="hljs-params"></span>) <span class="hljs-title"><span class="hljs-keyword">payable</span></span> </span>{}

    <span class="hljs-comment">// 函数类型</span>
    <span class="hljs-comment">// function (&#x3C;parameter types>) {internal|external} [pure|view|payable] [returns (&#x3C;return types>)]</span>
    <span class="hljs-comment">// 默认function</span>
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">add</span>(<span class="hljs-params"></span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>{
        number <span class="hljs-operator">=</span> number <span class="hljs-operator">+</span> <span class="hljs-number">1</span>;
    }

    <span class="hljs-comment">// pure: 纯纯牛马</span>
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">addPure</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> _number</span>) <span class="hljs-title"><span class="hljs-keyword">external</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">uint256</span> new_number</span>)</span>{
        new_number <span class="hljs-operator">=</span> _number<span class="hljs-operator">+</span><span class="hljs-number">1</span>;
    }
    
    <span class="hljs-comment">// view: 看客</span>
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">addView</span>(<span class="hljs-params"></span>) <span class="hljs-title"><span class="hljs-keyword">external</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">uint256</span> new_number</span>) </span>{
        new_number <span class="hljs-operator">=</span> number <span class="hljs-operator">+</span> <span class="hljs-number">1</span>;
    }

    <span class="hljs-comment">// internal: 内部</span>
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">minus</span>(<span class="hljs-params"></span>) <span class="hljs-title"><span class="hljs-keyword">internal</span></span> </span>{
        number <span class="hljs-operator">=</span> number <span class="hljs-operator">-</span> <span class="hljs-number">1</span>;
    }

    <span class="hljs-comment">// 合约内的函数可以调用内部函数</span>
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">minusCall</span>(<span class="hljs-params"></span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> </span>{
        minus();
    }

    <span class="hljs-comment">// payable: 递钱，能给合约支付eth的函数</span>
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">minusPayable</span>(<span class="hljs-params"></span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> <span class="hljs-title"><span class="hljs-keyword">payable</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> balance</span>) </span>{
        minus();    
        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>5/ Click as shown in the picture.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c0f2acd9638a69a1e751bb6ccf61ead156792dfaeb76566bd264356aa4b4cb8b.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>6/ Last step Click on the Eth Logo and select the wallet connection metamask, remember to switch to #Scorll network then deploy and pay 0.3$ Scroll network fee.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0116944406b04e974830883559202f3529e141051e6479e019a6603449cea280.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>7/ Check to see if you qualify:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://scroll.io/developer-nft/check-eligibility">https://scroll.io/developer-nft/check-eligibility</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ece0038774ef631ce507ea11e412940875c5ed00e73716cae0502707b7218960.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>hatake@newsletter.paragraph.com (hatake)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/b58a65f07faa54f04b642547a2b465e8ef03a854ad1e0e92092c59816da1a12e.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Prosthetic Arm 
]]></title>
            <link>https://paragraph.com/@hatake/prosthetic-arm</link>
            <guid>yUuCNEzmHEjAT2YdsF5k</guid>
            <pubDate>Mon, 07 Nov 2022 15:35:27 GMT</pubDate>
            <description><![CDATA[Prosthetic Arm on Blue Background]]></description>
            <content:encoded><![CDATA[<p>Prosthetic Arm on Blue Background</p>]]></content:encoded>
            <author>hatake@newsletter.paragraph.com (hatake)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/619dab954092daf7bf696aa16b42ed5f96c9b35c2dc8c40ccfcaac5f4b85dc85.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Purple and Pink Diamond on Blue Background
]]></title>
            <link>https://paragraph.com/@hatake/purple-and-pink-diamond-on-blue-background</link>
            <guid>ocligvri7Ezjk25MFxmO</guid>
            <pubDate>Mon, 07 Nov 2022 15:30:26 GMT</pubDate>
            <description><![CDATA[Purple and Pink Diamond on Blue Background.]]></description>
            <content:encoded><![CDATA[<p>Purple and Pink Diamond on Blue Background.</p>]]></content:encoded>
            <author>hatake@newsletter.paragraph.com (hatake)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/efcb0ba4a2045486b72ec98935284ee987385057b7ded0fc6db49b2dd3b0045a.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Yellow Hand ]]></title>
            <link>https://paragraph.com/@hatake/yellow-hand</link>
            <guid>pkzAeM2SwWQRO91SH3dr</guid>
            <pubDate>Mon, 07 Nov 2022 15:25:17 GMT</pubDate>
            <description><![CDATA[Yellow Hand]]></description>
            <content:encoded><![CDATA[<p>Yellow Hand</p>]]></content:encoded>
            <author>hatake@newsletter.paragraph.com (hatake)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/784ae894c9ecef74579bf9af96acbe4cd876eae029f65d82c6e18327e416810a.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>