Skip to main content

multisig-wallet

Functions

<dl> <dt><a href="#deployMultisigWallet">deployMultisigWallet()</a></dt> <dd><p>Deploy a new multi-sig wallet contract</p> </dd> <dt><a href="#getMultisigWallet">getMultisigWallet()</a></dt> <dd><p>Get multi-sig wallet info</p> </dd> <dt><a href="#listMultisigWallets">listMultisigWallets()</a></dt> <dd><p>List all multi-sig wallets</p> </dd> <dt><a href="#updateMultisigSettings">updateMultisigSettings()</a></dt> <dd><p>Update multi-sig wallet settings</p> </dd> <dt><a href="#submitTransaction">submitTransaction()</a></dt> <dd><p>Submit a new transaction to the multi-sig wallet</p> </dd> <dt><a href="#submitTransactionBatch">submitTransactionBatch()</a></dt> <dd><p>Submit multiple transactions as a batch</p> </dd> <dt><a href="#confirmTransaction">confirmTransaction()</a></dt> <dd><p>Confirm a transaction (sign) SECURITY: Verifies signature before accepting confirmation</p> </dd> <dt><a href="#recoverSigner">recoverSigner(tx, signature)</a> ⇒ <code>string</code> | <code>null</code></dt> <dd><p>Recover signer address from signature using EIP-191 signed message format</p> </dd> <dt><a href="#executeTransaction">executeTransaction(txId, executorAddress, tenantId, context)</a> ⇒ <code>Promise.<object></code></dt> <dd><p>Execute a confirmed multi-sig transaction.</p> <p>IMPORTANT: On-chain execution requires MULTISIG_DEMO_MODE=false (default). Without proper on-chain multi-sig contract integration, this will throw. Set MULTISIG_DEMO_MODE=true to use demo-only mode (no blockchain transactions).</p> <p>Security: This function explicitly fails instead of silently falling back to demo mode behavior when on-chain execution fails. This prevents incorrect transaction status updates that could lead to fund loss.</p> </dd> <dt><a href="#executeMultisigOnChain">executeMultisigOnChain(params)</a> ⇒ <code>Promise.<string></code></dt> <dd><p>Execute a multi-sig transaction on the blockchain.</p> <p>TODO: Implement actual on-chain multi-sig contract interaction.</p> <p>Current behavior: Throws an error to prevent silent failures. This is a security measure - previously the code would silently fall back to demo mode on failure, incorrectly marking transactions as executed.</p> <p>Implementation needed:</p> <ul> <li>Deploy multi-sig smart contract</li> <li>Implement executeTransaction on the contract</li> <li>Handle chain-specific transaction signing and submission</li> <li>Add proper error handling for blockchain failures</li> </ul> </dd> <dt><a href="#getTransaction">getTransaction()</a></dt> <dd><p>Get transaction details</p> </dd> <dt><a href="#getTransactions">getTransactions()</a></dt> <dd><p>Get all transactions for a multi-sig wallet</p> </dd> <dt><a href="#cancelTransaction">cancelTransaction()</a></dt> <dd><p>Cancel a pending transaction</p> </dd> <dt><a href="#signWithHardwareWallet">signWithHardwareWallet()</a></dt> <dd><p>Sign transaction with hardware wallet (Ledger/Trezor) This is a stub - actual implementation requires hardware wallet SDKs</p> </dd> <dt><a href="#generateMultisigAddress">generateMultisigAddress()</a></dt> <dd><p>Generate a deterministic multi-sig wallet address In production, this would be the deployed contract address</p> </dd> <dt><a href="#getDefaultRoles">getDefaultRoles()</a></dt> <dd><p>Get default roles for owners</p> </dd> <dt><a href="#validateMultisigTransaction">validateMultisigTransaction()</a></dt> <dd><p>Validate multi-sig transaction data</p> </dd> <dt><a href="#getExecutableTransactions">getExecutableTransactions()</a></dt> <dd><p>Get pending transactions that can be executed</p> </dd> </dl>

<a name="deployMultisigWallet"></a>

deployMultisigWallet()

Deploy a new multi-sig wallet contract

Kind: global function
<a name="getMultisigWallet"></a>

getMultisigWallet()

Get multi-sig wallet info

Kind: global function
<a name="listMultisigWallets"></a>

listMultisigWallets()

List all multi-sig wallets

Kind: global function
<a name="updateMultisigSettings"></a>

updateMultisigSettings()

Update multi-sig wallet settings

Kind: global function
<a name="submitTransaction"></a>

submitTransaction()

Submit a new transaction to the multi-sig wallet

Kind: global function
<a name="submitTransactionBatch"></a>

submitTransactionBatch()

Submit multiple transactions as a batch

Kind: global function
<a name="confirmTransaction"></a>

confirmTransaction()

Confirm a transaction (sign) SECURITY: Verifies signature before accepting confirmation

Kind: global function
<a name="recoverSigner"></a>

recoverSigner(tx, signature) ⇒ <code>string</code> | <code>null</code>

Recover signer address from signature using EIP-191 signed message format

Kind: global function
Returns: <code>string</code> | <code>null</code> - - Recovered signer address or null if verification fails

ParamTypeDescription
tx<code>Object</code>Transaction object containing details
signature<code>string</code>The signature to verify

<a name="executeTransaction"></a>

executeTransaction(txId, executorAddress, tenantId, context) ⇒ <code>Promise.<object></code>

Execute a confirmed multi-sig transaction.

IMPORTANT: On-chain execution requires MULTISIG_DEMO_MODE=false (default). Without proper on-chain multi-sig contract integration, this will throw. Set MULTISIG_DEMO_MODE=true to use demo-only mode (no blockchain transactions).

Security: This function explicitly fails instead of silently falling back to demo mode behavior when on-chain execution fails. This prevents incorrect transaction status updates that could lead to fund loss.

Kind: global function
Returns: <code>Promise.<object></code> - Executed transaction details
Throws:

  • <code>Error</code> If transaction not found, not confirmed, or execution fails
ParamTypeDescription
txId<code>string</code>The transaction ID to execute
executorAddress<code>string</code>Address executing the transaction
tenantId<code>string</code>Tenant identifier
context<code>object</code>Additional context

<a name="executeMultisigOnChain"></a>

executeMultisigOnChain(params) ⇒ <code>Promise.<string></code>

Execute a multi-sig transaction on the blockchain.

TODO: Implement actual on-chain multi-sig contract interaction.

Current behavior: Throws an error to prevent silent failures. This is a security measure - previously the code would silently fall back to demo mode on failure, incorrectly marking transactions as executed.

Implementation needed:

  • Deploy multi-sig smart contract
  • Implement executeTransaction on the contract
  • Handle chain-specific transaction signing and submission
  • Add proper error handling for blockchain failures

Kind: global function
Returns: <code>Promise.<string></code> - Transaction hash
Throws:

  • <code>Error</code> Always throws - on-chain execution not yet implemented
ParamTypeDescription
params<code>object</code>Execution parameters
params.wallet<code>object</code>Multi-sig wallet object
params.tx<code>object</code>Transaction object

<a name="getTransaction"></a>

getTransaction()

Get transaction details

Kind: global function
<a name="getTransactions"></a>

getTransactions()

Get all transactions for a multi-sig wallet

Kind: global function
<a name="cancelTransaction"></a>

cancelTransaction()

Cancel a pending transaction

Kind: global function
<a name="signWithHardwareWallet"></a>

signWithHardwareWallet()

Sign transaction with hardware wallet (Ledger/Trezor) This is a stub - actual implementation requires hardware wallet SDKs

Kind: global function
<a name="generateMultisigAddress"></a>

generateMultisigAddress()

Generate a deterministic multi-sig wallet address In production, this would be the deployed contract address

Kind: global function
<a name="getDefaultRoles"></a>

getDefaultRoles()

Get default roles for owners

Kind: global function
<a name="validateMultisigTransaction"></a>

validateMultisigTransaction()

Validate multi-sig transaction data

Kind: global function
<a name="getExecutableTransactions"></a>

getExecutableTransactions()

Get pending transactions that can be executed

Kind: global function