<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anjana Jayaweera</title>
    <description>The latest articles on DEV Community by Anjana Jayaweera (@anjana_j).</description>
    <link>https://dev.to/anjana_j</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1046118%2F401f4a4a-6b18-4118-8eeb-a42ef4541948.jpeg</url>
      <title>DEV Community: Anjana Jayaweera</title>
      <link>https://dev.to/anjana_j</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anjana_j"/>
    <language>en</language>
    <item>
      <title>Unlock the Full Potential of ChatGPT (or any LLM) in Just Two Simple Steps</title>
      <dc:creator>Anjana Jayaweera</dc:creator>
      <pubDate>Thu, 21 Aug 2025 01:25:50 +0000</pubDate>
      <link>https://dev.to/anjana_j/unlock-the-full-potential-of-chatgpt-or-any-llm-in-just-two-simple-steps-1plb</link>
      <guid>https://dev.to/anjana_j/unlock-the-full-potential-of-chatgpt-or-any-llm-in-just-two-simple-steps-1plb</guid>
      <description>&lt;p&gt;ChatGPT 5 was released on August 7, 2025 and like many others, I wanted to figure out the best way to talk to it. Social media is full of tips, and I wanted to write this guide in a way that everyone can test it out for themselves, rather than following anything blindly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Starting Point
&lt;/h2&gt;

&lt;p&gt;Think of it like meeting someone new. You don’t just start asking random questions. You introduce yourself, share a bit about your interests, and set the tone for the conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why can’t we apply the same principle to ChatGPT as well?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Introduce Yourself to ChatGPT
&lt;/h2&gt;

&lt;p&gt;OpenAI has an option to do this via “Custom Instructions”. You can find this either under &lt;em&gt;“Settings → Personalization → Custom Instructions”&lt;/em&gt;, or by clicking the “Customize ChatGPT” link at the bottom-left of your profile image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffa0lj6jmhift9ela8ghk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffa0lj6jmhift9ela8ghk.webp"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are two demo videos from OpenAI showing how it works&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/i_cskqmWA3U"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/iFHmvwvVCSg"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The first key section is:&lt;br&gt;
&lt;strong&gt;“What traits should ChatGPT have?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here, you decide &lt;em&gt;how&lt;/em&gt; ChatGPT should reply. You can choose from suggested tags or write your own.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhre2lfylg7r92r7x90k7.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhre2lfylg7r92r7x90k7.webp" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next is:&lt;br&gt;
&lt;strong&gt;“Anything else ChatGPT should know about you?”&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If someone wants to know you better, what would you tell them about you?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can write anything here. There’s no right or wrong way of writing this section but just be clear, concise, and honest. I personally keep it simple. I have organised mine into sections as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Professional Background&lt;/li&gt;
&lt;li&gt;Mindset&lt;/li&gt;
&lt;li&gt;Communication Style&lt;/li&gt;
&lt;li&gt;Formatting Preferences&lt;/li&gt;
&lt;li&gt;Level of Detail&lt;/li&gt;
&lt;li&gt;Hobbies&lt;/li&gt;
&lt;li&gt;Current Location&lt;/li&gt;
&lt;li&gt;Current Focus&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example :&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I have a strong technology and product background, with 15+ years in software engineering and leadership.&lt;/p&gt;

&lt;p&gt;I think and communicate best through examples, analogies, and step-by-step explanations.&lt;/p&gt;

&lt;p&gt;I value clear structure, so I prefer bullet points, numbered lists, or other organised formatting.&lt;/p&gt;

&lt;p&gt;I enjoy creative problem-solving, entrepreneurship, and exploring ways to build meaningful projects from simple ideas.&lt;/p&gt;

&lt;p&gt;I like practical, forward-thinking advice that’s direct and actionable, not sugar-coated.&lt;/p&gt;

&lt;p&gt;I balance a busy professional life with personal pursuits like focusing on my family, cricket, photography, and living a healthy life, so time efficiency is important.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt;&lt;br&gt;
Keep your &lt;strong&gt;“current focus”&lt;/strong&gt; updated. ChatGPT adapts its responses based on what matters to you now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optional:&lt;/strong&gt;&lt;br&gt;
Delete saved memories if you want a fresh start, but if you find them helpful, keep them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Ask ChatGPT for a Clear Prompt Structure
&lt;/h2&gt;

&lt;p&gt;Now that you have introduced yourself, it’s time to get to know about ChatGPT. Start a new chat and paste the following prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hey Chat, I want to understand how to communicate better with you. Is there any recommended way I should give instructions? Can you give me a template to follow?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once you do this, based on your custom instructions, ChatGPT will give you a template catered specially to you. It usually looks like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; [What you want the AI to do]&lt;br&gt;
&lt;strong&gt;Context:&lt;/strong&gt; [Background, constraints, goals]&lt;br&gt;
&lt;strong&gt;References:&lt;/strong&gt; [Links, examples, docs]&lt;br&gt;
&lt;strong&gt;Format:&lt;/strong&gt; [Bullet points, table, JSON, step-by-step]&lt;br&gt;
&lt;strong&gt;Persona:&lt;/strong&gt; [Choose or customize]&lt;br&gt;
&lt;strong&gt;Evaluation Criteria:&lt;/strong&gt; [Tone, length, technical depth]&lt;br&gt;
&lt;strong&gt;Extra Instructions:&lt;/strong&gt; [Optional style notes or things to avoid]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There’s no one-size-fits-all. You can write prompts in natural language or bullet points. &lt;strong&gt;The key is clarity&lt;/strong&gt;. Personally, I like bullet points, but sometimes natural language feels easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 1 — Natural language:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Act as a CTO. I want a 90-day technical roadmap for launching a SaaS MVP for small accounting firms.&lt;br&gt;
&lt;strong&gt;Context:&lt;/strong&gt; Bootstrapped budget, need rapid validation, using a remote dev team.&lt;br&gt;
&lt;strong&gt;Constraints:&lt;/strong&gt; Focus on speed, low cost, and maintainability. Bullet points only.&lt;br&gt;
&lt;strong&gt;Output:&lt;/strong&gt; Table with “Phase”, “Key Actions”, “Tools/Tech”, “Expected Outcome”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Option 2 — Bullet style:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Create a 90-day technical roadmap for launching a SaaS MVP for a small accounting firm.&lt;br&gt;
&lt;strong&gt;Context:&lt;/strong&gt; Bootstrapped budget, need rapid market validation, using a remote development team.&lt;br&gt;
&lt;strong&gt;Constraints:&lt;/strong&gt; prioritise speed, low cost, and maintainability.&lt;br&gt;
&lt;strong&gt;References:&lt;/strong&gt; SaaS MVP best practices, lean startup methodology, and case studies of bootstrapped SaaS launches.&lt;br&gt;
&lt;strong&gt;Format:&lt;/strong&gt; Table with columns: Phase, Key Actions, Tools/Tech, Expected Outcome.&lt;br&gt;
&lt;strong&gt;Persona:&lt;/strong&gt; CTO — provide blunt, strategic advice focused on delivering a functional MVP quickly while balancing technical debt with future scalability.&lt;br&gt;
&lt;strong&gt;Evaluation Criteria:&lt;/strong&gt; Roadmap must have actionable steps, be achievable in 90 days, and clearly identify quick wins. Must account for technical trade-offs and cost efficiency.&lt;br&gt;
Extra Instructions: Use bullet points within the table cells. Avoid over-engineering; focus on features essential for launch and validation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Use whichever style feels comfortable to you.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And that got me thinking, where else could this format be applied?&lt;/p&gt;

&lt;h2&gt;
  
  
  Scaling this structure across various Use Cases
&lt;/h2&gt;

&lt;p&gt;Initially, I assumed it was mostly for those “Act as…” style prompts. Turns out, I was wrong. Once I started experimenting, I realised the structure works across a wide range of use cases, including:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Brainstorming and Ideation&lt;/strong&gt; — Generating fresh concepts, creative angles, or product ideas.&lt;br&gt;
&lt;strong&gt;Technical Planning and Architecture&lt;/strong&gt; — Designing systems, workflows, and high-level blueprints.&lt;br&gt;
&lt;strong&gt;Decision Support&lt;/strong&gt; — Weighing pros and cons, evaluating trade-offs, and recommending actions.&lt;br&gt;
&lt;strong&gt;Content Creation&lt;/strong&gt; — Writing articles, scripts, marketing copy, or creative pieces.&lt;br&gt;
&lt;strong&gt;Training and Documentation&lt;/strong&gt; — Producing clear instructions, guides, and learning material.&lt;br&gt;
&lt;strong&gt;Risk Assessment and Compliance&lt;/strong&gt; — Identifying potential pitfalls and regulatory considerations.&lt;br&gt;
&lt;strong&gt;Optimisation and Review&lt;/strong&gt; — Refining ideas, improving workflows, and stress-testing strategies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example : Decision Support&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Act as a Cloud Solutions Architect. Compare three cloud hosting options for running a high-traffic headless CMS for a travel website.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context:&lt;/strong&gt; We expect 5M monthly visitors, mostly from Asian countries, and require sub-200ms TTFB with strong CDN coverage in the region. The solution must handle high traffic, be reliable, and scale cost-effectively over three years.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt; AWS, GCP, and Azure hosting documentation, pricing, and regional performance benchmarks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Format:&lt;/strong&gt; A comparison table with columns: Provider, Pros, Cons, Estimated Monthly Cost, Scalability Rating.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evaluation Criteria:&lt;/strong&gt; Identify the best choice for balancing cost, performance, and scalability over a 3-year horizon. Must consider global and regional latency, CDN presence, and infrastructure reliability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extra Instructions:&lt;/strong&gt; Include relevant performance benchmarks if available; ignore small-scale hosting providers or niche solutions. Ensure recommendations account for traffic spikes during seasonal peaks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where the real power of this format clicked for me. It’s not just about making ChatGPT “roleplay” a persona, it’s about giving it a structured lens to tackle almost any problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Yourself!
&lt;/h2&gt;

&lt;p&gt;Give these steps a shot and see how it works for you. AI is evolving every second, and I’m all ears to learn from your experiments and insights too!&lt;/p&gt;

&lt;p&gt;Leave a comment below with your experience. What worked, what didn’t, and how you overcome the flows.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this experiment led to
&lt;/h2&gt;

&lt;p&gt;I spotted an opportunity. Why not turn this process into a lightweight app that can generate prompts on demand?&lt;/p&gt;

&lt;p&gt;So, I vibe coded a “ChatGPT Prompt Builder App” using Cursor AI. Here’s how it looks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9av3nn3a493y8go3rhae.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9av3nn3a493y8go3rhae.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's the Link&lt;br&gt;
&lt;a href="https://chatgpt-prompt-builder.vercel.app" rel="noopener noreferrer"&gt;https://chatgpt-prompt-builder.vercel.app&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How Soul-bound Tokens Fit into the Verifiable Credential Trust Triangle</title>
      <dc:creator>Anjana Jayaweera</dc:creator>
      <pubDate>Tue, 11 Apr 2023 23:18:26 +0000</pubDate>
      <link>https://dev.to/anjana_j/how-soul-bound-tokens-fit-into-the-verifiable-credential-trust-triangle-49dp</link>
      <guid>https://dev.to/anjana_j/how-soul-bound-tokens-fit-into-the-verifiable-credential-trust-triangle-49dp</guid>
      <description>&lt;p&gt;Have you ever wondered how &lt;a href="https://vitalik.ca/general/2022/01/26/soulbound.html"&gt;Soul-bound&lt;/a&gt; Tokens and &lt;a href="https://www.dock.io/post/verifiable-credentials"&gt;Verifiable Credentials&lt;/a&gt; relate to each other? These two blockchain-based solutions share some similarities but also have some significant differences.&lt;/p&gt;

&lt;p&gt;Both technologies have an issuer who creates the credential, a holder who owns and controls it, and a verifier who validates its authenticity and ownership. However, in the case of Soul-bound Tokens, the issuer could be a DAO (Decentralized Autonomous Organization), the verifier could be anyone who can utilize zero-knowledge proof, and the holder is simply an EOA (Externally Owned Account).&lt;/p&gt;

&lt;p&gt;Verifiable Credentials are mainly used for verifying identity and credentials, while Soul-bound Tokens use NFT (non-fungible tokens) to demonstrate uniqueness and scarcity, which can be used for credential issuance and digital identity.&lt;br&gt;
When it comes to security, Verifiable Credentials use cryptographic signatures to ensure authenticity and tamper-proofing, while Soul-bound Tokens use NFTs to achieve the same result.&lt;/p&gt;

&lt;p&gt;Although Verifiable Credentials are associated with standards like the W3C's Verifiable Credentials specification, Soul-bound Tokens are still in the process of developing a standard specification (PS: &lt;a href="https://github.com/attestate/awesome-soulbound-tokens"&gt;Awesome Soulbound Tokens&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;As blockchain technology continues to advance, solutions like Verifiable Credentials and Soul-bound Tokens will be crucial in enabling decentralized and self-sovereign identity. Understanding how they fit into the trust triangle is a vital step toward achieving a more secure and equitable digital future.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>verifiablecredentials</category>
      <category>zeroknowledgeproof</category>
      <category>soulboundtokens</category>
    </item>
    <item>
      <title>Getting Started with Hedera Hashgraph with OpenZepplin</title>
      <dc:creator>Anjana Jayaweera</dc:creator>
      <pubDate>Sun, 02 Apr 2023 10:07:34 +0000</pubDate>
      <link>https://dev.to/anjana_j/getting-started-with-hedera-hashgraph-with-openzepplin-j8g</link>
      <guid>https://dev.to/anjana_j/getting-started-with-hedera-hashgraph-with-openzepplin-j8g</guid>
      <description>&lt;p&gt;Terms like Blockchain, Crypto, smart contracts, NFT, and DeFi are no longer new words for netizens. Most of them have a somewhat good understanding of what they mean and there are plenty of resources available to get to know about them too.&lt;/p&gt;

&lt;p&gt;The blockchain industry is constantly evolving, with new protocols being developed and existing ones being improved upon. Today, I’m going to write about how to start your development with an interesting blockchain protocol available, Hedera.&lt;/p&gt;

&lt;p&gt;Like most of the smart contract developers out there, I too started my blockchain journey with Ethereum and writing smart contracts using solidity. Solidity was created in 2014 by Dr. Gavin Wood, in order to meet Ethereum’s demand for a Turing-complete programming language for creating smart contracts.&lt;/p&gt;

&lt;p&gt;Nearly a decade later, solidity is still the most popular smart contract language to date because of the less-learning curve and its similarity to javascript. If you know how to write smart contracts in solidity, that means you automatically know how to work with several EVM-based blockchain protocols including Arbitrum, Avalanche, Binance Chain, Optimism, Polygon, etc.&lt;/p&gt;

&lt;p&gt;Before diving into the code, allow me to give TL;DR information about Hedera and why it’s actually interesting. For people who already know about Hedara, you can skip to the development guide straight away.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Hedera Hashgraph and why it’s Interesting?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hedera Hashgraph is a distributed ledger technology&lt;/li&gt;
&lt;li&gt;It uses a patented consensus algorithm called the Hashgraph to achieve fast and secure consensus&lt;/li&gt;
&lt;li&gt;It is designed to be a fast, fair, and secure public network that can support a wide range of decentralized applications&lt;/li&gt;
&lt;li&gt;Hedera Hashgraph is bundled with a set of benefits including high throughput, low latency, fair ordering of transactions, and strong security.&lt;/li&gt;
&lt;li&gt;Hedera Hashgraph uses advanced encryption and consensus algorithms to ensure that transactions are secure and cannot be tampered with.&lt;/li&gt;
&lt;li&gt;Hedera has a unique governance model that allows for decentralized decision-making and ensures that the platform remains fair and accessible to all participants&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more information, you can go through the official documentation of &lt;a href="https://hedera.com/learning/hedera-hashgraph/what-is-hedera-hashgraph"&gt;Hedera Explained&lt;/a&gt; and &lt;a href="https://hedera.com/how-it-works"&gt;How it works&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  History of Hedera’s support of Solidity
&lt;/h2&gt;

&lt;p&gt;Hedera didn’t support writing smart contracts using solidity from Day 1. Developers used “Hedera API” (now deprecated) with existing languages such as JavaScript or Java to interact with its hashgraph. But, this made adoption a little slower even though API could leverage its high throughput and fast transaction finality.&lt;/p&gt;

&lt;p&gt;Hedera started to support Solidity in early 2021. It started with supporting Solidity version 0.4.25 but the change of adopting Hyperledger Besu EVM helped to extend support for more recent versions of solidity through Hedera Services module. Rather than opting out for a completely different smart contract language, this addition made Hedara more accessible and developer-friendly.&lt;/p&gt;

&lt;p&gt;At this time of writing, &lt;a href="https://docs.hedera.com/hedera/sdks-and-apis/sdks/smart-contracts/create-a-smart-contract"&gt;the latest version of Solidity which Hedera is supporting is 0.8.9&lt;/a&gt;, in all of its networks (including public and testnets). For comparison, the latest version of solidity is &lt;a href="https://blog.soliditylang.org/2023/02/22/solidity-0.8.19-release-announcement/"&gt;0.8.19&lt;/a&gt;. This means you may not able to use the most updated features of solidity with Hedera but for comparison’s sake, one of the biggest DEX, Uniswap V3 written in &lt;a href="https://github.com/Uniswap/v3-core/tree/main/contracts"&gt;0.7.6&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s get started with the development
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Create an Account
&lt;/h3&gt;

&lt;p&gt;Just like you need to have an Ethereum Account (or Ethereum Wallet) to interact with EVM-based blockchain protocols, Hedera also needs to have Hedera Account to get started. The difference is, you can use the same ethereum wallet address to interact in both development and mainnet tasks but Hedera wants to have two separate accounts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wouOduQ7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j1j45kstmvc26gmu0t0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wouOduQ7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j1j45kstmvc26gmu0t0n.png" alt="portal.hedera.com landing page" width="720" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, to start development, go to &lt;a href="//portal.hedera.com"&gt;portal.hedera.com&lt;/a&gt; and create a Testnet account by simply providing your email address and hit that “Start Building” button. It will ask you to verify your email address and create your portal profile.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rhOK9FmW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xprvdn3dw48fetiek66m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rhOK9FmW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xprvdn3dw48fetiek66m.png" alt="Create Testnet Account&amp;lt;br&amp;gt;
" width="720" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have done that, you will get access to Hedera Portal. Click on “Create Account” button to have your first Testnet Account. This will create ED25519-based public and private keys along with an Account ID. But for this exercise, we are going to create an account with an ECDSA key. To do that, click on “Create ECDSA Account”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iHd7vHEX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yr73nclz01a1sgawc8gg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iHd7vHEX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yr73nclz01a1sgawc8gg.png" alt="Create an account with ECDSA key" width="720" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hedera supports two types of cryptographic key pairs for its accounts: ECDSA and ed25519. In a nutshell, ed25519 is gaining popularity due to its efficiency and security properties but ECDSA is more widely supported by other blockchain platforms and systems. In this case, we are choosing ECDSA because, we need to have an EVM address to interact with.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--REfJto4M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5nu9lqqofp1v7l9vac54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--REfJto4M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5nu9lqqofp1v7l9vac54.png" alt="An account with ECDSA Key. You can see the HEX-encoded Private Key" width="720" height="578"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Verify your account in Testnet
&lt;/h3&gt;

&lt;p&gt;You can verify your testnet account by going to &lt;a href="//hashscan.io"&gt;hashscan.io&lt;/a&gt;. Choose TESTNET from the dropdown beside the Dashboard link and paste your Account ID or EVM address in the search bar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rd13YaQR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/axpccx1xh0s9fp5ylhby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rd13YaQR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/axpccx1xh0s9fp5ylhby.png" alt="Hashscan.io" width="720" height="362"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2: Environment Setup
&lt;/h3&gt;

&lt;p&gt;We are going to use one of the most popular Ethereum development tools in this step. We are going to use hardhat.&lt;/p&gt;

&lt;p&gt;Create a new directory where you want to set up the environment.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir hedera-starter &amp;amp;&amp;amp; cd hedera-starter&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Initiate a node.js project and install hardhat dependencies for it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn init -y
yarn add dotenv
yarn add --dev hardhat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;npx hardhat&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And create a javascript project from the command line wizard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p8dX4iGZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0k0ve86vji2l6sun4p03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p8dX4iGZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0k0ve86vji2l6sun4p03.png" alt="Hardhat command line Wizard" width="645" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create an env file using the below command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;touch .env&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add OpenZeplling contracts to your project folder using the below command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yarn add @openzeppelin/contracts&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After completing that step, your folder structure will look like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lwjIDurq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qej7giy0hpleruc5wzto.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lwjIDurq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qej7giy0hpleruc5wzto.png" alt="Directory Structure" width="286" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the .env file, add your ECDSA account details as below.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EVM_ADDRESS=&amp;lt;EVM_ADDRESS_FROM_HEDERA_PORTAL&amp;gt;
HEX_PRIVATE_KEY=&amp;lt;PRIVATE_KEY_FROM_HEDERA_PORTAL&amp;gt;
TESTNET_ENDPOINT="https://testnet.hashio.io/api"
CONTRACT_ADDRESS=&amp;lt;UPDATING_LATER_IN_THE_PROJECT&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;When we are using hardhat, we need to have a JSON_RPC endpoint to connect with the Hedera testnet. For that, we are going to use &lt;a href="https://swirldslabs.com/"&gt;Swirlds Labs&lt;/a&gt; hosted Hedera JSON-RPC-Relay called “&lt;a href="https://swirldslabs.com/hashio/"&gt;Hashio&lt;/a&gt;”. This is still in Beta, so you can expect some downtimes or connectivity issues sometimes.&lt;/p&gt;

&lt;p&gt;Let’s change our hardhat.config.js as below.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;We are halfway there.&lt;/p&gt;

&lt;p&gt;Instead of the sample smart contract coming with Hardhat, let’s write a simple HelloWorld contract along with OpenZepplin’s Ownable and Pausable contracts.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Even if it’s a very simple smart contract, let’s write some test cases to make sure that we are getting the right outcome.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Let’s write the deploy script&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;And Contract Call script next.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Finally, Contract Write script.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;All done :)&lt;/p&gt;

&lt;p&gt;This is how our final project looks like in the project directory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xajFfXl5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cep4ir55buj31wbskoex.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xajFfXl5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cep4ir55buj31wbskoex.png" alt="Final Look of the Project Directory" width="720" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let’s deploy this smart contract to Hedera’s testnet. Run the below command in the terminal.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx hardhat run scripts/deploy.js --network hashio&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once deployed, the terminal will show you the deployed address. Copy that and update it in the .env file.&lt;/p&gt;

&lt;p&gt;Now, let’s call for &lt;code&gt;getMessage()&lt;/code&gt;function in the smart contract.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx hardhat run scripts/getMessage.js --network hashio&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Finally, let’s write into the smart contract using &lt;code&gt;setMessage()&lt;/code&gt;function.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx hardhat run scripts/setMessage.js --network hashio&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can verify whether the message got changed by running the &lt;code&gt;getMessage()&lt;/code&gt;function again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Congratulations!&lt;br&gt;
You have just deployed your first smart contract in Hedera.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---i9vAI9_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlgf73lkdp9wju2y3ry4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---i9vAI9_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlgf73lkdp9wju2y3ry4.png" alt="Contract Create Transaction in HashScan" width="720" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to try out the whole exercise without going through step-by-step, the full codebase is available here: &lt;a href="https://github.com/anjana-j/hedera-starter"&gt;https://github.com/anjana-j/hedera-starter&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Final words
&lt;/h3&gt;

&lt;p&gt;There’s no clear indication that how deep OpenZepplin contracts are supporting in Hedara yet! And there are limitations in OPSCODES support in Hedera as well. Because of this reason, some of the OpenZepplin contract might not going to work. However, there’s a partnership announcement saying that they helped to &lt;a href="https://www.hbarfoundation.org/blog-post/openzeppelin-to-secure-anz-banks-a-dc-stablecoin-on-hedera"&gt;deploy ANZ A$DC StableCoin On Hedera&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The method to deploy popular ERC20 and ERC721 token contracts is a little different in Hedera. It uses a service called “Hedera Token Service”. Hold your horses before you deploy any token contracts there.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>hedera</category>
      <category>hashgraph</category>
      <category>openzepplin</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>How to convert Solidity JSON ABI to Human Readable ABI in Hardhat</title>
      <dc:creator>Anjana Jayaweera</dc:creator>
      <pubDate>Thu, 16 Mar 2023 00:27:42 +0000</pubDate>
      <link>https://dev.to/anjana_j/how-to-convert-solidity-json-abi-to-human-readable-abi-in-hardhat-21mj</link>
      <guid>https://dev.to/anjana_j/how-to-convert-solidity-json-abi-to-human-readable-abi-in-hardhat-21mj</guid>
      <description>&lt;p&gt;When you develop dApps, one of the main requirements is to load the Application Binary Interface (ABI) into your frontend app. The methods and data structures of the contract are defined in the ABI, which is a JSON object. Although the JSON ABI may be used by programs to interact with the contract and is machine-readable, it can be challenging for people to understand. This post will cover the process of converting Solidity JSON ABI to a readable format using ethers.js&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Get the Solidity JSON ABI
&lt;/h3&gt;

&lt;p&gt;The first step is to obtain the Solidity JSON ABI from the smart contract. By utilizing the Solidity compiler to compile the contract or a program like Remix IDE, you can obtain the ABI. In this case, we are going to use hardhat.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Load the ABI
&lt;/h3&gt;

&lt;p&gt;When hardhat compiling the smart contracts, the compiled file is stored in &lt;code&gt;artifacts/contracts/&amp;lt;your-contract-name&amp;gt;.sol/&amp;lt;your-contract-name&amp;gt;.json&lt;/code&gt; path. If your contract is not compiled yet, simply run npx hardhat compilecommand to compile the contracts.&lt;/p&gt;

&lt;p&gt;Let’s create a javascript file under the scripts folder called “convert-abi.js” and write the below code in your js file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6q4zi2ei8si1j9xb33bb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6q4zi2ei8si1j9xb33bb.png" alt="create convert-abi.js file under scrips folder"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

touch convert-abi.js


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;Ether.js is supporting three outputs mainly named “json”, “full” and “minimal”. Using the “full” format will ensure the result objects have named properties, which improves code readability. Although the “minimal” format will save some room, it is typically not worthwhile because named properties on results won’t be present. So, we will use “full” format type.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Convert the JSON ABI
&lt;/h3&gt;

&lt;p&gt;Simply run the below command in your terminal.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

npx hardhat run scripts/convert-abi.js


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvkuksxw4cusk7sx4nve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvkuksxw4cusk7sx4nve.png" alt="Output displays after running convert-abi.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy the output and use it in your project as you see fit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Converting Solidity JSON ABI to a human-readable format can be a useful tool for understanding the interface of a smart contract. This can be useful for smart contract writers as well as for anyone interested to gain a better understanding of how a contract works.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>blockchain</category>
      <category>solidity</category>
      <category>hardhat</category>
    </item>
  </channel>
</rss>
