Refractor is a pending transactions storage and multisig aggregator for Stellar Network.
This service allows anyone to store transactions and gather signatures required to match the signing threshold.
Any eligible signer can sign the transaction. As soon as it reaches the required threshold (calculated automatically), the service either submits the transaction to Stellar network or executes a callback.
Once uploaded to the server, the transaction cannot be deleted or modified. Other services and wallets can access
and sign it by a standard URL like https://api.refractor.space/tx/4b50...3dad
where its hash serves as
a unique identifier.
Refractor automatically discovers potential signers and computes the thresholds. The signing process is
fully coordinated, signatures aggregation occurs on the server side which in turn allows us to deal with
potentially problematic cases like applying signatures from two different signers concurrently or preventing
handling TX_BAD_AUTH_EXTRA
errors in case of too many signatures applied to a transaction.
Refractor ensures that signatures are valid and consistent.
Sends a transaction (with or without signatures) to the server. If the transaction with the same hash doesn't exist on the server yet, the transaction and its signatures are stored on the server. Otherwise, Refractor finds new signatures and applies them to the existing transaction. Invalid or redundant signatures are discarded automatically.
Transaction description
network required | string Enum: "public" "testnet" Stellar network name ("public" or "testnet") |
xdr required | string Base64-encoded Stellar transaction XDR with or without signatures |
expires | integer Default: "Current date + 30 days" Transaction expiration date (UNIX timestamp), by default equals the transaction maxTime if not set |
callbackUrl | string Callback URL where the transaction will be POSTed once ready |
submit | boolean Default: false Whether the transaction should be automatically submitted to Horizon once ready |
{- "network": "testnet",
- "xdr": "AAAAAgAAAABTWgh1bRm6Aksd3hHdZ0h…"
}
{- "network": "testnet",
- "xdr": "AAAAAgAAAABTWgh1bRm6Aksd3hHdZ0h…",
- "minTime": 1527178665,
- "maxTime": 1727178665,
- "submit": false,
- "signatures": [
- {
- "key": "GA4K90L1NP…",
- "signature": "d30a85c…"
}
], - "status": "pending",
- "submitted": 1627178665
}
Returns transaction information and signing status for a given transaction hash.
txHash required | string (TxHash) /^[a-f0-9]{64}$/ Example: a1ef625e2bda7e71493b8a6bb4b03fa6512a67593d99acacfe5fb59b79e28154 Transaction hash |
{- "network": "testnet",
- "xdr": "AAAAAgAAAABTWgh1bRm6Aksd3hHdZ0h…",
- "minTime": 1527178665,
- "maxTime": 1727178665,
- "submit": false,
- "signatures": [
- {
- "key": "GA4K90L1NP…",
- "signature": "d30a85c…"
}
], - "status": "pending",
- "submitted": 1627178665
}