Nội dung
Ethereum được viết bởi Vitalik Buterin Được thành lập vào năm 2014, nó được định vị là một nền tảng nguồn mở để khởi chạy các ứng dụng phi tập trung (DApps). Động lực của Buterin trong việc tạo ra blockchain mới này phần lớn xuất phát từ sự thiếu linh hoạt trong giao thức Bitcoin.
Kể từ khi ra đời, chuỗi khối Ethereum đã thu hút nhiều nhà phát triển, công ty và doanh nhân, tạo ra một ngành công nghiệp mới nổi gồm các hợp đồng thông minh và ứng dụng phân tán do người dùng tung ra.
Trong bài viết này, chúng ta sẽ xem xét tiêu chuẩn ERC-20, đây là một khuôn khổ quan trọng để tạo mã thông báo. Mặc dù chỉ áp dụng cho mạng Ethereum nhưng nó là nguồn cảm hứng cho các tiêu chuẩn blockchain khác như BEP-2 của Binance Chain.
Trong Ethereum, tên đầy đủ của ERC là Yêu cầu nhận xét Ethereum, tức là Yêu cầu nhận xét Ethereum. Các tài liệu kỹ thuật này phác thảo các tiêu chuẩn lập trình của Ethereum. Đừng nhầm lẫn điều này với Đề xuất cải tiến Ethereum (EIP), tương tự như BIP của Bitcoin và là một đề xuất cải tiến cho chính giao thức. Mục tiêu của ERC là thiết lập một giao thức tạo điều kiện thuận lợi cho sự tương tác giữa các ứng dụng và hợp đồng.
Được phát triển và viết vào năm 2015 bởi Vitalik Buterin và Fabian Vogelsteller, ERC-20 đề xuất một định dạng tương đối đơn giản khác cho các token dựa trên Ethereum. Miễn là tuân theo phác thảo, các nhà phát triển không cần phải phát minh lại bánh xe và có thể xây dựng trực tiếp dựa trên những gì đang diễn ra trong toàn ngành.
Khi mã thông báo 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ềm, ví phần cứng, nền tảng 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 biệt là EIP-20). Vào thời điểm này, đã vài năm trôi qua kể từ đề xuất ban đầu được phổ biến rộng rãi, nhưng thậm chí sau vài năm trôi qua, cái tên "ERC-20" vẫn được giữ lại.
Không giống như ETH (tiền điện tử gốc của Ethereum), mã thông báo ERC-20 Nó không được gửi vào tài khoản , nhưng chỉ tồn tại bên trong 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 mã thông báo (tức là tên, ký hiệu, khả năng phân chia) và duy trì danh sách các địa chỉ Ethereum ánh xạ số dư của người dùng.
Để chuyển mã thông báo, người dùng phải gửi giao dịch đến hợp đồng thông minh, yêu cầu hợp đồng phân bổ một phần số dư ở nơi khác. Ví dụ: nếu Alice muốn gửi 5.000 Token Binance Academy cho Bob, cô ấy sẽ gọi một hàm trong hợp đồng thông minh tương ứng để thực hiện hướng dẫn.
Hướng dẫn gọi điện của cô ấy chứa các giao dịch Ethereum dường như thông thường. Giao dịch này trả 0 ETH cho hợp đồng mã thông báo. Cuộc gọi này được bao gồm trong số các trường giao dịch khác và chỉ rõ ý định của Alice - trong trường hợp này, cô ấy muốn chuyển mã thông báo cho Bob.
Ngay cả khi cô ấy không gửi ether, cô ấy vẫn phải trả một khoản phí cụ thể để thêm giao dịch vào khối. Nếu bạn không có ETH, bạn nên gửi trước một số ETH trước khi chuyển mã thông báo của mình.
Sau đây là trường hợp thực tế trong Etherscan: ai đó gọi là hợp đồng BUSD. Bạn sẽ thấy mã thông báo đã được chuyển và phí đã được thanh toán, mặc dù trường giá trị hiển thị rằng 0 ETH đã được gửi.
Tiếp theo, chúng tôi đẩy nhanh tốc độ và hiểu biết sâu sắc về cấu trúc hợp đồng ERC-20 điển hình.
Theo tiêu chuẩn ERC-20, hợp đồng của bạn phải thiết lập sáu chức năng bắt buộc :tổng nguồn cung,balanceOf、chuyển、transferFrom、phê duyệt span >vàphụ cấp. Ngoài ra, bạn có thể chỉ định các hàm tùy chọn, chẳng hạn như name, ký hiệu và thập phân mạnh>. Nghe tên là có thể hiểu chức năng, không hiểu thì đừng lo, bên dưới chúng tôi sẽ phân tích từng cái một.
Sau đây là các hàm được hiển thị thông qua ngôn ngữ Solidity dành riêng cho Ethereum.
chức năng TotalSupply() trả về lượt xem công khai (uint256)
Sau khi người dùng gọi hàm trên, tổng nguồn cung cấp token theo hợp đồng sẽ được trả lại.
chức năng span> BalanceOf(address _owner) trả về lượt xem công khai (số dư uint256)
Khác vớitổng nguồn cung,balanceOfsử dụng địa chỉ làm tham số. Sau cuộc gọi, hệ thống sẽ trả về số dư giữ mã thông báo của địa chỉ. Hãy nhớ rằng, các tài khoản trong mạng Ethereum đều công khai và minh bạch. Bạn có thể kiểm tra số dư của bất kỳ người dùng nào miễn là bạn biết địa chỉ.
chức năng span > transfer(address _to, uint256 _value) công khai trả về (bool thành công)transfer hỗ trợ người dùng chuyển token cho nhau. Bạn cần cung cấp địa chỉ nhận token và số tiền chuyển.
Sau khi gọi, chuyển sẽ kích hoạt sự kiện (trong trường hợp này trường hợp Dưới đây là sự kiện "Chuyển"), chức năng cơ bản là yêu cầu blockchain chứa tham chiếu đến chức năng này.
transferFrom
hàm transferFrom(address _from, address _to, uint256 _value) trả về công khai (bool thành công )transferFromHàm này làchức năng chuyển, cải thiện hiệu quả khả năng lập trình trong các ứng dụng phi tập trung. Tương tự như hàmchuyển, nó được sử dụng để di chuyển mã thông báo, nhưng các mã thông báo này không nhất thiết thuộc về Người dùng hợp đồng gọi điện.
Nói cách khác, bạn có thể ủy quyền cho người khác hoặc hợp đồng khác chuyển tiền thay mặt bạn. Ví dụ: nếu bạn không muốn thanh toán thủ công cho dịch vụ đăng ký hàng ngày/hàng tuần/hàng tháng, bạn có thể để chương trình thực hiện công việc cho bạn.
Sự kiện được kích hoạt bởi chức năng này giống như chuyển.
phê duyệt
chức năng phê duyệt(địa chỉ _spender, uint256 _value) trả về công khai (bool thành công) pre>Từ góc độ lập trình, phê duyệt là một chức năng rất hữu ích khác. Có thể giới hạn số lượng token mà hợp đồng thông minh có thể rút từ số dư. Nếu không có nó, các hợp đồng đang chạy có thể trở nên vô hiệu (hoặc bị lợi dụng) và tất cả số tiền đều có nguy cơ bị đánh cắp.
Lấy lại mô hình đăng ký làm ví dụ. Giả sử bạn nắm giữ một lượng lớn token Binance Academy và muốn thiết lập các khoản thanh toán định kỳ hàng tuần cho DApp phát trực tuyến của mình. Tôi quá bận đọc các bài viết của Binance Academy nên không thể dành thời gian tạo giao dịch thủ công mỗi tuần.
Số dư lớn token Binance Academy được nắm giữ vượt xa mức phí bắt buộc phải trả cho đăng ký. Để ngăn DApp thanh toán tất cả nội dung, bạn có thể sử dụng phê duyệt để đặt giới hạn . Giả sử phí đăng ký của bạn là 1 token Binance Academy mỗi tuần, đăng ký của bạn sẽ được thanh toán tự động trong vòng 5 tháng nếu giới hạn phê duyệt là 20 token.
Nếu chương trình gặp trục trặc và DApp cố gắng rút toàn bộ số tiền, bạn sẽ chỉ mất tối đa 20 token. Mặc dù việc mất token là điều đáng buồn nhưng kết quả vẫn tốt hơn nhiều so với việc mất tất cả tài sản của bạn.
Sau khi gọi hàm này, phê duyệt sẽ kích hoạt phê duyệt
strong>, như hàm chuyển, nó sẽ ghi dữ liệu vào blockchain.
phụ cấp
chức năng phụ cấp(địa chỉ _owner, địa chỉ _spender) trả về lượt xem công khai (uint256 còn lại)có thể sử dụng trợ cấp vớiphê duyệt được sử dụng kết hợp. Nếu quyền quản lý mã thông báo được cấp cho hợp đồng, bạn có thể kiểm tra số dư có thể rút của mã thông báo thông qua hợp đồng đó. Ví dụ: giả sử dịch vụ đăng ký sử dụng 12 trong số 20 mã thông báo được phê duyệt, việc gọi hàm phụ cấp sẽ trả về tổng cộng 8 mã thông báo.
Các chức năng tùy chọn khác
Nội dung thảo luận ở trên là các chức năng bắt buộc. Mặt khác, tên, ký hiệu và thập phân là các hàm tùy chọn nhưng chúng có thể làm cho ERC-20 hoàn thiện hơn. Các chức năng này tương ứng hỗ trợ thêm tên mà con người có thể đọc được, đặt ký hiệu (tức là ETH, BTC, BNB) và chỉ định số vị trí thập phân mà mã thông báo có thể được chia thành. Ví dụ: mã thông báo được sử dụng làm tiền tệ có thể phân chia được nhiều hơn và do đó có lợi hơn mã thông báo được sử dụng để thể hiện quyền sở hữu tài sản.
Hãy xem ví dụ này trên GitHub để biết các thành phần này trông như thế nào trong một hợp đồng thực.
ERC-20 có chức năng gì?
![]()
Tổng hợp tất cả các chức năng trên, chúng ta có được một hợp đồng ERC-20. Chúng tôi có thể truy vấn tổng nguồn cung, xem số dư, chuyển tiền và ủy quyền cho các DApp khác thay mặt chúng tôi quản lý mã thông báo.
Tính linh hoạt của token ERC-20 là một lợi thế rất lớn. Thỏa thuận đã thiết lập không giới hạn sự phát triển và mỗi bên có thể khởi chạy các chức năng khác và đặt các thông số cụ thể theo nhu cầu riêng của mình.
Stablecoins
Stablecoin (mã thông báo được liên kết với tiền tệ fiat) thường sử dụng tiêu chuẩn mã thông báo ERC-20. Giao dịch hợp đồng BUSD nêu trên là một ví dụ điển hình và hầu hết các stablecoin cũng sử dụng hình thức này.
Đối với các stablecoin được hỗ trợ bởi các loại tiền tệ fiat chính thống, nhà phát hành có thể giữ các khoản dự trữ như euro và đô la Mỹ, sau đó phát hành mã thông báo cho từng đơn vị trong khoản dự trữ. Điều này có nghĩa là nếu 10.000 USD được gửi vào kho tiền, nhà phát hành có thể tạo ra 10.000 token, mỗi token trị giá 1 USD.
Từ góc độ kỹ thuật, nó rất dễ triển khai trong Ethereum. Nhà phát hành chỉ cần triển khai một hợp đồng với 10.000 token và sau đó phân phối token cho người dùng, hứa rằng họ có thể đổi token lấy một tỷ lệ tiền tệ pháp định nhất định trong tương lai.
Người dùng có thể sử dụng mã thông báo của mình để thực hiện nhiều hoạt động khác nhau, bao gồm mua hàng hóa và dịch vụ cũng như đăng ký DApps. Ngoài ra, nhà phát hành có thể được yêu cầu đổi các mã thông báo này ngay lập tức. Trong trường hợp này, nhà phát hành cũng có thể hủy các mã thông báo được trả lại (để chúng hết hạn) và rút một lượng tiền pháp định tương đương từ kho dự trữ.
Như đã đề cập trước đó, các hợp đồng quản lý hệ thống này tương đối đơn giản. Tuy nhiên, việc tung ra một stablecoin đòi hỏi phải chú ý đến nhiều yếu tố bên ngoài khác (như hậu cần, tuân thủ, v.v.) và rất nhiều nỗ lực.
Mã thông báo bảo mật
Mã thông báo bảo mật tương tự như stablecoin và thậm chí có thể hoàn toàn nhất quán vì cả hai đều hoạt động trong cùng một cách. Sự khác biệt nằm ở nhà phát hành: Mã thông báo bảo mật đại diện cho các chứng khoán như cổ phiếu, trái phiếu hoặc tài sản thực. Họ thường, mặc dù không phải lúc nào cũng cấp, cấp cổ phần cho người nắm giữ trong một doanh nghiệp hoặc hàng hóa.
Mã thông báo tiện ích
Mã thông báo tiện ích có lẽ là loại mã thông báo phổ biến nhất hiện nay. Không giống như hai mã thông báo trước, mã thông báo tiện ích không được hỗ trợ bởi bất kỳ tài sản thực nào. Nếu cổ phiếu của hãng hàng không đại diện cho mã thông báo được hỗ trợ bằng tài sản thì mã thông báo tiện ích giống như các chương trình dành cho khách hàng thường xuyên: chúng có một số chức năng nhưng không có giá trị bên ngoài. Mã thông báo tiện ích có thể phục vụ nhiều nhu cầu, chẳng hạn như được sử dụng làm tiền tệ trong trò chơi, nhiên liệu cho các ứng dụng phi tập trung và điểm khách hàng thân thiết.
➠ Bạn muốn bắt đầu hành trình tiền điện tử của mình? Chào mừng bạn đến với Binance để mua Ethereum!
Tôi có thể tham gia khai thác mã thông báo ERC-20 không?
Bạn có thể tham gia khai thác Ethereum (ETH), nhưng không thể khai thác mã thông báo – Chúng tôi gọi việc tạo mã thông báo mới là đúc tiền. Sau khi hợp đồng có hiệu lực, các nhà phát triển sẽ phân bổ nguồn cung theo kế hoạch và lộ trình, thường thông qua cung cấp tiền xu ban đầu (ICO), cung cấp trao đổi ban đầu (IEO) hoặc cung cấp mã thông báo bảo mật (STO). Bạn có thể gặp một số biến thể của những từ viết tắt này, nhưng các khái niệm rất giống nhau. Các nhà đầu tư gửi ether đến địa chỉ hợp đồng và nhận lại các token mới. Số tiền huy động được sẽ được sử dụng để tài trợ cho việc phát triển dự án trong tương lai. Người dùng mong đợi có thể sử dụng mã thông báo của họ (ngay lập tức hoặc 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át hành mã thông báo có thể không được thực hiện tự động. Nhiều chiến dịch huy động vốn cộng đồng hỗ trợ người dùng hoàn tất 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), sau đó phân phối số dư tương ứng đến đị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 mã thông báo ERC-20
Tính linh hoạt
Mã thông báo ERC-20 có thể thay thế được và tất cả các đơn vị có thể được trao đổi cho nhau. Khi nói đến Token của Học viện Binance, nó đều giống nhau bất kể bạn nắm giữ loại tiền cụ thể nào. Bạn có thể giao dịch với người khác và các token có chức năng giống nhau, tương tự như tiền mặt hoặc vàng.
Điều này là lý tưởng nếu mã thông báo bạn nắm giữ hy vọng sẽ phát triển thành một loại tiền tệ nào đó. Các mã thông báo có đặc điểm riêng biệt sẽ mất khả năng thay thế và không đáp ứng yêu cầu của bạn. Điều này có thể khiến một số mã thông báo nhất định có giá trị thấp hơn hoặc cao hơn các mã thông báo tương tự, đi ngược lại mục đích ban đầu.
Linh hoạt
Như đã thảo luận ở chương trước, mã thông báo ERC-20 có khả năng tùy chỉnh cực kỳ cao và có thể tạo ra các giải pháp phù hợp cho các ứng dụng khác nhau. Các ví dụ bao gồm việc được sử dụng làm tiền tệ trong trò chơi, điểm khách hàng thân thiết cho các chương trình, bộ sưu tập kỹ thuật số hoặc thậm chí đại diện cho tác phẩm nghệ thuật và quyền sở hữu tài sản.
Mức độ phổ biến
ERC-20 đang trở nên phổ biến trong lĩnh vực tiền điện tử và kế hoạch chi tiết dựa trên nó là rất thuyết phục. Nhiều sàn giao dịch, ví và hợp đồng thông minh hiện tương thích với nhiều loại token mới ra mắt. Ngoài ra, hỗ trợ và tài liệu dành cho nhà phát triển khá toàn diện.
Nhược điểm của token ERC-20
Khả năng mở rộng kém h4 >
Đây là vấn đề phổ biến với nhiều mạng tiền điện tử và Ethereum cũng không tránh khỏi vấn đề này. Ở dạng hiện tại, nó không có quy mô tốt. Gửi giao dịch trong thời gian cao điểm phải chịu phí cao và độ trễ kéo dài. Nếu mã thông báo ERC-20 được sử dụng và gây tắc nghẽn mạng thì tính khả dụng của chúng cũng sẽ bị ảnh hưởng.
Đây không phải là vấn đề riêng của Ethereum mà là sự đánh đổi mà tất cả các hệ thống phân tán an toàn phải thực hiện. Cộng đồng có kế hoạch giải quyết những vấn đề này sau khi chuyển sang Ethereum 2.0 và triển khai các bản nâng cấp như Ethereum Plasma và Ethereum Casper.
Vui lòng đọc "Khả năng mở rộng chuỗi khối: Chuỗi bên và kênh thanh toán" để tìm hiểu thêm về các vấn đề về khả năng mở rộng.
Gian lận
Mặc dù bản thân công nghệ không có gì sai, nhưng ở một khía cạnh nào đó, việc dễ dàng phát hành token có thể là một bất lợi. Mã thông báo ERC-20 đơn giản rất dễ tạo, nghĩa là bất kỳ ai cũng có thể làm được, nhưng với nhiều mục đích khác nhau.
Vì vậy, bạn phải đầu tư cẩn thận. Có rất nhiều mô hình kim tự tháp và mô hình Ponzi được ngụy trang dưới dạng dự án blockchain, bạn phải tự nghiên cứu trước khi đầu tư để xác nhận xem cơ hội đầu tư có hợp pháp hay không.
Sự khác biệt giữa ERC-20, ERC-1155, ERC-223 và ERC-721 là gì?
ERC-20 là tiêu chuẩn mã thông báo Ethereum đầu tiên (và phổ biến nhất cho đến nay), nhưng nó không phải là tiêu chuẩn duy nhất. Qua nhiều năm, nhiều tiêu chuẩn khác đã được phát triển. Hầu hết chúng đều là những tiêu chuẩn cải tiến của ERC-20, một số khác cố gắng đạt được những mục tiêu hoàn toàn khác.
Một số tiêu chuẩn không phổ biến áp dụng cho mã thông báo không thể thay thế (NFT). Trong một số trường hợp, mã thông báo duy nhất có thuộc tính khác nhau có thể khiến bạn trở thành người thụ hưởng. Nếu bạn muốn mã hóa tác phẩm nghệ thuật độc đáo, tài sản trong trò chơi, v.v., một trong những loại hợp đồng này có thể hấp dẫn hơn.
Ví dụ: tiêu chuẩn ERC-721 được sử dụng trong CryptoKitties DApp rất phổ biến. Hợp đồng này cung cấp API để người dùng tạo ra các mã thông báo không thể thay thế của riêng họ và mã hóa siêu dữ liệu (hình ảnh, mô tả, v.v.).
Tiêu chuẩn ERC-1155 có thể được coi là sự cải tiến của ERC-721 và ERC-20. Nó hỗ trợ cả tiêu chuẩn mã thông báo có thể thay thế và không thể thay thế trong một hợp đồng.
Các tùy chọn khác như ERC-223 hoặc ERC-621 được thiết kế để cải thiện khả năng sử dụng. Trước đây thực hiện các biện pháp bảo vệ để ngăn chặn việc vô tình chuyển mã thông báo. Cái sau cung cấp chức năng bổ sung để tăng hoặc giảm nguồn cung cấp mã thông báo.
Để tìm hiểu thêm về NFT, vui lòng đọc Hướng dẫn về Bộ sưu tập tiền điện tử và Mã thông báo không thể thay thế (NFT).
Tóm tắt
Tiêu chuẩn ERC-20 đã trở thành yếu tố thống trị trong không gian tài sản tiền điện tử đối với nhiều người năm. Lý do rất rõ ràng: tiêu chuẩn tương đối đơn giản và bất kỳ ai cũng có thể triển khai các hợp đồng đơn giản để phù hợp với nhiều nhu cầu khác nhau (token tiện ích, stablecoin, v.v.). Tuy nhiên, ERC-20 thiếu một số tính năng của các tiêu chuẩn khác, nhưng vẫn còn phải xem liệu các loại hợp đồng khác có thể thay thế nó hay không.