@1sat/templates 0.0.1
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/bitcom/aip.d.ts +88 -0
- package/dist/bitcom/aip.d.ts.map +1 -0
- package/dist/bitcom/aip.js +205 -0
- package/dist/bitcom/aip.js.map +1 -0
- package/dist/bitcom/b.d.ts +99 -0
- package/dist/bitcom/b.d.ts.map +1 -0
- package/dist/bitcom/b.js +206 -0
- package/dist/bitcom/b.js.map +1 -0
- package/dist/bitcom/bap.d.ts +126 -0
- package/dist/bitcom/bap.d.ts.map +1 -0
- package/dist/bitcom/bap.js +334 -0
- package/dist/bitcom/bap.js.map +1 -0
- package/dist/bitcom/bitcom.d.ts +75 -0
- package/dist/bitcom/bitcom.d.ts.map +1 -0
- package/dist/bitcom/bitcom.js +186 -0
- package/dist/bitcom/bitcom.js.map +1 -0
- package/dist/bitcom/map.d.ts +90 -0
- package/dist/bitcom/map.d.ts.map +1 -0
- package/dist/bitcom/map.js +215 -0
- package/dist/bitcom/map.js.map +1 -0
- package/dist/bitcom/sigma.d.ts +93 -0
- package/dist/bitcom/sigma.d.ts.map +1 -0
- package/dist/bitcom/sigma.js +175 -0
- package/dist/bitcom/sigma.js.map +1 -0
- package/dist/bsocial/bsocial.d.ts +152 -0
- package/dist/bsocial/bsocial.d.ts.map +1 -0
- package/dist/bsocial/bsocial.js +397 -0
- package/dist/bsocial/bsocial.js.map +1 -0
- package/dist/bsv20/bsv20.d.ts +277 -0
- package/dist/bsv20/bsv20.d.ts.map +1 -0
- package/dist/bsv20/bsv20.js +544 -0
- package/dist/bsv20/bsv20.js.map +1 -0
- package/dist/bsv21/bsv21.d.ts +231 -0
- package/dist/bsv21/bsv21.d.ts.map +1 -0
- package/dist/bsv21/bsv21.js +475 -0
- package/dist/bsv21/bsv21.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/inscription/inscription.d.ts +165 -0
- package/dist/inscription/inscription.d.ts.map +1 -0
- package/dist/inscription/inscription.js +401 -0
- package/dist/inscription/inscription.js.map +1 -0
- package/dist/lock/lock.d.ts +92 -0
- package/dist/lock/lock.d.ts.map +1 -0
- package/dist/lock/lock.js +283 -0
- package/dist/lock/lock.js.map +1 -0
- package/dist/ordlock/ordlock.d.ts +126 -0
- package/dist/ordlock/ordlock.d.ts.map +1 -0
- package/dist/ordlock/ordlock.js +316 -0
- package/dist/ordlock/ordlock.js.map +1 -0
- package/dist/signer.d.ts +39 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +54 -0
- package/dist/signer.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { BSM, BigNumber, Script, Signature, SignedMessage, Utils, } from '@bsv/sdk';
|
|
2
|
+
import { Algorithm } from 'sigma-protocol';
|
|
3
|
+
import BitCom from './bitcom.js';
|
|
4
|
+
/**
|
|
5
|
+
* SIGMA protocol identifier
|
|
6
|
+
*/
|
|
7
|
+
export const SIGMA_PREFIX = 'SIGMA';
|
|
8
|
+
/**
|
|
9
|
+
* Re-export Algorithm from sigma-protocol for consistency
|
|
10
|
+
*/
|
|
11
|
+
export { Algorithm as SigmaAlgorithm };
|
|
12
|
+
/**
|
|
13
|
+
* SIGMA (Secure Identity for Global Message Authentication) implementation
|
|
14
|
+
*
|
|
15
|
+
* SIGMA enables cryptographic signing of blockchain content by combining:
|
|
16
|
+
* - Input hash: SHA256 of the outpoint (txid + vout) from a specific input
|
|
17
|
+
* - Data hash: SHA256 of the script data before the SIGMA protocol marker
|
|
18
|
+
*
|
|
19
|
+
* Supports both BSM (Bitcoin Signed Message) and BRC-77 signing algorithms.
|
|
20
|
+
*/
|
|
21
|
+
export default class Sigma {
|
|
22
|
+
data;
|
|
23
|
+
constructor(data) {
|
|
24
|
+
this.data = data;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extract SIGMA signatures from BitCom transaction
|
|
28
|
+
*/
|
|
29
|
+
static decode(bitcom) {
|
|
30
|
+
const sigmas = [];
|
|
31
|
+
if (bitcom?.protocols?.length === 0) {
|
|
32
|
+
return sigmas;
|
|
33
|
+
}
|
|
34
|
+
for (let protoIdx = 0; protoIdx < bitcom.protocols.length; protoIdx++) {
|
|
35
|
+
const protocol = bitcom.protocols[protoIdx];
|
|
36
|
+
if (protocol.protocol === SIGMA_PREFIX) {
|
|
37
|
+
try {
|
|
38
|
+
const script = Script.fromBinary(protocol.script);
|
|
39
|
+
const chunks = script.chunks;
|
|
40
|
+
if (chunks?.length < 4) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const sigma = new Sigma({
|
|
44
|
+
bitcomIndex: protoIdx,
|
|
45
|
+
algorithm: Utils.toUTF8(chunks[0].data ?? []),
|
|
46
|
+
address: Utils.toUTF8(chunks[1].data ?? []),
|
|
47
|
+
signature: Array.from(chunks[2].data ?? []),
|
|
48
|
+
vin: Number.parseInt(Utils.toUTF8(chunks[3].data ?? []), 10),
|
|
49
|
+
valid: undefined,
|
|
50
|
+
});
|
|
51
|
+
sigmas.push(sigma);
|
|
52
|
+
}
|
|
53
|
+
catch { }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return sigmas;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Decode SIGMA signatures directly from a Script
|
|
60
|
+
*/
|
|
61
|
+
static decodeFromScript(script) {
|
|
62
|
+
const bitcom = BitCom.decode(script);
|
|
63
|
+
if (bitcom == null) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
return Sigma.decode(bitcom);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create SIGMA signature for data
|
|
70
|
+
*
|
|
71
|
+
* @param inputHash - SHA256 hash of the input outpoint
|
|
72
|
+
* @param dataHash - SHA256 hash of the script data
|
|
73
|
+
* @param privateKey - Private key for signing
|
|
74
|
+
* @param options - Additional signing options
|
|
75
|
+
*/
|
|
76
|
+
static sign(inputHash, dataHash, privateKey, options = {}) {
|
|
77
|
+
const algorithm = options.algorithm ?? Algorithm.BSM;
|
|
78
|
+
const vin = options.vin ?? 0;
|
|
79
|
+
const address = privateKey.toAddress().toString();
|
|
80
|
+
// Combine hashes to create message (same as sigma-protocol)
|
|
81
|
+
const messageHash = [...inputHash, ...dataHash];
|
|
82
|
+
let signatureArray;
|
|
83
|
+
if (algorithm === Algorithm.BRC77) {
|
|
84
|
+
// BRC-77 signing using SignedMessage
|
|
85
|
+
const brc77Sig = SignedMessage.sign(messageHash, privateKey, options.verifier);
|
|
86
|
+
signatureArray = brc77Sig;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// BSM signing
|
|
90
|
+
const sig = BSM.sign(messageHash, privateKey, 'raw');
|
|
91
|
+
const magicHashValue = BSM.magicHash(messageHash);
|
|
92
|
+
const recoveryFactor = sig.CalculateRecoveryFactor(privateKey.toPublicKey(), new BigNumber(magicHashValue));
|
|
93
|
+
const compactSig = sig.toCompact(recoveryFactor, true, 'base64');
|
|
94
|
+
signatureArray = Array.from(Utils.toArray(compactSig, 'base64'));
|
|
95
|
+
}
|
|
96
|
+
return new Sigma({
|
|
97
|
+
algorithm,
|
|
98
|
+
address,
|
|
99
|
+
signature: signatureArray,
|
|
100
|
+
vin,
|
|
101
|
+
valid: true,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Verify SIGMA signature against provided hashes
|
|
106
|
+
*
|
|
107
|
+
* @param inputHash - SHA256 hash of the input outpoint
|
|
108
|
+
* @param dataHash - SHA256 hash of the script data
|
|
109
|
+
* @param recipientPrivateKey - For BRC-77 private signatures, the recipient's key
|
|
110
|
+
*/
|
|
111
|
+
verifyWithHashes(inputHash, dataHash, recipientPrivateKey) {
|
|
112
|
+
try {
|
|
113
|
+
const messageHash = [...inputHash, ...dataHash];
|
|
114
|
+
if (this.data.algorithm === Algorithm.BRC77) {
|
|
115
|
+
// BRC-77 verification using SignedMessage
|
|
116
|
+
this.data.valid = SignedMessage.verify(messageHash, this.data.signature, recipientPrivateKey);
|
|
117
|
+
return this.data.valid;
|
|
118
|
+
}
|
|
119
|
+
// BSM verification
|
|
120
|
+
const signatureBase64 = Utils.toBase64(this.data.signature);
|
|
121
|
+
const sig = Signature.fromCompact(signatureBase64, 'base64');
|
|
122
|
+
for (let recovery = 0; recovery < 4; recovery++) {
|
|
123
|
+
try {
|
|
124
|
+
const publicKey = sig.RecoverPublicKey(recovery, new BigNumber(BSM.magicHash(messageHash)));
|
|
125
|
+
if (BSM.verify(messageHash, sig, publicKey) &&
|
|
126
|
+
publicKey.toAddress().toString() === this.data.address) {
|
|
127
|
+
this.data.valid = true;
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Try next recovery factor
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this.data.valid = false;
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
this.data.valid = false;
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Check if signature was previously verified
|
|
145
|
+
*/
|
|
146
|
+
verify() {
|
|
147
|
+
return this.data.valid === true;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Generate locking script for SIGMA within BitCom
|
|
151
|
+
*/
|
|
152
|
+
lock() {
|
|
153
|
+
const script = new Script();
|
|
154
|
+
script.writeBin(Utils.toArray(this.data.algorithm, 'utf8'));
|
|
155
|
+
script.writeBin(Utils.toArray(this.data.address, 'utf8'));
|
|
156
|
+
script.writeBin(this.data.signature);
|
|
157
|
+
script.writeBin(Utils.toArray(this.data.vin.toString(), 'utf8'));
|
|
158
|
+
const protocols = [
|
|
159
|
+
{
|
|
160
|
+
protocol: SIGMA_PREFIX,
|
|
161
|
+
script: script.toBinary(),
|
|
162
|
+
pos: 0,
|
|
163
|
+
},
|
|
164
|
+
];
|
|
165
|
+
const bitcom = new BitCom(protocols);
|
|
166
|
+
return bitcom.lock();
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Unlock method is not available for SIGMA scripts
|
|
170
|
+
*/
|
|
171
|
+
unlock() {
|
|
172
|
+
throw new Error('SIGMA signatures cannot be unlocked');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=sigma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigma.js","sourceRoot":"","sources":["../../src/bitcom/sigma.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { type LockingScript, Script, type ScriptTemplate, type Transaction, type UnlockingScript } from '@bsv/sdk';
|
|
2
|
+
import type { Signer } from '../signer.js';
|
|
3
|
+
export declare enum BSocialActionType {
|
|
4
|
+
POST = "post",
|
|
5
|
+
LIKE = "like",
|
|
6
|
+
UNLIKE = "unlike",
|
|
7
|
+
FOLLOW = "follow",
|
|
8
|
+
UNFOLLOW = "unfollow",
|
|
9
|
+
MESSAGE = "message",
|
|
10
|
+
VIDEO = "video"
|
|
11
|
+
}
|
|
12
|
+
export declare enum BSocialContext {
|
|
13
|
+
TX = "tx",
|
|
14
|
+
CHANNEL = "channel",
|
|
15
|
+
BAP_ID = "bapID",
|
|
16
|
+
PROVIDER = "provider",
|
|
17
|
+
VIDEO_ID = "videoID",
|
|
18
|
+
GEOHASH = "geohash",
|
|
19
|
+
BTC_TX = "btcTx",
|
|
20
|
+
ETH_TX = "ethTx"
|
|
21
|
+
}
|
|
22
|
+
export interface BSocialAction {
|
|
23
|
+
app: string;
|
|
24
|
+
type: BSocialActionType;
|
|
25
|
+
context?: BSocialContext;
|
|
26
|
+
contextValue?: string;
|
|
27
|
+
subcontext?: BSocialContext;
|
|
28
|
+
subcontextValue?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface BSocialPost extends BSocialAction {
|
|
31
|
+
content: string;
|
|
32
|
+
mediaType?: string;
|
|
33
|
+
encoding?: string;
|
|
34
|
+
filename?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface BSocialLike extends BSocialAction {
|
|
37
|
+
txid: string;
|
|
38
|
+
}
|
|
39
|
+
export interface BSocialFollow extends BSocialAction {
|
|
40
|
+
bapId: string;
|
|
41
|
+
}
|
|
42
|
+
export interface BSocialMessage extends BSocialAction {
|
|
43
|
+
content: string;
|
|
44
|
+
mediaType?: string;
|
|
45
|
+
encoding?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface BSocialVideo extends BSocialAction {
|
|
48
|
+
provider: string;
|
|
49
|
+
videoID: string;
|
|
50
|
+
duration?: number;
|
|
51
|
+
start?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface BSocialDecoded {
|
|
54
|
+
action: BSocialAction;
|
|
55
|
+
content?: string;
|
|
56
|
+
attachments?: unknown[];
|
|
57
|
+
tags?: string[][];
|
|
58
|
+
aip?: unknown;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* BSocial class implementing ScriptTemplate.
|
|
62
|
+
*
|
|
63
|
+
* This class provides methods to create BSocial protocol transactions for social media
|
|
64
|
+
* actions like posts, likes, follows, etc. following BitcoinSchema.org standards.
|
|
65
|
+
*/
|
|
66
|
+
export default class BSocial implements ScriptTemplate {
|
|
67
|
+
private readonly action;
|
|
68
|
+
private readonly content?;
|
|
69
|
+
private readonly tags?;
|
|
70
|
+
private readonly signer?;
|
|
71
|
+
constructor(action: BSocialAction, content?: string, tags?: string[], signer?: Signer);
|
|
72
|
+
/**
|
|
73
|
+
* Creates a BSocial locking script for various social actions
|
|
74
|
+
*
|
|
75
|
+
* @returns A locking script for the BSocial action
|
|
76
|
+
*/
|
|
77
|
+
lock(): Promise<LockingScript>;
|
|
78
|
+
/**
|
|
79
|
+
* Unlock method is not available for BSocial scripts, throws exception.
|
|
80
|
+
*/
|
|
81
|
+
unlock(): {
|
|
82
|
+
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
83
|
+
estimateLength: () => Promise<number>;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Creates a post transaction
|
|
87
|
+
*
|
|
88
|
+
* @param post The post data
|
|
89
|
+
* @param tags Optional tags for the post
|
|
90
|
+
* @param signer Optional private key for AIP signature
|
|
91
|
+
* @returns A locking script for the post
|
|
92
|
+
*/
|
|
93
|
+
static createPost(post: BSocialPost, tags?: string[], signer?: Signer): Promise<LockingScript>;
|
|
94
|
+
/**
|
|
95
|
+
* Creates a like transaction
|
|
96
|
+
*
|
|
97
|
+
* @param like The like data
|
|
98
|
+
* @param signer Optional private key for AIP signature
|
|
99
|
+
* @returns A locking script for the like
|
|
100
|
+
*/
|
|
101
|
+
static createLike(like: BSocialLike, signer?: Signer): Promise<LockingScript>;
|
|
102
|
+
/**
|
|
103
|
+
* Creates a follow transaction
|
|
104
|
+
*
|
|
105
|
+
* @param follow The follow data
|
|
106
|
+
* @param signer Optional private key for AIP signature
|
|
107
|
+
* @returns A locking script for the follow
|
|
108
|
+
*/
|
|
109
|
+
static createFollow(follow: BSocialFollow, signer?: Signer): Promise<LockingScript>;
|
|
110
|
+
/**
|
|
111
|
+
* Decodes a BSocial transaction script
|
|
112
|
+
*
|
|
113
|
+
* @param script The script to decode
|
|
114
|
+
* @returns Decoded BSocial data
|
|
115
|
+
*/
|
|
116
|
+
static decode(script: Script): BSocialDecoded | null;
|
|
117
|
+
/**
|
|
118
|
+
* Signs data with AIP protocol
|
|
119
|
+
*
|
|
120
|
+
* @param privateKey The private key to sign with
|
|
121
|
+
* @param message The message to sign
|
|
122
|
+
* @returns Base64 encoded signature
|
|
123
|
+
*/
|
|
124
|
+
static signAIP(signer: Signer, message: string): Promise<string>;
|
|
125
|
+
/**
|
|
126
|
+
* Creates a reply transaction
|
|
127
|
+
*
|
|
128
|
+
* @param reply The reply data
|
|
129
|
+
* @param replyTxId The transaction ID being replied to
|
|
130
|
+
* @param tags Optional tags for the reply
|
|
131
|
+
* @param signer Optional private key for AIP signature
|
|
132
|
+
* @returns A locking script for the reply
|
|
133
|
+
*/
|
|
134
|
+
static createReply(reply: BSocialPost, replyTxId: string, tags?: string[], signer?: Signer): Promise<LockingScript>;
|
|
135
|
+
/**
|
|
136
|
+
* Creates a message transaction
|
|
137
|
+
*
|
|
138
|
+
* @param message The message data
|
|
139
|
+
* @param signer Optional private key for AIP signature
|
|
140
|
+
* @returns A locking script for the message
|
|
141
|
+
*/
|
|
142
|
+
static createMessage(message: BSocialMessage, signer?: Signer): Promise<LockingScript>;
|
|
143
|
+
/**
|
|
144
|
+
* Creates a video transaction
|
|
145
|
+
*
|
|
146
|
+
* @param video The video data including provider and videoID
|
|
147
|
+
* @param signer Optional private key for AIP signature
|
|
148
|
+
* @returns A locking script for the video
|
|
149
|
+
*/
|
|
150
|
+
static createVideo(video: BSocialVideo, signer?: Signer): Promise<LockingScript>;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=bsocial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsocial.d.ts","sourceRoot":"","sources":["../../src/bsocial/bsocial.ts"],"names":[],"mappings":"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"}
|