Tác giả:Nic @ imToken Labs
Đối tượng độc giả:< /strong>Nhà phát triển blockchain
Kiến thức tiên quyết:
Hiểu sự khác biệt giữa EOA và hợp đồng
Hiểu EVM và cách thực thi quy trình hợp đồng
Hiểu rõ về phê duyệt và cấp phép thiết kế ERC-20
- < p style="text-align: left;">Bạn có thể tìm thấy thông tin chi tiết tại: https://support.token.im/hc/zh-tw/articles/22181703417241 li>
EIP-3074
Thanks Trải nghiệm người dùng tốt hơn và an toàn hơn
EIP-3074 cho phép EOA chuyển quyền kiểm soát sang hợp đồng được chỉ định , từ đó có được khả năng thực thi phong phú giống như hợp đồng.
Trước EIP-3074, EOA chỉ có thể thực hiện một thao tác mỗi lần gửi giao dịch, chẳng hạn như phê duyệt ERC20 hoặc đến Uniswap để trao đổi sau EIP; -3074 , EOA có thể thực hiện nhiều thao tác cùng một lúc hoặc thậm chí dẫn đến những cách sử dụng không thể tưởng tượng được trước đây.
Tóm lại, EIP-3074 cải thiện đáng kể trải nghiệm người dùng và các phương thức ủy quyền quen thuộc hiện tại cũng sẽ được định hình lại, đồng thời duy trì trải nghiệm người dùng tương tự.
Và thông qua EIP-3074, EOA không còn phải gửi giao dịch đến chính chuỗi nữa nên không cần lo lắng về việc huy động ETH trước để thanh toán cho giao dịch câu hỏi về phí.
Thanks Hợp đồng Invoker
Hợp đồng có thể giành được quyền kiểm soát EOA được gọi là hợp đồng Invoker. Tất nhiên, không phải hợp đồng nào cũng có thể giành được quyền kiểm soát EOA: EOA phải được ký bằng khóa riêng và nội dung chữ ký sẽ ghi rõ đó là hợp đồng Invoker nào và các hoạt động mà Invoker được phép thực hiện.
△ Nội dung chữ ký EOA sẽ nêu rõ hợp đồng Invoker nào (địa chỉ invoker) và ủy quyền hoạt động (cam kết) của hợp đồng Invoker.
Quá trình thực thi thực tế có thể sẽ như thế này:
Alice ký bằng khóa riêng EOA của mình, sau đó đưa nội dung chữ ký và con dấu cho Người chuyển tiếp.
Relayer mang chuỗi tới hợp đồng Invoker để thực thi.
Invoker xác minh chữ ký. Sau khi vượt qua xác minh, bạn có thể thực hiện các hoạt động như EOA, chẳng hạn như phê duyệt USDC, sau đó truy cập Uniswap Thực hiện hoán đổi tài sản và cuối cùng sử dụng một số USDC để cung cấp cho Relayer làm phí xử lý.
Lưu ý 1: Relayer không cần thiết, Alice cũng có thể mang nội dung chữ ký và con dấu của riêng mình vào chuỗi.
△ Sau khi Invoker xác minh chữ ký và bắt đầu thực hiện thao tác, nó sẽ được thực thi dưới dạng Alice EOA, giống như có được quyền kiểm soát (có giới hạn) đối với EOA.
Tuy nhiên, xin lưu ý rằng giá trị nonce của EOA sẽ không tăng sau khi thực thi, do đó, chữ ký tương tự có thể được sử dụng lại (miễn là giá trị nonce EOA vẫn còn không thay đổi). Do đó, Invoker cần triển khai cơ chế nonce của riêng mình để tránh lặp lại.
△ Nếu hợp đồng Invoker không chống Replay, thì việc ủy quyền tương tự có thể được thực thi mọi lúc.
Tìm hiểu thêm
Giới thiệu về EIP-3074 Thực tế cho một giới thiệu về cơ chế hoạt động, vui lòng tham khảo: https://medium.com/taipei-ethereum-meetup/eip3074-%E7%B0%A1%E4%BB%8B-2a880b918234
u Mục đích
< strong>Batchcall< /strong>
Cho phép người dùng hợp nhất việc thực hiện nhiều giao dịch thành một, tiết kiệm quy trình nhiều chữ ký được ủy quyền và một số chi phí Gas.
Lưu ý: Điều này sẽ yêu cầu DApp cũng hỗ trợ chức năng Batchcall, chẳng hạn như EIP-5792, hiện đang được cộng đồng thúc đẩy. Nếu không, DApp sẽ coi người dùng như một EOA bình thường và sẽ chỉ nhắc một giao dịch cho mỗi thao tác.
Để tìm hiểu về EIP-5792, vui lòng sao chép liên kết vào trình duyệt của bạn để xem: https://eips.ethereum.org /EIPS/eip -5792
Khóa phiên
Sử dụng Người dùng cũng có thể để bên thứ ba thay mặt mình hoạt động trong một số điều kiện nhất định. Khóa đại biểu trong hình bên dưới là bên thứ ba được ủy quyền; chính sách truy cập là hạn chế thực thi, chẳng hạn như hạn chế hoạt động của Uniswap và số lần chuyển tối đa mỗi ngày, 1 ETH, thời hạn hiệu lực của ủy quyền, v.v.
Các điều kiện này được thiết kế và kiểm tra trong hợp đồng Invoker. Miễn là quá trình kiểm tra thành công, bên thứ ba có thể thực hiện các hoạt động với tư cách là danh tính EOA của người dùng.
△ Telegram Bot có thể được cấp các quyền cụ thể để Thực hiện các hoạt động thay mặt cho người dùng EOA.
Giấy phép ETH gốc
Miễn là có đủ điều kiện đáp ứng (tức là chữ ký Giấy phép là hợp pháp), bạn có thể thực hiện chuyển ETH với tư cách là EOA của người ủy quyền, đạt được hiệu lực của Giấy phép ETH gốc.
Lệnh giới hạn
Người dùng điền vào các điều kiện của lệnh giới hạn và khi đáp ứng các điều kiện, nó có thể được thực thi như người dùng EOA, bao gồm phê duyệt các tài sản kỹ thuật số liên quan đến DEX, hoán đổi de-DEX và các hoạt động khác. So với Lệnh giới hạn do chính DEX cung cấp, người dùng không cần gửi giao dịch đến DEX để phê duyệt trước.
△ Khi Alice hoàn thành đơn hàng, việc Phê duyệt sẽ được thực hiện ngẫu nhiên và không cần phải có sự phê duyệt trước.
Nếu điều kiện được thiết kế tổng quát hơn, nó sẽ giống như một hợp đồng Intent: miễn là đáp ứng các điều kiện do người dùng chỉ định thì bất kỳ ai cũng có thể sử dụng it Danh tính EOA được sử dụng để thực hiện ý định.
△ Miễn là điều kiện Ý định được đáp ứng, bất kỳ ai cũng có thể bắt đầu thực thi dưới tên EOA của người dùng.
Phục hồi xã hội
Cho phép người dùng mất khóa riêng EOA của họ Tại thời điểm này, tất cả tài sản của EOA có thể được chuyển nhượng bằng cách sử dụng ủy quyền EIP-3074 có chữ ký của Alice và chữ ký của những người được ủy quyền của cô ấy (Chồng và Đại lý ủy thác). Trên thực tế, Recover là tài sản (có thể chuyển nhượng), không phải tài sản kiểm soát. Khi khóa riêng EOA bị mất, EOA không thể sử dụng được nữa.
△ Khi người dùng mất khóa riêng EOA, những người được ủy quyền khác có thể ký và ủy quyền chuyển nhượng tài sản EOA.
Tác động của EIP-3074
Thanks Cải thiện cách cấp phép tài sản hoặc thậm chí thay thế phê duyệt/giấy phép?
DApp hiện được thiết kế dựa trên giả định người dùng là EOA: người dùng phải "phê duyệt trước" và "phê duyệt đủ lớn" "Số lượng tài sản " vào hợp đồng DApp, để người dùng không cần phải trực tuyến mọi lúc, chờ thực thi DApp và không cần phê duyệt nhiều lần, điều này giúp cải thiện đáng kể trải nghiệm người dùng.
Ví dụ: đối với các ứng dụng kích hoạt có điều kiện như lệnh giới hạn hoặc DCA, người dùng có thể không nhất thiết phải trực tuyến khi đáp ứng các điều kiện nên họ phải phê duyệt trước Số lượng tài sản cho phép hợp đồng DApp được thực thi và nó có thể được thực thi nhiều lần.
△ Người dùng phải phê duyệt trước số lượng tài sản đủ lớn của DApp để tạo điều kiện cho DApp sử dụng tiền của mình để hoạt động.
△ Nhưng cũng cần phải tin tưởng vào DApp hoặc tránh phê duyệt DApp giả mạo và có thể xóa phê duyệt trong thời gian thực.
Hoặc chế độ giấy phép xuất hiện sau này, ví dụ: EIP-2612 hoặc chế độ không phải gốc Permit2 strong> , tất cả nhằm cải thiện trải nghiệm người dùng và tính bảo mật của mô hình phê duyệt: người dùng không còn cần phải phê duyệt một lượng lớn tài sản cho mỗi hợp đồng DApp (và mỗi tài sản phải được phê duyệt một lần), mà chỉ cần "ký tên" Hợp đồng DApp có thể được ủy quyền "rút một lượng tài sản nhất định" trong một "thời gian xác định", điều này không chỉ làm giảm đáng kể bề mặt tấn công mà còn cải thiện đáng kể trải nghiệm người dùng.
Tìm hiểu thêm
Chi tiết về EIP-2612, vui lòng Sao chép link bên dưới tới trình duyệt để truy vấn: https://eips.ethereum.org/EIPS/eip-2612
Permit2 chi tiết, vui lòng sao chép liên kết bên dưới vào trình duyệt của bạn để truy vấn:
https://medium.com/taipei-ethereum-meetup/uniswap-permit2 -giới thiệu- 858ae3dddf18
△ Người dùng chỉ cần đăng xuất khỏi chuỗi và có thể chỉ định số lượng tài sản cũng như thời hạn hiệu lực, mang lại trải nghiệm người dùng và bảo mật tốt hơn so với phê duyệt.
Nhưng trên thực tế, không chỉ phê duyệt mà cả chế độ cấp phép vẫn được sử dụng làm phương tiện cho các cuộc tấn công lừa đảo. : Nạn nhân ký nhầm. Tôi tưởng đó là giấy phép cho DApp nhưng thực ra nó đã được trao cho kẻ tấn công.
△ Khi người dùng ký giấy phép, họ chỉ có thể nhìn thấy người họ muốn ủy quyền chứ không biết những thao tác nào sẽ được thực hiện cùng với giấy phép.
Lưu ý: Ngoài ra, thiết kế giấy phép hiện tại không tương thích với các DApp thực hiện các hoạt động lặp đi lặp lại, chẳng hạn như DCA hoặc các ứng dụng thanh toán định kỳ khác. Điều này là do giấy phép có cơ chế chống lặp lại nên bạn không thể sử dụng lại giấy phép đó sau khi hoàn tất chuyển nhượng. Điều này có nghĩa là người dùng phải ký trước giấy phép cho mọi hoạt động lặp lại trong tương lai.
Tìm hiểu thêm
Tìm hiểu về giấy phép Trong trường hợp mẫu này được sử dụng làm phương tiện tấn công gian lận, vui lòng sao chép liên kết bên dưới và truy vấn liên kết đó trong trình duyệt của bạn:
https:/ /x.com/realScamSniffer/ status/1783027808723435727
https://x.com/realScamSniffer/status/1784932506174967970
https://x.com/realScamSniffer/status/1786738218962223226
Nhưng EIP -3074 mang đến cơ hội thay đổi: khi các nhà phát triển DApp biết rằng EOA có thể thực hiện nhiều hoạt động phức tạp khác nhau thông qua Invoker, thiết kế tương tác DApp không còn cần phải hy sinh tính bảo mật để cải thiện trải nghiệm người dùng, chẳng hạn như "Người dùng phê duyệt trước số lượng tài sản lớn" và "người dùng ký thông báo cho phép để cho phép rút tiền."
Thay vào đó, người dùng ràng buộc các hoạt động DApp để phê duyệt và thực hiện thực thi nguyên tử thông qua Invoker: hoặc phê duyệt và các hoạt động DApp Nếu chúng được thực thi thành công cùng nhau, nếu không chúng sẽ thất bại cùng nhau, ở đó Không có khả năng phê duyệt thành công một mình, vì vậy người dùng có thể rất chắc chắn rằng lần phê duyệt này là dành cho hoạt động này.
Và người dùng sử dụng phương thức ủy quyền chữ ký ngoài chuỗi, vì vậy trải nghiệm người dùng giống như được cho phép! Điều này có nghĩa là DApps sẽ không cần chế độ cấp phép nữa! Trong tương lai, ví có thể trực tiếp chặn hoặc xem xét nghiêm ngặt hơn các yêu cầu chữ ký cấp phép mà không phải lo lắng về việc liệu người dùng có thể sử dụng một số DApp nhất định hay không (mà thay vào đó sẽ bị lừa đảo khai thác).
△ Người dùng không còn chỉ đơn giản là ủy quyền một địa chỉ mà còn ủy quyền một địa chỉ và những việc cần làm, thậm chí có thể xem kết quả thực hiện của mô phỏng.
Lưu ý: Điều này không có nghĩa là có thể ngăn chặn hoàn toàn gian lận! Người dùng cũng có thể bị lừa vào các trang web lừa đảo. Các trang web lừa đảo cũng có thể thiết lập các thao tác phê duyệt hoặc chuyển khoản để người dùng ký, nhưng lúc này người dùng ít nhất có thể xem thao tác chữ ký là gì và ví thậm chí có thể hiển thị nó thông qua mô phỏng. Kết quả thực hiện được hiển thị cho người dùng để người dùng có thể biết rõ ai sẽ mất bao nhiêu tiền và ai sẽ nhận được nhiều tiền hơn. So với giấy phép, không có cách nào biết được thao tác nào sẽ thực hiện hoặc thậm chí kết quả thực hiện, người dùng có nhiều thông tin hơn để quyết định có cấp phép hay không. Mặc dù đây không phải là biện pháp phòng ngừa và kiểm soát hoàn hảo nhưng vẫn sẽ là sự cải thiện đáng kể đối với tình hình hiện tại.
± Cách ví xử lý EOA nonce
Thiết kế EIP-3074 hiện tại sẽ bao gồm giá trị nonce EOA trong nội dung chữ ký, miễn là EOA gửi giao dịch đến chuỗi để thực thi và thay đổi giá trị nonce, EIP ban đầu -3074 ủy quyền Tất cả sẽ ngay lập tức thất bại.
Nếu người dùng ủy quyền cho người khác vận hành EOA thay mặt họ, chẳng hạn như Khóa phiên hoặc phương pháp Khôi phục xã hội được đề cập ở trên, thì phải tránh việc không sử dụng EOA. được thay đổi, nếu không tất cả các ủy quyền sẽ phải được ký lại và bàn giao cho người được ủy thác, điều này sẽ ảnh hưởng đáng kể đến trải nghiệm người dùng và tính ổn định của cơ chế.
Nếu người dùng được ủy quyền tự mình vận hành thì không cần phải ngăn chặn cụ thể việc thay đổi nonce EOA, vì chữ ký EIP-3074 vẫn được mong đợi được thực hiện vào một ngày nhất định giống như giao dịch. Thực hiện nó trước thời hạn. Chỉ là ví cần quản lý nhiều giao dịch EIP-3074 của EOA hơn: nếu có chữ ký EIP-3074 đang chờ tải lên chuỗi thì chính các giao dịch của EOA sẽ phải chờ.
Lưu ý: Bản thân hợp đồng Invoker sẽ (và nên) duy trì cơ chế nonce, vì vậy sau khi chữ ký được sử dụng, nó phải được ký lại, bất kể của EOA. Liệu số nonce có thay đổi hay không.
Khóa phiên và Khôi phục xã hội rất có thể sẽ phải đợi cho đến khi EIP-3074 thay đổi quy tắc để xóa EOA nonce khỏi nội dung chữ ký trước khi chúng có khả năng bị chặn bởi các mô hình lớn. Do đó, ví chỉ cần tập trung vào kịch bản sử dụng "hoạt động do người dùng ủy quyền" và coi chữ ký EIP-3074 là một giao dịch. Không cần phải lo lắng về việc tránh gửi giao dịch EOA hoặc thay đổi số không EOA.
Tuy nhiên, cần lưu ý nếu người dùng muốn mang nội dung chữ ký EIP-3074 của chính mình vào chuỗi sẽ có 2 nhược điểm:
Người dùng cần ký hai lần: một lần cho chữ ký EIP-3074 và một lần cho giao dịch trên chuỗi .
Bởi vì giao dịch trên chuỗi trước tiên sẽ +1 nonce EOA trước khi giao dịch bắt đầu được thực thi, nên EIP-3074 của người dùng chữ ký Số nonce EOA phải là +1 trước để có thể khớp với số nonce EOA +1 do tự lên dây cót.
△ Bởi vì nonce EOA sẽ là +1 đầu tiên khi tải lên chuỗi nên khi bạn bắt đầu xác minh chữ ký EIP-3074, nó sẽ thất bại vì nonce EOA không khớp.
△ Người dùng có thể vượt qua xác minh thành công bằng cách +1 số EOA nonce trong chữ ký EIP-3074 trước khi tải lên chuỗi.
Tóm tắt và các điểm chính
EIP-3074 cho phép EOA có được khả năng thực thi phong phú giống như hợp đồng, mở ra nhiều kịch bản ứng dụng mới.
Điều này không chỉ cải thiện đáng kể trải nghiệm người dùng mà còn thay đổi phương thức ủy quyền hiện tại, cho phép nó duy trì cùng một người dùng trải nghiệm trở nên an toàn hơn.
Và EIP-3074 là chữ ký đơn giản nên người dùng không cần phải mang chữ ký đến chuỗi để thực thi. không cần phải lo lắng. Trước tiên, bạn phải thu thập ETH để trả phí xử lý.
Việc sử dụng EIP-3074 bao gồm Cuộc gọi hàng loạt, Khóa phiên, Giấy phép ETH gốc, Lệnh giới hạn và Khôi phục xã hội. Nhiều trong số này ban đầu không thể đạt được bằng EOA và một số, chẳng hạn như Lệnh giới hạn, yêu cầu ủy quyền trước và các phương pháp kém an toàn khác để sử dụng.
EIP-3074 cũng sẽ thay đổi phương thức ủy quyền hiện tại. phê duyệt trực tiếp ủy quyền cho địa chỉ được chỉ định có quyền rút tài sản kỹ thuật số vô thời hạn và yêu cầu người dùng EOA trước tiên gửi giao dịch để thực hiện phê duyệt, do đó trải nghiệm người dùng và giấy phép không tốt chỉ yêu cầu chữ ký của người dùng và mỗi chữ ký; sẽ Số lượng tài sản được chỉ định và thời hạn hiệu lực sẽ tốt hơn nhiều so với phê duyệt về mặt trải nghiệm người dùng và bảo mật.
Tuy nhiên, giấy phép vẫn thường xuyên được sử dụng để lừa đảo. Khi ký, người dùng chỉ có thể biết địa chỉ ủy quyền, số lượng tài sản. và Thời hạn hiệu lực, nhưng tôi không biết giấy ủy quyền này được sử dụng vào mục đích gì. "Nó dùng để làm gì" sẽ là một chữ ký (hoặc giao dịch) khác. DApp thông thường sẽ yêu cầu người dùng ký giấy phép và "Nó dùng để làm gì", nhưng chúng vẫn sẽ là hai chữ ký khác nhau, vì vậy khi chữ ký giấy phép được yêu cầu. , Cả người dùng và ví đều không có cách nào để biết "giấy phép này" sẽ được sử dụng để làm gì.
Với EIP-3074, người dùng (1) không cần phê duyệt trước một lượng lớn tài sản cho DApp mà có Chỉ phê duyệt khi vận hành, hiệu lực giống như giấy phép; (2) Chỉ cần ký và không phải lo lắng về việc thu ETH để trả phí xử lý, giống như giấy phép (3) Mỗi lần phê duyệt đều ràng buộc với hoạt động được chỉ định; , cùng nhau ký tên và sử dụng Người nộp đơn có thể biết rõ giấy phép này dùng để làm gì, sẽ an toàn hơn giấy phép!
Chúng tôi hy vọng rằng EIP-3074 có thể thay thế thành công các chế độ phê duyệt và cho phép hiện tại, đồng thời cung cấp cho người dùng phương thức ủy quyền an toàn hơn.