Giới Thiệu Về Token ERC-20
Trang chủ
Bài viết
Giới Thiệu Về Token ERC-20

Giới Thiệu Về Token ERC-20

Trung cấp
Đã đăng Jul 31, 2020Đã cập nhật Dec 28, 2022
12m

Nội dung


Giới thiệu

Ethereum được sáng lập bởi Vitalik Buterin vào năm 2014. Từ đó, Ethereum tự định vị mình là một nền tảng mã nguồn mở để khởi chạy các ứng dụng phi tập trung (các DApp). Động lực chính của Buterin để tạo ra blockchain Ethereum là sự không hài lòng vì tính thiếu linh hoạt của giao thức Bitcoin.
Kể từ khi ra mắt, blockchain Ethereum đã thu hút các lập trình viên, doanh nghiệp và doanh nhân, tạo ra một ngành công nghiệp ngày càng phát triển, mà ở đó người dùng khởi chạy các hợp đồng thông minh và các ứng dụng phân tán.
Trong bài viết này, chúng ta sẽ tìm hiểu về tiêu chuẩn ERC-20, một framework quan trọng để tạo ra các token. Mặc dù ban đầu tiêu chuẩn này được dành riêng cho mạng Ethereum, nhưng nó đã truyền cảm hứng cho các tiêu chuẩn blockchain khác, chẳng hạn như tiêu chuẩn BEP-2 của Binance Chain.


Tiêu chuẩn ERC-20 là gì?

Trong Ethereum, ERC là một Yêu cầu nhận xét của Ethereum (Ethereum Request for Comments). Đây là những tài liệu kỹ thuật phác thảo các tiêu chuẩn để lập trình trên Ethereum. Không nên nhầm lẫn chúng với Đề xuất cải tiến Ethereum (tức các EIP). Giống như BIP của Bitcoin, EIP là những đề xuất cải tiến cho chính giao thức. Thay vào đó, các ERC nhằm mục đích thiết lập các quy ước giúp các ứng dụng và hợp đồng tương tác với nhau dễ dàng hơn.

Được đề xuất bởi Vitalik Buterin và Fabian Vogelsteller vào năm 2015, ERC-20 đề xuất một định dạng tương đối đơn giản cho các token hoạt động trên Ethereum. Bằng cách làm theo phác thảo, các nhà phát triển không cần phải phát minh lại cấu trúc nào khác. Thay vào đó, họ có thể xây dựng trên một nền tảng đã được sử dụng trong toàn ngành.

Sau khi token ERC-20 mới được tạo, chúng sẽ tự động tương thích với các dịch vụ và phần mềm hỗ trợ tiêu chuẩn ERC-20 ( như các ví phần mềmví phần cứngsàn giao dịch , v.v.).

Cần lưu ý rằng tiêu chuẩn ERC-20 đã được phát triển thành EIP (cụ thể là EIP-20). Điều này diễn ra sau một vài năm khi bản đề xuất ban đầu đã được sử dụng rộng rãi. Tuy nhiên, dù nhiều năm đã trôi qua, cái tên “ERC-20” vẫn được giữ nguyên.


Tóm tắt nhanh về các token Ethereum

Không giống như ETH (tiền mã hoá gốc của Ethereum), các token ERC-20 không được giữ bởi tài khoản. Các token này chỉ tồn tại trong một hợp đồng, giống như một cơ sở dữ liệu độc lập. Nó chỉ định các quy tắc cho các token (như tên, ký hiệu, khả năng phân chia) và giữ một danh sách ánh xạ số dư của người dùng đến địa chỉ Ethereum của họ.

Để di chuyển các token, người dùng phải gửi một giao dịch đến hợp đồng yêu cầu nó phân bổ một số số dư của họ tới nơi khác. Ví dụ: nếu Alice muốn gửi 5.000 BinanceAcademyTokens cho Bob, cô ấy sẽ gọi một hàm bên trong hợp đồng thông minh BinanceAcademyToken để yêu cầu nó làm như vậy.



Cuộc gọi của cô ấy chứa bên trong những gì dường như là một giao dịch Ethereum thông thường, trả 0 ETH cho hợp đồng token. Lệnh gọi được bao gồm trong một trường bổ sung giao dịch, trường này chỉ định những gì Alice muốn làm – trong trường hợp của chúng ta, đó là chuyển token cho Bob.

Mặc dù cô ấy không gửi ether, nhưng cô ấy vẫn phải trả một khoản phí có mệnh giá để giao dịch của cô ấy được ghi vào trong một khối . Nếu cô ấy không có ETH, cô ấy cần chuẩn bị một số ETH trước khi chuyển các token.
Trên Etherscan, bạn có thể xemví dụ thực tế này về việc ai đó đang thực hiện cuộc gọi đến hợp đồng BUSD. Bạn có thể thấy các token đã được chuyển và một khoản phí đã được thanh toán, mặc dù trường Value cho thấy rằng 0 ETH đã được gửi.

Bây giờ chúng ta đã hiểu một cách cơ bản, hãy cùng xem xét kỹ để hiểu rõ hơn về cấu trúc của một hợp đồng ERC-20 điển hình. 


Token ERC-20 được tạo ra như thế nào?



Để tuân thủ ERC-20, hợp đồng của bạn cần bao gồm sáu chức năng bắt buộc: totalSupply , balanceOf , transfer , transferFrom , approveallowance . Ngoài ra, bạn có thể chỉ định các chức năng tùy chọn, chẳng hạn như name, symboldecimal. Bạn có thể hiểu khái quát các tính năng này từ tên của chúng. Nếu chưa, đừng lo lắng – chúng ta sẽ tìm hiểu từng tính năng ngay bây giờ. 

Dưới đây là các chức năng (funtion) khi chúng xuất hiện trong ngôn ngữ Solidity (ngôn ngữ lập trình trên Ethereum).


totalSupply

function totalSupply() public view returns (uint256)
Khi được người dùng gọi, hàm trên trả về tổng nguồn cung token mà hợp đồng nắm giữ.


balanceOf 

function balanceOf (address _owner) public view trả về (uint256 balance)
Không giống như totalSupply, balanceOf nhận một tham số (một địa chỉ). Khi hàm được gọi, nó trả về số dư token mà địa chỉ đó đang nắm giữ. Hãy nhớ rằng các tài khoản trên mạng Ethereum là công khai, vì vậy bạn có thể truy vấn số dư của bất kỳ người dùng nào mà bạn biết địa chỉ.


chuyển

function transfer(address _to, uint256 _value) public returns (bool success)
Tính năng transfer chuyển một cách khéo léo các token từ người dùng này sang người dùng khác. Tại đây, bạn cung cấp địa chỉ muốn gửi và số tiền cần chuyển.
Khi tính năng được gọi, transfer sẽ kích hoạt một thứ được gọi là event (trong trường hợp này là event transfer). Về cơ bản, điều này yêu cầu blockchain bao gồm một tham chiếu đến nó.


transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Chức năng transferFrom là một sự thay thế tiện dụng hơn so với chức năng transfer. Nó cho phép lập trình nhiều hơn một chút trong các ứng dụng phi tập trung. Giống như transfer, nó được sử dụng để di chuyển token, nhưng những token đó không nhất thiết phải thuộc về người gọi hợp đồng. 

Nói cách khác, bạn có thể ủy quyền cho ai đó– hoặc một hợp đồng khác – thay mặt bạn chuyển tiền. Lấy ví dụ như khi bạn cần thanh toán cho các dịch vụ trả phí theo thời gian, khi bạn không muốn tốn thời gian gửi thanh toán theo cách thủ công hàng ngày/tuần/tháng. Thay vào đó, bạn chỉ cần để một chương trình làm việc đó tự động cho bạn.

Hàm này kích hoạt cùng một sự kiện như transfer.


approve

function approve(address _spender, uint256 _value) public returns (bool success)
approve là một chức năng hữu ích và có nhiều hướng để lập trình. Với chức năng này, bạn có thể giới hạn số lượng token mà một hợp đồng thông minh có thể rút từ số dư của bạn. Nếu không có nó, bạn phải đối mặt với nguy cơ hợp đồng bị trục trặc (hoặc bị lợi dụng) và tất cả tiền của bạn có khả năng bị đánh cắp. 
Lấy ví dụ về một mô hình đăng ký (subscription) một lần nữa. Giả sử rằng bạn có một lượng lớn BinanceAcademyTokens và bạn muốn thiết lập các khoản thanh toán định kỳ hàng tuần cho một DApp trực tuyến. Vì bận rộn đọc các bài viết của Binance Academy cả ngày lẫn đêm, bạn không muốn mất thời gian tạo giao dịch theo cách thủ công mỗi tuần.
Và bạn cũng có một số dư lớn BinanceAcademyTokens, vượt xa số tiền cần thanh toán. Để ngăn DApp rút hết tiền, bạn có thể đặt giới hạn bằng chức năng approve. Giả sử, việc đăng ký dịch vụ khiến bạn tốn một BinanceAcademyToken mỗi tuần. Nếu bạn giới hạn giá trị được phê duyệt ở mức 20 token, bạn có thể chọn thanh toán tự động cho đăng ký của mình trong năm tháng.

Tệ nhất, nếu DApp cố gắng rút tất cả tiền của bạn hoặc nếu phát hiện thấy lỗi, bạn chỉ có thể mất hai mươi token. Điều kiện này không phải là lý tưởng, nhưng ít nhất nó không khiến bạn mất tất cả tài sản mình đang nắm giữ.

Khi được gọi, approve sẽ kích hoạt sự kiện approval. Giống như sự kiện trong transfer, chức năng approve cũng ghi dữ liệu vào blockchain.


allowance 

function allowance(address _owner, address _spender) public view returns (uint256 remaining)
allowance có thể được sử dụng cùng với approve . Khi bạn đã cho phép hợp đồng quản lý các token của mình, bạn có thể sử dụng quyền này để kiểm tra xem nó vẫn có thể rút được bao nhiêu tiền. Ví dụ: nếu gói đăng ký của bạn đã sử dụng hết mười hai trong số hai mươi token được chấp thuận của bạn, thì việc gọi hàm allowance sẽ trả về tổng số là tám.


Các chức năng tùy chọn

Các chức năng đã được đề cập ở trên là bắt buộc. Ngoài ra, bạn còn có thể sử dụng các funtion name , symboldecimal(số thập phân). Tuy chúng không bắt buộc, nhưng chúng có thể làm cho hợp đồng ERC-20 của bạn đẹp hơn một chút. Một cách tương ứng, chúng cho phép bạn thêm các tên mà con người có thể đọc được, đặt ký hiệu (ví dụ: ETH, BTC, BNB) và chỉ định token có thể được chia nhỏ thành bao nhiêu số thập phân. Ví dụ: sẽ tiện lợi hơn nếu token được sử dụng làm tiền tệ có thể phân chia thành nhiều phần token nhỏ hơn, giúp đại diện cho quyền sở hữu tài sản.


Bạn có thể tìm hiểu ví dụ này trên GitHub để xem các yếu tố này trong một smart contract thực tế.


Token ERC-20 có thể làm những gì?



Bằng cách kết hợp tất cả các chức năng ở trên, chúng ta đã có hợp đồng ERC-20. Chúng ta có thể truy vấn tổng nguồn cung, kiểm tra số dư, chuyển tiền và cấp quyền cho các DApp khác quản lý token của mình.

Một phần lớn tạo nên sự hấp dẫn của token ERC-20 là tính linh hoạt của chúng. Các quy ước đặt ra không hạn chế sự phát triển, vì vậy các bên có thể triển khai các tính năng bổ sung và đặt các thông số cụ thể phù hợp với nhu cầu của họ.


Stablecoin

Stablecoin (các token neo giá theo tiền pháp định) thường sử dụng tiêu chuẩn token ERC-20. Giao dịch với hợp đồng BUSD mà chúng ta đã đề cập trước đó là một ví dụ. Hầu hết các stablecoin chúng ta biết cũng dùng định dạng này.

Đối với một stablecoin được bảo đảm bởi tiền pháp định, nhà phát hành nắm giữ các khoản dự trữ bằng euro, đô-la, v.v. Sau đó, với mỗi đơn vị trong kho dự trữ, họ sẽ phát hành một token. Điều này có nghĩa là nếu 10.000 đô-la bị khóa trong kho lưu trữ, nhà phát hành có thể tạo ra 10.000 token, mỗi token có thể đổi được 1 đô-la.

Về mặt kỹ thuật, điều này có thể thực hiện khá dễ dàng trên Ethereum. Nhà phát hành chỉ cần khởi chạy một hợp đồng với 10.000 token. Sau đó, họ sẽ phân phối chúng cho người dùng với lời hứa rằng sau này họ có thể đổi các token để lấy một lượng tiền pháp định tương ứng. 

Người dùng có thể thực hiện một số việc với token của họ – có thể mua hàng hóa và dịch vụ hoặc sử dụng chúng trong các DApp. Ngoài ra, họ có thể yêu cầu nhà phát hành đổi chúng thành tiền thật ngay lập tức. Trong trường hợp đó, nhà phát hành đốt các token được trả lại (khiến chúng không thể sử dụng được) và rút số tiền pháp định chính xác từ các khoản dự trữ của họ.

Hợp đồng điều chỉnh hệ thống này, như đã nói ở trên, việc này được thực hiện tương đối đơn giản. Tuy nhiên, việc tung ra một stablecoin không chỉ có thế, mà còn đòi hỏi rất nhiều công việc được thực hiện khác nữa như logistic, tuân thủ quy định, v.v.


Các token chứng khoán

Token chứng khoán (security token) tương tự như stablecoin. Ở cấp độ hợp đồng, cả hai trông giống hệt nhau vì chúng hoạt động theo cùng một cách. Sự khác biệt diễn ra ở cấp độ người phát hành. Token chứng khoán đại diện cho chứng khoán, chẳng hạn như cổ phiếu, trái phiếu hoặc tài sản vật chất. Thông thường (mặc dù không phải lúc nào cũng vậy), các token loại này cấp cho người nắm giữ một số loại cổ phần trong một doanh nghiệp hoặc hàng hóa.


Các token tiện ích

Các token tiện ích (utility token) có lẽ là loại token phổ biến nhất hiện nay. Không giống như hai loại trước, chúng không được bảo đảm bởi bất cứ loại tài sản nào. Nếu các loại token kia được đảm bảo bởi các loại tài sản giống như cổ phiếu thì token tiện ích lại giống như các tờ rơi quảng cáo: chúng phục vụ một chức năng, nhưng không có giá trị ở bên ngoài. Các token tiện ích có thể dùng cho vô số trường hợp sử dụng, chúng có thể đóng vai trò như tiền tệ trong trò chơi, nhiên liệu cho các ứng dụng phi tập trung, điểm khách hàng thân thiết và nhiều thứ khác.



Có thể đào token ERC-20 không?

Bạn có thể đào ether (ETH), nhưng các token không thể đào được – đúng hơn, chúng được tạo ra bằng cách đúc. Khi hợp đồng được đưa ra, các nhà phát triển sẽ phân phối nguồn cung theo kế hoạch và lộ trình của họ.
Thông thường, điều này được thực hiện thông qua một đợt Phát hành tiền mã hóa lần đầu (ICO), Phát hành tiền mã hoá trên sàn (IEO) hoặc Phát hành token chứng khoán (STO). Bạn có thể bắt gặp biến thể của những từ viết tắt này, nhưng về cơ bản, những khái niệm này khá giống nhau. Các nhà đầu tư gửi ether đến địa chỉ hợp đồng và đổi lại, nhận được các token mới. Số tiền thu được được sử dụng để tài trợ cho việc phát triển dự án. Người dùng mong đợi có thể sử dụng token của họ (ngay lập tức hoặc muộn hơn) hoặc bán lại chúng để kiếm lợi nhuận khi dự án phát triển.

Việc phân phối token không cần phải được tự động hóa. Nhiều sự kiện huy động vốn cộng đồng cho phép người dùng thanh toán bằng nhiều loại tiền kỹ thuật số khác nhau (chẳng hạn như BNB, BTC, ETH và USDT). Số dư tương ứng sau đó được phân bổ đến các địa chỉ do người dùng cung cấp.


Ưu và nhược điểm của token ERC-20

Ưu điểm của token ERC-20

Khả năng thay thế lẫn nhau

Mỗi token ERC-20 có thể thay thế lẫn nhau – tức là mỗi đơn vị có thể khả năng sử dụng và giá trị tương đương. Nếu bạn nắm giữ BinanceAcademyToken, việc bạn nắm giữ token cụ thể nào không quan trọng. Bạn có thể giao dịch, trao đổi nó với token của người khác và chúng vẫn giống hệt nhau về mặt chức năng, giống như việc trao đổi tiền mặt hoặc vàng.

Điều này rất có lợi, nếu token của bạn có mục tiêu trở thành một loại tiền tệ nào đó. Bạn sẽ không muốn các đơn vị riêng lẻ có các đặc điểm khác biệt, bởi điều này khiến chúng không thể thay thế được. Điều này có thể khiến một số token trở nên có giá trị hơn– hoặc ít có giá trị hơn – những token khác, làm suy yếu mục đích của chúng.


Tính linh hoạt

Như chúng ta đã biết, các token ERC-20 có khả năng tùy chỉnh cao và có thể được điều chỉnh cho phù hợp với nhiều ứng dụng khác nhau. Ví dụ: chúng có thể được sử dụng làm tiền tệ trong trò chơi, trong các chương trình điểm khách hàng thân thiết, làm sản phẩm sưu tầm kỹ thuật số hoặc thậm chí để đại diện cho tác phẩm mỹ thuật và quyền tài sản.


Sự phổ biến

Sự phổ biến của ERC-20 trong ngành công nghiệp tiền mã hoá là một lý do rất thuyết phục để sử dụng nó làm một tiêu chuẩn chung. Có rất nhiều sàn giao dịch, ví và hợp đồng thông minh đã tương thích với các token này. Hơn nữa, sự hỗ trợ của các nhà phát triển và tài liệu cũng rất phong phú. 


Nhược điểm của token ERC-20

Khả năng mở rộng

Như nhiều mạng blockchain, khả năng mở rộng là thách thức không loại trừ Ethereum. Với hình thức hiện tại, việc mở rộng quy mô của Ethereum diễn ra không tốt – việc cố gắng gửi một giao dịch vào thời gian cao điểm dễ dẫn đến phí cao và sự chậm trễ. Nếu bạn khởi chạy token ERC-20 và mạng bị tắc nghẽn, khả năng sử dụng của nó có thể bị ảnh hưởng.

Đây không phải là vấn đề dành riêng cho Ethereum. Đúng hơn, đó là một sự đánh đổi cần thiết trong các hệ thống phi tập trung để đảm bảo sự an toàn. Cộng đồng có kế hoạch giải quyết những vấn đề này trong quá trình di cư sang Ethereum 2.0 - nơi diễn ra các nâng cấp như Ethereum Plasma và Ethereum Casper .
Để hiểu thêm các vấn đề về khả năng mở rộng, bạn có thể đọc thêm bài viết:  Khả năng mở rộng của Blockchain: Sidechains và Kênh thanh toán .


Rủi ro lừa đảo

Mặc dù đây không phải là lỗi của công nghệ, nhưng việc dễ dàng ra mắt token mới có thể coi là một nhược điểm ở một số khía cạnh. Cần rất ít nỗ lực để tạo ra một token ERC-20 đơn giản, có nghĩa là bất kỳ ai cũng có thể làm điều đó – dù với mục đích tốt hay xấu.

Do đó, bạn nên cẩn thận với những gì mình đang đầu tư. Không thiếu những dự án lừa đảo sử dụng mô hình đa cấp như Pyramid và Ponzi được ngụy trang thành các dự án blockchain.  Tự nghiên cứu là việc làm cần thiết trước khi đầu tư bất cứ dự án nào.

 

ERC-20, ERC-1155, ERC-223, ERC-721 – đâu là sự khác biệt?

ERC-20 là tiêu chuẩn token Ethereum đầu tiên (và cho đến nay là tiêu chuẩn phổ biến nhất), nhưng không có nghĩa nó là tiêu chuẩn duy nhất. Trong những năm qua, nhiều nhà phát triển khác đã đề xuất các cải tiến trên ERC-20, hoặc theo đuổi các mục tiêu khác.

Một số tiêu chuẩn ít phổ biến hơn là các tiêu chuẩn sử dụng cho token không thể thay thế (các NFT). Đôi khi, các token độc nhất cũng mang lại những trường hợp sử dụng mới hữu ích. Ví dụ như việc mã hoá các tác phẩm nghệ thuật, vật phẩm trong trò chơi, v.v., một trong những ứng dụng có thể hấp dẫn và dễ hiểu hơn với công chúng.
Chẳng hạn, ERC-721 là tiêu chuẩn được sử dụng cho Dapp trò chơi từng rất nổi tiếng CryptoKitties. Một hợp đồng như vậy cung cấp một API để người dùng đúc các token không thể thay thế của riêng họ và mã hóa siêu dữ liệu (metadata như hình ảnh, mô tả, v.v.). 

Tiêu chuẩn ERC-1155 có thể được coi là một cải tiến trên cả ERC-721 và ERC-20. Nó tạo ra một tiêu chuẩn hỗ trợ cả token có thể thay thế lẫn nhau và không thể thay thế trong cùng một hợp đồng.

Ngoài ra, còn có các tiêu chuẩn khác như ERC-223 hoặc ERC-621 giúp có thêm nhiều khả năng sử dụng. Tiêu chuẩn đầu tiên thực hiện các biện pháp bảo vệ để ngăn chặn việc chuyển token ngẫu nhiên. Loại thứ hai bổ sung các chức năng để tăng và giảm nguồn cung cấp token.

Để biết thêm về chủ đề NFT, hãy đọc bài viết Hướng Dẫn Về Sản Phẩm Mã Hóa Sưu Tập Và Token Không Thể Thay Thế (NFT).


Tổng kết

Tiêu chuẩn ERC-20 đã thống trị ngành tiền mã hoá trong nhiều năm và không khó để hiểu tại sao. Vì khá dễ sử dụng, bất kỳ ai cũng có thể triển khai một hợp đồng đơn giản, phù hợp với nhiều trường hợp sử dụng (như các token tiện ích, stablecoin, v.v.). Tuy nhiên, vẫn còn nhiều tính năng chưa được triển khai trong thực tế. Vậy nên chúng ta có thể tiếp tục đón chờ các loại hợp đồng khác được thực hiện trên tiêu chuẩn này.