Peera.

Xu hướng

Khám phá các bài đăng thịnh hành nhất.

Bài viết

1921
  • article banner.
    0xduckmove.Peera.
    Dành choSuiApr 08, 2025
    Bài Viết

    👀 SEAL- Tôi nghĩ quyền riêng tư dữ liệu Web3 sắp thay đổi

    👀 SEAL đang phát trực tiếp trên Sui Testnet - Tôi nghĩ quyền riêng tư dữ liệu Web3 sắp thay đổi Trong Web3, người ta thường nghe các cụm từ như* “người dùng sở hữu dữ liệu của họ”* hoặc* “phi tập trung theo thiết kế”*. Nhưng khi bạn nhìn kỹ, nhiều ứng dụng vẫn dựa vào cơ sở hạ tầng tập trung để xử lý dữ liệu nhạy cảm - sử dụng các dịch vụ như AWS hoặc Google Cloud để quản lý khóa. Điều này dẫn đến một mâu thuẫn: phân cấp trên bề mặt, tập trung hóa bên dưới. Nhưng điều gì sẽ xảy ra nếu có một cách để quản lý bí mật một cách an toàn, mà không từ bỏ sự phân cấp? Giới thiệu SEAL — Quản lý bí mật phi tập trung (DSM), hiện đang hoạt động trên Sui Testnet. SEAL nhằm mục đích khắc phục một trong những đạo đức giả lớn nhất của Web3: hét lên phân quyền trong khi bí mật sử dụng AWS Bạn có thể hỏi tôi: SEAL là gì? SEAL là một giao thức cho phép bạn quản lý dữ liệu nhạy cảm một cách an toàn và** phi tập trung - được xây dựng đặc biệt cho thế giới Web3. Hãy nghĩ về nó như một lớp kiểm soát truy cập đầu tiên về quyền riêng tư được cắm vào DApp của bạn. Bạn có thể nghĩ về SEAL như một loại khóa lập trình cho dữ liệu của bạn. Bạn không chỉ khóa và mở khóa mọi thứ theo cách thủ công - bạnviết chính sách trực tiếp vào hợp đồng thông minhcủa mình**, sử dụng Move on Sui. Giả sử bạn đang xây dựng một DApp trong đó: Chỉ những người nắm giữ NFT mới có thể mở khóa hướng dẫn cao cấp Hoặc có thể DAO phải bỏ phiếu trước khi các tệp nhạy cảm được tiết lộ Hoặc bạn muốn siêu dữ liệu bị khóa thời gian và chỉ có thể truy cập sau một ngày cụ thể SEAL làm cho tất cả điều đó trở nên khả thi. Kiểm soát truy cập hoạt động * onchain*, hoàn toàn tự động, không cần quản trị viên để quản lý nó. Chỉ là logic, được nung ngay vào blockchain. SEAL làm cho tất cả điều đó trở nên khả thi. Kiểm soát truy cập hoạt động * onchain*, hoàn toàn tự động, không cần quản trị viên để quản lý nó. Chỉ là logic, được nung ngay vào blockchain. Một phần thú vị khác là cách SEAL xử lý* mã hóa. Nó sử dụng một cái gì đó được gọi là* mã hóa ngưỡng**, có nghĩa là: không một nút nào có thể giải mã dữ liệu. Cần một nhóm các máy chủ để làm việc cùng nhau - giống như multi-sig, nhưng để mở khóa bí mật. Điều này phân phối niềm tin và tránh được vấn đề một điểm thất bại thông thường. Và để giữ mọi thứ thực sự riêng tư, SEAL mã hóa và giải mã mọi thứ* ở phía máy khác*. Dữ liệu của bạn không bao giờ hiển thị cho bất kỳ phụ trợ nào. Nó nằm trong tay bạn - theo nghĩa đen - trên thiết bị của bạn. và SEAL không quan tâm bạn lưu trữ dữ liệu của mình ở đâu. Cho dù đó là IPFS, Arweave, Walrus hay một số nền tảng khác, SEAL không cố gắng kiểm soát phần đó. Nó chỉ tập trung vàoai được phép xem cái gì, chứ không phải * ở đây* mọi thứ được lưu trữ. Vì vậy, vâng, nó không chỉ là một thư viện hoặc API - nó là một lớponchain-first, được kiểm soát truy cập, bảo mật theo mặc địnhcho DApp của bạn. SEAL lấp đầy một khoảng trống khá quan trọng. Hãy chia nhỏ nó hơn một chút. Nếu bạn đang xây dựng DApp xử lý**bất kỳ dạng dữ liệu nhạy cảm nào - nội dung được kiểm soát, tài liệu người dùng, tin nhắn được mã hóa, thậm chí cả siêu dữ liệu NFT bị khóa theo thời gian - bạn sẽ gặp phải vấn đề tương tự: ➡️ Làm thế nào để bạn quản lý quyền truy cập một cách an toàn mà không cần dựa vào dịch vụ tập trung? Nếu không có một cái gì đó như SEAL, hầu hết các đội đều: Sử dụng các công cụ tập trung như AWS KMS hoặc Firebase, điều này rõ ràng đi ngược lại sự phân quyền Hoặc cố gắng tự vá các logic mã hóa nửa chừng lại với nhau, điều này thường trở nên dễ vỡ và khó kiểm tra https://x.com/EmanAbio/status/1908240279720841425?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1908240279720841425%7Ctwgr%5E697f93dc65359d0c8c7d64ddede66c0c4adeadf1%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fwww.notion.so%2Fharryph%2FSEAL-Launches-on-Sui-Testnet-1cc4f8e09bb380969c0dcc627b96cc22 Cả hai đều không cân bằng tốt. Đặc biệt là không phải khi bạn đang cố gắng xây dựng các ứng dụng không đáng tin cậy trên nhiều chuỗi hoặc cộng đồng. SEAL làm cho toàn bộ quá trình đó trở nên mô-đun và có thể lập trình được. Bạn xác định quy tắc truy cập của mình trong hợp đồng thông minh Move và SEAL xử lý phần còn lại - tạo khóa, phê duyệt giải mã và thực thi truy cập - tất cả mà không cần bất kỳ ai cấp khóa theo cách thủ công hoặc chạy kiểm tra phụ trợ. Thậm chí tốt hơn, những quy tắc đó có thể kiểm tra và không thể thay đổi**- một khi chúng được kết nối, họ tuân theo hợp đồng, không phải là quản trị viên con người. Vì vậy, thay vì hỏi “ai nên quản lý quyền truy cập vào dữ liệu này?” bạn chỉ cần hỏi: “Logic nào nên xác định quyền truy cập?” > ... và để dây xích xử lý nó. Sạch sẽ và có thể mở rộng. Đó là những gì làm cho SEAL phù hợp với nhiều hơn là “công cụ bảo mật” - nó là lớp cơ sở cho bất kỳ DApp nào quan tâm đến quyền riêng tư, tuân thủ hoặc logic truy cập động.** Đó là một sự thay đổi nhỏ - nhưng nó thay đổi rất nhiều về cách chúng ta nghĩ về dữ liệu trong Web3. Thay vì mã hóasau triển khai hoặc dựa vào các dịch vụ bên ngoài,* bạn bắt đầu với quyền riêng tư tích hợp sẵn - và quyền truy cập được xử lý hoàn toàn bằng logic hợp đồng thông minh.* Và đó chính xác là những gì Web3 cần ngay bây giờ. SEAL thực sự hoạt động như thế nào? Chúng tôi đã đề cập đếnSEAL là gìvà* tại sao Web3 cần nó*, hãy xem nó thực sự được xây dựng như thế nào dưới mui xe. Phần này là nơi mọi thứ trở nên kỹ thuật hơn - nhưng theo một cách tốt. Kiến trúc thanh lịch khi bạn thấy tất cả các mảnh khớp với nhau như thế nào. Ở cấp độ cao, SEAL hoạt động bằng cách kết hợplogic truy cập onchainvớiquản lý khóa offchain, sử dụng một kỹ thuật gọi làMã hóa dựa trên danh tính (IBE). Điều này cho phép các nhà phát triển mã hóa dữ liệu * thành một danh tính, và sau đó dựa vào hợp đồng thông minh để xác định *ai được phép giải mã dữ liệu đó. Bước 1: Quy tắc truy cập trong Hợp đồng thông minh (trên Sui) Mọi thứ bắt đầu với hợp đồng thông minh. Khi bạn đang sử dụng SEAL, bạn xác định một hàm gọi là seal_trong hợp đồng Move của bạn - đây là nơi bạn viết các điều kiện để giải mã. Ví dụ: đây là một quy tắc khóa thời gian đơn giản được viết trong Move: entry fun seal_approve(id: vector, c: &clock::Clock) { let mut prepared: BCS = bcs::new(id); let t = prepared.peel_u64(); let leftovers = prepared.into_remainder_bytes(); assert!((leftovers.length() == 0) && (c.timestamp_ms() >= t), ENoAccess); } Sau khi được triển khai, hợp đồng này hoạt động như người gác cổng. Bất cứ khi nào ai đó muốn giải mã dữ liệu, yêu cầu của họ sẽ được kiểm tra dựa trên logic này. Nếu nó đi qua, chìa khóa sẽ được giải phóng. Nếu không, chúng bị chặn. Không ai phải can thiệp. ##Bước 2: Mã hóa dựa trên danh tính (IBE) Đây là nơi phép thuật xảy ra. Thay vì mã hóa dữ liệu cho một địa chỉ ví cụ thể (như với PGP hoặc RSA), SEAL sử dụng* chuỗi danh tính*- nghĩa là bạn mã hóa thành một cái gì đó như: Địa chỉ 0xwalletaddress dao_bỏ phiếu: proposal_xyz PKGID_2025_05_01 (quy tắc dựa trên dấu thời gian) hoặc thậm chí game_user_nft_holder Khi dữ liệu được mã hóa, nó trông như thế này: Encrypt(mpk, identity, message) mpk = khóa công khai chính (mọi người đều biết đến) danh tính = người nhận được xác định logic tin nhắn = dữ liệu thực tế Sau đó, nếu ai đó muốn giải mã, máy chủ khóa sẽ kiểm tra xem họ có khớp với chính sách hay không (thông qua cuộc gọi seal_approbe onchain). Nếu nó được chấp thuận, nó sẽ trả về khóa riêng có nguồn gốc cho danh tính đó. Derive(msk, identity) → sk Decrypt(sk, encrypted_data) Người dùng sau đó có thể giải mã nội dung cục bộ. Vì vậy, mã hóa được thực hiện mà không cần phải biết ai sẽ giải mã trước thời hạn. Bạn chỉ cần xác định các điều kiện* và SEAL sẽ tìm ra phần còn lại sau. Nó năng động. ##Bước 3: Máy chủ chìa khóa - Offchain, nhưng không tập trung hóa Bạn có thể tự hỏi: ai đang giữ các phím chính này? Đây là nơi* Máy chủ chínhcủa SEAL*xuất hiện. Hãy nghĩ về nó như một backend mà: Giữ khóa bí mật chính (msk) Xem các hợp đồng trên chuỗi (như logic seal_approbe của bạn) Chỉ phát hành các khóa có nguồn gốc nếu các điều kiện được thỏa mãn Nhưng - và đây là chìa khóa - SEAL không chỉ dựa vào * một* máy chủ chìa khóa. Bạn có thể chạy nó ở chế độ người**, trong đó nhiều máy chủ độc lập cần phải đồng ý trước khi khóa giải mã được phát hành. Ví dụ: 3 trong 5 máy chủ chìa khóa phải chấp thuận yêu cầu. Điều này tránh các điểm thất bại trung tâm và cho phép phân cấp ở tầng quản lý chính. Thậm chí tốt hơn, trong tương lai SEAL sẽ hỗ trợMPC (tính toán đa bên) vàthiết lập dựa trên enclave(như TEE) - vì vậy bạn có thể nhận được sự đảm bảo mạnh mẽ hơn mà không ảnh hưởng đến khả năng sử dụng. ##Bước 4: Giải mã phía máy khác Khi khóa được trả lại cho người dùng, quá trình giải mã thực tế sẽ xảy ratrên thiết bị của họ. Điều này có nghĩa là: Máy chủ không bao giờ nhìn thấy dữ liệu của bạn Phần phụ trợ không bao giờ lưu trữ nội dung được giải mã Chỉ người dùng mới có thể truy cập tin nhắn cuối cùng Đó là một mô hình riêng tư vững chắc. Ngay cả khi ai đó xâm phạm lớp lưu trữ (IPFS, Arweave, v.v.), họ vẫn không thể đọc dữ liệu mà không truyền logic truy cập. Đây là mô hình tinh thần nhanh chóng: Cấu trúc này giúp dễ dàng xây dựng DApps nơi các quy tắc truy cập không được mã hóa cứng - chúng động, có thể kiểm tra và được tích hợp đầy đủ vào logic chuỗi của bạn. ##* Đội ngũ đằng sau SEAL* SEAL được dẫn dắt bởi* Samczsun*, một nhân vật nổi tiếng trong cộng đồng bảo mật blockchain. Trước đây là Đối tác Nghiên cứu tại Paradigm, ông đã kiểm toán và cứu nhiều hệ sinh thái khỏi những khai thác lớn. Giờ đây, anh ấy tập trung toàn thời gian vào việc xây dựng SEAL thành một phần cốt lõi của cơ sở hạ tầng quyền riêng tư của Web3. Với nền tảng và uy tín của mình, SEAL không chỉ là một công cụ thử nghiệm khác - đó là một nỗ lực nghiêm túc trong việc làm cho quyền riêng tư dữ liệu phi tập trung trở nên thiết thực và có thể mở rộng. Khi SEAL được phát hành trên Sui Testnet, nó mang đến một tiêu chuẩn mới về cách các ứng dụng Web3 có thể quản lý bí mật. Bằng cách kết hợp kiểm soát truy cập onchain, mã hóa ngưỡng và quyền riêng tư phía máy khách, SEAL cung cấp một nền tảng đáng tin cậy hơn cho việc xử lý dữ liệu phi tập trung. Cho dù bạn đang xây dựng DApps, DAO hay trò chơi phi tập trung - SEAL cung cấp một bộ công cụ mạnh mẽ để thực thi kiểm soát truy cập và bảo vệ dữ liệu người dùng mà không ảnh hưởng đến phân quyền. Nếu Web3 sẽ tiến về phía trước, cơ sở hạ tầng an toàn như SEAL không phải là tùy chọn - đó là điều cần thiết

    • Sui
    • Architecture
    • SDKs and Developer Tools
    8
  • article banner.
    Foksa.Peera.
    Dành choPeera MetaJul 25, 2022
    Bài Viết

    How to create an account

    To create an account on the Peeranha website you need to log in first. Peeranha supports four wallets you can log in with: Torus, MetaMask, WalletConnect, and Coinbase. Note: If you are new to Web3 we recommend you to use Torus. Log in with Torus Click Log in. Select the checkbox I agree to the Terms and Conditions and Privacy Policy. Choose Torus in the pop-up window. Select any of the suggested ways you want to sign in or enter your email address. You are now logged in and have an account. In your profile section, you can add more detailed information about yourself and track your progress and achievements. To edit your profile, click Profile and select Edit. Enter all the information that you want to be visible in your profile.

    • tutorial
    5
  • loth.broke.Peera.
    Dành choPolygonMar 31, 2025
    Hỏi đáp Chuyên Gia

    Sử dụng heimdallcli trong thiết lập mạng cục bộ được dockerized?

    heimdallcliTôi đang cố gắng sử dụng matic-clitrong mạng dockerized cục bộ mà tôi đã thiết lập bằng cách sử dụng. Mục tiêu chính của tôi là gửi một đề xuất bằng lệnh này:heimdallcli tx gov submit-proposal param-change {pathToProposalJSONFile} --validator-id {validatorID} --chain-id {chainID}. Tuy nhiên, tôi gặp phải lỗi cho biết: 'Tệp cấu hình “heimdall-config” Không tìm thấy trong “/var/lib/heimdall/config"'. Thư mục cấu hình dường như không tồn tại trong môi trường Docker, mặc dù tôi có thể thấy các nhật ký cho thấy Heimdall đang hoạt động. Làm thế nào tôi có thể giải quyết vấn đề này và heimdallclilàm cho lệnh hoạt động?

    • Polygon PoS
    5
    4
    Câu trả lời hay nhất
  • article banner.
    Foksa.Peera.
    Dành choPeera MetaJul 08, 2022
    Bài Viết

    How to make a post

    Making posts on Peeranha is easy. Follow the simple steps: Log in to your profile with any available wallets. Click the New post button. Select a community from the dropdown list where you want to make a post. Choose Post Type: Discussion, Expert, Tutorial. Note: Read carefully the requirements for each post type, to be sure that your post is published in the correct section. Enter your question in the Title field. To get a more detailed answer, give more details about what you would like to know in the Body field. In the Preview section, you may check how your post looks before publishing it. Select tags that suit your post most. Note: Tags help other users to find relevant information quickly. Click Post. Your post is published and soon you will get relevant answers from the other users.

    • tutorial
    5
  • article banner.
    harry phan.Peera.
    Dành choSuiApr 24, 2025
    Bài Viết

    Quản lý con đa mô-đun với public_receiver

    Đây là phần 3 của loạt phim “Đối tượng cha mẹ-con trong Sui Move”. Đôi khi loại cha mẹ và con của bạn được xác định trong các mô-đun khác nhau hoặc thậm chí các gói khác nhau. Ví dụ: bạn có thể có một đối tượng Warehouse chung có thể lưu trữ bất kỳ loại đối tượng Parcel nào. Mô-đun Warehouse muốn rút ra một con Parcel, nhưng loại Parcel được định nghĩa ở nơi khác. Trong những trường hợp như vậy, chúng tôi sử dụng transfer: :public_receiver, là người anh em họ chênh lệch mô-đun của receiver. ###* nhận so với public_receive* Như chúng ta đã thấy, transfer:: receiver chỉ có thể được gọi trong mô-đun định nghĩa T (hoặc một người bạn) vì nó không yêu cầu T: store. Trình xác minh Move bytecode thực sự đảm bảo rằng trong bất kỳ cuộc gọi nào để nhận, loại T là từ mô-đun hiện tại. Đây là một hạn chế an toàn đối với các đối tượng chỉ có khóa. transfer: :public_receiver là một biến thể mà yêu cầu T: key + lưu trữ nhưng cho phép nhận bên ngoài mô-đun của T. Nói cách khác, nếu kiểu đối tượng có khả năng lưu trữ (nghĩa là nó được phép tồn tại trong bộ lưu trữ toàn cầu một cách tự do), thì bất kỳ mô-đun nào (được cho UID & mut của cha mẹ) đều có thể nhận nó bằng cách sử dụng public_receiver. Điều này hoàn hảo cho các trường hợp mô-đun của phụ huynh khác với mô-đun của trẻ em. Tại sao yêu cầu cửa hàng? Bởi vì cửa hàng đánh dấu rằng đối tượng có thể được duy trì một cách an toàn và chuyển xung quanh bên ngoài mô-đun xác định của nó. Các đối tượng chỉ có khóa có thể có bất biến tùy chỉnh mà mô-đun ban đầu muốn thực thi khi chuyển nhận/nhận; bằng cách loại trừ những đối tượng đó khỏi public_receiver, Sui buộc các nhà phát triển xử lý chúng trong mô-đun (như chúng ta sẽ thấy với các đối tượng bị ràng buộc linh hồn). Nếu một đối tượng có kho, nó dễ cho phép hơn và Sui cho phép logic chuyển nhận/nhận chung để quản lý nó bên ngoài. ###Ví dụ: Các mô-đun phụ huynh và con riêng biệt Hãy minh họa bằng một kịch bản đơn giản: Kho lưu trữ các đối tượng Parcel. Loại Bưu kiện được xác định trong mô-đun riêng của nó và Kho trong một mô-đun khác. Chúng tôi sẽ chỉ ra cách Warehouse có thể nhận được một Parcel con bằng cách sử dụng public_receiver. module demo::parcel { // Child module use sui::object::{Self, UID}; use sui::tx_context::{Self, TxContext}; /// A parcel object that can be stored in a Warehouse. /// It has both key and store, so it can be transferred across modules. struct Parcel has key, store { id: UID, contents: vector } public entry fun create_parcel(contents: vector, ctx: &mut TxContext): Parcel { Parcel { id: object::new(ctx), contents } } } module demo::warehouse { // Parent module use sui::transfer::{Self, Receiving, public_receive}; use demo::parcel::{Self, Parcel}; use sui::object::{UID}; use sui::tx_context::{Self, TxContext}; struct Warehouse has key { id: UID, location: address } public entry fun create_warehouse(location: address, ctx: &mut TxContext): Warehouse { Warehouse { id: object::new(ctx), location } } /// Receive a Parcel that was sent to this Warehouse. /// Returns the Parcel to the caller (transferred to caller's address). public entry fun withdraw_parcel( warehouse: &mut Warehouse, parcel_ticket: Receiving, ctx: &mut TxContext ): Parcel { // Using public_receive because Parcel is defined in another module and has store let parcel = public_receive(&mut warehouse.id, parcel_ticket) oai_citation_attribution:27‡docs.sui.io oai_citation_attribution:28‡github.com; // Transfer the parcel to the transaction sender (so the caller gets ownership) transfer::transfer(parcel, tx_context::sender(ctx)); // We return nothing because we've transferred the Parcel out to the caller. } } Hãy chia nhỏ những gì đang xảy ra trong _parcel: Chúng tôi gọi public_receiver (& mut warehouse.id, parcel_ticket). Bởi vì Parcel có khả năng lưu trữ, cuộc gọi này được cho phép mặc dù chúng tôi không ở trong mô-đun bưu kiện. Dưới mui xe, tính năng này thực hiện kiểm tra và trích xuất tương tự như nhận, nhưng nó được phép chênh lệch mô-đun vì cửa hàng cho biết nó an toàn để làm như vậy. https://github.com/MystenLabs/sui/blob/main/crates/sui-framework/packages/sui-framework/sources/transfer.move#:~:text=public%20fun%20public_receive,T%3E%29%3A%20T Sau đó chúng tôi ngay lập tức chuyển Bưu kiện nhận được đến địa chỉ của người gọi (tx_context: :send (ctx)). Bước này đảm bảo bưu kiện rời khỏi kho và chuyển đến người dùng đã bắt đầu rút tiền. Chúng ta cũng có thể vừa trả lại Parcel từ hàm và Sui sẽ coi nó như một đầu ra thuộc sở hữu của địa chỉ người gọi (vì đó là đầu ra của hàm nhập). Thực hiện chuyển giao rõ ràng sẽ nhiều chi tiết hơn, nhưng làm rõ điều gì đang xảy ra (và cho phép chúng tôi thực hiện bất kỳ kiểm tra nào trước khi giải phóng đối tượng). Tại sao phải bao gồm cửa hàng trong Bưu kiện? Nếu Parcel thiếu khả năng lưu trữ (tức là chỉ có khóa), lệnh gọi public_receiver trong demo: :warehouse sẽ không biên dịch - Sui thực thi rằng T có kho lưu trữ cho public_receiver. Trong trường hợp đó, chúng tôi sẽ buộc phải lấy bưu kiện bằng cách sử dụng nhận trong chính mô-đun bưu kiện (hoặc sử dụng một số mối quan hệ bạn bè), điều này làm phức tạp thiết kế đa mô-đun. Bằng cách thêm cửa hàng vào Parcel, chúng tôi nói một cách hiệu quả “đối tượng này có thể được di chuyển và nhận tự do bởi các mô-đun bên ngoài”, đó là những gì chúng tôi muốn cho một mẫu container chung. Mẫu gọi hàm: Để sử dụng những thứ này trong giao dịch, luồng sẽ là: 1.Đặt cọc (chuyển sang đối tượng) :Gọi chuyển: :public_transfer (parcel_obj, @warehouse_id) để gửi Bưu kiện vào Kho. Điều này đánh dấu chủ sở hữu của bưu kiện là nhà kho. (Chúng tôi sử dụng public_transfer ở đây vì nó nằm bên ngoài mô-đun Parcel và Parcel có cửa hàng. Bên trong mô-đun của bưu kiện, việc chuyển tiền đơn giản cũng sẽ hoạt động.) Rút tiền (nhận lại) :Sau đó, gọi _parcel (warehouse_obj, Receiving (parcel_id,...)). Bộ nhận có thể được SDK lấy bằng cách tham khảo ID của bưu kiện và phiên bản mới nhất. Hàm sẽ gọi public_receiver và sau đó chuyển bưu kiện cho bạn. Sau cuộc gọi _parcel, chủ sở hữu của bưu kiện quay trở lại một địa chỉ (của bạn), vì vậy nó lại là một đối tượng thuộc sở hữu địa chỉ bình thường. Nhà kho không còn sở hữu nó nữa. Cân nhắc giữa các mô-đun: Lưu ý rằng mô-đun Warehouse cần biết về loại Bưu kiện (chúng tôi sử dụng demo: :parcel: :Parcel). Điều này là do chúng tôi gõ rõ ràng Nhận là Nhận. Nếu bạn muốn một vùng chứa thực sự chung chung có thể nhận bất kỳ loại đối tượng nào, bạn sẽ phải sử dụng generics hoặc một cách tiếp cận khác (có thể là trường động với kiểu xóa). Nhưng đối với hầu hết các trường hợp sử dụng, bạn sẽ biết những loại trẻ em mà bạn mong đợi. Tại sao public_receiver thay vì chỉ gọi Receive? Nếu chúng ta thử transfer: :receiver (&mut warehouse.id, parcel_ticket) trong mô-đun warehouse, trình xác minh Move sẽ từ chối vì Parcel không được định nghĩa trong demo: :warehouse. Sui cung cấp public_receiver như một cách may mắn để thực hiện việc này với một kiểm tra khả năng bổ sung (yêu cầu cửa hàng). Tương tự, Sui có transfer vs public_transfer, freeze object vs public_freeze object, v.v., theo cùng một mẫu: các phiên bản public_ được sử dụng bên ngoài mô-đun xác định và yêu cầu lưu trữ. Đừng quên sự cho phép của phụ huynh: Ngay cả với public_receiver, bạn vẫn cần &mut warehouse.id đó. Chúng tôi nhận được nó vì _parcel nằm trong mô-đun của Warehouse và chấp nhận &mut Warehouse. Do đó, chỉ ai đó có thể gọi cho người đó (chủ kho) mới có thể rút bưu kiện. Nếu mô-đun kho không cung cấp một hàm như vậy một cách công khai, thì cũng không ai có thể gọi public_receiver bên ngoài trên con của nó. Vì vậy, cross-module không bỏ qua sự kiểm soát của cha mẹ; nó chỉ cho phép mã của cha mẹ hoạt động với các kiểu con mà nó không xác định. Lưu ý về khả năng lưu trữ: Việc cung cấp một kho đối tượng làm cho nó linh hoạt hơn nhưng ít bị hạn chế hơn một chút - bất kỳ mô-đun nào có tham chiếu gốc đều có thể kéo nó ra bằng cách sử dụng public_receiver. Nếu bạn muốnhạn hạncách truy xuất một đối tượng (ví dụ: thực thi logic tùy chỉnh hoặc ngăn chặn việc trích xuất dễ dàng), bạn có thể cố tình biến nó thành chỉ có khóa. Chúng ta sẽ thấy một ví dụ về điều đó với các đối tượng bị ràng buộc với linh hồn. Trong những trường hợp đó, bạn có thể triển khai một hàm nhận tùy chỉnh thay vì dựa vào public_receiver. Tóm lại phần này: public_receiver là bạn của bạn để quản lý các đối tượng con được xác định trong các mô-đun khác, miễn là các đối tượng đó có khả năng lưu trữ. Nó cho phép bạn xây dựng các hệ thống đa mô-đun (như Kho khó/Bưu kiện của chúng tôi) trong khi vẫn tôn trọng quyền sở hữu và kiểm soát truy cập. Chỉ cần nhớ bao gồm store trên các loại con và sử dụng public_transfer khi gửi chúng cho cha mẹ từ bên ngoài mô-đun của họ.

    • Sui
    • Architecture
    5
  • article banner.
    0xduckmove.Peera.
    Dành choSuiApr 25, 2025
    Bài Viết

    Tóm tắt lại video có thể tăng cường hành trình Sui Dev của bạn

    Hãy trở nên thật nếu bạn đã từng xây dựng trênSui, bạn có thể đã đâm vào một số bức tường. Từ các ID đối tượng khó hiểu đến việc sắp xếp các CLI và quay các mạng cục bộ, nó giống như chuẩn bị cho một cuộc chiến với trùm trước khi bạn viết ra logic kinh doanh đầu tiên của mình. Trong một hội thảo gần đây như là một phần của loạt bài Road to Overflow, Moven từ Dubhe Foundation đã chia sẻ cách Dubhe Engine hoạt động, những vấn đề mà nó giải quyết và nó không chỉ là một công cụ - đó là một phong trào đang phát triển. Liên kết video: https://www.youtube.com/watch?v=CHkOS-TYehM Vấn đề: Công cụ phân mảnh, thiết lập nặng Moven bắt đầu mọi thứ bằng một số cuộc nói chuyện thực sự về bối cảnh nhà phát triển Sui hiện tại: Những người mới đến phải đối mặt với một đường cong học tập dốc: thiết lập ví, nhận mã thông báo thử nghiệm, gói giàn giáo, học cú pháp Move, quay mạng thử cục bộ, định cấu hình SDK và hơn thế nữa. Ngay cả các nhà phát triển có kinh nghiệm cũng thấy mình lãng phí thời gian cho các tác vụ thiết lập lặp đi lặp lại thay vì tập trung vào logic DApp thực tế. Các cơ sở mã trở nên nguyên khối nhanh chóng - các tệp.move lớn, lộn xộn với các cấu trúc dữ liệu, trình tạo, trợ giúp và các hàm nhập tất cả đều nhồi nhét lại với nhau. Nói tóm lại: hệ sinh thái đang phát triển nhanh chóng, nhưng các công cụ vẫn chưa theo kịp cho đến bây giờ. ##* Giải pháp: Tạo mã dựa trên lược đồ* Trọng tâm của* Dubhe Enginelà một ý tưởng chính:phát triển sơ đồ đầu tiên*. Chỉ với một tệp cấu hình (d.config.TS), các nhà phát triển có thể xác định: Cấu trúc dữ liệu onchain của họ Sự kiện Lỗi Các loại tùy chỉnh (thậm chí vectơ 2D của cấu trúc tự xác định!) Từ đó, một lệnh (pnpm dub schema:gen) tự động tạo gói Move có cấu trúc đầy đủ và tích hợp frontend, hoàn chỉnh với: Cấu trúc tập tin mô-đun hóa Khả năng cấu tạo Onchain (thông qua nhập khẩu từ các gói đã xuất bản của Sui) Thiết lập Localnet, xây dựng, triển khai và hỗ trợ frontend (sẵn sàng Next.js) Bạn viết logic.* Dubhe*xử lý tấm nồi hơi. ##* ⏱️ Tác động thực: Mã lặp đi lặp lại ít hơn 80%* Trong các thí nghiệm nội bộ, các dự án do Dubb tạo ra cho thấy chỉ* 20% mã*phải được viết thủ công - phần còn lại là giàn giáo được tạo tự động thông qua lược đồ. Điều này có nghĩa là tạo mẫu nhanh hơn, ít lỗi hơn và nhiều thời gian hơn để tập trung vào những gì thực sự quan trọng: giá trị cốt lõi của ứng dụng của bạn. ##* Công cụ hệ sinh thái phát vật* Dubb không dừng lại ở giàn giáo. Movin đã nói rõ: đây làcơ sở hạ tầng cho một nền kinh tế nhà phát triển mới. Đây là cách cộng đồng Dubb Engine đang phát triển: Trợ cấp khí đốt:** Dành cho các nhà xây dựng mới thử nghiệm với Dubb Tiền thưởng nhiệm vụ:** Giống như “số phát hành đầu tiên tốt” của GitHub, nhưng có phần thưởng Lớp quản trị (D-OS) :**Bỏ phiếu Onchain cho việc ưu tiên dự án Hỗ trợ Launchpad:** Giúp các dự án trưởng thành đảm bảo tài trợ DApp Staking:** Người dùng có thể đặt cược D-token để hỗ trợ DApps yêu thích của họ và bỏ phiếu cho các quyết định về lộ trình Vòng phản hồi này thúc đẩy toàn bộ hệ sinh thái Sui: nhiều nhà phát triển hơn → nhiều ứng dụng hơn → nhiều người dùng hơn → nhiều nhà phát triển hơn.

    • Architecture
    • SDKs and Developer Tools
    5
  • yhant3.Peera.
    Dành choSuiDec 08, 2024
    Thảo Luận

    How to access and manage nested structs and dynamic fields in Move?

    How to access and manage nested structs and dynamic fields in Move?

    • Sui
    • Move
    5
    6
    Câu trả lời hay nhất
  • article banner.
    Foksa.Peera.
    Dành choPeera MetaJul 25, 2022
    Bài Viết

    How to answer posts

    Providing answers on Peeranha is easy, but at the same time, it is a responsible task. Remember that your correct answers help other users to find solutions to their challenges. To provide an answer, follow the simple steps: Log in to your profile with any available wallets. Select a post that you would like to answer. Use the Body field to provide an answer. In the Preview section, you may check how your answer looks before publishing it. Click Post answer. Your answer is posted and it will help some of the users to solve their issues.

    • tutorial
    4
  • 0xffda...7cf4.Peera.
    Dành choAnkrJan 25, 2023
    Hỏi đáp Chuyên Gia

    How do I become Ankr node provider?

    Hey! Can I physically run Nod Ankr? What kind of set-up do I need? Or is the only way to become Ankr node provider is described in this question.

    • Node Provider
    4
    2
  • 0x4e25...85bc.Peera.
    Dành choPeera MetaMar 28, 2023
    Thảo Luận

    Titling and making rules for it

    We look forward to accumulating knowledge about Peeranha. The community has taken their valuable time to suggest these comments. We would like to increase its value as much as possible. To do so, it needs to be discovered by many members who are seeking that knowledge. In order to be discovered by many members, I think we need to dig deeper and think about how we should give titles, or give titles according to some rules.

    • discussion
    • expert q&a
    4
    2
Chúng tôi sử dụng cookie để đảm bảo bạn có trải nghiệm tốt nhất trên trang web của chúng tôi.
Thêm thông tin