Asosiy kontentga o‘tish
AI qo‘llanmalari

Arbitrage Contract Deployer yordamida Solidity shartnomalarini terminaldan joylashtirish va boshqarish

Arbitrage Contract Deployer dasturini o‘rnatish va sozlash, Solidity fayllarini kompilyatsiya qilish, shartnomalarni Ethereum Mainnet tarmog‘iga joylashtirish, o‘qish va yozish funksiyalarini chaqirish, gaz xarajatlarini ko‘rib chiqish, saqlangan joylashtirishlarni boshqarish va mempool oqimini ishga tushirishni o‘rganing.

Arbitrage Contract Deployer yordamida Solidity shartnomalarini terminaldan joylashtirish va boshqarish

Siz nimalarni o‘rganasiz

Arbitrage Contract Deployer — Solidity kontraktlarini to‘g‘ridan-to‘g‘ri terminaldan kompilyatsiya qilish, joylashtirish va ular bilan ishlash uchun mo‘ljallangan Node.js buyruq qatori vositalari to‘plamidir. Ushbu qo‘llanmada uni o‘rnatish, hamyonni Ethereum Mainnet tarmog‘iga ulash, kontraktni joylashtirish, interaktiv menyudan foydalanish va qo‘llab-quvvatlanadigan mempool faolligini kuzatish tushuntiriladi.

Muhim: Ushbu loyiha faqat Ethereum Mainnet bilan ishlaydi. Tranzaksiyalarda haqiqiy ETH ishlatiladi va ular haqiqiy xarajatlarga olib kelishi mumkin. Tasdiqlashdan oldin har bir kontrakt, manzil va tranzaksiyani tekshiring.

Asosiy imkoniyatlar

  • Remix yoki Hardhat'siz, solc yordamida Solidity kontraktlarini talab bo‘yicha kompilyatsiya qiladi.
  • Mahalliy fayllar, node_modules, GitHub va npm bilan mos CDN'lardan importlarni hal qiladi.
  • RPC ulanishi orqali kontraktlarni Ethereum Mainnet'ga joylashtiradi.
  • Joylashtirilgan manzillar, ABI'lar va sanalarni deployments.json faylida saqlaydi.
  • Kontraktlarni joylashtirish va funksiyalarni chaqirish uchun strelka tugmalaridan foydalaniladigan interfeysni taqdim etadi.
  • Kontrakt funksiyalarini faqat o‘qish, yozish yoki to‘lovli amallar sifatida tasniflaydi.
  • Gas taxminlari, komissiyalar hamda taxminiy ETH va USD xarajatlarini ko‘rsatadi.
  • Komissiya taxminlari uchun ETH/USD kursini olishda Chainlink oracle'dan foydalanadi.
  • Formatlangan tranzaksiya chiqishiga ega alohida mempool oqimi jarayonini ishga tushirishi mumkin.

Talablar

Sizga Node.js 18 yoki undan yangiroq versiya kerak, chunki loyiha o‘rnatilgan fetch funksiyasini talab qiladi. README faylida npm 9 yoki undan yangiroq versiya ham ko‘rsatilgan. Sizga Ethereum Mainnet RPC endpoint'i, hamyonning maxfiy kaliti va tasdiqlaydigan joylashtirish yoki yozish tranzaksiyalari uchun yetarli ETH kerak bo‘ladi.

Loyihani o‘rnatish

1. Repozitoriyni klonlang

Loyihani klonlang va uning katalogiga o‘ting. Repozitoriy yo‘lini foydalanayotgan repozitoriy manzili bilan almashtiring.

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

Shuningdek, repozitoriyni ZIP arxivi sifatida yuklab olib, mahalliy jildga chiqarishingiz mumkin.

2. Bog‘liqliklarni o‘rnating

package.json faylida e’lon qilingan paketlarni o‘rnating:

npm install

Bu ikkita asosiy bog‘liqlikni o‘rnatadi:

  • Provider'lar, hamyonlar, ABI bilan ishlash va tranzaksiyalar uchun ethers.
  • Node.js orqali Solidity'ni kompilyatsiya qilish uchun solc.

O‘rnatishdan so‘ng loyiha tarkibida node_modules katalogi bo‘lishi kerak. Agar u mavjud bo‘lmasa, npm install chiqishini tekshiring va davom etishdan oldin o‘rnatish xatosini bartaraf qiling.

Hamyon va RPC ulanishini sozlash

Loyiha ildizida .env nomli fayl yarating. Unga maxfiy kalitingiz va Ethereum Mainnet RPC URL manzilini qo‘shing:

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

README faylida quyidagi namunaviy RPC endpoint'lar keltirilgan:

  • 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 faylini maxfiy saqlang va u .gitignore fayliga kiritilganiga ishonch hosil qiling. Faylda umumiy repozitoriyga hech qachon yuborilmasligi kerak bo‘lgan hisob ma’lumotlari mavjud.

Interaktiv deployer'ni ishga tushirish

Asosiy interfeysni quyidagi buyruq bilan ishga tushiring:

node start

Agar loyiha npm start skriptini belgilagan bo‘lsa, muqobil ravishda quyidagini ishga tushirishingiz mumkin:

npm start

Ilova tarmoq, hamyon va balansni tekshiradi, so‘ng interaktiv menyuni ochadi. Odatdagi menyuda quyidagiga o‘xshash variantlar bo‘ladi:

=== 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

Elementni tanlash uchun strelka tugmalaridan foydalaning, tanlovni tasdiqlash uchun Enter tugmasini bosing va dastur tranzaksiyani tasdiqlashni so‘raganda ko‘rsatilgan OK yoki Cancel boshqaruvlaridan foydalaning. Chiqish uchun Ctrl+C tugmalarini bosing.

Solidity kontraktini kompilyatsiya qilish va joylashtirish

1. Solidity faylini qo‘shing yoki tanlang

Solidity faylini loyiha katalogiga joylashtiring yoki joylashtirish menyusi orqali mavjud .sol faylini tanlang. Kompilyator kontraktni fayl nomi asosida tuzadi va qo‘llab-quvvatlanadigan importlarni avtomatik hal qiladi.

2. Kompilyatsiya va joylashtirish tafsilotlarini tekshiring

Asosiy menyudan Deploy <file>.sol bandini tanlang. Ilova kontraktni kompilyatsiya qiladi, joylashtirish tranzaksiyasini tayyorlaydi va tasdiqlashni so‘rashdan oldin uning gas talablarini ko‘rsatadi.

3. Tranzaksiyani tasdiqlang

Gas taxmini, joriy komissiya, maksimal komissiya, hamyon balansi va kontrakt tafsilotlarini tekshiring. Qiymatlar va maqsadli tarmoq to‘g‘ri bo‘lgandagina tasdiqlang. Tranzaksiya mayning qilingandan so‘ng vosita joylashtirilgan manzil va Etherscan havolasini ko‘rsatadi.

Joylashtirish ma’lumotlari mahalliy deployments.json faylida saqlanadi. Bu manzil va ABI'ni qayta kiritmasdan, keyinroq joylashtirilgan kontraktni qayta ochish imkonini beradi.

Gas ko‘rinishini tushunish

Joylashtirish va qo‘llab-quvvatlanadigan yozish amallaridan oldin vosita gas ko‘rinishini taqdim etadi. Uning hisob-kitobi README faylida hujjatlashtirilgan jarayonga asoslanadi:

  1. estimateGas taxminiy gas talabini taqdim etadi.
  2. Gas limiti taxminiy qiymatga 10 foizlik zaxira qo‘shish orqali hisoblanadi.
  3. Gas uchun maksimal komissiya bazaviy komissiyaning ikki baravari va ustuvor komissiya yig‘indisi sifatida hisoblanadi.
  4. Interfeys joriy blok uchun kutilayotgan komissiya va mumkin bo‘lgan maksimal komissiyani ko‘rsatadi.
  5. Komissiyani dollarda baholash uchun Chainlink ETH/USD kursidan foydalaniladi.

Ko‘rib chiqish taxminiy gaz birliklari, gaz limiti, bazaviy komissiya, ustuvor komissiya, gaz uchun maksimal komissiya, kutilayotgan ETH xarajati, maksimal ETH xarajati va hamyon balansini o‘z ichiga olishi mumkin. Maksimal komissiyani yuqori chegaradagi taxmin sifatida ko‘ring va balansingiz tranzaksiyani qoplashga yetishini tasdiqlang.

Saqlangan deployni ochish va funksiyalarni chaqirish

Open deployed <name> bandini tanlab, avval deployments.json faylida saqlangan kontrakt bilan ishlang. Interfeys mavjud funksiyalarni ularning xatti-harakatiga ko‘ra belgilaydi:

  • [read] tranzaksiya yubormaydigan view va pure funksiyalarni bildiradi.
  • [write] tranzaksiyani talab qiladigan, holatni o‘zgartiruvchi funksiyalarni bildiradi.
  • [payable] ETH qabul qila oladigan funksiyalarni bildiradi.
  • [info] Contract balance kontrakt balansini ko‘rsatadi.
  • <- Back to main menu asosiy menyuga qaytaradi.

Faqat o‘qish uchun mo‘ljallangan chaqiruvlardan kontrakt holatini tekshirishda foydalanish mumkin. Yozish va to‘lovli chaqiruvlar gazni oldindan ko‘rib chiqish bosqichidan o‘tadi hamda tranzaksiya yuborilishidan oldin tasdiqlashni talab qiladi. Interfeysda operatsiyani yuborish o‘rniga bekor qilish imkonini beruvchi OK amali ham mavjud.

Mempool oqimini ishga tushirish

Mempool oqimi alohida jarayon sifatida ishlaydi. Uni quyidagi buyruq bilan qo‘lda ishga tushiring:

node mempool.js

Oqim aniqlangan faollikni xaridor, router, ETH miqdori, token, metod, tranzaksiya IDsi va natijaviy holat kabi tafsilotlar bilan formatlaydi. README faylida oqim qo‘llab-quvvatlaydigan ish jarayoni uchun bitim va foyda ko‘rsatkichlari ham keltirilgan.

Tokenlar manbasi erc20.json bo‘lib, u Sequence Token Directory xizmatidagi Uniswap Token List Schema formatiga amal qiladi. Yuklagich oddiy tokenlar massivi yoki tokens massivini o‘z ichiga olgan obyektni qo‘llab-quvvatlaydi. U yaroqsiz va nol manzillarni filtrlab tashlaydi, chainId qiymati 1 ga teng tokenlarni saqlab qoladi hamda har bir tokenning manzili, belgisi va nomini ajratib oladi.

Agar erc20.json mavjud bo‘lmasa, oqim tasodifiy manzillarga o‘tadi va ogohlantirishni ko‘rsatadi. Oqimni Ctrl+C bilan to‘xtating yoki interaktiv interfeysda paydo bo‘lganda to‘xtatish opsiyasidan foydalaning.

Solidity importlaridan foydalanish

O‘rnatilgan kompilyator bir nechta import uslubini qo‘llab-quvvatlaydi:

  • GitHub URL manzillari, masalan import "https://github.com/Uniswap/v3-core/...";
  • npm uslubidagi CDN importlari, masalan import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
  • Mahalliy node_modules katalogida mavjud paketlar.
  • Nisbiy mahalliy importlar, masalan import "./MyLib.sol";

github.com/owner/repo/blob/branch/path shaklidagi GitHub havolalari avtomatik ravishda raw.githubusercontent.com ekvivalentiga aylantiriladi.

Loyiha tuzilmasi

Asosiy fayl va kataloglarning vazifalari quyidagicha:

  • start.js node start buyrug‘i uchun kirish nuqtasidir.
  • deploy.js deploy mantiqi va interaktiv menyuni o‘z ichiga oladi.
  • mempool.js alohida mempool oqimini ishga tushiradi.
  • erc20.json oqim foydalanadigan tokenlar ro‘yxatini o‘z ichiga oladi.
  • deployments.json saqlangan deploy ma’lumotlarini saqlaydi va avtomatik yaratiladi.
  • lib/ui.js ranglar, menyular, bloklar va loglarni boshqaradi.
  • lib/env.js muhit o‘zgaruvchilari, deploy ma’lumotlari va explorer havolalarini boshqaradi.
  • lib/compile.js kompilyatsiya va importlarni aniqlash bilan shug‘ullanadi.
  • lib/chain.js gaz, kvitansiyalar va ETH narxlarini boshqaradi.
  • lib/contract.js deploy, funksiya chaqiruvlari va oqimni ishga tushirishni boshqaradi.

Ilg‘or maslahatlar va operatsion tekshiruvlar

  • RPC endpointingiz Ethereum Mainnet uchun ekanini tasdiqlang. Ilova chain ID 1 ni kutadi va boshqa tarmoqlarni rad etadi.
  • Deploy yoki yozish amalini tasdiqlashdan oldin hamyon balansini tekshiring.
  • deployments.json dan mahalliy deploy ma’lumotlari sifatida foydalaning va maxfiy yoki kutilmagan test ma’lumotlarini commit qilishdan saqlaning.
  • Tranzaksiyalarni yuborishdan oldin kontrakt manba kodini, import qilingan bog‘liqliklarni, qabul qiluvchi manzillarni va to‘lovli qiymatlarni tekshiring.
  • O‘rnatilgan Solidity kompilyatori versiyasini node -e "console.log(require('solc').version())" buyrug‘i bilan tekshiring.
  • Bog‘liqliklar mavjudligini ls node_modules | head buyrug‘i bilan tasdiqlang.
  • Loyihaning joriy yo‘l xaritasiga ko‘ra, u multisig qo‘llab-quvvatlashi, ABI ni TypeScript turlariga eksport qilish yoki Tenderly tranzaksiya simulyatsiyasini taqdim etmasligini yodda tuting.

Xavfsizlik ro‘yxati

  1. PRIVATE_KEY ni hech qachon e’lon qilmang yoki commit qilmang.
  2. .env faylini .gitignore ichida saqlang.
  3. Faqat operatsiya uchun zarur mablag‘ga ega hamyondan foydalaning.
  4. OK ni tanlashdan oldin har bir gaz ko‘rib chiqilishini o‘qing.
  5. Interfeys Ethereum Mainnet va chain ID 1 ni ko‘rsatayotganini tekshiring.
  6. Yozish yoki to‘lovli funksiyalardan foydalanishdan oldin kontraktlar va manzillarni sinchiklab tekshiring.

Foydali buyruqlar

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

Xulosa

Arbitrage Contract Deployer Solidity kodini kompilyatsiya qilish, kontraktlarni Ethereum Mainnet tarmog‘iga deploy qilish, saqlangan deploylarni qayta ochish, kontrakt funksiyalarini chaqirish va tranzaksiya xarajatlarini ko‘rib chiqish uchun terminalga asoslangan ish jarayonini taqdim etadi. Node.js, bog‘liqliklar va xavfsiz .env fayli sozlangach, interaktiv menyu gaz hamda ETH/USD hisob-kitoblarini ko‘rsatgan holda deploy va kontrakt operatsiyalarini boshqaradi. Barcha Mainnet tranzaksiyalarida haqiqiy mablag‘lar ishlatilgani sababli ehtiyotkorlik bilan ish tuting va har bir tranzaksiyani faqat tafsilotlarini ko‘rib chiqqaningizdan keyin tasdiqlang.

Loyiha MIT litsenziyasi ostida chiqarilgan. Hissalar kiritishda hisob ma’lumotlarini kommitlarga qo‘shmaslik va deployments.json faylida faqat tegishli mahalliy ma’lumotlar bo‘lishini ta’minlash kerak.