diff --git a/apps/nextra/next.config.mjs b/apps/nextra/next.config.mjs index 4ce67eb55..fe5abd2b8 100644 --- a/apps/nextra/next.config.mjs +++ b/apps/nextra/next.config.mjs @@ -460,6 +460,13 @@ export default withBundleAnalyzer( "/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-importer", permanent: true, }, + { + source: + "/indexer/indexer-sdk/documentation/advanced-tutorials/txn-script", + destination: + "/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-script", + permanent: true, + }, { source: "/indexer/txn-stream/labs-hosted", destination: "/en/build/indexer/api/labs-hosted", diff --git a/apps/nextra/pages/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/_meta.tsx b/apps/nextra/pages/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/_meta.tsx index 255965172..02b9a2bca 100644 --- a/apps/nextra/pages/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/_meta.tsx +++ b/apps/nextra/pages/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/_meta.tsx @@ -2,4 +2,7 @@ export default { "txn-importer": { title: "Importing Transactions", }, + "txn-script": { + title: "Generating Transactions with Move Scripts", + }, }; diff --git a/apps/nextra/pages/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-script.mdx b/apps/nextra/pages/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-script.mdx new file mode 100644 index 000000000..dec4c096a --- /dev/null +++ b/apps/nextra/pages/en/build/indexer/indexer-sdk/documentation/advanced-tutorials/txn-script.mdx @@ -0,0 +1,102 @@ +--- +title: "Aptos Transaction generated using Move Script" +--- + +import { Callout, Steps } from "nextra/components" + +## Overview: + +This section outlines how to create test transactions with Move scripts. + +## Prerequisites + +1. Clone the [aptos-core](https://github.com/aptos-labs/aptos-core) repository: + - Navigate to the `aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator` directory. + +## How to Generate Test Transactions using Move Script + +### Set up `move_fixtures` folder +Before proceeding, ensure you have the move_fixtures folder set up in the appropriate location: +1. Location: + The move_fixtures folder should be created in the `aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions` directory. This is the folder where Move scripts and their configurations for test transactions will be stored. + + **Note:** Do not create the `move_fixtures` folder in your processor repository. All Move-related files should reside in the `aptos-core` repository under the specified directory. +2. Steps to set up the follder: + - if starting fresh, remove all existing files and projects in the `move_fixtures` folder in the aptos-core repo + - Create your own Move projects/scripts in the move_fixtures folder (detailed in the next step) + + ### Create Your Move Project + + Create your Move project and write a module to output the scenario that you would like to test in your processor. You can refer to an example [here](https://github.com/aptos-labs/aptos-core/tree/main/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/move_fixtures). + + ### Set Up Test Accounts + + 1. These accounts will be used to deploy your module. + 2. Set up as many accounts as you need. These accounts will be used to send the scripted transactions. Refer to the guide [here](https://aptos.dev/en/build/cli/setup-cli) to create accounts. + 3. Update `aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/testing_accounts.yaml` with your accounts. + + **Note:** Do not use real accounts here. Only use test accounts created in the CLI specifically for testing. + + ### Create a Configuration File +Each configuration file defines a sequences of transactions for a test scenario. + 1. Create a configuration file in the `move_fixtures` [directory](https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/indexer-grpc/indexer-transaction-generator/imported_transactions/move_fixtures). Name the configuration file according to the test scenario it corresponds to. + 2. This configuration file should contain unique transaction names and details for each transaction. The transactions should be listed in the order they are to be executed. Example configuration: + output_name: the name of the transaction json output + script_path: the path to the Move script + sender_address: the address of the account that will send the transaction + + ```yaml + transactions: + - output_name: simple_user_script1 + script_path: simple_user_script + sender_address: + - output_name: simple_user_script2 + script_path: simple_user_script2 + sender_address: + ``` + + ### Generate JSON Files and Rust File + + Once the Move files and configuration are set up, run the same command used to import transactions: + - testing-folder is where your Move files are stored. + - output-folder can be set to any folder where you want to store the generated files. + + ```bash + cd ~/aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator + cargo run -- --testing-folder ./imported_transactions --output-folder ../indexer-test-transactions/src/ + ``` + + This command will: + + 1. Read the configuration in the `move_fixtures` folder. + 2. Execute the specified Move scripts. + 3. Output the generated JSON files to the designated folder (`~/aptos-core/ecosystem/indexer-grpc/indexer-transaction-generator/json_transactions`). + 4. Update `generated_transactions.rs` with the new transaction names specified in step 3. + + + +## How to Use Test Transactions + +- **Export the Generated File**: + + Update the [`mod.rs`](https://github.com/aptos-labs/aptos-indexer-processor-example/blob/main/test-transactions-example/src/json_transactions/mod.rs) file to include the generated Rust file containing the transaction constants. + +- **Export the `json_transactions` Folder**: + + Ensure the `json_transactions` folder is properly exported in the library file. + + [Example](https://github.com/aptos-labs/aptos-indexer-processor-example/blob/main/test-transactions-example/src/lib.rs). + +- **Add as a Dependency**: + + Include the crate containing the generated transactions as a dependency in the `Cargo.toml` file of your test crate. (Internally, transactions are stored in `aptos-core` and used in the [processor repo](https://github.com/aptos-labs/aptos-indexer-processors/blob/0c92d323b0f560b5f8601a831a36520ad9b72d68/rust/Cargo.toml#L34)). + +- **Integrate into Test Cases**: + + Use the exported transaction constants directly in your test cases to simulate real transactions and validate processing logic. + + [Example usage](https://github.com/aptos-labs/aptos-indexer-processor-example/tree/main/test-transactions-example). + + +## Next Steps +Once the transaction constants are integrated, you can use them in processor tests to validate functionality. For detailed instructions on writing processor tests, refer to [Writing Processor Tests](). \ No newline at end of file