@originals/sdk 1.4.2 → 1.4.3
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/package.json +4 -1
- package/.eslintrc.json +0 -33
- package/src/adapters/FeeOracleMock.ts +0 -9
- package/src/adapters/index.ts +0 -5
- package/src/adapters/providers/OrdHttpProvider.ts +0 -126
- package/src/adapters/providers/OrdMockProvider.ts +0 -101
- package/src/adapters/types.ts +0 -66
- package/src/bitcoin/BitcoinManager.ts +0 -330
- package/src/bitcoin/BroadcastClient.ts +0 -54
- package/src/bitcoin/OrdinalsClient.ts +0 -119
- package/src/bitcoin/PSBTBuilder.ts +0 -106
- package/src/bitcoin/fee-calculation.ts +0 -38
- package/src/bitcoin/providers/OrdNodeProvider.ts +0 -92
- package/src/bitcoin/providers/OrdinalsProvider.ts +0 -56
- package/src/bitcoin/providers/types.ts +0 -59
- package/src/bitcoin/transactions/commit.ts +0 -465
- package/src/bitcoin/transactions/index.ts +0 -13
- package/src/bitcoin/transfer.ts +0 -43
- package/src/bitcoin/utxo-selection.ts +0 -322
- package/src/bitcoin/utxo.ts +0 -113
- package/src/contexts/credentials-v1.json +0 -237
- package/src/contexts/credentials-v2-examples.json +0 -5
- package/src/contexts/credentials-v2.json +0 -340
- package/src/contexts/credentials.json +0 -237
- package/src/contexts/data-integrity-v2.json +0 -81
- package/src/contexts/dids.json +0 -58
- package/src/contexts/ed255192020.json +0 -93
- package/src/contexts/ordinals-plus.json +0 -23
- package/src/contexts/originals.json +0 -22
- package/src/core/OriginalsSDK.ts +0 -416
- package/src/crypto/Multikey.ts +0 -194
- package/src/crypto/Signer.ts +0 -254
- package/src/crypto/noble-init.ts +0 -121
- package/src/did/BtcoDidResolver.ts +0 -227
- package/src/did/DIDManager.ts +0 -694
- package/src/did/Ed25519Verifier.ts +0 -68
- package/src/did/KeyManager.ts +0 -236
- package/src/did/WebVHManager.ts +0 -498
- package/src/did/createBtcoDidDocument.ts +0 -59
- package/src/did/providers/OrdinalsClientProviderAdapter.ts +0 -68
- package/src/events/EventEmitter.ts +0 -222
- package/src/events/index.ts +0 -19
- package/src/events/types.ts +0 -331
- package/src/examples/basic-usage.ts +0 -78
- package/src/examples/create-module-original.ts +0 -435
- package/src/examples/full-lifecycle-flow.ts +0 -514
- package/src/examples/run.ts +0 -60
- package/src/index.ts +0 -150
- package/src/kinds/KindRegistry.ts +0 -290
- package/src/kinds/index.ts +0 -74
- package/src/kinds/types.ts +0 -470
- package/src/kinds/validators/AgentValidator.ts +0 -257
- package/src/kinds/validators/AppValidator.ts +0 -211
- package/src/kinds/validators/DatasetValidator.ts +0 -242
- package/src/kinds/validators/DocumentValidator.ts +0 -311
- package/src/kinds/validators/MediaValidator.ts +0 -269
- package/src/kinds/validators/ModuleValidator.ts +0 -225
- package/src/kinds/validators/base.ts +0 -276
- package/src/kinds/validators/index.ts +0 -12
- package/src/lifecycle/BatchOperations.ts +0 -373
- package/src/lifecycle/LifecycleManager.ts +0 -2126
- package/src/lifecycle/OriginalsAsset.ts +0 -524
- package/src/lifecycle/ProvenanceQuery.ts +0 -280
- package/src/lifecycle/ResourceVersioning.ts +0 -163
- package/src/migration/MigrationManager.ts +0 -527
- package/src/migration/audit/AuditLogger.ts +0 -176
- package/src/migration/checkpoint/CheckpointManager.ts +0 -112
- package/src/migration/checkpoint/CheckpointStorage.ts +0 -101
- package/src/migration/index.ts +0 -33
- package/src/migration/operations/BaseMigration.ts +0 -126
- package/src/migration/operations/PeerToBtcoMigration.ts +0 -105
- package/src/migration/operations/PeerToWebvhMigration.ts +0 -62
- package/src/migration/operations/WebvhToBtcoMigration.ts +0 -105
- package/src/migration/rollback/RollbackManager.ts +0 -170
- package/src/migration/state/StateMachine.ts +0 -92
- package/src/migration/state/StateTracker.ts +0 -156
- package/src/migration/types.ts +0 -344
- package/src/migration/validation/BitcoinValidator.ts +0 -107
- package/src/migration/validation/CredentialValidator.ts +0 -62
- package/src/migration/validation/DIDCompatibilityValidator.ts +0 -151
- package/src/migration/validation/LifecycleValidator.ts +0 -64
- package/src/migration/validation/StorageValidator.ts +0 -79
- package/src/migration/validation/ValidationPipeline.ts +0 -213
- package/src/resources/ResourceManager.ts +0 -655
- package/src/resources/index.ts +0 -21
- package/src/resources/types.ts +0 -202
- package/src/storage/LocalStorageAdapter.ts +0 -61
- package/src/storage/MemoryStorageAdapter.ts +0 -29
- package/src/storage/StorageAdapter.ts +0 -25
- package/src/storage/index.ts +0 -3
- package/src/types/bitcoin.ts +0 -98
- package/src/types/common.ts +0 -92
- package/src/types/credentials.ts +0 -88
- package/src/types/did.ts +0 -31
- package/src/types/external-shims.d.ts +0 -53
- package/src/types/index.ts +0 -7
- package/src/types/network.ts +0 -175
- package/src/utils/EventLogger.ts +0 -298
- package/src/utils/Logger.ts +0 -322
- package/src/utils/MetricsCollector.ts +0 -358
- package/src/utils/bitcoin-address.ts +0 -130
- package/src/utils/cbor.ts +0 -12
- package/src/utils/encoding.ts +0 -127
- package/src/utils/hash.ts +0 -6
- package/src/utils/retry.ts +0 -46
- package/src/utils/satoshi-validation.ts +0 -196
- package/src/utils/serialization.ts +0 -96
- package/src/utils/telemetry.ts +0 -40
- package/src/utils/validation.ts +0 -119
- package/src/vc/CredentialManager.ts +0 -918
- package/src/vc/Issuer.ts +0 -100
- package/src/vc/Verifier.ts +0 -47
- package/src/vc/cryptosuites/bbs.ts +0 -253
- package/src/vc/cryptosuites/bbsSimple.ts +0 -21
- package/src/vc/cryptosuites/eddsa.ts +0 -99
- package/src/vc/documentLoader.ts +0 -67
- package/src/vc/proofs/data-integrity.ts +0 -33
- package/src/vc/utils/jsonld.ts +0 -18
- package/tests/__mocks__/bbs-signatures.js +0 -17
- package/tests/__mocks__/mf-base58.js +0 -24
- package/tests/fixtures/did-documents.ts +0 -247
- package/tests/index.test.ts +0 -21
- package/tests/integration/BatchOperations.test.ts +0 -531
- package/tests/integration/CompleteLifecycle.e2e.test.ts +0 -735
- package/tests/integration/CredentialManager.test.ts +0 -42
- package/tests/integration/DIDManager.test.ts +0 -41
- package/tests/integration/DidPeerToWebVhFlow.test.ts +0 -351
- package/tests/integration/Events.test.ts +0 -435
- package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +0 -25
- package/tests/integration/LifecycleManager.test.ts +0 -21
- package/tests/integration/MultikeyFlow.test.ts +0 -52
- package/tests/integration/TelemetryIntegration.test.ts +0 -395
- package/tests/integration/WebVhPublish.test.ts +0 -48
- package/tests/integration/createTypedOriginal.test.ts +0 -379
- package/tests/integration/migration/peer-to-webvh.test.ts +0 -172
- package/tests/manual/test-commit-creation.ts +0 -323
- package/tests/mocks/MockKeyStore.ts +0 -38
- package/tests/mocks/adapters/MemoryStorageAdapter.ts +0 -24
- package/tests/mocks/adapters/MockFeeOracle.ts +0 -11
- package/tests/mocks/adapters/MockOrdinalsProvider.ts +0 -76
- package/tests/mocks/adapters/OrdMockProvider.test.ts +0 -176
- package/tests/mocks/adapters/index.ts +0 -6
- package/tests/performance/BatchOperations.perf.test.ts +0 -403
- package/tests/performance/logging.perf.test.ts +0 -336
- package/tests/sdk.test.ts +0 -43
- package/tests/security/bitcoin-penetration-tests.test.ts +0 -622
- package/tests/setup.bun.ts +0 -69
- package/tests/setup.jest.ts +0 -23
- package/tests/stress/batch-operations-stress.test.ts +0 -571
- package/tests/unit/adapters/FeeOracleMock.test.ts +0 -40
- package/tests/unit/bitcoin/BitcoinManager.test.ts +0 -293
- package/tests/unit/bitcoin/BroadcastClient.test.ts +0 -52
- package/tests/unit/bitcoin/OrdNodeProvider.test.ts +0 -53
- package/tests/unit/bitcoin/OrdinalsClient.test.ts +0 -381
- package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +0 -102
- package/tests/unit/bitcoin/PSBTBuilder.test.ts +0 -84
- package/tests/unit/bitcoin/fee-calculation.test.ts +0 -261
- package/tests/unit/bitcoin/transactions/commit.test.ts +0 -649
- package/tests/unit/bitcoin/transfer.test.ts +0 -31
- package/tests/unit/bitcoin/utxo-selection-new.test.ts +0 -502
- package/tests/unit/bitcoin/utxo.more.test.ts +0 -39
- package/tests/unit/bitcoin/utxo.selection.test.ts +0 -38
- package/tests/unit/core/OriginalsSDK.test.ts +0 -152
- package/tests/unit/crypto/Multikey.test.ts +0 -206
- package/tests/unit/crypto/Signer.test.ts +0 -408
- package/tests/unit/did/BtcoDidResolver.test.ts +0 -611
- package/tests/unit/did/DIDManager.more.test.ts +0 -43
- package/tests/unit/did/DIDManager.test.ts +0 -185
- package/tests/unit/did/Ed25519Verifier.test.ts +0 -160
- package/tests/unit/did/KeyManager.test.ts +0 -452
- package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +0 -45
- package/tests/unit/did/WebVHManager.test.ts +0 -435
- package/tests/unit/did/createBtcoDidDocument.test.ts +0 -67
- package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +0 -159
- package/tests/unit/events/EventEmitter.test.ts +0 -407
- package/tests/unit/kinds/KindRegistry.test.ts +0 -329
- package/tests/unit/kinds/types.test.ts +0 -409
- package/tests/unit/kinds/validators.test.ts +0 -651
- package/tests/unit/lifecycle/BatchOperations.test.ts +0 -527
- package/tests/unit/lifecycle/LifecycleManager.cleanapi.test.ts +0 -441
- package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +0 -312
- package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +0 -18
- package/tests/unit/lifecycle/LifecycleManager.test.ts +0 -213
- package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +0 -30
- package/tests/unit/lifecycle/OriginalsAsset.test.ts +0 -176
- package/tests/unit/lifecycle/ProvenanceQuery.test.ts +0 -577
- package/tests/unit/lifecycle/ResourceVersioning.test.ts +0 -651
- package/tests/unit/resources/ResourceManager.test.ts +0 -740
- package/tests/unit/storage/MemoryStorageAdapter.test.ts +0 -93
- package/tests/unit/types/network.test.ts +0 -255
- package/tests/unit/utils/EventIntegration.test.ts +0 -384
- package/tests/unit/utils/Logger.test.ts +0 -473
- package/tests/unit/utils/MetricsCollector.test.ts +0 -358
- package/tests/unit/utils/bitcoin-address.test.ts +0 -250
- package/tests/unit/utils/cbor.test.ts +0 -35
- package/tests/unit/utils/encoding.test.ts +0 -318
- package/tests/unit/utils/hash.test.ts +0 -12
- package/tests/unit/utils/retry.test.ts +0 -100
- package/tests/unit/utils/satoshi-validation.test.ts +0 -354
- package/tests/unit/utils/serialization.test.ts +0 -124
- package/tests/unit/utils/telemetry.test.ts +0 -52
- package/tests/unit/utils/validation.test.ts +0 -141
- package/tests/unit/vc/CredentialManager.helpers.test.ts +0 -527
- package/tests/unit/vc/CredentialManager.test.ts +0 -487
- package/tests/unit/vc/Issuer.test.ts +0 -107
- package/tests/unit/vc/Verifier.test.ts +0 -525
- package/tests/unit/vc/bbs.test.ts +0 -282
- package/tests/unit/vc/cryptosuites/eddsa.test.ts +0 -398
- package/tests/unit/vc/documentLoader.test.ts +0 -121
- package/tests/unit/vc/proofs/data-integrity.test.ts +0 -24
- package/tsconfig.json +0 -31
- package/tsconfig.test.json +0 -15
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for fee calculation functions
|
|
3
|
-
*/
|
|
4
|
-
import { describe, test, expect } from 'bun:test';
|
|
5
|
-
import { calculateFee } from '../../../src';
|
|
6
|
-
|
|
7
|
-
describe('calculateFee', () => {
|
|
8
|
-
describe('Basic Fee Tests', () => {
|
|
9
|
-
test('calculates fee for 1 input, 2 outputs (140 vbytes)', () => {
|
|
10
|
-
const vbytes = 140; // 1 input, 2 outputs
|
|
11
|
-
const feeRate = 10; // 10 sats/vB
|
|
12
|
-
|
|
13
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
14
|
-
|
|
15
|
-
// 140 vbytes * 10 sats/vB = 1400 sats
|
|
16
|
-
expect(fee).toBe(1400n);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
test('calculates fee for 3 inputs, 1 output (245 vbytes)', () => {
|
|
20
|
-
const vbytes = 245; // 3 inputs, 1 output
|
|
21
|
-
const feeRate = 5; // 5 sats/vB
|
|
22
|
-
|
|
23
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
24
|
-
|
|
25
|
-
// 245 vbytes * 5 sats/vB = 1225 sats
|
|
26
|
-
expect(fee).toBe(1225n);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
test('fee scales linearly with fee rate (above minimum)', () => {
|
|
30
|
-
const vbytes = 100;
|
|
31
|
-
|
|
32
|
-
// Use fee rates above minimum to ensure linear scaling
|
|
33
|
-
const fee5 = calculateFee(vbytes, 5);
|
|
34
|
-
const fee10 = calculateFee(vbytes, 10);
|
|
35
|
-
const fee20 = calculateFee(vbytes, 20);
|
|
36
|
-
|
|
37
|
-
// Should scale linearly when all above minimum
|
|
38
|
-
expect(fee10).toBe(fee5 * 2n);
|
|
39
|
-
expect(fee20).toBe(fee5 * 4n);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('rounds up fractional satoshis', () => {
|
|
43
|
-
const vbytes = 100;
|
|
44
|
-
const feeRate = 1.5; // 1.5 sats/vB
|
|
45
|
-
|
|
46
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
47
|
-
|
|
48
|
-
// 100 * 1.5 = 150, should round to 150
|
|
49
|
-
expect(fee).toBe(150n);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test('handles large transaction sizes', () => {
|
|
53
|
-
const vbytes = 10000; // Large transaction
|
|
54
|
-
const feeRate = 50;
|
|
55
|
-
|
|
56
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
57
|
-
|
|
58
|
-
// 10000 * 50 = 500000
|
|
59
|
-
expect(fee).toBe(500000n);
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
describe('Minimum Relay Fee Tests', () => {
|
|
64
|
-
test('respects minimum relay fee (1.1 sats/vB)', () => {
|
|
65
|
-
const vbytes = 1000;
|
|
66
|
-
const feeRate = 0.5; // Below minimum
|
|
67
|
-
|
|
68
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
69
|
-
|
|
70
|
-
// Should use minimum relay fee: 1000 * 1.1 = 1100
|
|
71
|
-
expect(fee).toBeGreaterThanOrEqual(1100n);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
test('uses specified fee rate when above minimum', () => {
|
|
75
|
-
const vbytes = 100;
|
|
76
|
-
const feeRate = 10; // Well above minimum
|
|
77
|
-
|
|
78
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
79
|
-
|
|
80
|
-
// Should use 10 sats/vB: 100 * 10 = 1000
|
|
81
|
-
expect(fee).toBe(1000n);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
test('minimum fee is at least 1 sat', () => {
|
|
85
|
-
const vbytes = 1;
|
|
86
|
-
const feeRate = 0.1; // Very low
|
|
87
|
-
|
|
88
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
89
|
-
|
|
90
|
-
// Should be at least 1 sat
|
|
91
|
-
expect(fee).toBeGreaterThanOrEqual(1n);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
describe('Edge Cases', () => {
|
|
96
|
-
test('handles zero fee rate (returns 0)', () => {
|
|
97
|
-
const vbytes = 100;
|
|
98
|
-
const feeRate = 0;
|
|
99
|
-
|
|
100
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
101
|
-
|
|
102
|
-
// Invalid input, returns 0
|
|
103
|
-
expect(fee).toBe(0n);
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
test('handles negative fee rate (returns 0)', () => {
|
|
107
|
-
const vbytes = 100;
|
|
108
|
-
const feeRate = -5;
|
|
109
|
-
|
|
110
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
111
|
-
|
|
112
|
-
// Invalid input, returns 0
|
|
113
|
-
expect(fee).toBe(0n);
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
test('handles zero vbytes (returns 0)', () => {
|
|
117
|
-
const vbytes = 0;
|
|
118
|
-
const feeRate = 10;
|
|
119
|
-
|
|
120
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
121
|
-
|
|
122
|
-
// Invalid input, returns 0
|
|
123
|
-
expect(fee).toBe(0n);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
test('handles negative vbytes (returns 0)', () => {
|
|
127
|
-
const vbytes = -100;
|
|
128
|
-
const feeRate = 10;
|
|
129
|
-
|
|
130
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
131
|
-
|
|
132
|
-
// Invalid input, returns 0
|
|
133
|
-
expect(fee).toBe(0n);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
test('handles NaN vbytes (returns 0)', () => {
|
|
137
|
-
const vbytes = NaN;
|
|
138
|
-
const feeRate = 10;
|
|
139
|
-
|
|
140
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
141
|
-
|
|
142
|
-
// Invalid input, returns 0
|
|
143
|
-
expect(fee).toBe(0n);
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
test('handles NaN fee rate (returns 0)', () => {
|
|
147
|
-
const vbytes = 100;
|
|
148
|
-
const feeRate = NaN;
|
|
149
|
-
|
|
150
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
151
|
-
|
|
152
|
-
// Invalid input, returns 0
|
|
153
|
-
expect(fee).toBe(0n);
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
describe('Different Fee Rate Scenarios', () => {
|
|
158
|
-
test('calculates fee for low priority (1 sat/vB)', () => {
|
|
159
|
-
const vbytes = 200;
|
|
160
|
-
const feeRate = 1;
|
|
161
|
-
|
|
162
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
163
|
-
|
|
164
|
-
// Uses minimum 1.1: Math.ceil(200 * 1.1) = Math.ceil(220) = 220
|
|
165
|
-
// But implementation takes max of ceiling values, which can be 221 due to rounding
|
|
166
|
-
expect(fee).toBeGreaterThanOrEqual(220n);
|
|
167
|
-
expect(fee).toBeLessThanOrEqual(221n);
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
test('calculates fee for medium priority (10 sat/vB)', () => {
|
|
171
|
-
const vbytes = 200;
|
|
172
|
-
const feeRate = 10;
|
|
173
|
-
|
|
174
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
175
|
-
|
|
176
|
-
expect(fee).toBe(2000n); // 200 * 10
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
test('calculates fee for high priority (50 sat/vB)', () => {
|
|
180
|
-
const vbytes = 200;
|
|
181
|
-
const feeRate = 50;
|
|
182
|
-
|
|
183
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
184
|
-
|
|
185
|
-
expect(fee).toBe(10000n); // 200 * 50
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
test('calculates fee for very high priority (100 sat/vB)', () => {
|
|
189
|
-
const vbytes = 200;
|
|
190
|
-
const feeRate = 100;
|
|
191
|
-
|
|
192
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
193
|
-
|
|
194
|
-
expect(fee).toBe(20000n); // 200 * 100
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
describe('Return Type Tests', () => {
|
|
199
|
-
test('returns bigint type', () => {
|
|
200
|
-
const fee = calculateFee(100, 10);
|
|
201
|
-
|
|
202
|
-
expect(typeof fee).toBe('bigint');
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
test('returns positive bigint for valid inputs', () => {
|
|
206
|
-
const fee = calculateFee(100, 10);
|
|
207
|
-
|
|
208
|
-
expect(fee).toBeGreaterThan(0n);
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
test('bigint can be used in calculations', () => {
|
|
212
|
-
const fee = calculateFee(100, 10);
|
|
213
|
-
const doubled = fee * 2n;
|
|
214
|
-
|
|
215
|
-
expect(doubled).toBe(2000n);
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
describe('Real-World Scenarios', () => {
|
|
220
|
-
test('simple payment transaction (1 input, 2 outputs)', () => {
|
|
221
|
-
// 10 (overhead) + 68 (input) + 62 (2 outputs) = 140 vbytes
|
|
222
|
-
const vbytes = 140;
|
|
223
|
-
const feeRate = 5; // mempool median
|
|
224
|
-
|
|
225
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
226
|
-
|
|
227
|
-
expect(fee).toBe(700n); // 140 * 5
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
test('consolidation transaction (10 inputs, 1 output)', () => {
|
|
231
|
-
// 10 + (10 * 68) + 31 = 721 vbytes
|
|
232
|
-
const vbytes = 721;
|
|
233
|
-
const feeRate = 3;
|
|
234
|
-
|
|
235
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
236
|
-
|
|
237
|
-
expect(fee).toBe(2163n); // 721 * 3
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
test('batch payment (2 inputs, 10 outputs)', () => {
|
|
241
|
-
// 10 + (2 * 68) + (10 * 31) = 456 vbytes
|
|
242
|
-
const vbytes = 456;
|
|
243
|
-
const feeRate = 10;
|
|
244
|
-
|
|
245
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
246
|
-
|
|
247
|
-
expect(fee).toBe(4560n); // 456 * 10
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
test('inscription commit transaction', () => {
|
|
251
|
-
// Typical commit tx size
|
|
252
|
-
const vbytes = 150;
|
|
253
|
-
const feeRate = 15; // Higher for inscription
|
|
254
|
-
|
|
255
|
-
const fee = calculateFee(vbytes, feeRate);
|
|
256
|
-
|
|
257
|
-
expect(fee).toBe(2250n); // 150 * 15
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
|