Gần đây EIP-6963 được đề xuất gần đây nhằm mục đích giải quyết các vấn đề xung đột phát sinh khi người dùng cố gắng sử dụng nhiều nhà cung cấp ví trong một trình duyệt web. Trong trường hợp này, các sự cố xung đột này có thể dẫn đến trải nghiệm người dùng bị suy giảm, cản trở hoạt động kiểm soát giao diện ví Ethereum và làm phức tạp quá trình tương tác với dApp.
Giới thiệu về vấn đề
Hiện tại, các nhà cung cấp ví cung cấp tiện ích mở rộng trình duyệt phải đưa nhà cung cấp Ethereum (theo tiêu chuẩn EIP-1193) vào đối tượng window.ethereum của trình duyệt. Cơ chế này tạo ra sự cố cho người dùng đã cài đặt nhiều tiện ích mở rộng trình duyệt. Tiện ích mở rộng trình duyệt được tải vào các trang web theo thứ tự không thể đoán trước và thất thường, điều này ngăn người dùng chọn đối tượng window.ethereum của họ. Thông thường, ví cuối cùng để tải là ví bật lên trên trang kiểm soát.
EIP-6963: Giải pháp đề xuất
Để giải quyết vấn đề này, EIP-6963 đề xuất một cơ chế hiện có để thay thế nhà cung cấp EIP-1193 của window.ethereum. Đề xuất giới thiệu một tập hợp các sự kiện cửa sổ để kích hoạt giao thức giao tiếp hai chiều giữa các thư viện Ethereum và các tập lệnh được đưa vào do tiện ích mở rộng trình duyệt cung cấp. Giải pháp này tối ưu hóa khả năng tương tác giữa nhiều nhà cung cấp ví, giảm rào cản gia nhập cho các nhà cung cấp ví mới và cải thiện trải nghiệm người dùng trên mạng Ethereum.
Đề xuất phác thảo một giao diện thông tin nhà cung cấp được tiêu chuẩn hóa (EIP 6963 ProviderInfo), điều cần thiết để điền vào các cửa sổ bật lên lựa chọn ví. Tiêu chuẩn cũng nhấn mạnh tầm quan trọng của việc khai báo giao diện nhà cung cấp (EIP 6963 Provider Detail), giao diện nhà cung cấp EIP-1193 không thay đổi để tương thích.
Các thuộc tính chính trong giao diện thông tin nhà cung cấp bao gồm:
- walletId: Mã định danh duy nhất trên toàn cầu cho nhà cung cấp ví (ví dụ: io.dopewallet.extension hoặc awesomewallet).
- uuid: Mã định danh duy nhất cục bộ cho nhà cung cấp ví tuân thủ UUID v 4.0.
- name: Tên mà người có thể đọc được của nhà cung cấp ví (ví dụ: DopeWalletExtension hoặc Awesome).
- icon: Một URI tới một hình ảnh, phải là hình vuông có độ phân giải tối thiểu là 96 x 96 px. PNG và WebP hoặc các định dạng hình ảnh vector như SVG được khuyến nghị. Nhóm đề xuất hoàn toàn không khuyến khích việc sử dụng các định dạng mất dữ liệu như JPG/JPEG.
Về các sự kiện kích hoạt, cả thư viện Ethereum và nhà cung cấp ví đều sử dụng hàm window.dispatchEvent để phát ra các sự kiện và window.addEventListener để quan sát các sự kiện. Khi thư viện Ethereum khởi tạo, nó sẽ phát ra sự kiện “eip 6963:requestProvider” và nhà cung cấp ví phát ra sự kiện “eip 6963:announceProvider”, cùng với thông tin chi tiết về giao diện và thông tin của nhà cung cấp.
Tác động của EIP-6963
Theo ước tính khả quan, việc chấp nhận và triển khai EIP-6963 có thể mất khoảng ba đến sáu tháng. Sự phát triển này có thể dẫn đến một câu chuyện ví mới vào cuối năm nay, có khả năng phá vỡ quyền bá chủ của các nhà cung cấp ví hàng đầu như Metamask và tạo ra một môi trường cạnh tranh hơn giữa các nhà cung cấp.
Các ví như Coinbase Wallet, Trust Wallet, Phantom, Taho, Rabby, Frame, XDEFI, Rainbow, Zerion, Spot, Coin 98 Wallet, Frontier, MEW, Dawn Wallet, Blockwallet, Bitski, SafePal, BitKeep và MathWallet dự kiến sẽ được hưởng lợi từ sự phát triển này. Bạn đọc có thể tham gia thảo luận về EIP-6963 với các nhà phát triển Ethereum tại đây.
Ưu và nhược điểm
EIP-6963 đặt ra một số vấn đề bảo mật cần xem xét.
Ưu điểm
Không có điểm lỗi duy nhất: Bằng cách cho phép nhiều nhà cung cấp ví, các nhà phát triển loại bỏ vấn đề lỗi điểm duy nhất. Điều này có lợi về mặt bảo mật, vì điều đó có nghĩa là nếu một nhà cung cấp ví bị tấn công hoặc lỗi kỹ thuật, người dùng sẽ có sẵn các lựa chọn thay thế.
Giảm sự phụ thuộc vào một nhà cung cấp: Hiện tại, cộng đồng Ethereum phụ thuộc rất nhiều vào một nhà cung cấp ví, đó là MetaMask. Điều này tiềm ẩn rủi ro vì nếu MetaMask bị xâm phạm, hầu hết người dùng Ethereum sẽ bị ảnh hưởng. Bằng cách hỗ trợ nhiều ví, EIP-6963 giảm thiểu rủi ro.
Kiểm soát người dùng nâng cao: Khả năng chọn nhiều nhà cung cấp ví giúp người dùng kiểm soát tốt hơn về bảo mật của họ. Người dùng có thể chọn nhà cung cấp ví phù hợp với tùy chọn bảo mật cá nhân và mức độ tin cậy của họ.
Nhược điểm
Tăng bề mặt tấn công: Triển khai EIP-6963 tăng bề mặt tấn công. Điều này là do số lượng nhà cung cấp ví có thể bị tấn công bởi các tác nhân độc hại ngày càng tăng. Mọi nhà cung cấp ví phải tuân thủ các tiêu chuẩn bảo mật cao để giảm thiểu rủi ro này.
Rủi ro tiềm ẩn của việc khai thác hình ảnh SVG: EIP-6963 đề xuất sử dụng hình ảnh SVG làm biểu tượng cho các nhà cung cấp ví. Tuy nhiên, hình ảnh SVG có thể chứa mã JavaScript, mã này có thể gây ra rủi ro về tập lệnh chéo trang (XSS). Mặc dù EIP chỉ định rằng hình ảnh SVG phải được hiển thị bằng cách sử dụng thẻ để ngăn chặn việc thực thi JavaScript, đề xuất này chỉ có thể được xác minh bởi các bên thứ ba hoặc kiểm tra viên của mỗi lần triển khai.
Tác động của việc thay thế window.ethereum: Mặc dù EIP không trực tiếp phá vỡ các ứng dụng hiện có bằng cách thay thế window.ethereum, nhưng nó khuyên bạn nên làm như vậy sau khi người dùng chọn ví. Đề xuất này chỉ có thể được xác minh trong mỗi lần triển khai bởi bên thứ ba hoặc kiểm toán viên.
Tạm kết
EIP-6963 nhằm mục đích nâng cao khả năng tương tác giữa nhiều nhà cung cấp ví, hạ thấp rào cản gia nhập đối với các nhà cung cấp mới và cải thiện trải nghiệm người dùng trên mạng Ethereum. Đồng thời, tác động đến an ninh là phức tạp.
Người dùng, nhà cung cấp ví và nhà phát triển thư viện Ethereum phải tuân thủ các phương pháp hay nhất để đảm bảo hệ sinh thái Ethereum luôn an toàn.
Bằng cách thực hiện đề xuất này, hệ sinh thái Ethereum có thể phát triển hướng tới một môi trường cạnh tranh và thân thiện với người dùng hơn, mang lại lợi ích cho cả nhà cung cấp ví và người dùng của họ.