Ruka hadi maudhui makuu
Mafunzo ya AI

Sambaza na Dhibiti Mikataba ya Solidity Kutoka kwenye Terminal Yako kwa Arbitrage Contract Deployer

Jifunze jinsi ya kusakinisha na kusanidi Arbitrage Contract Deployer, kukompili faili za Solidity, kusambaza mikataba kwenye Ethereum Mainnet, kuita vitendaji vya kusoma na kuandika, kukagua gharama za gesi, kudhibiti usambazaji uliohifadhiwa, na kuendesha mtiririko wa mempool.

Sambaza na Dhibiti Mikataba ya Solidity Kutoka kwenye Terminal Yako kwa Arbitrage Contract Deployer

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 install

Hii husakinisha vitegemezi viwili vya msingi:

  • ethers kwa providers, pochi, ushughulikiaji wa ABI, na miamala.
  • solc kwa 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.com

README inaorodhesha endpoint hizi za mfano za RPC:

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

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 start

Ikiwa mradi umefafanua script ya npm ya kuanzisha, unaweza pia kuendesha:

npm start

Programu 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)
  Exit

Tumia 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:

  1. estimateGas hutoa mahitaji ya gesi yaliyokadiriwa.
  2. Kikomo cha gesi hukokotolewa kama makadirio pamoja na ongezeko la asilimia 10.
  3. Ada ya juu zaidi kwa kila gesi hukokotolewa kuwa mara mbili ya ada ya msingi pamoja na ada ya kipaumbele.
  4. Kiolesura huonyesha ada inayotarajiwa ya bloku ya sasa na ada ya juu zaidi inayowezekana.
  5. 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 za view na pure ambazo hazitumii miamala.
  • [write] hutambulisha kazi zinazobadilisha hali na zinazohitaji muamala.
  • [payable] hutambulisha kazi zinazoweza kupokea ETH.
  • [info] Contract balance huonyesha salio la mkataba.
  • <- Back to main menu hurudi 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.js

Mfululizo 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_modules ya 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.js ni sehemu ya kuanzia ya node start.
  • deploy.js ina mantiki ya deployment na menyu shirikishi.
  • mempool.js huendesha mfululizo tofauti wa mempool.
  • erc20.json ina orodha ya tokeni inayotumiwa na mfululizo.
  • deployments.json huhifadhi data ya deployment iliyohifadhiwa na huundwa kiotomatiki.
  • lib/ui.js hudhibiti rangi, menyu, visanduku, na ukataji wa kumbukumbu.
  • lib/env.js hushughulikia vigezo vya mazingira, data ya deployment, na viungo vya explorer.
  • lib/compile.js hushughulikia ukusanyaji na utatuzi wa uagizaji.
  • lib/chain.js hushughulikia gesi, risiti, na bei ya ETH.
  • lib/contract.js hushughulikia 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 1 na inakataa mitandao mingine.
  • Kagua salio la pochi kabla ya kuthibitisha deployment au operesheni ya kuandika.
  • Tumia deployments.json kama 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

  1. Usichapishe au kuweka PRIVATE_KEY kwenye mfumo wa kudhibiti matoleo.
  2. Weka .env katika .gitignore.
  3. Tumia pochi yenye fedha zinazohitajika tu kwa operesheni.
  4. Soma kila onyesho la awali la gesi kabla ya kuchagua OK.
  5. Thibitisha kuwa kiolesura kinaripoti Ethereum Mainnet na kitambulisho cha mtandao 1.
  6. 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 | head

Hitimisho

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.