مرکزی مواد پر جائیں
اے آئی ٹیوٹوریلز

اپنے ٹرمینل سے Arbitrage Contract Deployer کے ذریعے Solidity کنٹریکٹس تعینات اور منظم کریں

Arbitrage Contract Deployer انسٹال اور کنفیگر کرنے، Solidity فائلز کمپائل کرنے، Ethereum Mainnet پر کنٹریکٹس تعینات کرنے، پڑھنے اور لکھنے والے فنکشنز چلانے، گیس کے اخراجات کا جائزہ لینے، محفوظ شدہ تعیناتیوں کو منظم کرنے اور میمپول اسٹریم چلانے کا طریقہ سیکھیں۔

ٹرمینل سے Arbitrage Contract Deployer کے ذریعے Solidity کنٹریکٹس تعینات اور منظم کریں

آپ کیا سیکھیں گے

Arbitrage Contract Deployer ایک Node.js کمانڈ لائن ٹول کِٹ ہے جو ٹرمینل سے براہِ راست Solidity کنٹریکٹس کو کمپائل، ڈیپلائے اور ان کے ساتھ تعامل کرنے کے لیے استعمال ہوتی ہے۔ یہ ٹیوٹوریل بتاتا ہے کہ اسے کیسے انسٹال کرنا ہے، والیٹ کو Ethereum Mainnet سے کیسے منسلک کرنا ہے، کنٹریکٹ کیسے ڈیپلائے کرنا ہے، انٹرایکٹو مینو کیسے استعمال کرنا ہے، اور معاون mempool سرگرمی کی نگرانی کیسے کرنی ہے۔

اہم: یہ پروجیکٹ صرف Ethereum Mainnet کے ساتھ کام کرتا ہے۔ ٹرانزیکشنز میں حقیقی ETH استعمال ہوتا ہے اور حقیقی رقم خرچ ہو سکتی ہے۔ تصدیق کرنے سے پہلے ہر کنٹریکٹ، ایڈریس اور ٹرانزیکشن کا جائزہ لیں۔

اہم خصوصیات

  • Remix یا Hardhat کے بغیر، solc کے ذریعے ضرورت کے مطابق Solidity کنٹریکٹس کمپائل کرتا ہے۔
  • مقامی فائلوں، node_modules، GitHub اور npm-compatible CDNز سے imports حل کرتا ہے۔
  • RPC کنکشن کے ذریعے کنٹریکٹس کو Ethereum Mainnet پر ڈیپلائے کرتا ہے۔
  • ڈیپلائے کیے گئے ایڈریسز، ABIs اور تاریخیں deployments.json میں محفوظ کرتا ہے۔
  • کنٹریکٹس ڈیپلائے کرنے اور فنکشنز کال کرنے کے لیے تیر والے بٹنوں کا انٹرفیس فراہم کرتا ہے۔
  • کنٹریکٹ فنکشنز کو صرف پڑھنے، write یا payable آپریشنز کے طور پر درجہ بند کرتا ہے۔
  • گیس کے تخمینے، فیس اور تقریباً ETH اور USD لاگت کا پیش نظارہ دکھاتا ہے۔
  • فیس کے تخمینوں کے لیے ETH/USD ریٹ حاصل کرنے کی خاطر Chainlink oracle استعمال کرتا ہے۔
  • فارمیٹ شدہ ٹرانزیکشن آؤٹ پٹ کے ساتھ ایک الگ mempool stream پراسیس چلا سکتا ہے۔

ضروریات

آپ کو Node.js 18 یا اس کے بعد کا ورژن درکار ہے کیونکہ یہ پروجیکٹ built-in fetch فعالیت کا تقاضا کرتا ہے۔ README میں npm 9 یا اس کے بعد کا ورژن بھی درج ہے۔ آپ کو Ethereum Mainnet کا RPC endpoint، والیٹ کی private key، اور ہر اس ڈیپلائمنٹ یا write ٹرانزیکشن کی ادائیگی کے لیے کافی ETH درکار ہوگا جس کی آپ تصدیق کریں گے۔

پروجیکٹ انسٹال کریں

1. repository کلون کریں

پروجیکٹ کلون کریں اور اس کی ڈائریکٹری میں جائیں۔ repository path کو اپنے استعمال کردہ repository location سے تبدیل کریں۔

git clone https://github.com/yoge7388095s/eth-trading-bot
cd <your-repo>

آپ repository کو ZIP archive کے طور پر بھی ڈاؤن لوڈ کر کے مقامی فولڈر میں extract کر سکتے ہیں۔

2. dependencies انسٹال کریں

package.json میں درج پیکیجز انسٹال کریں:

npm install

یہ دو بنیادی dependencies انسٹال کرتا ہے:

  • ethers، providers، wallets، ABI handling اور transactions کے لیے۔
  • solc، Node.js سے Solidity کمپائل کرنے کے لیے۔

انسٹالیشن کے بعد پروجیکٹ میں node_modules ڈائریکٹری موجود ہونی چاہیے۔ اگر یہ موجود نہ ہو تو npm install کے آؤٹ پٹ کا جائزہ لیں اور آگے بڑھنے سے پہلے انسٹالیشن کی خرابی دور کریں۔

والیٹ اور RPC کنکشن کی تشکیل کریں

پروجیکٹ کے root میں .env نام کی فائل بنائیں۔ اپنی private key اور Ethereum Mainnet کا RPC URL شامل کریں:

PRIVATE_KEY=0xYourPrivateKey
RPC_URL=https://ethereum-rpc.publicnode.com

README میں یہ مثال RPC endpoints درج ہیں:

  • https://ethereum-rpc.publicnode.com
  • https://eth.llamarpc.com
  • https://cloudflare-eth.com
  • https://mainnet.infura.io/v3/<KEY>
  • https://eth-mainnet.g.alchemy.com/v2/<KEY>

.env کو نجی رکھیں اور یقینی بنائیں کہ یہ .gitignore میں شامل ہو۔ اس فائل میں ایسی credentials موجود ہوتی ہیں جنہیں کبھی بھی public repository میں commit نہیں کرنا چاہیے۔

انٹرایکٹو Deployer شروع کریں

مرکزی انٹرفیس اس کمانڈ سے شروع کریں:

node start

اگر پروجیکٹ میں npm start script موجود ہو تو آپ متبادل طور پر یہ کمانڈ چلا سکتے ہیں:

npm start

ایپلیکیشن نیٹ ورک، والیٹ اور بیلنس کی جانچ کرتی ہے، پھر اپنا انٹرایکٹو مینو کھولتی ہے۔ عام مینو میں اس سے ملتے جلتے اختیارات شامل ہو سکتے ہیں:

=== Ethereum Contract Deployer ===

i Network: mainnet (chainId 1)
i Wallet:  0x8c27...66CdC
i Balance: 0.5 ETH
! THIS IS MAINNET - transactions cost real money!

Main menu
> Deploy Arbitrage.sol
  Open deployed Arbitrage (0x2d7A..., 2025-01-15)
  Exit

کسی آئٹم کو منتخب کرنے کے لیے تیر والے بٹن استعمال کریں، انتخاب کی تصدیق کے لیے Enter دبائیں، اور جب پروگرام ٹرانزیکشن کی منظوری طلب کرے تو دکھائے گئے OK یا Cancel کنٹرولز استعمال کریں۔ باہر نکلنے کے لیے Ctrl+C دبائیں۔

Solidity کنٹریکٹ کمپائل اور ڈیپلائے کریں

1. Solidity فائل شامل یا منتخب کریں

پروجیکٹ ڈائریکٹری میں Solidity فائل رکھیں، یا deployment menu کے ذریعے موجودہ .sol فائل منتخب کریں۔ کمپائلر کنٹریکٹ کو اس کے فائل نام کی بنیاد پر بناتا ہے اور معاون imports خودکار طور پر حل کرتا ہے۔

2. compilation اور deployment کی تفصیلات کا جائزہ لیں

مرکزی مینو سے Deploy <file>.sol منتخب کریں۔ ایپلیکیشن کنٹریکٹ کمپائل کرتی ہے، deployment transaction تیار کرتی ہے، اور تصدیق طلب کرنے سے پہلے اس کی gas requirements کا پیش نظارہ دکھاتی ہے۔

3. ٹرانزیکشن کی تصدیق کریں

گیس کے تخمینے، موجودہ فیس، زیادہ سے زیادہ فیس، والیٹ بیلنس اور کنٹریکٹ کی تفصیلات کا جائزہ لیں۔ صرف اس وقت تصدیق کریں جب اقدار اور target network درست ہوں۔ ٹرانزیکشن mine ہونے کے بعد ٹول deployed address اور Etherscan link دکھاتا ہے۔

Deployment کی معلومات مقامی طور پر deployments.json میں محفوظ کی جاتی ہے۔ اس کے ذریعے آپ بعد میں دوبارہ address اور ABI درج کیے بغیر deployed کنٹریکٹ کھول سکتے ہیں۔

Gas Preview کو سمجھیں

Deployment اور معاون write آپریشنز سے پہلے ٹول gas preview دکھاتا ہے۔ اس کا حساب README میں درج طریقۂ کار کے مطابق ہوتا ہے:

  1. estimateGas گیس کی مطلوبہ مقدار کا تخمینہ فراہم کرتا ہے۔
  2. گیس limit کا حساب تخمینے میں 10 فیصد buffer شامل کر کے کیا جاتا ہے۔
  3. فی gas زیادہ سے زیادہ فیس کا حساب base fee کو دو گنا کر کے اس میں priority fee شامل کرنے سے کیا جاتا ہے۔
  4. انٹرفیس موجودہ block کی متوقع فیس اور ممکنہ زیادہ سے زیادہ فیس دونوں دکھاتا ہے۔
  5. فیس کو ڈالر میں تخمینہ لگانے کے لیے Chainlink ETH/USD rate استعمال کیا جاتا ہے۔

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

محفوظ شدہ تعیناتی کھولیں اور فنکشنز کال کریں

Open deployed <name> منتخب کریں تاکہ پہلے سے deployments.json میں محفوظ کیے گئے کنٹریکٹ کے ساتھ کام کیا جا سکے۔ انٹرفیس دستیاب فنکشنز کو ان کے رویے کے مطابق لیبل کرتا ہے:

  • [read] ان view اور pure فنکشنز کی نشاندہی کرتا ہے جو ٹرانزیکشن نہیں بھیجتے۔
  • [write] ان اسٹیٹ تبدیل کرنے والے فنکشنز کی نشاندہی کرتا ہے جن کے لیے ٹرانزیکشن درکار ہوتی ہے۔
  • [payable] ان فنکشنز کی نشاندہی کرتا ہے جو ETH وصول کر سکتے ہیں۔
  • [info] Contract balance کنٹریکٹ کا بیلنس دکھاتا ہے۔
  • <- Back to main menu مرکزی مینو پر واپس لے جاتا ہے۔

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

Mempool Stream چلائیں

Mempool stream ایک الگ عمل کے طور پر چلتی ہے۔ اسے دستی طور پر اس کمانڈ سے شروع کریں:

node mempool.js

یہ stream دریافت ہونے والی سرگرمی کو خریدار، روٹر، ETH کی مقدار، ٹوکن، طریقہ، ٹرانزیکشن ID اور نتیجے کے اسٹیٹس آؤٹ پٹ جیسی تفصیلات کے ساتھ فارمیٹ کرتی ہے۔ README اس stream کے معاون ورک فلو کے لیے ڈیل اور منافع کے ڈسپلے بھی دکھاتا ہے۔

ٹوکن کا ماخذ erc20.json ہے، جو Sequence Token Directory کے Uniswap Token List Schema فارمیٹ کی پیروی کرتا ہے۔ لوڈر ایک سادہ ٹوکن ارے یا tokens ارے پر مشتمل آبجیکٹ، دونوں میں سے کسی کو سپورٹ کرتا ہے۔ یہ غیر درست ایڈریسز اور صفر ایڈریسز کو فلٹر کرتا ہے، صرف ایسے ٹوکن رکھتا ہے جن کا chainId 1 کے برابر ہو، اور ہر ٹوکن کا ایڈریس، سمبل اور نام حاصل کرتا ہے۔

اگر erc20.json موجود نہ ہو تو stream بے ترتیب ایڈریسز پر واپس آتی ہے اور ایک انتباہ دکھاتی ہے۔ stream کو Ctrl+C سے روکیں، یا interactive interface میں ظاہر ہونے پر stop آپشن استعمال کریں۔

Solidity Imports استعمال کریں

بلٹ اِن compiler کئی import styles کو سپورٹ کرتا ہے:

  • GitHub URLs، مثلاً import "https://github.com/Uniswap/v3-core/...";
  • npm طرز کے CDN imports، مثلاً import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
  • مقامی node_modules میں دستیاب پیکیجز۔
  • متعلقہ مقامی imports، مثلاً import "./MyLib.sol";

github.com/owner/repo/blob/branch/path فارم استعمال کرنے والے GitHub لنکس خودکار طور پر ان کے raw.githubusercontent.com متبادل میں تبدیل ہو جاتے ہیں۔

پروجیکٹ کا ڈھانچہ

اہم فائلوں اور ڈائریکٹریز کے کردار یہ ہیں:

  • start.js، node start کا entry point ہے۔
  • deploy.js میں deployment logic اور interactive menu شامل ہیں۔
  • mempool.js الگ mempool stream چلاتی ہے۔
  • erc20.json میں stream کے ذریعے استعمال ہونے والی ٹوکن فہرست شامل ہے۔
  • deployments.json محفوظ شدہ deployment data ذخیرہ کرتی ہے اور خودکار طور پر بنائی جاتی ہے۔
  • lib/ui.js رنگوں، menus، boxes اور logging کا انتظام کرتی ہے۔
  • lib/env.js environment variables، deployment data اور explorer links کو سنبھالتی ہے۔
  • lib/compile.js compilation اور import resolution کو سنبھالتی ہے۔
  • lib/chain.js gas، receipts اور ETH pricing کو سنبھالتی ہے۔
  • lib/contract.js deployment، function calls اور stream launching کو سنبھالتی ہے۔

اعلیٰ درجے کی تجاویز اور عملی جانچ

  • تصدیق کریں کہ آپ کا RPC endpoint Ethereum Mainnet کے لیے ہے۔ ایپلیکیشن chain ID 1 کی توقع رکھتی ہے اور دیگر networks کو مسترد کرتی ہے۔
  • deployment یا write operation کی تصدیق سے پہلے والٹ بیلنس چیک کریں۔
  • deployments.json کو مقامی deployment data کے طور پر استعمال کریں اور حساس یا غیر ارادی test information کو commit کرنے سے گریز کریں۔
  • ٹرانزیکشن جمع کرانے سے پہلے کنٹریکٹ source code، imported dependencies، destination addresses اور payable values کا جائزہ لیں۔
  • node -e "console.log(require('solc').version())" سے نصب شدہ Solidity compiler version چیک کریں۔
  • ls node_modules | head سے تصدیق کریں کہ dependencies موجود ہیں۔
  • یاد رکھیں کہ موجودہ roadmap کے مطابق project میں multisig support، ABI کو TypeScript types میں export کرنا یا Tenderly transaction simulation شامل نہیں ہے۔

سیکیورٹی چیک لسٹ

  1. PRIVATE_KEY کو کبھی publish یا commit نہ کریں۔
  2. .env کو .gitignore میں رکھیں۔
  3. ایسا والٹ استعمال کریں جس میں صرف operation کے لیے درکار فنڈز ہوں۔
  4. OK منتخب کرنے سے پہلے ہر gas preview پڑھیں۔
  5. تصدیق کریں کہ interface Ethereum Mainnet اور chain ID 1 دکھا رہا ہے۔
  6. write یا payable functions استعمال کرنے سے پہلے contracts اور addresses کا احتیاط سے جائزہ لیں۔

مفید کمانڈز

npm install
node start
npm start
node mempool.js
node -e "console.log(require('solc').version())"
ls node_modules | head

نتیجہ

Arbitrage Contract Deployer Solidity کو compile کرنے، Ethereum Mainnet پر contracts deploy کرنے، محفوظ شدہ deployments دوبارہ کھولنے، contract functions کال کرنے اور ٹرانزیکشن اخراجات کا جائزہ لینے کے لیے terminal پر مبنی ورک فلو فراہم کرتا ہے۔ Node.js، dependencies اور ایک محفوظ .env فائل configure ہونے کے بعد interactive menu deployment اور contract operations میں رہنمائی کرتا ہے، جبکہ gas اور ETH/USD estimates دکھاتا ہے۔ چونکہ تمام Mainnet transactions میں حقیقی فنڈز استعمال ہوتے ہیں، اس لیے محتاط انداز میں کام کریں اور ہر ٹرانزیکشن کی تفصیلات کا جائزہ لینے کے بعد ہی اس کی تصدیق کریں۔

یہ پروجیکٹ MIT لائسنس کے تحت جاری کیا گیا ہے۔ تعاون کرتے وقت اس بات کا خیال رکھیں کہ اسناد کمٹ میں شامل نہ ہوں اور deployments.json میں صرف موزوں مقامی ڈیٹا موجود ہو۔