
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,
solcyordamida 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.jsonfaylida 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 installBu 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.comREADME faylida quyidagi namunaviy RPC endpoint'lar keltirilgan:
https://ethereum-rpc.publicnode.comhttps://eth.llamarpc.comhttps://cloudflare-eth.comhttps://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 startAgar loyiha npm start skriptini belgilagan bo‘lsa, muqobil ravishda quyidagini ishga tushirishingiz mumkin:
npm startIlova 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)
ExitElementni 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:
estimateGastaxminiy gas talabini taqdim etadi.- Gas limiti taxminiy qiymatga 10 foizlik zaxira qo‘shish orqali hisoblanadi.
- Gas uchun maksimal komissiya bazaviy komissiyaning ikki baravari va ustuvor komissiya yig‘indisi sifatida hisoblanadi.
- Interfeys joriy blok uchun kutilayotgan komissiya va mumkin bo‘lgan maksimal komissiyani ko‘rsatadi.
- 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 yubormaydiganviewvapurefunksiyalarni bildiradi.[write]tranzaksiyani talab qiladigan, holatni o‘zgartiruvchi funksiyalarni bildiradi.[payable]ETH qabul qila oladigan funksiyalarni bildiradi.[info] Contract balancekontrakt balansini ko‘rsatadi.<- Back to main menuasosiy 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.jsOqim 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_moduleskatalogida 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.jsnode startbuyrug‘i uchun kirish nuqtasidir.deploy.jsdeploy mantiqi va interaktiv menyuni o‘z ichiga oladi.mempool.jsalohida mempool oqimini ishga tushiradi.erc20.jsonoqim foydalanadigan tokenlar ro‘yxatini o‘z ichiga oladi.deployments.jsonsaqlangan deploy ma’lumotlarini saqlaydi va avtomatik yaratiladi.lib/ui.jsranglar, menyular, bloklar va loglarni boshqaradi.lib/env.jsmuhit o‘zgaruvchilari, deploy ma’lumotlari va explorer havolalarini boshqaradi.lib/compile.jskompilyatsiya va importlarni aniqlash bilan shug‘ullanadi.lib/chain.jsgaz, kvitansiyalar va ETH narxlarini boshqaradi.lib/contract.jsdeploy, funksiya chaqiruvlari va oqimni ishga tushirishni boshqaradi.
Ilg‘or maslahatlar va operatsion tekshiruvlar
- RPC endpointingiz Ethereum Mainnet uchun ekanini tasdiqlang. Ilova chain ID
1ni kutadi va boshqa tarmoqlarni rad etadi. - Deploy yoki yozish amalini tasdiqlashdan oldin hamyon balansini tekshiring.
deployments.jsondan 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 | headbuyrug‘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
PRIVATE_KEYni hech qachon e’lon qilmang yoki commit qilmang..envfaylini.gitignoreichida saqlang.- Faqat operatsiya uchun zarur mablag‘ga ega hamyondan foydalaning.
- OK ni tanlashdan oldin har bir gaz ko‘rib chiqilishini o‘qing.
- Interfeys Ethereum Mainnet va chain ID
1ni ko‘rsatayotganini tekshiring. - 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 | headXulosa
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.
