ts-sdk

Trust Model

Understanding the security assumptions and trust relationships in BSV TypeScript SDK applications.

Core Trust Principles

The SDK is designed around minimizing trust requirements:

Trustless Verification

Minimized Dependencies

Trust Relationships

User Trust

Users must trust:

Network Trust

Applications rely on:

Service Trust

Optional trust relationships:

Security Assumptions

Cryptographic Security

Network Security

Risk Mitigation

Key Management

// Minimize private key exposure
const wallet = new WalletClient() // Keys stay in wallet

// Avoid direct key handling
// const privateKey = PrivateKey.fromString() // Higher risk

Transaction Verification

// Always verify important transactions
const isValid = await transaction.verify(chainTracker, {
  merkleProof: proof,
  blockHeader: header
})

Multiple Sources

// Use multiple chain trackers
const config = {
  chainTracker: {
    primary: 'WhatsOnChain',
    fallbacks: ['GorillaPool', 'TAAL']
  }
}

Threat Model

Attacks to Consider

Application Design

Security-First Design

// Validate all inputs
function processTransaction(txHex: string) {
  if (!isValidHex(txHex)) {
    throw new Error('Invalid transaction hex')
  }
  
  const tx = Transaction.fromHex(txHex)
  // Process verified transaction
}

Error Handling

// Handle trust failures gracefully
try {
  const result = await chainTracker.getTransaction(txid)
} catch (error) {
  // Fallback to alternative source
  const backup = await fallbackTracker.getTransaction(txid)
}

Next Steps