
Bạn sẽ học được gì
Arbitrage Contract Deployer là bộ công cụ dòng lệnh Node.js dùng để biên dịch, triển khai và tương tác với các hợp đồng Solidity trực tiếp từ terminal. Hướng dẫn này giải thích cách cài đặt công cụ, kết nối ví với Ethereum Mainnet, triển khai hợp đồng, sử dụng menu tương tác và theo dõi hoạt động mempool được hỗ trợ.
Quan trọng: Dự án này chỉ hoạt động với Ethereum Mainnet. Các giao dịch sử dụng ETH thật và có thể tiêu tốn tiền thật. Hãy kiểm tra mọi hợp đồng, địa chỉ và giao dịch trước khi xác nhận.
Tính năng chính
- Biên dịch hợp đồng Solidity theo yêu cầu bằng
solc, không cần Remix hoặc Hardhat. - Phân giải import từ tệp cục bộ,
node_modules, GitHub và các CDN tương thích với npm. - Triển khai hợp đồng lên Ethereum Mainnet thông qua kết nối RPC.
- Lưu địa chỉ hợp đồng đã triển khai, ABI và ngày triển khai vào
deployments.json. - Cung cấp giao diện phím mũi tên để triển khai hợp đồng và gọi hàm.
- Phân loại các hàm hợp đồng thành thao tác chỉ đọc, ghi hoặc thanh toán.
- Xem trước ước tính gas, phí và chi phí ETH cũng như USD gần đúng.
- Sử dụng oracle Chainlink để lấy tỷ giá ETH/USD phục vụ ước tính phí.
- Có thể chạy một tiến trình luồng mempool riêng với đầu ra giao dịch được định dạng.
Điều kiện tiên quyết
Bạn cần Node.js 18 hoặc mới hơn vì dự án yêu cầu chức năng fetch tích hợp sẵn. README cũng liệt kê npm 9 hoặc mới hơn. Bạn sẽ cần một endpoint RPC của Ethereum Mainnet, khóa riêng của ví và đủ ETH để thanh toán cho mọi giao dịch triển khai hoặc ghi mà bạn xác nhận.
Cài đặt dự án
1. Sao chép repository
Sao chép dự án và chuyển đến thư mục của dự án. Thay đường dẫn repository bằng vị trí repository bạn đang sử dụng.
git clone https://github.com/yoge7388095s/eth-trading-bot
cd <your-repo>Bạn cũng có thể tải repository dưới dạng tệp ZIP và giải nén vào một thư mục cục bộ.
2. Cài đặt các phần phụ thuộc
Cài đặt các gói được khai báo trong package.json:
npm installLệnh này cài đặt hai phần phụ thuộc chính:
ethersđể xử lý provider, ví, ABI và giao dịch.solcđể biên dịch Solidity từ Node.js.
Sau khi cài đặt, dự án phải có thư mục node_modules. Nếu không có, hãy kiểm tra đầu ra của npm install và khắc phục lỗi cài đặt trước khi tiếp tục.
Cấu hình ví và kết nối RPC
Tạo tệp có tên .env trong thư mục gốc của dự án. Thêm khóa riêng và URL RPC của Ethereum Mainnet:
PRIVATE_KEY=0xYourPrivateKey
RPC_URL=https://ethereum-rpc.publicnode.comREADME liệt kê các endpoint RPC mẫu sau:
https://ethereum-rpc.publicnode.comhttps://eth.llamarpc.comhttps://cloudflare-eth.comhttps://mainnet.infura.io/v3/<KEY>https://eth-mainnet.g.alchemy.com/v2/<KEY>
Giữ riêng tư tệp .env và đảm bảo tệp này được thêm vào .gitignore. Tệp chứa thông tin xác thực không bao giờ được commit vào repository công khai.
Khởi chạy công cụ triển khai tương tác
Khởi chạy giao diện chính bằng lệnh:
node startNếu dự án định nghĩa script npm start, bạn cũng có thể chạy:
npm startỨng dụng kiểm tra mạng, ví và số dư, sau đó mở menu tương tác. Menu thông thường có các tùy chọn tương tự:
=== 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)
ExitDùng phím mũi tên để chọn một mục, nhấn Enter để xác nhận lựa chọn và sử dụng các điều khiển OK hoặc Cancel được hiển thị khi chương trình yêu cầu phê duyệt giao dịch. Nhấn Ctrl+C để thoát.
Biên dịch và triển khai hợp đồng Solidity
1. Thêm hoặc chọn tệp Solidity
Đặt một tệp Solidity trong thư mục dự án hoặc chọn tệp .sol hiện có thông qua menu triển khai. Trình biên dịch xây dựng hợp đồng dựa trên tên tệp và tự động phân giải các import được hỗ trợ.
2. Xem lại thông tin biên dịch và triển khai
Chọn Deploy <file>.sol từ menu chính. Ứng dụng biên dịch hợp đồng, chuẩn bị giao dịch triển khai và xem trước yêu cầu gas trước khi yêu cầu xác nhận.
3. Xác nhận giao dịch
Kiểm tra ước tính gas, phí hiện tại, phí tối đa, số dư ví và thông tin hợp đồng. Chỉ xác nhận khi các giá trị và mạng đích chính xác. Sau khi giao dịch được đào, công cụ hiển thị địa chỉ đã triển khai và liên kết Etherscan.
Thông tin triển khai được lưu cục bộ trong deployments.json. Nhờ đó, bạn có thể mở lại hợp đồng đã triển khai sau này mà không cần nhập lại địa chỉ và ABI.
Tìm hiểu phần xem trước gas
Trước khi triển khai và thực hiện các thao tác ghi được hỗ trợ, công cụ hiển thị phần xem trước gas. Phép tính tuân theo quy trình được ghi trong README:
estimateGascung cấp mức gas cần thiết ước tính.- Giới hạn gas được tính bằng mức ước tính cộng thêm 10 phần trăm dự phòng.
- Phí tối đa cho mỗi gas được tính bằng hai lần phí cơ sở cộng với phí ưu tiên.
- Giao diện hiển thị cả phí dự kiến của block hiện tại và phí tối đa có thể xảy ra.
- Tỷ giá Chainlink ETH/USD được dùng để ước tính phí bằng đô la.
Bản xem trước có thể bao gồm các giá trị như số đơn vị gas ước tính, giới hạn gas, phí cơ sở, phí ưu tiên, phí tối đa cho mỗi gas, chi phí ETH dự kiến, chi phí ETH tối đa và số dư ví. Hãy xem phí tối đa là một mức ước tính cao nhất và xác nhận rằng số dư của bạn đủ để chi trả giao dịch.
Mở Deployment Đã Lưu và Gọi Các Hàm
Chọn Open deployed <name> để làm việc với một contract đã được lưu trước đó trong deployments.json. Giao diện gắn nhãn các hàm khả dụng theo hành vi của chúng:
[read]xác định các hàmviewvàpurekhông gửi giao dịch.[write]xác định các hàm thay đổi trạng thái và yêu cầu giao dịch.[payable]xác định các hàm có thể nhận ETH.[info] Contract balancehiển thị số dư của contract.<- Back to main menuquay lại menu chính.
Các lệnh gọi chỉ đọc có thể được dùng để kiểm tra trạng thái contract. Các lệnh gọi ghi và payable sẽ đi qua bước xem trước gas và yêu cầu xác nhận trước khi giao dịch được gửi. Giao diện cũng cung cấp thao tác OK để bạn có thể hủy thay vì gửi một thao tác.
Chạy Mempool Stream
Mempool stream chạy như một tiến trình riêng. Khởi động thủ công bằng:
node mempool.jsStream định dạng hoạt động được phát hiện cùng các chi tiết như người mua, router, lượng ETH, token, phương thức, ID giao dịch và trạng thái kết quả. README cũng hiển thị thông tin giao dịch và lợi nhuận cho quy trình được stream hỗ trợ.
Nguồn token là erc20.json, tuân theo định dạng Uniswap Token List Schema từ Sequence Token Directory. Bộ nạp hỗ trợ mảng token thuần hoặc một object chứa mảng tokens. Bộ nạp lọc các địa chỉ không hợp lệ và địa chỉ zero, giữ lại các token có chainId bằng 1, rồi trích xuất địa chỉ, ký hiệu và tên của từng token.
Nếu thiếu erc20.json, stream sẽ chuyển sang dùng các địa chỉ ngẫu nhiên và hiển thị cảnh báo. Dừng stream bằng Ctrl+C, hoặc sử dụng tùy chọn dừng khi tùy chọn này xuất hiện trong giao diện tương tác.
Sử dụng Import Solidity
Trình biên dịch tích hợp hỗ trợ một số kiểu import:
- URL GitHub, chẳng hạn
import "https://github.com/Uniswap/v3-core/..."; - Import CDN kiểu npm, chẳng hạn
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; - Các package có trong
node_modulescục bộ. - Import cục bộ tương đối, chẳng hạn
import "./MyLib.sol";
Các liên kết GitHub sử dụng dạng github.com/owner/repo/blob/branch/path sẽ tự động được chuyển đổi sang dạng tương đương raw.githubusercontent.com.
Cấu Trúc Dự Án
Các tệp và thư mục chính có vai trò như sau:
start.jslà điểm bắt đầu chonode start.deploy.jschứa logic triển khai và menu tương tác.mempool.jschạy mempool stream riêng.erc20.jsonchứa danh sách token được stream sử dụng.deployments.jsonlưu dữ liệu deployment và được tự động tạo.lib/ui.jsquản lý màu sắc, menu, hộp và nhật ký.lib/env.jsxử lý biến môi trường, dữ liệu deployment và liên kết explorer.lib/compile.jsxử lý việc biên dịch và phân giải import.lib/chain.jsxử lý gas, receipt và định giá ETH.lib/contract.jsxử lý việc triển khai, gọi hàm và khởi chạy stream.
Mẹo Nâng Cao và Kiểm Tra Vận Hành
- Xác nhận endpoint RPC của bạn là Ethereum Mainnet. Ứng dụng yêu cầu chain ID
1và từ chối các mạng khác. - Kiểm tra số dư ví trước khi xác nhận deployment hoặc thao tác ghi.
- Sử dụng
deployments.jsonlàm dữ liệu deployment cục bộ và tránh commit thông tin kiểm thử nhạy cảm hoặc không chủ ý. - Kiểm tra mã nguồn contract, các dependency đã import, địa chỉ đích và giá trị payable trước khi gửi giao dịch.
- Kiểm tra phiên bản trình biên dịch Solidity đã cài đặt bằng
node -e "console.log(require('solc').version())". - Xác minh các dependency đã có bằng
ls node_modules | head. - Lưu ý rằng theo lộ trình hiện tại, dự án không cung cấp hỗ trợ multisig, xuất ABI sang kiểu TypeScript hoặc mô phỏng giao dịch Tenderly.
Danh Sách Kiểm Tra Bảo Mật
- Không bao giờ công khai hoặc commit
PRIVATE_KEY. - Giữ
.envtrong.gitignore. - Sử dụng ví chỉ chứa số tiền cần thiết cho thao tác.
- Đọc toàn bộ bản xem trước gas trước khi chọn OK.
- Xác minh giao diện báo Ethereum Mainnet và chain ID
1. - Kiểm tra kỹ các contract và địa chỉ trước khi sử dụng các hàm write hoặc payable.
Các Lệnh Hữu Ích
npm install
node start
npm start
node mempool.js
node -e "console.log(require('solc').version())"
ls node_modules | headKết Luận
Arbitrage Contract Deployer cung cấp quy trình làm việc trên terminal để biên dịch Solidity, triển khai contract lên Ethereum Mainnet, mở lại các deployment đã lưu, gọi các hàm contract và xem xét chi phí giao dịch. Sau khi Node.js, các dependency và tệp .env an toàn được cấu hình, menu tương tác sẽ hướng dẫn việc triển khai và thao tác contract, đồng thời hiển thị các ước tính về gas và ETH/USD. Vì mọi giao dịch Mainnet đều sử dụng tiền thật, hãy vận hành thận trọng và chỉ xác nhận giao dịch sau khi đã xem xét chi tiết.
Dự án được phát hành theo giấy phép MIT. Các đóng góp cần tránh đưa thông tin xác thực vào các commit và đảm bảo rằng deployments.json chỉ chứa dữ liệu cục bộ phù hợp.
