Trang chủ
Chào mừng đến với Diễn đàn Cộng đồng Move
Bài Viết Mới
- Giao dịch được Sui tài trợ - Ví dụ về tích hợp cơ bảnBài ViếtOct 31, 2023
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 - Trình nghe sự kiện Sui Move và Webhook - Ví dụ về tích hợp cơ bảnBài ViếtOct 31, 2023
Đố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
148- Hỏi đáp Chuyên GiaApr 11, 2025
Làm thế nào để tạo mã byte có thể đọc được cho Move với Miden Assembly?
Tôi đang cố gắng thử nghiệm viết trình biên dịch Move bằng cách sử dụng Miden Assembly làm mục tiêu trình biên dịch. Tôi muốn tạo mã byte có thể đọc được cho chương trình Move đã biên dịch. Có cách nào đơn giản để đạt được điều này không?
- Move CLI
01 - Hỏi đáp Chuyên GiaelfDani139Apr 11, 2025
Các mô-đun có thể tạo ra nhiều đồng xu trên chuỗi một cách liền mạch không?
Tôi đang làm việc trên một mô-đun cho các thị trường dự đoán và cần nó để tạo ra các đồng tiền trên chuỗi thông qua một lớp nhà máy theo cách không cho phép và có thể xác minh được. Hiện tại, các mô-đun có những hạn chế như chỉ có một đồng xu cho mỗi mô-đun do One Time Witness, điều đó có nghĩa là tôi phải tạo một tiêu chuẩn tiền xu tương đương mà ví của người dùng không nhận ra là coin. Chúng ta có thể giải quyết vấn đề này trong bản cập nhật tiếp theo không?
- Move CLI
- Move Module
01 - Hỏi đáp Chuyên Giaskywinder271Apr 10, 2025
Chức năng gốc là gì và chúng ta có thể gọi chúng trực tiếp không?
Tôi đã bắt gặp thuật ngữ 'chức năng gốc 'trong Move nhưng không thể tìm thấy thông tin chi tiết về nó. Tôi nghe nói rằng chúng được khai báo trong Move nhưng được xác định bên ngoài, thường là trong Rust. Điều đó có nghĩa là chúng là các chức năng nội bộ không thể được gọi trực tiếp bằng ví hoặc các mô-đun khác?
- Move CLI
- Move
01 - Hỏi đáp Chuyên GiaApr 10, 2025
Làm thế nào để chuyển một đối tượng thuộc sở hữu của một đối tượng khác?
Tôi đang phải đối mặt với một vấn đề với việc chuyển một đối tượng A, thuộc sở hữu của đối tượng B và đối tượng B thuộc sở hữu của tôi. Tôi gặp lỗi cho biết giao dịch không được ký bởi người gửi chính xác. Có ai biết cách giải quyết vấn đề này và nhận đúng đối tượng A không?
- Move CLI
- Move
01 - Hỏi đáp Chuyên GiaPluto Dev👽141Apr 10, 2025
Chuyển đổi khóa công khai sang địa chỉ Sui trong Sui Move
Tôi đang cố gắng chuyển đổi khóa công khai thành địa chỉ Sui bằng Sui Move nhưng không thể tìm thấy bất kỳ chức năng tích hợp nào. Tôi hiểu nó rất quan trọng đối với công việc của tôi. Ai đó có thể giải thích chính xác làm thế nào để thực hiện chuyển đổi này?
- Move CLI
01 - Thảo Luận1 Luca31Apr 10, 2025
Sui có ủng hộ hợp đồng tự hủy không?
Tôi đang tự hỏi liệu có cách nào để phá hủy hay tự hủy một hợp đồng thông minh trong khuôn khổ Sui không. Tôi nghe một cái gì đó về một cơ chế 'tự hủy hoạt' và muốn biết liệu nó có tồn tại ở Sui không. Điều gì sẽ xảy ra nếu một hợp đồng bị chấm dứt theo cách này?
- Move
- Smart Contract
01 - Hỏi đáp Chuyên Giayhant3251Apr 07, 2025
Làm thế nào để đảm bảo chỉ chủ sở hữu NFT mới có thể chuyển giao nó trong hợp đồng?
Này mọi người! Tôi đang thực hiện hợp đồng NFT và muốn đảm bảo rằng chỉ chủ sở hữu hợp pháp của NFT mới có thể chuyển giao nó. Tôi có chức năng này để chuyển: public fun transfer( nft: DevNetNFT, recipient: address, _: &mut TxContext ) { transfer::public_transfer(nft, recipient) } Việc kiểm tra này có được thực hiện trong public_transferphương thức không, hay tôi cần thêm logic bổ sung?
- Move CLI
03 - Hỏi đáp Chuyên GiaBritain92Apr 07, 2025
Làm thế nào để lấy giá trị từ ObjectTable bằng cách sử dụng Trường động?
dynamicFieldObjectTôi đang cố gắng tìm nạp các giá trị từ ObjectTable bằng cách sử dụng Trường động từ giao diện người dùng, nhưng tôi gặp lỗi. Lỗi nóiUnexpected arg String("gms") for the expected type Struct(MoveStructLayout...). Làm thế nào tôi có thể nhận được loại chính xác cho giá trị và tránh lỗi này?
- Move CLI
- Move
03 - Hỏi đáp Chuyên GiaRaju158Apr 06, 2025
Làm thế nào để kiểm tra một hàm với tham số Nhận trong Sui?
Tôi đang cố gắng kiểm tra receive_objectchức năng với một Receivingtham số trong Sui dựa trên các tài liệu tại [liên kết] này (https://docs.sui.io/concepts/transfers/transfer-to-object#receive-shared-example). Ban đầu, tôi đã tạo một bài kiểm tra bằng cách sử dụng ví dụ, nhưng tôi đang vật lộn với cách làm cho đối số đã gửi thành một Receivingkiểu. Tôi cũng đã thử biểu thị loại nhận, nhưng gặp lỗi. Ai đó có thể hướng dẫn tôi kiểm tra đúng chức năng này không?
- Move CLI
- Move
04 - Hỏi đáp Chuyên GiaApr 06, 2025
Làm thế nào tôi có thể sao chép một vector <u64>để sử dụng nhiều lần?
Tôi đang cố gắng sao chép một vectơ vào một biến cục bộ vì tôi cần hai trường hợp của cùng một vectơ cho dự án của mình. Tôi đã thấy một số phương pháp, nhưng tôi không hoàn toàn chắc chắn làm thế nào để thực hiện chúng một cách chính xác. Có ai có thể hướng dẫn tôi về các phương pháp hay phương pháp tốt nhất để đạt được điều này trong ngôn ngữ lập trình Move không?
- Move CLI
- Move
04
Move is an executable bytecode language used to implement custom transactions and smart contracts.
Kiếm phần của bạn từ 1000 Sui
Tích lũy điểm danh tiếng và nhận phần thưởng khi giúp cộng đồng Sui phát triển.
- Move CLI
- Move
- Move Module
- Move Bug
- Smart Contract
- Move Script
- Move Prover
- Feature Request