Quyền riêng tư, Quyền & Bảo mật ký kết
Trong DApps dựa trên EVM, bốn hành động thường xuất hiện lần lượt: kết nối ví, ký tin nhắn, ký giao dịch và cấp quyền sử dụng mã thông báo tiền điện tử. Những hành động này không cung cấp quyền truy cập giống nhau. Kết nối tạo ra một kênh liên lạc giữa tài khoản và trang web. Việc ký tin nhắn chứng minh danh tính hoặc thể hiện ý định. Ký kết giao dịch tạo ra một giao dịch có thể được phát sóng. Quyền mã thông báo cho phép một bên được phê duyệt (Spender) sử dụng tài sản trong giới hạn xác định. Số tiền bằng 0 hoặc không có phí mạng (Gas) không đảm bảo an toàn cho yêu cầu; hiểu từng yêu cầu trước khi xác nhận nó.
1. Bốn hành động đó khác nhau như thế nào?
hành động | Mục đích chính | Thường được ghi trên chuỗi khối / Thường yêu cầu phí mạng ( | Rủi ro chính |
Kết nối ví | Chia sẻ địa chỉ và mạng công cộng đã chọn với một trang web và cung cấp cho nó một kênh cho các yêu cầu sau này | Không / Không | Tiết lộ thông tin liên quan đến địa chỉ và cho phép yêu cầu chữ ký sau này |
Ký tin nhắn | Tạo chữ ký mật mã cho văn bản hoặc dữ liệu có cấu trúc | Thường không/Thường không | Tin nhắn có thể thể hiện ý định đối với đăng nhập, đặt hàng hoặc cấp quyền đã ký ( |
Ký giao dịch | Phê duyệt một giao dịch hoặc hoạt động hợp đồng có thể được gửi lên mạng | Có, sau khi phát sóng và thực hiện thành công / Thường là có | Thực hiện thành công có thể chuyển giao tài sản hoặc thay đổi trạng thái hợp đồng |
Cấp quyền mã thông báo | Cho phép một bên được phê duyệt ( | Phụ thuộc vào cách tạo quyền | Sau khi giấy phép có hiệu lực, bên được chấp thuận có thể sử dụng giấy phép mà không cần có chữ ký khác của chủ sở hữu tài sản |
Sự phân biệt quan trọng: Quyền mã thông báo là trạng thái cấp phép, không phải loại chữ ký thứ tư song song với ba hành động đầu tiên. Giao dịch chuỗi khối có thể thực thi chức năng phê duyệt (approve) để tạo hoặc thay đổi quyền. Ngoài ra, một thông báo cho phép đã ký (Permit) có thể được gửi sau. Chỉ riêng chữ ký không làm thay đổi chuỗi khối; quyền chỉ có thể được ghi lại sau khi tin nhắn đã ký được gửi thành công.
2. Việc kết nối ví và ký tin nhắn có ý nghĩa gì?
Kết nối ví
Kết nối ví thường sử dụng giao diện kết nối ví (Provider). Yêu cầu kết nối tiêu chuẩn không cung cấp cho trang web khóa riêng hoặc cụm từ hạt giống và nó không tự động ký hoặc chuyển tài sản. Tuy nhiên, trang web có thể nhận địa chỉ công cộng và mạng do người dùng chọn và có thể gửi yêu cầu sau này tới ví. Khi trang web biết một địa chỉ công cộng, nó có thể tiếp tục truy vấn lịch sử chuỗi khối công khai của địa chỉ đó sau khi kết nối kết thúc. Hãy dừng ngay lập tức và xác minh điểm vào chính thức nếu bất kỳ trang web nào yêu cầu cụm từ hạt giống hoặc khóa riêng.
Ký tin nhắn
Ký tin nhắn thường được sử dụng cho đăng nhập, chấp nhận các điều khoản, đơn đặt hàng ngoài chuỗi, biểu quyết hoặc dữ liệu có cấu trúc do EIP-712 xác định. Thông thường nó không ghi dữ liệu trên chuỗi khối và người ký thường không trả phí mạng (Gas). Tuy nhiên, việc không trả phí không có nghĩa là yêu cầu đó không có rủi ro về tài sản. Khi ví hiển thị thông tin có thể đọc được, hãy xem lại từng trường được hiển thị. Kiểm tra tên miền, mã định danh mạng (Chain ID), trường địa chỉ hợp đồng (verifyingContract), bên được phê duyệt (Spender), số tiền và thời gian hết hạn. Nếu ví chỉ hiển thị dữ liệu thô hoặc nội dung thập lục phân mà bạn không hiểu, hãy dừng lại. Đừng tiếp tục với yêu cầu đó. Xem Lừa đảo giao dịch 0 giá trị kèm dữ liệu hex là gì?.
3. Khi nào chữ ký giao dịch và mã thông báo Quyền có hiệu lực?
Ký một giao dịch không có nghĩa là nó đã được thực thi trên chuỗi khối
Việc ký kết tạo ra một giao dịch đã được ký kết; nó không tự thay đổi trạng thái chuỗi khối. Số dư tài khoản, trạng thái hợp đồng hoặc quyền chỉ thay đổi sau khi giao dịch được phát sóng, đưa vào khối và thực hiện thành công. Một giao dịch đã ký có thể không được gửi tới mạng. Nó cũng có thể bị thay thế, hết hạn hoặc bị lỗi trong quá trình thực thi. Nếu giao diện hiển thị 0 ETH, điều đó chỉ có nghĩa là giao dịch không trực tiếp bao gồm ETH. Người dùng vẫn có thể phải trả phí mạng (Gas) và hoạt động hợp đồng vẫn có thể tạo quyền, chuyển mã thông báo tiền điện tử hoặc thay đổi trạng thái chuỗi khối khác.
Ký thông báo cấp phép không có nghĩa là quyền đã có hiệu lực
Một hoạt động cấp phép đã ký (Permit) thường tạo một tin nhắn có thể gửi sau. Việc tạo chữ ký không làm thay đổi số lượng quyền trên chuỗi khối. Tin nhắn đã ký phải được gửi thành công. Vào thời điểm đó, giá trị chuỗi của nó (nonce), thời gian hết hạn và các điều kiện xác thực khác vẫn phải hợp lệ. Chỉ khi đó quyền mới có thể được ghi lại trên chuỗi khối. Sau khi sự cho phép có hiệu lực, bên được chấp thuận (Spender) sau này có thể sử dụng quyền theo quy định, số tiền được phê duyệt và số dư tài khoản. Để biết những rủi ro của Quyền tồn tại lâu dài, hãy xem Unlimited Approval là gì?.
4. Tương tác DApp không phải lúc nào cũng tuân theo bốn bước cố định
Trao đổi tiền điện tử-mã thông báo (Swap) có thể chỉ yêu cầu hai hành động: kết nối ví và ký giao dịch. Trong các trường hợp khác, DApp trước tiên có thể yêu cầu một hành động riêng. Ví dụ: nó có thể yêu cầu người dùng ký vào tin nhắn đăng nhập. Nó có thể yêu cầu người dùng ký giao dịch chuỗi khối thực thi chức năng phê duyệt (approve). Hoặc nó có thể yêu cầu người dùng ký vào một thông báo cấp phép (Permit). Nếu tài khoản đã cấp đủ quyền chi tiêu, DApp thường không yêu cầu quyền mới. Trao đổi sử dụng tài sản gốc của mạng thay vì ERC-20 mã thông báo thường không yêu cầu quyền chi tiêu ERC-20. Đừng đánh giá sự an toàn bằng số bước; xem xét mọi lời nhắc dưới dạng một yêu cầu riêng biệt.
Việc ngắt kết nối trang web khỏi ví chỉ kết thúc kết nối cục bộ. Nó không thay đổi quyền đã được ghi trên chuỗi khối. Để tìm hiểu vị trí lưu trữ Quyền, thời gian chúng có hiệu lực và cách thu hồi hoạt động, hãy xem Việc ngắt kết nối với DApp có thu hồi các quyền hiện có không?.
5. Tôi nên kiểm tra những gì trước khi xác nhận?
Kết nối: Xác nhận rằng tên miền, tài khoản và mạng của trang web đúng như những gì bạn mong đợi.
Tin nhắn: Xác nhận mục đích của yêu cầu và xem xét mọi giao thức, hợp đồng, bên được phê duyệt có thể đọc được (
Spender), số tiền và thời gian hết hạn.Giao dịch: Kiểm tra mạng, loại giao dịch, người nhận hoặc hợp đồng, tài sản, số tiền và phí mạng. Để giải thích về
Gas, xem Khí là gì? Giới hạn Gas, Giá Gas và Phí Mạng được tính như thế nào?.Giấy phép: Kiểm tra bên được phê duyệt (
Spender), hợp đồng mã thông báo, số lượng, mạng và phạm vi. Tránh Quyền không giới hạn không cần thiết.Màn hình thiết bị: Dựa vào thông tin mà thiết bị thực sự có thể giải mã và hiển thị. Một số trường hợp đồng có thể vẫn không được giải thích trên thiết bị. Nếu thông tin cần thiết bị thiếu, khác với những gì bạn mong đợi hoặc không thể hiểu được, hãy từ chối yêu cầu và xác minh lại.
Để có danh sách kiểm tra đầy đủ hơn, hãy xem Tôi nên kiểm tra những gì trước khi xác nhận giao dịch trên ví phần cứng?. Để biết thông tin giao dịch có thể đọc được và rủi ro lừa đảo, hãy xem SignGuard và Clear Signing bảo vệ người dùng khỏi lừa đảo Web3 như thế nào?.
Nguyên tắc chính: ví phần cứng có thể bảo vệ khóa ký nhưng không thể quyết định liệu trang web, tin nhắn, giao dịch hoặc quyền có phù hợp với mục đích thực sự của người dùng hay không.
