
Utakachojifunza
Arbitrage Contract Deployer ni zana ya mstari wa amri ya Node.js ya kukompile, kupeleka, na kuingiliana na mikataba ya Solidity moja kwa moja kutoka kwenye terminal. Mafunzo haya yanaeleza jinsi ya kuisakinisha, kuunganisha pochi kwenye Ethereum Mainnet, kupeleka mkataba, kutumia menyu shirikishi, na kufuatilia shughuli zinazoungwa mkono za mempool.
Muhimu: Mradi huu unafanya kazi tu na Ethereum Mainnet. Miamala hutumia ETH halisi na inaweza kugharimu pesa halisi. Kagua kila mkataba, anwani, na muamala kabla ya kuuthibitisha.
Vipengele Muhimu
- Hukompile mikataba ya Solidity inapohitajika kwa kutumia
solc, bila Remix au Hardhat. - Hutatua imports kutoka kwenye faili za ndani,
node_modules, GitHub, na CDN zinazooana na npm. - Hupeleka mikataba kwenye Ethereum Mainnet kupitia muunganisho wa RPC.
- Huhifadhi anwani za mikataba iliyowasilishwa, ABIs, na tarehe katika
deployments.json. - Hutoa kiolesura cha vitufe vya mishale kwa ajili ya kupeleka mikataba na kuita vitendaji.
- Huainisha vitendaji vya mkataba kuwa vya kusoma pekee, vya kuandika, au vya kulipwa.
- Huonyesha awali makadirio ya gesi, ada, na gharama za takriban za ETH na USD.
- Hutumia oracle ya Chainlink kupata kiwango cha ETH/USD kwa makadirio ya ada.
- Inaweza kuendesha mchakato tofauti wa mtiririko wa mempool wenye matokeo ya miamala yaliyopangiliwa.
Mahitaji ya Awali
Unahitaji Node.js 18 au mpya zaidi kwa sababu mradi unahitaji utendaji wa fetch uliojengewa ndani. README pia inaorodhesha npm 9 au mpya zaidi. Utahitaji endpoint ya RPC ya Ethereum Mainnet, ufunguo wa siri wa pochi, na ETH ya kutosha kulipia uwasilishaji au muamala wowote wa kuandika utakaothibitisha.
Sakinisha Mradi
1. Nakili hazina
nakili mradi na uingie kwenye saraka yake. Badilisha njia ya hazina kwa eneo la hazina unalotumia.
git clone https://github.com/yoge7388095s/eth-trading-bot
cd <your-repo>Unaweza pia kupakua hazina kama kumbukumbu ya ZIP na kuifungua kwenye folda ya ndani.
2. Sakinisha vitegemezi
Sakinisha vifurushi vilivyotajwa kwenye package.json:
npm installHii husakinisha vitegemezi viwili vya msingi:
etherskwa providers, pochi, ushughulikiaji wa ABI, na miamala.solckwa ajili ya kukompile Solidity kutoka Node.js.
Baada ya usakinishaji, mradi unapaswa kuwa na saraka ya node_modules. Ikiwa haipo, kagua matokeo kutoka npm install na tatua hitilafu ya usakinishaji kabla ya kuendelea.
Sanidi Pochi na Muunganisho wa RPC
Unda faili linaloitwa .env kwenye mzizi wa mradi. Ongeza ufunguo wako wa siri na URL ya RPC ya Ethereum Mainnet:
PRIVATE_KEY=0xYourPrivateKey
RPC_URL=https://ethereum-rpc.publicnode.comREADME inaorodhesha endpoint hizi za mfano za RPC:
https://ethereum-rpc.publicnode.comhttps://eth.llamarpc.comhttps://cloudflare-eth.comhttps://mainnet.infura.io/v3/<KEY>https://eth-mainnet.g.alchemy.com/v2/<KEY>
Weka .env kuwa ya siri na uhakikishe imejumuishwa kwenye .gitignore. Faili hili lina vitambulisho ambavyo havipaswi kamwe kuwasilishwa kwenye hazina ya umma.
Anzisha Kipelekaji Shirikishi
Anzisha kiolesura kikuu kwa:
node startIkiwa mradi umefafanua script ya npm ya kuanzisha, unaweza pia kuendesha:
npm startProgramu hukagua mtandao, pochi, na salio, kisha hufungua menyu yake shirikishi. Menyu ya kawaida inaweza kuwa na chaguo zinazofanana na hizi:
=== 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)
ExitTumia vitufe vya mishale kuchagua kipengee, bonyeza Enter kuthibitisha uteuzi, na utumie vidhibiti vya OK au Cancel vinavyoonyeshwa programu inapoomba idhini ya muamala. Bonyeza Ctrl+C ili kutoka.
Kompile na Peleka Mkataba wa Solidity
1. Ongeza au chagua faili la Solidity
Weka faili la Solidity kwenye saraka ya mradi, au chagua faili la .sol lililopo kupitia menyu ya uwasilishaji. Kikusanyaji hujenga mkataba kulingana na jina la faili na kutatua imports zinazoungwa mkono kiotomatiki.
2. Kagua maelezo ya ukompile na uwasilishaji
Chagua Deploy <file>.sol kutoka kwenye menyu kuu. Programu hukompile mkataba, huandaa muamala wa uwasilishaji, na huonyesha awali mahitaji yake ya gesi kabla ya kuomba uthibitisho.
3. Thibitisha muamala
Kagua makadirio ya gesi, ada ya sasa, ada ya juu zaidi, salio la pochi, na maelezo ya mkataba. Thibitisha tu wakati thamani na mtandao lengwa viko sahihi. Baada ya muamala kuchimbwa, zana huonyesha anwani ya mkataba uliowasilishwa na kiungo cha Etherscan.
Maelezo ya uwasilishaji huhifadhiwa ndani ya deployments.json. Hii hukuwezesha kufungua tena mkataba uliowasilishwa baadaye bila kuingiza anwani na ABI yake tena.
Elewa Mwonekano wa Gesi
Kabla ya uwasilishaji na shughuli za kuandika zinazoungwa mkono, zana huonyesha makadirio ya gesi. Hesabu yake hufuata mchakato ulioandikwa kwenye README:
estimateGashutoa mahitaji ya gesi yaliyokadiriwa.- Kikomo cha gesi hukokotolewa kama makadirio pamoja na ongezeko la asilimia 10.
- Ada ya juu zaidi kwa kila gesi hukokotolewa kuwa mara mbili ya ada ya msingi pamoja na ada ya kipaumbele.
- Kiolesura huonyesha ada inayotarajiwa ya bloku ya sasa na ada ya juu zaidi inayowezekana.
- Kiwango cha Chainlink ETH/USD hutumika kukadiria ada kwa dola.
Onyesho la awali linaweza kujumuisha thamani kama vile vitengo vya gesi vinavyokadiriwa, kikomo cha gesi, ada ya msingi, ada ya kipaumbele, ada ya juu zaidi kwa kila gesi, gharama inayotarajiwa ya ETH, gharama ya juu zaidi ya ETH, na salio la pochi. Chukulia ada ya juu zaidi kama makadirio ya juu na uthibitishe kuwa salio lako linaweza kugharamia muamala.
Fungua Deployment Iliyohifadhiwa na Uite Kazi
Chagua Open deployed <name> ili kufanya kazi na mkataba uliowahi kuhifadhiwa katika deployments.json. Kiolesura huweka lebo kwa kazi zinazopatikana kulingana na tabia zake:
[read]hutambulisha kazi zaviewnapureambazo hazitumii miamala.[write]hutambulisha kazi zinazobadilisha hali na zinazohitaji muamala.[payable]hutambulisha kazi zinazoweza kupokea ETH.[info] Contract balancehuonyesha salio la mkataba.<- Back to main menuhurudi kwenye menyu kuu.
Miito ya kusoma pekee inaweza kutumika kukagua hali ya mkataba. Miito ya kuandika na inayoweza kulipwa hupitia onyesho la awali la gesi na huhitaji uthibitisho kabla ya muamala kutumwa. Kiolesura pia hutoa kitendo cha OK ili uweze kughairi badala ya kuwasilisha operesheni.
Endesha Mfululizo wa Mempool
Mfululizo wa mempool huendeshwa kama mchakato tofauti. Uanzishe wewe mwenyewe kwa:
node mempool.jsMfululizo huu hupanga shughuli zilizogunduliwa kwa maelezo kama vile mnunuzi, router, kiasi cha ETH, tokeni, mbinu, kitambulisho cha muamala, na hali inayotokana. README pia huonyesha maonyesho ya miamala na faida kwa mtiririko wa kazi unaoungwa mkono na mfululizo huu.
Chanzo cha tokeni ni erc20.json, kinachofuata muundo wa Uniswap Token List Schema kutoka Sequence Token Directory. Kipakiaji kinaunga mkono safu tupu ya tokeni au kitu chenye safu ya tokens. Huchuja anwani batili na anwani sifuri, huhifadhi tokeni zenye chainId sawa na 1, na hutoa anwani, ishara, na jina la kila tokeni.
Kama erc20.json haipo, mfululizo hurudi kwenye anwani za nasibu na kuonyesha onyo. Simamisha mfululizo kwa Ctrl+C, au tumia chaguo la kusimamisha linapoonekana katika kiolesura shirikishi.
Tumia Uagizaji wa Solidity
Kikusanyaji kilichojengewa ndani kinaunga mkono mitindo kadhaa ya uagizaji:
- URL za GitHub, kama vile
import "https://github.com/Uniswap/v3-core/..."; - Uagizaji wa CDN wa mtindo wa npm, kama vile
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; - Vifurushi vinavyopatikana katika
node_modulesya ndani. - Uagizaji wa ndani unaohusiana, kama vile
import "./MyLib.sol";
Viungo vya GitHub vinavyotumia muundo wa github.com/owner/repo/blob/branch/path hubadilishwa kiotomatiki kuwa sawa na raw.githubusercontent.com.
Muundo wa Mradi
Faili na saraka kuu zina majukumu haya:
start.jsni sehemu ya kuanzia yanode start.deploy.jsina mantiki ya deployment na menyu shirikishi.mempool.jshuendesha mfululizo tofauti wa mempool.erc20.jsonina orodha ya tokeni inayotumiwa na mfululizo.deployments.jsonhuhifadhi data ya deployment iliyohifadhiwa na huundwa kiotomatiki.lib/ui.jshudhibiti rangi, menyu, visanduku, na ukataji wa kumbukumbu.lib/env.jshushughulikia vigezo vya mazingira, data ya deployment, na viungo vya explorer.lib/compile.jshushughulikia ukusanyaji na utatuzi wa uagizaji.lib/chain.jshushughulikia gesi, risiti, na bei ya ETH.lib/contract.jshushughulikia deployment, miito ya kazi, na uanzishaji wa mfululizo.
Vidokezo vya Kina na Ukaguzi wa Uendeshaji
- Thibitisha kuwa mwisho wako wa RPC ni wa Ethereum Mainnet. Programu inatarajia kitambulisho cha mtandao
1na inakataa mitandao mingine. - Kagua salio la pochi kabla ya kuthibitisha deployment au operesheni ya kuandika.
- Tumia
deployments.jsonkama data ya ndani ya deployment na epuka kuweka taarifa nyeti au zisizokusudiwa za majaribio kwenye mfumo wa kudhibiti matoleo. - Kagua msimbo wa chanzo wa mkataba, vitegemezi vilivyoagizwa, anwani lengwa, na thamani zinazoweza kulipwa kabla ya kuwasilisha miamala.
- Kagua toleo la mkusanyaji wa Solidity lililosakinishwa kwa
node -e "console.log(require('solc').version())". - Thibitisha kuwa vitegemezi vipo kwa
ls node_modules | head. - Kumbuka kuwa mradi hautoi usaidizi wa multisig, uhamishaji wa ABI kuwa aina za TypeScript, au uigaji wa miamala wa Tenderly kulingana na ramani yake ya sasa.
Orodha ya Ukaguzi wa Usalama
- Usichapishe au kuweka
PRIVATE_KEYkwenye mfumo wa kudhibiti matoleo. - Weka
.envkatika.gitignore. - Tumia pochi yenye fedha zinazohitajika tu kwa operesheni.
- Soma kila onyesho la awali la gesi kabla ya kuchagua OK.
- Thibitisha kuwa kiolesura kinaripoti Ethereum Mainnet na kitambulisho cha mtandao
1. - Kagua mikataba na anwani kwa uangalifu kabla ya kutumia kazi za kuandika au zinazoweza kulipwa.
Amri Muhimu
npm install
node start
npm start
node mempool.js
node -e "console.log(require('solc').version())"
ls node_modules | headHitimisho
Arbitrage Contract Deployer hutoa mtiririko wa kazi wa kwenye terminal wa kukusanya Solidity, kupeleka mikataba kwenye Ethereum Mainnet, kufungua tena deployments zilizohifadhiwa, kuita kazi za mikataba, na kukagua gharama za miamala. Baada ya Node.js, vitegemezi, na faili salama ya .env kusanidiwa, menyu shirikishi huongoza deployment na operesheni za mikataba huku ikionyesha makadirio ya gesi na ETH/USD. Kwa kuwa miamala yote ya Mainnet hutumia fedha halisi, fanya kazi kwa tahadhari na uthibitishe kila muamala tu baada ya kukagua maelezo yake.
Mradi umetolewa chini ya leseni ya MIT. Michango inapaswa kuhakikisha kuwa vitambulisho vya siri haviwekwi kwenye commits na kwamba deployments.json ina data inayofaa ya ndani pekee.
