Move.

Trang chủ

Chào mừng đến với Diễn đàn Cộng đồng Move

Bài Viết Mới

  • article banner.
    MumiTroll.
    Oct 31, 2023
    Bài Viết
    Giao dịch được Sui tài trợ - Ví dụ về tích hợp cơ bản

    Theo truyền thống, người dùng tham gia vào các ứng dụng phi tập trung (DApps) phải đối mặt với một rào cản phổ biến: phí gas. Các khoản phí gas Sui này trong trường hợp của chúng tôi, được yêu cầu để thực hiện các giao dịch trên blockchain, thường ngăn cản người dùng mới nắm bắt đầy đủ tiềm năng của Web3. Tuy nhiên, tính năng giao dịch được tài trợ sáng tạo của Sui loại bỏ trở ngại này, trao quyền cho các nhà xây dựng trang trải phí gas cho các giao dịch ứng dụng của họ. Chức năng mang tính cách mạng này mở đường cho trải nghiệm người dùng liền mạch, khuyến khích việc áp dụng rộng rãi hơn các ứng dụng phi tập trung. TheMoveDev GitHub; SuiQL Kho lưu trữ GitHub; Nếu bạn có bất kỳ câu hỏi nào, bạn có thể hỏi họ tại đây. Quy trình giao dịch được tài trợ Quy trình giao dịch được tài trợ của Sui là một quy trình được sắp xếp tốt đảm bảo các giao dịch suôn sẻ và miễn phí cho người dùng cuối. Dưới đây là bảng phân tích các bước liên quan. Người dùng bắt đầu một hành động Quá trình bắt đầu khi người dùng khởi tạo GasLessTransactionDatagiao dịch, cho biết ý định của họ để thực hiện một hành động cụ thể trong DApp. DApp tạo khối giao dịch Sui Trọng tâm của quy trình giao dịch được tài trợ là khả năng tạo Khối giao dịch của DApp. Khối này gói gọn tất cả dữ liệu cần thiết, bao gồm ý định của người dùng, hành động sẽ được thực hiện và bất kỳ tham số liên quan nào. Truyền GasLessTransactionData Nó GasLessTransactionDatađược gửi đến nhà tài trợ, một người tham gia chính trong khuôn khổ giao dịch được tài trợ, với một yêu cầu chữ ký. Dữ liệu này đóng vai trò là nền tảng cho giao dịch sắp tới. Xác thực và xây dựng dữ liệu giao dịch Nhà tài trợ xác nhận giao dịch nhận được và xây dựngTransactionData, kết hợp các khoản phí gas cần thiết. Bước này đảm bảo rằng giao dịch được tài trợ thích hợp để thực hiện trên blockchain Sui. Ký giao dịch Nhà tài trợ ký tênTransactionData, cho biết sự chấp thuận và cam kết của họ đối với giao dịch. Khóa riêng cần thiết cho chữ ký này được lưu trữ an toàn trong AWS Secrets Manager, đảm bảo tính bảo mật tối đa. Xác minh và ký kép bởi Người dùng Chữ kýTransactionData, cùng với chữ ký của nhà tài trợ, được gửi lại cho người dùng. Người dùng xác minh chi tiết giao dịch và ký TransactionDatamột lần nữa, tạo một giao dịch ký kép sẵn sàng để thực hiện. Thực hiện giao dịch trên Sui Giao dịch ký kép được gửi đến mạng Sui thông qua một nút Sui (nút đầy đủ) hoặc nhà tài trợ. Sui xử lý giao dịch, thực hiện hành động được chỉ định trong DApp, tất cả mà không yêu cầu người dùng phải trả bất kỳ khoản phí gas nào. Thông báo người dùng Cuối cùng, người dùng được DApp thông báo rằng giao dịch được tài trợ và gửi đi. Thực hiện các giao dịch do Sui tài trợ: Quan điểm của nhà phát triển Để thực hiện các giao dịch được tài trợ, các nhà phát triển tương tác với API Sui hoặc API Giao dịch được tài trợ, sử dụng sui-sign-sponsored-transactionchức năng Lambda. Dưới đây là một cái nhìn thoáng qua về mã phía máy khách tạo điều kiện cho quá trình này: const response = await fetch('http://localhost:5000/blockchain/sui-sign-sponsored-transaction', { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify({ sender: wallet.address, module: libName, action, arguments: data, }), }); const sponsorSignedTransaction = await response.json(); const transactionBlock = TransactionBlock.from(sponsorSignedTransaction?.transactionBlockBytes); const senderSignedTransaction = await wallet.signTransactionBlock({ transactionBlock, }); const executeResponse = await provider.executeTransactionBlock({ transactionBlock: sponsorSignedTransaction?.transactionBlockBytes, signature: [sponsorSignedTransaction?.signatureBytes, senderSignedTransaction.signature], options: { showEffects: true }, requestType: 'WaitForLocalExecution', }); Mã phía khách hàng này hoạt động như một cầu nối giữa người dùng, nhà tài trợ và blockchain Sui, cho phép thực hiện liền mạch các giao dịch miễn phí gas. Kết luận Tính năng giao dịch được tài trợ của Sui thể hiện một sự thay đổi mô hình trong thế giới các ứng dụng phi tập trung, loại bỏ rào cản đáng kể đối với người dùng. Thông qua việc khám phá chức năng sáng tạo này, chúng tôi đã thu được những hiểu biết có giá trị đã định hình cách tiếp cận của chúng tôi để xây dựng DApps thân thiện với người dùng. Hãy để lại câu hỏi của bạn ở đây.

    0
  • article banner.
    MumiTroll.
    Oct 31, 2023
    Bài Viết
    Trình nghe sự kiện Sui Move và Webhook - Ví dụ về tích hợp cơ bản

    Đối với các doanh nghiệp và nhà phát triển, việc tích hợp với các chuỗi như Sui mang đến một cơ hội duy nhất để đổi mới và tạo ra các giải pháp chuyển đổi. Trong loạt bài này, chúng tôi đi sâu vào hành trình xây dựng trên Sui, làm sáng tỏ sự phức tạp của tích hợp, tập trung vào trình nghe sự kiện và webhook, vốn là thành phần không thể thiếu của TheMoveDev và SuiQL, Sui lập chỉ mục GraphQL Event API được tạo bởi Peeranha. TheMoveDev GitHub; SuiQL Kho lưu trữ GitHub; Nếu bạn có bất kỳ câu hỏi nào, bạn có thể hỏi họ tại đây. Mã được triển khai trong TypeScript và chạy trong môi trường AWS Cloud bằng cách sử dụng các công nghệ không có máy chủ. Serverless được sử dụng để triển khai. Serverless Offline được sử dụng để chạy mã cục bộ. Người nghe sự kiện Sui và Webhook: Tổng quan ngắn gọn Các mạng blockchain vốn đã được phân cấp, làm cho việc tích hợp dữ liệu thời gian thực trở thành một kỳ tích đầy thách thức. Đây là nơi người nghe sự kiện và webhook phát huy tác dụng.* Người nghe sự kiệnlà cơ chế liên tục theo dõi hoạt động blockchain, xác định và nắm bắt các sự kiện cụ thể mà bạn quan tâm. Mặt khác,* Webhooks**là các cuộc gọi lại HTTP được kích hoạt bởi các sự kiện này, cho phép giao tiếp liền mạch giữa các ứng dụng khác nhau. Kiến trúc hội nhập Sui Hành trình hội nhập của chúng tôi với Sui liên quan đến một kiến trúc toàn diện bao gồm một số thành phần chính. Người nghe sự kiện Người nghe sự kiện, một nhiệm vụ ECS Fargate mạnh mẽ, đóng một vai trò quan trọng trong thiết lập tích hợp của chúng tôi. Nó liên tục thăm dò các sự kiện mới từ các nút Sui (Sui full node), đảm bảo rằng hệ thống của chúng tôi luôn cập nhật các hoạt động blockchain mới nhất. Hàng đợi người nghe sự kiện Sui Các sự kiện được xác định bởiNgười nghe sự kiệnđược thêm vàoSui Listener Queue, một hàng đợi FIFO SQS. Hàng đợi này hoạt động như một bộ lưu trữ trung gian, cho phép xử lý và quản lý sự kiện hiệu quả. Webhook Invoker Chịu trách nhiệm gọi webhook,Webhook Invokerlà một chức năng Lambda đảm bảo giao tiếp liền mạch giữa hệ thống của chúng tôi và các ứng dụng bên ngoài. Nó hoạt động như một cầu nối, tạo điều kiện cho việc truyền dữ liệu sự kiện đến các điểm cuối được chỉ định. Cầu sự kiện Event Bridge, một thành phần quan trọng trong kiến trúc của chúng tôi, gọiWebhook InvokerLambda bất cứ khi nào các mục mới được thêm vàoSui Listener Queue. Cơ chế kích hoạt thời gian thực này đảm bảo các cuộc gọi webhook nhanh chóng. Webhook Webhook, được triển khai dưới dạng chức năng AWS Lambda, xử lý các sự kiện riêng lẻ nhận được từ blockchain Sui. Thành phần này đóng một vai trò quan trọng trong việc giải thích dữ liệu sự kiện và thực hiện các hành động cụ thể dựa trên loại sự kiện. Quy trình làm việc: Tất cả kết hợp với nhau như thế nào Hiểu quy trình làm việc là điều cần thiết để nắm bắt hoạt động liền mạch của kiến trúc tích hợp của chúng tôi. Hoạt động người nghe sự kiện Trình nghe sự kiện hoạt động trong một vòng lặp liên tục, thực hiện các cuộc gọi API RPC suix_queryEventsđể truy xuất các sự kiện mới được liên kết với ID gói đã định cấu hình. Events Listener duy trì giá trị con trỏ trong DynamoDB, đảm bảo nó đọc các sự kiện theo thứ tự thời gian. Thêm sự kiện vào Sui Listener Queue Bất cứ khi nào Trình nghe sự kiện xác định các sự kiện mới, nó sẽ thêm chúng vào Sui Listener Queue để xử lý thêm. Kích hoạt cầu sự kiện AWS Event Bridge giám sát Hàng đợi Sui Listener và kích hoạt Webhook Invoker Lambda ngay khi các mục mới được thêm vào. Điều này đảm bảo xử lý sự kiện theo thời gian thực. Kêu gọi Webhook Webhook Invoker, sau khi được kích hoạt, gọi hàm Webhook Lambda cho mỗi sự kiện có trong hàng đợi. Chạy cục bộ - Sân chơi dành cho nhà phát triển Plugin ngoại tuyến không máy chủ được sử dụng để chạy giải pháp cục bộ. Trình nghe chạy trong tác vụ ECS trên đám mây. ECS không khả dụng cho ngoại tuyến không máy chủ. Vì lý do đó, bỏ nhận xét sui-events-listenerhàm lambda trong serverless.yml. Chức năng này sẽ đọc các sự kiện mới từ blockchain mỗi phút một lần. Cài đặt phụ thuộc: npm install Cài đặt DynamoDB: npm run dynamodb:install Nếu bạn gặp lỗi ở Error getting DynamoDb local latest tar.gz location undefined: 403bước này thì điều đó có nghĩa là vẫn còn một vấn đề đã biết trong serverless-dynamodb-local. Nó được thảo luận ở đây hoặc bạn có thể để lại câu hỏi của mình trên Sui Move Q&A. Trong node_modules/dynamodb-localhost/dynamodb/config.json URL to https://s3.us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz(thêm s vàohttp); Thay node_modules/dynamodb-localhost/dynamodb/installer.j đổi httpthànhhttps; Để bắt đầu dịch vụ chạy: npm run dev Triển khai Trình nghe sự kiện lên AWS Cài đặt AWS CLI; Định cấu hình AWS CLI; aws configure Sửa đổi giá trị trong stages\test.ymlvàstages\prod.yml; Bắt đầu triển khai; npm run deploy:test hoặc là npm run deploy:prod Tiếp tục... Trong phần đầu tiên của loạt bài về tích hợp Sui, chúng tôi đã khám phá các khái niệm cơ bản về trình nghe sự kiện và webhook, làm sáng tỏ kiến trúc phức tạp đằng sau sự tích hợp của chúng tôi với blockchain Sui. Hãy theo dõi các phần sắp tới, nơi chúng tôi sẽ đi sâu hơn vào hành trình của mình, chia sẻ những hiểu biết sâu sắc, thách thức và các giải pháp sáng tạo đã định hình trải nghiệm của chúng tôi. Hãy để lại câu hỏi của bạn ở đây.

    1

Bài viết

98
  • hohm.
    Feb 17, 2025
    Hỏi đáp Chuyên Gia

    How to fix 'UnusedValueWithoutDrop' error in PTB function?

    I'm trying to create a contract interaction function similar to a given transaction hash but face an error during execution. The error message is UnusedValueWithoutDrop { result_idx: 0, secondary_idx: 0 }. It appears in the dry run result of the PTB function. I suspect it might be due to an object not being properly handled by the end of the transaction. I attempted to use MoveCall, but I'm not sure if my approach is correct. Can someone advise me on correctly handling this issue?

    • Move CLI
    • Move
    1
    1
  • mssoni.
    Feb 17, 2025
    Hỏi đáp Chuyên Gia

    How to resolve CommandArgumentError with tx failed issue?

    I've been trying to execute a transaction using the CommandArgumentError { arg_idx: 1, kind: InvalidBCSBytes } error. Here's the snippet I used: const tx = new Transaction(); const [newCoin] = tx.splitCoins( tx.object(coinObjectId), [1000] ); tx.transferObjects([newCoin], tx.pure.string(wallet.address || "")); tx.setGasBudget(750000); const result = await wallet.signAndExecuteTransaction({ transaction: tx, }); I've tried using tx.pure.u64 but it didn't help. Any solutions?

    • Move CLI
    1
    1
  • doodee.
    Feb 17, 2025
    Hỏi đáp Chuyên Gia

    How to properly pass BCS serialized struct parameters in Sui?

    I've been trying to pass BCS serialized struct parameters to a move module in the Sui blockchain, but I'm hitting an InvalidUsageOfPureArg error. Can Sui handle BCS serialized struct parameters directly, or do I need to create a struct object first and pass it to the move module? How should I structure my code to achieve this?

    • Move CLI
    1
    2
  • mssoni.
    Feb 17, 2025
    Hỏi đáp Chuyên Gia

    How to call a function from another Move contract?

    I've deployed a contract with an address 0x3df... and a public function 'coll'. Now, I'm trying to write another contract that calls this 'coll' function, but I'm getting an error saying 'use 0x3df...::coll; use is invalid. Unbound module'. I've seen suggestions about using a dependencies file but I'm not sure how to implement this properly. What steps should I take to resolve the error and successfully call the function?

    • Move CLI
    • Move
    1
    2
  • kryptoschain.
    Feb 14, 2025
    Hỏi đáp Chuyên Gia

    How to call `public fun`s from Sui framework using CLI?

    Hey folks, I'm trying to call public functions from the Sui framework using the Sui CLI. For instance, if someone transfers an object to me and I don't want it, how can I freeze it? I thought about using sui client call, but I'm having trouble with the module identifier. Is publishing a wrapper package the only way, or is there a CLI command I'm missing?

    • Move CLI
    • Move
    0
    2
  • Theoremus.
    Feb 14, 2025
    Thảo Luận

    Tôi có thể truy cập một đối tượng thông qua địa chỉ của nó trong Move không?

    Tôi đang làm việc với ngôn ngữ lập trình Move và tôi tò mò liệu có cách nào để truy cập trực tiếp một đối tượng bằng địa chỉ của nó không. Tôi biết trong một số ngôn ngữ bạn có thể thao tác với con trỏ hoặc tham chiếu, nhưng tôi không chắc làm thế nào hoặc liệu điều đó có thể thực hiện được trong Move. Có ý tưởng nào không?

    • Move CLI
    0
    1
  • andreweth..
    Feb 13, 2025
    Thảo Luận

    Làm thế nào để xuất bản một gói bằng mã JavaScript?

    Tôi đã tự hỏi liệu tôi có thể xuất bản một gói trực tiếp từ mã JavaScript của mình không. Tôi đã nghe nói về việc sử dụng tx.publish để làm điều đó. Ai đó có thể giải thích cách nó hoạt động hoặc cung cấp bất kỳ liên kết nào để hướng dẫn không?

    • Move Bug
    1
    2
  • farshad.
    Feb 13, 2025
    Hỏi đáp Chuyên Gia

    How to handle function signature changes in SUI Move Package

    I'm working on a SUI Move package and encountered an error when I tried to change a function signature. The error message is 'PackageUpgradeError { upgrade_error: IncompatibleUpgrade }'. How can I upgrade the package with the new function signature without causing errors?

    • Move CLI
    0
    1
  • Aliabee.
    Feb 13, 2025
    Thảo Luận

    Làm cách nào để kiểm tra xem ví có sở hữu NFT trong Kiosk hay không?

    Này mọi người, tôi đang cố gắng tìm ra cách xác minh xem một địa chỉ ví cụ thể có sở hữu NFT từ một bộ sưu tập NFT cụ thể được lưu trữ trong Kiosk hay không. Từ những gì tôi đã đọc, điều này không đơn giản khi NFT ở trong Kiosk. Có ai có mẹo hoặc phương pháp để thực hiện xác minh này không?

    • Move Prover
    0
    1
  • kryptoschain.
    Feb 13, 2025
    Hỏi đáp Chuyên Gia

    Can I assign a specific ID to a shared object in Move?

    I'm trying to create a shared object within the init function of a Move module and want to assign it a specific predetermined ID like 0x123. Is this possible, or do I need to follow another approach?

    • Move CLI
    1
    1
Chiến dịch phần thưởngTháng Hai
Các thành viên hàng đầuDanh tiếng
Peera.

Danh tính mới.

Kinh nghiệm như

Chưa từng có.

Các thẻ hàng đầu
  • Move CLI
  • Move
  • Move Bug
  • Move Module
  • Smart Contract
  • Move Script
  • Move Prover
  • Feature Request
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