@bitgo-beta/sdk-coin-sol 7.6.4-beta.708 → 7.6.4-beta.709
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/src/lib/serialization/codecs/v1/message.d.ts +10 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -1
- package/dist/cjs/src/lib/serialization/codecs/v1/message.js +129 -1
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
- package/dist/cjs/src/sol.d.ts.map +1 -1
- package/dist/cjs/src/sol.js +22 -2
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
- package/dist/cjs/test/unit/sol.js +77 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts +10 -0
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -1
- package/dist/esm/lib/serialization/codecs/v1/message.js +129 -2
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
- package/dist/esm/sol.d.ts.map +1 -1
- package/dist/esm/sol.js +22 -2
- package/package.json +7 -7
|
@@ -14,4 +14,14 @@ export declare function encodeV1Message(args: {
|
|
|
14
14
|
compiledInstructions: CompiledInstruction[];
|
|
15
15
|
}): Uint8Array;
|
|
16
16
|
export { encodeConfigMaskAndValues };
|
|
17
|
+
export type V1DecodedMessage = {
|
|
18
|
+
header: V1MessageHeader;
|
|
19
|
+
configMask: number;
|
|
20
|
+
configValues: ConfigValue[];
|
|
21
|
+
blockhash: string;
|
|
22
|
+
staticAccounts: string[];
|
|
23
|
+
compiledInstructions: CompiledInstruction[];
|
|
24
|
+
byteLength: number;
|
|
25
|
+
};
|
|
26
|
+
export declare function decodeV1Message(bytes: Uint8Array): V1DecodedMessage;
|
|
17
27
|
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/serialization/codecs/v1/message.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/serialization/codecs/v1/message.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,WAAW,EAKZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAsB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAuBxE,MAAM,MAAM,eAAe,GAAG;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,MAAM,CAAC;IAClC,4BAA4B,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C,GAAG,UAAU,CA+Bb;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAUrC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAyBF,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAwGnE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import bs58 from 'bs58';
|
|
2
2
|
import { PublicKey } from '@solana/web3.js';
|
|
3
3
|
import { BuildTransactionError } from '@bitgo-beta/sdk-core';
|
|
4
|
-
import { encodeConfigMaskAndValues } from './config';
|
|
4
|
+
import { encodeConfigMaskAndValues, PRIORITY_FEE_BITS, COMPUTE_UNIT_LIMIT_BIT, LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT, HEAP_SIZE_BIT, } from './config';
|
|
5
5
|
import { encodeInstructions } from './instruction';
|
|
6
6
|
/**
|
|
7
7
|
* v1 (SIMD-0296/0385) transaction message wire encoder.
|
|
@@ -58,4 +58,131 @@ export function encodeV1Message(args) {
|
|
|
58
58
|
return new Uint8Array(buf);
|
|
59
59
|
}
|
|
60
60
|
export { encodeConfigMaskAndValues };
|
|
61
|
-
|
|
61
|
+
const V1_VERSION_PREFIX = 0x81;
|
|
62
|
+
const KNOWN_CONFIG_MASK = PRIORITY_FEE_BITS | COMPUTE_UNIT_LIMIT_BIT | LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT | HEAP_SIZE_BIT;
|
|
63
|
+
const MAX_ACCOUNTS = 64;
|
|
64
|
+
const MAX_INSTRUCTIONS = 64;
|
|
65
|
+
const MAX_ACCOUNTS_PER_INSTRUCTION = 255;
|
|
66
|
+
const STATIC_ACCOUNT_BYTES = 32;
|
|
67
|
+
function readU8(b, o) {
|
|
68
|
+
return b[o];
|
|
69
|
+
}
|
|
70
|
+
function readU16LE(b, o) {
|
|
71
|
+
return b[o] | (b[o + 1] << 8);
|
|
72
|
+
}
|
|
73
|
+
function readU32LE(b, o) {
|
|
74
|
+
return (b[o] | (b[o + 1] << 8) | (b[o + 2] << 16) | (b[o + 3] << 24)) >>> 0;
|
|
75
|
+
}
|
|
76
|
+
function readU64LE(b, o) {
|
|
77
|
+
let v = 0n;
|
|
78
|
+
for (let i = 0; i < 8; i++) {
|
|
79
|
+
v |= BigInt(b[o + i]) << BigInt(8 * i);
|
|
80
|
+
}
|
|
81
|
+
return v;
|
|
82
|
+
}
|
|
83
|
+
function ensureAvailable(b, off, size) {
|
|
84
|
+
if (off + size > b.length) {
|
|
85
|
+
throw new BuildTransactionError('Invalid v1 message: truncated');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function decodeV1Message(bytes) {
|
|
89
|
+
if (!bytes || bytes.length < 42) {
|
|
90
|
+
throw new BuildTransactionError('Invalid v1 message: too short');
|
|
91
|
+
}
|
|
92
|
+
let off = 0;
|
|
93
|
+
if (bytes[off++] !== V1_VERSION_PREFIX) {
|
|
94
|
+
throw new BuildTransactionError(`Invalid v1 version prefix: 0x${bytes[0].toString(16)}`);
|
|
95
|
+
}
|
|
96
|
+
const numSignerAccounts = readU8(bytes, off++);
|
|
97
|
+
const numReadonlySignerAccounts = readU8(bytes, off++);
|
|
98
|
+
const numReadonlyNonSignerAccounts = readU8(bytes, off++);
|
|
99
|
+
const configMask = readU32LE(bytes, off);
|
|
100
|
+
off += 4;
|
|
101
|
+
if ((configMask & ~KNOWN_CONFIG_MASK) !== 0) {
|
|
102
|
+
throw new BuildTransactionError(`Unknown config mask bits: ${(configMask & ~KNOWN_CONFIG_MASK).toString(2)}`);
|
|
103
|
+
}
|
|
104
|
+
const blockhash = bs58.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES));
|
|
105
|
+
off += STATIC_ACCOUNT_BYTES;
|
|
106
|
+
const numInstructions = readU8(bytes, off++);
|
|
107
|
+
const numStaticAccounts = readU8(bytes, off++);
|
|
108
|
+
if (numStaticAccounts > MAX_ACCOUNTS) {
|
|
109
|
+
throw new BuildTransactionError('Invalid v1 message: too many static accounts');
|
|
110
|
+
}
|
|
111
|
+
if (numInstructions > MAX_INSTRUCTIONS) {
|
|
112
|
+
throw new BuildTransactionError('Invalid v1 message: too many instructions');
|
|
113
|
+
}
|
|
114
|
+
if (numReadonlySignerAccounts > numSignerAccounts) {
|
|
115
|
+
throw new BuildTransactionError('Invalid v1 header: readonly signers exceed signers');
|
|
116
|
+
}
|
|
117
|
+
if (numSignerAccounts + numReadonlyNonSignerAccounts > numStaticAccounts) {
|
|
118
|
+
throw new BuildTransactionError('Invalid v1 header: signers + readonly non-signers exceed static accounts');
|
|
119
|
+
}
|
|
120
|
+
const staticAccounts = [];
|
|
121
|
+
for (let i = 0; i < numStaticAccounts; i++) {
|
|
122
|
+
ensureAvailable(bytes, off, STATIC_ACCOUNT_BYTES);
|
|
123
|
+
staticAccounts.push(bs58.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES)));
|
|
124
|
+
off += STATIC_ACCOUNT_BYTES;
|
|
125
|
+
}
|
|
126
|
+
const configValues = [];
|
|
127
|
+
if (configMask & PRIORITY_FEE_BITS) {
|
|
128
|
+
ensureAvailable(bytes, off, 8);
|
|
129
|
+
configValues.push({ kind: 'u64', value: readU64LE(bytes, off) });
|
|
130
|
+
off += 8;
|
|
131
|
+
}
|
|
132
|
+
if (configMask & COMPUTE_UNIT_LIMIT_BIT) {
|
|
133
|
+
ensureAvailable(bytes, off, 4);
|
|
134
|
+
configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
|
|
135
|
+
off += 4;
|
|
136
|
+
}
|
|
137
|
+
if (configMask & LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT) {
|
|
138
|
+
ensureAvailable(bytes, off, 4);
|
|
139
|
+
configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
|
|
140
|
+
off += 4;
|
|
141
|
+
}
|
|
142
|
+
if (configMask & HEAP_SIZE_BIT) {
|
|
143
|
+
ensureAvailable(bytes, off, 4);
|
|
144
|
+
configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
|
|
145
|
+
off += 4;
|
|
146
|
+
}
|
|
147
|
+
const headers = [];
|
|
148
|
+
for (let i = 0; i < numInstructions; i++) {
|
|
149
|
+
ensureAvailable(bytes, off, 4);
|
|
150
|
+
const programAddressIndex = readU8(bytes, off++);
|
|
151
|
+
const accountCount = readU8(bytes, off++);
|
|
152
|
+
const dataLength = readU16LE(bytes, off);
|
|
153
|
+
off += 2;
|
|
154
|
+
if (programAddressIndex >= numStaticAccounts) {
|
|
155
|
+
throw new BuildTransactionError('Invalid v1 instruction: program index out of range');
|
|
156
|
+
}
|
|
157
|
+
if (accountCount > MAX_ACCOUNTS_PER_INSTRUCTION) {
|
|
158
|
+
throw new BuildTransactionError('Invalid v1 instruction: too many accounts');
|
|
159
|
+
}
|
|
160
|
+
headers.push({ programAddressIndex, accountCount, dataLength });
|
|
161
|
+
}
|
|
162
|
+
const compiledInstructions = [];
|
|
163
|
+
for (const h of headers) {
|
|
164
|
+
ensureAvailable(bytes, off, h.accountCount);
|
|
165
|
+
const accountIndices = [];
|
|
166
|
+
for (let i = 0; i < h.accountCount; i++) {
|
|
167
|
+
const idx = readU8(bytes, off++);
|
|
168
|
+
if (idx >= numStaticAccounts) {
|
|
169
|
+
throw new BuildTransactionError('Invalid v1 instruction: account index out of range');
|
|
170
|
+
}
|
|
171
|
+
accountIndices.push(idx);
|
|
172
|
+
}
|
|
173
|
+
ensureAvailable(bytes, off, h.dataLength);
|
|
174
|
+
const data = bytes.slice(off, off + h.dataLength);
|
|
175
|
+
off += h.dataLength;
|
|
176
|
+
compiledInstructions.push({ programAddressIndex: h.programAddressIndex, accountIndices, data });
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
header: { numSignerAccounts, numReadonlySignerAccounts, numReadonlyNonSignerAccounts },
|
|
180
|
+
configMask,
|
|
181
|
+
configValues,
|
|
182
|
+
blockhash,
|
|
183
|
+
staticAccounts,
|
|
184
|
+
compiledInstructions,
|
|
185
|
+
byteLength: off,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9jb2RlY3MvdjEvbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFDTCx5QkFBeUIsRUFFekIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixtQ0FBbUMsRUFDbkMsYUFBYSxHQUNkLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFeEU7Ozs7Ozs7R0FPRztBQUVILFNBQVMsTUFBTSxDQUFDLEdBQWEsRUFBRSxDQUFTO0lBQ3RDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFDRCxTQUFTLFNBQVMsQ0FBQyxHQUFhLEVBQUUsQ0FBUztJQUN6QyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBQ0QsU0FBUyxTQUFTLENBQUMsR0FBYSxFQUFFLENBQVM7SUFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0s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Q3hGLENBQUM7WUFDRCxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNwQixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRTtRQUN0RixVQUFVO1FBQ1YsWUFBWTtRQUNaLFNBQVM7UUFDVCxjQUFjO1FBQ2Qsb0JBQW9CO1FBQ3BCLFVBQVUsRUFBRSxHQUFHO0tBQ2hCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJzNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgeyBQdWJsaWNLZXkgfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyxcbiAgQ29uZmlnVmFsdWUsXG4gIFBSSU9SSVRZX0ZFRV9CSVRTLFxuICBDT01QVVRFX1VOSVRfTElNSVRfQklULFxuICBMT0FERURfQUNDT1VOVFNfREFUQV9TSVpFX0xJTUlUX0JJVCxcbiAgSEVBUF9TSVpFX0JJVCxcbn0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgZW5jb2RlSW5zdHJ1Y3Rpb25zLCBDb21waWxlZEluc3RydWN0aW9uIH0gZnJvbSAnLi9pbnN0cnVjdGlvbic7XG5cbi8qKlxuICogdjEgKFNJTUQtMDI5Ni8wMzg1KSB0cmFuc2FjdGlvbiBtZXNzYWdlIHdpcmUgZW5jb2Rlci5cbiAqXG4gKiBMYXlvdXQ6IFt2ZXJzaW9uOiAweDgxXVtoZWFkZXI6IDMgeCB1OF1bY29uZmlnTWFzazogdTMyIExFXVtibG9ja2hhc2g6IDMyXVxuICogICBbbnVtSW5zdHJ1Y3Rpb25zOiB1OF1bbnVtU3RhdGljQWNjb3VudHM6IHU4XVxuICogICBbc3RhdGljQWNjb3VudHM6IDMyIHggbl1bY29uZmlnVmFsdWVzOiBwZXIgbWFza11cbiAqICAgW2luc3RydWN0aW9uSGVhZGVyczogNCB4IG5dW2luc3RydWN0aW9uUGF5bG9hZHM6IHBlciBpbnN0cnVjdGlvbl1cbiAqL1xuXG5mdW5jdGlvbiBwdXNoVTgoYnVmOiBudW1iZXJbXSwgdjogbnVtYmVyKSB7XG4gIGJ1Zi5wdXNoKHYgJiAweGZmKTtcbn1cbmZ1bmN0aW9uIHB1c2hVMzJMRShidWY6IG51bWJlcltdLCB2OiBudW1iZXIpIHtcbiAgYnVmLnB1c2godiAmIDB4ZmYsICh2ID4+PiA4KSAmIDB4ZmYsICh2ID4+PiAxNikgJiAweGZmLCAodiA+Pj4gMjQpICYgMHhmZik7XG59XG5mdW5jdGlvbiBwdXNoVTY0TEUoYnVmOiBudW1iZXJbXSwgdjogYmlnaW50KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgYnVmLnB1c2goTnVtYmVyKCh2ID4+IEJpZ0ludCg4ICogaSkpICYgMHhmZm4pKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBWMU1lc3NhZ2VIZWFkZXIgPSB7XG4gIG51bVNpZ25lckFjY291bnRzOiBudW1iZXI7XG4gIG51bVJlYWRvbmx5U2lnbmVyQWNjb3VudHM6IG51bWJlcjtcbiAgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50czogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVYxTWVzc2FnZShhcmdzOiB7XG4gIGhlYWRlcjogVjFNZXNzYWdlSGVhZGVyO1xuICBjb25maWdNYXNrOiBudW1iZXI7XG4gIGNvbmZpZ1ZhbHVlczogQ29uZmlnVmFsdWVbXTtcbiAgYmxvY2toYXNoOiBzdHJpbmc7XG4gIHN0YXRpY0FjY291bnRzOiBzdHJpbmdbXTtcbiAgY29tcGlsZWRJbnN0cnVjdGlvbnM6IENvbXBpbGVkSW5zdHJ1Y3Rpb25bXTtcbn0pOiBVaW50OEFycmF5IHtcbiAgY29uc3QgeyBoZWFkZXIsIGNvbmZpZ01hc2ssIGNvbmZpZ1ZhbHVlcywgYmxvY2toYXNoLCBzdGF0aWNBY2NvdW50cywgY29tcGlsZWRJbnN0cnVjdGlvbnMgfSA9IGFyZ3M7XG5cbiAgbGV0IGJsb2NraGFzaEJ5dGVzOiBVaW50OEFycmF5O1xuICB0cnkge1xuICAgIGJsb2NraGFzaEJ5dGVzID0gYnM1OC5kZWNvZGUoYmxvY2toYXNoKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByZWNlbnQgYmxvY2toYXNoJyk7XG4gIH1cbiAgaWYgKGJsb2NraGFzaEJ5dGVzLmxlbmd0aCAhPT0gMzIpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJlY2VudCBibG9ja2hhc2gnKTtcbiAgfVxuXG4gIGNvbnN0IGJ1ZjogbnVtYmVyW10gPSBbXTtcbiAgcHVzaFU4KGJ1ZiwgMHg4MSk7IC8vIHZlcnNpb25cbiAgcHVzaFU4KGJ1ZiwgaGVhZGVyLm51bVNpZ25lckFjY291bnRzKTtcbiAgcHVzaFU4KGJ1ZiwgaGVhZGVyLm51bVJlYWRvbmx5U2lnbmVyQWNjb3VudHMpO1xuICBwdXNoVTgoYnVmLCBoZWFkZXIubnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cyk7XG4gIHB1c2hVMzJMRShidWYsIGNvbmZpZ01hc2spO1xuICBmb3IgKGNvbnN0IGIgb2YgYmxvY2toYXNoQnl0ZXMpIHB1c2hVOChidWYsIGIpO1xuICBwdXNoVTgoYnVmLCBjb21waWxlZEluc3RydWN0aW9ucy5sZW5ndGgpO1xuICBwdXNoVTgoYnVmLCBzdGF0aWNBY2NvdW50cy5sZW5ndGgpO1xuICBmb3IgKGNvbnN0IGFjY291bnQgb2Ygc3RhdGljQWNjb3VudHMpIHtcbiAgICBmb3IgKGNvbnN0IGIgb2YgbmV3IFB1YmxpY0tleShhY2NvdW50KS50b0J5dGVzKCkpIHB1c2hVOChidWYsIGIpO1xuICB9XG4gIGZvciAoY29uc3QgdmFsdWUgb2YgY29uZmlnVmFsdWVzKSB7XG4gICAgaWYgKHZhbHVlLmtpbmQgPT09ICd1NjQnKSBwdXNoVTY0TEUoYnVmLCB2YWx1ZS52YWx1ZSBhcyBiaWdpbnQpO1xuICAgIGVsc2UgcHVzaFUzMkxFKGJ1ZiwgdmFsdWUudmFsdWUgYXMgbnVtYmVyKTtcbiAgfVxuICBlbmNvZGVJbnN0cnVjdGlvbnMoYnVmLCBjb21waWxlZEluc3RydWN0aW9ucyk7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShidWYpO1xufVxuXG5leHBvcnQgeyBlbmNvZGVDb25maWdNYXNrQW5kVmFsdWVzIH07XG5cbmNvbnN0IFYxX1ZFUlNJT05fUFJFRklYID0gMHg4MTtcbmNvbnN0IEtOT1dOX0NPTkZJR19NQVNLID1cbiAgUFJJT1JJVFlfRkVFX0JJVFMgfCBDT01QVVRFX1VOSVRfTElNSVRfQklUIHwgTE9BREVEX0FDQ09VTlRTX0RBVEFfU0laRV9MSU1JVF9CSVQgfCBIRUFQX1NJWkVfQklUO1xuY29uc3QgTUFYX0FDQ09VTlRTID0gNjQ7XG5jb25zdCBNQVhfSU5TVFJVQ1RJT05TID0gNjQ7XG5jb25zdCBNQVhfQUNDT1VOVFNfUEVSX0lOU1RSVUNUSU9OID0gMjU1O1xuY29uc3QgU1RBVElDX0FDQ09VTlRfQllURVMgPSAzMjtcblxuZXhwb3J0IHR5cGUgVjFEZWNvZGVkTWVzc2FnZSA9IHtcbiAgaGVhZGVyOiBWMU1lc3NhZ2VIZWFkZXI7XG4gIGNvbmZpZ01hc2s6IG51bWJlcjtcbiAgY29uZmlnVmFsdWVzOiBDb25maWdWYWx1ZVtdO1xuICBibG9ja2hhc2g6IHN0cmluZztcbiAgc3RhdGljQWNjb3VudHM6IHN0cmluZ1tdO1xuICBjb21waWxlZEluc3RydWN0aW9uczogQ29tcGlsZWRJbnN0cnVjdGlvbltdO1xuICBieXRlTGVuZ3RoOiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiByZWFkVTgoYjogVWludDhBcnJheSwgbzogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGJbb107XG59XG5mdW5jdGlvbiByZWFkVTE2TEUoYjogVWludDhBcnJheSwgbzogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGJbb10gfCAoYltvICsgMV0gPDwgOCk7XG59XG5mdW5jdGlvbiByZWFkVTMyTEUoYjogVWludDhBcnJheSwgbzogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIChiW29dIHwgKGJbbyArIDFdIDw8IDgpIHwgKGJbbyArIDJdIDw8IDE2KSB8IChiW28gKyAzXSA8PCAyNCkpID4+PiAwO1xufVxuZnVuY3Rpb24gcmVhZFU2NExFKGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IGJpZ2ludCB7XG4gIGxldCB2ID0gMG47XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgdiB8PSBCaWdJbnQoYltvICsgaV0pIDw8IEJpZ0ludCg4ICogaSk7XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUF2YWlsYWJsZShiOiBVaW50OEFycmF5LCBvZmY6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gIGlmIChvZmYgKyBzaXplID4gYi5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIG1lc3NhZ2U6IHRydW5jYXRlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVWMU1lc3NhZ2UoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBWMURlY29kZWRNZXNzYWdlIHtcbiAgaWYgKCFieXRlcyB8fCBieXRlcy5sZW5ndGggPCA0Mikge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgbWVzc2FnZTogdG9vIHNob3J0Jyk7XG4gIH1cbiAgbGV0IG9mZiA9IDA7XG4gIGlmIChieXRlc1tvZmYrK10gIT09IFYxX1ZFUlNJT05fUFJFRklYKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB2MSB2ZXJzaW9uIHByZWZpeDogMHgke2J5dGVzWzBdLnRvU3RyaW5nKDE2KX1gKTtcbiAgfVxuICBjb25zdCBudW1TaWduZXJBY2NvdW50cyA9IHJlYWRVOChieXRlcywgb2ZmKyspO1xuICBjb25zdCBudW1SZWFkb25seVNpZ25lckFjY291bnRzID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGNvbnN0IG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgY29uc3QgY29uZmlnTWFzayA9IHJlYWRVMzJMRShieXRlcywgb2ZmKTtcbiAgb2ZmICs9IDQ7XG4gIGlmICgoY29uZmlnTWFzayAmIH5LTk9XTl9DT05GSUdfTUFTSykgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBVbmtub3duIGNvbmZpZyBtYXNrIGJpdHM6ICR7KGNvbmZpZ01hc2sgJiB+S05PV05fQ09ORklHX01BU0spLnRvU3RyaW5nKDIpfWApO1xuICB9XG4gIGNvbnN0IGJsb2NraGFzaCA9IGJzNTguZW5jb2RlKGJ5dGVzLnNsaWNlKG9mZiwgb2ZmICsgU1RBVElDX0FDQ09VTlRfQllURVMpKTtcbiAgb2ZmICs9IFNUQVRJQ19BQ0NPVU5UX0JZVEVTO1xuICBjb25zdCBudW1JbnN0cnVjdGlvbnMgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgY29uc3QgbnVtU3RhdGljQWNjb3VudHMgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgaWYgKG51bVN0YXRpY0FjY291bnRzID4gTUFYX0FDQ09VTlRTKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBtZXNzYWdlOiB0b28gbWFueSBzdGF0aWMgYWNjb3VudHMnKTtcbiAgfVxuICBpZiAobnVtSW5zdHJ1Y3Rpb25zID4gTUFYX0lOU1RSVUNUSU9OUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgbWVzc2FnZTogdG9vIG1hbnkgaW5zdHJ1Y3Rpb25zJyk7XG4gIH1cbiAgaWYgKG51bVJlYWRvbmx5U2lnbmVyQWNjb3VudHMgPiBudW1TaWduZXJBY2NvdW50cykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaGVhZGVyOiByZWFkb25seSBzaWduZXJzIGV4Y2VlZCBzaWduZXJzJyk7XG4gIH1cbiAgaWYgKG51bVNpZ25lckFjY291bnRzICsgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cyA+IG51bVN0YXRpY0FjY291bnRzKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBoZWFkZXI6IHNpZ25lcnMgKyByZWFkb25seSBub24tc2lnbmVycyBleGNlZWQgc3RhdGljIGFjY291bnRzJyk7XG4gIH1cblxuICBjb25zdCBzdGF0aWNBY2NvdW50czogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1TdGF0aWNBY2NvdW50czsgaSsrKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIFNUQVRJQ19BQ0NPVU5UX0JZVEVTKTtcbiAgICBzdGF0aWNBY2NvdW50cy5wdXNoKGJzNTguZW5jb2RlKGJ5dGVzLnNsaWNlKG9mZiwgb2ZmICsgU1RBVElDX0FDQ09VTlRfQllURVMpKSk7XG4gICAgb2ZmICs9IFNUQVRJQ19BQ0NPVU5UX0JZVEVTO1xuICB9XG5cbiAgY29uc3QgY29uZmlnVmFsdWVzOiBDb25maWdWYWx1ZVtdID0gW107XG4gIGlmIChjb25maWdNYXNrICYgUFJJT1JJVFlfRkVFX0JJVFMpIHtcbiAgICBlbnN1cmVBdmFpbGFibGUoYnl0ZXMsIG9mZiwgOCk7XG4gICAgY29uZmlnVmFsdWVzLnB1c2goeyBraW5kOiAndTY0JywgdmFsdWU6IHJlYWRVNjRMRShieXRlcywgb2ZmKSB9KTtcbiAgICBvZmYgKz0gODtcbiAgfVxuICBpZiAoY29uZmlnTWFzayAmIENPTVBVVEVfVU5JVF9MSU1JVF9CSVQpIHtcbiAgICBlbnN1cmVBdmFpbGFibGUoYnl0ZXMsIG9mZiwgNCk7XG4gICAgY29uZmlnVmFsdWVzLnB1c2goeyBraW5kOiAndTMyJywgdmFsdWU6IHJlYWRVMzJMRShieXRlcywgb2ZmKSB9KTtcbiAgICBvZmYgKz0gNDtcbiAgfVxuICBpZiAoY29uZmlnTWFzayAmIExPQURFRF9BQ0NPVU5UU19EQVRBX1NJWkVfTElNSVRfQklUKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDQpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3UzMicsIHZhbHVlOiByZWFkVTMyTEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDQ7XG4gIH1cbiAgaWYgKGNvbmZpZ01hc2sgJiBIRUFQX1NJWkVfQklUKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDQpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3UzMicsIHZhbHVlOiByZWFkVTMyTEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDQ7XG4gIH1cblxuICBjb25zdCBoZWFkZXJzOiBBcnJheTx7IHByb2dyYW1BZGRyZXNzSW5kZXg6IG51bWJlcjsgYWNjb3VudENvdW50OiBudW1iZXI7IGRhdGFMZW5ndGg6IG51bWJlciB9PiA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUluc3RydWN0aW9uczsgaSsrKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDQpO1xuICAgIGNvbnN0IHByb2dyYW1BZGRyZXNzSW5kZXggPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgICBjb25zdCBhY2NvdW50Q291bnQgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gcmVhZFUxNkxFKGJ5dGVzLCBvZmYpO1xuICAgIG9mZiArPSAyO1xuICAgIGlmIChwcm9ncmFtQWRkcmVzc0luZGV4ID49IG51bVN0YXRpY0FjY291bnRzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIGluc3RydWN0aW9uOiBwcm9ncmFtIGluZGV4IG91dCBvZiByYW5nZScpO1xuICAgIH1cbiAgICBpZiAoYWNjb3VudENvdW50ID4gTUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBpbnN0cnVjdGlvbjogdG9vIG1hbnkgYWNjb3VudHMnKTtcbiAgICB9XG4gICAgaGVhZGVycy5wdXNoKHsgcHJvZ3JhbUFkZHJlc3NJbmRleCwgYWNjb3VudENvdW50LCBkYXRhTGVuZ3RoIH0pO1xuICB9XG5cbiAgY29uc3QgY29tcGlsZWRJbnN0cnVjdGlvbnM6IENvbXBpbGVkSW5zdHJ1Y3Rpb25bXSA9IFtdO1xuICBmb3IgKGNvbnN0IGggb2YgaGVhZGVycykge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCBoLmFjY291bnRDb3VudCk7XG4gICAgY29uc3QgYWNjb3VudEluZGljZXM6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoLmFjY291bnRDb3VudDsgaSsrKSB7XG4gICAgICBjb25zdCBpZHggPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgICAgIGlmIChpZHggPj0gbnVtU3RhdGljQWNjb3VudHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBpbnN0cnVjdGlvbjogYWNjb3VudCBpbmRleCBvdXQgb2YgcmFuZ2UnKTtcbiAgICAgIH1cbiAgICAgIGFjY291bnRJbmRpY2VzLnB1c2goaWR4KTtcbiAgICB9XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIGguZGF0YUxlbmd0aCk7XG4gICAgY29uc3QgZGF0YSA9IGJ5dGVzLnNsaWNlKG9mZiwgb2ZmICsgaC5kYXRhTGVuZ3RoKTtcbiAgICBvZmYgKz0gaC5kYXRhTGVuZ3RoO1xuICAgIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zLnB1c2goeyBwcm9ncmFtQWRkcmVzc0luZGV4OiBoLnByb2dyYW1BZGRyZXNzSW5kZXgsIGFjY291bnRJbmRpY2VzLCBkYXRhIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBoZWFkZXI6IHsgbnVtU2lnbmVyQWNjb3VudHMsIG51bVJlYWRvbmx5U2lnbmVyQWNjb3VudHMsIG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMgfSxcbiAgICBjb25maWdNYXNrLFxuICAgIGNvbmZpZ1ZhbHVlcyxcbiAgICBibG9ja2hhc2gsXG4gICAgc3RhdGljQWNjb3VudHMsXG4gICAgY29tcGlsZWRJbnN0cnVjdGlvbnMsXG4gICAgYnl0ZUxlbmd0aDogb2ZmLFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ParsedWireTransaction = {
|
|
2
|
+
messageBytes: Uint8Array;
|
|
3
|
+
signatures: Uint8Array[];
|
|
4
|
+
signerPublicKeys: string[];
|
|
5
|
+
};
|
|
6
|
+
export declare function parseWireTransaction(wireBytes: Uint8Array): ParsedWireTransaction;
|
|
7
|
+
export declare function verifyV1Signatures(messageBytes: Uint8Array, signatures: Uint8Array[], signerPublicKeys: string[]): void;
|
|
8
|
+
export declare function validateRawTransactionV1(wireBytes: Uint8Array): void;
|
|
9
|
+
//# sourceMappingURL=parseWireTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseWireTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/serialization/parseWireTransaction.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,UAAU,CAAC;IACzB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,qBAAqB,CAwCjF;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,UAAU,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,GACzB,IAAI,CAUN;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAGpE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { BuildTransactionError } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import nacl from 'tweetnacl';
|
|
3
|
+
import { PublicKey } from '@solana/web3.js';
|
|
4
|
+
import { decodeV1Message } from './codecs/v1/message';
|
|
5
|
+
const SIGNATURE_BYTE_LENGTH = 64;
|
|
6
|
+
const V1_VERSION_PREFIX = 0x81;
|
|
7
|
+
const V1_TRANSACTION_SIZE_LIMIT = 4096;
|
|
8
|
+
export function parseWireTransaction(wireBytes) {
|
|
9
|
+
if (!wireBytes || wireBytes.length === 0) {
|
|
10
|
+
throw new BuildTransactionError('Invalid v1 transaction: empty');
|
|
11
|
+
}
|
|
12
|
+
if (wireBytes[0] !== V1_VERSION_PREFIX) {
|
|
13
|
+
throw new BuildTransactionError(`Invalid v1 transaction: expected version prefix 0x${V1_VERSION_PREFIX.toString(16)}, got 0x${wireBytes[0].toString(16)}`);
|
|
14
|
+
}
|
|
15
|
+
if (wireBytes.length < 42) {
|
|
16
|
+
throw new BuildTransactionError('Invalid v1 transaction: too short');
|
|
17
|
+
}
|
|
18
|
+
if (wireBytes.length > V1_TRANSACTION_SIZE_LIMIT) {
|
|
19
|
+
throw new BuildTransactionError(`Invalid v1 transaction: exceeds the ${V1_TRANSACTION_SIZE_LIMIT}-byte size limit: ${wireBytes.length} bytes`);
|
|
20
|
+
}
|
|
21
|
+
const decoded = decodeV1Message(wireBytes);
|
|
22
|
+
const messageLength = decoded.byteLength;
|
|
23
|
+
const numSignatures = decoded.header.numSignerAccounts;
|
|
24
|
+
const expectedSigBytes = numSignatures * SIGNATURE_BYTE_LENGTH;
|
|
25
|
+
if (wireBytes.length - messageLength !== expectedSigBytes) {
|
|
26
|
+
throw new BuildTransactionError(`Invalid v1 transaction: expected ${expectedSigBytes} signature bytes after message, got ${wireBytes.length - messageLength}`);
|
|
27
|
+
}
|
|
28
|
+
const messageBytes = wireBytes.slice(0, messageLength);
|
|
29
|
+
const signatures = [];
|
|
30
|
+
for (let i = 0; i < numSignatures; i++) {
|
|
31
|
+
signatures.push(wireBytes.slice(messageLength + i * SIGNATURE_BYTE_LENGTH, messageLength + (i + 1) * SIGNATURE_BYTE_LENGTH));
|
|
32
|
+
}
|
|
33
|
+
return { messageBytes, signatures, signerPublicKeys: decoded.staticAccounts.slice(0, numSignatures) };
|
|
34
|
+
}
|
|
35
|
+
export function verifyV1Signatures(messageBytes, signatures, signerPublicKeys) {
|
|
36
|
+
if (signatures.length !== signerPublicKeys.length) {
|
|
37
|
+
throw new BuildTransactionError('Signature count does not match signer count');
|
|
38
|
+
}
|
|
39
|
+
for (let i = 0; i < signatures.length; i++) {
|
|
40
|
+
const pubkey = new PublicKey(signerPublicKeys[i]).toBuffer();
|
|
41
|
+
if (!nacl.sign.detached.verify(messageBytes, signatures[i], pubkey)) {
|
|
42
|
+
throw new BuildTransactionError(`Signature verification failed for signer ${i}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function validateRawTransactionV1(wireBytes) {
|
|
47
|
+
const { messageBytes, signatures, signerPublicKeys } = parseWireTransaction(wireBytes);
|
|
48
|
+
verifyV1Signatures(messageBytes, signatures, signerPublicKeys);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXJlVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcmlhbGl6YXRpb24vcGFyc2VXaXJlVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUFDakMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUM7QUFRdkMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFNBQXFCO0lBQ3hELElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUkscUJBQXFCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUkscUJBQXFCLENBQzdCLHFEQUFxRCxpQkFBaUIsQ0FBQyxRQUFRLENBQzdFLEVBQUUsQ0FDSCxXQUFXLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLHFCQUFxQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pELE1BQU0sSUFBSSxxQkFBcUIsQ0FDN0IsdUNBQXVDLHlCQUF5QixxQkFBcUIsU0FBUyxDQUFDLE1BQU0sUUFBUSxDQUM5RyxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3pDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7SUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLEdBQUcscUJBQXFCLENBQUM7SUFFL0QsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLGFBQWEsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFELE1BQU0sSUFBSSxxQkFBcUIsQ0FDN0Isb0NBQW9DLGdCQUFnQix1Q0FDbEQsU0FBUyxDQUFDLE1BQU0sR0FBRyxhQUNyQixFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN2RCxNQUFNLFVBQVUsR0FBaUIsRUFBRSxDQUFDO0lBQ3BDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN2QyxVQUFVLENBQUMsSUFBSSxDQUNiLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxxQkFBcUIsRUFBRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FDNUcsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztBQUN4RyxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxZQUF3QixFQUN4QixVQUF3QixFQUN4QixnQkFBMEI7SUFFMUIsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xELE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEUsTUFBTSxJQUFJLHFCQUFxQixDQUFDLDRDQUE0QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxTQUFxQjtJQUM1RCxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZGLGtCQUFrQixDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCB7IFB1YmxpY0tleSB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgeyBkZWNvZGVWMU1lc3NhZ2UgfSBmcm9tICcuL2NvZGVjcy92MS9tZXNzYWdlJztcblxuY29uc3QgU0lHTkFUVVJFX0JZVEVfTEVOR1RIID0gNjQ7XG5jb25zdCBWMV9WRVJTSU9OX1BSRUZJWCA9IDB4ODE7XG5jb25zdCBWMV9UUkFOU0FDVElPTl9TSVpFX0xJTUlUID0gNDA5NjtcblxuZXhwb3J0IHR5cGUgUGFyc2VkV2lyZVRyYW5zYWN0aW9uID0ge1xuICBtZXNzYWdlQnl0ZXM6IFVpbnQ4QXJyYXk7XG4gIHNpZ25hdHVyZXM6IFVpbnQ4QXJyYXlbXTtcbiAgc2lnbmVyUHVibGljS2V5czogc3RyaW5nW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VXaXJlVHJhbnNhY3Rpb24od2lyZUJ5dGVzOiBVaW50OEFycmF5KTogUGFyc2VkV2lyZVRyYW5zYWN0aW9uIHtcbiAgaWYgKCF3aXJlQnl0ZXMgfHwgd2lyZUJ5dGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgdHJhbnNhY3Rpb246IGVtcHR5Jyk7XG4gIH1cbiAgaWYgKHdpcmVCeXRlc1swXSAhPT0gVjFfVkVSU0lPTl9QUkVGSVgpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgYEludmFsaWQgdjEgdHJhbnNhY3Rpb246IGV4cGVjdGVkIHZlcnNpb24gcHJlZml4IDB4JHtWMV9WRVJTSU9OX1BSRUZJWC50b1N0cmluZyhcbiAgICAgICAgMTZcbiAgICAgICl9LCBnb3QgMHgke3dpcmVCeXRlc1swXS50b1N0cmluZygxNil9YFxuICAgICk7XG4gIH1cbiAgaWYgKHdpcmVCeXRlcy5sZW5ndGggPCA0Mikge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgdHJhbnNhY3Rpb246IHRvbyBzaG9ydCcpO1xuICB9XG4gIGlmICh3aXJlQnl0ZXMubGVuZ3RoID4gVjFfVFJBTlNBQ1RJT05fU0laRV9MSU1JVCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgSW52YWxpZCB2MSB0cmFuc2FjdGlvbjogZXhjZWVkcyB0aGUgJHtWMV9UUkFOU0FDVElPTl9TSVpFX0xJTUlUfS1ieXRlIHNpemUgbGltaXQ6ICR7d2lyZUJ5dGVzLmxlbmd0aH0gYnl0ZXNgXG4gICAgKTtcbiAgfVxuICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVjFNZXNzYWdlKHdpcmVCeXRlcyk7XG4gIGNvbnN0IG1lc3NhZ2VMZW5ndGggPSBkZWNvZGVkLmJ5dGVMZW5ndGg7XG4gIGNvbnN0IG51bVNpZ25hdHVyZXMgPSBkZWNvZGVkLmhlYWRlci5udW1TaWduZXJBY2NvdW50cztcbiAgY29uc3QgZXhwZWN0ZWRTaWdCeXRlcyA9IG51bVNpZ25hdHVyZXMgKiBTSUdOQVRVUkVfQllURV9MRU5HVEg7XG5cbiAgaWYgKHdpcmVCeXRlcy5sZW5ndGggLSBtZXNzYWdlTGVuZ3RoICE9PSBleHBlY3RlZFNpZ0J5dGVzKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBJbnZhbGlkIHYxIHRyYW5zYWN0aW9uOiBleHBlY3RlZCAke2V4cGVjdGVkU2lnQnl0ZXN9IHNpZ25hdHVyZSBieXRlcyBhZnRlciBtZXNzYWdlLCBnb3QgJHtcbiAgICAgICAgd2lyZUJ5dGVzLmxlbmd0aCAtIG1lc3NhZ2VMZW5ndGhcbiAgICAgIH1gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2VCeXRlcyA9IHdpcmVCeXRlcy5zbGljZSgwLCBtZXNzYWdlTGVuZ3RoKTtcbiAgY29uc3Qgc2lnbmF0dXJlczogVWludDhBcnJheVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtU2lnbmF0dXJlczsgaSsrKSB7XG4gICAgc2lnbmF0dXJlcy5wdXNoKFxuICAgICAgd2lyZUJ5dGVzLnNsaWNlKG1lc3NhZ2VMZW5ndGggKyBpICogU0lHTkFUVVJFX0JZVEVfTEVOR1RILCBtZXNzYWdlTGVuZ3RoICsgKGkgKyAxKSAqIFNJR05BVFVSRV9CWVRFX0xFTkdUSClcbiAgICApO1xuICB9XG4gIHJldHVybiB7IG1lc3NhZ2VCeXRlcywgc2lnbmF0dXJlcywgc2lnbmVyUHVibGljS2V5czogZGVjb2RlZC5zdGF0aWNBY2NvdW50cy5zbGljZSgwLCBudW1TaWduYXR1cmVzKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VjFTaWduYXR1cmVzKFxuICBtZXNzYWdlQnl0ZXM6IFVpbnQ4QXJyYXksXG4gIHNpZ25hdHVyZXM6IFVpbnQ4QXJyYXlbXSxcbiAgc2lnbmVyUHVibGljS2V5czogc3RyaW5nW11cbik6IHZvaWQge1xuICBpZiAoc2lnbmF0dXJlcy5sZW5ndGggIT09IHNpZ25lclB1YmxpY0tleXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU2lnbmF0dXJlIGNvdW50IGRvZXMgbm90IG1hdGNoIHNpZ25lciBjb3VudCcpO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2lnbmF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHB1YmtleSA9IG5ldyBQdWJsaWNLZXkoc2lnbmVyUHVibGljS2V5c1tpXSkudG9CdWZmZXIoKTtcbiAgICBpZiAoIW5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkobWVzc2FnZUJ5dGVzLCBzaWduYXR1cmVzW2ldLCBwdWJrZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCBmb3Igc2lnbmVyICR7aX1gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb25WMSh3aXJlQnl0ZXM6IFVpbnQ4QXJyYXkpOiB2b2lkIHtcbiAgY29uc3QgeyBtZXNzYWdlQnl0ZXMsIHNpZ25hdHVyZXMsIHNpZ25lclB1YmxpY0tleXMgfSA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHdpcmVCeXRlcyk7XG4gIHZlcmlmeVYxU2lnbmF0dXJlcyhtZXNzYWdlQnl0ZXMsIHNpZ25hdHVyZXMsIHNpZ25lclB1YmxpY0tleXMpO1xufVxuIl19
|
package/dist/esm/sol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sol.d.ts","sourceRoot":"","sources":["../../src/sol.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAe,UAAU,EAA6B,MAAM,iBAAiB,CAAC;AAIrF,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AAKtC,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,EAC9B,QAAQ,EACR,uBAAuB,IAAI,2BAA2B,EAEtD,mBAAmB,IAAI,uBAAuB,EAC9C,SAAS,EAIT,gBAAgB,EAChB,OAAO,EAEP,IAAI,EACJ,OAAO,EAEP,YAAY,EACZ,+BAA+B,EAC/B,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EACX,KAAK,EACL,MAAM,EAEN,YAAY,EAIZ,iBAAiB,EACjB,eAAe,EACf,oCAAoC,EACpC,yBAAyB,EAGzB,iBAAiB,EACjB,sBAAsB,EAEtB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EAEpB,wBAAwB,EACxB,uBAAuB,EAGvB,oBAAoB,EACpB,mBAAmB,EAIpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAkB,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAGL,kBAAkB,EAGnB,MAAM,OAAO,CAAC;AACf,OAAO,EAGL,gBAAgB,EAChB,sBAAsB,IAAI,4BAA4B,EACvD,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,+BAA+B,EAKhC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"sol.d.ts","sourceRoot":"","sources":["../../src/sol.ts"],"names":[],"mappings":"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"}
|