@bsv/sdk 1.9.2 → 1.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/kvstore/GlobalKVStore.js +116 -98
- package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/cjs/src/kvstore/types.js.map +1 -1
- package/dist/cjs/src/overlay-tools/index.js +1 -0
- package/dist/cjs/src/overlay-tools/index.js.map +1 -1
- package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js +55 -0
- package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/kvstore/GlobalKVStore.js +117 -99
- package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/esm/src/kvstore/types.js.map +1 -1
- package/dist/esm/src/overlay-tools/index.js +1 -0
- package/dist/esm/src/overlay-tools/index.js.map +1 -1
- package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js +48 -0
- package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
- package/dist/types/src/kvstore/types.d.ts +2 -0
- package/dist/types/src/kvstore/types.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/index.d.ts +1 -0
- package/dist/types/src/overlay-tools/index.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts +14 -0
- package/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts.map +1 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +2 -2
- package/dist/umd/bundle.js.map +1 -1
- package/docs/fast-docs.png +0 -0
- package/docs/index.md +49 -44
- package/docs/reference/kvstore.md +9 -0
- package/docs/reference/overlay-tools.md +32 -0
- package/docs/swagger.png +0 -0
- package/package.json +1 -1
- package/src/kvstore/GlobalKVStore.ts +134 -114
- package/src/kvstore/__tests/GlobalKVStore.test.ts +11 -1
- package/src/kvstore/types.ts +2 -0
- package/src/overlay-tools/index.ts +1 -0
- package/src/overlay-tools/withDoubleSpendRetry.ts +71 -0
- package/docs/MARKDOWN_VALIDATION_GUIDE.md +0 -175
- package/docs/concepts/beef.md +0 -92
- package/docs/concepts/chain-tracking.md +0 -134
- package/docs/concepts/decentralized-identity.md +0 -221
- package/docs/concepts/fees.md +0 -249
- package/docs/concepts/identity-certificates.md +0 -307
- package/docs/concepts/index.md +0 -77
- package/docs/concepts/key-management.md +0 -185
- package/docs/concepts/script-templates.md +0 -176
- package/docs/concepts/sdk-philosophy.md +0 -80
- package/docs/concepts/signatures.md +0 -194
- package/docs/concepts/spv-verification.md +0 -118
- package/docs/concepts/transaction-encoding.md +0 -167
- package/docs/concepts/transaction-structure.md +0 -67
- package/docs/concepts/trust-model.md +0 -139
- package/docs/concepts/verification.md +0 -250
- package/docs/concepts/wallet-integration.md +0 -101
- package/docs/guides/development-wallet-setup.md +0 -374
- package/docs/guides/direct-transaction-creation.md +0 -147
- package/docs/guides/http-client-configuration.md +0 -488
- package/docs/guides/index.md +0 -138
- package/docs/guides/large-transactions.md +0 -448
- package/docs/guides/multisig-transactions.md +0 -792
- package/docs/guides/security-best-practices.md +0 -494
- package/docs/guides/transaction-batching.md +0 -132
- package/docs/guides/transaction-signing-methods.md +0 -419
- package/docs/reference/arc-config.md +0 -698
- package/docs/reference/brc-100.md +0 -33
- package/docs/reference/configuration.md +0 -835
- package/docs/reference/debugging.md +0 -705
- package/docs/reference/errors.md +0 -597
- package/docs/reference/index.md +0 -111
- package/docs/reference/network-config.md +0 -914
- package/docs/reference/op-codes.md +0 -325
- package/docs/reference/transaction-signatures.md +0 -95
- package/docs/tutorials/advanced-transaction.md +0 -572
- package/docs/tutorials/aes-encryption.md +0 -949
- package/docs/tutorials/authfetch-tutorial.md +0 -986
- package/docs/tutorials/ecdh-key-exchange.md +0 -549
- package/docs/tutorials/elliptic-curve-fundamentals.md +0 -606
- package/docs/tutorials/error-handling.md +0 -1216
- package/docs/tutorials/first-transaction-low-level.md +0 -205
- package/docs/tutorials/first-transaction.md +0 -275
- package/docs/tutorials/hashes-and-hmacs.md +0 -788
- package/docs/tutorials/identity-management.md +0 -729
- package/docs/tutorials/index.md +0 -219
- package/docs/tutorials/key-management.md +0 -538
- package/docs/tutorials/protowallet-development.md +0 -743
- package/docs/tutorials/script-construction.md +0 -690
- package/docs/tutorials/spv-merkle-proofs.md +0 -685
- package/docs/tutorials/testnet-transactions-low-level.md +0 -359
- package/docs/tutorials/transaction-broadcasting.md +0 -538
- package/docs/tutorials/transaction-types.md +0 -420
- package/docs/tutorials/type-42.md +0 -568
- package/docs/tutorials/uhrp-storage.md +0 -599
package/docs/concepts/fees.md
DELETED
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
# Transaction Fees
|
|
2
|
-
|
|
3
|
-
Understanding Bitcoin transaction fees and how they work in the BSV TypeScript SDK.
|
|
4
|
-
|
|
5
|
-
## What are Transaction Fees?
|
|
6
|
-
|
|
7
|
-
Transaction fees are payments to miners for including transactions in blocks:
|
|
8
|
-
|
|
9
|
-
```typescript
|
|
10
|
-
import { Transaction } from '@bsv/sdk'
|
|
11
|
-
|
|
12
|
-
// Calculate transaction fee
|
|
13
|
-
const tx = new Transaction()
|
|
14
|
-
const feeRequired = tx.getFee()
|
|
15
|
-
|
|
16
|
-
// Set custom fee rate
|
|
17
|
-
const customFee = tx.getFee(feePerKB)
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Fee Calculation
|
|
21
|
-
|
|
22
|
-
Fees are calculated based on transaction size:
|
|
23
|
-
|
|
24
|
-
- **Fee Rate**: Satoshis per kilobyte (sat/kB)
|
|
25
|
-
- **Transaction Size**: Total bytes in serialized transaction
|
|
26
|
-
- **Total Fee**: Size × Fee Rate
|
|
27
|
-
|
|
28
|
-
## SDK Fee Handling
|
|
29
|
-
|
|
30
|
-
### Automatic Fee Calculation
|
|
31
|
-
|
|
32
|
-
The SDK calculates fees automatically:
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
// Wallet handles fees automatically
|
|
36
|
-
const wallet = new WalletClient()
|
|
37
|
-
const action = await wallet.createAction({
|
|
38
|
-
outputs: [{
|
|
39
|
-
satoshis: 1000,
|
|
40
|
-
lockingScript: script
|
|
41
|
-
}]
|
|
42
|
-
})
|
|
43
|
-
// Fee calculated and deducted automatically
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### Manual Fee Control
|
|
47
|
-
|
|
48
|
-
For advanced use cases:
|
|
49
|
-
|
|
50
|
-
```typescript
|
|
51
|
-
// Calculate fee manually
|
|
52
|
-
const tx = new Transaction()
|
|
53
|
-
tx.addInput(/* input */)
|
|
54
|
-
tx.addOutput(/* output */)
|
|
55
|
-
|
|
56
|
-
const estimatedSize = tx.getSerializedSize()
|
|
57
|
-
const feeRequired = estimatedSize * feePerByte
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Fee Rates
|
|
61
|
-
|
|
62
|
-
### Network Fee Rates
|
|
63
|
-
|
|
64
|
-
BSV typically uses low, predictable fees:
|
|
65
|
-
|
|
66
|
-
- **Standard Rate**: ~0.5 sat/byte
|
|
67
|
-
- **Priority Rate**: ~1.0 sat/byte
|
|
68
|
-
- **Economy Rate**: ~0.1 sat/byte
|
|
69
|
-
|
|
70
|
-
### Dynamic Fee Estimation
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
// Get current network fee rates
|
|
74
|
-
const feeRates = await chainTracker.getFeeRates()
|
|
75
|
-
const recommendedFee = feeRates.standard
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Fee Components
|
|
79
|
-
|
|
80
|
-
### Input Costs
|
|
81
|
-
|
|
82
|
-
Each input adds to transaction size:
|
|
83
|
-
|
|
84
|
-
- Previous transaction hash (32 bytes)
|
|
85
|
-
- Output index (4 bytes)
|
|
86
|
-
- Unlocking script (variable)
|
|
87
|
-
- Sequence number (4 bytes)
|
|
88
|
-
|
|
89
|
-
### Output Costs
|
|
90
|
-
|
|
91
|
-
Each output adds to transaction size:
|
|
92
|
-
|
|
93
|
-
- Value (8 bytes)
|
|
94
|
-
- Locking script length (1-9 bytes)
|
|
95
|
-
- Locking script (variable)
|
|
96
|
-
|
|
97
|
-
### Base Transaction
|
|
98
|
-
|
|
99
|
-
Fixed overhead for every transaction:
|
|
100
|
-
|
|
101
|
-
- Version (4 bytes)
|
|
102
|
-
- Input count (1-9 bytes)
|
|
103
|
-
- Output count (1-9 bytes)
|
|
104
|
-
- Lock time (4 bytes)
|
|
105
|
-
|
|
106
|
-
## Fee Optimization
|
|
107
|
-
|
|
108
|
-
### UTXO Selection
|
|
109
|
-
|
|
110
|
-
Choose UTXOs efficiently:
|
|
111
|
-
|
|
112
|
-
```typescript
|
|
113
|
-
// Prefer fewer, larger UTXOs to reduce fees
|
|
114
|
-
const utxos = await wallet.getUTXOs()
|
|
115
|
-
const selected = selectOptimalUTXOs(utxos, targetAmount)
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Output Consolidation
|
|
119
|
-
|
|
120
|
-
Combine multiple payments:
|
|
121
|
-
|
|
122
|
-
```typescript
|
|
123
|
-
// Batch multiple outputs in one transaction
|
|
124
|
-
const outputs = [
|
|
125
|
-
{ satoshis: 1000, lockingScript: script1 },
|
|
126
|
-
{ satoshis: 2000, lockingScript: script2 },
|
|
127
|
-
{ satoshis: 1500, lockingScript: script3 }
|
|
128
|
-
]
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### Script Efficiency
|
|
132
|
-
|
|
133
|
-
Use efficient script templates:
|
|
134
|
-
|
|
135
|
-
```typescript
|
|
136
|
-
// P2PKH is more efficient than complex scripts
|
|
137
|
-
const p2pkh = new P2PKH()
|
|
138
|
-
const efficientScript = p2pkh.lock(publicKeyHash)
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Fee Estimation
|
|
142
|
-
|
|
143
|
-
### Size Estimation
|
|
144
|
-
|
|
145
|
-
Estimate transaction size before creation:
|
|
146
|
-
|
|
147
|
-
```typescript
|
|
148
|
-
// Estimate size for fee calculation
|
|
149
|
-
const estimatedInputs = 2
|
|
150
|
-
const estimatedOutputs = 3
|
|
151
|
-
const estimatedSize = estimateTransactionSize(estimatedInputs, estimatedOutputs)
|
|
152
|
-
const estimatedFee = estimatedSize * feeRate
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### Template-Based Estimation
|
|
156
|
-
|
|
157
|
-
```typescript
|
|
158
|
-
// Use script templates for accurate estimation
|
|
159
|
-
const template = new P2PKH()
|
|
160
|
-
const scriptSize = template.estimateLength([publicKeyHash])
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## Error Handling
|
|
164
|
-
|
|
165
|
-
Common fee-related issues:
|
|
166
|
-
|
|
167
|
-
- Insufficient funds for fees
|
|
168
|
-
- Fee rate too low for network
|
|
169
|
-
- Transaction size miscalculation
|
|
170
|
-
|
|
171
|
-
```typescript
|
|
172
|
-
try {
|
|
173
|
-
const action = await wallet.createAction({
|
|
174
|
-
outputs: outputs
|
|
175
|
-
})
|
|
176
|
-
} catch (error) {
|
|
177
|
-
if (error.message.includes('Insufficient funds')) {
|
|
178
|
-
// Handle insufficient balance for fees
|
|
179
|
-
console.log('Not enough funds to cover transaction and fees')
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
## Best Practices
|
|
185
|
-
|
|
186
|
-
### Fee Management
|
|
187
|
-
|
|
188
|
-
- Always account for fees in balance calculations
|
|
189
|
-
- Use appropriate fee rates for urgency
|
|
190
|
-
- Monitor network conditions for fee adjustments
|
|
191
|
-
- Implement fee estimation before transaction creation
|
|
192
|
-
|
|
193
|
-
### Cost Optimization
|
|
194
|
-
|
|
195
|
-
- Batch transactions when possible
|
|
196
|
-
- Use efficient script templates
|
|
197
|
-
- Optimize UTXO selection
|
|
198
|
-
- Consider transaction timing
|
|
199
|
-
|
|
200
|
-
### User Experience
|
|
201
|
-
|
|
202
|
-
- Display estimated fees to users
|
|
203
|
-
- Provide fee rate options (economy, standard, priority)
|
|
204
|
-
- Handle insufficient fund errors gracefully
|
|
205
|
-
- Show fee breakdown for transparency
|
|
206
|
-
|
|
207
|
-
## Wallet Integration
|
|
208
|
-
|
|
209
|
-
Most applications rely on wallets for fee handling:
|
|
210
|
-
|
|
211
|
-
```typescript
|
|
212
|
-
// Wallet manages fees automatically
|
|
213
|
-
const wallet = new WalletClient()
|
|
214
|
-
|
|
215
|
-
// Fees are calculated and deducted automatically
|
|
216
|
-
const result = await wallet.createAction({
|
|
217
|
-
description: 'Payment with automatic fees',
|
|
218
|
-
outputs: [/* outputs */]
|
|
219
|
-
})
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
## Advanced Fee Strategies
|
|
223
|
-
|
|
224
|
-
### Replace-by-Fee (RBF)
|
|
225
|
-
|
|
226
|
-
Increase fees for faster confirmation:
|
|
227
|
-
|
|
228
|
-
```typescript
|
|
229
|
-
// Create transaction with RBF enabled
|
|
230
|
-
const tx = new Transaction()
|
|
231
|
-
tx.setRBF(true) // Enable replace-by-fee
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
### Child-Pays-for-Parent (CPFP)
|
|
235
|
-
|
|
236
|
-
Use dependent transactions to increase effective fee rate:
|
|
237
|
-
|
|
238
|
-
```typescript
|
|
239
|
-
// Create child transaction with higher fee
|
|
240
|
-
const childTx = new Transaction()
|
|
241
|
-
childTx.addInput(/* from parent transaction */)
|
|
242
|
-
// Higher fee rate pulls parent transaction along
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
## Next Steps
|
|
246
|
-
|
|
247
|
-
- Understand [Transaction Structure](./transaction-structure.md) for size calculation
|
|
248
|
-
- Learn about [Wallet Integration](./wallet-integration.md) for automatic fee handling
|
|
249
|
-
- Explore [Script Templates](./script-templates.md) for efficient fee optimization
|
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
# Identity Certificates
|
|
2
|
-
|
|
3
|
-
Understanding how cryptographic certificates work to establish trust and verify identity claims in decentralized systems.
|
|
4
|
-
|
|
5
|
-
## What are Identity Certificates?
|
|
6
|
-
|
|
7
|
-
Think of identity certificates as digital testimonials that can't be forged. Just like a diploma proves you graduated from a university, or a driver's license proves you're authorized to drive, identity certificates prove specific claims about who you are or what you're authorized to do.
|
|
8
|
-
|
|
9
|
-
The key difference is that these digital certificates use cryptographic signatures instead of physical security features, making them verifiable by anyone with the right tools, anywhere in the world.
|
|
10
|
-
|
|
11
|
-
## How Certificates Create Trust
|
|
12
|
-
|
|
13
|
-
### The Trust Problem
|
|
14
|
-
|
|
15
|
-
In the digital world, it's easy to claim anything about yourself. Anyone can create a website saying they're a doctor, lawyer, or certified professional. How do you know who to trust?
|
|
16
|
-
|
|
17
|
-
### The Certificate Solution
|
|
18
|
-
|
|
19
|
-
Certificates solve this by having trusted third parties vouch for specific claims. When a university issues you a digital diploma certificate, they're cryptographically signing a statement that says "We verify that this person graduated from our program."
|
|
20
|
-
|
|
21
|
-
Anyone can then verify:
|
|
22
|
-
|
|
23
|
-
1. **The certificate is authentic** (cryptographic signature is valid)
|
|
24
|
-
2. **It hasn't been tampered with** (any changes would break the signature)
|
|
25
|
-
3. **It's still valid** (hasn't expired or been revoked)
|
|
26
|
-
4. **The issuer is trustworthy** (you trust the university)
|
|
27
|
-
|
|
28
|
-
## Types of Certificates
|
|
29
|
-
|
|
30
|
-
### Self-Signed Certificates
|
|
31
|
-
|
|
32
|
-
These are claims you make about yourself, like "My name is John Doe" or "My email is <john@example.com>." While anyone can create these, they serve as a starting point for building your digital identity.
|
|
33
|
-
|
|
34
|
-
**When they're useful:**
|
|
35
|
-
|
|
36
|
-
- Basic profile information
|
|
37
|
-
- Contact preferences
|
|
38
|
-
- Personal statements
|
|
39
|
-
- Starting point for identity building
|
|
40
|
-
|
|
41
|
-
**Limitations:**
|
|
42
|
-
|
|
43
|
-
- Low trust value (anyone can claim anything)
|
|
44
|
-
- Not suitable for high-stakes verification
|
|
45
|
-
- Mainly useful for discovery and basic interaction
|
|
46
|
-
|
|
47
|
-
### Peer-Verified Certificates
|
|
48
|
-
|
|
49
|
-
These are endorsements from other users who can vouch for specific claims about you. Like professional references or character witnesses, they carry more weight when they come from trusted sources.
|
|
50
|
-
|
|
51
|
-
**Examples:**
|
|
52
|
-
|
|
53
|
-
- Colleague endorsing your professional skills
|
|
54
|
-
- Friend confirming your identity
|
|
55
|
-
- Community member vouching for your reputation
|
|
56
|
-
- Business partner confirming successful transactions
|
|
57
|
-
|
|
58
|
-
### Institutional Certificates
|
|
59
|
-
|
|
60
|
-
These come from recognized organizations with established authority and verification processes. They carry the most weight because the issuers have reputations to protect and rigorous verification procedures.
|
|
61
|
-
|
|
62
|
-
**Examples:**
|
|
63
|
-
|
|
64
|
-
- University degree certificates
|
|
65
|
-
- Professional licensing board certifications
|
|
66
|
-
- Government-issued identity documents
|
|
67
|
-
- Industry association memberships
|
|
68
|
-
- Employer verification of work history
|
|
69
|
-
|
|
70
|
-
## Certificate Lifecycle
|
|
71
|
-
|
|
72
|
-
### Creation and Issuance
|
|
73
|
-
|
|
74
|
-
When someone wants to issue you a certificate, they typically:
|
|
75
|
-
|
|
76
|
-
1. **Verify your claim** through their established process
|
|
77
|
-
2. **Create a digital certificate** containing the verified information
|
|
78
|
-
3. **Sign it cryptographically** using their private key
|
|
79
|
-
4. **Deliver it to you** for use in proving the claim
|
|
80
|
-
|
|
81
|
-
### Validation and Trust
|
|
82
|
-
|
|
83
|
-
When someone wants to verify your certificate, they:
|
|
84
|
-
|
|
85
|
-
1. **Check the cryptographic signature** to ensure authenticity
|
|
86
|
-
2. **Verify it hasn't expired** or been revoked
|
|
87
|
-
3. **Assess the issuer's credibility** and authority
|
|
88
|
-
4. **Determine if it meets their requirements** for the specific use case
|
|
89
|
-
|
|
90
|
-
### Renewal and Maintenance
|
|
91
|
-
|
|
92
|
-
Certificates have limited lifespans for security reasons:
|
|
93
|
-
|
|
94
|
-
- **Expiration dates** ensure information stays current
|
|
95
|
-
- **Renewal processes** allow for re-verification
|
|
96
|
-
- **Revocation mechanisms** handle compromised or invalid certificates
|
|
97
|
-
- **Update procedures** accommodate changing information
|
|
98
|
-
|
|
99
|
-
## Trust Scoring and Reputation
|
|
100
|
-
|
|
101
|
-
### Building Credibility
|
|
102
|
-
|
|
103
|
-
Your overall trustworthiness comes from the combination of all your certificates:
|
|
104
|
-
|
|
105
|
-
- **Quantity**: More verifications generally increase trust
|
|
106
|
-
- **Quality**: Certificates from respected issuers carry more weight
|
|
107
|
-
- **Diversity**: Different types of verification provide broader confidence
|
|
108
|
-
- **Recency**: Fresh certificates are more valuable than old ones
|
|
109
|
-
|
|
110
|
-
### Confidence Levels
|
|
111
|
-
|
|
112
|
-
Different certificates provide different levels of assurance:
|
|
113
|
-
|
|
114
|
-
- **Self-asserted claims** provide basic information but low confidence
|
|
115
|
-
- **Peer verifications** offer moderate confidence from social proof
|
|
116
|
-
- **Service verifications** provide higher confidence from specialized validators
|
|
117
|
-
- **Institutional certificates** offer the highest confidence from established authorities
|
|
118
|
-
|
|
119
|
-
### Context Matters
|
|
120
|
-
|
|
121
|
-
The same certificate might be highly valuable in one context but irrelevant in another:
|
|
122
|
-
|
|
123
|
-
- A medical license is crucial for healthcare but irrelevant for software development
|
|
124
|
-
- A GitHub contribution history matters for programming jobs but not for teaching
|
|
125
|
-
- Age verification is essential for restricted services but unnecessary for professional networking
|
|
126
|
-
|
|
127
|
-
## Privacy and Selective Disclosure
|
|
128
|
-
|
|
129
|
-
### Controlling Information Flow
|
|
130
|
-
|
|
131
|
-
One of the key advantages of certificate-based identity is granular control over what you reveal:
|
|
132
|
-
|
|
133
|
-
- **Public certificates** are discoverable by anyone
|
|
134
|
-
- **Private certificates** are shared only with specific parties
|
|
135
|
-
- **Selective revelation** lets you prove specific claims without revealing everything
|
|
136
|
-
- **Progressive disclosure** allows trust to build gradually
|
|
137
|
-
|
|
138
|
-
### Zero-Knowledge Proofs
|
|
139
|
-
|
|
140
|
-
Advanced techniques allow you to prove things without revealing the underlying data:
|
|
141
|
-
|
|
142
|
-
- Prove you're over 21 without revealing your exact age
|
|
143
|
-
- Prove you have a degree without revealing which university
|
|
144
|
-
- Prove you're a resident without revealing your exact address
|
|
145
|
-
- Prove you're qualified without revealing all your credentials
|
|
146
|
-
|
|
147
|
-
### Consent and Control
|
|
148
|
-
|
|
149
|
-
You maintain control over your certificates:
|
|
150
|
-
|
|
151
|
-
- **Choose what to make public** vs. keep private
|
|
152
|
-
- **Decide who can access** specific information
|
|
153
|
-
- **Revoke access** when relationships change
|
|
154
|
-
- **Update preferences** as your needs evolve
|
|
155
|
-
|
|
156
|
-
## Real-World Applications
|
|
157
|
-
|
|
158
|
-
### Professional Verification
|
|
159
|
-
|
|
160
|
-
Instead of relying on self-reported resumes, employers can verify:
|
|
161
|
-
|
|
162
|
-
- Educational credentials directly from institutions
|
|
163
|
-
- Work history from previous employers
|
|
164
|
-
- Professional certifications from licensing bodies
|
|
165
|
-
- Skills endorsements from colleagues and clients
|
|
166
|
-
|
|
167
|
-
### Age and Identity Verification
|
|
168
|
-
|
|
169
|
-
Services requiring age or identity verification can:
|
|
170
|
-
|
|
171
|
-
- Verify age without collecting birthdates
|
|
172
|
-
- Confirm identity without storing personal documents
|
|
173
|
-
- Meet regulatory requirements while preserving privacy
|
|
174
|
-
- Reduce fraud through cryptographic verification
|
|
175
|
-
|
|
176
|
-
### Reputation Systems
|
|
177
|
-
|
|
178
|
-
Platforms can build more reliable reputation systems:
|
|
179
|
-
|
|
180
|
-
- Portable reputation that follows users between platforms
|
|
181
|
-
- Verifiable transaction history and feedback
|
|
182
|
-
- Reduced fake accounts and manipulation
|
|
183
|
-
- Incentives for honest behavior
|
|
184
|
-
|
|
185
|
-
### Access Control
|
|
186
|
-
|
|
187
|
-
Organizations can manage access more securely:
|
|
188
|
-
|
|
189
|
-
- Verify membership or employment status
|
|
190
|
-
- Confirm professional qualifications
|
|
191
|
-
- Validate security clearances
|
|
192
|
-
- Authenticate without passwords
|
|
193
|
-
|
|
194
|
-
## Benefits Over Traditional Systems
|
|
195
|
-
|
|
196
|
-
### Security
|
|
197
|
-
|
|
198
|
-
- **Cryptographic verification** is more secure than physical documents
|
|
199
|
-
- **Tamper evidence** makes forgery virtually impossible
|
|
200
|
-
- **Distributed validation** eliminates single points of failure
|
|
201
|
-
- **Revocation mechanisms** handle compromised credentials quickly
|
|
202
|
-
|
|
203
|
-
### Privacy
|
|
204
|
-
|
|
205
|
-
- **Minimal disclosure** reveals only necessary information
|
|
206
|
-
- **User control** over what information is shared
|
|
207
|
-
- **No central databases** to be breached or misused
|
|
208
|
-
- **Consent-based sharing** puts users in control
|
|
209
|
-
|
|
210
|
-
### Interoperability
|
|
211
|
-
|
|
212
|
-
- **Standard formats** work across different systems
|
|
213
|
-
- **Portable credentials** move between applications
|
|
214
|
-
- **Universal verification** works anywhere in the world
|
|
215
|
-
- **Cross-platform compatibility** reduces vendor lock-in
|
|
216
|
-
|
|
217
|
-
### Efficiency
|
|
218
|
-
|
|
219
|
-
- **Automated verification** reduces manual processes
|
|
220
|
-
- **Real-time validation** provides instant results
|
|
221
|
-
- **Reduced paperwork** streamlines credential management
|
|
222
|
-
- **Lower costs** compared to traditional verification methods
|
|
223
|
-
|
|
224
|
-
## Challenges and Considerations
|
|
225
|
-
|
|
226
|
-
### User Experience
|
|
227
|
-
|
|
228
|
-
Making certificate systems user-friendly requires:
|
|
229
|
-
|
|
230
|
-
- **Intuitive interfaces** that hide complexity
|
|
231
|
-
- **Clear explanations** of what certificates mean
|
|
232
|
-
- **Simple management tools** for organizing credentials
|
|
233
|
-
- **Seamless integration** with existing workflows
|
|
234
|
-
|
|
235
|
-
### Recovery and Backup
|
|
236
|
-
|
|
237
|
-
Unlike traditional documents, losing access to digital certificates can be permanent:
|
|
238
|
-
|
|
239
|
-
- **Backup strategies** are essential for important credentials
|
|
240
|
-
- **Recovery mechanisms** must balance security with usability
|
|
241
|
-
- **Key management** becomes critical for certificate access
|
|
242
|
-
- **Succession planning** for organizational certificates
|
|
243
|
-
|
|
244
|
-
### Adoption and Network Effects
|
|
245
|
-
|
|
246
|
-
Certificate systems become more valuable as adoption grows:
|
|
247
|
-
|
|
248
|
-
- **Issuer participation** is needed for valuable certificates
|
|
249
|
-
- **Verifier acceptance** determines practical utility
|
|
250
|
-
- **User adoption** creates network effects
|
|
251
|
-
- **Standardization** enables interoperability
|
|
252
|
-
|
|
253
|
-
### Legal and Regulatory
|
|
254
|
-
|
|
255
|
-
Integrating with existing legal frameworks requires:
|
|
256
|
-
|
|
257
|
-
- **Regulatory compliance** with identity verification laws
|
|
258
|
-
- **Legal recognition** of digital certificates
|
|
259
|
-
- **Audit trails** for compliance reporting
|
|
260
|
-
- **Dispute resolution** mechanisms for conflicts
|
|
261
|
-
|
|
262
|
-
## The Future of Digital Credentials
|
|
263
|
-
|
|
264
|
-
As certificate-based identity systems mature, we can expect:
|
|
265
|
-
|
|
266
|
-
### Widespread Adoption
|
|
267
|
-
|
|
268
|
-
- **Government integration** with official identity documents
|
|
269
|
-
- **Educational institutions** issuing digital diplomas
|
|
270
|
-
- **Professional organizations** moving to digital certifications
|
|
271
|
-
- **Employers** accepting and requiring digital credentials
|
|
272
|
-
|
|
273
|
-
### Enhanced Privacy
|
|
274
|
-
|
|
275
|
-
- **Zero-knowledge proofs** becoming standard
|
|
276
|
-
- **Selective disclosure** built into all systems
|
|
277
|
-
- **Privacy-preserving verification** as the default
|
|
278
|
-
- **User control** over all personal data
|
|
279
|
-
|
|
280
|
-
### Improved User Experience
|
|
281
|
-
|
|
282
|
-
- **Seamless integration** with daily digital activities
|
|
283
|
-
- **Automated verification** reducing friction
|
|
284
|
-
- **Intelligent recommendations** for credential building
|
|
285
|
-
- **Universal acceptance** across platforms and services
|
|
286
|
-
|
|
287
|
-
### New Possibilities
|
|
288
|
-
|
|
289
|
-
- **Micro-credentials** for specific skills and achievements
|
|
290
|
-
- **Dynamic certificates** that update automatically
|
|
291
|
-
- **Composite credentials** combining multiple sources
|
|
292
|
-
- **AI-assisted verification** for complex claims
|
|
293
|
-
|
|
294
|
-
Understanding these concepts helps developers and users participate in building a more trustworthy, privacy-preserving digital world where identity verification is both secure and user-controlled.
|
|
295
|
-
|
|
296
|
-
## Related Concepts
|
|
297
|
-
|
|
298
|
-
- [Decentralized Identity](./decentralized-identity.md) - Overall identity system architecture
|
|
299
|
-
- [Digital Signatures](./signatures.md) - Cryptographic foundations of certificates
|
|
300
|
-
- [Trust Model](./trust-model.md) - Security assumptions and trust relationships
|
|
301
|
-
- [Key Management](./key-management.md) - Managing cryptographic keys for certificates
|
|
302
|
-
|
|
303
|
-
## Further Reading
|
|
304
|
-
|
|
305
|
-
- [Identity Management Tutorial](../tutorials/identity-management.md) - Practical certificate implementation
|
|
306
|
-
- [Security Best Practices](../guides/security-best-practices.md) - Secure certificate handling
|
|
307
|
-
- [AuthFetch Tutorial](../tutorials/authfetch-tutorial.md) - Using certificates for authentication
|
package/docs/concepts/index.md
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Concepts
|
|
2
|
-
|
|
3
|
-
Essential concepts for understanding and using the BSV TypeScript SDK effectively.
|
|
4
|
-
|
|
5
|
-
## Core Bitcoin Concepts
|
|
6
|
-
|
|
7
|
-
### [Transaction Structure](./transaction-structure.md)
|
|
8
|
-
|
|
9
|
-
Understanding Bitcoin transactions, inputs, outputs, and how they work in the SDK.
|
|
10
|
-
|
|
11
|
-
### [Script Templates](./script-templates.md)
|
|
12
|
-
|
|
13
|
-
Standard and custom Bitcoin script patterns available in the SDK.
|
|
14
|
-
|
|
15
|
-
### [Digital Signatures](./signatures.md)
|
|
16
|
-
|
|
17
|
-
How digital signatures work in Bitcoin and their implementation in the SDK.
|
|
18
|
-
|
|
19
|
-
### [Transaction Verification](./verification.md)
|
|
20
|
-
|
|
21
|
-
Understanding how to verify Bitcoin transactions using the SDK.
|
|
22
|
-
|
|
23
|
-
### [SPV Verification](./spv-verification.md)
|
|
24
|
-
|
|
25
|
-
Simplified Payment Verification and merkle proof concepts for lightweight clients.
|
|
26
|
-
|
|
27
|
-
### [Transaction Fees](./fees.md)
|
|
28
|
-
|
|
29
|
-
How Bitcoin transaction fees work and fee optimization strategies.
|
|
30
|
-
|
|
31
|
-
## SDK Architecture
|
|
32
|
-
|
|
33
|
-
### [SDK Design Philosophy](./sdk-philosophy.md)
|
|
34
|
-
|
|
35
|
-
Core principles: zero dependencies, SPV-first approach, and vendor neutrality.
|
|
36
|
-
|
|
37
|
-
### [Wallet Integration](./wallet-integration.md)
|
|
38
|
-
|
|
39
|
-
How the SDK connects with Bitcoin wallets and manages authentication.
|
|
40
|
-
|
|
41
|
-
### [Chain Tracking](./chain-tracking.md)
|
|
42
|
-
|
|
43
|
-
Understanding how the SDK interacts with the Bitcoin network for transaction data.
|
|
44
|
-
|
|
45
|
-
## Data Formats
|
|
46
|
-
|
|
47
|
-
### [BEEF Format](./beef.md)
|
|
48
|
-
|
|
49
|
-
Bitcoin Extras Extension Format for efficient transaction data exchange.
|
|
50
|
-
|
|
51
|
-
### [Transaction Encoding](./transaction-encoding.md)
|
|
52
|
-
|
|
53
|
-
How transactions are serialized and deserialized in the SDK.
|
|
54
|
-
|
|
55
|
-
## Identity and Certificates
|
|
56
|
-
|
|
57
|
-
### [Decentralized Identity](./decentralized-identity.md)
|
|
58
|
-
|
|
59
|
-
Understanding BSV's decentralized identity system and certificate-based verification.
|
|
60
|
-
|
|
61
|
-
### [Identity Certificates](./identity-certificates.md)
|
|
62
|
-
|
|
63
|
-
How cryptographic certificates work for identity claims and verification.
|
|
64
|
-
|
|
65
|
-
## Security Model
|
|
66
|
-
|
|
67
|
-
### [Key Management](./key-management.md)
|
|
68
|
-
|
|
69
|
-
How private keys, public keys, and cryptographic operations work in the SDK.
|
|
70
|
-
|
|
71
|
-
### [Trust Model](./trust-model.md)
|
|
72
|
-
|
|
73
|
-
Understanding the security assumptions and trust relationships in SDK applications.
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
These concepts provide the foundational knowledge needed to build Bitcoin applications with the BSV TypeScript SDK. For deeper protocol details, refer to the [BSV Skills Center](https://docs.bsvblockchain.org/).
|