Giới thiệu về Token ERC-20
HomeArticles

Giới thiệu về Token ERC-20

Trung cấp
2d ago
11m

Nội dung


Giới thiệu

Ethereum được tạo ra bởi Vitalik Buterin vào năm 2014, tự định vị là một nền tảng mã nguồn mở để khởi chạy các ứng dụng phi tập trung (DApp). Động cơ của Buterin trong việc tạo ra một blockchain mới xuất phát từ sự thiếu linh hoạt của giao thức Bitcoin.

Kể từ khi ra mắt, blockchain Ethereum đã thu hút các nhà phát triển, doanh nghiệp và doanh nhân, tạo ra một ngành công nghiệp đang phát triển mà trong đó người dùng phát hành 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 tiêu chuẩn ERC-20, một framework quan trọng để tạo ra các token. Mặc dù gắn riêng với mạng Ethereum, framework này đã truyền cảm hứng cho sự xuất hiện của các tiêu chuẩn blockchain khác, chẳng hạn như BEP-2 của Binance Chain.


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

Trong Ethereum, ERC là viết tắt của Ethereum Request for Comments. Chúng là những tài liệu kỹ thuật phác thảo các tiêu chuẩn cho việc lập trình trên Ethereum. Chúng phân biệt với Ethereum Improvement Proposals (EIP). EIP, giống như BIP của Bitcoin, đề xuất các cải tiến cho chính giao thức. Thay vào đó, ERC nhắm tới việc thiết lập các quy ước giúp ứng dụng và hợp đồng tương tác với nhau dễ dàng hơn.

Được ủy quyền 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 dựa 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ái bánh xe. Thay vào đó, họ có thể xây dựng trên một nền tảng đã được sử dụng trên toàn ngành.

Khi các token ERC-20 mới được tạo, chúng sẽ tự động tương tác với các dịch vụ và phần mềm hỗ trợ tiêu chuẩn ERC-20 (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 một EIP (cụ thể là EIP-20). Việc này đã diễn ra được một vài năm sau khi có đề xuất ban đầu do nó được sử dụng rộng rãi. Tuy nhiên, thậm chí nhiều năm sau đó, cái tên “ERC-20” vẫn được dùng.


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

Không giống như ETH (đồng tiền mã hóa của Ethereum), token ERC-20 không được giữ bởi các tài khoản. 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ó định rõ các quy tắc cho token (tên, ký hiệu, tính 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ọ.

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


Người dùng tương tác với một hợp đồng thông minh


Lệnh call của Alice ở bên trong hàm là một giao dịch Ethereum thông thường với giá trị 0 ETH trả cho hợp đồng token. Lệnh call được chứa trong một trường phát sinh trong giao dịch, trong đó định rõ Alice muốn làm gì – trong trường hợp của chúng ta thì việc đó là chuyển token cho Bob.

Mặc dù Alice không gửi ether, cô vẫn phải trả một khoản phí để giao dịch của mình được đưa vào trong một khối. Nếu Alice không có ETH, cô ấy cần chuẩn bị một số trước khi thực hiện chuyển token.

Sau đây là một ví dụ thực tế trên Etherscan để minh họa những nội dung trên: ai đó đang thực hiện một lệnh call đế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 Giá trị hiển thị rằng 0 ETH đã được gửi.

Giờ chúng ta đi nhanh hơn nhé, hãy cùng đi sâu hơn để hiểu rõ hơn 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?


Minh hoạ quá trình tạo ra một token ERC-20


Để được gọi là tuân thủ tiêu chuẩn ERC-20, hợp đồng của bạn cần bao gồm sáu hàm bắt buộc: totalSupply, balanceOf, transfer, transferFrom, approve, và allowance. Ngoài ra, bạn có thể định rõ các hàm tùy chọn, chẳng hạn như name (tên), symbol (ký hiệu), và decimal (thập phân). Bạn có thể thấy rõ các hàm là gì từ cái tên của chúng. Nếu không, đừng lo lắng – chúng ta sẽ cùng tìm hiểu. 

Dưới đây là các hàm xuất hiện trong ngôn ngữ Solidity được xây dựng theo mục đích của Ethereum.


totalSupply

function totalSupply() public view returns (uint256)

Khi được gọi bởi một người dùng, hàm trên trả về kết quả là tổng cung của token mà hợp đồng nắm giữ.


balanceOf 

function balanceOf(address _owner) public view returns (uint256 balance)

Không giống như totalSupply, balanceOf lấy một tham số (một địa chỉ). Khi được gọi, nó trả về số dư tài sản token của địa chỉ đó. 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 bất kỳ số dư nào của người dùng miễn là bạn biết địa chỉ.


transfer

function transfer(address _to, uint256 _value) public returns (bool success)

transfer chuyển 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ỉ bạn muốn gửi và số tiền cần chuyển.

Khi được gọi, transfer kích hoạt một sự kiện (trong trường hợp này, sự kiện đó là chuyển tiền). Về cơ bản, nó yêu cầu blockchain đưa một tham chiếu đến nó.


transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)

Hàm transferFrom là một thay thế tiện dụng cho transfer cho phép khả năng 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 để chuyển đi các token, nhưng các token đó không nhất thiết phải thuộc về người yêu cầu hợp đồng. 

Nói cách khác, bạn có thể ủy quyền cho ai đó – hoặc hợp đồng khác – để chuyển tiền thay cho bạn. Một trường hợp ứng dụng khả thi chính là thanh toán cho các dịch vụ dựa trên đăng ký, trong đó bạn không cần phải gửi thanh toán thủ công cho mỗi ngày/tuần/tháng mà sẽ để một chương trình làm điều đó cho bạn.

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


approve

function approve(address _spender, uint256 _value) public returns (bool success)

approve là một hàm hữu ích khác từ quan điểm lập trình. Với hàm 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. Không có nó, bạn có thể gặp rủi ro về lỗi hợp đồng (hoặc bị khai thác) và bị trộm mất tất cả tiền. 

Hãy lấy lại ví dụ của về một mô hình đăng ký. Giả sử rằng bạn có một lượng BinanceAcademyToken lớn và bạn muốn thiết lập thanh toán định kỳ hàng tuần cho một streaming DApp. Bạn đang bận đọc các bài viết trên Binance Academy suốt ngày đêm, vì vậy bạn không muốn dành thời gian mỗi tuần để tạo giao dịch theo cách thủ công.

Bạn có một số dư BinanceAcademyToken khổng lồ, lớn hơn mức phí cần trả cho việc đăng ký. Để ngăn DApp rút hết tất cả số dư, bạn có thể đặt giới hạn với approve. Giả sử rằng phí đăng ký của bạn là một BinanceAcademyToken mỗi tuần. Nếu bạn đặt giới hạn duyệt ở mức hai mươi token, thì phí đăng ký sẽ được tự động trả trong năm tháng.

Trường hợp tệ nhất là DApp bị lỗi và rút tất cả tiền của bạn thì bạn sẽ chỉ bị mất hai mươi token. Dù có thể không phải là lý tưởng, nhưng mất 20 token chắc chắn là tốt hơn so với mất tất cả tài sản.

Khi được gọi, approve kích hoạt sự kiện phê duyệt. Giống như sự kiện chuyển tiền, nó 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 đã cấp một quyền hợp đồng để quản lý token của mình, bạn có thể sử dụng quyền này để kiểm tra số lượng tiền vẫn còn có thể rút. Ví dụ: nếu đăng ký của bạn đã sử dụng hết mười hai trong số hai mươi token được duyệt, việc gọi hàm allowance sẽ giúp hoàn lại tám token.


Các hàm tùy chọn

Các hàm được thảo luận trước đó là bắt buộc. Mặt khác, các hàm name (tên), symbol (ký hiệu), và decimal (thập phân) là 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 mắt hơn một chút. Tương ứng, chúng cho phép bạn thêm một tên người có thể đọc được, đặt ký hiệu (ví dụ: ETH, BTC, BNB), và chỉ định số con số thập phân có thể chia đến. Ví dụ: các token được sử dụng làm tiền tệ được hưởng lợi ích nhiều hơn từ việc có thể phân chia so với một token đại diện cho quyền sở hữu một tài sản.


Hãy kiểm tra ví dụ này trên GitHub để xem các hàm này trong một hợp đồng thực sự.


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


Minh họa các ứng dụng khác nhau của các token ERC-20


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

Chiếm một phần lớn trong sức lôi cuốn của các token ERC-20 là tính linh hoạt của chúng. Các quy ước đượ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 tham số cụ thể để phù hợp với nhu cầu của họ.


Stablecoin

Các Stablecoin (token được gắn với các đồng tiền fiat) 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 đã tham chiếu trước đó là một ví dụ, và hầu hết các stablecoin lớn cũng ở định dạng này.

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

Về mặt kỹ thuật, điều này khá dễ thực hiện trong Ethereum. Một đơn vị 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 đó họ có thể đổi các token này lấy một lượng tiền tệ fiat tương ứng. 

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

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


Token chứng khoán

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


Token tiện ích

Token tiện ích có lẽ là loại token phổ biến nhất được thấy hiện nay. Không giống như hai loại trước, chúng không dựa vào bất cứ cái gì. Ví dụ trong một công ty hàng không, nếu như các token dựa vào tài sản giống như các cổ phần trong công ty, thì các token tiện ích giống như các chương trình tích điểm ưu đãi dành cho khách hàng bay thường xuyên: chúng phục vụ một chức năng, nhưng chúng không có giá trị bên ngoài. Các token tiện ích có thể được dùng cho vô số trường hợp ứng dụng như tiền trong game, đơn vị tiền cho các ứng dụng phi tập trung, các chương trình khách hàng trung thành và nhiều loại khác nữa.


Bạn đang muốn bắt đầu cùng tiền mã hóa? Mua ngay ETH tại Binance!


Token ERC-20 có thể đào được không?

Bạn có thể đào ether (ETH), nhưng không thể đào các token – chúng ta nói rằng chúng được đào khi có những token mới được tạo ra. Khi một hợp đồng được phát hành, các nhà phát triển phân phối cung theo kế hoạch và lộ trình của họ.

Thông thường, việc này được thực hiện thông qua một Đợt phát hành Coin đầu tiên (ICO), Chào bán lần đầu trên sàn (IEO), hoặc Chào bán Token Chứng khoán (STO). Bạn có thể bắt gặp các biến thể của các hình thức như vừa nêu trên, nhưng các 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 là nhận được các token mới. Tiền thu được được sử dụng để tài trợ cho việc phát triển hơn nữa của dự án. Người dùng mong đợi có thể sử dụng các token của họ (ngay lập tức hoặc vào một ngày sau này) 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 gây quỹ cộng đồng cho phép người dùng thanh toán bằng một loạt các 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ổ cho các địa chỉ được cung cấp bởi người dùng.


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

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

Fungible

Các token ERC-20 có tính fungible – mỗi đơn vị có thể hoán đổi cho nhau. Nếu bạn có một BinanceAcademyToken, không quan trọng token đó của bạn là như nào, bạn có thể trao đổi nó với token của người khác, và chúng vẫn giống nhau về mặt chức năng, giống như tiền mặt hoặc vàng.

Điều này là lý tưởng nếu token của bạn nhắm tới việc trở thành một loại tiền tệ. Bạn sẽ không muốn mỗi đơn vị riêng lẻ có đặc điểm riêng biệt vì sẽ khiến chúng không có tính fungible. Điều này có thể khiến một số token có giá trị lớn hơn – hoặc kém hơn – các token khác, do đó làm hỏng đi mục đích sử dụng làm tiền của chúng.


Tính linh hoạt

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


Tính phổ biến

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


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

Khả năng mở rộng

Cũng như nhiều mạng tiền mã hóa, Ethereum không tránh khỏi những vấn đề ngày càng gia tăng. Ở dạng hiện tại, khả năng mở rộng của nó không được tốt – cố gắng gửi một giao dịch vào lúc cao điểm dẫn đến phí và độ trễ cao. Nếu bạn khởi chạy một token ERC-20 và mạng bị tắc nghẽn, tính khả dụng của nó có thể bị ảnh hưởng.

Đây không phải là vấn đề riêng biệt đối với Ethereum. Đúng hơn thì nó là một sự đánh đổi cần thiết xoay quanh tính bảo mật và tính phân tán của hệ thống. Cộng đồng có kế hoạch giải quyết những vấn đề này trong quá trình chuyển đổi sang Ethereum 2.0 với việc thực hiện các nâng cấp như Ethereum Plasma và Ethereum Casper.

Tìm hiểu thêm về các vấn đề về khả năng mở rộng trong Khả năng mở rộng Blockchain: Sidechain và Kênh thanh toán.


Lừa đảo

Mặc dù không phải là vấn đề với chính công nghệ, việc dễ dàng phát hành một token có thể được coi là nhược điểm ở một số khía cạnh. Việc tạo ra một token ERC-20 đơn giản không tốn nhiều công sức, có nghĩa là bất kỳ ai cũng có thể làm điều đó – vì mục đích tốt hoặc xấu.

Do đó, bạn nên cẩn thận với những gì bạn đang đầu tư vào. Có một số mô hình Kim tự tháp và Ponzi được ngụy trang thành các dự án blockchain.  Hãy tự nghiên cứu để tự mình đi đến kết luận liệu nó có là hợp pháp hay không trước khi đầu tư.

 

ERC-20, ERC-1155, ERC-223, ERC-721 – sự khác biệt là gì?

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 là duy nhất. Trong những năm qua đã có nhiều tiêu chuẩn khác xuất hiện, hoặc đề xuất cải tiến cho ERC-20 hoặc cố gắng đạt được các mục tiêu khác nhau hoàn toàn.

Một số tiêu chuẩn ít phổ biến hơn là các tiêu chuẩn được sử dụng trong các non-fungible token (NFT). Đôi khi, trong một số trường hợp ứng dụng, bạn hưởng lợi với việc sở hữu các token độc đáo có các thuộc tính khác nhau. Nếu bạn muốn token hóa một tác phẩm nghệ thuật có một không hai, tài sản trong game, v.v., việc sử dụng một trong những loại hợp đồng loại này có thể mang lại nhiều lợi ích hơn.

Tiêu chuẩn ERC-721, ví dụ, đã được sử dụng cho CryptoKitties, một DApp game vô cùng phổ biến. Hợp đồng của DApp game này cung cấp API để người dùng đúc ra các non-fungible token của riêng họ và mã hóa siêu dữ liệu (hình ảnh, nội dung, 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ó phác thảo một tiêu chuẩn hỗ trợ cả fungible token và non-fungible token trong cùng một hợp đồng.

Các tùy chọn khác như ERC-223 hoặc ERC-621 nhằm cải thiện tính khả dụng. ERC-223 thực hiện các biện pháp bảo vệ để ngăn chặn việc chuyển token bị lỗi. ERC-621 thêm các chức năng phụ cho việc tăng và giảm nguồn cung token.

Để tìm hiểu thêm về NFT, hãy xem Hướng dẫn về Vật phẩm Sưu tầm dạng Mã hóa và Non-Fungible Token (NFT).


Kết luận

Tiêu chuẩn ERC-20 đã thống trị lĩnh vực tài sản crypto trong nhiều năm và không khó để hiểu tại sao. Với đặc điểm là khá dễ 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 ứng dụng (token tiện tiện ích, stablecoin, v.v.). Dù vậy, ERC-20 vẫn thiếu một số tính năng mà đã được hiện thực hóa bởi các tiêu chuẩn khác. Chúng ta hãy chờ xem liệu có các loại hợp đồng tiếp theo sẽ thay thế nó.