A tool for configuring, managing, and testing Scroll SDK deployments.
-
scrollsdk setup domains
-
scrollsdk setup db-init --clean
-
scrollsdk setup gen-keystore
-
scrollsdk doge config
-
scrollsdk doge dummy-signers
-
scrollsdk doge bridge-init
Note: If you encounter an "Insufficient base funds" error like this:
2025-05-31T00:32:08.308083Z INFO generate_test_keys: Checking funding for distribution helper address: nmCrhAu4STRor8Tmv4rNHt6JXeqUXFxeo1 ...... Error: Insufficient base funds for setup tx after selecting all UTXOs. Needed: 6049001000 sats, Have: 3950999000 sats
or
? Enter the seed string 123456
Pulling Docker Image: docker.io/dogeos69/generate-test-keys:v0.1.1-test
Image pulled successfully
Creating Docker Container...
Starting Container
M--- Running Test Setup & Key Generation (with OP_RETURN bridge funding) ---
PLoading configuration from: "./crates/test_utils/config/setup_defaults.toml"...
'Starting setup for network: Testnet...
)Using RPC URL: https://testnet.doge.xyz/
:Using Blockbook URL: https://dogebook-testnet.nownodes.io
�2025-05-31T03:19:48.077868Z INFO generate_test_keys: Using OP_RETURN payload (hex): 00151a64570e4997739458455ba4ab5a535fd2e306 for script (hex): 6a1500151a64570e4997739458455ba4ab5a535fd2e306
TDistribution Helper Address (derived from seed): nqBXoHUiH92gxgrsmFYjqcBNWZ7VMPFNJY
{2025-05-31T03:19:48.077948Z INFO generate_test_keys: Initializing Dogecoin RPC client...
�2025-05-31T03:19:48.144522Z INFO generate_test_keys: Checking funding for distribution helper address: nqBXoHUiH92gxgrsmFYjqcBNWZ7VMPFNJY
�2025-05-31T03:19:49.671868Z ERROR generate_test_keys: Distribution Helper address nqBXoHUiH92gxgrsmFYjqcBNWZ7VMPFNJY has no funds on testnet!
EPlease send some testnet DOGE to: nqBXoHUiH92gxgrsmFYjqcBNWZ7VMPFNJY
Then re-run this script.
Send Dogecoin to the displayed helper address and retry the command. Please keep the same seed string, or the helper address will change.
-
scrollsdk setup configs
-
scrollsdk setup prep-charts
-
scrollsdk setup cubesigner-refresh -
scrollsdk setup push-secrets -
scrollsdk setup tls
-
scrollsdk helper fund-accounts -i -f 2 -d -
scrollsdk helper fund-accounts -l 1 -f 2 -d -
scrollsdk helper fund-accounts -l 2 -d
$ npm install -g @scroll-tech/scroll-sdk-cli
$ scrollsdk COMMAND
running command...
$ scrollsdk (--version)
@scroll-tech/scroll-sdk-cli/0.1.2 darwin-arm64 node-v20.10.0
$ scrollsdk --help [COMMAND]
USAGE
$ scrollsdk COMMAND
...- Scroll SDK CLI
- Installation
- Usage
- Commands
scrollsdk help [COMMAND]scrollsdk helper activityscrollsdk helper clear-accountsscrollsdk helper derive-enode NODEKEYscrollsdk helper fund-accountsscrollsdk helper set-scalarsscrollsdk pluginsscrollsdk plugins add PLUGINscrollsdk plugins:inspect PLUGIN...scrollsdk plugins install PLUGINscrollsdk plugins link PATHscrollsdk plugins remove [PLUGIN]scrollsdk plugins resetscrollsdk plugins uninstall [PLUGIN]scrollsdk plugins unlink [PLUGIN]scrollsdk plugins updatescrollsdk setup configsscrollsdk setup cubesignerscrollsdk setup db-initscrollsdk setup domains [FILE]scrollsdk setup gas-tokenscrollsdk setup gen-keystorescrollsdk setup prep-chartsscrollsdk setup push-secretsscrollsdk setup tlsscrollsdk setup verify-contractsscrollsdk test contractsscrollsdk test dependenciesscrollsdk test dogeosscrollsdk test e2escrollsdk test ingressscrollsdk doge configscrollsdk doge wallet newscrollsdk doge wallet syncscrollsdk doge wallet send
Display help for scrollsdk.
USAGE
$ scrollsdk help [COMMAND...] [-n]
ARGUMENTS
COMMAND... Command to show help for.
FLAGS
-n, --nested-commands Include all nested commands in the output.
DESCRIPTION
Display help for scrollsdk.
See code: @oclif/plugin-help
Generate transactions on the specified network(s) to produce more blocks
USAGE
$ scrollsdk helper activity [-c <value>] [-d] [-i <value>] [-o] [-t] [-p] [-k <value>] [-x <value>] [-r <value>] [-s]
FLAGS
-c, --config=<value> [default: ./config.toml] Path to config.toml file
-d, --debug Enable debug mode for more detailed logging
-i, --interval=<value> [default: 3] Interval between transactions in seconds
-k, --privateKey=<value> Private key (overrides config)
-o, --layer1 Generate activity on Layer 1
-p, --pod Run inside Kubernetes pod
-r, --rpc=<value> RPC URL (overrides config for both layers)
-s, --spam with 110KB input while sending transaction (helps rollup-relayer produce batches)
-t, --[no-]layer2 Generate activity on Layer 2
-x, --recipient=<value> Recipient address (overrides config)
DESCRIPTION
Generate transactions on the specified network(s) to produce more blocks
See code: src/commands/helper/activity.ts
Clear pending transactions and optionally transfer remaining funds on Layer 2
USAGE
$ scrollsdk helper clear-accounts [-k <value>] [-m <value>] [-a <value>] [-x <value>] [-r <value>] [-c <value>] [-p]
[-d]
FLAGS
-a, --accounts=<value> [default: 10] Number of accounts to generate from mnemonic
-c, --config=<value> [default: ./config.toml] Path to config.toml file
-d, --debug Run in debug mode
-k, --privateKey=<value> Private key to clear pending transactions
-m, --mnemonic=<value> Mnemonic to generate wallets
-p, --pod Run in pod mode
-r, --rpc=<value> Layer 2 RPC URL
-x, --recipient=<value> Recipient address for remaining funds
DESCRIPTION
Clear pending transactions and optionally transfer remaining funds on Layer 2
See code: src/commands/helper/clear-accounts.ts
Derive enode and L2_GETH_STATIC_PEERS from a nodekey
USAGE
$ scrollsdk helper derive-enode NODEKEY
ARGUMENTS
NODEKEY Nodekey of the geth ethereum node
DESCRIPTION
Derive enode and L2_GETH_STATIC_PEERS from a nodekey
EXAMPLES
$ scrollsdk helper derive-enode 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
See code: src/commands/helper/derive-enode.ts
Fund L1 and L2 accounts for contracts
USAGE
$ scrollsdk helper fund-accounts [-a <value>] [-f <value>] [-c <value>] [-n <value>] [-d] [-i] [-o <value>] [-t <value>]
[-l 1|2] [-m] [-p] [-k <value>]
FLAGS
-a, --account=<value> Additional account to fund
-c, --config=<value> [default: ./config.toml] Path to config.toml file
-d, --dev Use Anvil devnet funding logic
-f, --amount=<value> [default: 0.1] Amount to fund in ETH
-i, --fund-deployer Fund the deployer address only
-k, --private-key=<value> Private key for funder wallet
-l, --layer=<option> Specify layer to fund (1 for L1, 2 for L2)
<options: 1|2>
-m, --manual Manually fund the accounts
-n, --contracts=<value> [default: ./config-contracts.toml] Path to configs-contracts.toml file
-o, --l1rpc=<value> L1 RPC URL
-p, --pod Run inside Kubernetes pod
-t, --l2rpc=<value> L2 RPC URL
DESCRIPTION
Fund L1 and L2 accounts for contracts
See code: src/commands/helper/fund-accounts.ts
Set commit and blob scalars for Scroll SDK
USAGE
$ scrollsdk helper set-scalars [-c <value>] [-n <value>] [-p] [-k <value>] [--blobScalar <value>] [--commitScalar
<value>] [-r <value>]
FLAGS
-c, --config=<value> [default: ./config.toml] Path to config.toml file
-k, --k=<value> Private key of the Owner
-n, --contracts=<value> [default: ./config-contracts.toml] Path to configs-contracts.toml file
-p, --pod Run inside Kubernetes pod
-r, --rpc=<value> RPC URL (overrides config)
--blobScalar=<value> Value for setBlobScalar
--commitScalar=<value> Value for setCommitScalar
DESCRIPTION
Set commit and blob scalars for Scroll SDK
See code: src/commands/helper/set-scalars.ts
List installed plugins.
USAGE
$ scrollsdk plugins [--json] [--core]
FLAGS
--core Show core plugins.
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
List installed plugins.
EXAMPLES
$ scrollsdk plugins
See code: @oclif/plugin-plugins
Installs a plugin into scrollsdk.
USAGE
$ scrollsdk plugins add PLUGIN... [--json] [-f] [-h] [-s | -v]
ARGUMENTS
PLUGIN... Plugin to install.
FLAGS
-f, --force Force npm to fetch remote resources even if a local copy exists on disk.
-h, --help Show CLI help.
-s, --silent Silences npm output.
-v, --verbose Show verbose npm output.
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Installs a plugin into scrollsdk.
Uses npm to install plugins.
Installation of a user-installed plugin will override a core plugin.
Use the SCROLLSDK_NPM_LOG_LEVEL environment variable to set the npm loglevel.
Use the SCROLLSDK_NPM_REGISTRY environment variable to set the npm registry.
ALIASES
$ scrollsdk plugins add
EXAMPLES
Install a plugin from npm registry.
$ scrollsdk plugins add myplugin
Install a plugin from a github url.
$ scrollsdk plugins add https://github.com/someuser/someplugin
Install a plugin from a github slug.
$ scrollsdk plugins add someuser/someplugin
Displays installation properties of a plugin.
USAGE
$ scrollsdk plugins inspect PLUGIN...
ARGUMENTS
PLUGIN... [default: .] Plugin to inspect.
FLAGS
-h, --help Show CLI help.
-v, --verbose
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Displays installation properties of a plugin.
EXAMPLES
$ scrollsdk plugins inspect myplugin
See code: @oclif/plugin-plugins
Installs a plugin into scrollsdk.
USAGE
$ scrollsdk plugins install PLUGIN... [--json] [-f] [-h] [-s | -v]
ARGUMENTS
PLUGIN... Plugin to install.
FLAGS
-f, --force Force npm to fetch remote resources even if a local copy exists on disk.
-h, --help Show CLI help.
-s, --silent Silences npm output.
-v, --verbose Show verbose npm output.
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Installs a plugin into scrollsdk.
Uses npm to install plugins.
Installation of a user-installed plugin will override a core plugin.
Use the SCROLLSDK_NPM_LOG_LEVEL environment variable to set the npm loglevel.
Use the SCROLLSDK_NPM_REGISTRY environment variable to set the npm registry.
ALIASES
$ scrollsdk plugins add
EXAMPLES
Install a plugin from npm registry.
$ scrollsdk plugins install myplugin
Install a plugin from a github url.
$ scrollsdk plugins install https://github.com/someuser/someplugin
Install a plugin from a github slug.
$ scrollsdk plugins install someuser/someplugin
See code: @oclif/plugin-plugins
Links a plugin into the CLI for development.
USAGE
$ scrollsdk plugins link PATH [-h] [--install] [-v]
ARGUMENTS
PATH [default: .] path to plugin
FLAGS
-h, --help Show CLI help.
-v, --verbose
--[no-]install Install dependencies after linking the plugin.
DESCRIPTION
Links a plugin into the CLI for development.
Installation of a linked plugin will override a user-installed or core plugin.
e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello'
command will override the user-installed or core plugin implementation. This is useful for development work.
EXAMPLES
$ scrollsdk plugins link myplugin
See code: @oclif/plugin-plugins
Removes a plugin from the CLI.
USAGE
$ scrollsdk plugins remove [PLUGIN...] [-h] [-v]
ARGUMENTS
PLUGIN... plugin to uninstall
FLAGS
-h, --help Show CLI help.
-v, --verbose
DESCRIPTION
Removes a plugin from the CLI.
ALIASES
$ scrollsdk plugins unlink
$ scrollsdk plugins remove
EXAMPLES
$ scrollsdk plugins remove myplugin
Remove all user-installed and linked plugins.
USAGE
$ scrollsdk plugins reset [--hard] [--reinstall]
FLAGS
--hard Delete node_modules and package manager related files in addition to uninstalling plugins.
--reinstall Reinstall all plugins after uninstalling.
See code: @oclif/plugin-plugins
Removes a plugin from the CLI.
USAGE
$ scrollsdk plugins uninstall [PLUGIN...] [-h] [-v]
ARGUMENTS
PLUGIN... plugin to uninstall
FLAGS
-h, --help Show CLI help.
-v, --verbose
DESCRIPTION
Removes a plugin from the CLI.
ALIASES
$ scrollsdk plugins unlink
$ scrollsdk plugins remove
EXAMPLES
$ scrollsdk plugins uninstall myplugin
See code: @oclif/plugin-plugins
Removes a plugin from the CLI.
USAGE
$ scrollsdk plugins unlink [PLUGIN...] [-h] [-v]
ARGUMENTS
PLUGIN... plugin to uninstall
FLAGS
-h, --help Show CLI help.
-v, --verbose
DESCRIPTION
Removes a plugin from the CLI.
ALIASES
$ scrollsdk plugins unlink
$ scrollsdk plugins remove
EXAMPLES
$ scrollsdk plugins unlink myplugin
Update installed plugins.
USAGE
$ scrollsdk plugins update [-h] [-v]
FLAGS
-h, --help Show CLI help.
-v, --verbose
DESCRIPTION
Update installed plugins.
See code: @oclif/plugin-plugins
Generate configuration files and create environment files for services
USAGE
$ scrollsdk setup configs [--image-tag <value>] [--configs-dir <value>]
FLAGS
--configs-dir=<value> [default: values] Directory to store configuration files
--image-tag=<value> Specify the Docker image tag to use
DESCRIPTION
Generate configuration files and create environment files for services
EXAMPLES
$ scrollsdk setup configs
$ scrollsdk setup configs --image-tag gen-configs-v0.2.0-debug
$ scrollsdk setup configs --configs-dir custom-configs
See code: src/commands/setup/configs.ts
Refresh cubesigner session secrets
USAGE
$ scrollsdk setup cubesigner
DESCRIPTION
Refresh cubesigner session secrets
EXAMPLES
$ scrollsdk setup cubesigner
See code: src/commands/setup/cubesigner.ts
Initialize databases with new users and passwords interactively or update permissions
USAGE
$ scrollsdk setup db-init [-u] [-d] [-c] [--update-port <value>]
FLAGS
-c, --clean Delete existing database and user before creating new ones
-d, --debug Show debug output including SQL queries
-u, --update-permissions Update permissions for existing users
--update-port=<value> Update the port of current database values
DESCRIPTION
Initialize databases with new users and passwords interactively or update permissions
EXAMPLES
$ scrollsdk setup db-init
$ scrollsdk setup db-init --update-permissions
$ scrollsdk setup db-init --update-permissions --debug
$ scrollsdk setup db-init --clean
$ scrollsdk setup db-init --update-db-port=25061
See code: src/commands/setup/db-init.ts
Set up domain configurations for external services
USAGE
$ scrollsdk setup domains [FILE] [-f] [-n <value>]
ARGUMENTS
FILE file to read
FLAGS
-f, --force
-n, --name=<value> name to print
DESCRIPTION
Set up domain configurations for external services
EXAMPLES
$ scrollsdk setup domains
See code: src/commands/setup/domains.ts
Set up gas token configurations
USAGE
$ scrollsdk setup gas-token
DESCRIPTION
Set up gas token configurations
EXAMPLES
$ scrollsdk setup gas-token
See code: src/commands/setup/gas-token.ts
Generate keystore and account keys for L2 Geth
USAGE
$ scrollsdk setup gen-keystore [--accounts]
FLAGS
--[no-]accounts Generate account key pairs
DESCRIPTION
Generate keystore and account keys for L2 Geth
EXAMPLES
$ scrollsdk setup gen-keystore
$ scrollsdk setup gen-keystore --no-accounts
See code: src/commands/setup/gen-keystore.ts
Validate Makefile and prepare Helm charts for Scroll SDK
USAGE
$ scrollsdk setup prep-charts [--github-username <value>] [--github-token <value>] [--values-dir <value>]
[--skip-auth-check]
FLAGS
--github-token=<value> GitHub Personal Access Token
--github-username=<value> GitHub username
--skip-auth-check Skip authentication check for individual charts
--values-dir=<value> [default: ./values] Directory containing values files
DESCRIPTION
Validate Makefile and prepare Helm charts for Scroll SDK
EXAMPLES
$ scrollsdk setup prep-charts
$ scrollsdk setup prep-charts --github-username=your-username --github-token=your-token
$ scrollsdk setup prep-charts --values-dir=./custom-values
$ scrollsdk setup prep-charts --skip-auth-check
See code: src/commands/setup/prep-charts.ts
Push secrets to the selected secret service
USAGE
$ scrollsdk setup push-secrets [-d] [--values-dir <value>]
FLAGS
-d, --debug Show debug output
--values-dir=<value> [default: values] Directory containing the values files
DESCRIPTION
Push secrets to the selected secret service
EXAMPLES
$ scrollsdk setup push-secrets
$ scrollsdk setup push-secrets --debug
$ scrollsdk setup push-secrets --values-dir custom-values
See code: src/commands/setup/push-secrets.ts
Update TLS configuration in Helm charts
USAGE
$ scrollsdk setup tls [-d] [--values-dir <value>]
FLAGS
-d, --debug Show debug output and confirm before making changes
--values-dir=<value> [default: values] Directory containing the values files
DESCRIPTION
Update TLS configuration in Helm charts
EXAMPLES
$ scrollsdk setup tls
$ scrollsdk setup tls --debug
$ scrollsdk setup tls --values-dir custom-values
See code: src/commands/setup/tls.ts
Set up contracts verification
USAGE
$ scrollsdk setup verify-contracts [--image-tag <value>]
FLAGS
--image-tag=<value> Specify the Docker image tag to use
DESCRIPTION
Set up contracts verification
EXAMPLES
$ scrollsdk setup verify-contracts
$ scrollsdk setup verify-contracts --image-tag verify-v0.2.0-debug
See code: src/commands/setup/verify-contracts.ts
Test contracts by checking deployment and initialization
USAGE
$ scrollsdk test contracts [-c <value>] [-n <value>] [-p]
FLAGS
-c, --config=<value> [default: ./config.toml] Path to config.toml file
-n, --contracts=<value> [default: ./config-contracts.toml] Path to configs-contracts.toml file
-p, --pod Run inside Kubernetes pod
DESCRIPTION
Test contracts by checking deployment and initialization
See code: src/commands/test/contracts.ts
Check for required dependencies
USAGE
$ scrollsdk test dependencies [-d]
FLAGS
-d, --dev Include development dependencies
DESCRIPTION
Check for required dependencies
See code: src/commands/test/dependencies.ts
Run DogeOS integration tests.
USAGE
$ scrollsdk test dogeos [CASENAME] [-m <value>] [-b <value>] [-c <value>] [-v <value>]
[--l2PrivateKey <value>] [--verbose]
ARGUMENTS
CASENAME The name of the case to run
FLAGS
-b, --blockbookurl=<value> [default: https://doge-electrs-testnet-demo.qed.me] blockbook url
-c, --outputcount=<value> [default: 24] Number of P2PKH outputs when running the multiple-output scenario
-m, --masterwif=<value> [default: cftTTdqFUYi3Njx4VLZGATAFCuX8wetJddD71FGmC91wKJ2XidVY] master wif key,
provide test dogecoin
-v, --outputvalue=<value> [default: 1000000] Value per P2PKH output (in dogetoshis) when running the
multiple-output scenario
--l2PrivateKey=<value> [default: 0x713137ab6bfaf197200b4f1e033bb3abadaf76564f6b2ca4f00aaa90c3c8efe5]
--verbose Enable detailed verbose logging
DESCRIPTION
Run DogeOS integration tests.
Available Test Cases:
- 1: Multiple OP_RETURN - Send a transaction with multiple OP_RETURN outputs
- 2: Multiple Output - Send a transaction with many P2PKH outputs
- 3: Bridge UTXO Attack - Simulate a UTXO fan-out attack on the bridge
- 4: Multiple Withdrawal Per Tx - Test multiple withdrawals in a single L2 transaction
- 5: Large PSBT - Construct and broadcast a large transaction with many inputs
- 6: Fee Wallet 2000 Inputs - Send M+1 to the fee wallet using 2000 inputs via an agent
- 7: Replace Mempool TXs (Master) - Bump-fee replace masterAddress mempool transactions with self-spends
- 8: CPFP Master Mempool - Use CPFP to bump-fee unconfirmed masterAddress transactions
- 0: Run All Cases - Execute all test cases sequentially
EXAMPLES
$ scrollsdk test dogeos
$ scrollsdk test dogeos multiple-opreturn
$ scrollsdk test dogeos multiple-output --bridge=n...
See code: src/commands/test/dogeos.ts
Test contracts by checking deployment and initialization
USAGE
$ scrollsdk test e2e [-c <value>] [-n <value>] [-m] [-p] [-k <value>] [-r] [-s]
FLAGS
-c, --config=<value> [default: ./config.toml] Path to config.toml file
-k, --private-key=<value> Private key for funder wallet initialization
-m, --manual Manually fund the test wallet.
-n, --contracts=<value> [default: ./config-contracts.toml] Path to configs-contracts.toml file
-p, --pod Run inside Kubernetes pod
-r, --resume Uses e2e_resume.json to continue last run.
-s, --skip-wallet-generation Manually fund the test wallet.
DESCRIPTION
Test contracts by checking deployment and initialization
See code: src/commands/test/e2e.ts
Check for required ingress hosts and validate frontend URLs
USAGE
$ scrollsdk test ingress [-c <value>] [-d] [-n <value>]
FLAGS
-c, --config=<value> Path to config.toml file
-d, --dev Include development ingresses
-n, --namespace=<value> [default: default] Kubernetes namespace
DESCRIPTION
Check for required ingress hosts and validate frontend URLs
See code: src/commands/test/ingress.ts
Configure Dogecoin settings
USAGE
$ scrollsdk doge config [-c <value>]
FLAGS
-c, --config=<value> [default: .data/doge-config.toml] Path to config file
DESCRIPTION
Configure Dogecoin settings
EXAMPLES
$ scrollsdk doge:config
$ scrollsdk doge:config --config .data/doge-config.toml
Create a new Dogecoin wallet
USAGE
$ scrollsdk doge wallet new [-c <value>] [-p <value>]
FLAGS
-c, --config=<value> [default: .data/doge-config.toml] Path to config file
-p, --path=<value> Custom path for the wallet file (overrides config)
DESCRIPTION
Create a new Dogecoin wallet
EXAMPLES
$ scrollsdk doge:wallet new
$ scrollsdk doge:wallet new --path .data/my-wallet.json
Sync wallet UTXOs from the network
USAGE
$ scrollsdk doge wallet sync [-c <value>] [-p <value>]
FLAGS
-c, --config=<value> [default: .data/doge-config.toml] Path to config file
-p, --path=<value> Custom path for the wallet file (overrides config)
DESCRIPTION
Sync wallet UTXOs from the network
EXAMPLES
$ scrollsdk doge:wallet sync
$ scrollsdk doge:wallet sync --path .data/my-wallet.json
Send Dogecoin with optional OP_RETURN data
USAGE
$ scrollsdk doge wallet send -a <value> [-c <value>] [-p <value>] [-t <value>] [--chain-id <value> --evm-address <value> | --hex-data <value> | --text-data <value>]
FLAGS
-a, --amount=<value> Amount to send in DOGE (required)
-c, --config=<value> [default: .data/doge-config.toml] Path to config file
-p, --path=<value> Custom path for the wallet file (overrides config)
-t, --to=<value> Recipient address (overrides config)
--chain-id=<value> Chain ID (6 bytes)
--evm-address=<value> EVM address (20 bytes)
--hex-data=<value> Custom hex data to include in OP_RETURN output
--text-data=<value> Text data to include in OP_RETURN output (will be converted to UTF-8 hex)
DESCRIPTION
Send Dogecoin with optional OP_RETURN data
The command supports three ways to add OP_RETURN data:
1. Raw hex data using --hex-data
2. Text data using --text-data (automatically converted to UTF-8 hex)
3. Structured data using --chain-id and --evm-address (for cross-chain transactions)
Note: OP_RETURN data is limited to 80 bytes.
EXAMPLES
$ scrollsdk doge:wallet send --amount 1.0
$ scrollsdk doge:wallet send --amount 1.0 --to D6...xyz
$ scrollsdk doge:wallet send --amount 1.0 --hex-data 6a0468656c6c6f
$ scrollsdk doge:wallet send --amount 1.0 --text-data "Hello, World!"
$ scrollsdk doge:wallet send --amount 1.0 --chain-id 0x1234 --evm-address 0xabc...