Tìm hiểu chi tiết về các tiêu chuẩn của Ethereum và tiêu chuẩn ERC-20

Tiêu chuẩn ERC-20 cho phép các nhà phát triển có thể xây dựng những ứng dụng token có thể tương thích với các sản phẩm và dịch vụ khác.

1321Total views
Tim hieu chi tiet ve cac tieu chuan cua Ethereum va tieu chuan ERC-20 - anh 1
Tìm hiểu chi tiết về các tiêu chuẩn của Ethereum và tiêu chuẩn ERC-20

Tổng quan các tiêu chuẩn của Ethereum

Các tiêu chuẩn của Ethereum

Từ khi ra mắt vào ngày 30/07/2015, cộng đồng Ethereum đã áp dụng nhiều tiêu chuẩn để giữ cho các dự án (như các nền tảng và ví Ethereum) có thể tương tác tốt với nhau giữa những lần nâng cấp bổ sung. Việc này nhằm hoàn thiện cũng như đảm bảo cho các hợp đồng thông minh và các Dapp có thể hoạt động tốt chức năng của chúng.

Những tiêu chuẩn thường được giới thiệu lần đầu dưới dạng các EIP (hay các đề xuất cải thiện Ethereum), được khởi xướng và thảo luận giữa các thành viên cộng đồng thông qua một quy trình đề xuất EIP tiêu chuẩn.

Quy trình đề xuất EIP tiêu chuẩn

Tim hieu chi tiet ve cac tieu chuan cua Ethereum va tieu chuan ERC-20 - anh 2

Quy trình đề xuất EIP tiêu chuẩn được mô tả như hình trên, trong đó:

  • Idea: Là một ý tưởng được soạn thảo sẵn. Đây là bước không bị lưu trữ trong kho lưu trữ EIP (EIP repository).
  • Draft: Đây là giai đoạn chính thức đầu tiên được theo dõi của một EIP đang được phát triển. Một bản đề xuất EIP sẽ được biên tập viên EIP (EIP editor) thêm vào kho lưu trữ EIP sau khi đã được soạn thảo và định dạng theo tiêu chuẩn.
  • Review: Ở bước này, tác giả của một EIP sẽ đánh dấu thông báo rằng EIP đó đã sẵn sàng, và yêu cầu cộng đồng thực hiện đánh giá ngang hàng (peer review).
  • Last call: Đây là bước đánh giá cuối cùng một EIP trước khi chuyển sang Final. Biên tập viên EIP sẽ gán trạng thái Last call và cài đặt ngày kết thúc đánh giá (last-call-deadline), thường là 14 ngày sau. Nếu trong giai đoạn này có phát sinh những thay đổi trong quy phạm, quy trình đề xuất EIP sẽ quay lại bước Review.
  • Final: Khi tới bước này, đề xuất EIP sẽ đại diện cho tiêu chuẩn chính thức đã được cộng đồng thông qua. Tiêu chuẩn này sẽ luôn tồn tại ở trạng thái này, và chỉ được cập nhật khi cần sửa chữa errata hoặc thêm các thông tin giải nghĩa cần thiết, mà không ảnh hưởng đến nội dung cuối của EIP.
  • Stagnant: Bất kỳ EIP nào ở bước Draft, Review hoặc Last call, nếu không có tín hiệu hoạt động từ 6 tháng trở lên sẽ bị chuyển sang trạng thái Stagnant. Các tác giả hoặc biên tập viên EIP có thể phục hồi và phát triển tiếp các EIP đang ở trạng thái này bằng cách chuyển chúng trở lại trạng thái Draft, hoặc một trạng thái khác trước đó. Nếu không được phục hồi, đề xuất đấy có thể sẽ ở lại mãi mãi trong trạng thái này.

Ngoài ra, các tác giả EIP sẽ được thông báo nếu có bất kỳ thay đổi thuật toán nào đối với trạng thái EIP của họ.

  • Withdraw: Trạng thái này có nghĩa là tác giả EIP đã rút lại EIP được đề xuất. Withdraw có tính quyết định và sẽ không thể phục hồi một EIP một khi đã bị rút. Nếu sau này ý tưởng đó lại được phát triển tiếp, nó sẽ được coi là một đề xuất mới.
  • Living: Một trạng thái đặc biệt mà ở đó các EIP được cập nhật liên tục nhưng không bị chuyển đến trạng thái Final. Hiện nay, EIP-1 là một trong những đề xuất đang ở trạng thái này và được cập nhật liên tục bởi cộng đồng.

Các biên tập viên EIP

Đối với những đề xuất EIP mới, một biên tập viên sẽ làm các bước sau:

  • Đọc EIP để kiểm tra xem nó đã hoàn chỉnh và ổn định hay chưa. Các ý tưởng phải có ý nghĩa kỹ thuật, ngay cả khi chúng hầu như không có khả năng để đạt đến trạng thái Final.
  • Tiêu đề phải mô tả chính xác nội dung.
  • Kiểm tra nội dung ngôn ngữ của một EIP (chính tả, ngữ pháp, cấu trúc câu…), đánh dấu trên GitHub và định dạng ngôn ngữ lập trình.

Nếu EIP chưa sẵn sàng, biên tập viên sẽ gửi lại cho tác giả để sửa đổi, kèm với các hướng dẫn chỉnh sửa cụ thể.

Khi EIP đã sẵn sàng cho vào kho lưu trữ, biên tập viên EIP sẽ:

  • Gán số cho EIP (thường là số PR hoặc nếu được tác giả chọn thì là mã số của vấn đề được thảo luận trong phần Issue của kho lưu trữ về EIP này)
  • Hợp nhất các yêu cầu liên quan
  • Gửi tin nhắn trở lại cho tác giả EIP với thông tin và hướng dẫn cho bước tiếp theo.

Nhiều EIP được viết và duy trì bởi các nhà phát triển có quyền chỉnh sửa trên mã nền của Ethereum. Các biên tập viên EIP sẽ theo dõi các thay đổi EIP và sửa các lỗi cấu trúc, ngữ pháp và chính tả.

Các biên tập viên chỉ làm các phần việc liên quan đến hành chính và biên tập. Họ sẽ không đưa ra bất kì ý kiến hay nhận định nào về các EIP mà họ xử lý.

Các tiêu chuẩn ERC phổ biến

Một số EIP liên quan đến các tiêu chuẩn cấp ứng dụng (ví dụ: Tiêu chuẩn định dạng hợp đồng thông minh), được biết dưới dạng ERC (hay Ethereum Requests for Comment). Hiện nay, có nhiều ERC là các tiêu chuẩn quan trọng được sử dụng rộng rãi trên toàn hệ sinh thái Ethereum, bao gồm các tiêu chuẩn đã được gán trạng thái Final như:

Mã sốLoại tiêu chuẩnTác giả
20Tiêu chuẩn cho tokenFabian VogelstellerVitalik Buterin
55Tiêu chuẩn mã hóa địa chỉ checksum đa trường hợpVitalik ButerinAlex Van de Sande
137Tiêu chuẩn đặc điểm kỹ thuật cho dịch vụ tên miền Ethereum.Nick Johnson
162Tiêu chuẩn cho đơn vị đăng ký ENS Hash Maurelian, Nick JohnsonAlex Van de Sande
165Tiêu chuẩn giao diện hợp đồng thông minhChristian ReitwießnerNick JohnsonFabian VogelstellerJordi BaylinaKonrad FeldmeierWilliam Entriken
181Tiêu chuẩn hỗ trợ ENS cho các địa chỉ EthereumNick Johnson
190Tiêu chuẩn đóng gói các hợp đồng thông minh EthereumPiper MerriamTim CoulterDenis ErfurtRJ CatalanoIuri Matias
191Tiêu chuẩn dữ liệu được xác nhậnMartin Holst SwendeNick Johnson
600Tiêu chuẩn phân bổ mục đích cho các ví Ethereum xác địnhNick JohnsonMicah Zoltu
601Tiêu chuẩn phân cấp Ethereum cho các ví xác địnhNick JohnsonMicah Zoltu
681Tiêu chuẩn định dạng URL cho các lệnh giao dịchDaniel A. Nagy
721Tiêu chuẩn cho NFTWilliam EntrikenDieter ShirleyJacob EvansNastassia Sachs
777Tiêu chuẩn token được cải tiến từ ERC-20Jacques DafflonJordi BaylinaThomas Shababi
820Tiêu chuẩn chung cho việc đăng ký hợp đồng thông minhJordi BaylinaJacques Dafflon
1155Tiêu chuẩn token đa định dạngWitek RadomskiAndrew CookePhilippe CastonguayJames TherienEric BinetRonan Sandford
1167Tiêu chuẩn triển khai bytecode tối thiểu cho hợp đồng thông minhPeter MurrayNate WelchJoe Messerman
1363Tiêu chuẩn token có thể dùng để thanh toánVittorio Minacori
1820Tiêu chuẩn chung cho việc đăng ký hợp đồng thông minhJordi BaylinaJacques Dafflon
2309Tiêu chuẩn mở rộng cho các giao dịch nối tiếp của ERC-721Sean Papanikolas
2678Tiêu chuẩn đóng gói hợp đồng thông minh Ethereum đã được sửa đổi (EthPM v3)g. nicholas d’andreaPiper MerriamNick GheorghitaChristian ReitwiessnerBen HauserBryant Eisenbach
2981Tiêu chuẩn nhận thanh toán phí bản quyền NFTZach BurksJames MorganBlaine MaloneJames Seibel
3156Tiêu chuẩn Flash LoansAlberto Cuesta CañadaFiona KobayashifubuloubuAustin Williams

Các tiêu chuẩn token

Giới thiệu về token

Token là thuật ngữ đại diện cho hầu hết mọi thứ trong Ethereum: Các tài sản (như cổ phần của một công ty), một đơn vị tiền tệ pháp định (như USD), một ounce vàng…

Một trong nhiều tiêu chuẩn phát triển của Ethereum đó là tập trung vào giao diện quản lý token. Các tiêu chuẩn này nhằm đảm bảo các hợp đồng thông minh vận hành xuyên suốt. Ví dụ: Khi một dự án mới phát hành một token bất kì, nó vẫn sẽ tương thích với các sàn giao dịch phi tập trung hiện có.

Các tiêu chuẩn token đang được áp dụng trên Ethereum:

  • ERC-20: Là một tiêu chuẩn dành cho các token có thể thay thế (có thể hoán đổi cho nhau), như token có chức năng bình chọn, token dùng trong staking hoặc các đơn vị tiền ảo.
  • ERC-721: Là một tiêu chuẩn cho các token không thể thay thế (NFT), ví dụ như một loại chứng chỉ xác nhận sở hữu cho các tác phẩm nghệ thuật hoặc một bài hát.
  • ERC-777: Là một tiêu chuẩn token cải tiến hơn của ERC-20.
  • ERC-1155: Là một tiêu chuẩn token có thể chứa cả tài sản có thể thay thế và không thể thay thế.

Hợp đồng thông minh của Ethereum

Hợp đồng thông minh hiểu đơn giản là một chương trình chạy trên blockchain Ethereum. Đó là một tập hợp mã (chức năng của nó) và dữ liệu (trạng thái của nó) nằm ở một địa chỉ cụ thể trên blockchain Ethereum.

Hợp đồng thông minh là một loại tài khoản Ethereum. Điều này đồng nghĩa với việc nó có số dư và nó có thể thực hiện việc gửi các giao dịch trên mạng lưới. Tuy nhiên, những hợp đồng thông minh này không được kiểm soát bởi người dùng, thay vào đó, chúng được triển khai trên mạng lưới và vận hành theo như những gì đã được lập trình. Sau đó, tài khoản người dùng có thể tương tác với một hợp đồng thông minh bằng cách gửi các giao dịch để thực hiện một chức năng được quy định trên hợp đồng thông minh. 

Hợp đồng thông minh có thể dùng để ràng buộc các quy tắc (như một hợp đồng thông thường) và tự động thực thi chúng thông qua các đoạn mã được lập trình sẵn. Theo thiết lập mặc định, không thể xoá các hợp đồng thông minh cũng như đảo ngược hay thu hồi các tương tác với chúng.

Được ví như máy bán hàng tự động được số hóa

Nick Szabo – nhà khoa học máy tính nổi tiếng, trong bài viết của mình đã ví hợp đồng thông minh như một máy bán hàng tự động được số hoá. Với những dữ liệu đầu vào phù hợp, hợp đồng thông minh sẽ cho kết quả đầu ra luôn luôn được đảm bảo.

Để một máy bán hàng có thể tự động vận hành, người ta lập trình cho nó theo logic sau: “tiền + lựa chọn mặt hàng = xuất loại mặt hàng đó”. Tương tự như vậy, một hợp đồng thông minh cũng được lập trình để xử lý các dữ liệu đầu vào và trả các kết quả đầu ra một cách hoàn toàn tự động. Nếu nói máy bán hàng tự động giúp tinh giảm nhân viên bán hàng, thì các hợp đồng thông minh giúp loại bỏ các đơn vị trung gian trong rất nhiều lĩnh vực và ngành công nghiệp.

Không cần cấp phép

Bất cứ ai cũng có thể viết một hợp đồng thông minh và triển khai nó vào mạng lưới. Người dùng chỉ cần học cách viết các đoạn mã bằng ngôn ngữ của hợp đồng thông minh cũng như có đủ ETH để triển khai hợp đồng của mình. Về mặt kỹ thuật, triển khai một hợp đồng thông minh là một giao dịch, vì vậy người dùng cần phải thanh toán phí gas như cách họ trả cho một giao dịch ETH thông thường. Tuy nhiên, phí gas để triển khai một hợp đồng thông minh cao hơn nhiều.

Ethereum cung cấp những ngôn ngữ thân thiện với các nhà phát triển để họ có thể viết hợp đồng thông minh như Solidity và Vyper.

Tuy nhiên, trước khi được triển khai vào mạng lưới, các hợp đồng thông minh cần được tổng hợp để máy ảo Ethereum (EVM) có thể dịch hiểu và lưu trữ được hợp đồng vào hệ thống.

Khả năng soạn thảo mạnh

Các hợp đồng thông minh là các API mở được chia sẻ và sử dụng bởi cộng đồng Ethereum. Người dùng không cần phải tự viết hợp đồng thông minh như một nhà phát triển Dapp mới có thể tham gia vào cộng đồng. Điều đó có nghĩa là người dùng có thể dễ dàng tích hợp các hợp đồng khác vào trong hợp đồng của mình để mở rộng khả năng thực thi của chúng. Thậm chí, các hợp đồng cũng có thể được dùng để thực hiện triển khai cho các hợp đồng khác.

Những mặt hạn chế của hợp đồng thông minh

Đầu tiên, hợp đồng thông minh không thể tự thu thập thông tin những sự kiện xảy ra trong “thế giới thực” vì chúng không thể gửi các yêu cầu dưới định dạng HTTP. Tuy nhiên, giới hạn này lại là mục đích được thiết lập ban đầu. Việc dựa vào thông tin bên ngoài có thể làm ảnh hưởng tới quá trình đồng thuận. Đây là một điều rất quan trọng đối với cơ chế bảo mật và tính phi tập trung. Có nhiều cách để khắc phục vấn đề này, trong số đó là sử dụng các Oracle.

Một hạn chế khác của hợp đồng thông minh là kích thước tối đa của hợp đồng. Một hợp đồng thông minh chỉ có thể chứa tối đa là 24KB hoặc nó sẽ bị hết phí gas. Vấn đề này có thể được xử lý bằng cách sử dụng The Diamond Pattern.

Tổng quan về tiêu chuẩn ERC-20

Tim hieu chi tiet ve cac tieu chuan cua Ethereum va tieu chuan ERC-20 - anh 3

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

ERC-20 (Ethereum Request for Comments 20), được đề xuất bởi Fabian Vogelsteller vào tháng 11/2015, là một tiêu chuẩn nền tảng API giúp triển khai token trong các hợp đồng thông minh.

Tóm tắt nội dung đề xuất trong EIP-20

Tiêu chuẩn này cho phép đính kèm một API tiêu chuẩn cho các token trong hợp đồng thông minh. Tiêu chuẩn này cung cấp chức năng cơ bản để chuyển token, cũng như phê duyệt cho token thành một đơn vị tiền tệ để chi tiêu bởi những bên thứ ba khác trong chuỗi. Đây là một giao diện tiêu chuẩn cho phép bất kỳ token nào trên Ethereum cũng có thể sử dụng được trên các ứng dụng khác (từ ví đến các sàn giao dịch phi tập trung).

ERC-20 chứa một số chức năng mà một token tuân theo tiêu chuẩn này phải có khả năng thực hiện:

  • TotalSupply: Cung cấp thông tin về tổng nguồn cung token
  • BalanceOf: Cung cấp số dư tài khoản của chủ sở hữu
  • Transfer: Thực hiện chuyển một số lượng token được chỉ định đến một địa chỉ được chỉ định
  • TransferFrom: Thực hiện chuyển một số lượng token được chỉ định từ một địa chỉ được chỉ định
  • Approve: Cho phép người chi tiêu rút một số lượng token từ một tài khoản được chỉ định
  • Allowance: Trả về một số lượng token được thiết lập sẵn, từ người chi tiêu cho chủ sở hữu.

Các vấn đề của ERC-20 và những lựa chọn thay thế

Mặc dù ERC-20 nhận được sự quan tâm rộng rãi và có rất nhiều token mới áp dụng theo tiêu chuẩn của nó, vẫn có nhiều người trong cộng đồng phát triển nhận thấy rằng ERC-20 bị hạn chế hoặc thiếu sót ở một vài khía cạnh như sau:

Tính năngLỗ hổngNguồn thông tinVí dụ
AllowanceRút tiền gấp đôi (front running)Resolving the Multiple Withdrawal Attack on ERC20 Tokens
decimals()Hệ thập phân có thể hơn 18 sốYamV2 có 24 số thập phân
Không tính đến việc các token thực hiện ngăn chặn nhiều cuộc tấn công rút tiềnPerpetual Protocol Audit issue 3.12
External CallsGiá trị mà lệnh Call trả về chưa được kiểm traUnchecked call return value
DoS trả giá trị bất ngờDoS with unexpected revert
TransfersLệnh transferFrom() không được bảo vệBancor Network Hack 2020 – 1inch
Thiếu giá trị trả vềMissing return value bug — At least 130 tokens affected
BalanceOf()Sự khác biệt giữa thống kê kế toán nội bộ so với số dư thực tếaToken Withdrawal VulnerabilityaToken
BlacklistableĐịa chỉ trong danh sách đen không thể nhận hoặc gửi tokenCENTRE appears to have blacklisted an address holding USDC for the first timeUSDC
(FiatToken)
Mintable/BurnableTotalSupply có thể bị thay đổi
PausableTất cả các chức năng có thể bị tạm dừng

Vậy nên, kể từ khi phát triển ERC-20, một số tiêu chuẩn token thay thế cũng đã được đề xuất. Trong đó, có thể kể đến ERC-223, tiêu chuẩn này giúp giải quyết những vấn đề về các yếu tố phê duyệt và chuyển giao của ERC-20. ERC-621 là một lựa chọn thay thế khác, hỗ trợ đề xuất các chức năng cơ bản tương tự mà ERC-20 cung cấp nhưng bổ sung thêm khả năng tăng hoặc giảm tổng nguồn cung token. Bên cạnh đó, tiêu chuẩn ERC-827 là một chuẩn cho phép chủ sở hữu phê duyệt chi tiêu token của bên thứ ba. Mỗi đề xuất giao thức mới này đều lấy ERC-20 làm nền tảng ở một mức độ nào đó.

Ứng dụng tiêu chuẩn ERC-20

Hiện nay, hệ sinh thái Ethereum đã có rất nhiều token theo chuẩn ERC-20 được triển khai. Các token khác nhau được triển khai bởi những nhóm phát triển khác nhau, và có sự đánh đổi để tùy biến các chức năng nhằm phù hợp nhu cầu cũng như mục đích khác nhau của các dự án: Từ việc làm thế nào để tiết kiệm phí giao dịch đến việc nâng cao cải thiện tính bảo mật.

Trong thời gian vừa qua, tiêu chuẩn ERC-20 đã trở thành một tiêu chuẩn thống nhất cho việc tạo ra các token mới trên không gian tiền mã hoá. Tiêu chuẩn này đặc biệt phổ biến với các sự kiện ICO và các công ty gây quỹ cộng đồng. Hiện đã có hàng chục ngàn token khác nhau đã được phát hành và đang hoạt động theo tiêu chuẩn ERC-20.

Hai trong số các giao thức đang ứng dụng ERC-20 khá nổi tiếng là OpenZeppelin và ConsenSys. Trong đó, OpenZeppelin cung cấp một thư viện hợp đồng thông minh cho các nhà phát triển, còn ConsenSys làm về bảo mật blockchain và dịch vụ kiểm toán cho các hợp thông thông minh trên Ethereum.

Tổng kết

Tiêu chuẩn ERC-20 đã thống trị thế giới tài sản tiền mã hoá trong nhiều năm qua và không khó để lý giải điều này. Nhờ có tiêu chuẩn ERC-20, bất kỳ ai cũng có thể triển khai một hợp đồng đơn giản để phù hợp cho nhiều trường hợp sử dụng (các token tiện ích, stablecoin…). Tuy nhiên, ERC-20 vẫn còn thiếu một số tính năng so với các tiêu chuẩn khác. Thời gian sẽ cho chúng ta thấy liệu sự phổ biến của ERC-20 có bị “soán ngôi” bởi tiêu chuẩn khác hay không.