How can I run Move Scripts?
Move scripts are supported in the Aptos TypeScript SDK, Aptos Wallet Adapter, and in the Aptos CLI.
Running scripts with the TypeScript SDK​
To use a script with the TypeScript SDK, add the bytecode
directly to the
transaction in place of an entry function name.
import { readFileSync } from "fs";
import { Aptos, Account, AccountAddress } from "@aptos-labs/ts-sdk";
// Setup client, and account to sign
const aptos = new Aptos();
const account = Account.generate();
// Load script bytecode
const buffer = readFileSync("./transfer_half.mv", "buffer");
const bytecode = new Uint8Array.from(buffer);
// Build a transaction with the bytecode of the script
const transaction = await aptos.transaction.build.simple({
sender: account.accountAddress,
data: {
bytecode,
typeArguments: ["0x1::aptos_coin::AptosCoin"],
functionArguments: ["0x1"],
},
});
// Submit and wait for the transaction to complete
const pendingTxn = await aptos.signAndSubmitTransaction({
signer: account,
transaction,
});
await aptos.waitForTransaction({ transactionHash: pendingTxn.hash });
Running scripts with the Aptos Wallet Adapter​
Not all wallets support scripts, but when the wallet supports scripts, it can be provided as below
Similar to the TypeScript SDK, the same inputs are accepted as a transaction
type on the wallet adapter. Just simply load the bytecode as a hex string
or
a uint8array
.
import { useWallet } from "@aptos-labs/wallet-adapter-react";
//...
// Load the bytecode either as a uint8array or a hex encoded string
const BYTECODE_IN_HEX = "0xa11ceb0b...78979";
export default function App() {
const { signAndSubmitTransaction } = useWallet();
function submitScript() {
signAndSubmitTransaction({
data: {
bytecode: BYTECODE_IN_HEX,
typeArguments: ["0x1::aptos_coin::AptosCoin"],
functionArguments: ["0x1"],
},
});
}
// ...
}
Running scripts with the CLI​
Running scripts with the CLI can be run with the command
aptos move run-script
There are two ways to run it, with a pre-compiled script, or it will compile the script in-place similar to the compile step.
If you already have a compiled script, you can run it
with --compiled-script-path
like the example below:
aptos move run-script --compiled-script-path /opt/git/developer-docs/apps/docusaurus/static/move-examples/scripts/transfer_half/script.mv
Similarly, if it's not compiled, just use --script-path
aptos move run-script --script-path ./sources/transfer_half.move