

Ethereum do Vitalik Buterin sáng lập năm 2014, định vị như một nền tảng mã nguồn mở cho các ứng dụng phi tập trung (DApps). Động lực lớn nhất khiến Buterin xây dựng blockchain mới xuất phát từ sự thiếu linh hoạt của giao thức Bitcoin.
Từ khi ra đời, blockchain Ethereum đã thu hút đông đảo nhà phát triển, doanh nghiệp và doanh nhân, hình thành một ngành công nghiệp phát triển mạnh với hàng loạt người dùng triển khai hợp đồng thông minh và các ứng dụng phân tán.
Bài viết này sẽ phân tích tiêu chuẩn ERC-20 – khuôn khổ quan trọng để tạo token. Dù ERC-20 là tiêu chuẩn riêng của mạng Ethereum, nhưng nó đã truyền cảm hứng cho nhiều tiêu chuẩn blockchain khác trên nhiều nền tảng.
Trong hệ sinh thái Ethereum, ERC là viết tắt của Ethereum Request for Comments – các tài liệu kỹ thuật mô tả tiêu chuẩn dành cho lập trình viên. Không nên nhầm lẫn ERC với Đề xuất Cải tiến Ethereum (EIP); EIP tương tự như BIP của Bitcoin, là đề xuất cải tiến trực tiếp giao thức, còn ERC đặt ra các quy ước để các ứng dụng và hợp đồng dễ dàng tương tác với nhau.
Tiêu chuẩn ERC-20 do Vitalik Buterin và Fabian Vogelsteller soạn năm 2015, đưa ra định dạng đơn giản cho token trên Ethereum. Tuân thủ tiêu chuẩn này, nhà phát triển không phải làm lại từ đầu mà có thể xây dựng trên nền tảng đã được sử dụng rộng rãi toàn ngành.
Khi token ERC-20 mới ra đời, chúng sẽ tự động tương thích với các dịch vụ, phần mềm hỗ trợ ERC-20 như ví phần mềm, ví cứng, sàn giao dịch.
Lưu ý, tiêu chuẩn ERC-20 về sau được phát triển thành EIP (cụ thể là EIP-20). Việc chuyển đổi này diễn ra vài năm sau đề xuất đầu tiên do sự phổ biến rộng. Tuy nhiên, dù đã nâng cấp, tên gọi "ERC-20" vẫn là thuật ngữ chuẩn mực.
Khác ETH (tiền mã hóa gốc của Ethereum), token ERC-20 không được nắm giữ trực tiếp bởi tài khoản. Token chỉ tồn tại trong hợp đồng thông minh, như một cơ sở dữ liệu độc lập, quy định các thuộc tính (tên, ký hiệu, độ chia nhỏ) và danh sách số dư gắn với địa chỉ Ethereum của người dùng.
Để chuyển token, người dùng phải gửi giao dịch đến hợp đồng, yêu cầu hợp đồng phân bổ một phần số dư sang nơi khác. Ví dụ, Alice muốn gửi 5.000 token cho Bob, cô ấy gọi một hàm trong hợp đồng thông minh để thực hiện việc này.
Lệnh gọi của Alice nằm trong một giao dịch Ethereum bình thường, gửi 0 ETH tới hợp đồng token. Lệnh này nằm trong trường bổ sung của giao dịch, nêu rõ mục đích là chuyển token cho Bob.
Dù Alice không gửi ether, cô ấy vẫn phải trả phí bằng ETH để giao dịch được xác nhận trên blockchain. Nếu không có ETH, cô ấy sẽ phải mua trước khi chuyển token.
Sau khi đã nắm các kiến thức cơ bản, chúng ta cùng xem xét chi tiết cấu trúc hợp đồng ERC-20 tiêu biểu.
Một hợp đồng chuẩn ERC-20 phải có sáu hàm bắt buộc: totalSupply, balanceOf, transfer, transferFrom, approve, allowance. Ngoài ra, nhà phát triển có thể bổ sung các hàm tùy chọn như name, symbol, decimal.
function totalSupply() public view returns (uint256)
Khi được gọi, hàm này trả về tổng nguồn cung token mà hợp đồng hiện có.
function balanceOf(address _owner) public view returns (uint256 balance)
Khác với totalSupply, balanceOf nhận một địa chỉ làm tham số và trả lại số dư token của địa chỉ đó. Mọi tài khoản trên Ethereum đều công khai nên ai cũng có thể kiểm tra số dư nếu biết địa chỉ đó.
function transfer(address _to, uint256 _value) public returns (bool success)
Hàm transfer chuyển token từ người dùng này sang người dùng khác. Người gọi cung cấp địa chỉ nhận và số lượng chuyển.
Khi gọi, transfer sẽ kích hoạt một sự kiện (event transfer), yêu cầu blockchain ghi nhận giao dịch này.
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Hàm transferFrom là giải pháp thay thế cho transfer giúp ứng dụng phi tập trung lập trình linh hoạt hơn. Tương tự transfer, nhưng token chuyển không nhất thiết thuộc người gọi hợp đồng.
Tức là, người dùng có thể ủy quyền cho cá nhân khác – hoặc một hợp đồng khác – chuyển tiền thay mình. Điển hình là dịch vụ thanh toán định kỳ, nơi người dùng muốn chương trình tự động trả phí thay vì thao tác thủ công.
Hàm này cũng kích hoạt cùng sự kiện như transfer.
function approve(address _spender, uint256 _value) public returns (bool success)
Hàm approve rất quan trọng cho lập trình ứng dụng. Người dùng có thể giới hạn số token mà hợp đồng thông minh được phép trích từ số dư. Nếu thiếu hàm này, họ dễ mất toàn bộ tài sản nếu hợp đồng lỗi hoặc bị khai thác.
Ví dụ mô hình đăng ký dịch vụ: nếu người dùng có nhiều token và muốn tự động thanh toán hàng tuần cho một DApp streaming, họ chỉ cần tự động hóa quy trình bằng approve.
Nếu số dư lớn hơn mức cần thiết, có thể dùng approve để đặt giới hạn, ví dụ phí là một token/tuần thì giới hạn là hai mươi token, cho phép thanh toán tự động trong năm tháng.
Trường hợp xấu nhất, nếu DApp rút toàn bộ tiền hoặc xảy ra lỗi, người dùng chỉ mất tối đa hai mươi token thay vì toàn bộ số dư.
Khi gọi, approve sẽ kích hoạt sự kiện approval ghi lên blockchain.
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
Hàm allowance dùng cùng với approve. Khi đã cho phép hợp đồng quản lý token, người dùng có thể kiểm tra số token còn được phép rút. Ví dụ, đăng ký đã dùng mười hai trong hai mươi token, gọi allowance sẽ trả về tám token còn lại.
Các hàm trên là bắt buộc. Tuy nhiên, name, symbol, decimal là tùy chọn nhưng giúp hợp đồng ERC-20 thân thiện với người dùng. Cụ thể, cho phép thêm tên dễ đọc, ký hiệu (như ETH, BTC…) và số chữ số thập phân có thể chia nhỏ. Token tiền tệ thường cần chia nhỏ hơn token đại diện tài sản vật lý.
Kết hợp các hàm trên, nhà phát triển tạo một hợp đồng ERC-20 đầy đủ chức năng, cho phép truy vấn tổng cung, số dư, chuyển token và cấp quyền cho DApp khác quản lý token thay mặt người dùng.
Điểm nổi bật của token ERC-20 là tính linh hoạt. Các quy ước không bó buộc phát triển, giúp các bên tùy chỉnh tính năng, tham số cho phù hợp nhu cầu thực tế.
Stablecoin (token neo giá vào tiền pháp định) thường tuân theo tiêu chuẩn ERC-20, phần lớn stablecoin lớn đều phát hành dưới dạng này.
Với stablecoin truyền thống bảo chứng bằng tiền pháp định, tổ chức phát hành giữ dự trữ tiền pháp định và phát hành số token tương ứng. Ví dụ, có 10.000 USD trong kho thì phát hành 10.000 token, mỗi token đổi được 1 USD.
Cách này dễ thực hiện trên Ethereum về mặt kỹ thuật: chỉ cần triển khai hợp đồng với lượng token mong muốn rồi phân phối cho người dùng kèm cam kết đổi được tiền pháp định tương ứng.
Người dùng có thể dùng token để mua bán, sử dụng trong DApp hoặc yêu cầu đổi lại tiền pháp định. Khi đổi, tổ chức phát hành sẽ đốt token và rút số tiền tương ứng khỏi dự trữ.
Hợp đồng vận hành hệ thống khá đơn giản, nhưng phát hành stablecoin đòi hỏi nhiều giải pháp ngoại vi như hậu cần và tuân thủ pháp lý.
Security token cấu trúc tương tự stablecoin và ở cấp hợp đồng có thể giống hệt nhau. Khác biệt ở cấp tổ chức phát hành: Security token đại diện cho chứng khoán như cổ phiếu, trái phiếu hoặc tài sản vật lý. Thường (nhưng không bắt buộc), chúng trao cho người nắm giữ một phần quyền sở hữu doanh nghiệp hoặc tài sản.
Utility token là loại phổ biến nhất trong lĩnh vực crypto. Không giống hai loại trên, chúng không bảo chứng tài sản bên ngoài. Nếu asset-backed token giống cổ phiếu hãng hàng không, utility token như điểm tích lũy bay: phục vụ chức năng riêng, không có giá trị ngoại lai. Utility token có thể dùng làm tiền tệ trong game, nhiên liệu cho DApp, điểm thưởng và nhiều ứng dụng khác.
Ether (ETH) có thể khai thác, nhưng token ERC-20 thì không – chúng được đúc (minted) khi phát hành mới. Khi triển khai hợp đồng, nhà phát triển phân phối nguồn cung theo kế hoạch.
Phân phối này thường qua Phát hành coin lần đầu (ICO), Phát hành coin trên sàn (IEO), Phát hành token chứng khoán (STO). Dù có nhiều biến thể, bản chất đều là: nhà đầu tư gửi ether vào hợp đồng, nhận lại token. Số tiền thu được dùng phát triển dự án, người dùng kỳ vọng sử dụng token hoặc bán lại kiếm lời khi dự án phát triển.
Việc phân phối token không nhất thiết tự động. Nhiều sự kiện gọi vốn cho phép thanh toán bằng nhiều loại tiền mã hóa, số dư được phân bổ vào địa chỉ người tham gia cung cấp.
Token ERC-20 hoàn toàn có thể thay thế – mỗi đơn vị tương đương đơn vị khác. Dù nắm bất kỳ token ERC-20 nào, người dùng đều có thể trao đổi với token của người khác mà giá trị, chức năng không đổi, như tiền mặt hoặc vàng.
Đặc điểm này lý tưởng cho token làm tiền tệ, vì không ai muốn mỗi đơn vị có thuộc tính riêng, gây ra chênh lệch giá trị, mất vai trò trung gian trao đổi.
Token ERC-20 cực kỳ linh hoạt, phù hợp nhiều ứng dụng: tiền tệ trong game, điểm thưởng, vật phẩm số sưu tầm, đại diện cho tài sản, tác phẩm nghệ thuật…
ERC-20 phổ biến rộng rãi trong ngành crypto, là cơ sở để xây dựng. Có hàng loạt sàn, ví, hợp đồng thông minh đã hỗ trợ chuẩn ERC-20. Ngoài ra, cộng đồng phát triển và tài liệu hướng dẫn rất phong phú.
Ethereum cũng như nhiều mạng blockchain khác gặp vấn đề về mở rộng. Gửi giao dịch vào giờ cao điểm sẽ phải chịu phí cao, chậm trễ. Nếu ra mắt token ERC-20 khi mạng tắc nghẽn, khả năng sử dụng sẽ giảm mạnh.
Đây là đặc điểm chung của hệ thống phân tán, bảo mật. Cộng đồng Ethereum đã lên kế hoạch nâng cấp để giải quyết vấn đề này.
Công nghệ không có lỗi, nhưng việc tạo token ERC-20 quá dễ khiến ai cũng làm được – cả hợp pháp lẫn lừa đảo.
Vì vậy, người dùng nên cảnh giác khi đầu tư. Có nhiều dự án đa cấp, Ponzi giả dạng blockchain. Nên nghiên cứu kỹ trước khi rót vốn để tránh rủi ro mất trắng.
ERC-20 là tiêu chuẩn token đầu tiên và phổ biến nhất trên Ethereum, nhưng không phải duy nhất. Nhiều tiêu chuẩn khác ra đời để cải tiến ERC-20 hoặc phục vụ mục tiêu khác.
Một số tiêu chuẩn ít phổ biến hơn ứng dụng cho NFT (token không thể thay thế). Một số trường hợp, token độc nhất có thuộc tính riêng lại hữu ích. Nếu muốn mã hóa tác phẩm nghệ thuật độc bản, vật phẩm game… các hợp đồng này là lựa chọn phù hợp.
Tiêu chuẩn ERC-721 từng được sử dụng cho DApp CryptoKitties nổi tiếng, cung cấp API cho phép người dùng tự đúc NFT và mã hóa dữ liệu như hình ảnh, mô tả.
ERC-1155 là cải tiến kết hợp cả ERC-721 và ERC-20, hỗ trợ cùng lúc token có thể thay thế và không thể thay thế trong một hợp đồng.
Các tiêu chuẩn khác như ERC-223, ERC-621 nhằm nâng cao trải nghiệm. ERC-223 bổ sung chức năng bảo vệ tránh chuyển nhầm token, ERC-621 bổ sung các hàm điều chỉnh nguồn cung token.
Tiêu chuẩn ERC-20 đã dẫn dắt thị trường tài sản số nhiều năm với ưu điểm dễ triển khai cho nhiều mục đích, từ utility token tới stablecoin. Tuy vậy, ERC-20 thiếu một số tính năng mà các tiêu chuẩn mới cung cấp. Tương lai liệu tiêu chuẩn nào thay thế ERC-20 vẫn còn bỏ ngỏ.
Token ERC-20 là tài sản số chuẩn hóa trên blockchain Ethereum, tuân thủ quy định kỹ thuật riêng. Khác với tiền mã hóa gốc như Bitcoin, token ERC-20 do hợp đồng thông minh tạo ra, đại diện giá trị nội bộ mạng Ethereum và cho phép thiết lập tokenomics, các ứng dụng tùy biến.
Token ERC-20 hoạt động qua hợp đồng thông minh trên Ethereum, tuân thủ giao thức cho phép chuyển token, theo dõi số dư, xác thực quyền truy xuất. Mỗi giao dịch được ghi nhận trên blockchain, đảm bảo minh bạch, an toàn và giúp người dùng gửi nhận token dễ dàng.
ERC-20 đặt ra giao diện tiêu chuẩn cho token có thể thay thế trên Ethereum. Các tính năng chính gồm chuyển token giữa các địa chỉ, cơ chế phê duyệt chi tiêu, theo dõi số dư, quản lý tổng cung, ghi nhận sự kiện. Điều này đảm bảo khả năng tương tác giữa ví và các ứng dụng phi tập trung.
Sử dụng hợp đồng thông minh Solidity trên Ethereum, triển khai qua Remix IDE hoặc Hardhat, cài đặt giao diện ERC-20 với các hàm đúc, chuyển token, sau đó xuất bản lên mainnet. Quá trình này yêu cầu phí gas triển khai.
ERC-20 là tiêu chuẩn token có thể thay thế trên Ethereum. BEP-20 là tiêu chuẩn tương đương trên Binance Smart Chain. ERC-721 tạo NFT (NFT) với thuộc tính độc nhất. Khác biệt cốt lõi: ERC-20 giống hệt, chia nhỏ; ERC-721 độc nhất, không thể chia nhỏ.
Các rủi ro chính gồm lỗ hổng hợp đồng thông minh, tấn công lừa đảo, đánh cắp khóa cá nhân, token giả mạo. Nên dùng ví an toàn, xác minh địa chỉ hợp đồng, bật xác thực hai lớp và chỉ giao dịch trên nền tảng uy tín để bảo vệ tài sản.











