ERC-20 là gì? Đó là tiêu chuẩn token điều hành nền kinh tế của Ethereum.
Tôi đang giữ USDT trong ví MetaMask của mình. Ngoài ra còn có một ít LINK, một ít UNI từ một giao dịch hoán đổi tuần trước, và một token hình con chó mà ai đó đã airdrop cho tôi mà tôi cứ quên bán. Những token này có chức năng hoàn toàn khác nhau. Tether là một stablecoin được hỗ trợ bởi tiền mặt và kho bạc. Chainlink vận hành các mạng lưới oracle cung cấp dữ liệu thực tế cho các hợp đồng thông minh. Uniswap quản lý DEX lớn nhất trên Ethereum. Token hình con chó thì chẳng có tác dụng gì. Nhưng ví của tôi hiển thị tất cả chúng trong cùng một danh sách, cho phép tôi gửi chúng bằng cùng một nút bấm, và mọi giao thức DeFi tôi sử dụng đều chấp nhận chúng mà không cần thiết lập đặc biệt nào.
Điều đó chỉ hoạt động được vì cả bốn đều tuân theo cùng một quy tắc. Chúng đều là token ERC-20. Cùng giao diện, cùng chức năng, cùng quy tắc hoạt động. Và hiểu được ERC-20 thực sự có nghĩa là gì là bước đầu tiên để hiểu cách Ethereum hoạt động như một nền kinh tế.
Fabian Vogelsteller đã viết bản đề xuất vào tháng 11 năm 2015. Ông đặt cho nó một cái tên khá nhàm chán: Ethereum Request for Comment number 20 (Yêu cầu bình luận số 20 của Ethereum). Vitalik Buterin là đồng tác giả của phiên bản cuối cùng. Đến năm 2017, nó đã được chính thức thông qua, và sau đó là cơn sốt ICO ập đến như một cú sốc. Hàng ngàn dự án đã ra mắt token chỉ sau một đêm vì ERC-20 khiến việc này gần như miễn phí. Sau nửa triệu hợp đồng token, tiêu chuẩn này vẫn đang thống trị thị trường. Đây là những gì nó làm và tại sao bạn nên quan tâm đến nó ngay cả khi bạn không bao giờ có ý định viết một dòng mã Solidity nào.
Tiêu chuẩn ERC-20 hoạt động như thế nào?
Cái tên nghe có vẻ "mọt sách" hơn mức cần thiết. ERC = Ethereum Request for Comment (Yêu cầu góp ý về Ethereum). 20 = số thứ tự đề xuất. Chỉ vậy thôi. Một nhà phát triển tên Fabian đã nói "đây là những quy tắc mà mọi token nên tuân theo" và gán cho đề xuất của mình số 20 vì đó là vị trí trống tiếp theo. Không phải hai mươi quy tắc. Không phải hai mươi token. Chỉ đơn giản là đề xuất số 20 trong hàng chờ cải tiến của Ethereum.
Những quy định đó nói rằng: nếu bạn muốn tạo một token có thể hoán đổi cho nhau trên Ethereum, hợp đồng thông minh của bạn phải bao gồm các chức năng cụ thể này. "Có thể hoán đổi cho nhau" có nghĩa là mỗi đơn vị token đều giống hệt nhau. Một USDC giống hệt như mọi USDC khác. Bạn không cần quan tâm mình đang nắm giữ token UNI cụ thể nào vì chúng đều có thể hoán đổi cho nhau. NFT thì ngược lại. Mỗi NFT là duy nhất. Tiêu chuẩn khác. Bài viết khác.
Tiêu chuẩn ERC-20 quy định rõ sáu chức năng và hai sự kiện. Mọi hợp đồng token tuân thủ tiêu chuẩn này, từ USDT với vốn hóa thị trường 140 tỷ đô la cho đến memecoin mà ai đó vừa ra mắt cách đây ba mươi giây, đều thực hiện các lệnh gọi tương tự:
| Chức năng | Phiên bản tiếng Anh đơn giản |
|---|---|
| tổng nguồn cung() | "Trên thế giới có bao nhiêu loại token này?" |
| số dư của (địa chỉ) | "Chiếc ví này có bao nhiêu cái?" |
| chuyển khoản (đến, số tiền) | "Gửi X token từ ví của tôi cho người khác" |
| phê duyệt (người chi tiêu, số tiền) | "Hãy cho phép giao thức DeFi này chi tiêu tối đa X token của tôi" |
| chuyển khoản từ (từ, đến, số tiền) | "Tôi được phép chuyển token từ ví A sang ví B." |
| khoản trợ cấp (người sở hữu, người chi tiêu) | "Người này còn có thể sử dụng bao nhiêu tiền từ khoản trợ cấp?" |
Hai sự kiện được ghi lại trên chuỗi khối mỗi khi có điều gì đó xảy ra. Sự kiện chuyển khoản được kích hoạt mỗi khi token được chuyển giữa các ví. Sự kiện phê duyệt được kích hoạt khi ai đó cấp quyền chi tiêu. Các trình khám phá chuỗi khối như Etherscan sử dụng các sự kiện này để xây dựng lịch sử giao dịch mà bạn thấy khi tra cứu một token.
Ba trường tùy chọn bổ sung thêm cá tính: tên đặt cho token một nhãn dễ đọc ("Chainlink"), ký hiệu là mã giao dịch ("LINK"), và decimals thiết lập mức độ phân chia của token (hầu hết mọi người đều sử dụng 18 để phù hợp với ETH, mặc dù USDT sử dụng 6 và điều đó đã gây ra nhiều lỗi hơn bất kỳ ai muốn thừa nhận).
Sáu hàm. Hai sự kiện. Ba trường tùy chọn. Đó chính xác là toàn bộ bản đặc tả. Tôi có thể in nó lên một tờ giấy ăn mà vẫn còn chỗ để dính vết cà phê. Vậy mà bản đặc tả nhỏ gọn này lại vận hành một nền kinh tế token trị giá hàng trăm tỷ đô la. MetaMask đọc các hàm này để hiển thị số dư của bạn. Uniswap gọi chúng để thực hiện các giao dịch hoán đổi. Aave sử dụng chúng để quản lý hoạt động cho vay. Mọi giao thức DeFi mà bạn từng sử dụng đều giao tiếp với token thông qua cùng một giao diện này. Sự đơn giản chính là điểm mấu chốt.

Vì sao ERC-20 đã thay đổi mọi thứ về Ethereum?
Tôi từng làm việc trong lĩnh vực tiền điện tử vào năm 2016, trước khi tiêu chuẩn này ra đời. Mọi thứ hỗn loạn. Mỗi token là một dự án riêng biệt. Ai đó sẽ xây dựng hợp đồng token với tên hàm riêng, logic chuyển khoản riêng, cách kiểm tra số dư riêng. MetaMask thậm chí không biết một nửa số token đó là gì. Các sàn giao dịch mất hàng tháng trời để thêm hỗ trợ cho một token mới vì mỗi token đều yêu cầu mã tích hợp riêng. Xây dựng một DEX? Quên đi. Bạn sẽ cần phải viết trình xử lý cho từng triển khai token riêng lẻ.
ERC-20 đã chấm dứt sự hỗn loạn đó. Sau khi tiêu chuẩn được thông qua, một token mới xuất hiện trên MetaMask ngay khi bạn dán địa chỉ hợp đồng. Uniswap có thể niêm yết nó mà không cần sự cho phép của bất kỳ ai. Aave có thể chấp nhận nó làm tài sản thế chấp mà không cần viết một dòng mã tùy chỉnh nào. Một tiêu chuẩn, khả năng tương thích toàn cầu.
Làn sóng ICO năm 2017 là bằng chứng. Một cậu sinh viên nào đó trong ký túc xá có thể triển khai một token ERC-20 sau bữa trưa, lập một trang web với bản cáo bạch, và bắt đầu nhận ETH từ các nhà đầu tư trước nửa đêm. Tôi đã chứng kiến điều đó xảy ra trong thời gian thực. Các dự án đã huy động được hàng tỷ đô la. Một số là hợp pháp và xây dựng được sản phẩm thực sự. Hầu hết đều là rác rưởi. Một vài dự án là lừa đảo trắng trợn. Nhưng công nghệ nền tảng thì sao? Nó hoạt động hoàn hảo. Tiêu chuẩn này đã làm chính xác những gì nó được thiết kế để làm: giúp việc tạo và tương tác với token trở nên dễ dàng đến mức tối thiểu.
Quy mô hiện nay thật đáng kinh ngạc. Hơn 500.000 hợp đồng token ERC-20 đang hoạt động trên mạng Ethereum. Tổng vốn hóa thị trường của các token ERC-20 lên tới hàng trăm tỷ đô la. Riêng USDT đã vượt mốc 140 tỷ đô la. Thêm USDC, LINK, UNI, DAI, SHIB, MKR và các loại token khác nữa, bạn sẽ thấy phần lớn giá trị kinh tế của Ethereum nằm trong các hợp đồng ERC-20.
| Các token ERC-20 hàng đầu | Loại | Vốn hóa thị trường (xấp xỉ) |
|---|---|---|
| USDT (Tether) | Đồng tiền ổn định | Hơn 140 tỷ đô la |
| USDC (Circle) | Đồng tiền ổn định | Hơn 60 tỷ đô la |
| LINK (Chainlink) | Mạng Oracle | Hơn 8 tỷ đô la |
| UNI (Uniswap) | Quản trị DEX | Hơn 4 tỷ đô la |
| DAI (Nhà sản xuất) | Đồng tiền ổn định phi tập trung | Hơn 5 tỷ đô la |
| AAVE | Giao thức cho vay | Hơn 2 tỷ đô la |
| SHIB (Chó Shiba Inu) | Memecoin | Hơn 6 tỷ đô la |
| MKR (Nhà sản xuất) | Quản trị | Hơn 1,5 tỷ đô la |
Tạo token ERC-20: dễ hơn bạn nghĩ
Tôi từng xem một người triển khai token ERC-20 trực tiếp trên YouTube. Quá trình đó mất 14 phút, bao gồm cả thời gian anh ấy giải thích những gì mình đang làm cho người xem.
Đây không phải là lời khoe khoang về sự thông minh của người phát trực tiếp. Đây là lời khẳng định về việc OpenZeppelin đã giúp việc này dễ dàng như thế nào. OpenZeppelin là một thư viện mã Solidity đã được kiểm định và thử nghiệm kỹ lưỡng, thực hiện tất cả các công việc phức tạp. Bạn chọn tên token của mình ("MyToken"), ký hiệu ("MTK"), số thập phân (18, giống như ETH) và nguồn cung ban đầu. Thư viện này xử lý sáu chức năng ERC-20, các sự kiện và các kiểm tra bảo mật. Bạn sao chép mẫu, thay đổi bốn biến, triển khai lên Ethereum và bạn đã có một token thực sự.
Chi phí gas để triển khai biến động. Mạng yên tĩnh? Có thể khoảng 20-50 đô la. Mạng tắc nghẽn cao điểm như ngày phát hành NFT? 200-500 đô la. Triển khai trên Arbitrum hoặc Base thay vì mạng chính Ethereum thì chi phí giảm xuống còn vài đô la. Rào cản tài chính gần như bằng không.
Đây là mặt trái của sự dễ dàng tiếp cận đó. Chuỗi khối Ethereum không kiểm tra xem hợp đồng token có hợp lệ hay không. Nó không xác minh đội ngũ, kiểm toán mã nguồn hoặc đánh giá mô hình kinh doanh. Nếu bạn có thể trả phí gas, bạn có thể triển khai token. Đó là lý do tại sao Etherscan liệt kê hàng trăm nghìn hợp đồng token và hầu hết trong số đó đều là những thử nghiệm bị bỏ dở hoặc các vụ lừa đảo đang diễn ra. Tiêu chuẩn ERC-20 đảm bảo tính tương thích. Nó hoàn toàn không đảm bảo bất cứ điều gì về việc token đó có đáng để nắm giữ hay không.
ERC-20 so với các tiêu chuẩn token Ethereum khác
Mọi người thường hỏi tôi: "ERC-20 có phải là tiêu chuẩn token duy nhất không?" Không. Hoàn toàn không phải. Nhưng nó là tiêu chuẩn đầu tiên hoạt động hiệu quả, và các tiêu chuẩn khác ra đời sau đó đã giải quyết những vấn đề mà ERC-20 còn bỏ sót.
ERC-721 đã xuất hiện và mang đến cho chúng ta NFT. Trong khi mọi token ERC-20 đều có thể hoán đổi cho nhau (USDC của bạn cũng giống như USDC của tôi), thì mỗi token ERC-721 lại mang một ID duy nhất. Bored Ape #4293 là một tài sản hoàn toàn khác với Bored Ape #7810. Về cơ bản, tên chức năng tương tự nhau, nhưng logic hoạt động trên từng mục riêng lẻ thay vì số lượng chung chung. Bạn không thể gửi một nửa Bored Ape. Hoặc là tất cả, hoặc là không có gì.
ERC-1155 ra đời từ ý tưởng của các nhà phát triển game, những người đã quá mệt mỏi với việc phải triển khai các hợp đồng riêng biệt cho từng loại vật phẩm. Một hợp đồng duy nhất có thể xử lý tiền vàng (có thể thay thế cho nhau, giống như ERC-20), kiếm sắt (có thể bán thay thế, 50 bản sao giống hệt nhau) và một chiếc mũ huyền thoại độc nhất vô nhị (không thể thay thế, chỉ có một). Việc chuyển hàng loạt giúp tiết kiệm gas. Một giao dịch có thể chuyển 100 vật phẩm khác nhau thay vì 100 giao dịch riêng biệt.
BEP-20 là tên gọi mà Binance Smart Chain đặt cho phiên bản của họ. Chức năng và sự kiện đều giống nhau, chỉ khác blockchain. Giống hệt ERC-20 nhưng được xây dựng trên một mạng lưới rẻ hơn. Tiêu chuẩn SPL của Solana cũng thực hiện chức năng tương tự nhưng với kiến trúc hoàn toàn khác vì Solana không được thiết kế để tương thích với Ethereum.
| Tiêu chuẩn | Loại mã thông báo | Có thể thay thế cho nhau? | Các trường hợp sử dụng | Mạng |
|---|---|---|---|---|
| ERC-20 | Mã thông báo có thể thay thế | Đúng | Tiền tệ, quản trị, tiện ích | Ethereum |
| ERC-721 | Mã thông báo không thể thay thế | Không có (ID duy nhất) | NFT, nghệ thuật kỹ thuật số, đồ sưu tầm | Ethereum |
| ERC-1155 | Đa mã thông báo | Cả hai | Trò chơi, các loại tài sản hỗn hợp | Ethereum |
| BEP-20 | Mã thông báo có thể thay thế | Đúng | Tương tự như ERC-20 | Chuỗi BNB |
| SPL | Có thể hoán đổi + NFT | Cả hai | Hệ sinh thái Solana | Solana |
Token ERC-20 trong DeFi: tại sao tiêu chuẩn này lại là động lực thúc đẩy tài chính phi tập trung
Nếu loại bỏ ERC-20, DeFi sẽ sụp đổ chỉ sau một đêm. Không phải "gặp khó khăn", mà là sụp đổ hoàn toàn. Mọi thành phần của hệ thống đều giả định rằng các token nói cùng một ngôn ngữ.
Uniswap ghép hai token ERC-20 vào một nhóm và cho phép bạn hoán đổi giữa chúng. Hoạt động với USDC. Hoạt động với SHIB. Hoạt động với cả loại memecoin mà bạn của bạn ra mắt lúc 2 giờ sáng. Sàn giao dịch phi tập trung (DEX) không quan tâm token đó làm gì. Nó chỉ quan tâm đến việc hợp đồng có thực hiện các phương thức transfer() và approve() hay không. Thêm một nhóm thanh khoản, và giao dịch sẽ được kích hoạt. Không cần nộp đơn niêm yết. Không cần sàn giao dịch xem xét. Không cần thời gian chờ đợi.
Aave và Compound cho vay token ERC-20. Giao thức gọi hàm balanceOf() để kiểm tra số token bạn đã gửi. Gọi hàm transfer() để chuyển token. Sử dụng hàm approve() và transferFrom() khi bạn trả nợ. Một thị trường cho vay đối với một token hoàn toàn mới có thể được hình thành ngay trong ngày token đó được triển khai, bởi vì giao diện đã được biết đến.
Rồi còn vấn đề kỳ lạ của ETH nữa. ETH đã tồn tại trước khi ERC-20 ra đời, vì vậy nó không tuân theo tiêu chuẩn này. Điều đó phá vỡ tính khả năng kết hợp. Giải pháp: WETH. Wrapped Ether là một lớp vỏ bọc ERC-20 xung quanh ETH gốc. Gửi 1 ETH, nhận 1 WETH mà các giao thức DeFi có thể xử lý bình thường. WBTC cũng làm điều tương tự với Bitcoin, đưa giá trị của BTC vào hệ sinh thái Ethereum dưới dạng token ERC-20 được bảo đảm tỷ lệ 1:1 bằng Bitcoin thật đang được lưu giữ.
Kết quả thực tiễn: Tôi có thể xây dựng một giao thức DeFi ngay hôm nay hoạt động với mọi token ERC-20 từng được tạo ra, bao gồm cả những token chưa tồn tại. Mã của tôi không cần phải biết cụ thể về USDT. Nó không cần cập nhật khi ai đó ra mắt một stablecoin mới vào ngày mai. Giao diện xử lý mọi thứ. Khả năng kết hợp đó là lý do tại sao Ethereum có nhiều hoạt động DeFi hơn, tổng giá trị bị khóa (TVL) cao hơn và nhiều công cụ dành cho nhà phát triển hơn bất kỳ blockchain nào khác. Tiêu chuẩn ERC-20 là nền tảng mà mọi thứ khác đều dựa trên đó.
Rủi ro bảo mật và các vấn đề thường gặp của ERC-20
Tôi muốn kể cho bạn nghe về lỗi phê duyệt đã gây thiệt hại hàng triệu đô la cho người dùng DeFi và hầu như không ai hiểu được nguyên nhân cho đến khi chính họ gặp phải vấn đề này.
Khi bạn trao đổi token trên Uniswap hoặc gửi tiền vào Aave, dApp sẽ yêu cầu bạn "phê duyệt" việc sử dụng token của bạn. Hầu hết các dApp mặc định cho phép phê duyệt không giới hạn. Nghe có vẻ vô hại cho đến khi bạn nhận ra ý nghĩa của nó: hợp đồng thông minh đó có thể sử dụng mọi token thuộc loại đó trong ví của bạn, bất cứ lúc nào, mãi mãi, cho đến khi bạn thu hồi quyền một cách rõ ràng. Nếu hợp đồng bị tấn công sau sáu tháng, kẻ tấn công sẽ sử dụng sự phê duyệt cũ của bạn để rút hết token mà bạn đã quên mất mình từng cấp quyền truy cập.
Điều này đã xảy ra. Không chỉ một lần. Cách khắc phục rất đơn giản nhưng phiền phức: chỉ phê duyệt chính xác số tiền bạn cần cho mỗi giao dịch. Hoặc sử dụng Revoke.cash để dọn dẹp các phê duyệt cũ mà bạn đã quên. Tôi kiểm tra của mình vài tháng một lần. Nó luôn tệ hơn tôi tưởng. ERC-2612 là một tiêu chuẩn mới hơn thay thế các phê duyệt trên chuỗi bằng các giấy phép được ký, giúp giảm thiểu rủi ro này. Nhưng hầu hết các dApp vẫn sử dụng mô hình cũ.
Mỗi tuần đều có những token giả mạo lừa đảo người dùng. Kẻ gian lận triển khai một hợp đồng ERC-20 có tên "Uniswap" hoặc "Chainlink" với địa chỉ hợp đồng hơi khác. Bạn tìm kiếm nó trên DEX, thấy cái tên quen thuộc và mua token giả. Tiền của bạn sẽ chuyển thẳng vào ví của kẻ lừa đảo. Địa chỉ hợp đồng LINK thật là 0x514910771AF9Ca656af840dff83E8264EcF986CA. Địa chỉ giả có thể là 0x514910...hoặc một địa chỉ khác. Luôn luôn sao chép địa chỉ từ CoinGecko hoặc trang web chính thức của dự án. Không bao giờ tìm kiếm chỉ bằng tên.
Rồi còn có những token với những mánh khóe ngầm. Nhìn bề ngoài, hợp đồng trông giống như một hợp đồng ERC-20 tiêu chuẩn. Nhưng bên trong, người triển khai đã thêm vào một chức năng cho phép họ tạo ra số lượng token mới không giới hạn. Hoặc một khoản phí bán hàng lấy đi 99% số token của bạn khi bạn cố gắng giao dịch. Hoặc một danh sách đen ngăn chặn bất kỳ ai ngoại trừ người triển khai bán. Tiêu chuẩn ERC-20 không nói gì về những gì một hợp đồng không được phép làm. Nó chỉ quy định các chức năng tối thiểu. Mọi thứ khác đều tùy thuộc vào nhà phát triển. Việc kiểm toán token, DextScore và các hợp đồng được xác minh trên Etherscan tồn tại là do khoảng trống này giữa sự đơn giản của tiêu chuẩn và sự sáng tạo của những kẻ lừa đảo.