Move.

Главная

Добро пожаловать на форум сообщества Move

Новые статьи

  • article banner.
    Peera Admin.
    Oct 31, 2023
    Статья
    Sui Sponsored Transactions - Basic Integrations Examples

    Traditionally, users engaging with decentralized aplications (dApps) face a common hurdle: gas fees. These Sui gas fees in our case, required to execute transactions on the blockchain, often deter new users from fully embracing the potential of Web3. However, Sui innovative sponsored transaction feature eliminates this obstacle, empowering builders to cover the gas fees for their app transactions. This revolutionary functionality paves the way for a seamless user experience, encouraging broader adoption of decentralized applications. TheMoveDev GitHub; SuiQL GitHub Repository; If you have any questions, you can ask them here. Sponsored Transaction Workflow Sui's sponsored transaction workflow is a well-orchestrated process that ensures smooth and gas fee-free transactions for end-users. Here's a breakdown of the steps involved. User Initiates an Action The process kicks off when a user initializes a GasLessTransactionData transaction, indicating their intent to perform a specific action within a dApp. dApp Creates a Sui Transaction Block At the heart of the sponsored transaction workflow lies the dApp's ability to create a Transaction Block. This block encapsulates all the necessary data, including the user's intent, the action to be performed, and any associated parameters. Transmission of GasLessTransactionData The GasLessTransactionData is sent to the sponsor, a key participant in the sponsored transaction framework, with a signature request. This data serves as the foundation for the upcoming transaction. Validation and Transaction Data Construction The sponsor validates the received transaction and constructs TransactionData, incorporating the necessary gas fees. This step ensures that the transaction is properly funded for execution on the Sui blockchain. Transaction Signing The sponsor signs the TransactionData, indicating their approval and commitment to the transaction. The private key required for this signature is securely stored in AWS Secrets Manager, ensuring the utmost security. Verification and Dual Signing by the User The signed TransactionData, along with the sponsor's signature, is sent back to the user. The user verifies the transaction details and signs the TransactionData once more, creating a dual-signed transaction ready for execution. Transaction Execution on Sui The dual-signed transaction is submitted to the Sui network via a Sui node (full node) or the sponsor. Sui processes the transaction, executing the specified action within the dApp, all without requiring the user to pay any gas fees. User Notification Finally, the user is notified by a dApp that the transaction is sponsored and sent. Implementing Sui Sponsored Transactions: A Developer's Perspective To implement sponsored transactions, developers interact with the Sui API or Sponsored Transaction API, making use of the sui-sign-sponsored-transaction Lambda function. Here's a glimpse of the client-side code that facilitates this process: 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', }); This client-side code acts as a bridge between the user, the sponsor, and the Sui blockchain, enabling the seamless execution of gas fee-free transactions. Conclusion Sui's sponsored transaction feature represents a paradigm shift in the world of decentralized applications, removing a significant barrier to entry for users. Through our exploration of this innovative functionality, we've gained valuable insights that have shaped our approach to building user-friendly dApps. Feel free to leave your questions here.

    0
  • article banner.
    Peera Admin.
    Oct 31, 2023
    Статья
    Sui Move Events Listeners and Webhooks - Basic Integrations Examples

    For businesses and developers, integrating with chains like Sui offers a unique opportunity to innovate and create transformative solutions. In this series, we delve into our journey of building on Sui, shedding light on the intricacies of integrations, focusing on event listeners and webhooks, which have been integral components of TheMoveDev and SuiQL, Sui indexing GraphQL Event API made by Peeranha. TheMoveDev GitHub; SuiQL GitHub Repository; If you have any questions, you can ask them here. The code is implemented in TypeScript and runs within the AWS Cloud environment using serverless technologies. Serverless is used for deployments. Serverless Offline is used to run the code locally. Sui Events Listeners and Webhooks: A Brief Overview Blockchain networks are inherently decentralized, making real-time data integration a challenging feat. This is where event listeners and webhooks come into play. Event Listeners are mechanisms that constantly monitor blockchain activity, identifying and capturing specific events of interest. Webhooks, on the other hand, are HTTP callbacks triggered by these events, allowing seamless communication between different applications. The Sui Integration Architecture Our integration journey with Sui involved a comprehensive architecture comprising several key components. Events Listener The Events Listener, a robust ECS Fargate task, plays a pivotal role in our integration setup. It continuously polls new events from the Sui nodes (Sui full node), ensuring that our system stays up-to-date with the latest blockchain activities. Sui Events Listener Queue Events identified by the Events Listener are added to the Sui Listener Queue, a FIFO SQS queue. This queue acts as an intermediary storage, enabling efficient event processing and management. Webhook Invoker Responsible for invoking webhooks, the Webhook Invoker is a Lambda function that ensures seamless communication between our system and external applications. It acts as a bridge, facilitating the transmission of event data to the designated endpoints. Event Bridge The Event Bridge, a pivotal component of our architecture, invokes the Webhook Invoker Lambda whenever new items are added to the Sui Listener Queue. This real-time triggering mechanism ensures prompt webhook invocations. Webhook The Webhook, implemented as an AWS Lambda function, processes individual events received from the Sui blockchain. This component plays a crucial role in interpreting the event data and executing specific actions based on the event type. Workflow: How It All Comes Together Understanding the workflow is essential to grasp the seamless operation of our integration architecture. Events Listener Operation The Events Listener operates in a continuous loop, making RPC API calls to suix_queryEvents to retrieve new events associated with a configured package ID. The Events Listener maintains a cursor value in DynamoDB, ensuring it reads events chronologically. Adding Events to Sui Listener Queue Whenever the Events Listener identifies new events, it adds them to the Sui Listener Queue for further processing. Event Bridge Trigger The AWS Event Bridge monitors the Sui Listener Queue and triggers the Webhook Invoker Lambda as soon as new items are added. This ensures real-time event processing. Webhook Invocation The Webhook Invoker, once triggered, invokes the Webhook Lambda function for each event present in the queue. Running Locally - Dev Playground Serverless offline plugin is used to run the solution locally. Listener runs in ECS task in the cloud. ECS is not available for serverless offline. For that reason, uncomment the sui-events-listener lambda function in serverless.yml. This function will read new events from the blockchain once per minute. Install dependencies: npm install Install DynamoDb: npm run dynamodb:install If you are getting an error Error getting DynamoDb local latest tar.gz location undefined: 403 on this step then it means that there is still a known issue in serverless-dynamodb-local. It is discussed here or you can leave your question on Sui Move Q&A. In node_modules/dynamodb-localhost/dynamodb/config.json URL to https://s3.us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz (add s to http); In node_modules/dynamodb-localhost/dynamodb/installer.j change http to https; To start services run: npm run dev Event Listener Deployment to AWS Install AWS CLI; Configure AWS CLI; aws configure Modify values in stages\test.yml and stages\prod.yml; Start deployment; npm run deploy:test or npm run deploy:prod To be continued... In this first part of our series on Sui integrations, we've explored the foundational concepts of event listeners and webhooks, unraveling the intricate architecture behind our integration with the Sui blockchain. Stay tuned for the upcoming parts, where we'll delve deeper into our journey, sharing insights, challenges, and innovative solutions that have shaped our experience. Feel free to leave your questions here.

    1

Посты

148
  • Forever_A-gator.
    Apr 11, 2025
    Экспертные Вопросы и Ответы

    Как создать читаемый байт-код для Move with Miden Assembly?

    Я пытаюсь поэкспериментировать с написанием компилятора Move, используя Miden Assembly в качестве цели компилятора. Я хочу создать читаемый байт-код для скомпилированной программы Move. Есть ли простой способ добиться этого?

    • Move CLI
    0
    1
  • elfDani.
    Apr 11, 2025
    Экспертные Вопросы и Ответы

    Могут ли модули беспрепятственно генерировать несколько монет в блокчейне?

    Я работаю над модулем для рынков прогнозирования, и мне нужен этот модуль для генерации монет в блокчейне с помощью фабричного класса без разрешения и проверки. В настоящее время в модулях действуют ограничения: из-за версии One Time Witness на модуль приходится всего одна монета. Поэтому мне пришлось создать эквивалентный стандарт монет, который кошельки пользователей не распознают как монеты. Сможем ли мы решить эту проблему в следующем обновлении?

    • Move CLI
    • Move Module
    0
    1
  • skywinder.
    Apr 10, 2025
    Экспертные Вопросы и Ответы

    Что такое встроенная функция и можем ли мы вызвать ее напрямую?

    Я наткнулся на термин «нативная функция» в Move, но не могу найти подробных сведений о нём. Я слышал, что они объявлены в Move, но определены извне, часто в Rust. Означает ли это, что это внутренние функции, которые нельзя напрямую вызывать кошельками или другими модулями?

    • Move CLI
    • Move
    0
    1
  • kryptoschain.
    Apr 10, 2025
    Экспертные Вопросы и Ответы

    Как передать объект, принадлежащий другому объекту?

    У меня возникла проблема с передачей объекта A, который принадлежит объекту B, а объект B принадлежит мне. Я получаю сообщение об ошибке, указывающее, что транзакция не была подписана правильным отправителем. Кто-нибудь знает, как решить эту проблему и правильно получить объект A?

    • Move CLI
    • Move
    0
    1
  • Pluto Dev👽.
    Apr 10, 2025
    Экспертные Вопросы и Ответы

    Преобразование открытого ключа в адрес Sui в Sui Move

    Я пытаюсь преобразовать открытый ключ в адрес Sui с помощью Sui Move, но не могу найти встроенной функции. Я понимаю, что это очень важно для моей работы. Может ли кто-нибудь объяснить, как именно выполнить эту конверсию?

    • Move CLI
    0
    1
  • 1 Luca.
    Apr 10, 2025
    Обсуждение

    Поддерживает ли Суи контрактное самоуничтожение?

    Мне было интересно, есть ли способ уничтожить или самостоятельно уничтожить смарт-контракт в рамках Sui. Я что-то слышал о механизме «самоуничтожения» и хотел узнать, существует ли он в Sui. Кроме того, что произойдет, если контракт будет расторгнут таким образом?

    • Move
    • Smart Contract
    0
    1
  • yhant3.
    Apr 07, 2025
    Экспертные Вопросы и Ответы

    Как обеспечить, чтобы только владелец NFT мог передать его в контракте?

    Всем привет! Я работаю над реализацией контракта NFT и хочу убедиться, что только законный владелец NFT может передать его. У меня есть следующая функция для перевода: public fun transfer( nft: DevNetNFT, recipient: address, _: &mut TxContext ) { transfer::public_transfer(nft, recipient) } Выполняется ли эта проверка в public_transferметоде или мне нужно добавить дополнительную логику?

    • Move CLI
    0
    3
  • Britain.
    Apr 07, 2025
    Экспертные Вопросы и Ответы

    Как получить значения из ObjectTable с помощью динамических полей?

    dynamicFieldObjectЯ пытаюсь получить значения из ObjectTable с помощью динамических полей из внешнего интерфейса, но у меня возникает ошибка с. Unexpected arg String("gms") for the expected type Struct(MoveStructLayout...)В ошибке говорится. Как выбрать правильный тип значения и избежать этой ошибки?

    • Move CLI
    • Move
    0
    3
  • Raju.
    Raju158
    Apr 06, 2025
    Экспертные Вопросы и Ответы

    Как протестировать функцию с параметром Receiving в Sui?

    Я пытаюсь протестировать receive_objectфункцию с Receivingпараметром в языке Sui на основе документации по этой ссылке. Сначала я создал тест на этом примере, но не могу понять, как сделать так, чтобы отправленный аргумент был Receivingтипом. Я также попытался указать тип получения, но обнаружил ошибки. Может ли кто-нибудь помочь мне правильно протестировать эту функцию?

    • Move CLI
    • Move
    0
    4
  • Santorini.
    Apr 06, 2025
    Экспертные Вопросы и Ответы

    Как скопировать вектор <u64>для многократного использования?

    Я пытаюсь скопировать вектор в локальную переменную, потому что для моего проекта мне нужны два экземпляра одного и того же вектора. Я видел несколько методов, но не совсем уверен, как их правильно реализовать. Может ли кто-нибудь рассказать мне о лучших практиках или методах достижения этой цели на языке программирования Move?

    • Move CLI
    • Move
    0
    4

Move is an executable bytecode language used to implement custom transactions and smart contracts.

148Посты231Ответы
Кампания вознагражденийАпрель
Sui.X.Peera.

Заработай свою долю из 1000 Sui

Зарабатывай очки репутации и получай награды за помощь в развитии сообщества Sui.

Популярные теги
  • Move CLI
  • Move
  • Move Module
  • Move Bug
  • Smart Contract
  • Move Script
  • Move Prover
  • Feature Request
Мы используем файлы cookie, чтобы гарантировать вам лучший опыт на нашем сайте.
Подробнее