Transactions
Transaction types
Salt supports the following functions for building transactions:
- Send assets
- EIP-712: sign / verify
- Sign a message to send later
Transaction flow for sending assets
Building a transaction
- A signer in the Organisation proposes a transaction and submits it for review. That signer is also known as a proposer.
- Salt checks to confirm if the transaction passes all policy checks and shows the results to the proposer. This will highlight if any policies would likely fail.
- If the transaction fails the policy check, the transaction is stopped.
Broadcasting a transaction
Once a transaction has been successfully built and a threshold signature has been created, the following occurs:
The transaction is broadcast by the proposer of the transaction to the transaction’s destination blockchain.
The transaction is processed by the blockchain, and funds move out of the Salt Account.
Gas for the transaction is paid from the Salt account in the native asset of the blockchain on which it is mined.
Fee payment for the transaction is taken from the Salt account or external wallet chosen by the transaction proposer.
Security tips: Verifying before transferring
- Double check the recipient’s address
- Confirm the recipient’s address using a second source (e-mail, phone call, private message) before sending.
- Look up the recipient’s address on the relevant block explorer (e.g., Etherscan for Ethereum) to confirm their transaction history and check if it looks legitimate.
- Verify you’re in the right place Be cautious of phishing sites, apps, and social media messages (e.g., on Discord) that may try to mimic a reputable source.
- Confirm the network Ensure you are using the correct network (e.g., Ethereum Mainnet, Base, etc.) for the assets you’re sending.
- Review the transaction amount Confirm that the amount you’re sending matches your intention. Be cautious of extra zeros or incorrect decimal places.
- Check for double-spending If you’re trying to send the transaction for a second time, make sure there are no pending or unconfirmed transactions of the same amount to the same address.
- Review your security settings
- Always ensure your private keys, Robo Guardian access and recovery phrases are stored securely. Never share them.
- Use strong encryption and passphrases to protect your wallets and infrastructure.
Diagram: Asset transfer transaction flow

EIP-712 Sign typed data
EIP-712, or Ethereum typed structured data hashing and signing, is a standard for signing structured data on Ethereum in a way that's both cryptographically secure and human-readable. This saves a user having to sign a raw hash without being able to verify before approving.
The mechanics, in brief:
- Domain separator: Hash of context (app name, version, chain ID, verifying contract address) that scopes a signature to a specific app/contract/network.
- Custom struct types: Allows the creator to define the data shape (e.g. Order, Permit, Mail) rather than being limited to a generic string.
- Deterministic hash: Uses the formula
keccak256 ("\x19\x01" || domainSeparator || hashStruct(message))for computing the final hash. This is verifiable both by wallet and by smart contract.
Read more about EIP-712 via Ethereum EIPS↗
Sign message
Sign a message that can be sent later, rather than immediately submitting.
Salt provides a hash made up of the message and signature.
This allows signatures to be signed off-chain and combined with other information to cut down on round-trips to save gas and/or reduce latency.