Web3 ఉపయోగించి లావాదేవీలను పంపడం
Web3 ఉపయోగించి ఎథీరియం లావాదేవీలను పంపడానికి ఇది ఒక బిగినర్స్ ఫ్రెండ్లీ గైడ్. ఎథీరియం బ్లాక్చైన్కు లావాదేవీని పంపడానికి మూడు ప్రధాన దశలు ఉన్నాయి: సృష్టించడం, సంతకం చేయడం మరియు ప్రసారం చేయడం. మీకు ఉన్న ఏవైనా ప్రశ్నలకు సమాధానం ఇస్తూ, మనం ఈ మూడింటి గురించి తెలుసుకుందాం! ఈ ట్యుటోరియల్లో, మన లావాదేవీలను ఎథీరియం చైన్కు పంపడానికి మనం Alchemy (opens in a new tab)ని ఉపయోగిస్తాము. మీరు ఇక్కడ ఉచిత Alchemy ఖాతాను సృష్టించవచ్చు (opens in a new tab).
గమనిక: ఈ గైడ్ మీ యాప్ కోసం _బ్యాకెండ్_లో మీ లావాదేవీలపై సంతకం చేయడం కోసం ఉద్దేశించబడింది. మీరు ఫ్రంటెండ్లో మీ లావాదేవీలపై సంతకం చేయడాన్ని ఏకీకృతం చేయాలనుకుంటే, బ్రౌజర్ ప్రొవైడర్తో Web3 (opens in a new tab)ని ఏకీకృతం చేయడం గురించి చూడండి.
ప్రాథమిక అంశాలు
చాలా మంది బ్లాక్చైన్ డెవలపర్లు మొదట ప్రారంభించినప్పుడు, లావాదేవీని ఎలా పంపాలి (ఇది చాలా సులభంగా ఉండాలి) అనే దానిపై మీరు కొంత పరిశోధన చేసి ఉండవచ్చు మరియు అనేక గైడ్లను చూసి ఉండవచ్చు, ఒక్కొక్కటి ఒక్కో రకంగా చెబుతూ మిమ్మల్ని కొంచెం గందరగోళానికి గురిచేసి ఉండవచ్చు. మీరు కూడా అదే పరిస్థితిలో ఉంటే, చింతించకండి; మేమంతా ఒకానొక సమయంలో అలా ఉన్నవారమే! కాబట్టి, మనం ప్రారంభించడానికి ముందు, కొన్ని విషయాలను స్పష్టం చేసుకుందాం:
1. Alchemy మీ ప్రైవేట్ కీలను నిల్వ చేయదు
- అంటే Alchemy మీ తరపున లావాదేవీలపై సంతకం చేయలేదు మరియు పంపలేదు. దీనికి కారణం భద్రతా ప్రయోజనాలే. Alchemy మీ ప్రైవేట్ కీని పంచుకోమని మిమ్మల్ని ఎప్పటికీ అడగదు మరియు మీరు మీ ప్రైవేట్ కీని హోస్ట్ చేసిన నోడ్తో (లేదా ఎవరితోనైనా) ఎప్పుడూ పంచుకోకూడదు.
- మీరు Alchemy యొక్క కోర్ APIని ఉపయోగించి బ్లాక్చైన్ నుండి చదవవచ్చు, కానీ దానికి వ్రాయడానికి మీరు Alchemy ద్వారా పంపే ముందు మీ లావాదేవీలపై సంతకం చేయడానికి వేరే దేనినైనా ఉపయోగించాల్సి ఉంటుంది (ఇది మరే ఇతర నోడ్ సేవకైనా వర్తిస్తుంది).
2. “సైనర్ (signer)” అంటే ఏమిటి?
- సైనర్లు మీ ప్రైవేట్ కీని ఉపయోగించి మీ కోసం లావాదేవీలపై సంతకం చేస్తాయి. ఈ ట్యుటోరియల్లో మన లావాదేవీపై సంతకం చేయడానికి మనం Alchemy Web3 (opens in a new tab)ని ఉపయోగిస్తాము, కానీ మీరు మరేదైనా Web3 లైబ్రరీని కూడా ఉపయోగించవచ్చు.
- ఫ్రంటెండ్లో, సైనర్కి ఒక మంచి ఉదాహరణ మెటామాస్క్ (opens in a new tab), ఇది మీ తరపున లావాదేవీలపై సంతకం చేస్తుంది మరియు పంపుతుంది.
3. నేను నా లావాదేవీలపై ఎందుకు సంతకం చేయాలి?
- ఎథీరియం నెట్వర్క్లో లావాదేవీని పంపాలనుకునే ప్రతి వినియోగదారుడు, లావాదేవీ యొక్క మూలం వారు చెప్పుకుంటున్న వారే అని ధృవీకరించడానికి లావాదేవీపై (వారి ప్రైవేట్ కీని ఉపయోగించి) తప్పనిసరిగా సంతకం చేయాలి.
- ఈ ప్రైవేట్ కీని రక్షించడం చాలా ముఖ్యం, ఎందుకంటే దీనికి యాక్సెస్ కలిగి ఉండటం వలన మీ ఎథీరియం ఖాతాపై పూర్తి నియంత్రణ లభిస్తుంది, ఇది మీ తరపున లావాదేవీలను నిర్వహించడానికి మిమ్మల్ని (లేదా యాక్సెస్ ఉన్న ఎవరినైనా) అనుమతిస్తుంది.
4. నా ప్రైవేట్ కీని నేను ఎలా రక్షించుకోవాలి?
- మీ ప్రైవేట్ కీని రక్షించడానికి మరియు లావాదేవీలను పంపడానికి దాన్ని ఉపయోగించడానికి అనేక మార్గాలు ఉన్నాయి. ఈ ట్యుటోరియల్లో మనం
.envఫైల్ను ఉపయోగిస్తాము. అయితే, మీరు ప్రైవేట్ కీలను నిల్వ చేసే ప్రత్యేక ప్రొవైడర్ను కూడా ఉపయోగించవచ్చు, కీస్టోర్ ఫైల్ను ఉపయోగించవచ్చు లేదా ఇతర ఎంపికలను ఉపయోగించవచ్చు.
5. eth_sendTransaction మరియు eth_sendRawTransaction మధ్య తేడా ఏమిటి?
eth_sendTransaction మరియు eth_sendRawTransaction రెండూ ఎథీరియం API ఫంక్షన్లు, ఇవి ఎథీరియం నెట్వర్క్కు లావాదేవీని ప్రసారం చేస్తాయి, తద్వారా అది భవిష్యత్తు బ్లాక్కు జోడించబడుతుంది. లావాదేవీల సంతకం చేయడాన్ని అవి ఎలా నిర్వహిస్తాయి అనే దానిలో అవి విభిన్నంగా ఉంటాయి.
eth_sendTransaction(opens in a new tab) అనేది సంతకం చేయని లావాదేవీలను పంపడానికి ఉపయోగించబడుతుంది, అంటే మీరు పంపుతున్న నోడ్ మీ ప్రైవేట్ కీని తప్పనిసరిగా నిర్వహించాలి, తద్వారా అది చైన్కు ప్రసారం చేయడానికి ముందు లావాదేవీపై సంతకం చేయగలదు. Alchemy వినియోగదారుల ప్రైవేట్ కీలను కలిగి ఉండదు కాబట్టి, వారు ఈ పద్ధతికి మద్దతు ఇవ్వరు.eth_sendRawTransaction(opens in a new tab) అనేది ఇప్పటికే సంతకం చేయబడిన లావాదేవీలను ప్రసారం చేయడానికి ఉపయోగించబడుతుంది. అంటే మీరు ముందుగాsignTransaction(tx, private_key)(opens in a new tab)ని ఉపయోగించాలి, ఆపై ఫలితాన్నిeth_sendRawTransactionలోకి పంపాలి.
Web3ని ఉపయోగిస్తున్నప్పుడు, web3.eth.sendSignedTransaction (opens in a new tab) ఫంక్షన్ను కాల్ చేయడం ద్వారా eth_sendRawTransaction యాక్సెస్ చేయబడుతుంది.
ఈ ట్యుటోరియల్లో మనం దీనినే ఉపయోగిస్తాము.
6. Web3 లైబ్రరీ అంటే ఏమిటి?
- Web3.js అనేది ప్రామాణిక జేసన్-ఆర్పీసీ కాల్ల చుట్టూ ఉన్న ఒక ర్యాపర్ లైబ్రరీ, ఇది ఎథీరియం డెవలప్మెంట్లో ఉపయోగించడం సర్వసాధారణం.
- వివిధ భాషల కోసం అనేక Web3 లైబ్రరీలు ఉన్నాయి. ఈ ట్యుటోరియల్లో మనం JavaScriptలో వ్రాయబడిన Alchemy Web3 (opens in a new tab)ని ఉపయోగిస్తాము. మీరు Ethers.js (opens in a new tab) వంటి ఇతర ఎంపికలను ఇక్కడ చూడవచ్చు.
సరే, ఇప్పుడు మనం ఈ ప్రశ్నలలో కొన్నింటిని పరిష్కరించుకున్నాము కాబట్టి, ట్యుటోరియల్కి వెళ్దాం. Alchemy డిస్కార్డ్ (opens in a new tab)లో ఎప్పుడైనా ప్రశ్నలు అడగడానికి సంకోచించకండి!
7. సురక్షితమైన, గ్యాస్-ఆప్టిమైజ్ చేయబడిన మరియు ప్రైవేట్ లావాదేవీలను ఎలా పంపాలి?
- Alchemy లావాదేవీ వనరుల సెట్ను కలిగి ఉంది (opens in a new tab). లావాదేవీలను పంపడానికి, అవి జరగడానికి ముందే లావాదేవీలను అనుకరించడానికి, ప్రైవేట్ లావాదేవీలను పంపడానికి మరియు గ్యాస్-ఆప్టిమైజ్ చేయబడిన లావాదేవీలను పంపడానికి మీరు వీటిని ఉపయోగించవచ్చు.
- మీ లావాదేవీ మెంపూల్ నుండి తీసుకోబడి, చైన్కు జోడించబడినప్పుడు అప్రమత్తం కావడానికి మీరు Alchemy వెబ్హుక్స్ (opens in a new tab)ని కూడా ఉపయోగించవచ్చు.
గమనిక: ఈ గైడ్కి Alchemy ఖాతా, ఎథీరియం చిరునామా లేదా మెటామాస్క్ వాలెట్, Node.js మరియు npm ఇన్స్టాల్ చేయబడి ఉండాలి. లేకపోతే, ఈ దశలను అనుసరించండి:
- ఉచిత Alchemy ఖాతాను సృష్టించండి (opens in a new tab)
- మెటామాస్క్ ఖాతాను సృష్టించండి (opens in a new tab) (లేదా ఎథీరియం చిరునామాను పొందండి)
- Node.js మరియు npmని ఇన్స్టాల్ చేయండి (opens in a new tab)
మీ లావాదేవీని పంపడానికి దశలు
1. Sepolia టెస్ట్నెట్లో Alchemy యాప్ను సృష్టించండి
మీ Alchemy డ్యాష్బోర్డ్ (opens in a new tab)కి నావిగేట్ చేయండి మరియు మీ నెట్వర్క్ కోసం Sepolia (లేదా మరేదైనా టెస్ట్నెట్)ని ఎంచుకుని, కొత్త యాప్ను సృష్టించండి.
2. Sepolia ఫాసెట్ నుండి ETHని అభ్యర్థించండి
ETHని స్వీకరించడానికి Alchemy Sepolia ఫాసెట్ (opens in a new tab)లోని సూచనలను అనుసరించండి. మీ Sepolia ఎథీరియం చిరునామాను (మెటామాస్క్ నుండి) చేర్చారని నిర్ధారించుకోండి, వేరే నెట్వర్క్ది కాదు. సూచనలను అనుసరించిన తర్వాత, మీ వాలెట్లో ETHని స్వీకరించారో లేదో ఒకటికి రెండుసార్లు తనిఖీ చేయండి.
3. కొత్త ప్రాజెక్ట్ డైరెక్టరీని సృష్టించండి మరియు దానిలోకి cd చేయండి
కమాండ్ లైన్ (మాక్ల కోసం టెర్మినల్) నుండి కొత్త ప్రాజెక్ట్ డైరెక్టరీని సృష్టించండి మరియు దానిలోకి నావిగేట్ చేయండి:
mkdir sendtx-example
cd sendtx-example
4. Alchemy Web3ని (లేదా ఏదైనా web3 లైబ్రరీని) ఇన్స్టాల్ చేయండి
Alchemy Web3 (opens in a new tab)ని ఇన్స్టాల్ చేయడానికి మీ ప్రాజెక్ట్ డైరెక్టరీలో కింది కమాండ్ను రన్ చేయండి:
గమనిక, మీరు Ethers.js లైబ్రరీని ఉపయోగించాలనుకుంటే, ఇక్కడ ఉన్న సూచనలను అనుసరించండి (opens in a new tab).
npm install @alch/alchemy-web3
5. dotenvని ఇన్స్టాల్ చేయండి
మన API కీ మరియు ప్రైవేట్ కీని సురక్షితంగా నిల్వ చేయడానికి మనం .env ఫైల్ను ఉపయోగిస్తాము.
npm install dotenv --save
6. .env ఫైల్ను సృష్టించండి
మీ ప్రాజెక్ట్ డైరెక్టరీలో .env ఫైల్ను సృష్టించండి మరియు కింది వాటిని జోడించండి (“your-api-url" మరియు "your-private-key"ని భర్తీ చేస్తూ)
- మీ Alchemy API URLని కనుగొనడానికి, మీ డ్యాష్బోర్డ్లో మీరు ఇప్పుడే సృష్టించిన యాప్ యొక్క యాప్ వివరాల పేజీకి నావిగేట్ చేయండి, కుడి ఎగువ మూలలో ఉన్న “View Key”ని క్లిక్ చేయండి మరియు HTTP URLని తీసుకోండి.
- మెటామాస్క్ ఉపయోగించి మీ ప్రైవేట్ కీని కనుగొనడానికి, ఈ గైడ్ (opens in a new tab)ని చూడండి.
API_URL = "your-api-url"
PRIVATE_KEY = "your-private-key"
.envని కమిట్ చేయవద్దు! దయచేసి మీ .env ఫైల్ను ఎవరితోనూ పంచుకోకుండా లేదా బహిర్గతం చేయకుండా చూసుకోండి, ఎందుకంటే అలా చేయడం ద్వారా మీరు మీ రహస్యాలను రాజీ పడుతున్నారు. మీరు వెర్షన్ కంట్రోల్ని ఉపయోగిస్తుంటే, మీ .envని gitignore ఫైల్కి జోడించండి.7. sendTx.js ఫైల్ను సృష్టించండి
అద్భుతం, ఇప్పుడు మన సున్నితమైన డేటా .env ఫైల్లో రక్షించబడింది కాబట్టి, కోడింగ్ ప్రారంభిద్దాం. మన లావాదేవీని పంపే ఉదాహరణ కోసం, మనం ETHని తిరిగి Sepolia ఫాసెట్కి పంపుతాము.
sendTx.js ఫైల్ను సృష్టించండి, ఇక్కడే మనం మన ఉదాహరణ లావాదేవీని కాన్ఫిగర్ చేస్తాము మరియు పంపుతాము, దానికి కింది కోడ్ పంక్తులను జోడించండి:
async function main() {
require('dotenv').config();
const { API_URL, PRIVATE_KEY } = process.env;
const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
const web3 = createAlchemyWeb3(API_URL);
const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: ఈ చిరునామాను మీ స్వంత పబ్లిక్ చిరునామాతో భర్తీ చేయండి
const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // నాన్స్ 0 నుండి లెక్కించడం ప్రారంభిస్తుంది
const transaction = {
'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // ethని తిరిగి ఇవ్వడానికి ఫాసెట్ చిరునామా
'value': 1000000000000000000, // 1 ETH
'gas': 30000,
'nonce': nonce,
// సందేశాన్ని పంపడానికి లేదా స్మార్ట్ కాంట్రాక్ట్ను అమలు చేయడానికి ఐచ్ఛిక డేటా ఫీల్డ్
};
const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
if (!error) {
console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!");
} else {
console.log("❗Something went wrong while submitting your transaction:", error)
}
});
}
main();
6వ పంక్తిలోని చిరునామాను మీ స్వంత పబ్లిక్ చిరునామాతో భర్తీ చేశారని నిర్ధారించుకోండి.
ఇప్పుడు, ఈ కోడ్ను రన్ చేయడానికి ముందు, ఇక్కడ ఉన్న కొన్ని భాగాల గురించి మాట్లాడుకుందాం.
nonce: మీ చిరునామా నుండి పంపబడిన లావాదేవీల సంఖ్యను ట్రాక్ చేయడానికి నాన్స్ స్పెసిఫికేషన్ ఉపయోగించబడుతుంది. భద్రతా ప్రయోజనాల కోసం మరియు రీప్లే దాడులను నిరోధించడానికి మనకు ఇది అవసరం. మీ చిరునామా నుండి పంపబడిన లావాదేవీల సంఖ్యను పొందడానికి మనం getTransactionCount (opens in a new tab)ని ఉపయోగిస్తాము.transaction: లావాదేవీ ఆబ్జెక్ట్లో మనం పేర్కొనవలసిన కొన్ని అంశాలు ఉన్నాయిto: మనం ETHని పంపాలనుకుంటున్న చిరునామా ఇది. ఈ సందర్భంలో, మనం మొదట అభ్యర్థించిన Sepolia ఫాసెట్ (opens in a new tab)కి ETHని తిరిగి పంపుతున్నాము.value: ఇది మనం పంపాలనుకుంటున్న మొత్తం, ఇది Weiలో పేర్కొనబడింది, ఇక్కడ 10^18 Wei = 1 ETHgas: మీ లావాదేవీతో చేర్చాల్సిన సరైన గ్యాస్ మొత్తాన్ని నిర్ణయించడానికి అనేక మార్గాలు ఉన్నాయి. ఆన్చైన్ కార్యాచరణ గురించి మీకు తెలియజేయగల వెబ్హుక్స్ (opens in a new tab)కి Alchemy మద్దతు ఇస్తుంది. మెయిన్నెట్ లావాదేవీల కోసం, చేర్చాల్సిన సరైన గ్యాస్ మొత్తాన్ని నిర్ణయించడానికి ప్రస్తుత గ్యాస్ పరిస్థితులను తనిఖీ చేయడం మంచి పద్ధతి. ఎథీరియంలో ఒక ఆపరేషన్ ఉపయోగించే కనీస గ్యాస్ మొత్తం 21000, కాబట్టి మన లావాదేవీ అమలు చేయబడుతుందని నిర్ధారించుకోవడానికి మనం ఇక్కడ 30000 ఉంచుతాము.nonce: పైన ఉన్న నాన్స్ నిర్వచనాన్ని చూడండి. నాన్స్ సున్నా నుండి లెక్కించడం ప్రారంభిస్తుంది.- [ఐచ్ఛికం] డేటా: మీ బదిలీతో అదనపు సమాచారాన్ని పంపడానికి లేదా స్మార్ట్ కాంట్రాక్ట్ను కాల్ చేయడానికి ఉపయోగించబడుతుంది, బ్యాలెన్స్ బదిలీలకు ఇది అవసరం లేదు, దిగువ గమనికను చూడండి.
signedTx: మన లావాదేవీ ఆబ్జెక్ట్పై సంతకం చేయడానికి మనం మనPRIVATE_KEYతోsignTransactionపద్ధతిని ఉపయోగిస్తాముsendSignedTransaction: మనకు సంతకం చేయబడిన లావాదేవీ ఉన్న తర్వాత,sendSignedTransactionని ఉపయోగించడం ద్వారా తదుపరి బ్లాక్లో చేర్చడానికి మనం దానిని పంపవచ్చు
డేటాపై ఒక గమనిక ఎథీరియంలో పంపగల రెండు ప్రధాన రకాల లావాదేవీలు ఉన్నాయి.
- బ్యాలెన్స్ బదిలీ: ఒక చిరునామా నుండి మరొక చిరునామాకు ETHని పంపండి. డేటా ఫీల్డ్ అవసరం లేదు, అయితే, మీరు మీ లావాదేవీతో పాటు అదనపు సమాచారాన్ని పంపాలనుకుంటే, మీరు ఆ సమాచారాన్ని ఈ ఫీల్డ్లో HEX ఆకృతిలో చేర్చవచ్చు.
- ఉదాహరణకు, IPFS పత్రానికి మార్చలేని టైమ్స్టాంప్ను ఇవ్వడానికి దాని హాష్ను ఎథీరియం చైన్కు వ్రాయాలనుకుంటున్నాము అనుకుందాం. అప్పుడు మన డేటా ఫీల్డ్ ఇలా ఉండాలి:
web3.utils.toHex(‘IPFS hash‘). మరియు ఇప్పుడు ఎవరైనా చైన్ను క్వెరీ చేయవచ్చు మరియు ఆ పత్రం ఎప్పుడు జోడించబడిందో చూడవచ్చు.
- ఉదాహరణకు, IPFS పత్రానికి మార్చలేని టైమ్స్టాంప్ను ఇవ్వడానికి దాని హాష్ను ఎథీరియం చైన్కు వ్రాయాలనుకుంటున్నాము అనుకుందాం. అప్పుడు మన డేటా ఫీల్డ్ ఇలా ఉండాలి:
- స్మార్ట్ కాంట్రాక్ట్ లావాదేవీ: చైన్లో కొంత స్మార్ట్ కాంట్రాక్ట్ కోడ్ను అమలు చేయండి. ఈ సందర్భంలో, డేటా ఫీల్డ్ మీరు అమలు చేయాలనుకుంటున్న స్మార్ట్ ఫంక్షన్ను, ఏవైనా పారామితులతో పాటు కలిగి ఉండాలి.
- ఆచరణాత్మక ఉదాహరణ కోసం, హలో వరల్డ్ స్మార్ట్ కాంట్రాక్ట్ ట్యుటోరియల్ని చూడండి.
8. node sendTx.js ఉపయోగించి కోడ్ను రన్ చేయండి
మీ టెర్మినల్ లేదా కమాండ్ లైన్కి తిరిగి నావిగేట్ చేయండి మరియు రన్ చేయండి:
node sendTx.js
9. మెంపూల్లో మీ లావాదేవీని చూడండి
మీ Alchemy డ్యాష్బోర్డ్లో మెంపూల్ పేజీ (opens in a new tab)ని తెరిచి, మీ లావాదేవీని కనుగొనడానికి మీరు సృష్టించిన యాప్ ద్వారా ఫిల్టర్ చేయండి. ఇక్కడే మన లావాదేవీ పెండింగ్ స్థితి నుండి మైన్ చేయబడిన స్థితికి (విజయవంతమైతే) లేదా విఫలమైతే డ్రాప్ చేయబడిన స్థితికి మారడాన్ని మనం చూడవచ్చు. మీరు “మైన్ చేయబడిన”, “పెండింగ్” మరియు “డ్రాప్ చేయబడిన” లావాదేవీలను క్యాప్చర్ చేయడానికి దీన్ని “అన్నీ (All)”లో ఉంచారని నిర్ధారించుకోండి. మీరు 0x31b98d14007bdee637298086988a0bbd31184523 చిరునామాకు పంపిన లావాదేవీల కోసం వెతకడం ద్వారా కూడా మీ లావాదేవీని శోధించవచ్చు.
మీరు మీ లావాదేవీని కనుగొన్న తర్వాత దాని వివరాలను వీక్షించడానికి, tx హాష్ను ఎంచుకోండి, ఇది మిమ్మల్ని ఇలా కనిపించే వీక్షణకు తీసుకెళుతుంది:
అక్కడ నుండి మీరు ఎరుపు రంగులో వృత్తాకారంలో ఉన్న చిహ్నంపై క్లిక్ చేయడం ద్వారా Etherscanలో మీ లావాదేవీని వీక్షించవచ్చు!
అద్భుతం! మీరు Alchemyని ఉపయోగించి మీ మొదటి ఎథీరియం లావాదేవీని పంపారు 🎉
ఈ గైడ్ గురించి ఫీడ్బ్యాక్ మరియు సూచనల కోసం, దయచేసి Alchemy యొక్క డిస్కార్డ్ (opens in a new tab)లో Elanకి సందేశం పంపండి!
వాస్తవానికి Alchemy ద్వారా ప్రచురించబడింది.
