Cảnh báo rủi ro: Đề phòng huy động vốn bất hợp pháp dưới danh nghĩa 'tiền điện tử' và 'blockchain'. — Năm cơ quan bao gồm Ủy ban Giám sát Ngân hàng và Bảo hiểm
Tìm kiếm
Đăng nhập
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
Xem thị trường
Web3 App Store Protocol: Cung cấp một tiêu chuẩn để đăng ký và phân phối các ứng dụng Web3
W3.Hitchhiker
特邀专栏作者
2022-01-03 11:43
Bài viết này có khoảng 6167 từ, đọc toàn bộ bài viết mất khoảng 9 phút
Nó giải quyết các vấn đề về bảo mật tài sản và quyền truy cập lưu trữ đám mây cho người dùng, lớp ứng dụng không đáng tin cậy, an toàn và dễ sử dụng, đồng thời một bộ hợp đồng thông min

tiêu đề cấp đầu tiên

Lý lịch

Hiện tại, các nhà phát triển có thể cung cấp cho người dùng các dịch vụ lớp giao thức đáng tin cậy thông qua một bộ hợp đồng thông minh trên chuỗi khối. Tuy nhiên, người dùng hàng ngày thông thường sẽ không có khả năng hiểu và sử dụng trực tiếp các hợp đồng thông minh này - do đó, họ cần một lớp ứng dụng đáng tin cậy, an toàn và dễ sử dụng.

Các nhà phát triển lớp ứng dụng triển khai các giao diện người dùng dễ sử dụng để giúp người dùng tương tác trực tiếp với các giao thức và mã thông báo. Hầu hết các ứng dụng này sẽ cố gắng kết nối với ví Web3 của người dùng và yêu cầu chữ ký trực tiếp.

Chúng tôi gọi các ứng dụng này là"Web3 App". Ví dụ: ứng dụng web chính thức của Uniswap, được lưu trữ tạihttps://app.uniswap.org, là một ứng dụng Web3 điển hình sẽ giúp người dùng tương tác với các giao thức của riêng họ trên chuỗi khối. Sau đây là cấu trúc kỹ thuật của các ứng dụng và giao thức của Uniswap:

Động lực

Khi các hợp đồng thông minh trên lớp giao thức phát triển cùng với các ứng dụng Web3 tương ứng, chúng ta vẫn có thể thấy hai vấn đề chính trong thực tiễn ngành hiện tại là khả năng truy cập và bảo mật.

khả năng tiếp cận

Đầu tiên, hầu hết các ứng dụng Web3 ngày nay đều lưu trữ mã của chúng trong các dịch vụ đám mây do chủ dự án kiểm soát. Nếu chủ sở hữu đưa trang web ngoại tuyến hoặc trang web bị DDos đóng cửa hoặc để đáp ứng các yêu cầu chính sách quốc gia, v.v., thì người dùng thông thường sẽ không thể dễ dàng quản lý nội dung của họ nữa (trừ khi họ đủ thông minh để tương tác trực tiếp với lớp giao thức). Sự không chắc chắn về quyền truy cập có thể đáng sợ vì nó làm giảm lòng tin giữa những người dùng.

Bảo vệ

Thứ hai, hầu hết người dùng hiện truy cập các ứng dụng Web3 thông qua sự kết hợp giữa trình duyệt Web và trình cắm thêm Web3 và quá trình này chứa đầy các vấn đề về bảo mật. Điều này tạo cơ hội cho cả nhóm dự án và tin tặc nhúng mã độc mới vào các ứng dụng Web3, từ đó đánh cắp tài sản của người dùng.

tiêu đề cấp đầu tiên

Sự chỉ rõ

Giao thức cửa hàng ứng dụng Web3

chúng tôi đề xuất mộtGiao thức cửa hàng ứng dụng Web3Để giải quyết các vấn đề về khả năng truy cập và bảo mật đã nói ở trên. Các cửa hàng ứng dụng này phải chứa một hợp đồng thông minh dựa trênCơ quan đăng ký ứng dụng Web3 (Cơ quan đăng ký ứng dụng Web3), gói ứng dụng Web3 dựa trên siêu dữ liệu được lưu trữ ngoại tuyến xung quanh quyền, mô tả phiên bản, thông số kỹ thuật, v.v. và ứng dụng khách lưu trữ ứng dụng Web3 được cài đặt trên thiết bị cục bộ của người dùng. Sau đó, chúng ta cũng cầnkiểm toán viên web3Để giúp người dùng kiểm tra mã nguồn của các ứng dụng Web3. Mối quan hệ giữa các thành phần này được thể hiện dưới đây.

Cơ quan đăng ký ứng dụng Web3 (Cơ quan đăng ký ứng dụng Web3)là một tập hợp dựa trênTiêu chuẩn đăng ký ứng dụng Web3 (Tiêu chuẩn đăng ký ứng dụng Web3)hợp đồng thông minh. Các nhóm (Tổ chức) và cá nhân có thể thiết lập cơ quan đăng ký ứng dụng Web3 của riêng họ mà không cần được phép. Các nhà phát triển Web3 có thể sử dụng tài khoản trên chuỗi của họ để đăng ký các ứng dụng Web3 của họ trong sổ đăng ký này và thực hiện quản lý phiên bản trên phân phối và tổng kiểm tra của gói cài đặt. Người kiểm tra có thể sử dụng tài khoản trên chuỗi của họ mà không được phép để kiểm tra tất cả các ứng dụng này và công bố kết quả trong sổ đăng ký.

Gói ứng dụng Web3Đề cập đến phần mềm do nhà phát triển phát hành để người dùng cài đặt ứng dụng Web3 trên thiết bị cục bộ của họ. Các gói này có thể được lưu trữ trong bất kỳ dịch vụ lưu trữ tập trung hoặc phi tập trung nào và URL cũng như tổng kiểm tra của gói phải được ghi lại trong sổ đăng ký. Đồng thời, dựa trênWeb3 Application Configuration Standard (Tiêu chuẩn cấu hình ứng dụng Web3)Ở trên, ở thư mục gốc của gói phải có tệp cấu hình chứa tuyên bố quyền và mô tả phiên bản cho ứng dụng Web3. Đường dẫn lưu trữ của mã nguồn phải được chỉ định trong tệp cấu hình để người kiểm tra có thể dễ dàng lấy mã nguồn để kiểm tra.

Máy khách Cửa hàng Ứng dụng Web3 (Ứng dụng Cửa hàng Ứng dụng Web3)là phần mềm được cài đặt trên thiết bị cục bộ của người dùng. nhóm và cá nhân có thểWeb3 App Store Client Standard (**App Store Client Standard)Tự do xây dựng ứng dụng khách trên cửa hàng ứng dụng của riêng bạn trên cơ sở Khách hàng có thể kết nối với một hoặc nhiều sổ đăng ký cùng một lúc. Nó cần lấy danh sách các ứng dụng Web3, thông tin phiên bản và thông tin kiểm tra từ sổ đăng ký. Khi người dùng cài đặt hoặc cập nhật ứng dụng Web3, gói cài đặt cần được lấy tự động. Sau đó xác minh rằng tổng kiểm tra của gói bằng với tổng kiểm tra trong sổ đăng ký. Cuối cùng, nó sẽ cho người dùng biết ứng dụng Web3 này yêu cầu bao nhiêu quyền. Sau khi người dùng xác nhận quyền, Ứng dụng Web3 sẽ được cài đặt trên thiết bị cục bộ.

Khung thiết kế này đảm bảo khả năng truy cập của các ứng dụng Web3 vì người dùng có thể tiếp tục sử dụng các phiên bản cục bộ cũ - và có quyền nâng cấp theo các đăng ký mới và các gói ứng dụng mới.

Đồng thời, khách hàng sẽ xác minh tổng kiểm tra của gói phần mềm cục bộ với tổng kiểm tra trong trung tâm đăng ký (tổng kiểm tra), do đó tránh khả năng tin tặc hoặc nhóm dự án thay đổi và đảm bảo rằng các ứng dụng được người dùng sử dụng phù hợp với trung tâm đăng ký trên chuỗi Phù hợp với các ứng dụng đã xuất bản. Tệp cấu hình trong gói phần mềm cũng trỏ đến phiên bản hiện tại của mã nguồn và kiểm tra viên có thể sử dụng tổng kiểm tra để xác minh rằng gói phần mềm được đóng gói từ các mã nguồn này. Nó sẽ đảm bảo tính nhất quán giữa mã nguồn và các gói cài đặt, sau đó đảm bảo rằng người dùng đang sử dụng các gói an toàn đã được kiểm tra bởi kiểm toán viên.

Khi người dùng sử dụng ứng dụng Web3, máy khách cũng sẽ giới hạn quyền của các ứng dụng này theo tuyên bố về quyền của ứng dụng đã được người dùng xác nhận trước đó. Sau đó hoàn toàn đảm bảo an toàn cho người dùng khi truy cập các dịch vụ Web3 cục bộ.

Web3 App Registration Standard (Tiêu chuẩn đăng ký ứng dụng Web3)

pragma solidity ^0.8.0;
/**
* @title AppRegistration interface
*/
interface IAppRegistration {
   struct auditorVote {
       address auditor;
       uint8 level;
   }
   function createApp() external returns (uint256);
   function addVersion(uint256 appId, string memory versionId, string memory fileUrl) external;
   function getAppIds() external returns (uint256[] memory);
   function getVersions(uint256 appId) external returns (string[] memory);
   function getVersionFileUrl(uint256 appId, string memory versionId) external view returns (string memory);
   function voteApp(uint256 appId, uint8 level) external;
   function voteAppVersion(uint256 appId, string memory versionId, uint8 level) external;
   function getVotes(uint256 appId, string memory versionId) external returns (auditorVote[] memory);
}

Web3 App Configration Standard (Chuẩn cấu hình ứng dụng Web3)

{
 "properties": {
   "name": {
     "title": "Name of the App",
     "type": "string"
   },
   "logoUrl": {
     "title": "Logo of the App",
     "type": "string"
   },
   "description": {
     "title": "Description of the App",
     "type": "string"
   },
   "origin": {
     "title": "Online dapp origin",
     "type": "string",
     "pattern": "^((https|http)?:\\/\\/)[^\\\\s]+"
   },
   "permissions": {
     "properties": {
       "web3Provider": {
         "requestAccount": {
           "title": "If App need permission to connect with wallet",
           "type": "boolean"
         },
         "personalSign": {
           "properties": {
             "request": {
               "type": "boolean",
               "title": "If App need permission to request sign text message"
             },
             "patterns": {
               "type": "array",
               "title": "Patterns of text message"
             }
           },
           "title": "Declaration for sign text message",
           "type": "object"
         },
         "transaction": {
           "properties": {
             "request": {
               "type": "boolean",
               "title": "If App need permission to request transaction"
             },
             "contractCalls": {
               "type": "array",
               "title": "Declaration for contrat transaction"
             },
             "tokenApproves": {
               "type": "array",
               "title": "Declaration for token approval"
             },
             "ERC20TokenTransfer": {
               "type": "array",
               "title": "Declaration for ERC20 token transfer transaction"
             }
           },
           "type": "object",
           "title": "Declaration for transaction"
         },
         "network": {
           "urlPatterns": {
             "type": "array",
             "title": "Patterns of whitelist network request URL"
           },
           "title": "Declaration for APP network request",
           "type": "object"
         },
         "title": "Declaration for Web3Provider permissions",
         "type": "object"
       }
     },
     "title": "Declaration for App permissions",
     "type": "object"
   },
   "app": {
     "properties": {
       "id": {
         "title": "AppId allocated by App Store",
         "type": "string"
       },
       "chainId": {
         "title": "The chainId which App Store deployed",
         "type": "string"
       },
       "contract": {
         "title": "The contract address of App Store",
         "type": "string"
       }
     },
     "type": "object",
     "title": "App information on App Store"
   },
   "source": {
     "properties": {
       "repository": {
         "type": "string",
         "title": "The URL that can access App source code",
         "pattern": "^(https:\\/\\/|git@)[^\\\\s]+"
       },
       "buildScript": {
         "type": "string",
         "title": "The script that can complie source code to bundles"
       },
       "systemEnvironment": {
         "type": "string",
         "title": "The system environment that can make sure auditor can build bundle which has the same SHA256"
       }
     },
     "type": "object",
     "title": "Information of source code for auditor use"
   }
 },
 "title": "Web3 App json config file",
 "type": "object"
}

Web3 App Store Client Standard (Tiêu chuẩn ứng dụng khách Web3 App Store)

interface App {
 app: {
   id: string
   chainId: string
   contract: string
 }
 permissions: {
   network: {
     urlPatterns: string[]
   },
   web3Provider: {
     requestAccount: boolean
     personalSign: {
       request: boolean
       patterns: string[]
     },
     transaction: {
       request: boolean
       contractCalls: ContractCallItem[]
       tokenApproves: TokenApproveItem[]
       ERC20TokenTransfer: ERC20TokenTransferItem[]
     }
   }
 }
 source: {
   repository: string
   buildScript: string
   systemEnvironment: string
 }
 appId: number
 domain: string
 versionId: string
 files: string[]
 name: string
 description?: string
 logoUrl: string
}
enum VoteLevel {
 DANGER = -1
 UNKNOW = 0
 SAFE = 1
}
class Web3AppStore {
 chainId: string; // The chainId which App Store deployed
 
 contract: string; // The contract address of App Store
 
 getApps(): Promise
 
 getApp(appId: number, version?: string): Promise
 
 getAppVersions(appId: number): Promise

 createApp(): Promise
 
 addVersion(appId: number, fileUrls: string[]): Promise
 
 voteApp(appId: number, level: VoteLevel): Promise
 
 voteAppVersion(appId: number, versionId: string, level: VoteLevel): Promise
 
 // Validate the SHA256 of App file is same as versionId of not
 validateAppVersion(app: App): Promise
 
 // Validate if the domain which declared in domain property has the same web3.json file of current App
 validateAppDomain(app: App): Promise
}

Releases

No releases published

Packages

No packages published

Web3.0
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Tài khoản chính thức
https://twitter.com/OdailyChina
Tóm tắt AI
Trở về đầu trang
Nó giải quyết các vấn đề về bảo mật tài sản và quyền truy cập lưu trữ đám mây cho người dùng, lớp ứng dụng không đáng tin cậy, an toàn và dễ sử dụng, đồng thời một bộ hợp đồng thông min
Thư viện tác giả
W3.Hitchhiker
Tải ứng dụng Odaily Nhật Báo Hành Tinh
Hãy để một số người hiểu Web3.0 trước
IOS
Android