gitmark 0.0.72 → 0.0.73
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/.claude/settings.local.json +2 -1
- package/README.md +2 -2
- package/bin/git-mark.js +7 -7
- package/index.html +10 -1
- package/og-image.png +0 -0
- package/og-image.svg +8 -0
- package/package.json +1 -1
- package/test/git-mark.test.js +3 -3
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ The chain of addresses on Bitcoin mirrors the chain of commits in git. Anyone ca
|
|
|
60
60
|
{
|
|
61
61
|
"version": "0.0.3",
|
|
62
62
|
"profile": "gitmark",
|
|
63
|
-
"
|
|
63
|
+
"pubkeyBase": "02abc...",
|
|
64
64
|
"chain": "tbtc4",
|
|
65
65
|
"states": ["a1b2c3", "e5f6a7"],
|
|
66
66
|
"txo": [
|
|
@@ -70,7 +70,7 @@ The chain of addresses on Bitcoin mirrors the chain of commits in git. Anyone ca
|
|
|
70
70
|
}
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
- **
|
|
73
|
+
- **pubkeyBase** — compressed pubkey (02/03 prefix), base for BIP-341 key chaining
|
|
74
74
|
- **states** — commit hashes (input to key derivation)
|
|
75
75
|
- **txo** — Bitcoin anchors (TXO URIs, self-contained and verifiable)
|
|
76
76
|
|
package/bin/git-mark.js
CHANGED
|
@@ -297,7 +297,7 @@ async function cmdInit(args) {
|
|
|
297
297
|
'@type': 'Blocktrail',
|
|
298
298
|
version: '0.0.3',
|
|
299
299
|
profile: 'gitmark',
|
|
300
|
-
|
|
300
|
+
pubkeyBase: pubkey,
|
|
301
301
|
chain,
|
|
302
302
|
states: [],
|
|
303
303
|
txo: []
|
|
@@ -376,7 +376,7 @@ async function cmdMark(args) {
|
|
|
376
376
|
: hexToBytes(privkey);
|
|
377
377
|
|
|
378
378
|
// Derive next address (chained through all states including current)
|
|
379
|
-
const nextPub = deriveChainedPubkey(hexToBytes(trail.
|
|
379
|
+
const nextPub = deriveChainedPubkey(hexToBytes(trail.pubkeyBase), allStates);
|
|
380
380
|
const nextXonly = nextPub.slice(1);
|
|
381
381
|
const nextScript = p2trScript(nextXonly);
|
|
382
382
|
|
|
@@ -411,7 +411,7 @@ async function cmdMark(args) {
|
|
|
411
411
|
saveTrail(trail);
|
|
412
412
|
}
|
|
413
413
|
|
|
414
|
-
const address = pubkeyToAddress(trail.
|
|
414
|
+
const address = pubkeyToAddress(trail.pubkeyBase, allStates, chain);
|
|
415
415
|
console.log(`Marked: ${head.slice(0, 8)} → ${newTxid.slice(0, 16)}...`);
|
|
416
416
|
console.log(`Address: ${address}`);
|
|
417
417
|
console.log(`Balance: ${outputAmount} sats`);
|
|
@@ -426,11 +426,11 @@ async function cmdInfo() {
|
|
|
426
426
|
console.log(`Profile: ${trail.profile}`);
|
|
427
427
|
console.log(`Version: ${trail.version}`);
|
|
428
428
|
console.log(`Chain: ${trail.chain}`);
|
|
429
|
-
console.log(`Base public key: ${trail.
|
|
430
|
-
console.log(`Base address: ${pubkeyToAddress(trail.
|
|
429
|
+
console.log(`Base public key: ${trail.pubkeyBase}`);
|
|
430
|
+
console.log(`Base address: ${pubkeyToAddress(trail.pubkeyBase, [], trail.chain)}`);
|
|
431
431
|
console.log(`Marks: ${trail.states.length}`);
|
|
432
432
|
if (trail.states.length > 0) {
|
|
433
|
-
const currentAddr = pubkeyToAddress(trail.
|
|
433
|
+
const currentAddr = pubkeyToAddress(trail.pubkeyBase, trail.states, trail.chain);
|
|
434
434
|
console.log(`Current address: ${currentAddr}`);
|
|
435
435
|
console.log(`Last commit: ${trail.states[trail.states.length - 1]}`);
|
|
436
436
|
console.log(`Last TXO: ${trail.txo[trail.txo.length - 1]}`);
|
|
@@ -455,7 +455,7 @@ async function cmdVerify() {
|
|
|
455
455
|
|
|
456
456
|
for (let i = 0; i < trail.states.length; i++) {
|
|
457
457
|
const statesUpTo = trail.states.slice(0, i + 1);
|
|
458
|
-
const expectedAddr = pubkeyToAddress(trail.
|
|
458
|
+
const expectedAddr = pubkeyToAddress(trail.pubkeyBase, statesUpTo, trail.chain);
|
|
459
459
|
const txoUri = trail.txo[i];
|
|
460
460
|
const parsed = parseTxoUri(txoUri);
|
|
461
461
|
|
package/index.html
CHANGED
|
@@ -9,6 +9,13 @@
|
|
|
9
9
|
<meta property="og:description" content="Mark your git commits on Bitcoin using blocktrails key chaining. Tamper-proof history, globally verifiable.">
|
|
10
10
|
<meta property="og:type" content="website">
|
|
11
11
|
<meta property="og:url" content="https://git-mark.com">
|
|
12
|
+
<meta property="og:image" content="https://git-mark.com/og-image.png">
|
|
13
|
+
<meta property="og:image:width" content="1200">
|
|
14
|
+
<meta property="og:image:height" content="630">
|
|
15
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
16
|
+
<meta name="twitter:title" content="git mark — Anchor Git Commits to Bitcoin">
|
|
17
|
+
<meta name="twitter:description" content="Mark your git commits on Bitcoin using blocktrails key chaining. Tamper-proof history, globally verifiable.">
|
|
18
|
+
<meta name="twitter:image" content="https://git-mark.com/og-image.png">
|
|
12
19
|
<style>
|
|
13
20
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
14
21
|
body { font-family: Georgia, 'Times New Roman', serif; background: #fafaf8; color: #2c2c2c; line-height: 1.7; padding: 2rem; }
|
|
@@ -89,7 +96,7 @@ git mark info</pre>
|
|
|
89
96
|
<pre>{
|
|
90
97
|
"version": "0.0.3",
|
|
91
98
|
"profile": "gitmark",
|
|
92
|
-
"
|
|
99
|
+
"pubkeyBase": "02abc...",
|
|
93
100
|
"chain": "tbtc4",
|
|
94
101
|
"states": ["a1b2c3...", "e5f6a7..."],
|
|
95
102
|
"txo": [
|
|
@@ -122,6 +129,8 @@ git mark info</pre>
|
|
|
122
129
|
<tr><td><code>git mark</code></td><td>Anchor HEAD commit to Bitcoin</td></tr>
|
|
123
130
|
<tr><td><code>git mark info</code></td><td>Show trail state, balance, addresses</td></tr>
|
|
124
131
|
<tr><td><code>git mark verify</code></td><td>Verify all marks against Bitcoin</td></tr>
|
|
132
|
+
<tr><td><code>git mark update</code></td><td>Update blocktrails.json from git notes</td></tr>
|
|
133
|
+
<tr><td><code>git mark --version</code></td><td>Show version</td></tr>
|
|
125
134
|
</table>
|
|
126
135
|
|
|
127
136
|
<h2>Related</h2>
|
package/og-image.png
ADDED
|
Binary file
|
package/og-image.svg
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630">
|
|
2
|
+
<rect width="1200" height="630" fill="#1a1a2e"/>
|
|
3
|
+
<rect x="0" y="0" width="1200" height="4" fill="#f7931a"/>
|
|
4
|
+
<text x="600" y="240" text-anchor="middle" font-family="Georgia, serif" font-size="96" font-weight="bold" fill="#f7931a">git mark</text>
|
|
5
|
+
<text x="600" y="320" text-anchor="middle" font-family="Georgia, serif" font-size="36" fill="#cccccc">Anchor Git Commits to Bitcoin</text>
|
|
6
|
+
<text x="600" y="400" text-anchor="middle" font-family="'SFMono-Regular', Consolas, monospace" font-size="22" fill="#888888">Tamper-proof history via BIP-341 key chaining</text>
|
|
7
|
+
<text x="600" y="540" text-anchor="middle" font-family="Georgia, serif" font-size="24" fill="#666666">git-mark.com</text>
|
|
8
|
+
</svg>
|
package/package.json
CHANGED
package/test/git-mark.test.js
CHANGED
|
@@ -167,7 +167,7 @@ describe('Trail format', () => {
|
|
|
167
167
|
const trail = {
|
|
168
168
|
version: '0.0.3',
|
|
169
169
|
profile: 'gitmark',
|
|
170
|
-
|
|
170
|
+
pubkeyBase: pubkey,
|
|
171
171
|
chain: 'tbtc4',
|
|
172
172
|
states: [],
|
|
173
173
|
txo: []
|
|
@@ -175,8 +175,8 @@ describe('Trail format', () => {
|
|
|
175
175
|
|
|
176
176
|
assert.strictEqual(trail.version, '0.0.3');
|
|
177
177
|
assert.strictEqual(trail.profile, 'gitmark');
|
|
178
|
-
assert.strictEqual(trail.
|
|
179
|
-
assert.ok(trail.
|
|
178
|
+
assert.strictEqual(trail.pubkeyBase.length, 66); // compressed hex
|
|
179
|
+
assert.ok(trail.pubkeyBase.startsWith('02') || trail.pubkeyBase.startsWith('03'));
|
|
180
180
|
assert.ok(Array.isArray(trail.states));
|
|
181
181
|
assert.ok(Array.isArray(trail.txo));
|
|
182
182
|
});
|