<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Nonthakon Jitchiranant on Medium]]></title>
        <description><![CDATA[Stories by Nonthakon Jitchiranant on Medium]]></description>
        <link>https://medium.com/@nonthakon?source=rss-eede37948446------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*an5ZlrcFSxu5lRUxIQ_M3w.jpeg</url>
            <title>Stories by Nonthakon Jitchiranant on Medium</title>
            <link>https://medium.com/@nonthakon?source=rss-eede37948446------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 16 May 2026 00:09:08 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@nonthakon/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[ Ethereum Shanghai Upgrade]]></title>
            <link>https://medium.com/laika-lab/ethereum-shanghai-upgrade-7623f6e43f0?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/7623f6e43f0</guid>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[ethereum-the-merge]]></category>
            <category><![CDATA[web3]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Sun, 19 Feb 2023 16:19:23 GMT</pubDate>
            <atom:updated>2023-02-19T16:19:23.086Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UTLh6axc81PYBxzJdIJeog.png" /><figcaption>Ethereum Shanghai Update</figcaption></figure><h4><strong>Introduction to Ethereum Shanghai Upgrade 🎉</strong></h4><p>A big upgrade is on its way and it’s called the Shanghai Upgrade. This upgrade promises to bring several improvements to the Ethereum network, making it more efficient, consistent and upgradeable. The upgrade is slated to happen in March 2023, and it’s a highly anticipated event in the Ethereum community. Let’s see what we have!</p><blockquote>For all the information used in writing this article, we compiled it from ACD wrote by Ethereum Foundation’s Tim Beiko. If you want to learn more, you can refer to the following links for additional information!</blockquote><blockquote><a href="https://hackmd.io/@timbeiko/acd/">https://hackmd.io/@timbeiko/acd/</a></blockquote><p><strong>Beacon Chain Stake and Withdrawal </strong>💰</p><p>One of the key features of the Shanghai Upgrade is the introduction of withdrawal capabilities for Beacon Chain stakers. Currently, Beacon Chain stakers can only stake ETH, but with the upcoming EIP-4895, they will now be able to withdraw their stakes as well. This is a top priority for the upgrade and is expected to bring a lot of excitement to the Ethereum community.</p><p><strong>Ethereum Object Format (EOF) </strong>💻</p><p>Another major highlight of the Shanghai Upgrade is the Ethereum Object Format (EOF). EOF is a suite of 5 Ethereum Improvement Proposals (EIPs) that promises to make Ethereum execution more efficient, more consistent, and more upgradeable. EOF is the first upgrade in the Ethereum Virtual Machine’s (EVM) history and it’s a big step forward for the Ethereum network. Here are the key EIPs that make up the EOF:</p><ul><li><strong>EIP-3540</strong>: Changes the structure of EVM instructions, making it easier to upgrade the EVM.</li><li><strong>EIP-3670</strong>: Introduces code validation for smart contracts during deployment, saving execution costs.</li><li><strong>EIP-4200</strong>: Improves the efficiency of the Ethereum stack machine, leading to lower gas fees.</li><li><strong>EIP-4750</strong>: Introduces functions that the stack machine can perform, making programs more efficient.</li><li><strong>EIP-5450</strong>: Validates contracts during deployment, preventing stack overflows and underflows.</li></ul><p><strong>How it Could Impact Developer Experience? </strong>👨‍💻</p><p>The Shanghai Upgrade and EOF in particular, has the potential to significantly improve the developer experience on the Ethereum network. With code validation during deployment, efficient stack machine operation, and easier upgradability, developers can expect their smart contracts to run more smoothly on the network. Additionally, the introduction of withdrawal capabilities for Beacon Chain stakers is also a big win for developers who have been eagerly waiting for this feature.</p><p><strong>Can I try Ethereum Shanghai? </strong>🤔💻</p><p>Yes, you can try Ethereum Shanghai! 🚀 As of now, We have a public testnet for the upcoming Ethereum Shanghai and it’s called Zhejiang public testnet. And luckily it is now live and you can try playing with it!</p><p>You can also try to interact with it with Laika just go ahead to <a href="https://web.getlaika.app">https://web.getlaika.app</a> Connect to your wallet and on the top-right pick on the chain selector and type “Zhejiang”</p><p>And Wallah! You can interact with any smart contracts on it with a few clicks away!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/853/1*keNydM7UmvHsRwYyFmTaCA.png" /><figcaption>Laika Interface</figcaption></figure><p><strong>Closing Thoughts 🤔</strong></p><p>In conclusion, the Ethereum Shanghai Upgrade is a big step forward for the Ethereum network and the entire community. With the introduction of withdrawal capabilities for Beacon Chain stakers, and the Ethereum Object Format (EOF), the network is expected to become more efficient, consistent, and upgradeable. Developers can look forward to a better experience building and deploying their smart contracts on the Ethereum network. 🚀 Get ready for the big launch in March 2023!</p><p>That’s it for today! Catch up with you guys later!</p><blockquote><strong><em>Connect with us</em></strong></blockquote><blockquote><em>Twitter: </em><a href="https://twitter.com/getlaikaapp"><em>https://twitter.com/getlaikaapp</em></a><em><br>Facebook: </em><a href="https://www.facebook.com/getlaikaapp/"><em>https://www.facebook.com/getlaikaapp/</em></a><em><br>Discord: </em><a href="https://discord.gg/4DzwHuxhcf"><em>https://discord.gg/4DzwHuxhcf</em></a></blockquote><blockquote><em>PS. This article is co-written by ChatGPT. A big shoutout to ChatGPT for its amazing assistance in writing this article!</em></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7623f6e43f0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/ethereum-shanghai-upgrade-7623f6e43f0">🥢 Ethereum Shanghai Upgrade</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A Deep Dive into Laika and Osmosis: How Laika help you build faster]]></title>
            <link>https://medium.com/laika-lab/a-deep-dive-into-laika-and-osmosis-how-laika-help-you-build-faster-4404b1c698b9?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/4404b1c698b9</guid>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[interchain-academy]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Thu, 02 Feb 2023 14:38:57 GMT</pubDate>
            <atom:updated>2023-02-02T14:38:57.845Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*SokjrOvr3mGszIVq.png" /></figure><p>Hello and welcome to our article on <strong>A Deep Dive into Laika and Osmosis</strong>! If you’re interested in building decentralized applications (dApps) on the Osmosis blockchain. whether you’re a veteran builder who built for quite some time or a builder who just getting started. I’m sure that our tool that we building at Laika Labs could help you somehow!</p><h4>Introduction</h4><p>Laika is a request builder tool that allows users to interact with smart contracts through a graphical user interface (GUI). It allows users to create requests to call functions on contracts, view data, and even deploy new contracts, all without the need for coding. Laika is a useful tool for developers who want to test and debug their contracts quickly and easily, as well as for non-developers who want to interact with existing contracts.</p><h4>What we building so far</h4><p>Here’s a List of what we build that could help you build faster on Osmosis!</p><ol><li><strong>A Request Builder 👷</strong></li></ol><p>We create easy &amp; intuitive UIs (with collection management supported) to interact with smart contracts on-chain so developers don’t have to spend time writing a code to send a request to the smart contract. But just make that request on the UI to help speed-up development time a lot!</p><p>(Right now, Laika is supported on Osmosis Mainnet, Osmosis Testnet, and LocalOsmosis)</p><p>Visit: <a href="https://interchain.getlaika.app/">https://interchain.getlaika.app/</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ys-4w9TWZ5FBc9fbahw1mg.png" /></figure><p>2. <strong>LocalOsmosis supported via Laika Proxy Extension 👩‍🔬</strong></p><p>Laika is not just support on Osmosis Mainnet, Testnet. But you can spin your chain locally using LocalOsmosis. And you can use Laika on your local network through <strong>Laika Proxy Extension!</strong></p><p><a href="https://medium.com/laika-lab/introduction-to-laika-proxy-extension-193c2a3ad91">Introduction to Laika Proxy Extension</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*DJ4bSkHLE85C8QR4.png" /></figure><p><strong>3. Code Snippet Generator</strong> 🤖</p><p>Not only you can create a new request through UIs, but Laika also gives you a way to generate code snippets with ease so you can use them on your backend, bot, or anything you want.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Wxt9P2UFR3s7hzuUQriDAw.png" /></figure><p><strong>4. Environment Variables 🌏</strong></p><p>You can even create environment variables so they can be reused many times for any requests you build.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6BRH75am1twmDCMWnCc-rg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*prdyzY5zl6kUVjjorK89Lw.png" /></figure><p><strong>5. Laika Labs CLI </strong>💻</p><p>Laika Labs CLI is a command line tool that simplifies working with web3, providing an efficient and easy way to create and test smart contracts through Laika, a request builder for web3.</p><p>We create it to make integration of Laika and <a href="https://github.com/osmosis-labs/beaker">Beaker</a> possible, Osmosis’s smart contract developer can now write and check their smart contract as fast as a few clicks away!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/0*jRhcP12o7f4bEyLQ.gif" /><figcaption>Demo of Laika Labs CLI syncing to Beaker</figcaption></figure><p>Other than all of that we also added a lot of utility features that you can use to boost your development workflow such as</p><ul><li>Notes 📝 (A handy feature that you can use to jot down details of each request)</li><li>Converter ⚖️ (To help you convert the value to make it easier for the request making)</li><li>History 📜 (Gives you the list of past requests sent via Laika)</li></ul><p>And much more!</p><p>That’s all for this article. Hope you guys like it! See you again next time! 😃</p><blockquote><strong><em>Connect with us</em></strong></blockquote><blockquote><em>Twitter: </em><a href="https://twitter.com/getlaikaapp"><em>https://twitter.com/getlaikaapp</em></a><em><br>Facebook: </em><a href="https://www.facebook.com/getlaikaapp/"><em>https://www.facebook.com/getlaikaapp/</em></a><em><br>Discord: </em><a href="https://discord.gg/4DzwHuxhcf"><em>https://discord.gg/4DzwHuxhcf</em></a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4404b1c698b9" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/a-deep-dive-into-laika-and-osmosis-how-laika-help-you-build-faster-4404b1c698b9">A Deep Dive into Laika and Osmosis: How Laika help you build faster</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introduction to Laika-Labs-CLI]]></title>
            <link>https://medium.com/laika-lab/introduction-to-laika-labs-cli-132ea296fa46?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/132ea296fa46</guid>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[cosmwasm]]></category>
            <category><![CDATA[interchain-academy]]></category>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[blockchain]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Wed, 01 Feb 2023 13:40:26 GMT</pubDate>
            <atom:updated>2023-02-01T16:36:23.070Z</atom:updated>
            <content:encoded><![CDATA[<h4>Laika Labs CLI is a command line tool that simplifies working with web3, providing an efficient and easy way to create and test smart contracts through Laika, the Request Builder for Web3.</h4><p>Good day everyone! Today I’m really excited to introduce you to a tool that we’ve been building for a while now called the <strong>“Laika-Labs-CLI”.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VU-HGShZqu_VTUKXpd3ZUQ.png" /><figcaption>Introduction to Laika-Labs-CLI</figcaption></figure><p>Laika Labs CLI is a command line tool that simplifies the process of working with web3 and blockchain technology. It is built to work with Laika, the request builder for web3 that acts as the “Postman for blockchain.” And it will provide developers with an efficient and easy way to create, and test smart contracts.</p><h4>Installing Laika Labs CLI</h4><ol><li>To install Laika Labs CLI, open a terminal window and run the command npm install -g @laika-labs/cli. <br>This installs the CLI globally on your computer.</li><li>Verify the installation by running laika -v, which should display the version number of the CLI.</li></ol><h4>Syncing a Beaker Smart Contract to Laika via Laika Labs CLI</h4><p>Beaker is a smart contract development tool that allows developers to create and deploy CosmWasm smart contracts on the blockchain. Laika, on the other hand, is a web3 request builder similar to Postman, which makes it easy to test and interact with your smart contracts.</p><ol><li>To sync a Beaker project with Laika, navigate to the directory of the Beaker project in your terminal.</li><li>Run the command beaker wasm ts-gen to generate schema for smart contracts, and then run laika beaker sync &lt;contract-name&gt;, where &lt;contract-name&gt; is the name of the contract you want to sync.</li><li>A link will be generated in the terminal, click on it, and it will automatically generate a new request for you in Laika, allowing you to easily test and interact with your smart contract.</li></ol><p>By following these steps, you can easily use Laika and Beaker together to streamline your smart contract development process.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/0*m5P1XLEtj_EFhSkY.gif" /><figcaption>Demo for Laika-Labs CLI syncing requests in beaker project to Laika</figcaption></figure><p>That’s it for today! Catch up with you guys later!</p><blockquote><strong>Connect with us</strong></blockquote><blockquote>Twitter: <a href="https://twitter.com/getlaikaapp">https://twitter.com/getlaikaapp</a><br>Facebook: <a href="https://www.facebook.com/getlaikaapp/">https://www.facebook.com/getlaikaapp/</a><br>Discord: <a href="https://discord.gg/4DzwHuxhcf">https://discord.gg/4DzwHuxhcf</a></blockquote><blockquote>PS. This article is co-written by ChatGPT. A big shoutout to ChatGPT for its amazing assistance in writing this article!</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=132ea296fa46" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/introduction-to-laika-labs-cli-132ea296fa46">Introduction to Laika-Labs-CLI</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introduction to Laika Proxy Extension]]></title>
            <link>https://medium.com/laika-lab/introduction-to-laika-proxy-extension-193c2a3ad91?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/193c2a3ad91</guid>
            <category><![CDATA[osmosis]]></category>
            <category><![CDATA[laika-blockchain-lab]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[developer-tools]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Thu, 29 Sep 2022 14:38:27 GMT</pubDate>
            <atom:updated>2022-09-29T14:38:27.495Z</atom:updated>
            <content:encoded><![CDATA[<p>Hello everyone! In this article, I’m going to introduce you to <strong>Laika Proxy Extension </strong>which we’ve just released.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kf8VYJN3_mOqTwj9z_NtEA.png" /></figure><p>To give you folks a little more context is that, We’ve just added CosmWasm support which you can explore at <a href="https://interchain.getlaika.app">https://interchain.getlaika.app</a> or look at the tweet below!</p><h3>Laika Labs on Twitter: &quot;@osmosiszone 🧪 devs can now use https://t.co/VUgRXeEL7Q 🐶 to build the interchain ecosystem now! pic.twitter.com/dFrTJCxW2G / Twitter&quot;</h3><p>@osmosiszone 🧪 devs can now use https://t.co/VUgRXeEL7Q 🐶 to build the interchain ecosystem now! pic.twitter.com/dFrTJCxW2G</p><p>But Laika&#39;s interchain version has limitations in that it could not directly communicate with the chain running locally. Since the browser not allowed the web app to directly communicate with the local process.</p><p>And that’s why we built <strong>Laika Proxy Extension</strong> to make it possible to interact with local chains using Laika!</p><p>You can take a quick glance at Laika&#39;s official repository here</p><p><a href="https://github.com/laika-lab/laika-extension">GitHub - laika-lab/laika-extension</a></p><p><strong>Let’s see how to use it!</strong></p><p>1. Clone Laika Proxy Extension from GitHub</p><pre>git clone <a href="https://github.com/laika-lab/laika-extension">https://github.com/laika-lab/laika-extension</a></pre><p>2. Install dependencies</p><pre>cd laika-extension</pre><pre>npm install<br># or<br>yarn install</pre><p>3. Build the extension</p><pre>npm run build<br># or<br>yarn build</pre><p>4. Install the extension by entering chrome://extensions/ it into your browser, You’ll be seeing something similar to this (Don’t forget to turn on Developer Mode)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*eRO0DB5o9Z3wm4-S" /></figure><p>5. Click on Load unpacked and pick dist from the folder that we built on step (3)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dTuEu4x5NVEt8FPF" /></figure><p>6. Wallah! We just installed Laika Proxy Extension!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*kOvvUTzP2Av5hs7Q" /></figure><p>Now you can use Laika with chain running using LocalOsmosis just as you use with other chains that we’ve supported</p><p>That’s all for this article. Hope you guys like it! See you again next time! 😃</p><blockquote><strong><em>Connect with us</em></strong></blockquote><blockquote><em>Twitter: </em><a href="https://twitter.com/getlaikaapp"><em>https://twitter.com/getlaikaapp</em></a><em><br>Facebook: </em><a href="https://www.facebook.com/getlaikaapp/"><em>https://www.facebook.com/getlaikaapp/</em></a><em><br>Discord: </em><a href="https://discord.gg/4DzwHuxhcf"><em>https://discord.gg/4DzwHuxhcf</em></a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=193c2a3ad91" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/introduction-to-laika-proxy-extension-193c2a3ad91">Introduction to Laika Proxy Extension</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Explore Lens Protocol with Laika]]></title>
            <link>https://medium.com/laika-lab/explore-lens-protocol-with-laika-be22dff79fec?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/be22dff79fec</guid>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[blockchain-development]]></category>
            <category><![CDATA[lens-protocol]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[laika-blockchain-lab]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Mon, 27 Jun 2022 06:19:38 GMT</pubDate>
            <atom:updated>2022-06-27T07:16:31.818Z</atom:updated>
            <content:encoded><![CDATA[<p>A lot of you might have heard about Lens Protocol. It’s a new Web3 social graph protocol built by the Aave team. To solve a lot of significant issues in social media that we are currently using. For more details about Lens Protocol you can check out their documentation at <a href="https://docs.lens.xyz/docs/what-is-lens">https://docs.lens.xyz/docs/what-is-lens</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*22d7xkVZrnJQN-wKCFZaPw.jpeg" /></figure><blockquote><strong>Introduction</strong></blockquote><blockquote>The Lens Protocol is a Web3 social graph on the Polygon Proof-of-Stake blockchain. It is designed to empower creators to own the links between themselves and their community, forming a fully composable, user-owned social graph. The protocol is built from the ground up with modularity in mind, allowing new features and fixes to be added while ensuring immutable user-owned content and social relationships.</blockquote><blockquote>— <a href="https://docs.lens.xyz/docs/what-is-lens">https://docs.lens.xyz/docs/what-is-lens</a></blockquote><p>This article aims to be a small article in that we’re going to explore how we can use Laika to interact with Lens Protocol (It’s going to be a fairly short article)</p><p>But here’s the list of what we’re going to do. In which I hope you could get a glimpse of how you can interact with Lens Protocol through Laika</p><p><strong>What we’re going to do</strong></p><ul><li>We going to explore Lens Protocol on Polygon Mumbai Testnet</li><li>Create our own Lens Handle (xxx.lens) through <strong>MockProfileCreationProxy </strong>contract</li><li>Create a new post on Lens through <strong>LensHub Proxy</strong></li></ul><h4><strong>Lens Protocol Overview</strong></h4><p>The team at Lens Protocol designed it to be modular. this is so it is easy to scale the community of Lens Protocol itself. Lens Protocol tokenizes a lot of functionality into ERC721-compliant. So if someone wanted to add more features to Lens Protocol. They just write a new module and then plug it into it. Simple as that!</p><p>The smart contract that you’ll be going to interact with a lot is called <strong>“Lens Hub”</strong>. This is where Lens Protocol places the entry point for the majority of interactions with its protocol.</p><p>For the list of contracts deployed on each chain you can look for it here: <a href="https://docs.lens.xyz/docs/deployed-contract-addresses">https://docs.lens.xyz/docs/deployed-contract-addresses</a></p><blockquote>Before beginning with anything make sure you have MATIC in your wallet on Mumbai Testnet. You can request tokens here <a href="https://faucet.polygon.technology/">https://faucet.polygon.technology/</a></blockquote><h4><strong>Create Lens Profile</strong></h4><p>To create a Lens Profile on Polygon Mumbai is using a little bit different way than other interactions. As I wrote above that you’ll have to interact with <strong>Lens Hub. </strong>Well, this is not the case haha.</p><p>Lens Protocol has a whitelist of people who could create a Lens Profile. Typically, Our address is not in there. But we could create Lens Profile by creating it through the <strong>MockProfileCreationProxy </strong>contract. Which is going to be a proxy that gave us permission to create a new Profile.</p><blockquote>For Polygon Mumbai MockProfileCreationProxy is deployed at <a href="https://mumbai.polygonscan.com/address/0x420f0257D43145bb002E69B14FF2Eb9630Fc4736">0x420f0257D43145bb002E69B14FF2Eb9630Fc4736</a></blockquote><p>Alright! Let’s do it then.</p><p>To make it easier for you guys to follow this tutorial. I exported collections that we’re going to use in this article. You can download it from gist here.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2925a641aa5709d0c7a77b1a76e73025/href">https://medium.com/media/2925a641aa5709d0c7a77b1a76e73025/href</a></iframe><p>Then open Laika at <a href="http://web.getlaika.app">web.getlaika.app</a> Click on Import Collection. Then drop in the JSON file you just downloaded.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BAmbUPGlAshKNCMBCaiQ9Q.png" /></figure><p>You’re going to see lists of requests that I’ve prepared. Feels free to look around!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nMokkUyYY5IKu_1iETu1fw.png" /></figure><p>The request that we’re going to use to create a profile is called <strong>“proxyCreateProfile” </strong>so let’s get to it!</p><p>But before we’re doing anything you’ll notice that. it shows an <strong>Invalid address </strong>under the contract address field. This is because I put in the environment variable with the name <strong>MOCK_PROFILE_CREATOR_PROXY.</strong></p><p>We have to set this up before going next!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L6RB8IpM7f4C0as7XecKnQ.png" /></figure><p>Let’s hit the environment variables button (The globe icon) on the left side of the UI. Then hit <strong>New </strong>Button to create a new one.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_rLIsDVBWKjCLdWY5-DVCg.png" /></figure><p>Now just add new variables to it.</p><blockquote><em>Here I added <br>LENS_HUB = </em>0x60Ae865ee4C725cd04353b5AAb364553f56ceF82<br>MOCK_PROFILE_CREATOR_PROXY = <em>0x420f0257D43145bb002E69B14FF2Eb9630Fc4736<br>Which is address of both of these contracts on Polygon Mumbai</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HbQkTLytimVSM2nvPn8G0Q.png" /></figure><p>And then change our Environment variables to the environment we just created.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9d1-D1PEqGjtZ-1PIOHFQg.png" /></figure><p>Now Let’s fill in the parameters.</p><blockquote>to = your address<br>handle = your desired lens handle<br>imageURI = link to your profile pic<br>followModule = address to follow module (This is add when you want some fancy logic happen when someone follow you. In this case we just put Null Address to it)<br>followModuleInitData = data that use to initialized follow module<br>followNFTURI = uri for followNFT</blockquote><p>And here is a list of what I put</p><blockquote>to = &lt;My Address&gt;<br>handle = &lt;My Desired Handle&gt;<br>imageURI = <a href="https://ipfs.io/ipfs/QmY9dUwYu67puaWBMxRKW98LPbXCznPwHUbhX5NeWnCJbX">https://ipfs.io/ipfs/QmY9dUwYu67puaWBMxRKW98LPbXCznPwHUbhX5NeWnCJbX</a><br>followModule = 0x0000000000000000000000000000000000000000<br>followModuleInitData = 0x00<br>followNFTURI = <a href="https://ipfs.io/ipfs/QmTFLSXdEQ6qsSzaXaCSNtiv6wA56qq87ytXJ182dXDQJS">https://ipfs.io/ipfs/QmTFLSXdEQ6qsSzaXaCSNtiv6wA56qq87ytXJ182dXDQJS</a></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OcUqx4paxzoHIVtaJKJuDg.png" /></figure><p>Now that you filled all of the parameters. Let’s go ahead and click send to create a new Profile!</p><p>And then after the transaction is complete. You’re going to have a new Lens Profile of yourself. (You can check the transaction at Polygonscan to verify it too)</p><p>Let’s see what it looks like!</p><p>I go to tokenOfOwnerByIndex of LensHub contract. go ahead and just out our address (That we just minted a new profile by) and index of 0</p><p>It’s going to return us the tokenID of our profile. So that we can use it to query for data again via <strong>getProfile</strong> request.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3cdWxzjeoChF1EAvoFUNgw.png" /></figure><p>Now I just query for the <strong>getProfile</strong> method. You’ll see the details of my Lens Profile here.</p><p>There are also a lot of other methods to call to get data like<strong> tokenURI, tokenDataOf </strong>But I’ll leave it for you guys to check out!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*a02iEB-mkdntUBGJAwdxBA.png" /></figure><blockquote>Tips: We’re going to reuse ProfileID a lot it will be really handy if we store it as a Environment Variable!</blockquote><h4><strong>Publish a Post</strong></h4><p>Now that we have our own Lens Profile. Let’s get to create a new post!</p><p>Just look for the method <strong>post </strong>inside the Lens Hub folder. This is the method we’re going to use to publish a post.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ptk6f-oIhsjfrdCU_moSyQ.png" /></figure><p>Now Let’s fill in the parameters</p><blockquote>profileId = your profile id from previous<br>contentURI = URI to the content of the post<br>collectModule = address to collect module (remember about follow module? this is similar to it. since anyone can collect any post you who post the content can specify how the collect process is going to be like)<br>collectModuleInitData = data that use to initialized collect module<br>referenceModule = address to reference module<br>collectModuleInitData = data that use to initialized reference module</blockquote><p>Again here’s a list of what I put</p><blockquote>profileId = 13329<br>contentURI = <a href="https://ipfs.io/ipfs/Qmby8QocUU2sPZL46rZeMctAuF5nrCc7eR1PPkooCztWPz">https://ipfs.io/ipfs/Qmby8QocUU2sPZL46rZeMctAuF5nrCc7eR1PPkooCztWPz</a><br>collectModule = 0x0BE6bD7092ee83D44a6eC1D949626FeE48caB30c<br>collectModuleInitData = 0x0000000000000000000000000000000000000000000000000000000000000001<br>referenceModule = 0x0000000000000000000000000000000000000000<br>collectModuleInitData = 0x00</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mTxr-G3nzjNRBhpc48kIYA.png" /></figure><p>And after we publish a new post you can read it using method <strong>getPub</strong></p><blockquote>Here I put pubId = 1 because the index in Lens starts with 1!</blockquote><p>And Wallah! We’ve got our post now!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*v7J9kyKPoB2jG0SNqSFzFQ.png" /></figure><p>And that’s it! We just create a new Lens Profile and Publish a new post on Lens Protocol! For more information about Lens Protocol please refer to their official documentation at <a href="https://docs.lens.xyz/docs">https://docs.lens.xyz/docs</a></p><p>That’s all for this article. Hope you guys like it! See you again next time! 😃</p><blockquote><strong><em>Connect with us</em></strong></blockquote><blockquote><em>Facebook: </em><a href="https://www.facebook.com/getlaikaapp/"><em>https://www.facebook.com/getlaikaapp/</em></a><em><br>Discord: </em><a href="https://discord.gg/4DzwHuxhcf"><em>https://discord.gg/4DzwHuxhcf</em></a><em><br>Twitter: </em><a href="https://twitter.com/getlaikaapp"><em>https://twitter.com/getlaikaapp</em></a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=be22dff79fec" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/explore-lens-protocol-with-laika-be22dff79fec">Explore Lens Protocol with Laika</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Explore Seaport Gas Optimization with Laika]]></title>
            <link>https://medium.com/laika-lab/explore-seaport-gas-optimization-1190d185fd6f?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/1190d185fd6f</guid>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[solidity]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Tue, 31 May 2022 07:12:51 GMT</pubDate>
            <atom:updated>2022-05-31T07:28:47.992Z</atom:updated>
            <content:encoded><![CDATA[<p>As you might know, OpenSea just released the new SeaPort, a brand new NFT Marketplace that is efficient in terms of gas-saving (and more).</p><p>This article will be about what Seaport does for their gas optimization as well as how you can poke Seaport smart contracts using Laika.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xZyyyvAVFy4vOlXadgx5sg.jpeg" /></figure><blockquote>My inspiration for this article came from gist posted by ecmendenhall <a href="https://gist.github.com/ecmendenhall/9408082d8f3cfe50076642d8745fc6d3?fbclid=IwAR2hKI240Agtp7nSP4pPyZd7uztwPIbJBKgwL84vhtEnzA40Y1e_TO8HBGs">here</a>. I liked the way they (OpenSea) did for their smart contracts optimization so I figured let’s take some part of it to be article!</blockquote><p>In this article, we’re going to talk a little bit about Ethereum Calldata. If you never heard of it before I advise you quickly check the article below here before continuing here:</p><p><a href="https://medium.com/laika-lab/get-to-know-ethereum-calldata-72f65e8bffef">Get to know Ethereum Calldata</a></p><p>And some of the Assembly here:</p><p><a href="https://jeancvllr.medium.com/solidity-tutorial-all-about-assembly-5acdfefde05c">Solidity Tutorial : all about Assembly</a></p><p>The smart contract that we’re going to look at today is going to be <strong>Seaport </strong>smart contract. And to be more specific we’re going to look at how they implement their transfer on their <strong>_performERC20Transfer() </strong>function. So let’s look into it!</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9c3864174018e073794c8cbcb4a81723/href">https://medium.com/media/9c3864174018e073794c8cbcb4a81723/href</a></iframe><p>As you can see that it is fairly long here. To make it easier to look at, I’m going to summarize what they do before we’re going to look at it.</p><p>They simply optimize their token transfer by instead of calling a function from another smart contract the ordinary way we use in Solidity they turn it into assembly and perform the call process by themself. (As you can see from lines 10–199)</p><p>Their smart contract consists of a few parts where they have to</p><ul><li>Constructing Ethereum Call data</li><li>Call it on another smart contract</li><li>Handle Errors</li><li>Clean up</li></ul><p>Let’s look into it part by part!</p><ol><li><strong>Constructing Ethereum Calldata</strong></li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jQ0Fj7tNw8gmF9wi_f5xhg.png" /></figure><p>The code above is from lines 11–22. What they do is just load new memory using <strong>mload </strong>and call that <strong>memPointer.</strong></p><p>After that things were fairly simple. They add numbers of values into that memory by storing them using <strong>mstore </strong>function.</p><p>After this finish, the memPointer would be storing something similar to</p><pre>(Function Signature) + (from arg) + (to arg) + (amount arg)</pre><p>then we’re ready to go to the next part.</p><p><strong>2. Call it on another smart contract</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6-io6wkK2LnkNYeZzxFftw.png" /></figure><p>For this part, we use the calldata we construct on the above to call to another smart contract. Hereafter the contract is called we store the data into the variable <strong>callStatus</strong>. and then check if the call is a success by using a beautiful trick on lines 37–46</p><p><strong>3. Handle Errors</strong></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d23fc4656649a28aec67b30bfe4f8f09/href">https://medium.com/media/d23fc4656649a28aec67b30bfe4f8f09/href</a></iframe><p>Alright, this is the part where it’s the longest. But the reason that it’s quite long is that there are a number of cases where the call could go wrong not because it was complicated.</p><p>To make this article small I will show you just how we could add a revert message using Solidity. (If you are interesting in a more complicated situation I advise you look deeply into the codebase)</p><pre>// Otherwise revert with error about token not having code:        mstore(NoContract_error_sig_ptr, NoContract_error_signature)        mstore(NoContract_error_token_ptr, token)        revert(NoContract_error_sig_ptr, NoContract_error_length)</pre><p>This is from lines 137–140. As you can see it’s quite similar to what we do at <strong>1.</strong> <strong>Constructing Ethereum Calldata. </strong>What we’re doing here was to store the data into some memory and then just call <strong>revert()</strong> to let it revert the transaction.</p><p><strong>4. Clean up</strong></p><pre>// Restore the original free memory pointer.            mstore(FreeMemoryPointerSlot, memPointer)</pre><pre>// Restore the zero slot to zero.<br>mstore(ZeroSlot, 0)</pre><p>To clean up the memory there were simply just 2 lines of code (from lines 195–199)</p><p>We clean up the memory since there might be some function that runs after this function that wants to use a memory.</p><p>Alright! So this is just a small walkthrough of <strong>_performERC20Transfer() </strong>there were several examples like this in <strong>Seaport</strong> smart contract which really fun to look at. And if you want to look at their smart contracts Laika would be really helpful when you want to try to look at some functions.</p><p>Let’s see how we could use Laika to help poke their smart contract!</p><p>But first let&#39;s get where the smart contracts are you can look where they deploy their smart contracts here: <a href="https://github.com/ProjectOpenSea/seaport">https://github.com/ProjectOpenSea/seaport</a></p><p>(I will use Rinkeby in this case)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LXMEyBxoA7M8oR1IzAauww.png" /></figure><p>To import their smart contract in Laika is fairly simple just click on the <strong>New</strong> button here.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/532/1*XXRKYPjuB7cU3WLTHlZToQ.png" /></figure><p>Select <strong>Chain Explorer</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*THB684RXC8ZW7X7UsSqiUg.png" /></figure><p>Copy and Paste the address, Pick your desired chain. and then hit <strong>import</strong> button</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5Q9nUEIQakBpwzxD1vGIEw.png" /></figure><p>Done! Here’s a list of requests that you can try playing with their smart contracts.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1v5VCbnExiHmzJCAYA1x5g.png" /></figure><p>Another really cool feature in Laika is that it can auto-generate the Ethereum Call Data for you. This would be really convenient if you want to try to optimize your smart contract using Assembly</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*m_3XX8eLTX0L4Jq0E15nYA.png" /></figure><p>Alright! That’s it for today. Hope you find it useful 😃 See you next time!</p><blockquote><strong><em>Connect with us</em></strong></blockquote><blockquote><em>Facebook: </em><a href="https://www.facebook.com/getlaikaapp/"><em>https://www.facebook.com/getlaikaapp/</em></a><em><br>Discord: </em><a href="https://discord.gg/4DzwHuxhcf"><em>https://discord.gg/4DzwHuxhcf</em></a><em><br>Twitter: </em><a href="https://twitter.com/getlaikaapp"><em>https://twitter.com/getlaikaapp</em></a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1190d185fd6f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/explore-seaport-gas-optimization-1190d185fd6f">Explore Seaport Gas Optimization with Laika</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introduction to hardhat-laika]]></title>
            <link>https://medium.com/laika-lab/introduction-to-hardhat-laika-45929073a4a2?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/45929073a4a2</guid>
            <category><![CDATA[hard-hat]]></category>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[laika-blockchain-lab]]></category>
            <category><![CDATA[blockchain]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Sun, 20 Feb 2022 12:15:23 GMT</pubDate>
            <atom:updated>2022-02-20T12:15:23.004Z</atom:updated>
            <content:encoded><![CDATA[<p>Hi, Buidlers! 🙌 In this article I want to introduce you to another great thing that we’ve been working on lately. It’s a Hardhat plugin called <strong>“hardhat-laika”</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4vnrptVp6nSLpla7U7x5Rg.png" /></figure><p><strong>What is hardhat-laika ?</strong></p><p>hardhat-laika is a Hardhat plugin that helps you sync your compiled contract with Laika. So you can make a request without having to write a single line of code.</p><p>And also, Boost your performance when working with Hardhat 💪</p><p><strong>Let’s try it out!</strong></p><p>First, you going to need to start a new Hardhat project.</p><pre>npx hardhat init</pre><p>Then, pick a configuration you like (I pick this specific configuration because I need Greeter.sol as an example contract so we could get going easily)</p><pre>√ What do you want to do? · Create a basic sample project<br>√ Hardhat project root: · /path/to/project/<br>√ Do you want to add a .gitignore? (Y/n) · y<br>√ Do you want to install this sample project&#39;s dependencies with npm (...)? (Y/n) · y</pre><p>After the setup is completed let’s install hardhat-laika</p><pre>npm i hardhat-laika</pre><p>Now, import it to your hardhat.config.js (By adding require(…) on the top)</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b35eeeb899cae0aedf31e041ded921ed/href">https://medium.com/media/b35eeeb899cae0aedf31e041ded921ed/href</a></iframe><p>Alright, now we’re all set. Let’s try to use it!</p><p>There are 2 ways to use hardhat-laika 1. using it through the command line and 2. using it through your own scripts (hardhat-laika define task is hre so you can use it easily)</p><p>Let’s try the first way.</p><ol><li><strong>Command-Line way</strong></li></ol><p>First, Let’s compile our contract so we get the ABIs.</p><pre>npx hardhat compile</pre><p>Then, use the <strong>laika-sync </strong>task to sync it to Laika</p><pre>npx hardhat laika-sync --contract &lt;contract_name&gt; --address &lt;OPTIONAL address_of_that_contract&gt;</pre><p>For this example, I’ll use the command</p><pre>npx hardhat laika-sync --contract Greeter --address 0x5FbDB2315678afecb367f032d93F642f64180aa</pre><p>You should be able to see something like this.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/616/1*2bkX75lbOFii1pl_UCdA1A.gif" /><figcaption>laika-sync task</figcaption></figure><p><strong>2. Script way</strong></p><p>Let’s take a look at scripts/sample-script.js</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c5baa9c5e241cbda77dc0cdff3e547ad/href">https://medium.com/media/c5baa9c5e241cbda77dc0cdff3e547ad/href</a></iframe><p>I just have to simply add hre.run() to line 25 and we’ll all set! Let’s run it using the command.</p><pre>npx hardhat run scripts/sample-script.js</pre><p>You should be able to see something like this.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/0*SjVc6BI5SiEUakBU.gif" /></figure><p>Alright! That’s it for today. Hope you find it useful 😃 See you next time!</p><blockquote><strong>Connect with us</strong></blockquote><blockquote>Facebook: <a href="https://www.facebook.com/getlaikaapp/">https://www.facebook.com/getlaikaapp/</a><br>Discord: <a href="https://discord.gg/4DzwHuxhcf">https://discord.gg/4DzwHuxhcf</a><br>Twitter: <a href="https://twitter.com/getlaikaapp">https://twitter.com/getlaikaapp</a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=45929073a4a2" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/introduction-to-hardhat-laika-45929073a4a2">Introduction to hardhat-laika</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building your own Custom Hardhat Plugins from scratch]]></title>
            <link>https://medium.com/laika-lab/building-your-own-custom-hardhat-plugins-from-scratch-232ab433b078?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/232ab433b078</guid>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[laika-blockchain-lab]]></category>
            <category><![CDATA[ethereum]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Thu, 17 Feb 2022 13:27:23 GMT</pubDate>
            <atom:updated>2022-02-17T16:35:58.931Z</atom:updated>
            <content:encoded><![CDATA[<p>If you’ve been using Hardhat for a while, there might be some situations where you have some tasks that you perform regularly (eg. remove console.log from your code). In that case, it would be really helpful to create some tasks or some plugins to reuse later.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-r-cf7O8lGmlxqpyLhYGjg.png" /></figure><p>So, in this article, we’re going to walk through how we can create a new custom hardhat plugin from scratch (really really from scratch).</p><h3>What we going to create</h3><p>In this article, I’m going to walk through how I write a custom plugin called hardhat-laika which is the plugin that going to sync ABI of artifacts generate from Hardhat to an application called <strong>Laika</strong></p><blockquote>If you don’t know what Laika is, Laika is a Blockchain development tool that helps you request smart contracts without having the hassle of writing a single line of code — a postman for web3!</blockquote><h3>How does it work?</h3><p>How hardhat-laika is going to work is really simple. It works as follows.</p><ol><li>get the compiled artifacts from specific contracts</li><li>send its ABI to <a href="https://api.getlaika.app">https://api.getlaika.app</a></li><li>get a response from it then generate a new URL so user can access their own contract through Laika</li></ol><p>Alright, as you can see the purpose of it is pretty specific (it is not too simple or too complicated so I think it would be a pretty good example to walk through together).</p><p>So I want to encourage you guys to think about something you want to do yourself and follow along.</p><p>And by all means, I’m no expert in building a custom Hardhat plugin so if you want to add some suggestions I’m really welcome for it!</p><h3>What exactly are Hardhat plugins?</h3><p>According to <a href="https://hardhat.org/advanced/building-plugins.html">https://hardhat.org/advanced/building-plugins.html</a></p><p>Hardhat plugins are reusable configurations or anything you can add to your config file you can pack it together to create another plugin.</p><p>Yep, so the easiest way to build a Hardhat plugin is to get started on your hardhat.config.js!</p><h3>So what can you do with the Hardhat plugin?</h3><p>As said in the documentation, you can do whatever you want on your config file. Let’s list them out so we can get the idea.</p><ul><li>Extending environment (adding a new property to “hre” object)</li><li>Extending configurations</li><li>Create some tasks (<a href="https://hardhat.org/guides/create-task.html">https://hardhat.org/guides/create-task.html</a>)</li></ul><p>and that’s about it!</p><h3>Let’s scaffold our plugin on the config file</h3><p>Before anything else, let’s create a new Hardhat project by using the command</p><pre>npx hardhat init</pre><p>Then, set it up however you like, but for me, I will use this configuration.</p><pre>√ What do you want to do? · Create a basic sample project<br>√ Hardhat project root: · /path/to/project/<br>√ Do you want to add a .gitignore? (Y/n) · y<br>√ Do you want to install this sample project&#39;s dependencies with npm (...)? (Y/n) · y</pre><p>Because I want my hardhat-laika plugin that when I install it I would be able to do something like.</p><pre>npx hardhat laika-sync --contract &lt;name&gt; --address &lt;address&gt;</pre><p>Absolutely, The first thing I have to do is to create a new task for that.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/60e9cbbaf31740fa44cd6a427ebea8a2/href">https://medium.com/media/60e9cbbaf31740fa44cd6a427ebea8a2/href</a></iframe><p>The things that we are doing with this task are really simple and the thing is that this is all we have to do for the task that I want. We get the ABI and contract address upload it to Laika’s backend then generate a new URL so users can access it through the browsers.</p><p>Notice that I’ve been using “open” (to open up the browser) and node-fetch so don’t forget to install it!</p><p>Alright, let’s try it :))</p><p>First I use the command</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Ed3zUnAJuCEHbss2" /></figure><p>Then the plugin would open up the browser and we’ll see the collection that is going to be imported.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xCzctNQPi3aijv4k" /></figure><p>Cool!</p><h3>Now Let’s move it to Plugin</h3><p>When building a new plugin, I really recommend you to use boilerplate provided by Nomiclabs which you can find here <a href="https://github.com/nomiclabs/hardhat-ts-plugin-boilerplate/">https://github.com/nomiclabs/hardhat-ts-plugin-boilerplate/</a></p><p>Try looking around the repo to see how things link together.</p><p>Another great way to explore how things link together is by looking around other plugins if you’re really getting started there are a lot of small plugins that you could go look around.</p><p>eg.</p><ul><li>hardhat-fund-link (<a href="https://github.com/appliedblockchain/chainlink-consumer/tree/master/plugins/fund-link">https://github.com/appliedblockchain/chainlink-consumer/tree/master/plugins/fund-link</a>)</li><li>hardhat-log-remover (<a href="https://github.com/ItsNickBarry/hardhat-log-remover">https://github.com/ItsNickBarry/hardhat-log-remover</a>)</li></ul><p>Alright so first thing first let’s clone the boilerplate to our Hardhat project (You can also click use as a template and just clone that repo)</p><p>git clone <a href="https://github.com/nomiclabs/hardhat-ts-plugin-boilerplate.git">https://github.com/nomiclabs/hardhat-ts-plugin-boilerplate.git</a></p><p>Then let’s head to type-extensions.ts (I find it easier for me to set things up what it should look like first)</p><p>I’m going to put this code in that file.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6db02af069299a5fedb3d3bfd0fa6b1b/href">https://medium.com/media/6db02af069299a5fedb3d3bfd0fa6b1b/href</a></iframe><p>This chunk of code is where I describe the interface of the task I created (laikaSync)</p><p>Next, let’s move our task to the plugin. I’m going to create a new folder call tasks and create a new file in that folder name laika-sync.ts (So when we have more and more tasks every task will not be mixed up in index.ts)</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/451501d58b7e8611712c592d9d46ff5d/href">https://medium.com/media/451501d58b7e8611712c592d9d46ff5d/href</a></iframe><p>I move the task from hardhat.config.js to here. You might notice that I have changed the code structure a little bit to make it more versatile (hopefully lol). Also, you might notice that I have imported endpoint URL from config</p><p>So let’s create it.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6601c4636ed03f8f62b624e69ad53a78/href">https://medium.com/media/6601c4636ed03f8f62b624e69ad53a78/href</a></iframe><p>Yep, this is quite simple. Now let’s move to our index.ts</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c9d3b649a766e6f9b05e49686550e6a9/href">https://medium.com/media/c9d3b649a766e6f9b05e49686550e6a9/href</a></iframe><p>Also, quite simple haha. In this file, I just extend the environment by adding laikaSync to the hre. And this is about it! your plugin is ready 👀</p><h3>Let’s test it &amp; publish</h3><blockquote><em>Because our plugin is written in Typescript so don’t forget to build it!</em></blockquote><p>After I clone the boilerplate I change the name to hardhat-laika</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/534/0*yjYw1GcV8UDPZSlg" /></figure><p>So when I’m going to use it I would have to add require(”./hardhat-laika”) to my hardhat.config.js (the root of project one)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1SYtWpyBJcIGJzlL" /></figure><p>Yep! It’s still working like expected! Anyway, It would be a great idea if we write a test script for it but that’s the topic for another article! 👀</p><p>If you want to publish to npm and have never done it before just head to <a href="https://docs.npmjs.com/cli/v8/commands/npm-publish">https://docs.npmjs.com/cli/v8/commands/npm-publish</a> for more information.</p><p>Phew~, That was a lot to cover. Thanks a lot for reading up until this point! Hope you get a grasp of how to build a new Hardhat plugin.</p><p>Anyway if you have time I really encourage you to try hardhat-laika with Laika out here: <a href="https://www.npmjs.com/package/hardhat-laika">https://www.npmjs.com/package/hardhat-laika</a></p><p>We will surely have more articles about how to use hardhat-laika out soon. Stay tuned!</p><p>See ya next time 😃</p><blockquote><strong><em>Connect with us</em></strong></blockquote><blockquote><em>Facebook: </em><a href="https://www.facebook.com/getlaikaapp/"><em>https://www.facebook.com/getlaikaapp/</em></a><em><br>Discord: </em><a href="https://discord.gg/4DzwHuxhcf"><em>https://discord.gg/4DzwHuxhcf</em></a><em><br>Twitter: </em><a href="https://twitter.com/getlaikaapp"><em>https://twitter.com/getlaikaapp</em></a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=232ab433b078" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/building-your-own-custom-hardhat-plugins-from-scratch-232ab433b078">Building your own Custom Hardhat Plugins from scratch</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Laika Blockchain Lab (12 Feb 2022 Update)]]></title>
            <link>https://medium.com/laika-lab/laika-blockchain-lab-12-feb-2022-update-f1be994e23bf?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/f1be994e23bf</guid>
            <category><![CDATA[laika-blockchain-lab]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[ethereum]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Sat, 12 Feb 2022 10:12:25 GMT</pubDate>
            <atom:updated>2022-02-12T10:12:25.850Z</atom:updated>
            <content:encoded><![CDATA[<p>Hello there! 😃 It’s nice to see you guys again!</p><p>This blog is intended to be the update of what we have been doing since the last update. Let’s go!👀</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bEoI6eN8I0_qHSgaiYlQlw.png" /></figure><ol><li><strong>Variable Suggestion </strong>🤖</li></ol><p>We added the variable suggestions (for environment variables, etc.) hope this comes in handy!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BpdMrEPJZgLQwXTo9tRMTQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/572/0*t8ZIc9CXeWTnY2Jb.png" /></figure><p>2. <strong>Theme sync with System 🌓</strong></p><p>A small thing to update but the Theme is now syncing with your system!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/1*cG35ShveoZJgcDnxvBKzBw.png" /></figure><p>3. <strong>Chain Switcher</strong> 🎛</p><p>This came in handy when you want to work with a new chain (eg. REI)</p><p>Also, when you select a new chain that never use before it would auto add that new chain to your Metamask!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rJ_RhTrk1LbUlmpSkDDhyw.png" /></figure><p>4. <strong>Home Revamp</strong> 🏠</p><p>We revamp our home interface a bit. You should be able to quickly create a new Request or Look at the documentation from here 👀</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0J4sEBeKXaitIsaX60Mtfg.png" /></figure><p>5. <strong>Rei Chain Support</strong> 🤝</p><p>We’ve just partner with REI Chain to make it easier to work with the Rei chain. Using Laika it was really easy to work with the Rei chain. You can directly import ABI from the reiscan.</p><p>If you never used the REI chain before you can just click on chain switcher and pick Rei Chain we’ll automatically add it for you!</p><blockquote>Check out REI here: <a href="https://reichain.io/">https://reichain.io/</a></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/288/0*A8U2fi4skQxqzZUx.png" /></figure><p>6. <strong>Token Transfer Inspector</strong> 🔭</p><p>You can now inspect token transfer directly in Laika 👀 If you’re working with requests involving Tokens this should come in handy!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*CBLmBRtUs9tk9kNb.png" /></figure><p>7. <strong>Hardhat Integrations</strong> 🛠</p><p>This feature is not come out yet. But just to hype you guy a little bit Laika team just start working on the Hardhat plugin that will sync your Hardhat project with Laika!</p><p>Stay tuned!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vATkKRDAH204nT1VOhZDDg.png" /></figure><p>And there’s a lot more! Just try it at <a href="https://getlaika.app/">https://getlaika.app</a></p><p>See ya next time! 🤗</p><p>#BUIDL #getlaikaapp</p><blockquote><strong>Connect with us</strong></blockquote><blockquote>Facebook: <a href="https://www.facebook.com/getlaikaapp/">https://www.facebook.com/getlaikaapp/</a><br>Discord: <a href="https://discord.gg/4DzwHuxhcf">https://discord.gg/4DzwHuxhcf</a><br>Twitter: <a href="https://twitter.com/getlaikaapp">https://twitter.com/getlaikaapp</a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f1be994e23bf" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/laika-blockchain-lab-12-feb-2022-update-f1be994e23bf">Laika Blockchain Lab (12 Feb 2022 Update)</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Laika Blockchain Lab (19 Jan 2022 Update)]]></title>
            <link>https://medium.com/laika-lab/laika-blockchain-lab-19-jan-2022-update-4bb4a7bc1e48?source=rss-eede37948446------2</link>
            <guid isPermaLink="false">https://medium.com/p/4bb4a7bc1e48</guid>
            <category><![CDATA[solidity]]></category>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[blockchain-development]]></category>
            <category><![CDATA[smart-contracts]]></category>
            <category><![CDATA[laika-blockchain-lab]]></category>
            <dc:creator><![CDATA[Nonthakon Jitchiranant]]></dc:creator>
            <pubDate>Wed, 19 Jan 2022 04:29:15 GMT</pubDate>
            <atom:updated>2022-01-19T04:29:15.504Z</atom:updated>
            <content:encoded><![CDATA[<p>Hello! It’s nice to see you again :)</p><p>We’ve been working on a lot of things for the past few weeks and there’s a lot of new features since our last update. Let’s see what is it! 👀</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dSQHdnHh3zcbXG5B.jpg" /></figure><ol><li><strong>Chain Request (Beta)</strong> ⛓</li></ol><p>Want to test with a scenario? There’s some method you want to call first and then another? Chain Request come here to help!</p><p>You can structure requests in a flow and easily look at the result one by one!</p><p><em>(Note: Chain Request is currently in Beta)</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6PXErxbQCBaoTNiM2u0ygg.png" /></figure><p><strong>2. Environment Variables</strong> 🏕</p><p>Have a lot of repeating values? Let’s make it an Environment variable and just reuse it!</p><p>Laika is now supporting Environment Variables just click on the 🌍 icon on the left bar add a new variable.</p><p>when you want to use it just put a <strong>{{ variable_name }}</strong> on any field!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L6vxJmul_GMWLmaXiXMZUw.png" /></figure><p><strong>3. Calldata Inspector </strong>🔭</p><p>You can now inspect the Calldata of each request with the Call Data tab! This makes it easier to inspect the request byte by byte 👀</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*H7S4E0aJ20duOucGZRt1yw.png" /></figure><p><strong>4. Sighash Request #️⃣</strong></p><p>Another cool thing is you can now use Sighash as a method name! just put Sighash to the method name field and that was it!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*16hTUJiqkUHHfewKnCB4Cw.png" /></figure><p><strong>5. Hash Converter ⚖️</strong></p><p>We added Hash Converter into the right toolbar! Hope this comes in handy 🤗</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*s2piEfB5EUYb41Tkrn5lvg.png" /></figure><p>And there’s a lot more! Just try it at <a href="https://getlaika.app/">https://getlaika.app</a></p><p>See ya next time! 🤗</p><p>#BUIDL #getlaikaapp</p><blockquote><strong><em>Connect with us</em></strong></blockquote><blockquote><em>Facebook: </em><a href="https://www.facebook.com/getlaikaapp/"><em>https://www.facebook.com/getlaikaapp/</em></a><em><br>Discord: </em><a href="https://discord.gg/4DzwHuxhcf"><em>https://discord.gg/4DzwHuxhcf</em></a><em><br>Twitter: </em><a href="https://twitter.com/getlaikaapp"><em>https://twitter.com/getlaikaapp</em></a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4bb4a7bc1e48" width="1" height="1" alt=""><hr><p><a href="https://medium.com/laika-lab/laika-blockchain-lab-19-jan-2022-update-4bb4a7bc1e48">Laika Blockchain Lab (19 Jan 2022 Update)</a> was originally published in <a href="https://medium.com/laika-lab">Laika Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>