Việc đọc hiểu smart contract trên các trình khám phá blockchain như Etherscan, BscScan hay Arbiscan không chỉ dành cho lập trình viên. Nếu bạn là người chơi DeFi, nghiên cứu token, hay muốn đánh giá rủi ro dự án, thì hiểu sơ đồ contract sẽ giúp bạn:
- Biết contract đó có phải proxy (uỷ quyền) hay là logic thực sự?
- Biết ai có quyền nâng cấp, có thể can thiệp, rút tiền, hay đổi thông số?
- Biết contract này có kết nối với router, factory nào không?
- Tự tra được pool/vault mình đang dùng có đáng tin hay không
Table of Contents
📍 1. Tổng Quan Về Các Loại Contract Trong DeFi
Trong một hệ DeFi như lending, AMM, yield aggregator, thường có nhiều loại contract phối hợp với nhau:
Loại contract | Vai trò chính |
---|---|
Proxy | Contract “vỏ ngoài”, forward các lệnh gọi đến logic contract |
Implementation (logic) | Nơi chứa mã chạy thật sự (swap, farm, withdraw…) |
Router | Định tuyến giao dịch đến các pool phù hợp, gom nhiều lệnh vào 1 call |
Factory | Dùng để tạo ra các pool/pair/vault mới |
Admin / ProxyAdmin | Có quyền nâng cấp hoặc thay đổi logic |
🧭 2. Cách Đọc Contract Trên Etherscan / BscScan (Từng Bước)
✅ Bước 1: Xác định contract có phải Proxy hay không?
Khi bạn vào địa chỉ contract, Etherscan sẽ hiển thị ngay:
- ✅ “Contract Source Code Verified”
- 📌 Nếu có dòng: “This contract is a proxy”, thì nó chỉ là vỏ ngoài.
→ Lúc này, bạn sẽ thấy tab “Read as Proxy”, “Write as Proxy”, và mục “Implementation Address” – tức là contract thật nằm ở chỗ khác.
✅ Bước 2: Tìm contract logic (Implementation)
Kéo xuống phần thông tin contract, bạn sẽ thấy dòng:
cssSao chépChỉnh sửaImplementation Address: 0x.... (Click to view)
Click vào đó để xem chi tiết contract chứa mã logic thật sự như các hàm swap, mint, withdraw…
✅ Bước 3: Xem ai có quyền quản trị / nâng cấp
- Nếu contract dùng Transparent Proxy, nó thường đi kèm 1 contract có tên ProxyAdmin.
- Trong đó sẽ có hàm:
getProxyAdmin(address proxy)
getProxyImplementation(address proxy)
upgrade()
,changeAdmin()
…
→ Điều này giúp bạn biết ai có quyền nâng cấp logic, đổi địa chỉ implementation, hoặc chỉnh thông số.
✅ Bước 4: Xem các hàm chính của contract
- Tab Read Contract: Xem các hàm truy xuất dữ liệu (ví dụ: token0, token1, liquidity, balanceOf…)
- Tab Write Contract: Xem các hàm có thể gọi để tương tác (phải kết nối ví) như swap, deposit, claim…
✅ Bước 5: Tìm Factory và Router (nếu có)
- Factory sẽ có hàm như:
createPair
,getPool
,deployVault
- Router sẽ có các hàm kiểu:
swapExactTokensForTokens
,addLiquidity
,removeLiquidity
→ Tra ngược lại bạn có thể tìm ra source gốc tạo ra contract mình đang sử dụng.
🧪 3. Ví Dụ Thực Tế: Contract Uniswap V3 Pool
Đường link vào contract này: https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8#code
✅ Bước 1: Xác định contract chính dùng là gì
Kéo xuống tab Code, rồi tìm dòng:
Contract Name: UniswapV3Pool
📌 Tức là contract chính tên UniswapV3Pool.sol → không phải là proxy, mà là contract gốc thật sự. Bạn khỏi cần lo vụ proxy ở đây.

✅ Bước 2: Nhìn mục “Files” – thấy 31 file .sol
Đừng hoảng. Trong đó:
- Chỉ 1 file là “UniswapV3Pool.sol” – contract chính nằm đây
- Còn lại là file phụ: interface, thư viện, helper…
👉 Bạn chỉ cần tập trung đọc file UniswapV3Pool.sol
đầu tiên. Khi nó gọi đến file khác (import), mình mới mở tiếp nếu cần.
✅ Bước 3: Xem chức năng chính của contract
Trong file UniswapV3Pool.sol
, bạn có thể tìm:
- Các state variable (biến lưu trữ)
- Các function (hàm)
Ví dụ:
swap(...)
: để swap tokenmint(...)
: thêm thanh khoảnburn(...)
: rút thanh khoản
=> Đọc tên hàm là hiểu chức năng. Bạn nào không hiểu thì tra Google hoặc ChatGPT phần này nha.
✅ Bước 4: Xem ai đang quản lý / có quyền
Vì không phải proxy, nên không có admin upgrade.
Nhưng có thể có quyền fee owner, protocol fee, incentive gì đó → thường được set lúc deploy (Uniswap v3 là non-upgradable, immutable).
✅ Bước 5: Xem file phụ khi cần
Khi trong UniswapV3Pool.sol
có đoạn như:
import './interfaces/IUniswapV3PoolImmutables.sol';
→ thì bạn mở file IUniswapV3PoolImmutables.sol
nếu muốn biết thêm chi tiết về interface của nó.
Nhưng bạn không cần đọc hết 31 file, chỉ cần theo dấu những thứ nào bạn chưa hiểu.
🗂 Tóm lại: Cách đọc contract này
Mục cần hiểu | Cách xem |
---|---|
Contract có phải proxy? | ❌ Không, đây là contract thật, không qua proxy |
Tên contract chính | UniswapV3Pool.sol |
Gồm những chức năng gì? | Tìm các hàm như swap() , mint() , burn() |
Ai có quyền gì? | Không có admin, nhưng có thể có role như feeOwner |
Có liên kết router/factory? | Có – contract này do factory deploy ra: UniswapV3Factory |
Xem 31 file thế nào? | Bắt đầu từ UniswapV3Pool.sol , rồi đọc thêm nếu cần |
✅ Các hàm chính trong contract
Hàm | Mục đích |
---|---|
mint() | Thêm thanh khoản vào pool |
burn() | Rút thanh khoản khỏi pool |
swap() | Giao dịch token giữa token0 và token1 |
collect() | Rút phí giao dịch được tích lũy |
slot0() | Trạng thái hiện tại của pool (giá, tick, fee,…) |
observe() | Lấy dữ liệu để tính TWAP (giá trung bình theo thời gian) |
✅ Ai tạo contract này? Có liên kết với Factory không?
- Pool này được tạo ra bởi UniswapV3Factory
- Nếu bạn xem Factory:
https://etherscan.io/address/0x1F98431c8aD98523631AE4a59f267346ea31F984 - Factory có hàm: soliditySao chépChỉnh sửa
function createPool(address tokenA, address tokenB, uint24 fee)
→ Tức là pool trên là kết quả của lệnh createPool(tokenA, tokenB, fee)
.
📊 4. Bảng Tóm Tắt
Thông tin cần biết | Cách tìm trên Etherscan |
---|---|
Có phải Proxy không? | Xem tab Code → dòng “This contract is a proxy” |
Implementation contract? | Xem mục Implementation Address |
Ai có quyền nâng cấp? | Xem ProxyAdmin hoặc hàm admin() |
Logic chạy ở đâu? | Implementation hoặc chính contract |
Pool/vault tạo từ đâu? | Tìm Factory → hàm createPool hoặc deployVault |
Có router không? | Tìm contract chứa hàm swap/addLiquidity |
🧠 Kết Luận
Hiểu và đọc được sơ đồ smart contract giúp bạn:
- Đánh giá mức độ phi tập trung, quyền kiểm soát
- Tránh các rug pull ẩn trong proxy, admin, logic
- Hiểu rõ cách hoạt động của DeFi, kể cả khi không biết code
Bạn không cần giỏi Solidity, chỉ cần biết tư duy tra cứu là đã đủ hiểu 80%.
Tìm hiểu 5 bước tự kiểm tra code dự án crypto / smart contract có lừa đảo không.
📌 Đọc thêm tại chuyên mục Technical của Click Digital để khám phá thêm các bài viết về kỹ thuật code blockchain.
[+++]
Lưu ý: Bài viết chỉ cung cấp góc nhìn và không phải là lời khuyên đầu tư.
Đọc các Sách chính thống về Blockchain, Bitcoin, Crypto
Để nhận ưu đãi giảm phí giao dịch, đăng ký tài khoản tại các sàn giao dịch sau:👉 Nếu bạn cần Dịch vụ quảng cáo crypto, liên hệ Click Digital ngay. 🤗
Cảm ơn bạn đã đọc. Chúc bạn đầu tư thành công. 🤗
Giới thiệu token Saigon (SGN):
- Đầu tư vào các công ty quảng cáo blockchain hàng đầu bằng cách MUA token Saigon (SGN) trên Pancakeswap: https://t.co/KJbk71cFe8/ (đừng lo lắng về tính thanh khoản, hãy trở thành nhà đầu tư sớm)
- Được hỗ trợ bởi Công ty Click Digital
- Nâng cao kiến thức về blockchain và crypto
- Lợi nhuận sẽ dùng để mua lại SGN hoặc đốt bớt nguồn cung SGN để đẩy giá SGN tăng.
- Địa chỉ token trên mạng BSC: 0xa29c5da6673fd66e96065f44da94e351a3e2af65
- Twitter X: https://twitter.com/SaigonSGN135/
- Staking SGN: http://135web.net/
- If you’d like to invest in top blockchain advertising companies, just BUY Saigon token (SGN) on Pancakeswap: https://t.co/KJbk71cFe8/ (do not worry about low liquidity, be the early investor)
- Backed by Click Digital Company
- Enhancing blockchain and crypto knowledge
- The profits will be used to repurchase SGN or burn a portion of the SGN supply to drive up the SGN price.
- BSC address: 0xa29c5da6673fd66e96065f44da94e351a3e2af65
- Twitter X: https://twitter.com/SaigonSGN135/
- Staking SGN: http://135web.net/
Digital Marketing Specialist