مرکزی مواد پر جائیں
Change page

جے سن آر پی سی ⁦API⁩

کسی سافٹ ویئر ایپلی کیشن کو ایتھیریم بلاک چین کے ساتھ تعامل کرنے کے لیے - چاہے وہ بلاک چین کا ڈیٹا پڑھنا ہو یا نیٹ ورک پر ٹرانزیکشنز بھیجنا ہو - اسے ایک ایتھیریم نوڈ سے منسلک ہونا ضروری ہے۔

اس مقصد کے لیے، ہر ایتھیریم کلائنٹ ایک جے سن آر پی سی تصریح (opens in a new tab) کو نافذ کرتا ہے، تاکہ طریقوں کا ایک یکساں مجموعہ موجود ہو جس پر ایپلی کیشنز انحصار کر سکیں، قطع نظر اس کے کہ مخصوص نوڈ یا کلائنٹ کا نفاذ کیا ہے۔

جے سن آر پی سی (opens in a new tab) ایک سٹیٹ لیس، ہلکا پھلکا ریموٹ پروسیجر کال (RPC) پروٹوکول ہے۔ یہ کئی ڈیٹا سٹرکچرز اور ان کی پروسیسنگ کے اصولوں کی وضاحت کرتا ہے۔ یہ ٹرانسپورٹ کے لحاظ سے غیر جانبدار ہے، یعنی ان تصورات کو ایک ہی پروسیس کے اندر، ساکٹس پر، HTTP پر، یا پیغام رسانی کے مختلف ماحول میں استعمال کیا جا سکتا ہے۔ یہ ڈیٹا فارمیٹ کے طور پر JSON (RFC 4627) کا استعمال کرتا ہے۔

کلائنٹ کے عمل درآمد

ایتھیریم کلائنٹس جے سن آر پی سی کی تفصیلات پر عمل درآمد کرتے وقت مختلف پروگرامنگ زبانیں استعمال کر سکتے ہیں۔ مخصوص پروگرامنگ زبانوں سے متعلق مزید تفصیلات کے لیے انفرادی کلائنٹ کی دستاویزات دیکھیں۔ ہم تجویز کرتے ہیں کہ تازہ ترین API سپورٹ کی معلومات کے لیے ہر کلائنٹ کی دستاویزات چیک کریں۔

سہولت کی لائبریریاں

اگرچہ آپ جے سن آر پی سی API کے ذریعے ایتھیریم کلائنٹس کے ساتھ براہ راست تعامل کرنے کا انتخاب کر سکتے ہیں، لیکن غیر مرکزی ایپلی کیشن (dapp) کے ڈیولپرز کے لیے اکثر آسان اختیارات موجود ہوتے ہیں۔ بہت سی JavaScript اور بیک اینڈ API لائبریریاں موجود ہیں جو جے سن آر پی سی API کے اوپر ریپرز فراہم کرتی ہیں۔ ان لائبریریوں کی مدد سے، ڈیولپرز اپنی پسند کی پروگرامنگ زبان میں آسان اور ایک لائن کے طریقے (methods) لکھ سکتے ہیں تاکہ (اندرونی طور پر) جے سن آر پی سی درخواستیں شروع کی جا سکیں جو ایتھیریم کے ساتھ تعامل کرتی ہیں۔

اتفاقِ رائے کے کلائنٹ کی APIs

یہ صفحہ بنیادی طور پر جے سن آر پی سی API سے متعلق ہے جسے ایتھیریم ایگزیکیوشن کلائنٹس استعمال کرتے ہیں۔ تاہم، اتفاقِ رائے کے کلائنٹس میں ایک RPC API بھی ہوتی ہے جو صارفین کو اس بات کی اجازت دیتی ہے کہ وہ براہ راست کسی نوڈ سے نوڈ کے بارے میں معلومات طلب کریں، بیکن بلاکس، بیکن کی حالت، اور اتفاقِ رائے سے متعلق دیگر معلومات کی درخواست کریں۔ اس API کی دستاویزات بیکن API کے ویب پیج (opens in a new tab) پر موجود ہیں۔

ایک نوڈ کے اندر کلائنٹس کے درمیان رابطے کے لیے ایک اندرونی API بھی استعمال ہوتی ہے - یعنی، یہ اتفاقِ رائے کے کلائنٹ اور ایگزیکیوشن کلائنٹ کو ڈیٹا کا تبادلہ کرنے کے قابل بناتی ہے۔ اسے 'Engine API' کہا جاتا ہے اور اس کی تفصیلات GitHub (opens in a new tab) پر دستیاب ہیں۔

ایگزیکیوشن کلائنٹ کی تفصیلات

GitHub پر مکمل جے سن آر پی سی API کی تفصیلات پڑھیں (opens in a new tab)۔ اس API کی دستاویزات ایگزیکیوشن API ویب پیج (opens in a new tab) پر موجود ہیں اور اس میں تمام دستیاب میتھڈز کو آزمانے کے لیے ایک انسپکٹر شامل ہے۔

روایات

ہیکس ویلیو انکوڈنگ

JSON پر دو اہم ڈیٹا ٹائپس پاس کی جاتی ہیں: غیر فارمیٹ شدہ بائٹ ایریز اور مقداریں۔ دونوں کو ہیکس انکوڈنگ کے ساتھ پاس کیا جاتا ہے لیکن فارمیٹنگ کے لیے مختلف تقاضوں کے ساتھ۔

مقداریں

مقداروں (انٹیجرز، اعداد) کو انکوڈ کرتے وقت: ہیکس کے طور پر انکوڈ کریں، سابقہ "0x" لگائیں، جو کہ سب سے مختصر نمائندگی ہے (معمولی استثنیٰ: صفر کو "0x0" کے طور پر پیش کیا جانا چاہیے)۔

یہاں کچھ مثالیں ہیں:

  • 0x41 (اعشاریہ میں 65)
  • 0x400 (اعشاریہ میں 1024)
  • غلط: 0x (ہمیشہ کم از کم ایک ہندسہ ہونا چاہیے - صفر "0x0" ہے)
  • غلط: 0x0400 (شروع میں صفر کی اجازت نہیں ہے)
  • غلط: ff (سابقہ 0x ہونا لازمی ہے)

غیر فارمیٹ شدہ ڈیٹا

غیر فارمیٹ شدہ ڈیٹا (بائٹ ایریز، اکاؤنٹ کے پتے، ہیشز، بائٹ کوڈ ایریز) کو انکوڈ کرتے وقت: ہیکس کے طور پر انکوڈ کریں، سابقہ "0x" لگائیں، فی بائٹ دو ہیکس ہندسے۔

یہاں کچھ مثالیں ہیں:

  • 0x41 (سائز 1، "A")
  • 0x004200 (سائز 3، "0B0")
  • 0x (سائز 0، "")
  • غلط: 0xf0f0f (ہندسوں کی تعداد جفت ہونی چاہیے)
  • غلط: 004200 (سابقہ 0x ہونا لازمی ہے)

بلاک پیرامیٹر

مندرجہ ذیل طریقوں (methods) میں ایک بلاک پیرامیٹر ہوتا ہے:

جب ایسی درخواستیں کی جاتی ہیں جو ایتھیریم کی حالت (state) کے بارے میں استفسار کرتی ہیں، تو فراہم کردہ بلاک پیرامیٹر بلاک کی اونچائی (height) کا تعین کرتا ہے۔

بلاک پیرامیٹر کے لیے مندرجہ ذیل اختیارات ممکن ہیں:

  • HEX String - ایک انٹیجر بلاک نمبر
  • String "earliest" سب سے پہلے/ابتدائی بلاک کے لیے
  • String "latest" - تازہ ترین تجویز کردہ بلاک کے لیے
  • String "safe" - تازہ ترین محفوظ ہیڈ بلاک کے لیے
  • String "finalized" - تازہ ترین حتمی بلاک کے لیے
  • String "pending" - زیر التواء حالت/ٹرانزیکشنز کے لیے

مثالیں

اس صفحے پر ہم کمانڈ لائن ٹول، curl (opens in a new tab) کا استعمال کرتے ہوئے انفرادی جے سن آر پی سی API اینڈ پوائنٹس کو استعمال کرنے کی مثالیں فراہم کرتے ہیں۔ یہ انفرادی اینڈ پوائنٹ کی مثالیں نیچے Curl کی مثالیں کے سیکشن میں مل سکتی ہیں۔ صفحے میں مزید نیچے، ہم ایک Geth نوڈ، جے سن آر پی سی API اور curl کا استعمال کرتے ہوئے ایک سمارٹ کنٹریکٹ کی کمپائلنگ اور اسے تعینات کرنے کے لیے ایک اینڈ ٹو اینڈ مثال بھی فراہم کرتے ہیں۔

Curl کی مثالیں

ایک ایتھیریم نوڈ کو curl (opens in a new tab) درخواستیں بھیج کر جے سن آر پی سی API استعمال کرنے کی مثالیں ذیل میں فراہم کی گئی ہیں۔ ہر مثال میں مخصوص اینڈ پوائنٹ کی تفصیل، اس کے پیرامیٹرز، واپسی کی قسم، اور اسے استعمال کرنے کے طریقے کی ایک عملی مثال شامل ہے۔

curl کی درخواستیں مواد کی قسم سے متعلق خرابی کا پیغام واپس کر سکتی ہیں۔ اس کی وجہ یہ ہے کہ --data آپشن مواد کی قسم کو application/x-www-form-urlencoded پر سیٹ کرتا ہے۔ اگر آپ کا نوڈ اس بارے میں ایرر دیتا ہے، تو کال کے آغاز میں -H "Content-Type: application/json" رکھ کر دستی طور پر ہیڈر سیٹ کریں۔ مثالوں میں URL/IP اور پورٹ کا امتزاج بھی شامل نہیں ہے جو curl کو دیا جانے والا آخری آرگومنٹ ہونا چاہیے (جیسے، 127.0.0.1:8545)۔ ان اضافی ڈیٹا پر مشتمل ایک مکمل curl درخواست درج ذیل شکل اختیار کرتی ہے:

curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545

گپ شپ، حالت، تاریخ

چند بنیادی جے سن آر پی سی طریقوں کو ایتھیریم نیٹ ورک سے ڈیٹا درکار ہوتا ہے، اور یہ صاف طور پر تین اہم زمروں میں آتے ہیں: گپ شپ، حالت، اور تاریخ۔ ہر طریقے پر جانے کے لیے ان حصوں میں موجود لنکس کا استعمال کریں، یا طریقوں کی پوری فہرست دریافت کرنے کے لیے فہرستِ مضامین کا استعمال کریں۔

گپ شپ کے طریقے

یہ طریقے چین کے سرے کو ٹریک کرتے ہیں۔ اسی طرح ٹرانزیکشنز نیٹ ورک میں اپنا راستہ بناتی ہیں، بلاکس میں شامل ہوتی ہیں، اور کلائنٹس کو نئے بلاکس کے بارے میں پتہ چلتا ہے۔

حالت کے طریقے

وہ طریقے جو تمام محفوظ کردہ ڈیٹا کی موجودہ حالت کی اطلاع دیتے ہیں۔ "حالت" ایک بڑے مشترکہ RAM کے ٹکڑے کی طرح ہے، اور اس میں اکاؤنٹ کے بیلنس، کنٹریکٹ کا ڈیٹا، اور گیس کے تخمینے شامل ہیں۔

تاریخ کے طریقے

ابتدائی بلاک تک ہر بلاک کا تاریخی ریکارڈ حاصل کرتا ہے۔ یہ ایک بڑی ایسی فائل کی طرح ہے جس میں صرف اضافہ کیا جا سکتا ہے، اور اس میں تمام بلاک ہیڈرز، بلاک باڈیز، انکل بلاکس، اور ٹرانزیکشن کی رسیدیں شامل ہیں۔

جے سن آر پی سی API پلے گراؤنڈ

آپ API کے طریقوں کو دریافت کرنے اور آزمانے کے لیے پلے گراؤنڈ ٹول (opens in a new tab) استعمال کر سکتے ہیں۔ یہ آپ کو یہ بھی دکھاتا ہے کہ مختلف نوڈ فراہم کنندگان کن طریقوں اور نیٹ ورکس کو سپورٹ کرتے ہیں۔

جے سن آر پی سی API میتھڈز

web3_clientVersion

موجودہ کلائنٹ کا ورژن واپس کرتا ہے۔

پیرامیٹرز

کوئی نہیں

ریٹرنز

String - موجودہ کلائنٹ کا ورژن

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}'
// نتیجہ
{
  "id":67,
  "jsonrpc":"2.0",
  "result": "Geth/v1.12.1-stable/linux-amd64/go1.19.1"
}

web3_sha3

دیے گئے ڈیٹا کا کیچاک-۲۵۶ (نہ کہ معیاری SHA3-256) واپس کرتا ہے۔

پیرامیٹرز

  1. DATA - وہ ڈیٹا جسے SHA3 ہیش میں تبدیل کرنا ہے
params: ["0x68656c6c6f20776f726c64"]

واپسی

DATA - دی گئی سٹرنگ کا SHA3 نتیجہ۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}'
// نتیجہ
{
  "id":64,
  "jsonrpc": "2.0",
  "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"
}

net_version

موجودہ نیٹ ورک کی آئی ڈی واپس کرتا ہے۔

پیرامیٹرز

کوئی نہیں

ریٹرنز

String - موجودہ نیٹ ورک کی آئی ڈی۔

موجودہ نیٹ ورک آئی ڈیز کی مکمل فہرست chainlist.org (opens in a new tab) پر دستیاب ہے۔ کچھ عام یہ ہیں:

  • 1: ایتھیریم مین نیٹ
  • 11155111: Sepolia آزمائشی نیٹ ورک
  • 560048 : Hoodi آزمائشی نیٹ ورک

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}'
// نتیجہ
{
  "id":67,
  "jsonrpc": "2.0",
  "result": "3"
}

net_listening

اگر کلائنٹ نیٹ ورک کنکشنز کے لیے فعال طور پر سن رہا ہے تو true واپس کرتا ہے۔

پیرامیٹرز

کوئی نہیں

واپسی

Boolean - سنتے وقت true، بصورت دیگر false۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}'
// نتیجہ
{
  "id":67,
  "jsonrpc":"2.0",
  "result":true
}

net_peerCount

کلائنٹ سے فی الحال منسلک پیئرز کی تعداد واپس کرتا ہے۔

پیرامیٹرز

کوئی نہیں

ریٹرنز

QUANTITY - منسلک پیئرز کی تعداد کا انٹیجر۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}'
// نتیجہ
{
  "id":74,
  "jsonrpc": "2.0",
  "result": "0x2" // 2
}

eth_protocolVersion

موجودہ ایتھیریم پروٹوکول کا ورژن واپس کرتا ہے۔ نوٹ کریں کہ یہ میتھڈ Geth میں دستیاب نہیں ہے (opens in a new tab)۔

پیرامیٹرز

کوئی نہیں

ریٹرنز

String - موجودہ ایتھیریم پروٹوکول کا ورژن

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}'
// نتیجہ
{
  "id":67,
  "jsonrpc": "2.0",
  "result": "54"
}

eth_syncing

ہم آہنگی کی حیثیت کے بارے میں ڈیٹا کے ساتھ ایک آبجیکٹ یا false واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

کوئی نہیں

واپس کرتا ہے

درست واپسی کا ڈیٹا کلائنٹ کے نفاذ کے درمیان مختلف ہوتا ہے۔ جب نوڈ ہم آہنگ نہیں ہو رہا ہوتا ہے تو تمام کلائنٹس False واپس کرتے ہیں، اور تمام کلائنٹس درج ذیل فیلڈز واپس کرتے ہیں۔

Object|Boolean، ہم آہنگی کی حیثیت کے ڈیٹا کے ساتھ ایک آبجیکٹ یا FALSE، جب ہم آہنگ نہ ہو رہا ہو:

  • startingBlock: QUANTITY - وہ بلاک جس پر امپورٹ شروع ہوا (صرف اسی وقت ری سیٹ ہوگا، جب ہم آہنگی اپنے ہیڈ تک پہنچ جائے گی)
  • currentBlock: QUANTITY - موجودہ بلاک، بالکل eth_blockNumber کی طرح
  • highestBlock: QUANTITY - تخمینہ شدہ سب سے اونچا بلاک

تاہم، انفرادی کلائنٹس اضافی ڈیٹا بھی فراہم کر سکتے ہیں۔ مثال کے طور پر Geth درج ذیل واپس کرتا ہے:

جبکہ بیسو (Besu) واپس کرتا ہے:

مزید تفصیلات کے لیے اپنے مخصوص کلائنٹ کی دستاویزات سے رجوع کریں۔

مثال

eth_coinbase

کلائنٹ کا کوائن بیس پتہ واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

نوٹ: یہ طریقہ v1.14.0 سے متروک کر دیا گیا ہے اور اب اس کی معاونت نہیں کی جاتی۔ اس طریقے کو استعمال کرنے کی کوشش کے نتیجے میں "Method not supported" کی خرابی ظاہر ہوگی۔

پیرامیٹرز

کوئی نہیں

ریٹرنز

DATA، 20 بائٹس - موجودہ کوائن بیس پتہ۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}'
// نتیجہ
{
  "id":64,
  "jsonrpc": "2.0",
  "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
}

eth_chainId

یہ ری پلے سے محفوظ ٹرانزیکشنز پر دستخط کرنے کے لیے استعمال ہونے والی چین کی ID واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

کوئی نہیں

واپسی

chainId، ایک سٹرنگ کے طور پر ہیکسا ڈیسیمل قدر جو موجودہ چین کی ID کے انٹیجر کی نمائندگی کرتی ہے۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":67}'
// نتیجہ
{
  "id":67,
  "jsonrpc": "2.0",
  "result": "0x1"
}

eth_mining

اگر کلائنٹ فعال طور پر نئے بلاکس کی کان کنی کر رہا ہے تو true لوٹاتا ہے۔ یہ صرف ثبوتِ کار (PoW) نیٹ ورکس کے لیے true لوٹا سکتا ہے اور دی مرج کے بعد سے کچھ کلائنٹس میں دستیاب نہیں ہو سکتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

کوئی نہیں

واپسی

Boolean - اگر کلائنٹ کان کنی کر رہا ہے تو true لوٹاتا ہے، بصورت دیگر false۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}'
//
{
  "id":71,
  "jsonrpc": "2.0",
  "result": true
}

eth_hashrate

یہ فی سیکنڈ ہیشز کی وہ تعداد لوٹاتا ہے جس کے ساتھ نوڈ کان کنی کر رہا ہے۔ یہ ثبوتِ کار (PoW) نیٹ ورکس کے لیے صرف true لوٹا سکتا ہے اور دی مرج کے بعد سے کچھ کلائنٹس میں دستیاب نہیں ہو سکتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

کوئی نہیں

ریٹرنز

QUANTITY - فی سیکنڈ ہیشز کی تعداد۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}'
// نتیجہ
{
  "id":71,
  "jsonrpc": "2.0",
  "result": "0x38a"
}

eth_gasPrice

یہ wei میں فی گیس کی موجودہ قیمت کا تخمینہ لوٹاتا ہے۔ مثال کے طور پر، بیسو (Besu) کلائنٹ پچھلے 100 بلاکس کا جائزہ لیتا ہے اور پہلے سے طے شدہ طور پر گیس کی درمیانی اکائی کی قیمت لوٹاتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

کوئی نہیں

ریٹرنز

QUANTITY - wei میں موجودہ گیس کی قیمت کا انٹیجر۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
// نتیجہ
{
  "id":73,
  "jsonrpc": "2.0",
  "result": "0x1dfd14000" // 8049999872 Wei
}

eth_accounts

کلائنٹ کی ملکیت والے پتوں کی ایک فہرست واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

کوئی نہیں

واپسی

Array of DATA، 20 بائٹس - کلائنٹ کی ملکیت والے پتے۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
}

eth_blockNumber

سب سے حالیہ بلاک کا نمبر لوٹاتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

کوئی نہیں

واپسی

QUANTITY - موجودہ بلاک نمبر کا انٹیجر جس پر کلائنٹ ہے۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}'
// نتیجہ
{
  "id":83,
  "jsonrpc": "2.0",
  "result": "0x4b7" // 1207
}

eth_getBalance

کسی دیے گئے پتے پر اکاؤنٹ کا بیلنس واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 20 Bytes - بیلنس چیک کرنے کے لیے پتہ۔
  2. QUANTITY|TAG - انٹیجر بلاک نمبر، یا سٹرنگ "latest"، "earliest"، "pending"، "safe"، یا "finalized"، دیکھیں بلاک پیرامیٹر
params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]

ریٹرنز

QUANTITY - Wei میں موجودہ بیلنس کا انٹیجر۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x0234c8a3397aab58" // 158972490234375000
}

eth_getStorageAt

کسی دیے گئے پتے پر سٹوریج کی پوزیشن سے قدر واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 20 Bytes - سٹوریج کا پتہ۔
  2. QUANTITY - سٹوریج میں پوزیشن کا انٹیجر۔
  3. QUANTITY|TAG - انٹیجر بلاک نمبر، یا سٹرنگ "latest"، "earliest"، "pending"، "safe"، "finalized"، بلاک پیرامیٹر دیکھیں۔

ریٹرنز

DATA - اس سٹوریج پوزیشن پر قدر۔

مثال درست پوزیشن کا حساب لگانا بازیافت کیے جانے والے سٹوریج پر منحصر ہے۔ فرض کریں کہ درج ذیل کنٹریکٹ پتہ 0x391694e7e0b0cce554cb130d723a9d27458f9298 کے ذریعے 0x295a70b2de5e3953354a6a8344e616ed314d7251 پر تعینات کیا گیا ہے۔

contract Storage {
    uint pos0;
    mapping(address => uint) pos1;
    constructor() {
        pos0 = 1234;
        pos1[msg.sender] = 5678;
    }
}

pos0 کی قدر بازیافت کرنا سیدھا اور آسان ہے:

curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545
{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"}

میپ کے کسی عنصر کو بازیافت کرنا قدرے مشکل ہے۔ میپ میں کسی عنصر کی پوزیشن کا حساب اس طرح لگایا جاتا ہے:

keccak(LeftPad32(key, 0), LeftPad32(map position, 0))

اس کا مطلب ہے کہ pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] پر سٹوریج بازیافت کرنے کے لیے ہمیں اس کے ساتھ پوزیشن کا حساب لگانے کی ضرورت ہے:

keccak(
  decodeHex(
    "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" +
      "0000000000000000000000000000000000000000000000000000000000000001"
  )
)

Web3 لائبریری کے ساتھ آنے والا geth کنسول حساب لگانے کے لیے استعمال کیا جا سکتا ہے:

> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"
undefined
> web3.sha3(key, {"encoding": "hex"})
"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"

اب سٹوریج لانے کے لیے:

curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545
{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}

eth_getTransactionCount

کسی پتہ سے بھیجی گئی ٹرانزیکشنز کی تعداد واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 20 Bytes - پتہ۔
  2. QUANTITY|TAG - انٹیجر بلاک نمبر، یا سٹرنگ "latest"، "earliest"، "pending"، "safe" یا "finalized"، بلاک پیرامیٹر دیکھیں۔
params: [
  "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
  "latest", // تازہ ترین بلاک پر حالت
]

واپسی

QUANTITY - اس پتہ سے بھیجی گئی ٹرانزیکشنز کی تعداد کا انٹیجر۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_getBlockTransactionCountByHash

دیے گئے بلاک ہیش سے مماثل بلاک میں موجود ٹرانزیکشنز کی تعداد واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 32 Bytes - ایک بلاک کا ہیش
params: ["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"]

ریٹرنز

QUANTITY - اس بلاک میں موجود ٹرانزیکشنز کی تعداد کا انٹیجر۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x8b" // 139
}

eth_getBlockTransactionCountByNumber

دیے گئے بلاک نمبر سے مماثل بلاک میں ٹرانزیکشنز کی تعداد واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. QUANTITY|TAG - ایک بلاک نمبر کا انٹیجر، یا سٹرنگ "earliest"، "latest"، "pending"، "safe" یا "finalized"، جیسا کہ بلاک پیرامیٹر میں ہے۔
params: [
  "0x13738ca", // 20396234
]

ریٹرنز

QUANTITY - اس بلاک میں ٹرانزیکشنز کی تعداد کا انٹیجر۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0x13738ca"],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x8b" // 139
}

eth_getUncleCountByBlockHash

دیے گئے بلاک ہیش سے مماثل بلاک سے، ایک بلاک میں انکلز کی تعداد واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 32 Bytes - ایک بلاک کا ہیش
params: ["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"]

واپس کرتا ہے

QUANTITY - اس بلاک میں انکلز کی تعداد کا انٹیجر۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_getUncleCountByBlockNumber

دیے گئے بلاک نمبر سے مماثل بلاک میں انکلز کی تعداد لوٹاتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. QUANTITY|TAG - بلاک نمبر کا انٹیجر، یا سٹرنگ "latest"، "earliest"، "pending"، "safe" یا "finalized"، بلاک پیرامیٹر دیکھیں۔
params: [
  "0xe8", // 232
]

ریٹرنز

QUANTITY - اس بلاک میں انکلز کی تعداد کا انٹیجر۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x0" // 0
}

eth_getCode

کسی دیے گئے پتے پر کوڈ واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 20 Bytes - پتہ
  2. QUANTITY|TAG - انٹیجر بلاک نمبر، یا سٹرنگ "latest"، "earliest"، "pending"، "safe" یا "finalized"، دیکھیں بلاک پیرامیٹر
params: [
  "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
  "0x5daf3b", // 6139707
]

واپسی

DATA - دیے گئے پتے سے کوڈ۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x5daf3b"],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029"
}

eth_sign

sign میتھڈ ایک مخصوص ایتھیریم دستخط کا حساب اس کے ساتھ لگاتا ہے: sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))۔

پیغام میں ایک سابقہ شامل کرنے سے حساب شدہ دستخط کو ایتھیریم کے مخصوص دستخط کے طور پر قابل شناخت بنایا جاتا ہے۔ یہ اس غلط استعمال کو روکتا ہے جہاں ایک بدنیتی پر مبنی غیر مرکزی ایپلی کیشن (dapp) من مانے ڈیٹا (جیسے، ٹرانزیکشن) پر دستخط کر سکتی ہے اور متاثرہ شخص کا روپ دھارنے کے لیے دستخط کا استعمال کر سکتی ہے۔

نوٹ: جس پتہ سے دستخط کرنا ہے اس کا ان لاک ہونا ضروری ہے۔

پیرامیٹرز

  1. DATA، 20 Bytes - پتہ
  2. DATA، N Bytes - دستخط کرنے کے لیے پیغام

ریٹرنز

DATA: دستخط

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
}

eth_signTransaction

ایک ٹرانزیکشن پر دستخط کرتا ہے جسے بعد میں eth_sendRawTransaction کا استعمال کرتے ہوئے نیٹ ورک پر جمع کرایا جا سکتا ہے۔

پیرامیٹرز

  1. Object - ٹرانزیکشن آبجیکٹ
  • type:
  • from: DATA، 20 Bytes - وہ پتہ جہاں سے ٹرانزیکشن بھیجی گئی ہے۔
  • to: DATA، 20 Bytes - (نیا کنٹریکٹ بناتے وقت اختیاری) وہ پتہ جس پر ٹرانزیکشن بھیجی گئی ہے۔
  • gas: QUANTITY - (اختیاری، ڈیفالٹ: 90000) ٹرانزیکشن کے نفاذ کے لیے فراہم کردہ گیس کا انٹیجر۔ یہ غیر استعمال شدہ گیس واپس کر دے گا۔
  • gasPrice: QUANTITY - (اختیاری، ڈیفالٹ: طے کیا جانا باقی ہے) ہر ادا شدہ گیس کے لیے استعمال ہونے والی gasPrice کا انٹیجر، Wei میں۔
  • value: QUANTITY - (اختیاری) اس ٹرانزیکشن کے ساتھ بھیجی گئی ویلیو کا انٹیجر، Wei میں۔
  • data: DATA - کسی کنٹریکٹ کا مرتب شدہ کوڈ یا کال کیے گئے میتھڈ کے دستخط اور انکوڈ شدہ پیرامیٹرز کا ہیش۔
  • nonce: QUANTITY - (اختیاری) نانس کا انٹیجر۔ یہ آپ کو اپنی ان زیر التواء ٹرانزیکشنز کو اوور رائٹ کرنے کی اجازت دیتا ہے جو وہی نانس استعمال کرتی ہیں۔

ریٹرنز

DATA، مخصوص اکاؤنٹ کے ذریعے دستخط شدہ RLP-encoded ٹرانزیکشن آبجیکٹ۔

مثال

// درخواست
curl -X POST --data '{"id": 1,"jsonrpc": "2.0","method": "eth_signTransaction","params": [{"data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","gas": "0x76c0","gasPrice": "0x9184e72a000","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","value": "0x9184e72a"}]}'
// نتیجہ
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
}

eth_sendTransaction

نئی پیغام کی کال کی ٹرانزیکشن یا کنٹریکٹ کی تخلیق کرتا ہے، اگر ڈیٹا فیلڈ میں کوڈ شامل ہو، اور from میں بتائے گئے اکاؤنٹ کا استعمال کرتے ہوئے اس پر دستخط کرتا ہے۔

پیرامیٹرز

  1. Object - ٹرانزیکشن آبجیکٹ
  • from: DATA, 20 Bytes - وہ پتہ جہاں سے ٹرانزیکشن بھیجی گئی ہے۔
  • to: DATA, 20 Bytes - (نیا کنٹریکٹ بناتے وقت اختیاری) وہ پتہ جس پر ٹرانزیکشن بھیجی گئی ہے۔
  • gas: QUANTITY - (اختیاری، ڈیفالٹ: 90000) ٹرانزیکشن کے نفاذ کے لیے فراہم کردہ گیس کا انٹیجر (Integer)۔ یہ غیر استعمال شدہ گیس واپس کر دے گا۔
  • gasPrice: QUANTITY - (اختیاری، ڈیفالٹ: طے کیا جانا باقی ہے) ہر ادا شدہ گیس کے لیے استعمال ہونے والی گیس کی قیمت (gasPrice) کا انٹیجر۔
  • value: QUANTITY - (اختیاری) اس ٹرانزیکشن کے ساتھ بھیجی گئی ویلیو (value) کا انٹیجر۔
  • input: DATA - کسی کنٹریکٹ کا مرتب شدہ (compiled) کوڈ یا طلب کیے گئے طریقہ کار کے دستخط (method signature) اور انکوڈ شدہ پیرامیٹرز کا ہیش۔
  • nonce: QUANTITY - (اختیاری) نانس کا انٹیجر۔ یہ آپ کو اپنی ان زیر التواء ٹرانزیکشنز کو اوور رائٹ کرنے کی اجازت دیتا ہے جو ایک ہی نانس استعمال کرتی ہیں۔

ریٹرنز

DATA, 32 Bytes - ٹرانزیکشن ہیش، یا صفر ہیش اگر ٹرانزیکشن ابھی تک دستیاب نہیں ہے۔

جب آپ نے کوئی کنٹریکٹ بنایا ہو، تو ٹرانزیکشن کو کسی بلاک میں تجویز کیے جانے کے بعد کنٹریکٹ کا پتہ حاصل کرنے کے لیے eth_getTransactionReceipt کا استعمال کریں۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{see above}],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

eth_sendRawTransaction

دستخط شدہ ٹرانزیکشنز کے لیے نئی پیغام کی کال کی ٹرانزیکشن یا کنٹریکٹ کی تخلیق کرتا ہے۔

پیرامیٹرز

  1. DATA، دستخط شدہ ٹرانزیکشن کا ڈیٹا۔
params: [
  "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
]

ریٹرنز

DATA، 32 Bytes - ٹرانزیکشن ہیش، یا صفر ہیش اگر ٹرانزیکشن ابھی تک دستیاب نہیں ہے۔

جب آپ نے کوئی کنٹریکٹ بنایا ہو، تو ٹرانزیکشن کو ایک بلاک میں تجویز کیے جانے کے بعد، کنٹریکٹ کا پتہ حاصل کرنے کے لیے eth_getTransactionReceipt کا استعمال کریں۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{see above}],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

eth_call

بلاک چین پر ٹرانزیکشن بنائے بغیر فوری طور پر ایک نئی پیغام کی کال انجام دیتا ہے۔ اکثر صرف پڑھنے کے قابل سمارٹ کنٹریکٹ فنکشنز کو انجام دینے کے لیے استعمال ہوتا ہے، مثال کے طور پر ERC-20 کنٹریکٹ کے لیے balanceOf۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. Object - ٹرانزیکشن کال آبجیکٹ
  • from: DATA، 20 Bytes - (اختیاری) وہ پتہ جہاں سے ٹرانزیکشن بھیجی گئی ہے۔
  • to: DATA، 20 Bytes - وہ پتہ جس پر ٹرانزیکشن بھیجی گئی ہے۔
  • gas: QUANTITY - (اختیاری) ٹرانزیکشن کے نفاذ کے لیے فراہم کردہ گیس کا انٹیجر۔ eth_call صفر گیس استعمال کرتا ہے، لیکن کچھ ایگزیکیوشنز کو اس پیرامیٹر کی ضرورت ہو سکتی ہے۔
  • gasPrice: QUANTITY - (اختیاری) ہر ادا شدہ گیس کے لیے استعمال ہونے والی gasPrice کا انٹیجر
  • value: QUANTITY - (اختیاری) اس ٹرانزیکشن کے ساتھ بھیجی گئی ویلیو کا انٹیجر
  • input: DATA - (اختیاری) میتھڈ کے دستخط اور انکوڈ شدہ پیرامیٹرز کا ہیش۔ تفصیلات کے لیے Solidity کی دستاویزات میں ایتھیریم کنٹریکٹ ABI (opens in a new tab) دیکھیں۔
  1. QUANTITY|TAG - انٹیجر بلاک نمبر، یا سٹرنگ "latest"، "earliest"، "pending"، "safe" یا "finalized"، بلاک پیرامیٹر دیکھیں۔

واپسی

DATA - نفاذ شدہ کنٹریکٹ کی واپسی کی ویلیو۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x"
}

eth_estimateGas

یہ اندازہ لگاتا ہے اور واپس کرتا ہے کہ ٹرانزیکشن کو مکمل ہونے کے لیے کتنی گیس درکار ہے۔ ٹرانزیکشن کو بلاک چین میں شامل نہیں کیا جائے گا۔ نوٹ کریں کہ یہ اندازہ ٹرانزیکشن کے ذریعے اصل میں استعمال ہونے والی گیس کی مقدار سے نمایاں طور پر زیادہ ہو سکتا ہے، جس کی مختلف وجوہات ہو سکتی ہیں جن میں EVM میکینکس اور نوڈ کی کارکردگی شامل ہیں۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

eth_call کے پیرامیٹرز دیکھیں، سوائے اس کے کہ تمام خصوصیات اختیاری ہیں۔ اگر گیس کی حد متعین نہیں کی گئی ہے تو Geth زیر التواء بلاک سے بلاک گیس کی حد کو بالائی حد کے طور پر استعمال کرتا ہے۔ نتیجے کے طور پر، جب گیس کی مقدار زیر التواء بلاک گیس کی حد سے زیادہ ہو تو واپس کیا گیا اندازہ کال/ٹرانزیکشن کو انجام دینے کے لیے کافی نہیں ہو سکتا۔

واپسی

QUANTITY - استعمال ہونے والی گیس کی مقدار۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x5208" // 21000
}

eth_getBlockByHash

ہیش کے ذریعے بلاک کے بارے میں معلومات واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 32 Bytes - بلاک کا ہیش۔
  2. Boolean - اگر true ہو تو یہ مکمل ٹرانزیکشن آبجیکٹس واپس کرتا ہے، اگر false ہو تو صرف ٹرانزیکشنز کے ہیشز۔
params: [
  "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",
  false,
]

نتائج

Object - ایک بلاک آبجیکٹ، یا جب کوئی بلاک نہ ملے تو null:

  • number: QUANTITY - بلاک کا نمبر۔ جب یہ زیر التوا بلاک ہو تو null۔
  • hash: DATA، 32 Bytes - بلاک کا ہیش۔ جب یہ زیر التوا بلاک ہو تو null۔
  • parentHash: DATA، 32 Bytes - پیرنٹ بلاک کا ہیش۔
  • nonce: DATA، 8 Bytes - تیار کردہ ثبوتِ کار (PoW) کا ہیش۔ جب یہ زیر التوا بلاک ہو تو null، حصہ داری کا ثبوت (PoS) بلاکس کے لیے 0x0 (دی مرج کے بعد سے)
  • sha3Uncles: DATA، 32 Bytes - بلاک میں انکلز کے ڈیٹا کا SHA3۔
  • logsBloom: DATA، 256 Bytes - بلاک کے لاگز کے لیے بلوم فلٹر۔ جب یہ زیر التوا بلاک ہو تو null۔
  • transactionsRoot: DATA، 32 Bytes - بلاک کی ٹرانزیکشن ٹرائی کا روٹ۔
  • stateRoot: DATA، 32 Bytes - بلاک کی حتمی حالت کی ٹرائی کا روٹ۔
  • receiptsRoot: DATA، 32 Bytes - بلاک کی رسیدوں کی ٹرائی کا روٹ۔
  • miner: DATA، 20 Bytes - اس مستفید کا پتہ جسے بلاک کے انعامات دیے گئے تھے۔
  • difficulty: QUANTITY - اس بلاک کی دشواری کا انٹیجر۔
  • totalDifficulty: QUANTITY - اس بلاک تک چین کی کل دشواری کا انٹیجر۔
  • extraData: DATA - اس بلاک کا "اضافی ڈیٹا" فیلڈ۔
  • size: QUANTITY - بائٹس میں اس بلاک کے سائز کا انٹیجر۔
  • gasLimit: QUANTITY - اس بلاک میں زیادہ سے زیادہ اجازت یافتہ گیس۔
  • gasUsed: QUANTITY - اس بلاک میں تمام ٹرانزیکشنز کے ذریعے استعمال شدہ کل گیس۔
  • timestamp: QUANTITY - بلاک مرتب کیے جانے کے وقت کا یونکس ٹائم اسٹیمپ۔
  • transactions: Array - آخری دیے گئے پیرامیٹر کی بنیاد پر، ٹرانزیکشن آبجیکٹس کی ایرے، یا 32 Bytes کے ٹرانزیکشن ہیشز۔
  • uncles: Array - انکل ہیشز کی ایرے۔

مثال

eth_getBlockByNumber

بلاک نمبر کے ذریعے کسی بلاک کے بارے میں معلومات فراہم کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. QUANTITY|TAG - بلاک نمبر کا انٹیجر، یا سٹرنگ "earliest"، "latest"، "pending"، "safe" یا "finalized"، جیسا کہ بلاک پیرامیٹر میں ہے۔
  2. Boolean - اگر true ہو تو یہ مکمل ٹرانزیکشن آبجیکٹس فراہم کرتا ہے، اگر false ہو تو صرف ٹرانزیکشنز کے ہیشز۔
params: [
  "0x1b4", // 436
  true,
]

واپسی eth_getBlockByHash دیکھیں

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}'

نتیجہ کے لیے eth_getBlockByHash دیکھیں

eth_getTransactionByHash

ٹرانزیکشن ہیش کے ذریعے درخواست کردہ ٹرانزیکشن کے بارے میں معلومات واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 32 Bytes - ٹرانزیکشن کا ہیش
params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]

ریٹرنز

Object - ایک ٹرانزیکشن آبجیکٹ، یا null جب کوئی ٹرانزیکشن نہ ملے:

  • blockHash: DATA، 32 Bytes - اس بلاک کا ہیش جس میں یہ ٹرانزیکشن موجود تھی۔ null جب یہ زیر التوا ہو۔
  • blockNumber: QUANTITY - بلاک نمبر جس میں یہ ٹرانزیکشن موجود تھی۔ null جب یہ زیر التوا ہو۔
  • from: DATA، 20 Bytes - بھیجنے والے کا پتہ۔
  • gas: QUANTITY - بھیجنے والے کی طرف سے فراہم کردہ گیس۔
  • gasPrice: QUANTITY - بھیجنے والے کی طرف سے Wei میں فراہم کردہ گیس کی قیمت۔
  • hash: DATA، 32 Bytes - ٹرانزیکشن کا ہیش۔
  • input: DATA - ٹرانزیکشن کے ساتھ بھیجا گیا ڈیٹا۔
  • nonce: QUANTITY - اس سے پہلے بھیجنے والے کی طرف سے کی گئی ٹرانزیکشنز کی تعداد۔
  • to: DATA، 20 Bytes - وصول کنندہ کا پتہ۔ null جب یہ معاہدے کی تخلیق کی ٹرانزیکشن ہو۔
  • transactionIndex: QUANTITY - بلاک میں ٹرانزیکشنز کی اشاریہ پوزیشن کا عدد (integernull جب یہ زیر التوا ہو۔
  • value: QUANTITY - Wei میں منتقل کی گئی قدر۔
  • v: QUANTITY - ECDSA ریکوری آئی ڈی
  • r: QUANTITY - ECDSA دستخط r
  • s: QUANTITY - ECDSA دستخط s

مثال

eth_getTransactionByBlockHashAndIndex

بلاک ہیش اور ٹرانزیکشن کے اشاریہ کی پوزیشن کے لحاظ سے ٹرانزیکشن کے بارے میں معلومات لوٹاتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 32 Bytes - ایک بلاک کا ہیش۔
  2. QUANTITY - ٹرانزیکشن کے اشاریہ کی پوزیشن کا عدد۔
params: [
  "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
  "0x0", // 0
]

ریٹرنز eth_getTransactionByHash دیکھیں

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'

نتیجہ کے لیے eth_getTransactionByHash دیکھیں

eth_getTransactionByBlockNumberAndIndex

یہ بلاک نمبر اور ٹرانزیکشن کے اشاریہ کی پوزیشن کے لحاظ سے ٹرانزیکشن کے بارے میں معلومات لوٹاتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. QUANTITY|TAG - ایک بلاک نمبر، یا سٹرنگ "earliest"، "latest"، "pending"، "safe" یا "finalized"، جیسا کہ بلاک پیرامیٹر میں ہے۔
  2. QUANTITY - ٹرانزیکشن کے اشاریہ کی پوزیشن۔
params: [
  "0x9c47cf", // 10241999
  "0x24", // 36
]

ریٹرنز eth_getTransactionByHash دیکھیں

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x9c47cf", "0x24"],"id":1}'

نتیجہ کے لیے eth_getTransactionByHash دیکھیں۔

eth_getTransactionReceipt

ٹرانزیکشن ہیش کے ذریعے کسی ٹرانزیکشن کی رسید واپس کرتا ہے۔

نوٹ کہ زیر التوا ٹرانزیکشنز کے لیے رسید دستیاب نہیں ہے۔

پیرامیٹرز

  1. DATA، 32 Bytes - کسی ٹرانزیکشن کا ہیش
params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"]

واپسی Object - ایک ٹرانزیکشن کی رسید کا آبجیکٹ، یا null جب کوئی رسید نہ ملے:

  • transactionHash : DATA، 32 Bytes - ٹرانزیکشن کا ہیش۔
  • transactionIndex: QUANTITY - بلاک میں ٹرانزیکشنز کی اشاریہ پوزیشن کا انٹیجر۔
  • blockHash: DATA، 32 Bytes - اس بلاک کا ہیش جس میں یہ ٹرانزیکشن موجود تھی۔
  • blockNumber: QUANTITY - اس بلاک کا نمبر جس میں یہ ٹرانزیکشن موجود تھی۔
  • from: DATA، 20 Bytes - بھیجنے والے کا پتہ۔
  • to: DATA، 20 Bytes - وصول کنندہ کا پتہ۔ جب یہ معاہدے کی تخلیق کی ٹرانزیکشن ہو تو null ہوتا ہے۔
  • cumulativeGasUsed : QUANTITY - بلاک میں اس ٹرانزیکشن کے ایگزیکیوٹ ہونے پر استعمال ہونے والی گیس کی کل مقدار۔
  • effectiveGasPrice : QUANTITY - گیس کی فی اکائی ادا کی گئی بنیادی فیس اور ٹپ کا مجموعہ۔
  • gasUsed : QUANTITY - صرف اس مخصوص ٹرانزیکشن کے ذریعے استعمال ہونے والی گیس کی مقدار۔
  • contractAddress : DATA، 20 Bytes - تخلیق کردہ کنٹریکٹ کا پتہ، اگر ٹرانزیکشن معاہدے کی تخلیق تھی، بصورت دیگر null۔
  • logs: Array - لاگ آبجیکٹس کی ارے (Array)، جو اس ٹرانزیکشن نے تیار کی ہے۔
  • logsBloom: DATA، 256 Bytes - لائٹ کلائنٹس کے لیے متعلقہ لاگز کو تیزی سے بازیافت کرنے کے لیے بلوم فلٹر۔
  • type: QUANTITY - ٹرانزیکشن کی قسم کا انٹیجر، لیگیسی ٹرانزیکشنز کے لیے 0x0، ایکسیس لسٹ کی اقسام کے لیے 0x1، ڈائنامک فیس کے لیے 0x2۔

یہ ان میں سے کوئی ایک بھی واپس کرتا ہے:

  • root : DATA پوسٹ-ٹرانزیکشن حالت کے روٹ کے 32 bytes (بازنطیم سے پہلے)
  • status: QUANTITY یا تو 1 (کامیابی) یا 0 (ناکامی)

مثال

eth_getUncleByBlockHashAndIndex

ہیش اور انکل کے اشاریہ کی پوزیشن کے ذریعے ایک بلاک کے انکل کے بارے میں معلومات واپس کرتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. DATA، 32 Bytes - ایک بلاک کا ہیش۔
  2. QUANTITY - انکل کے اشاریہ کی پوزیشن۔
params: [
  "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
  "0x0", // 0
]

ریٹرنز eth_getBlockByHash دیکھیں

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'

نتیجہ کے لیے eth_getBlockByHash دیکھیں

نوٹ: ایک انکل میں انفرادی ٹرانزیکشنز شامل نہیں ہوتیں۔

eth_getUncleByBlockNumberAndIndex

نمبر اور انکل کی اشاریہ پوزیشن کے لحاظ سے کسی بلاک کے انکل کے بارے میں معلومات لوٹاتا ہے۔

پلے گراؤنڈ میں اینڈ پوائنٹ آزمائیں (opens in a new tab)

پیرامیٹرز

  1. QUANTITY|TAG - ایک بلاک نمبر، یا سٹرنگ "earliest"، "latest"، "pending"، "safe"، "finalized"، جیسا کہ بلاک پیرامیٹر میں ہے۔
  2. QUANTITY - انکل کی اشاریہ پوزیشن۔
params: [
  "0x29c", // 668
  "0x0", // 0
]

ریٹرنز دیکھیں eth_getBlockByHash

نوٹ: ایک انکل میں انفرادی ٹرانزیکشنز شامل نہیں ہوتیں۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}'

نتیجہ دیکھیں eth_getBlockByHash

eth_newFilter

فلٹر کے اختیارات کی بنیاد پر ایک فلٹر آبجیکٹ بناتا ہے، تاکہ حالت تبدیل ہونے (لاگز) پر مطلع کیا جا سکے۔ یہ چیک کرنے کے لیے کہ آیا حالت تبدیل ہوئی ہے، eth_getFilterChanges کو کال کریں۔

موضوع کے فلٹرز کی وضاحت پر ایک نوٹ: موضوعات ترتیب پر منحصر ہوتے ہیں۔ ایک ٹرانزیکشن جس کے لاگ میں موضوعات [A, B] ہوں، درج ذیل موضوع کے فلٹرز سے مماثل ہوگی:

  • [] "کچھ بھی"
  • [A] "پہلی پوزیشن پر A (اور اس کے بعد کچھ بھی)"
  • [null, B] "پہلی پوزیشن پر کچھ بھی اور دوسری پوزیشن پر B (اور اس کے بعد کچھ بھی)"
  • [A, B] "پہلی پوزیشن پر A اور دوسری پوزیشن پر B (اور اس کے بعد کچھ بھی)"
  • [[A, B], [A, B]] "پہلی پوزیشن پر (A یا B) اور دوسری پوزیشن پر (A یا B) (اور اس کے بعد کچھ بھی)"
  • پیرامیٹرز
  1. Object - فلٹر کے اختیارات:
  • fromBlock: QUANTITY|TAG - (اختیاری، ڈیفالٹ: "latest") انٹیجر بلاک نمبر، یا آخری تجویز کردہ بلاک کے لیے "latest"، تازہ ترین محفوظ بلاک کے لیے "safe"، تازہ ترین حتمی بلاک کے لیے "finalized"، یا ان ٹرانزیکشنز کے لیے جو ابھی تک کسی بلاک میں نہیں ہیں "pending"، "earliest"۔
  • toBlock: QUANTITY|TAG - (اختیاری، ڈیفالٹ: "latest") انٹیجر بلاک نمبر، یا آخری تجویز کردہ بلاک کے لیے "latest"، تازہ ترین محفوظ بلاک کے لیے "safe"، تازہ ترین حتمی بلاک کے لیے "finalized"، یا ان ٹرانزیکشنز کے لیے جو ابھی تک کسی بلاک میں نہیں ہیں "pending"، "earliest"۔
  • address: DATA|Array، 20 Bytes - (اختیاری) کنٹریکٹ کا پتہ یا پتوں کی فہرست جہاں سے لاگز شروع ہونے چاہئیں۔
  • topics: Array of DATA، - (اختیاری) 32 Bytes کی ارے DATA موضوعات۔ موضوعات ترتیب پر منحصر ہوتے ہیں۔ ہر موضوع "یا" (or) کے اختیارات کے ساتھ ڈیٹا (DATA) کی ایک ارے بھی ہو سکتا ہے۔

واپسی QUANTITY - ایک فلٹر آئی ڈی۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_newBlockFilter

نوڈ میں ایک فلٹر بناتا ہے، تاکہ جب کوئی نیا بلاک آئے تو مطلع کیا جا سکے۔ یہ چیک کرنے کے لیے کہ آیا حالت تبدیل ہوئی ہے، eth_getFilterChanges کو کال کریں۔

پیرامیٹرز کوئی نہیں

ریٹرنز QUANTITY - ایک فلٹر آئی ڈی۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}'
// نتیجہ
{
  "id":1,
  "jsonrpc":  "2.0",
  "result": "0x1" // 1
}

eth_newPendingTransactionFilter

نوڈ میں ایک فلٹر بناتا ہے، تاکہ جب نئی زیر التواء ٹرانزیکشنز آئیں تو مطلع کیا جا سکے۔ یہ چیک کرنے کے لیے کہ آیا حالت تبدیل ہوئی ہے، eth_getFilterChanges کو کال کریں۔

پیرامیٹرز کوئی نہیں

ریٹرنز QUANTITY - ایک فلٹر آئی ڈی۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}'
// نتیجہ
{
  "id":1,
  "jsonrpc":  "2.0",
  "result": "0x1" // 1
}

eth_uninstallFilter

دیے گئے id والے فلٹر کو اَن انسٹال کرتا ہے۔ جب مزید نگرانی کی ضرورت نہ ہو تو اسے ہمیشہ کال کیا جانا چاہیے۔ مزید برآں، جب ایک مخصوص مدت تک eth_getFilterChanges کے ساتھ فلٹرز کی درخواست نہیں کی جاتی ہے تو وہ ٹائم آؤٹ ہو جاتے ہیں۔

پیرامیٹرز

  1. QUANTITY - فلٹر کی id۔
params: [
  "0xb", // 11
]

ریٹرنز

Boolean - true اگر فلٹر کامیابی سے اَن انسٹال ہو گیا تھا، بصورت دیگر false۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}'
// نتیجہ
{
  "id":1,
  "jsonrpc": "2.0",
  "result": true
}

eth_getFilterChanges

ایک فلٹر کے لیے پولنگ کا طریقہ، جو پچھلے پول کے بعد سے ہونے والے لاگز کی ایک ایرے (array) واپس کرتا ہے۔

پیرامیٹرز

  1. QUANTITY - فلٹر کی شناخت (id)۔
params: [
  "0x16", // 22
]

واپسی Array - لاگ آبجیکٹس کی ایرے، یا اگر پچھلے پول کے بعد سے کچھ نہیں بدلا ہے تو ایک خالی ایرے۔

  • eth_newBlockFilter کے ساتھ بنائے گئے فلٹرز کے لیے واپسی بلاک ہیشز (DATA، 32 Bytes) ہیں، مثال کے طور پر، ["0x3454645634534..."]۔

  • eth_newPendingTransactionFilter کے ساتھ بنائے گئے فلٹرز کے لیے واپسی ٹرانزیکشن ہیشز (DATA، 32 Bytes) ہیں، مثال کے طور پر، ["0x6345343454645..."]۔

  • eth_newFilter کے ساتھ بنائے گئے فلٹرز کے لیے لاگز درج ذیل پیرامیٹرز کے ساتھ آبجیکٹس ہیں:

    • removed: TAG - true جب چین کی تنظیمِ نو کی وجہ سے لاگ کو ہٹا دیا گیا ہو۔ false اگر یہ ایک درست لاگ ہے۔
    • logIndex: QUANTITY - بلاک میں لاگ کی اشاریہ پوزیشن کا انٹیجر۔ null جب یہ زیر التواء لاگ ہو۔
    • transactionIndex: QUANTITY - ٹرانزیکشنز کی اشاریہ پوزیشن کا انٹیجر جس سے لاگ بنایا گیا تھا۔ null جب یہ زیر التواء لاگ ہو۔
    • transactionHash: DATA، 32 Bytes - ان ٹرانزیکشنز کا ہیش جن سے یہ لاگ بنایا گیا تھا۔ null جب یہ زیر التواء لاگ ہو۔
    • blockHash: DATA، 32 Bytes - اس بلاک کا ہیش جس میں یہ لاگ تھا۔ null جب یہ زیر التواء ہو۔ null جب یہ زیر التواء لاگ ہو۔
    • blockNumber: QUANTITY - اس بلاک کا نمبر جس میں یہ لاگ تھا۔ null جب یہ زیر التواء ہو۔ null جب یہ زیر التواء لاگ ہو۔
    • address: DATA، 20 Bytes - وہ پتہ جہاں سے یہ لاگ شروع ہوا تھا۔
    • data: DATA - متغیر لمبائی (variable-length) کا نان انڈیکسڈ لاگ ڈیٹا۔ (solidity میں: صفر یا اس سے زیادہ 32 Bytes کے نان انڈیکسڈ لاگ آرگیومنٹس۔)
    • topics: Array of DATA - انڈیکسڈ لاگ آرگیومنٹس کے 0 to 4 32 Bytes DATA کی ایرے۔ (solidity میں: پہلا ٹاپک ایونٹ کے دستخط کا ہیش ہوتا ہے (مثال کے طور پر، Deposit(address,bytes32,uint256))، سوائے اس کے کہ آپ نے ایونٹ کو anonymous کی تخصیص کے ساتھ ڈکلیئر کیا ہو۔)
  • مثال

eth_getFilterLogs

دی گئی id والے فلٹر سے مماثل تمام لاگز کی ایک ایرے واپس کرتا ہے۔

پیرامیٹرز

  1. QUANTITY - فلٹر کی id۔
params: [
  "0x16", // 22
]

واپسی eth_getFilterChanges دیکھیں۔

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}'

نتیجے کے لیے eth_getFilterChanges دیکھیں۔

eth_getLogs

دیے گئے فلٹر آبجیکٹ سے مماثل تمام لاگز کی ایک صف (array) واپس کرتا ہے۔

پیرامیٹرز

  1. Object - فلٹر کے اختیارات:
  • fromBlock: QUANTITY|TAG - (اختیاری، ڈیفالٹ: "latest") انٹیجر بلاک نمبر، یا آخری تجویز کردہ بلاک کے لیے "latest"، تازہ ترین محفوظ بلاک کے لیے "safe"، تازہ ترین حتمی بلاک کے لیے "finalized"، یا ان ٹرانزیکشنز کے لیے "pending", "earliest" جو ابھی تک کسی بلاک میں نہیں ہیں۔
  • toBlock: QUANTITY|TAG - (اختیاری، ڈیفالٹ: "latest") انٹیجر بلاک نمبر، یا آخری تجویز کردہ بلاک کے لیے "latest"، تازہ ترین محفوظ بلاک کے لیے "safe"، تازہ ترین حتمی بلاک کے لیے "finalized"، یا ان ٹرانزیکشنز کے لیے "pending", "earliest" جو ابھی تک کسی بلاک میں نہیں ہیں۔
  • address: DATA|Array، 20 Bytes - (اختیاری) کنٹریکٹ کا پتہ یا پتوں کی ایک فہرست جہاں سے لاگز شروع ہونے چاہئیں۔
  • topics: Array of DATA، - (اختیاری) 32 Bytes DATA کے موضوعات (topics) کی صف (array)۔ موضوعات ترتیب پر منحصر ہوتے ہیں۔ ہر موضوع "or" اختیارات کے ساتھ DATA کی ایک صف بھی ہو سکتا ہے۔
  • blockHash: DATA، 32 Bytes - (اختیاری، مستقبل) EIP-234 کے اضافے کے ساتھ، blockHash ایک نیا فلٹر آپشن ہوگا جو واپس کیے گئے لاگز کو 32-byte ہیش blockHash والے واحد بلاک تک محدود کر دے گا۔ blockHash کا استعمال fromBlock = toBlock = ہیش blockHash والے بلاک نمبر کے برابر ہے۔ اگر فلٹر کے معیار میں blockHash موجود ہے، تو نہ تو fromBlock اور نہ ہی toBlock کی اجازت ہے۔
params: [
  {
    topics: [
      "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
    ],
  },
]

واپسی eth_getFilterChanges دیکھیں

مثال

// درخواست
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}'

نتیجہ کے لیے eth_getFilterChanges دیکھیں

استعمال کی مثال

JSON_RPC کا استعمال کرتے ہوئے کنٹریکٹ تعینات کرنا

اس حصے میں صرف RPC انٹرفیس کا استعمال کرتے ہوئے کنٹریکٹ تعینات کرنے کا طریقہ کار دکھایا گیا ہے۔ کنٹریکٹس تعینات کرنے کے متبادل طریقے بھی موجود ہیں جہاں اس پیچیدگی کو چھپا دیا جاتا ہے—مثال کے طور پر، RPC انٹرفیس کے اوپر بنی لائبریریوں کا استعمال کرتے ہوئے جیسے web3.js (opens in a new tab) اور web3.py (opens in a new tab)۔ یہ تجریدات (abstractions) عام طور پر سمجھنے میں آسان اور کم غلطیوں کا باعث بنتی ہیں، لیکن پھر بھی یہ سمجھنا مفید ہے کہ اندرونی طور پر کیا ہو رہا ہے۔

درج ذیل ایک سیدھا سادا سمارٹ کنٹریکٹ ہے جسے Multiply7 کہا جاتا ہے، جسے جے سن آر پی سی انٹرفیس کا استعمال کرتے ہوئے ایتھیریم نوڈ پر تعینات کیا جائے گا۔ یہ ٹیوٹوریل فرض کرتا ہے کہ قاری پہلے ہی Geth نوڈ چلا رہا ہے۔ نوڈز اور کلائنٹس کے بارے میں مزید معلومات یہاں دستیاب ہیں۔ غیر-Geth کلائنٹس کے لیے HTTP جے سن آر پی سی شروع کرنے کا طریقہ دیکھنے کے لیے براہ کرم انفرادی کلائنٹ کی دستاویزات سے رجوع کریں۔ زیادہ تر کلائنٹس پہلے سے طے شدہ طور پر localhost:8545 پر سروس فراہم کرتے ہیں۔

contract Multiply7 {
    event Print(uint);
    function multiply(uint input) returns (uint) {
        Print(input * 7);
        return input * 7;
    }
}

سب سے پہلا کام یہ یقینی بنانا ہے کہ HTTP RPC انٹرفیس فعال ہے۔ اس کا مطلب ہے کہ ہم اسٹارٹ اپ پر Geth کو --http فلیگ فراہم کرتے ہیں۔ اس مثال میں ہم ایک نجی ڈیولپمنٹ چین پر Geth نوڈ استعمال کرتے ہیں۔ اس طریقے کا استعمال کرتے ہوئے ہمیں اصلی نیٹ ورک پر ایتھر کی ضرورت نہیں ہوتی۔

geth --http --dev console 2>>geth.log

یہ http://localhost:8545 پر HTTP RPC انٹرفیس شروع کر دے گا۔

ہم curl (opens in a new tab) کا استعمال کرتے ہوئے کوائن بیس پتہ (اکاؤنٹس کی صف سے پہلا پتہ حاصل کر کے) اور بیلنس بازیافت کر کے تصدیق کر سکتے ہیں کہ انٹرفیس چل رہا ہے۔ براہ کرم نوٹ کریں کہ ان مثالوں میں موجود ڈیٹا آپ کے مقامی نوڈ پر مختلف ہوگا۔ اگر آپ ان کمانڈز کو آزمانا چاہتے ہیں، تو دوسری curl درخواست میں موجود درخواست کے پیرامیٹرز کو پہلی درخواست سے واپس آنے والے نتیجے سے تبدیل کریں۔

curl --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[], "id":1}' -H "Content-Type: application/json" localhost:8545
{"id":1,"jsonrpc":"2.0","result":["0x9b1d35635cc34752ca54713bb99d38614f63c955"]}

curl --data '{"jsonrpc":"2.0","method":"eth_getBalance", "params": ["0x9b1d35635cc34752ca54713bb99d38614f63c955", "latest"], "id":2}' -H "Content-Type: application/json" localhost:8545
{"id":2,"jsonrpc":"2.0","result":"0x1639e49bba16280000"}

چونکہ نمبرز ہیکس (hex) انکوڈڈ ہوتے ہیں، اس لیے بیلنس Wei میں ہیکس سٹرنگ کے طور پر واپس کیا جاتا ہے۔ اگر ہم بیلنس کو ایتھر میں ایک نمبر کے طور پر دیکھنا چاہتے ہیں تو ہم Geth کنسول سے web3 استعمال کر سکتے ہیں۔

web3.fromWei("0x1639e49bba16280000", "ether")
// "410"

اب چونکہ ہماری نجی ڈیولپمنٹ چین پر کچھ ایتھر موجود ہے، ہم کنٹریکٹ تعینات کر سکتے ہیں۔ پہلا قدم Multiply7 کنٹریکٹ کو بائٹ کوڈ میں کمپائلنگ کرنا ہے جسے EVM کو بھیجا جا سکے۔ solc، جو کہ Solidity کمپائلر ہے، کو انسٹال کرنے کے لیے Solidity کی دستاویزات (opens in a new tab) پر عمل کریں۔ (آپ شاید ایک پرانی solc ریلیز استعمال کرنا چاہیں تاکہ یہ ہماری مثال کے لیے استعمال ہونے والے کمپائلر کے ورژن (opens in a new tab) سے مماثل ہو۔)

اگلا قدم Multiply7 کنٹریکٹ کو بائٹ کوڈ میں کمپائلنگ کرنا ہے جسے EVM کو بھیجا جا سکے۔

echo 'pragma solidity ^0.4.16; contract Multiply7 { event Print(uint); function multiply(uint input) public returns (uint) { Print(input * 7); return input * 7; } }' | solc --bin

======= <stdin>:Multiply7 =======
Binary:
6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029

اب جب کہ ہمارے پاس کمپائل شدہ کوڈ موجود ہے، ہمیں یہ تعین کرنے کی ضرورت ہے کہ اسے تعینات کرنے پر کتنی گیس خرچ ہوگی۔ RPC انٹرفیس میں ایک eth_estimateGas طریقہ ہے جو ہمیں ایک تخمینہ دے گا۔

curl --data '{"jsonrpc":"2.0","method": "eth_estimateGas", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 5}' -H "Content-Type: application/json" localhost:8545
{"jsonrpc":"2.0","id":5,"result":"0x1c31e"}

اور آخر کار کنٹریکٹ تعینات کریں۔

curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "gas": "0x1c31e", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 6}' -H "Content-Type: application/json" localhost:8545
{"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"}

ٹرانزیکشن کو نوڈ کے ذریعے قبول کر لیا جاتا ہے اور ایک ٹرانزیکشن ہیش واپس کیا جاتا ہے۔ اس ہیش کو ٹرانزیکشن کو ٹریک کرنے کے لیے استعمال کیا جا سکتا ہے۔ اگلا قدم اس پتہ کا تعین کرنا ہے جہاں ہمارا کنٹریکٹ تعینات کیا گیا ہے۔ ہر عمل میں لائی گئی ٹرانزیکشن ایک رسید بنائے گی۔ اس رسید میں ٹرانزیکشن کے بارے میں مختلف معلومات شامل ہوتی ہیں جیسے کہ ٹرانزیکشن کس بلاک میں شامل کی گئی تھی اور EVM کے ذریعے کتنی گیس استعمال کی گئی تھی۔ اگر کوئی ٹرانزیکشن کنٹریکٹ بناتی ہے تو اس میں کنٹریکٹ کا پتہ بھی شامل ہوگا۔ ہم eth_getTransactionReceipt RPC طریقہ استعمال کر کے رسید بازیافت کر سکتے ہیں۔

curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545
{"jsonrpc":"2.0","id":7,"result":{"blockHash":"0x77b1a4f6872b9066312de3744f60020cbd8102af68b1f6512a05b7619d527a4f","blockNumber":"0x1","contractAddress":"0x4d03d617d700cf81935d7f797f4e2ae719648262","cumulativeGasUsed":"0x1c31e","from":"0x9b1d35635cc34752ca54713bb99d38614f63c955","gasUsed":"0x1c31e","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":null,"transactionHash":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf","transactionIndex":"0x0"}}

ہمارا کنٹریکٹ 0x4d03d617d700cf81935d7f797f4e2ae719648262 پر بنایا گیا تھا۔ رسید کے بجائے null نتیجہ آنے کا مطلب ہے کہ ٹرانزیکشن ابھی تک کسی بلاک میں شامل نہیں ہوئی ہے۔ کچھ دیر انتظار کریں اور چیک کریں کہ آیا آپ کا اتفاقِ رائے کا کلائنٹ چل رہا ہے اور اسے دوبارہ آزمائیں۔

سمارٹ کنٹریکٹس کے ساتھ تعامل کرنا

اس مثال میں ہم eth_sendTransaction کا استعمال کرتے ہوئے کنٹریکٹ کے multiply طریقہ پر ایک ٹرانزیکشن بھیجیں گے۔

eth_sendTransaction کو کئی دلائل کی ضرورت ہوتی ہے، خاص طور پر from، to اور data۔ From ہمارے اکاؤنٹ کا عوامی پتہ ہے، اور to کنٹریکٹ کا پتہ ہے۔ data دلیل میں ایک پے لوڈ ہوتا ہے جو یہ طے کرتا ہے کہ کون سا طریقہ کال کیا جانا چاہیے اور کن دلائل کے ساتھ۔ یہاں ABI (ایپلیکیشن بائنری انٹرفیس) (opens in a new tab) کا کردار آتا ہے۔ ABI ایک JSON فائل ہے جو یہ طے کرتی ہے کہ EVM کے لیے ڈیٹا کی وضاحت اور انکوڈنگ کیسے کی جائے۔

پے لوڈ کے بائٹس یہ طے کرتے ہیں کہ کنٹریکٹ میں کون سا طریقہ کال کیا گیا ہے۔ یہ فنکشن کے نام اور اس کی دلیل کی اقسام پر Keccak ہیش کے پہلے 4 bytes ہیں، جو ہیکس انکوڈڈ ہوتے ہیں۔ multiply فنکشن ایک uint قبول کرتا ہے جو کہ uint256 کا عرف ہے۔ اس سے ہمیں یہ حاصل ہوتا ہے:

web3.sha3("multiply(uint256)").substring(0, 10)
// "0xc6888fa1"

اگلا قدم دلائل کو انکوڈ کرنا ہے۔ یہاں صرف ایک uint256 ہے، فرض کریں، ویلیو 6۔ ABI میں ایک حصہ ہوتا ہے جو یہ بتاتا ہے کہ uint256 اقسام کو کیسے انکوڈ کیا جائے۔

int<M>: enc(X) X کی بگ اینڈِین ٹوز کمپلیمنٹ (two's complement) انکوڈنگ ہے، جسے منفی X کے لیے اعلیٰ درجے (بائیں) جانب 0xff کے ساتھ اور مثبت X کے لیے صفر بائٹس کے ساتھ پیڈ کیا جاتا ہے تاکہ لمبائی 32 bytes کا ضرب ہو۔

یہ 0000000000000000000000000000000000000000000000000000000000000006 میں انکوڈ ہوتا ہے۔

فنکشن سلیکٹر اور انکوڈ شدہ دلیل کو ملا کر ہمارا ڈیٹا 0xc6888fa10000000000000000000000000000000000000000000000000000000000000006 ہوگا۔

اسے اب نوڈ کو بھیجا جا سکتا ہے:

curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeb85a5557e5bdc18ee1934a89d8bb402398ee26a", "to": "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", "data": "0xc6888fa10000000000000000000000000000000000000000000000000000000000000006"}], "id": 8}' -H "Content-Type: application/json" localhost:8545
{"id":8,"jsonrpc":"2.0","result":"0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74"}

چونکہ ایک ٹرانزیکشن بھیجی گئی تھی، اس لیے ایک ٹرانزیکشن ہیش واپس کیا گیا۔ رسید بازیافت کرنے سے یہ حاصل ہوتا ہے:

رسید میں ایک لاگ شامل ہوتا ہے۔ یہ لاگ ٹرانزیکشن کے عمل درآمد پر EVM کے ذریعے تیار کیا گیا تھا اور رسید میں شامل کیا گیا تھا۔ multiply فنکشن ظاہر کرتا ہے کہ Print ایونٹ ان پٹ کو 7 سے ضرب دے کر اٹھایا گیا تھا۔ چونکہ Print ایونٹ کی دلیل ایک uint256 تھی، ہم اسے ABI کے قواعد کے مطابق ڈی کوڈ کر سکتے ہیں جس سے ہمیں متوقع ڈیسیمل 42 حاصل ہوگا۔ ڈیٹا کے علاوہ یہ بات قابل غور ہے کہ موضوعات (topics) کا استعمال یہ طے کرنے کے لیے کیا جا سکتا ہے کہ کس ایونٹ نے لاگ بنایا:

web3.sha3("Print(uint256)")
// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"

یہ کچھ انتہائی عام کاموں کا صرف ایک مختصر تعارف تھا، جس میں جے سن آر پی سی کے براہ راست استعمال کا مظاہرہ کیا گیا ہے۔