@vbyte/btc-dev 1.1.8 → 2.1.0

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.
Files changed (181) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/LICENSE +21 -121
  3. package/README.md +69 -3
  4. package/dist/const.d.ts +3 -0
  5. package/dist/const.js +23 -22
  6. package/dist/error.d.ts +11 -0
  7. package/dist/error.js +20 -0
  8. package/dist/index.d.ts +12 -11
  9. package/dist/index.js +11 -10
  10. package/dist/lib/address/api.d.ts +2 -2
  11. package/dist/lib/address/api.js +13 -12
  12. package/dist/lib/address/encode.d.ts +1 -1
  13. package/dist/lib/address/encode.js +26 -24
  14. package/dist/lib/address/index.d.ts +6 -6
  15. package/dist/lib/address/index.js +6 -6
  16. package/dist/lib/address/p2pkh.d.ts +2 -2
  17. package/dist/lib/address/p2pkh.js +15 -15
  18. package/dist/lib/address/p2sh.d.ts +2 -2
  19. package/dist/lib/address/p2sh.js +14 -14
  20. package/dist/lib/address/p2tr.d.ts +2 -2
  21. package/dist/lib/address/p2tr.js +14 -14
  22. package/dist/lib/address/p2wpkh.d.ts +2 -2
  23. package/dist/lib/address/p2wpkh.js +15 -15
  24. package/dist/lib/address/p2wsh.d.ts +2 -2
  25. package/dist/lib/address/p2wsh.js +14 -14
  26. package/dist/lib/address/script.d.ts +1 -1
  27. package/dist/lib/address/script.js +16 -16
  28. package/dist/lib/address/util.d.ts +1 -1
  29. package/dist/lib/address/util.js +24 -22
  30. package/dist/lib/meta/index.d.ts +4 -4
  31. package/dist/lib/meta/index.js +4 -4
  32. package/dist/lib/meta/locktime.d.ts +1 -1
  33. package/dist/lib/meta/locktime.js +13 -12
  34. package/dist/lib/meta/ref.js +13 -9
  35. package/dist/lib/meta/scribe.d.ts +2 -2
  36. package/dist/lib/meta/scribe.js +71 -56
  37. package/dist/lib/meta/sequence.d.ts +1 -1
  38. package/dist/lib/meta/sequence.js +21 -19
  39. package/dist/lib/script/decode.d.ts +2 -2
  40. package/dist/lib/script/decode.js +53 -17
  41. package/dist/lib/script/encode.d.ts +1 -1
  42. package/dist/lib/script/encode.js +21 -16
  43. package/dist/lib/script/index.d.ts +5 -13
  44. package/dist/lib/script/index.js +5 -14
  45. package/dist/lib/script/lock.d.ts +2 -2
  46. package/dist/lib/script/lock.js +15 -12
  47. package/dist/lib/script/util.js +4 -4
  48. package/dist/lib/script/words.js +131 -130
  49. package/dist/lib/sighash/index.d.ts +3 -3
  50. package/dist/lib/sighash/index.js +3 -3
  51. package/dist/lib/sighash/segwit.d.ts +2 -2
  52. package/dist/lib/sighash/segwit.js +18 -14
  53. package/dist/lib/sighash/taproot.d.ts +2 -2
  54. package/dist/lib/sighash/taproot.js +27 -23
  55. package/dist/lib/sighash/util.d.ts +2 -2
  56. package/dist/lib/sighash/util.js +8 -7
  57. package/dist/lib/signer/index.d.ts +2 -2
  58. package/dist/lib/signer/index.js +2 -2
  59. package/dist/lib/signer/sign.d.ts +1 -1
  60. package/dist/lib/signer/sign.js +43 -7
  61. package/dist/lib/signer/verify.d.ts +17 -3
  62. package/dist/lib/signer/verify.js +232 -3
  63. package/dist/lib/taproot/cblock.d.ts +1 -1
  64. package/dist/lib/taproot/cblock.js +16 -17
  65. package/dist/lib/taproot/encode.d.ts +1 -1
  66. package/dist/lib/taproot/encode.js +9 -8
  67. package/dist/lib/taproot/index.d.ts +4 -4
  68. package/dist/lib/taproot/index.js +4 -4
  69. package/dist/lib/taproot/parse.d.ts +1 -1
  70. package/dist/lib/taproot/parse.js +15 -15
  71. package/dist/lib/taproot/tree.d.ts +2 -2
  72. package/dist/lib/taproot/tree.js +12 -7
  73. package/dist/lib/tx/create.d.ts +1 -1
  74. package/dist/lib/tx/create.js +28 -12
  75. package/dist/lib/tx/decode.d.ts +2 -2
  76. package/dist/lib/tx/decode.js +52 -17
  77. package/dist/lib/tx/encode.d.ts +2 -2
  78. package/dist/lib/tx/encode.js +13 -16
  79. package/dist/lib/tx/index.d.ts +7 -7
  80. package/dist/lib/tx/index.js +7 -7
  81. package/dist/lib/tx/parse.d.ts +1 -1
  82. package/dist/lib/tx/parse.js +9 -9
  83. package/dist/lib/tx/size.d.ts +2 -2
  84. package/dist/lib/tx/size.js +9 -11
  85. package/dist/lib/tx/util.d.ts +2 -2
  86. package/dist/lib/tx/util.js +22 -20
  87. package/dist/lib/tx/validate.d.ts +1 -1
  88. package/dist/lib/tx/validate.js +37 -9
  89. package/dist/lib/witness/index.d.ts +2 -2
  90. package/dist/lib/witness/index.js +2 -2
  91. package/dist/lib/witness/parse.d.ts +2 -2
  92. package/dist/lib/witness/parse.js +24 -23
  93. package/dist/lib/witness/util.d.ts +2 -2
  94. package/dist/lib/witness/util.js +5 -5
  95. package/dist/main.cjs +3305 -2035
  96. package/dist/main.cjs.map +1 -1
  97. package/dist/module.mjs +3303 -2036
  98. package/dist/module.mjs.map +1 -1
  99. package/dist/package.json +24 -19
  100. package/dist/schema/base.d.ts +1 -1
  101. package/dist/schema/base.js +17 -13
  102. package/dist/schema/index.d.ts +2 -2
  103. package/dist/schema/index.js +2 -2
  104. package/dist/schema/taproot.d.ts +1 -1
  105. package/dist/schema/taproot.js +2 -2
  106. package/dist/schema/tx.d.ts +1 -1
  107. package/dist/schema/tx.js +4 -4
  108. package/dist/script.js +10 -12
  109. package/dist/script.js.map +1 -1
  110. package/dist/types/address.d.ts +4 -4
  111. package/dist/types/index.d.ts +8 -8
  112. package/dist/types/index.js +8 -8
  113. package/dist/types/meta.d.ts +4 -4
  114. package/dist/types/psbt.d.ts +2 -2
  115. package/dist/types/script.d.ts +2 -2
  116. package/dist/types/sighash.d.ts +2 -2
  117. package/dist/types/witness.d.ts +5 -5
  118. package/docs/API.md +1145 -0
  119. package/docs/CONVENTIONS.md +316 -0
  120. package/docs/FAQ.md +396 -0
  121. package/docs/GUIDE.md +1102 -0
  122. package/package.json +24 -19
  123. package/src/const.ts +0 -61
  124. package/src/index.ts +0 -13
  125. package/src/lib/address/api.ts +0 -50
  126. package/src/lib/address/encode.ts +0 -183
  127. package/src/lib/address/index.ts +0 -7
  128. package/src/lib/address/p2pkh.ts +0 -94
  129. package/src/lib/address/p2sh.ts +0 -96
  130. package/src/lib/address/p2tr.ts +0 -91
  131. package/src/lib/address/p2wpkh.ts +0 -94
  132. package/src/lib/address/p2wsh.ts +0 -92
  133. package/src/lib/address/script.ts +0 -63
  134. package/src/lib/address/util.ts +0 -87
  135. package/src/lib/meta/index.ts +0 -4
  136. package/src/lib/meta/locktime.ts +0 -57
  137. package/src/lib/meta/ref.ts +0 -107
  138. package/src/lib/meta/scribe.ts +0 -256
  139. package/src/lib/meta/sequence.ts +0 -146
  140. package/src/lib/script/decode.ts +0 -85
  141. package/src/lib/script/encode.ts +0 -129
  142. package/src/lib/script/index.ts +0 -20
  143. package/src/lib/script/lock.ts +0 -73
  144. package/src/lib/script/util.ts +0 -78
  145. package/src/lib/script/words.ts +0 -182
  146. package/src/lib/sighash/index.ts +0 -3
  147. package/src/lib/sighash/segwit.ts +0 -152
  148. package/src/lib/sighash/taproot.ts +0 -206
  149. package/src/lib/sighash/util.ts +0 -51
  150. package/src/lib/signer/index.ts +0 -2
  151. package/src/lib/signer/sign.ts +0 -39
  152. package/src/lib/signer/verify.ts +0 -88
  153. package/src/lib/taproot/cblock.ts +0 -96
  154. package/src/lib/taproot/encode.ts +0 -49
  155. package/src/lib/taproot/index.ts +0 -4
  156. package/src/lib/taproot/parse.ts +0 -65
  157. package/src/lib/taproot/tree.ts +0 -94
  158. package/src/lib/tx/create.ts +0 -90
  159. package/src/lib/tx/decode.ts +0 -123
  160. package/src/lib/tx/encode.ts +0 -155
  161. package/src/lib/tx/index.ts +0 -7
  162. package/src/lib/tx/parse.ts +0 -69
  163. package/src/lib/tx/size.ts +0 -68
  164. package/src/lib/tx/util.ts +0 -111
  165. package/src/lib/tx/validate.ts +0 -49
  166. package/src/lib/witness/index.ts +0 -2
  167. package/src/lib/witness/parse.ts +0 -127
  168. package/src/lib/witness/util.ts +0 -18
  169. package/src/schema/base.ts +0 -57
  170. package/src/schema/index.ts +0 -2
  171. package/src/schema/taproot.ts +0 -12
  172. package/src/schema/tx.ts +0 -48
  173. package/src/types/address.ts +0 -35
  174. package/src/types/index.ts +0 -8
  175. package/src/types/meta.ts +0 -48
  176. package/src/types/psbt.ts +0 -15
  177. package/src/types/script.ts +0 -18
  178. package/src/types/sighash.ts +0 -16
  179. package/src/types/taproot.ts +0 -41
  180. package/src/types/txdata.ts +0 -85
  181. package/src/types/witness.ts +0 -42
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vbyte/btc-dev",
3
- "version": "1.1.8",
3
+ "version": "2.1.0",
4
4
  "description": "Batteries-included toolset for plebian bitcoin development",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -12,7 +12,7 @@
12
12
  "taproot"
13
13
  ],
14
14
  "author": "Christopher Scott",
15
- "license": "CC-BY-1.0",
15
+ "license": "MIT",
16
16
  "repository": {
17
17
  "type": "git",
18
18
  "url": "https://github.com/cmdruid/btc-dev.git"
@@ -24,8 +24,9 @@
24
24
  "files": [
25
25
  "README.md",
26
26
  "LICENSE",
27
+ "CHANGELOG.md",
27
28
  "dist",
28
- "src"
29
+ "docs"
29
30
  ],
30
31
  "main": "./main.cjs",
31
32
  "module": "./index.js",
@@ -33,9 +34,9 @@
33
34
  "types": "./types/index.d.ts",
34
35
  "exports": {
35
36
  ".": {
37
+ "types": "./types/index.d.ts",
36
38
  "import": "./index.js",
37
- "default": "./index.js",
38
- "types": "./index.d.ts"
39
+ "default": "./index.js"
39
40
  },
40
41
  "./address": {
41
42
  "types": "./lib/address/index.d.ts",
@@ -72,34 +73,38 @@
72
73
  },
73
74
  "scripts": {
74
75
  "build": "./scripts/build.sh",
75
- "package": "npm test | faucet && npm run build",
76
+ "check": "npx tsc --project tsconfig.json --noEmit",
77
+ "lint": "biome check src/",
78
+ "package": "npm test && npm run build",
76
79
  "release": "./scripts/release.sh",
77
80
  "scratch": "npm run script test/scratch.ts",
78
81
  "script": "tsx --tsconfig ./test/tsconfig.json",
79
82
  "test": "npm run script test/src/tape.ts"
80
83
  },
81
84
  "dependencies": {
82
- "@noble/curves": "1.9.7",
83
- "@noble/hashes": "1.8.0",
84
- "@scure/btc-signer": "1.8.1",
85
- "@vbyte/buff": "^1.0.2",
86
- "@vbyte/micro-lib": "^1.1.2",
87
- "zod": "^4.1.5"
85
+ "@scure/btc-signer": "2.0.1",
86
+ "@vbyte/buff": "^1.1.0",
87
+ "@vbyte/crypto": "^1.0.1",
88
+ "@vbyte/util": "^2.0.0",
89
+ "zod": "^4.3.6"
88
90
  },
89
91
  "devDependencies": {
92
+ "@biomejs/biome": "2.3.13",
90
93
  "@cmdcode/core-cmd": "^1.6.5",
91
- "@rollup/plugin-commonjs": "^28.0.6",
94
+ "@noble/curves": "^2.0.1",
95
+ "@noble/hashes": "^2.0.1",
96
+ "@rollup/plugin-commonjs": "^29.0.0",
92
97
  "@rollup/plugin-json": "^6.1.0",
93
- "@rollup/plugin-node-resolve": "^16.0.1",
98
+ "@rollup/plugin-node-resolve": "^16.0.3",
94
99
  "@rollup/plugin-terser": "^0.4.4",
95
- "@rollup/plugin-typescript": "^12.1.4",
96
- "@types/node": "^24.3.1",
100
+ "@rollup/plugin-typescript": "^12.3.0",
101
+ "@types/node": "^25.0.10",
97
102
  "@types/tape": "^5.8.1",
98
103
  "faucet": "^0.0.4",
99
- "rollup": "^4.50.1",
104
+ "rollup": "^4.56.0",
100
105
  "tape": "^5.9.0",
101
106
  "tslib": "^2.8.1",
102
- "tsx": "^4.20.5",
103
- "typescript": "^5.9.2"
107
+ "tsx": "^4.21.0",
108
+ "typescript": "^5.9.3"
104
109
  }
105
110
  }
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  type Literal = z.infer<typeof literal>;
3
3
  type Json = Literal | {
4
4
  [key: string]: Json;
@@ -1,28 +1,30 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  export const big = z.bigint();
3
3
  export const bool = z.boolean();
4
4
  export const date = z.date();
5
- export const num = z.number().min(Number.MIN_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER);
5
+ export const num = z
6
+ .number()
7
+ .min(Number.MIN_SAFE_INTEGER)
8
+ .max(Number.MAX_SAFE_INTEGER);
6
9
  export const int = num.int();
7
10
  export const u8a = z.instanceof(Uint8Array);
8
11
  export const str = z.string();
9
12
  export const stamp = int.min(500_000_000);
10
13
  export const any = z.any();
11
14
  export const zod = z;
12
- export const char = int.min(0).max(0xFF);
13
- export const short = int.min(0).max(0xFFFF);
14
- export const uint = int.min(0).max(0xFFFFFFFF);
15
- export const float = z.number().refine((e) => String(e).includes('.'));
15
+ export const char = int.min(0).max(0xff);
16
+ export const short = int.min(0).max(0xffff);
17
+ export const uint = int.min(0).max(0xffffffff);
18
+ export const float = z.number().refine((e) => String(e).includes("."));
16
19
  export const float2 = float.refine((e) => {
17
- const parts = String(e).split('.').at(1);
20
+ const parts = String(e).split(".").at(1);
18
21
  return parts !== undefined && parts.length <= 2;
19
22
  });
20
- export const hex = z.string()
23
+ export const hex = z
24
+ .string()
21
25
  .regex(/^[0-9a-fA-F]*$/)
22
- .refine(e => e.length % 2 === 0);
23
- export const literal = z.union([
24
- z.string(), z.number(), z.boolean(), z.null()
25
- ]);
26
+ .refine((e) => e.length % 2 === 0);
27
+ export const literal = z.union([z.string(), z.number(), z.boolean(), z.null()]);
26
28
  export const json = z.lazy(() => z.union([literal, z.array(json), z.record(str, json)]));
27
29
  export const u8a20 = u8a.refine((e) => e.length === 20);
28
30
  export const u8a32 = u8a.refine((e) => e.length === 32);
@@ -39,4 +41,6 @@ export const byte64 = z.union([hex64, u8a64]);
39
41
  export const base58 = z.string().regex(/^[1-9A-HJ-NP-Za-km-z]+$/);
40
42
  export const base64 = z.string().regex(/^[a-zA-Z0-9+/]+={0,2}$/);
41
43
  export const base64url = z.string().regex(/^[a-zA-Z0-9\-_]+={0,2}$/);
42
- export const bech32 = z.string().regex(/^[a-z]+1[023456789acdefghjklmnpqrstuvwxyz]+$/);
44
+ export const bech32 = z
45
+ .string()
46
+ .regex(/^[a-z]+1[023456789acdefghjklmnpqrstuvwxyz]+$/);
@@ -1,2 +1,2 @@
1
- export * as taproot from './taproot.js';
2
- export * as tx from './tx.js';
1
+ export * as taproot from "./taproot.js";
2
+ export * as tx from "./tx.js";
@@ -1,2 +1,2 @@
1
- export * as taproot from './taproot.js';
2
- export * as tx from './tx.js';
1
+ export * as taproot from "./taproot.js";
2
+ export * as tx from "./tx.js";
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  export declare const taptree: z.ZodUnion<readonly [z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>]>>, z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>]>]>;
3
3
  export declare const config: z.ZodObject<{
4
4
  pubkey: z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>]>;
@@ -1,5 +1,5 @@
1
- import { z } from 'zod';
2
- import { byte32, uint } from './base.js';
1
+ import { z } from "zod";
2
+ import { byte32, uint } from "./base.js";
3
3
  export const taptree = z.union([z.array(byte32), byte32]);
4
4
  export const config = z.object({
5
5
  pubkey: byte32,
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  export declare const tx_output: z.ZodObject<{
3
3
  value: z.ZodBigInt;
4
4
  script_pk: z.ZodString;
package/dist/schema/tx.js CHANGED
@@ -1,5 +1,5 @@
1
- import { z } from 'zod';
2
- import { hex, hex32, uint } from './base.js';
1
+ import { z } from "zod";
2
+ import { hex, hex32, uint } from "./base.js";
3
3
  const sats = z.bigint().min(0n).max(2100000000000000n);
4
4
  export const tx_output = z.object({
5
5
  value: sats,
@@ -12,7 +12,7 @@ export const tx_input = z.object({
12
12
  prevout: tx_output.nullable(),
13
13
  script_sig: hex.nullable(),
14
14
  sequence: uint,
15
- witness: z.array(hex)
15
+ witness: z.array(hex),
16
16
  });
17
17
  export const tx_data = z.object({
18
18
  version: uint,
@@ -21,7 +21,7 @@ export const tx_data = z.object({
21
21
  locktime: uint,
22
22
  });
23
23
  export const vout_template = tx_output.extend({
24
- value: z.union([uint, sats])
24
+ value: z.union([uint, sats]),
25
25
  });
26
26
  export const vin_template = tx_input.extend({
27
27
  coinbase: hex.nullable().optional(),