Actions7
- Wallet Actions
- Checkout Actions
Overview
This node operation allows users to sign and submit blockchain transactions using an external wallet's private key. It supports multiple blockchain networks including Ethereum, Polygon, Base, Arbitrum, Optimism, and Solana (both mainnet and testnets). The node takes a transaction message or hash that requires approval, signs it with the provided private key, and submits the signature back to the Crossmint API in one seamless step.
This is particularly useful for workflows where automated or programmatic signing of blockchain transactions is needed without manual intervention. For example, it can be used to approve token transfers, smart contract interactions, or any other blockchain transaction requiring an external signature from a wallet managed outside the platform.
Practical examples:
- Automatically signing a pending token transfer on Ethereum Sepolia testnet.
- Approving a multi-signature transaction on Solana Devnet using a base58 private key.
- Submitting signatures for Layer 2 solutions like Arbitrum or Optimism after preparing the transaction off-chain.
Properties
| Name | Meaning |
|---|---|
| Chain | Blockchain network for transaction signing. Options include Ethereum Mainnet, Ethereum Sepolia, Polygon, Polygon Amoy, Base, Base Sepolia, Arbitrum, Arbitrum Sepolia, Optimism, Optimism Sepolia, Solana Mainnet, Solana Devnet. |
| Wallet Address | Wallet address associated with the transaction (from Create Transfer response). |
| Transaction ID | Unique identifier of the transaction that needs approval (from Create Transfer response). |
| Transaction Data | The message or hash of the transaction to be signed (from Create Transfer approvals.pending[0].message). |
| Signer Address | Address of the external signer who will sign the transaction (from Create Transfer response). |
| Signer Private Key | Private key used to sign the transaction. For EVM chains, this is a 32-byte hex string; for Solana, a base58 encoded key. This field is password-protected. |
Output
The node outputs a JSON object containing two main parts:
simplified-output: A concise summary of the signed transaction approval, including:
chainType: Blockchain type (e.g., evm or solana).walletType: Type of wallet used.id: Transaction ID.status: Current status of the transaction.createdAt: Timestamp when the transaction was created.approvals: List of current approvals on the transaction.signingDetails: Details about the signature generated, including the signature string, the signed transaction data, chain type, chain name, and original transaction data.submittedApproval: Information about the submitted approval including wallet address, transaction ID, signer address, and signature.
raw: The full raw response from the Crossmint API after submitting the approval.
No binary data output is produced by this node.
Dependencies
- Requires an API key credential for authenticating requests to the Crossmint API.
- Uses the
etherslibrary for signing messages on EVM-compatible blockchains. - Uses
@solana/web3.jsandbs58libraries for handling Solana keys and signatures. - Dynamically imports
tweetnaclfor cryptographic signing on Solana. - The node expects the private key to be provided securely as input.
Troubleshooting
Invalid private key format:
- For EVM chains, the private key must be a 32-byte hex string starting with "0x" or exactly 64 hex characters.
- For Solana, the private key must be a base58 encoded string decoding to 64 bytes.
Ensure the private key matches these formats to avoid errors.
Missing required parameters:
Wallet Address, Transaction ID, Signer Address, Transaction Data, and Signer Private Key are all mandatory. Missing any of these will cause the node to throw an error.Failed to sign message:
Errors during signing usually indicate invalid key or message formats. Verify the transaction data and private key correctness.API request failures:
Network issues, invalid API keys, or incorrect endpoint URLs may cause HTTP request errors. Check API key validity and network connectivity.Unsupported chain:
If the selected chain is not recognized or supported, the node will throw an error. Confirm the chain selection matches one of the supported options.
Links and References
- Crossmint API Documentation (for detailed API usage)
- ethers.js Documentation (for EVM signing)
- Solana Web3.js Documentation (for Solana key management)
- TweetNaCl.js GitHub (for Solana cryptographic signing)