Tại sao "đăng nhập bằng Ethereum" lại mang tính cách mạng?
Tiêu đề gốc: "Tại sao Đăng nhập bằng Ethereum lại là Công cụ Thay đổi Cuộc chơi - Phần 1"
Biên dịch gốc: ETH Trung Quốc
Biên dịch gốc: ETH Trung Quốc
Đăng nhập bằng Ethereum (SIWE) cách mạng hóa các lựa chọn của người dùng trên Internet.
Thay vì phải thỏa hiệp với một số người trung gian lớn, giờ đây người dùng có thể đăng nhập trực tiếp (không cần thông qua người trung gian) bằng cách sử dụng cùng một khóa riêng kiểm soát tài khoản blockchain của họ. Với SIWE, chúng tôi mở ra một con đường khác, nơi các tập đoàn lớn không còn có thể tước đoạt khả năng truy cập dịch vụ và giám sát hành vi của người dùng.
SIWE là một tiêu chuẩn chứng nhận hoàn toàn mở, đạt được thông qua các cuộc thảo luận mở với các thành viên cộng đồng như dapp, ứng dụng, ví, công ty bảo mật, v.v. Bạn có thể tìm thấy tất cả biên bản cuộc họp và ghi chú trên trang web login.xyz. Cách tiếp cận này khác xa với sự phát triển khép kín các hệ thống nhận dạng độc quyền của các đại gia công nghệ hoặc nhà cung cấp chính phủ (bị phản đối bởi những người ủng hộ quyền riêng tư và quyền kỹ thuật số).
Ngược lại, Đăng nhập bằng Ethereum (EIP-4361) xác định định dạng chữ ký chung sáng tạo (CC) mở cho tài khoản Ethereum để xác thực an toàn bất kỳ dịch vụ dựa trên web nào. SIWE được xây dựng bởi cộng đồng với sự hỗ trợ trực tiếp từ Ethereum Foundation và ENS, và Spruce đã phụ trách dự án vào cuối năm ngoái. Tôi rất vui được ở đây để thảo luận về ý nghĩa của việc "đăng nhập bằng Ethereum" và cách nó vượt ra ngoài "kết nối ví" cho tất cả những người xây dựng Web3.
Kết nối với ví so với đăng nhập bằng Ethereum
Nút "Kết nối ví" hiện là chức năng chính của dapp. Bằng cách nhấp vào nút này, người dùng bắt đầu hành trình tương tác với Web3 và chuỗi khối.
Bằng cách kết nối ví, ứng dụng có thể biết bạn đang sử dụng tài khoản nào; tuy nhiên, đó là về nó. Ví của bạn sẽ dễ dàng biết được tài khoản nào bạn muốn sử dụng để tương tác với hợp đồng thông minh, gửi tiền điện tử và thậm chí ký tin nhắn qua dapps. Chức năng kết nối với ví rất đơn giản - dapp "không nhớ" bạn và chỉ xây dựng một nền tảng cho các tương tác đơn giản.
Khi ứng dụng muốn có các tương tác theo ngữ cảnh phong phú hơn với người dùng, chẳng hạn như tải tùy chọn người dùng hoặc tin nhắn trò chuyện riêng tư, trước tiên chúng tôi cần đảm bảo rằng chúng tôi đang nói chuyện với người giữ khóa riêng tư thực sự đằng sau tài khoản và không phải ai đó giả vờ có quyền kiểm soát tài khoản. "Connect Wallet" không đảm bảo như vậy, nhưng SIWE thì có thể. Nói cách khác, chúng tôi cần xác thực người dùng để thiết lập phiên với họ, sau đó đọc và ghi dữ liệu của họ một cách an toàn. Để minh họa sự khác biệt giữa hai loại này, tôi đã đưa ra hai ví dụ sau - Carl, người kết nối với ví và Sam, người thiết lập một phiên:
(Ghi chú của người dịch: Phiên là một giải pháp để duy trì trạng thái giữa máy khách và máy chủ. Ý tưởng là khi máy khách truy cập lần đầu tiên, máy chủ sẽ tạo id phiên và trả lại cho máy khách. Tất nhiên, máy chủ sẽ đồng thời lưu id phiên trong bộ nhớ, sau khi client nhận được id phiên, nó sẽ gửi id phiên đó về cho server trong mỗi lần yêu cầu tiếp theo, để server có thể truy vấn bộ nhớ của chính nó để biết client đã truy cập .Session có thể được sử dụng để thực hiện xác thực đăng nhập của người dùng. Sau khi id phiên do máy chủ tạo được gửi lại cho máy khách, nó thường được lưu trữ trong cookie, do đó, xác thực dựa trên phiên còn được gọi là xác thực dựa trên cookie. Nguồn)
Carl sử dụng dapps và có một trải nghiệm tuyệt vời. Anh ta có thể giao dịch trên Uniswap, vay trên Aave và thậm chí mua NFT trên OpenSea. Để thực hiện một vài thao tác này, anh ta chỉ cần kết nối ví của mình. Hoạt động của Carl đang diễn ra suôn sẻ cho đến một ngày, anh ấy gặp phải một vấn đề như sau: anh ấy muốn những dapp này ghi nhớ điều gì đó về anh ấy, để khi anh ấy sử dụng những dapp này lần thứ ba, thứ tư và thứ năm, có thể mang lại cho anh ấy trải nghiệm tốt hơn.
Carl đang suy nghĩ, nếu Uniswap có thể tự động nhập tùy chọn thanh lý của anh ấy, Aave có thể nhớ thị trường cho vay yêu thích của anh ấy và thậm chí OpenSea có thể nhớ tên anh ấy thay vì 0x2Fe1a3... tài khoản như vậy, trải nghiệm của anh ấy sẽ tốt hơn nhiều. Carl bắt đầu lại từ đầu mỗi khi kết nối ví của mình.
Sam sẽ không gặp vấn đề như vậy. Sau khi Dapp xác thực nó và thiết lập một phiên, thông tin liên quan sẽ được lưu lại. Ngay cả khi Sam ngắt kết nối và xác thực lại, phiên vẫn tiếp tục ở nơi anh ấy đã dừng lại và ứng dụng vẫn nhớ mọi thứ về anh ấy. Thông tin của anh ta thậm chí có thể được lưu giữ trong cơ sở dữ liệu từ xa mà anh ta kiểm soát.
Thống nhất SIWE
Nhìn qua toàn cảnh Web3 và bạn sẽ thấy nhiều dịch vụ hiện có cung cấp một số dạng"Sign-In with Ethereum", nhưng không nhiều là ngang bằng. Họ thường sử dụng nó để thiết lập phiên dựa trên cookie với người dùng quản lý siêu dữ liệu độc quyền được liên kết với tài khoản. Ví dụ: nếu bạn muốn cấp cho người dùng quyền tùy chỉnh hồ sơ của riêng họ trên trang web của bạn (như OpenSea đã làm), bạn nên xác thực người dùng trước khi họ có thể thực hiện bất kỳ thay đổi nào, để đảm bảo rằng chỉ người dùng mới có thể chỉnh sửa hồ sơ của chính họ. Quy trình làm việc như sau:
Bước đầu tiên sau khi kết nối ví là cung cấp thông báo mà con người có thể đọc được cho người dùng để họ có thể hiểu những gì họ đang tương tác. Trong nhiều trường hợp, người dùng thấy"LOGIN"(đăng nhập) hoặc một số văn bản yêu cầu bạn đăng nhập, hoặc thậm chí đôi khi chỉ là một số tùy ý (ở đây, hãy ký tên vào bộ sưu tập chữ và số ngẫu nhiên điên rồ này). Vì vậy, thay vào đó, chúng tôi có thể xác định một tập hợp các trường bắt buộc dựa trên các thông lệ hiện có, đưa ra nhiều biện pháp bảo mật tốt và một cú pháp chặt chẽ giúp cân bằng khả năng đọc của con người với hoạt động an toàn. Hơn nữa, các ví không cần phải thay đổi giao diện và thực tiễn hiện tại của chúng để ít nhất tiếp tục cung cấp cho người dùng loại thông tin này.
Đầu tiên, chúng tôi có thể lấy tất cả thông tin "SIWE" lộn xộn này và gửi yêu cầu tới người dùng theo cách chung có thể chấp nhận được:
Chia Sẻ Thông Tin - Chia Sẻ Giao Diện
Sau khi đồng ý về định dạng tin nhắn chữ ký, giờ đây ứng dụng và ví có thể nói cùng một ngôn ngữ. Khi một ứng dụng gửi yêu cầu ký cho người dùng, ví có thể kiểm tra yêu cầu đó, kiểm tra xem nó có khớp với thông tin EIP-4361 (SIWE) hay không và cho người dùng biết họ đang đăng nhập vào một trang web.
Tại thời điểm này, ví có thể trình bày một giao diện cách điệu thân thiện giúp trải nghiệm người dùng tốt hơn và không nghi ngờ gì về các hành động mà người dùng sắp thực hiện. Thay vì cung cấp cho người dùng một khối văn bản tùy ý để ký. Người dùng giờ đây chỉ cần nhấp vào hộp thoại xác nhận để "đăng nhập" vì ví đã "hiểu" yêu cầu chữ ký. Để hoàn toàn minh bạch, tất cả thông tin và trường được nêu trong đặc tả EIP-4361 vẫn phải có sẵn trong các giao diện phụ khác, chẳng hạn như chế độ xem chi tiết.
Từ thông tin của EIP-4361, chúng ta có thể có giao diện rõ ràng hơn:
Thông số kỹ thuật cũng đưa ra các yêu cầu bảo mật bổ sung cho ví, chẳng hạn như giới thiệu các liên kết tên miền để ngăn chặn các cuộc tấn công lừa đảo; giới thiệu các nonce để ngăn chặn các cuộc tấn công lặp lại và người dùng được bảo vệ hơn nữa trong suốt quá trình. Ví dụ: nếu ví tìm thấy một thông báo SIWE hợp lệ, nhưng người dùng đang ký ví dụ.com (nhưng thực tế là tại exampie.com), thì ví có thể cảnh báo người dùng về tình huống:
ngoài xác thực
Thông tin SIWE cũng có thể được hiểu là quyền truy cập vào các tài nguyên cụ thể hoặc ủy quyền khóa riêng của phiên để cải thiện chức năng và tính dễ sử dụng của dapp UX. Ví dụ: hãy tưởng tượng một thế giới trong đó người dùng có thể làm phong phú thêm các phiên của riêng họ bằng dữ liệu họ giữ lại, thay vì các ứng dụng lưu dữ liệu của người dùng. Để biết thêm thông tin, tôi thực sự khuyên bạn nên đọc bài viết này:《From Sign-In with Ethereum to Session Keys》
Tôi sẽ sớm đăng phần hai của bài viết này, vì vậy hãy theo dõi! Cho đến lúc đó, hãy triển khai SIWE!


