Thêm game tại WuGames.ioTài trợKhám phá kho game trình duyệt miễn phí — chơi ngay, không tải, không đăng ký.Chơi ngay

Mã hóa / Giải mã ABI

Mã hóa lệnh gọi hàm thành calldata hoặc giải mã input data giao dịch Ethereum, Polygon, BSC và mọi EVM chain. Hỗ trợ tuple, array, struct.

Định dạng: tenHam(kieu1,kieu2,...)

Mã hóa / Giải mã ABI là gì?

Công cụ Mã hóa/Giải mã ABI (Application Binary Interface) miễn phí để mã hóa và giải mã dữ liệu gọi hàm của smart contract Ethereum. Nó chuyển đổi chữ ký hàm và tham số dễ đọc thành calldata dạng hex có thể gửi đến smart contract, và ngược lại.

Công cụ này rất quan trọng cho các lập trình viên blockchain làm việc với smart contract, debug giao dịch, hoặc xây dựng dApps trên Ethereum và các chuỗi tương thích EVM.

ABI trong Ethereum là gì?

ABI (Application Binary Interface) là đặc tả định nghĩa cách tương tác với smart contract Ethereum. Nó mô tả các hàm có sẵn trong contract, tham số và kiểu dữ liệu trả về. ABI encoder chuyển đổi lời gọi hàm thành bytecode mà EVM có thể thực thi.

Calldata là gì?

Calldata là dữ liệu đã mã hóa được gửi cùng giao dịch đến smart contract. Nó bao gồm function selector 4 byte (8 ký tự hex đầu tiên sau 0x) theo sau là các tham số đã mã hóa ABI. Ví dụ, gọi transfer(address,uint256) tạo calldata như 0xa9059cbb000000...

Làm thế nào để mã hóa một lời gọi hàm?

Nhập chữ ký hàm (vd: transfer(address,uint256)) và tham số dưới dạng mảng JSON. Công cụ sẽ tạo calldata hoàn chỉnh bao gồm function selector và tham số đã mã hóa. Calldata này có thể dùng trong giao dịch web3 hoặc để debug.

Làm thế nào để giải mã dữ liệu đầu vào giao dịch?

Dán dữ liệu đầu vào giao dịch (calldata) từ bất kỳ giao dịch EVM nào. Nếu bạn biết chữ ký hàm, cung cấp nó để giải mã chi tiết tham số. Nếu không, công cụ sẽ hiển thị function selector và dữ liệu thô. Điều này hữu ích để phân tích giao dịch trên block explorer.

Hỗ trợ những blockchain nào?

Công cụ này hoạt động với tất cả blockchain tương thích EVM bao gồm Ethereum, BSC, Polygon, Arbitrum, Optimism, Avalanche và bất kỳ chuỗi nào khác sử dụng Ethereum Virtual Machine và tuân theo chuẩn mã hóa ABI.

Mã hóa / Giải mã ABI — Mã hóa lệnh gọi hàm thành calldata hoặc giải mã input data giao dịch Ethereum, Polygon, BSC và mọi EVM chain. Hỗ trợ tup
Mã hóa / Giải mã ABI

Selector 4 byte được tính từ chữ ký hàm thế nào?

Lấy chữ ký như transfer(address,uint256), áp dụng Keccak-256 (KHÔNG phải SHA-256 thường), lấy 4 byte đầu. Chữ ký KHÔNG được có khoảng trắng và phải dùng tên kiểu chuẩn: address, uint256 không phải uint, bytes32 không phải bytes. transfer(address,uint256) hash ra 0xa9059cbb...

ABI encoding xử lý kiểu động như string, bytes ra sao?

Kiểu động dùng sơ đồ head/tail: head chứa offset (mỗi cái 32 byte), tail chứa length + data đệm. Với transfer(address,uint256) các param đều tĩnh nên pack trực tiếp. Với setMessage(string), string đặt offset ở head rồi length UTF-8 + nội dung đệm 32 byte ở tail.

Có giải mã được calldata khi không biết chữ ký hàm không?

Phần nào. 4 byte đầu là selector — tra cứu trên cơ sở mở như 4byte.directory hoặc Openchain.xyz để tìm chữ ký ứng viên. Không có chữ ký thì không giải mã tham số chính xác được vì ABI biết kiểu dữ liệu. Công cụ có link sang các cơ sở này để tra.

Tại sao calldata của tôi khác với output từ ethers.js?

Ethers.js dùng alias chuẩn (uint -> uint256, int -> int256, bytes dynamic) và có thể khác nếu bạn truyền kiểu không chuẩn. Kiểm tra thứ tự tham số — mảng JSON phải khớp chữ ký. Ethers cũng mã hóa function() thành selector 0x không argument; vài tool bỏ byte 0 cuối.

Các Trường Hợp Sử Dụng Phổ Biến

  • Mã hóa giao dịch chuyển token ERC20 để tương tác với contract
  • Giải mã dữ liệu đầu vào giao dịch từ Etherscan hoặc block explorer
  • Kiểm tra lời gọi hàm smart contract trước khi triển khai
  • Debug giao dịch thất bại bằng cách phân tích calldata
  • Xây dựng giao dịch tùy chỉnh cho ví multisig
  • Phân tích tương tác giao thức DeFi (hoán đổi Uniswap, v.v.)