Công việc của hai tuần qua tập trung vào suy nghĩ về triển khai hợp đồng trong DApp. Phần lớn thời gian, tôi đang tìm hiểu về phát triển hợp đồng của zkRollup Layer2 và nghiên cứu các đặc điểm thiết kế mạng của chúng. Trong số đó, ngôn ngữ lập trình Cairo do StarkNet thiết kế có thể giúp chúng tôi phát triển DApps giàu ứng dụng tốt hơn và giảm mức tiêu thụ Gas theo một mức độ lớn.
Trong StarkNet, tất cả các địa chỉ đều là địa chỉ hợp đồng và không có khái niệm về tài khoản bên ngoài (EOA). Tài khoản ví của nó bao gồm một "hợp đồng tài khoản" do người dùng ký và triển khai. Chỉ chữ ký của khóa riêng mới có thể thực hiện chuyển khoản của "hợp đồng tài khoản" này. Đây là một ý tưởng rất thú vị. Chúng tôi biết rằng trong mạng chính Ethereum, EOA và tài khoản hợp đồng là một trong những vấn đề kế thừa lịch sử. Từ dự thảo EIP86 đến dự thảo EIP-2938, tất cả đều cam kết trừu tượng hóa logic tài khoản từ EOA. và áp dụng logic của nó vào tài khoản được quản lý bởi hợp đồng thông minh để nhận ra "ví hợp đồng thông minh".
Argent X, giải pháp ví chính của StarkNet, là một triển khai của "ví hợp đồng thông minh". Cộng đồng cũng cung cấp SDK JS tương ứng để giúp các nhà phát triển triển khai ví hợp đồng thông minh cục bộ hoặc trong DApps được triển khai của riêng họ.
Nếu chúng ta chú ý đến các hợp đồng đa chữ ký, chúng ta sẽ thấy rằng ví hợp đồng thông minh với tư cách là một dịch vụ đã nhận được nhiều sự chú ý hơn và được sử dụng nhiều lần hơn so với vai trò của Nhà cung cấp dịch vụ tiêm chích.Trong số đó, dịch vụ phổ biến nhất là Gnosis Safe *. Nhưng đổi lại, ví hợp đồng thông minh với tư cách là một ví độc lập đã không được sử dụng rộng rãi, đặc biệt là trong sơ đồ L1/L1s, vốn không thể cạnh tranh với ví EOA truyền thống (chẳng hạn như MetaMask).
*Lưu ý: Ở đây, ví do Gnosis Safe cung cấp là một mô hình lập trình hợp đồng đa chữ ký, không phải là bản tóm tắt tài khoản hợp đồng được đề cập trong EIP86 và EIP-2938.
Theo tôi, mặc dù ví hợp đồng thông minh có những lợi thế rõ ràng về kỹ thuật và kinh nghiệm, nhưng nó lại tạo ra sự phức tạp và rủi ro bảo mật bổ sung của hợp đồng trong mạng L1/L1 nặng về tài sản và không thể thay đổi sự cố ghi nhớ ( Vì nó là vẫn cần thiết để đặt quyền cho ví hợp đồng thông minh), người dùng không thể nhận thấy lợi thế kỹ thuật của nó. Ngoài các sản phẩm sáng tạo do Argent Guardians đại diện cho phép người dùng sử dụng xác nhận của bên thứ ba để truy xuất quyền hạn của ví hợp đồng thông minh, hầu hết người dùng chỉ sử dụng nó trong bối cảnh hợp đồng nhiều chữ ký, như một tài sản mở hoặc xác nhận bổ sung chế độ quản lý.
Trong mạng Lớp 2 tương tự như StarkNet, không có gánh nặng lịch sử đối với ví hợp đồng thông minh, do đó, nó có thể mang lại một số lợi thế về kiến trúc kỹ thuật cho DApp cho công chúng.
Trên thực tế, với sự ra mắt của mạng Lớp 2 của Ethereum, đặc biệt là mạng zkRollup, ví hợp đồng thông minh có thể sẽ cho phép chúng tôi thiết kế mạng chuyển tiếp tài sản nhiều lớp (Multi-layer Asset Relay Network) để giúp người dùng của chúng tôi sử dụng L1 EOA tài khoản kiểm soát tất cả nội dung lớp ứng dụng.
Mạng chuyển tiếp tài sản nhiều lớp (sau đây gọi là MARN) là tầm nhìn sản phẩm của tôi, không tồn tại trong thực tế hiện tại. Trong phần còn lại của bài viết này, tôi sẽ giải thích MARN là gì và tại sao chúng ta cần nó.
1. Yêu cầu sản phẩm của người dùng quy mô lớn
Quay trở lại các yêu cầu ban đầu của tôi khi phát triển DApp Checks Finance, tôi cần nó để hỗ trợ các chức năng sau:
- SDK ví không bên ngoài : Người dùng không cần tải xuống ví của bên thứ ba và có thể trực tiếp tạo ví trong DApp.
- Mô hình ví không giam giữ : người dùng không cần ký quỹ khóa cá nhân của họ bên ngoài dịch vụ của tôi hoặc bên thứ ba, nhưng chúng tôi cần cung cấp một quy trình khả thi để người dùng lấy lại quyền kiểm soát ví của họ.
- Không có phí gas : Người dùng không cảm thấy rằng họ đã trả phí gas, điều này đặc biệt cần thiết đối với người dùng mới vì họ không có kênh thuận tiện để nhận mã thông báo gas.
- Xác nhận khối nhanh chóng : người dùng sẽ không gặp khó khăn hay chờ đợi quá lâu khi thực hiện các giao dịch trên blockchain.
- Thanh khoản tài sản tốt và an toàn : người dùng có thể chuyển tài sản của mình thông qua một loạt các hợp đồng bắc cầu an toàn, nhanh chóng và phong phú về chiều sâu giao dịch.
Qua quan sát hầu hết các DApp trên thị trường, tôi nhận thấy họ có thể làm tốt ở điểm thứ 4 và thứ 5, nhưng ở 3 điểm đầu tiên, do chủ yếu nhắm đến người dùng Crypto Native nên nhìn chung các nhóm này sẽ không chi tiêu. Quá nhiều chi phí để xem xét tối ưu hóa.
Không còn nghi ngờ gì nữa, những khó khăn này hạn chế quy mô người dùng vào Web3 ở một mức độ lớn. Nếu vấn đề không được giải quyết một cách cơ bản, tôi rất khó thuyết phục bản thân rằng các sản phẩm Web3 có thể đạt được mức tăng trưởng người dùng lớn trong chu kỳ tiếp theo.
Để giải quyết vấn đề 1-3, tôi bắt đầu tìm kiếm các giải pháp khả thi trong ngành.
Trước hết, giải pháp ví là một ngưỡng quan trọng đầu tiên chúng ta phải vượt qua. Hiện tại, đối với các nhà phát triển DApp, có thể có một số giải pháp ví phổ biến:
- Kết nối Ví bên ngoài: Phổ biến nhất nhưng có rào cản gia nhập cao nhất đối với người dùng mới. Chúng tôi không xem xét kịch bản này trong bài viết này.
- SDK ví cục bộ: Việc tích hợp rất đơn giản, nhưng một khi người dùng xóa dữ liệu Ứng dụng, họ sẽ không thể truy xuất khóa riêng và đối mặt với nguy cơ mất mát lớn.
- Dịch vụ ví được quản lý: Dịch vụ ví được quản lý bỏ qua logic ứng dụng DApp và tải trực tiếp khóa riêng lên Dịch vụ bí mật để quản lý, sử dụng SDK cục bộ để ký giao dịch và một số dịch vụ có thể hỗ trợ xuất khóa riêng.
Trong số các giải pháp dành cho các sản phẩm dành cho người dùng quy mô lớn, giải pháp ví được lưu trữ thứ ba là giải pháp được hầu hết các sản phẩm hiện nay sử dụng và Web3Auth và MagicLink là các sản phẩm tiêu biểu của loại giải pháp này. Rất rõ ràng rằng người dùng có thể sử dụng email, điện thoại di động hoặc các phương thức đăng nhập xã hội khác để quản lý và truy xuất khóa riêng của họ, theo cách này, nó có thể mang lại đủ người dùng bên ngoài, nhưng nhược điểm của nó cũng rất rõ ràng: nó mang đến những rủi ro bảo mật tiềm ẩn , có thể không chỉ giới hạn ở dịch vụ lưu trữ khóa riêng của AWS mà còn có thể liên quan đến rủi ro bảo mật trong thiết kế của nền tảng ví được quản lý.
Thứ hai, hiện tại có một số mô hình chủ đạo cho việc thiết kế phí xăng bằng 0:
- Sử dụng Gas Relayer để ủy quyền Gas của người dùng khi tạo giao dịch: sử dụng Gas Relayer do GSN hoặc OpenZeppelin cung cấp để tạo Meta Transaction (Giao dịch Meta)
- Sử dụng các giải pháp L2 (chẳng hạn như IMX hoặc StarkNet) để ủy quyền Gas: Tạo siêu giao dịch thông qua ví hợp đồng thông minh và hợp đồng của bên giao dịch nhận được tin nhắn có thể thanh toán phí Gas thay cho người dùng.
- Sử dụng robot EOA để ủy quyền yêu cầu của người dùng ở phía máy chủ: Giải pháp này là đơn giản nhất nhưng sẽ mang lại rủi ro bảo mật bổ sung và không thể hiển thị giao dịch thực giữa người dùng và hợp đồng.
Xem xét phí xử lý bổ sung của Gas Relayer và phí Gas cơ bản, sử dụng cái sau (giải pháp L2) để triển khai hợp đồng DApp của chúng tôi rõ ràng là một cách hiệu quả hơn và ít tốn kém hơn. Trong số đó, một số giải pháp L2 thậm chí còn hỗ trợ sử dụng mã thông báo ERC-20 cụ thể để thanh toán phí Gas (chẳng hạn như zkSync2.0). Mô hình phí như vậy sẽ trở thành một phần của mô hình kinh tế DApp và tăng giá trị của mã thông báo quản trị mà chúng tôi phát hành , giống như DeFi Kingdoms Crystalvale đã làm.
Tóm lại, về mặt thiết kế sản phẩm cho người dùng quy mô lớn, chúng ta cần tìm một ý tưởng thiết kế sản phẩm có thể hỗ trợ đồng thời các yêu cầu trên, hiện tại, cách khả thi hơn có vẻ là sử dụng giải pháp Layer2.
2. Sự cố với Tài khoản bên ngoài (EOA)
Sử dụng giải pháp Lớp 2, chúng ta có thể thực hiện các giao dịch meta dựa trên ví hợp đồng thông minh một cách đơn giản.Lấy StarkNet làm ví dụ, mặc dù việc triển khai ví của nó là ví hợp đồng thông minh, nhưng vì chúng ta cần cơ quan kiểm soát rõ ràng, ý tưởng thiết kế sản phẩm của Argent X vẫn tuân theo Khái niệm về ví EOA MetaMask: khi ví được khởi tạo (đối với StarkNet, khi triển khai hợp đồng tài khoản), chúng ta cần nhớ các từ ghi nhớ của ví.
Điều này đưa ra một khái niệm rất dễ nhầm lẫn: DApp của chúng tôi hỗ trợ bao nhiêu mạng và người dùng cần tạo bao nhiêu ví EOA?
Thật không may, hầu hết các DApp trên thị trường đều đi theo lối suy nghĩ ngu ngốc nhưng bất lực này. Tôi gọi thiết kế sản phẩm này là "cơn ác mộng đa ví", từ góc độ người dùng, việc hiểu rõ sự khác biệt giữa sản phẩm Web3 và Web2 không những vô ích mà thậm chí còn làm tăng đáng kể rủi ro bảo mật khi sử dụng sản phẩm ở phía người dùng.
Tôi hiểu rằng một mặt, phương pháp bất lực này phù hợp với ý tưởng thiết kế hiện tại của ví EOA, mặt khác, thiết kế quyền và trách nhiệm như vậy rất rõ ràng, và các nhóm phát triển hợp đồng và ví không cần để trả giá cho sai lầm của người dùng làm mất khóa cá nhân. . Nhưng tôi nghĩ chúng ta có thể tìm thấy một cách dễ hiểu và tự nhiên hơn từ ví hợp đồng thông minh.
Một giả thuyết đơn giản là liệu chúng ta có thể cho phép các ví hợp đồng thông minh hoạt động thông qua các ví L1 EOA cụ thể không? Ngoài ra, chúng tôi có thể thiết kế ví hợp đồng hướng dẫn dưới dạng nhà điều hành đặc quyền của ví đa chữ ký và đặt tài khoản L1/L2 đáng tin cậy làm nhà điều hành EOA, cho phép họ thay đổi hoạt động hàng ngày của hợp đồng này trong quyền thành viên khẩn cấp không?
Thực tế là trí tưởng tượng vô hạn do ví hợp đồng thông minh mang lại, đối với ví EOA, khả năng lập trình mà nó cung cấp không chỉ hỗ trợ giao dịch meta của phí Gas đại lý mà còn giải phóng hoàn toàn ví khỏi khóa đơn EOA : Và Tôi cho rằng đây là một trong những điều kiện cần để Web3 có thể được áp dụng đại trà.
3. Suy nghĩ về mạng chuyển tiếp tài sản nhiều lớp (MARN)
Trước khi mã hóa Mobile DApp do Checks Finance tung ra thị trường Nhật Bản, tôi đã nhiều lần nghĩ về một câu hỏi: Nếu trong tương lai chúng ta phải đối mặt với hàng trăm DApp trên điện thoại di động và chúng được triển khai trên nhiều mạng khác nhau, chúng ta nên làm gì? Làm cách nào để quản lý ví của tôi?
Chúng tôi sẽ liên kết tất cả các ví bằng MetaMask chứ? Tài sản của chúng ta có quan trọng như nhau trong tất cả các DApp không, cho dù đó là thị trường giao dịch DeFi, trò chơi hay NFT? Tất cả tài sản của chúng tôi sẽ được hiển thị trên Internet cho mọi người xem? Chúng ta có cho phép mình bị mất ví không? Những câu hỏi này cứ luẩn quẩn trong đầu tôi một thời gian dài mà không thể nào quên được.
Những câu hỏi này chỉ ra hai cốt lõi giống nhau cần được trả lời:
- Chính xác thì một sản phẩm Web3 lý tưởng là gì?
- Làm thế nào để chúng tôi quản lý tài sản phức tạp của chúng tôi? (Thẻ thành viên, Điểm, Thay đổi, Tiết kiệm, Tiền và Cổ phiếu)
Chúng ta đang ở trong một thế giới Web3 đa chuỗi và nhiều lớp, và chắc chắn rằng điều này sẽ tiếp tục trong một thời gian dài, điều đó có nghĩa là những người chơi NFT sẽ vận hành ví MetaMask của họ trên mạng chính, những người đam mê thể dục sẽ vận hành ví MetaMask của họ trên Solana Tham gia vào các hoạt động hàng ngày của StepN, người dùng DeFi sẽ di chuyển trong các mạng khác nhau, sở hữu hàng chục ví EOA cùng lúc và quản lý các loại tài sản phức tạp của họ và DAO sẽ trở thành hợp đồng tài sản trên nhiều mạng.
Tuy nhiên, khi Web3 thực sự xuất hiện trong mắt công chúng và người dùng tăng lên gấp bội, liệu DApp và ví có duy trì được trạng thái của chúng không?
Ý kiến của tôi là với sự phát triển dần dần của Lớp 2 và các lớp ứng dụng khác, ví chắc chắn sẽ trở nên phân mảnh hơn và tài sản kế toán được lưu giữ trong ví cũng sẽ trở nên phân mảnh theo. Nếu tất cả các ví đều là ví EOA, nó chắc chắn sẽ mang đến một "cơn ác mộng nhiều ví" nghiêm trọng hơn hiện tại gấp trăm lần.
Tuy nhiên, nếu chúng ta chuyển tất cả nội dung trong nền kinh tế thực sang Web3, chúng ta sẽ thấy rằng một số nội dung ít quan trọng hơn đáng kể so với những nội dung khác. Chúng tôi sẽ cho phép tiền lẻ trong ví của mình bị mất, nhưng có lẽ chúng tôi không thể chịu đựng được việc mất tiền tiết kiệm trong ngân hàng. Ví đơn giản và dễ sử dụng sẽ chiếm một số vị trí trên thị trường và chúng có thể được nhúng trong một số DApp phổ biến, không giống như ví EOA, chẳng hạn như MetaMask, được sử dụng rộng rãi.
Tôi nghĩ rằng những chiếc ví “ít quan trọng” này được phân phối trong “lớp ứng dụng” có thể được tạo ra bởi một mạng lưới các quyền. Ở ý tưởng sơ bộ này, tôi gọi nó là mạng chuyển tiếp tài sản nhiều lớp (Multi-layer Asset Relay Network)
MARN có nghĩa là chúng tôi có thể tạo và kiểm soát ví hợp đồng thông minh L2 (hoặc LN) thông qua ví L1 EOA và cho phép các ví LN này trở thành lớp bộ đệm tài sản của nó.
Điều này có nghĩa là, thông qua giao tiếp L1 → LN, chúng tôi có khả năng cho phép người dùng sử dụng một ví, quản lý tất cả các ví hợp đồng và không cần dựa vào ký quỹ khóa cá nhân, hỗ trợ việc sử dụng các toán tử khôi phục để thống trị một số ví LN. .
Ví dụ: khi người dùng đăng nhập vào DApp, hầu hết logic hợp đồng của chúng tôi dựa trên L2 (chẳng hạn như StarkNet), chúng tôi có thể tự động tạo hợp đồng ví cho người dùng và ghi cục bộ khóa riêng của nhà điều hành (dưới dạng bộ đệm cục bộ có thể cho phép mất mát) Khi tạo hợp đồng này, chúng tôi cần người dùng cung cấp tài khoản bên ngoài L1 (đăng nhập bằng MetaMask) và cung cấp hộp thư thay thế hoặc toán tử khôi phục cụ thể. Theo cách này, khi khóa riêng cục bộ của người dùng bị mất, việc liên lạc của tài khoản L1 EOA hoặc xác thực hộp thư dự phòng có thể giúp ví hợp đồng thông minh sửa đổi toán tử mới, nghĩa là toán tử được tạo ngẫu nhiên cục bộ có thể khôi phục được , thay thế được. Về mặt thiết kế sản phẩm, người dùng không thể cảm nhận được loại khôi phục này, bất kể người dùng có nhớ khóa riêng hay không, anh ta có thể vận hành ví LN bất cứ lúc nào.
Thông qua thiết kế này, tài sản của ví LN có thể được sử dụng làm bộ đệm tài sản của ví L1 EOA. Bằng cách sử dụng giao tiếp cụ thể, người dùng có thể rút tài sản của ví LN từ L1 bất kỳ lúc nào (đối với StarkNet, hành vi này sẽ được hoàn thành trong vòng < 30 phút) Mặt khác, điều này củng cố tính bảo mật của tài sản trong ví hợp đồng và cho phép quản lý quyền hạn nhiều lớp linh hoạt.
MARN đã mang lại những lợi ích rõ ràng: đối với người dùng, không còn cần thiết phải ghi lại nhiều hơn một bản ghi nhớ EOA và họ không có nhận thức gì về các dịch vụ LN; Chi phí và rủi ro bảo mật của Dịch vụ bí mật có thể nói là phục vụ cho nhiều mục đích.
Mục tiêu thiết kế cuối cùng của MARN là giúp người dùng sử dụng một ví bên ngoài duy nhất để đạt được quyền kiểm soát và chuyển tài sản liền mạch qua các mạng nhiều lớp. Từ góc độ của mục tiêu này, LN phải là cơ sở hạ tầng ưu tiên cho các dịch vụ ứng dụng, bởi vì công nghệ Lớp 2 có thể đảm bảo tính bảo mật của tài sản chuỗi chéo ở mức độ lớn nhất mà không chuyển giao rủi ro bảo mật này cho các nhà phát triển ứng dụng viết cầu nối chuỗi chéo hợp đồng (như những gì đã xảy ra với Axie).
Hiện tại, tôi vẫn đang trong giai đoạn đầu suy nghĩ về khái niệm này, nhưng tôi đã triển khai ý tưởng này trong mã hóa DApp của Checks Finance L2, với hy vọng cung cấp cho người dùng trải nghiệm ví liền mạch và an toàn. Đối với MARN, nếu bạn có ý tưởng tương tự hoặc có đề xuất mang tính xây dựng, vui lòng thảo luận với tôi trên Twitter. Tôi cũng sẽ dần dần cập nhật phương pháp thực hành cụ thể của mình về ý tưởng này trên Mirror, đồng thời mã nguồn mở cho sản phẩm và mã cuối cùng.
Tôi có linh cảm rằng ứng dụng quy mô lớn của Web3 có thể xảy ra trong chu kỳ tiếp theo, chúng ta hãy tiếp tục BUIDL để chứng kiến sự thay đổi toàn cầu sâu rộng này.