---
title: "ప్రారంభకుల కోసం హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్"
description: "ఎథీరియంపై ఒక సాధారణ స్మార్ట్ కాంట్రాక్ట్‌ను రాయడం మరియు డిప్లాయ్ చేయడంపై పరిచయ ట్యుటోరియల్."
author: "elanh"
tags: ["Solidity", "Hardhat", "Alchemy", "స్మార్ట్ కాంట్రాక్ట్‌లు", "డిప్లాయ్ చేయడం"]
skill: beginner
breadcrumb: "హలో వరల్డ్ కాంట్రాక్ట్"
lang: te
published: 2021-03-31
---

మీరు బ్లాక్‌చైన్ డెవలప్‌మెంట్‌కు కొత్త అయితే మరియు ఎక్కడ ప్రారంభించాలో తెలియకపోతే, లేదా స్మార్ట్ కాంట్రాక్ట్‌లను ఎలా డిప్లాయ్ చేయాలో మరియు వాటితో ఎలా ఇంటరాక్ట్ అవ్వాలో అర్థం చేసుకోవాలనుకుంటే, ఈ గైడ్ మీ కోసమే. వర్చువల్ వాలెట్ [MetaMask](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), మరియు [Alchemy](https://www.alchemy.com/eth) ఉపయోగించి Sepolia టెస్ట్ నెట్‌వర్క్‌లో ఒక సాధారణ స్మార్ట్ కాంట్రాక్ట్‌ను సృష్టించడం మరియు డిప్లాయ్ చేయడం ద్వారా మేము మీకు మార్గనిర్దేశం చేస్తాము (వీటి అర్థం మీకు ఇంకా తెలియకపోతే చింతించకండి, మేము వివరిస్తాము).

ఈ ట్యుటోరియల్ యొక్క [పార్ట్ 2](/developers/tutorials/hello-world-smart-contract-fullstack/#part-2-interact-with-your-smart-contract) లో, మన స్మార్ట్ కాంట్రాక్ట్ ఇక్కడ డిప్లాయ్ అయిన తర్వాత దానితో ఎలా ఇంటరాక్ట్ అవ్వవచ్చో చూస్తాము, మరియు [పార్ట్ 3](/developers/tutorials/hello-world-smart-contract-fullstack/#part-3-publish-your-smart-contract-to-etherscan) లో దాన్ని Etherscan లో ఎలా పబ్లిష్ చేయాలో కవర్ చేస్తాము.

మీకు ఏ సమయంలోనైనా ప్రశ్నలు ఉంటే, [Alchemy డిస్కార్డ్](https://discord.gg/gWuC7zB) లో సంప్రదించడానికి సంకోచించకండి!

## దశ 1: ఎథీరియం నెట్‌వర్క్‌కు కనెక్ట్ అవ్వండి {#step-1}

ఎథీరియం చైన్‌కు అభ్యర్థనలు చేయడానికి అనేక మార్గాలు ఉన్నాయి. సరళత కోసం, మేము Alchemy లో ఉచిత ఖాతాను ఉపయోగిస్తాము, ఇది మన స్వంత నోడ్‌లను రన్ చేయాల్సిన అవసరం లేకుండా ఎథీరియం చైన్‌తో కమ్యూనికేట్ చేయడానికి అనుమతించే బ్లాక్‌చైన్ డెవలపర్ ప్లాట్‌ఫారమ్ మరియు API. ఈ ప్లాట్‌ఫారమ్‌లో పర్యవేక్షణ మరియు విశ్లేషణల కోసం డెవలపర్ సాధనాలు కూడా ఉన్నాయి, మన స్మార్ట్ కాంట్రాక్ట్ డిప్లాయ్‌మెంట్‌లో అంతర్గతంగా ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి ఈ ట్యుటోరియల్‌లో వాటిని ఉపయోగించుకుంటాము. మీకు ఇప్పటికే Alchemy ఖాతా లేకపోతే, [మీరు ఇక్కడ ఉచితంగా సైన్ అప్ చేయవచ్చు](https://dashboard.alchemy.com/signup).

## దశ 2: మీ యాప్‌ను (మరియు API కీని) సృష్టించండి {#step-2}

మీరు Alchemy ఖాతాను సృష్టించిన తర్వాత, యాప్‌ను సృష్టించడం ద్వారా మీరు API కీని రూపొందించవచ్చు. ఇది Sepolia టెస్ట్ నెట్‌వర్క్‌కు అభ్యర్థనలు చేయడానికి మనల్ని అనుమతిస్తుంది. మీకు టెస్ట్‌నెట్‌ల గురించి తెలియకపోతే, [ఈ పేజీని](/developers/docs/networks/) చూడండి.

1.  నావ్ బార్‌లో "Select an app" ఎంచుకుని, "Create new app" క్లిక్ చేయడం ద్వారా మీ Alchemy డాష్‌బోర్డ్‌లోని "Create new app" పేజీకి వెళ్లండి.

![Hello world create app](./hello-world-create-app.png)

2. మీ యాప్‌కు “Hello World” అని పేరు పెట్టండి, చిన్న వివరణను అందించండి మరియు ఒక యూజ్ కేస్‌ను ఎంచుకోండి, ఉదాహరణకు, "Infra & Tooling." తర్వాత, "Ethereum" కోసం వెతికి నెట్‌వర్క్‌ను ఎంచుకోండి.

![create app view hello world](./create-app-view-hello-world.png)

3. కొనసాగడానికి "Next" క్లిక్ చేయండి, ఆపై “Create app” క్లిక్ చేయండి, అంతే! కాపీ చేయడానికి అందుబాటులో ఉన్న API కీతో మీ యాప్ నావ్ బార్ డ్రాప్‌డౌన్ మెనులో కనిపించాలి.

## దశ 3: ఎథీరియం ఖాతాను (చిరునామా) సృష్టించండి {#step-3}

లావాదేవీలను పంపడానికి మరియు స్వీకరించడానికి మనకు ఎథీరియం ఖాతా అవసరం. ఈ ట్యుటోరియల్ కోసం, మీ ఎథీరియం ఖాతా చిరునామాను నిర్వహించడానికి బ్రౌజర్‌లో ఉపయోగించే వర్చువల్ వాలెట్ అయిన MetaMask ని ఉపయోగిస్తాము. [లావాదేవీల](/developers/docs/transactions/) గురించి మరింత తెలుసుకోండి.

మీరు MetaMask ని డౌన్‌లోడ్ చేసుకోవచ్చు మరియు [ఇక్కడ](https://metamask.io/download) ఉచితంగా ఎథీరియం ఖాతాను సృష్టించవచ్చు. మీరు ఖాతాను సృష్టిస్తున్నప్పుడు, లేదా మీకు ఇప్పటికే ఖాతా ఉంటే, నెట్‌వర్క్ డ్రాప్‌డౌన్ మెనుని ఉపయోగించి "Sepolia" టెస్ట్ నెట్‌వర్క్‌కు మారేలా చూసుకోండి (తద్వారా మనం నిజమైన డబ్బుతో వ్యవహరించము).

మీకు Sepolia జాబితాలో కనిపించకపోతే, మెనులోకి వెళ్లి, ఆపై Advanced కి వెళ్లి, "Show test networks" ని ఆన్ చేయడానికి క్రిందికి స్క్రోల్ చేయండి. నెట్‌వర్క్ ఎంపిక మెనులో, టెస్ట్‌నెట్‌ల జాబితాను కనుగొనడానికి "Custom" ట్యాబ్‌ను ఎంచుకుని, "Sepolia" ని ఎంచుకోండి.

![metamask sepolia example](./metamask-sepolia-example.png)

## దశ 4: ఫాసెట్ నుండి ఈథర్‌ను జోడించండి {#step-4}

మన స్మార్ట్ కాంట్రాక్ట్‌ను టెస్ట్ నెట్‌వర్క్‌కు డిప్లాయ్ చేయడానికి, మనకు కొంత నకిలీ ETH అవసరం. Sepolia ETH ని పొందడానికి మీరు వివిధ ఫాసెట్‌ల జాబితాను వీక్షించడానికి [Sepolia నెట్‌వర్క్ వివరాలకు](/developers/docs/networks/#sepolia) వెళ్లవచ్చు. ఒకటి పని చేయకపోతే, మరొకదాన్ని ప్రయత్నించండి ఎందుకంటే అవి కొన్నిసార్లు ఖాళీ కావచ్చు. నెట్‌వర్క్ ట్రాఫిక్ కారణంగా మీ నకిలీ ETH ని స్వీకరించడానికి కొంత సమయం పట్టవచ్చు. ఆ తర్వాత కొద్దిసేపటికే మీ MetaMask ఖాతాలో ETH కనిపించాలి!

## దశ 5: మీ బ్యాలెన్స్‌ని తనిఖీ చేయండి {#step-5}

మన బ్యాలెన్స్ ఉందో లేదో ఒకసారి తనిఖీ చేయడానికి, [Alchemy యొక్క కంపోజర్ టూల్](https://sandbox.alchemy.com/?network=ETH_SEPOLIA&method=eth_getBalance&body.id=1&body.jsonrpc=2.0&body.method=eth_getBalance&body.params%5B0%5D=&body.params%5B1%5D=latest) ఉపయోగించి [eth_getBalance](/developers/docs/apis/json-rpc/#eth_getbalance) అభ్యర్థన చేద్దాం. ఇది మన వాలెట్‌లోని ETH మొత్తాన్ని తిరిగి ఇస్తుంది. మీరు మీ MetaMask ఖాతా చిరునామాను ఇన్‌పుట్ చేసి, “Send Request” క్లిక్ చేసిన తర్వాత, మీరు ఇలాంటి ప్రతిస్పందనను చూడాలి:

```json
{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
```

> **గమనిక:** ఈ ఫలితం Wei లో ఉంది, ETH లో కాదు. ఈథర్ యొక్క అతిచిన్న విలువగా Wei ఉపయోగించబడుతుంది. Wei నుండి ETH కి మార్పిడి: 1 eth = 10<sup>18</sup> Wei. కాబట్టి మనం 0x2B5E3AF16B1880000 ని దశాంశానికి మార్చినట్లయితే మనకు 5\*10¹⁸ వస్తుంది, ఇది 5 ETH కి సమానం.
>
> హమ్మయ్య! మన నకిలీ డబ్బు అంతా అక్కడే ఉంది <Emoji text=":money_mouth_face:" size={1} />.

## దశ 6: మన ప్రాజెక్ట్‌ను ఇనిషియలైజ్ చేయండి {#step-6}

ముందుగా, మనం మన ప్రాజెక్ట్ కోసం ఒక ఫోల్డర్‌ను సృష్టించాలి. మీ కమాండ్ లైన్‌కి వెళ్లి ఇలా టైప్ చేయండి:

```
mkdir hello-world
cd hello-world
```

ఇప్పుడు మనం మన ప్రాజెక్ట్ ఫోల్డర్ లోపల ఉన్నాము కాబట్టి, ప్రాజెక్ట్‌ను ఇనిషియలైజ్ చేయడానికి మనం `npm init` ని ఉపయోగిస్తాము. మీకు ఇప్పటికే npm ఇన్‌స్టాల్ చేయబడి ఉండకపోతే, [Node.js ఇన్‌స్టాలేషన్ సూచనలను](https://nodejs.org/en/download/) అనుసరించండి (ఈ ట్యుటోరియల్ కోసం మనకు Node.js మరియు npm అవసరం).

```
npm init
```

ఇన్‌స్టాలేషన్ ప్రశ్నలకు మీరు ఎలా సమాధానం ఇస్తారు అనేది అంత ముఖ్యం కాదు, రిఫరెన్స్ కోసం మేము దీన్ని ఎలా చేసామో ఇక్కడ ఉంది:

```
package name: (hello-world)
version: (1.0.0)
description: hello world smart contract
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/.../.../.../hello-world/package.json:

{
  "name": "hello-world",
  "version": "1.0.0",
  "description": "hello world smart contract",
  "main": "index.js",
  "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
```

package.json ని ఆమోదించండి మరియు మనం ముందుకు వెళ్లడానికి సిద్ధంగా ఉన్నాము!
## దశ 7: [Hardhat](https://hardhat.org/getting-started/#overview) ని డౌన్‌లోడ్ చేయండి {#step-7}

Hardhat అనేది మీ ఎథీరియం సాఫ్ట్‌వేర్‌ను కంపైల్ చేయడానికి, డిప్లాయ్ చేయడానికి, పరీక్షించడానికి మరియు డీబగ్ చేయడానికి ఒక డెవలప్‌మెంట్ వాతావరణం. లైవ్ చైన్‌కు డిప్లాయ్ చేయడానికి ముందు స్థానికంగా స్మార్ట్ కాంట్రాక్ట్‌లు మరియు డాప్‌లను (dapps) నిర్మించేటప్పుడు ఇది డెవలపర్‌లకు సహాయపడుతుంది.

మన `hello-world` ప్రాజెక్ట్ లోపల దీన్ని రన్ చేయండి:

```
npm install --save-dev hardhat
```

[ఇన్‌స్టాలేషన్ సూచనల](https://hardhat.org/getting-started/#overview) గురించి మరిన్ని వివరాల కోసం ఈ పేజీని చూడండి.

## దశ 8: Hardhat ప్రాజెక్ట్‌ను సృష్టించండి {#step-8}

మన ప్రాజెక్ట్ ఫోల్డర్ లోపల దీన్ని రన్ చేయండి:

```
npx hardhat
```

ఆ తర్వాత మీరు స్వాగత సందేశాన్ని మరియు మీరు ఏమి చేయాలనుకుంటున్నారో ఎంచుకోవడానికి ఒక ఎంపికను చూడాలి. “create an empty hardhat.config.js” ని ఎంచుకోండి:

```
888    888                      888 888               888
888    888                      888 888               888
888    888                      888 888               888
8888888888  8888b.  888d888 .d88888 88888b.   8888b.  888888
888    888     "88b 888P"  d88" 888 888 "88b     "88b 888
888    888 .d888888 888    888  888 888  888 .d888888 888
888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.
888    888 "Y888888 888     "Y88888 888  888 "Y888888  "Y888

👷 Welcome to Hardhat v2.0.11 👷‍?

What do you want to do? …
Create a sample project
❯ Create an empty hardhat.config.js
Quit
```

ఇది మన కోసం `hardhat.config.js` ఫైల్‌ను రూపొందిస్తుంది, ఇక్కడే మనం మన ప్రాజెక్ట్ కోసం సెటప్ అంతా పేర్కొంటాము (దశ 13 లో).

## దశ 9: ప్రాజెక్ట్ ఫోల్డర్‌లను జోడించండి {#step-9}

మన ప్రాజెక్ట్‌ను క్రమబద్ధంగా ఉంచడానికి మనం రెండు కొత్త ఫోల్డర్‌లను సృష్టిస్తాము. మీ కమాండ్ లైన్‌లో మీ ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీకి వెళ్లి ఇలా టైప్ చేయండి:

```
mkdir contracts
mkdir scripts
```

- `contracts/` అనేది మన హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ కోడ్ ఫైల్‌ను ఉంచే ప్రదేశం
- `scripts/` అనేది మన కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి మరియు దానితో ఇంటరాక్ట్ అవ్వడానికి స్క్రిప్ట్‌లను ఉంచే ప్రదేశం

## దశ 10: మన కాంట్రాక్ట్‌ను రాయండి {#step-10}

మనం కోడ్ ఎప్పుడు రాస్తాము అని మీరు ఆశ్చర్యపోతుండవచ్చు?? సరే, మనం ఇక్కడ 10వ దశలో ఉన్నాము.

మీకు ఇష్టమైన ఎడిటర్‌లో (మాకు [VSCode](https://code.visualstudio.com/) ఇష్టం) hello-world ప్రాజెక్ట్‌ను తెరవండి. స్మార్ట్ కాంట్రాక్ట్‌లు Solidity అనే భాషలో వ్రాయబడతాయి, మన HelloWorld.sol స్మార్ట్ కాంట్రాక్ట్‌ను రాయడానికి మనం దీన్నే ఉపయోగిస్తాము.‌

1.  “contracts” ఫోల్డర్‌కి వెళ్లి HelloWorld.sol అనే కొత్త ఫైల్‌ను సృష్టించండి
2.  ఈ ట్యుటోరియల్ కోసం మనం ఉపయోగించబోయే ఎథీరియం ఫౌండేషన్ నుండి ఒక నమూనా హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ క్రింద ఉంది. క్రింది కంటెంట్‌లను కాపీ చేసి మీ HelloWorld.sol ఫైల్‌లో పేస్ట్ చేయండి మరియు ఈ కాంట్రాక్ట్ ఏమి చేస్తుందో అర్థం చేసుకోవడానికి వ్యాఖ్యలను తప్పకుండా చదవండి:

```solidity
// సెమాంటిక్ వెర్షనింగ్‌ను ఉపయోగించి, Solidity యొక్క వెర్షన్‌ను నిర్దేశిస్తుంది.
// మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
pragma solidity ^0.7.0;

// `HelloWorld` పేరుతో ఉన్న ఒక కాంట్రాక్ట్‌ను నిర్వచిస్తుంది.
// కాంట్రాక్ట్ అనేది ఫంక్షన్లు మరియు డేటా (దాని స్థితి) యొక్క సమూహం. ఒకసారి డిప్లాయ్ చేసిన తర్వాత, కాంట్రాక్ట్ ఎథీరియం బ్లాక్‌చైన్‌లోని ఒక నిర్దిష్ట చిరునామా వద్ద ఉంటుంది. మరింత తెలుసుకోండి: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
contract HelloWorld {

   // `string` రకానికి చెందిన `message` (సందేశం) అనే స్టేట్ వేరియబుల్‌ను ప్రకటిస్తుంది.
   // స్టేట్ వేరియబుల్స్ అంటే వాటి విలువలు కాంట్రాక్ట్ స్టోరేజ్‌లో శాశ్వతంగా నిల్వ చేయబడే వేరియబుల్స్. `public` కీవర్డ్ వేరియబుల్స్‌ను కాంట్రాక్ట్ వెలుపల నుండి యాక్సెస్ చేయడానికి వీలు కల్పిస్తుంది మరియు విలువను యాక్సెస్ చేయడానికి ఇతర కాంట్రాక్ట్‌లు లేదా క్లయింట్లు కాల్ చేయగల ఒక ఫంక్షన్‌ను సృష్టిస్తుంది.
   string public message;

   // అనేక క్లాస్-ఆధారిత ఆబ్జెక్ట్-ఓరియెంటెడ్ భాషల మాదిరిగానే, కన్‌స్ట్రక్టర్ అనేది కాంట్రాక్ట్ సృష్టించినప్పుడు మాత్రమే అమలు చేయబడే ఒక ప్రత్యేక ఫంక్షన్.
   // కాంట్రాక్ట్ యొక్క డేటాను ఇనిషియలైజ్ చేయడానికి కన్‌స్ట్రక్టర్లు ఉపయోగించబడతాయి. మరింత తెలుసుకోండి:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
   constructor(string memory initMessage) {

      // `initMessage` అనే స్ట్రింగ్ ఆర్గ్యుమెంట్‌ను అంగీకరిస్తుంది మరియు కాంట్రాక్ట్ యొక్క `message` (సందేశం) స్టోరేజ్ వేరియబుల్‌లో విలువను సెట్ చేస్తుంది).
      message = initMessage;
   }

   // స్ట్రింగ్ ఆర్గ్యుమెంట్‌ను అంగీకరించి, `message` (సందేశం) స్టోరేజ్ వేరియబుల్‌ను అప్‌డేట్ చేసే ఒక పబ్లిక్ ఫంక్షన్.
   function update(string memory newMessage) public {
      message = newMessage;
   }
}
```

ఇది చాలా సులభమైన స్మార్ట్ కాంట్రాక్ట్, ఇది సృష్టించబడినప్పుడు ఒక సందేశాన్ని నిల్వ చేస్తుంది మరియు `update` ఫంక్షన్‌ను కాల్ చేయడం ద్వారా అప్‌డేట్ చేయబడుతుంది.

## దశ 11: మీ ప్రాజెక్ట్‌కి MetaMask & Alchemy ని కనెక్ట్ చేయండి {#step-11}

మనం MetaMask వాలెట్, Alchemy ఖాతాను సృష్టించాము మరియు మన స్మార్ట్ కాంట్రాక్ట్‌ను రాశాము, ఇప్పుడు ఈ మూడింటినీ కనెక్ట్ చేసే సమయం వచ్చింది.

మీ వర్చువల్ వాలెట్ నుండి పంపబడే ప్రతి లావాదేవీకి మీ ప్రత్యేకమైన ప్రైవేట్ కీని ఉపయోగించి సంతకం అవసరం. మన ప్రోగ్రామ్‌కు ఈ అనుమతిని అందించడానికి, మనం మన ప్రైవేట్ కీని (మరియు Alchemy API కీని) ఎన్విరాన్‌మెంట్ ఫైల్‌లో సురక్షితంగా నిల్వ చేయవచ్చు.

> లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, Web3 ఉపయోగించి లావాదేవీలను పంపడంపై [ఈ ట్యుటోరియల్‌ని](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) చూడండి.

ముందుగా, మీ ప్రాజెక్ట్ డైరెక్టరీలో dotenv ప్యాకేజీని ఇన్‌స్టాల్ చేయండి:

```
npm install dotenv --save
```

తర్వాత, మన ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీలో `.env` ఫైల్‌ను సృష్టించండి మరియు దానికి మీ MetaMask ప్రైవేట్ కీ మరియు HTTP Alchemy API URL ని జోడించండి.

- మీ ప్రైవేట్ కీని ఎగుమతి చేయడానికి [ఈ సూచనలను](https://support.metamask.io/configure/accounts/how-to-export-an-accounts-private-key/) అనుసరించండి
- HTTP Alchemy API URL ని పొందడానికి క్రింద చూడండి

![get alchemy api key](./get-alchemy-api-key.png)

Alchemy API URL ని కాపీ చేయండి

మీ `.env` ఇలా ఉండాలి:

```
API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"
PRIVATE_KEY = "your-metamask-private-key"
```

వీటిని వాస్తవానికి మన కోడ్‌కి కనెక్ట్ చేయడానికి, మనం 13వ దశలో మన `hardhat.config.js` ఫైల్‌లో ఈ వేరియబుల్స్‌ను సూచిస్తాము.

<Alert variant="warning">
<AlertContent>
<AlertDescription>
<code>.env</code> ని కమిట్ చేయకండి! దయచేసి మీ <code>.env</code> ఫైల్‌ను ఎవరితోనూ పంచుకోకుండా లేదా బహిర్గతం చేయకుండా చూసుకోండి, ఎందుకంటే అలా చేయడం ద్వారా మీరు మీ రహస్యాలను రాజీ పడుతున్నారు. మీరు వెర్షన్ కంట్రోల్‌ని ఉపయోగిస్తుంటే, మీ <code>.env</code> ని <a href="https://git-scm.com/docs/gitignore">gitignore</a> ఫైల్‌కి జోడించండి.
</AlertDescription>
</AlertContent>
</Alert>

## దశ 12: Ethers.js ని ఇన్‌స్టాల్ చేయండి {#step-12-install-ethersjs}

Ethers.js అనేది [ప్రామాణిక జేసన్-ఆర్‌పీసీ పద్ధతులను](/developers/docs/apis/json-rpc/) మరింత యూజర్ ఫ్రెండ్లీ పద్ధతులతో చుట్టడం ద్వారా ఎథీరియంతో ఇంటరాక్ట్ అవ్వడాన్ని మరియు అభ్యర్థనలు చేయడాన్ని సులభతరం చేసే లైబ్రరీ.

అదనపు టూలింగ్ మరియు విస్తరించిన కార్యాచరణ కోసం [ప్లగిన్‌లను](https://hardhat.org/plugins/) ఏకీకృతం చేయడాన్ని Hardhat చాలా సులభతరం చేస్తుంది. కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ కోసం మనం [Ethers ప్లగిన్‌ను](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) ఉపయోగించుకుంటాము ([Ethers.js](https://github.com/ethers-io/ethers.js/) లో కొన్ని చాలా స్పష్టమైన కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ పద్ధతులు ఉన్నాయి).

మీ ప్రాజెక్ట్ డైరెక్టరీలో ఇలా టైప్ చేయండి:

```
npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"
```

తదుపరి దశలో మన `hardhat.config.js` లో కూడా మనకు ethers అవసరం.

## దశ 13: hardhat.config.js ని అప్‌డేట్ చేయండి {#step-13-update-hardhatconfigjs}

మనం ఇప్పటివరకు అనేక డిపెండెన్సీలు మరియు ప్లగిన్‌లను జోడించాము, ఇప్పుడు మనం `hardhat.config.js` ని అప్‌డేట్ చేయాలి, తద్వారా మన ప్రాజెక్ట్‌కి వాటన్నింటి గురించి తెలుస్తుంది.

మీ `hardhat.config.js` ని ఇలా కనిపించేలా అప్‌డేట్ చేయండి:

```
require('dotenv').config();

require("@nomiclabs/hardhat-ethers");
const { API_URL, PRIVATE_KEY } = process.env;

/**
* @type import('hardhat/config').HardhatUserConfig
*/
module.exports = {
   solidity: "0.7.3",
   defaultNetwork: "sepolia",
   networks: {
      hardhat: {},
      sepolia: {
         url: API_URL,
         accounts: [`0x${PRIVATE_KEY}`]
      }
   },
}
```

## దశ 14: మన కాంట్రాక్ట్‌ను కంపైల్ చేయండి {#step-14-compile-our-contracts}

ఇప్పటివరకు అంతా సరిగ్గా పనిచేస్తుందో లేదో నిర్ధారించుకోవడానికి, మన కాంట్రాక్ట్‌ను కంపైల్ చేద్దాం. `compile` టాస్క్ అనేది అంతర్నిర్మిత hardhat టాస్క్‌లలో ఒకటి.

కమాండ్ లైన్ నుండి దీన్ని రన్ చేయండి:

```
npx hardhat compile
```

మీకు `SPDX license identifier not provided in source file` గురించి హెచ్చరిక రావచ్చు, కానీ దాని గురించి చింతించాల్సిన అవసరం లేదు — మిగతావన్నీ బాగానే ఉన్నాయని ఆశిస్తున్నాము! లేకపోతే, మీరు ఎల్లప్పుడూ [Alchemy డిస్కార్డ్](https://discord.gg/u72VCg3) లో మెసేజ్ చేయవచ్చు.

## దశ 15: మన డిప్లాయ్ స్క్రిప్ట్‌ను రాయండి {#step-15-write-our-deploy-scripts}

ఇప్పుడు మన కాంట్రాక్ట్ వ్రాయబడింది మరియు మన కాన్ఫిగరేషన్ ఫైల్ సిద్ధంగా ఉంది కాబట్టి, మన కాంట్రాక్ట్ డిప్లాయ్ స్క్రిప్ట్‌ను రాసే సమయం వచ్చింది.

`scripts/` ఫోల్డర్‌కి వెళ్లి `deploy.js` అనే కొత్త ఫైల్‌ను సృష్టించండి, దానికి క్రింది కంటెంట్‌లను జోడించండి:

```
async function main() {
   const HelloWorld = await ethers.getContractFactory("HelloWorld");

   // Start deployment, returning a promise that resolves to a contract object
   const hello_world = await HelloWorld.deploy("Hello World!");
   console.log("Contract deployed to address:", hello_world.address);}

main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error);
    process.exit(1);
  });
```

ఈ కోడ్ లైన్‌లలో ప్రతి ఒక్కటి ఏమి చేస్తుందో వివరించడంలో Hardhat వారి [కాంట్రాక్ట్‌ల ట్యుటోరియల్‌లో](https://hardhat.org/tutorial/testing-contracts.html#writing-tests) అద్భుతమైన పని చేస్తుంది, మేము వారి వివరణలను ఇక్కడ స్వీకరించాము.

```
const HelloWorld = await ethers.getContractFactory("HelloWorld");
```

ethers.js లోని `ContractFactory` అనేది కొత్త స్మార్ట్ కాంట్రాక్ట్‌లను డిప్లాయ్ చేయడానికి ఉపయోగించే ఒక అబ్‌స్ట్రాక్షన్, కాబట్టి ఇక్కడ `HelloWorld` అనేది మన హలో వరల్డ్ కాంట్రాక్ట్ ఇన్‌స్టాన్స్‌ల కోసం ఒక ఫ్యాక్టరీ. `hardhat-ethers` ప్లగిన్‌ను ఉపయోగిస్తున్నప్పుడు `ContractFactory` మరియు `Contract` ఇన్‌స్టాన్స్‌లు అప్రమేయంగా మొదటి సంతకందారుకి కనెక్ట్ చేయబడతాయి.

```
const hello_world = await HelloWorld.deploy();
```

`ContractFactory` పై `deploy()` ని కాల్ చేయడం డిప్లాయ్‌మెంట్‌ను ప్రారంభిస్తుంది మరియు `Contract` కి రిజాల్వ్ అయ్యే `Promise` ని తిరిగి ఇస్తుంది. ఇది మన స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌లలో ప్రతిదానికీ ఒక పద్ధతిని కలిగి ఉన్న ఆబ్జెక్ట్.

## దశ 16: మన కాంట్రాక్ట్‌ను డిప్లాయ్ చేయండి {#step-16-deploy-our-contract}

మనం చివరగా మన స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి సిద్ధంగా ఉన్నాము! కమాండ్ లైన్‌కి వెళ్లి దీన్ని రన్ చేయండి:

```
npx hardhat run scripts/deploy.js --network sepolia
```

ఆ తర్వాత మీరు ఇలాంటిది చూడాలి:

```
Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
```

మనం [Sepolia Etherscan](https://sepolia.etherscan.io/) కి వెళ్లి మన కాంట్రాక్ట్ చిరునామా కోసం వెతికితే, అది విజయవంతంగా డిప్లాయ్ చేయబడిందని మనం చూడగలగాలి. లావాదేవీ ఇలా కనిపిస్తుంది:

![etherscan contract](./etherscan-contract.png)

`From` చిరునామా మీ MetaMask ఖాతా చిరునామాతో సరిపోలాలి మరియు To చిరునామా “Contract Creation” అని చెబుతుంది కానీ మనం లావాదేవీలోకి క్లిక్ చేస్తే `To` ఫీల్డ్‌లో మన కాంట్రాక్ట్ చిరునామాను చూస్తాము:

![etherscan transaction](./etherscan-transaction.png)

అభినందనలు! మీరు ఇప్పుడే ఎథీరియం చైన్‌కు ఒక స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేసారు 🎉

అంతర్గతంగా ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి, మన [Alchemy డాష్‌బోర్డ్‌లోని](https://dashboard.alchemy.com/explorer) ఎక్స్‌ప్లోరర్ ట్యాబ్‌కి వెళ్దాం. మీకు బహుళ Alchemy యాప్‌లు ఉంటే, యాప్ ద్వారా ఫిల్టర్ చేసి “Hello World” ని ఎంచుకునేలా చూసుకోండి.
![hello world explorer](./hello-world-explorer.png)

మనం `.deploy()` ఫంక్షన్‌ను కాల్ చేసినప్పుడు Hardhat/Ethers మన కోసం అంతర్గతంగా చేసిన కొన్ని జేసన్-ఆర్‌పీసీ కాల్‌లను ఇక్కడ మీరు చూస్తారు. ఇక్కడ పేర్కొనవలసిన రెండు ముఖ్యమైనవి [`eth_sendRawTransaction`](https://www.alchemy.com/docs/chains/ethereum/ethereum-api-endpoints/eth-send-raw-transaction), ఇది వాస్తవానికి మన కాంట్రాక్ట్‌ను Sepolia చైన్‌లో రాయడానికి అభ్యర్థన, మరియు [`eth_getTransactionByHash`](https://www.alchemy.com/docs/chains/ethereum/ethereum-api-endpoints/eth-get-transaction-by-hash) ఇది హాష్ ఇచ్చినప్పుడు మన లావాదేవీ గురించి సమాచారాన్ని చదవడానికి అభ్యర్థన (లావాదేవీలు చేసేటప్పుడు ఇది ఒక సాధారణ పద్ధతి). లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, [Web3 ఉపయోగించి లావాదేవీలను పంపడంపై](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) ఈ ట్యుటోరియల్‌ని చూడండి.

ఈ ట్యుటోరియల్ యొక్క పార్ట్ 1 కి అంతే, పార్ట్ 2 లో మనం మన ప్రారంభ సందేశాన్ని అప్‌డేట్ చేయడం ద్వారా వాస్తవానికి [మన స్మార్ట్ కాంట్రాక్ట్‌తో ఇంటరాక్ట్ అవుతాము](/developers/tutorials/hello-world-smart-contract-fullstack/#part-2-interact-with-your-smart-contract), మరియు పార్ట్ 3 లో మనం [మన స్మార్ట్ కాంట్రాక్ట్‌ను Etherscan లో పబ్లిష్ చేస్తాము](/developers/tutorials/hello-world-smart-contract-fullstack/#part-3-publish-your-smart-contract-to-etherscan) తద్వారా దానితో ఎలా ఇంటరాక్ట్ అవ్వాలో అందరికీ తెలుస్తుంది.

**Alchemy గురించి మరింత తెలుసుకోవాలనుకుంటున్నారా? మా [వెబ్‌సైట్‌ను](https://www.alchemy.com/eth) చూడండి. ఏ అప్‌డేట్‌ను మిస్ అవ్వకూడదనుకుంటున్నారా? మా వార్తాలేఖకు [ఇక్కడ](https://www.alchemy.com/newsletter) సభ్యత్వం పొందండి! మా [డిస్కార్డ్‌లో](https://discord.gg/u72VCg3) కూడా తప్పకుండా చేరండి.**.
