@xyo-network/chain-wrappers 1.3.2 → 1.3.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.
@@ -40,14 +40,20 @@ var createSignatureWrappers = /* @__PURE__ */ __name(async (bw) => {
40
40
  // src/block/HydratedBlock.ts
41
41
  import { hexToBigInt as hexToBigInt3 } from "@xylabs/hex";
42
42
  import { XYO_ZERO_ADDRESS as XYO_ZERO_ADDRESS2 } from "@xyo-network/chain-utils";
43
+ import { validateHydratedBlock } from "@xyo-network/chain-validation";
44
+ import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/payload-builder";
45
+ import { isAllowedBlockPayloadWithHashStorageMeta as isAllowedBlockPayloadWithHashStorageMeta2, isSignedTransactionBoundWitnessWithStorageMeta, isTransfer as isTransfer2 } from "@xyo-network/xl1-model";
46
+
47
+ // src/transaction/SignedHydratedTransaction.ts
43
48
  import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
44
- import { isSignedTransactionBoundWitnessWithStorageMeta, isTransfer as isTransfer2 } from "@xyo-network/xl1-model";
45
49
 
46
50
  // src/transaction/HydratedTransaction.ts
51
+ import { exists } from "@xylabs/exists";
47
52
  import { hexToBigInt as hexToBigInt2 } from "@xylabs/hex";
48
53
  import { XYO_ZERO_ADDRESS } from "@xyo-network/chain-utils";
54
+ import { validateTransaction } from "@xyo-network/chain-validation";
49
55
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
50
- import { isTransfer } from "@xyo-network/xl1-model";
56
+ import { isAllowedBlockPayloadWithHashStorageMeta, isTransfer } from "@xyo-network/xl1-model";
51
57
 
52
58
  // src/Fees.ts
53
59
  import { hexToBigInt } from "@xylabs/hex";
@@ -110,8 +116,8 @@ var HydratedTransactionWrapper = class _HydratedTransactionWrapper {
110
116
  data;
111
117
  fees;
112
118
  payloadsCache = [];
113
- constructor(transaction) {
114
- this.data = transaction;
119
+ constructor(data) {
120
+ this.data = data;
115
121
  this.fees = new FeesWrapper(this.boundWitness.fees);
116
122
  }
117
123
  get boundWitness() {
@@ -121,16 +127,28 @@ var HydratedTransactionWrapper = class _HydratedTransactionWrapper {
121
127
  return 0;
122
128
  }
123
129
  get elevatedPayloads() {
124
- throw new Error("Method not implemented.");
130
+ const elevatedHashes = (this.boundWitness.script ?? []).map((operation) => {
131
+ const [opCode, ...args] = operation.split("|");
132
+ if (opCode === "elevate") {
133
+ return args[0];
134
+ }
135
+ }).filter(exists);
136
+ const elevated = elevatedHashes.map((hash) => this.payloads.find((payload) => payload._hash === hash)).filter(exists);
137
+ return elevated.filter(isAllowedBlockPayloadWithHashStorageMeta);
125
138
  }
126
139
  get payloadCount() {
127
140
  return this.payloadsCache.length;
128
141
  }
129
142
  get payloads() {
130
- throw new Error("Method not implemented.");
143
+ return [
144
+ ...this.payloadsCache
145
+ ];
131
146
  }
132
147
  static async parse(transaction, validate = false) {
133
- const wrapper = new _HydratedTransactionWrapper(transaction);
148
+ const wrapper = new _HydratedTransactionWrapper([
149
+ await PayloadBuilder2.addStorageMeta(transaction[0]),
150
+ await PayloadBuilder2.addStorageMeta(transaction[1])
151
+ ]);
134
152
  const parsed = await wrapper.parse();
135
153
  if (validate) {
136
154
  const errors = await wrapper.validate();
@@ -140,20 +158,20 @@ var HydratedTransactionWrapper = class _HydratedTransactionWrapper {
140
158
  }
141
159
  return parsed;
142
160
  }
143
- elevatedPayload(_index) {
144
- throw new Error("Method not implemented.");
161
+ elevatedPayload(index) {
162
+ return this.elevatedPayloads.at(index);
145
163
  }
146
164
  gasRequired() {
147
165
  throw new Error("Method not implemented.");
148
166
  }
149
- payload(_index) {
150
- throw new Error("Method not implemented.");
167
+ payload(index) {
168
+ return this.payloads.at(index);
151
169
  }
152
170
  reward() {
153
171
  return this.payloadsCache.reduce((acc, payload) => acc + (isTransfer(payload) ? payload.from === XYO_ZERO_ADDRESS ? sumTransfers(payload) : 0n : 0n), 0n);
154
172
  }
155
173
  validate() {
156
- return [];
174
+ return validateTransaction(this.data);
157
175
  }
158
176
  async parse(validate = false) {
159
177
  const transactionPayloads = await PayloadBuilder2.addStorageMeta(this.data[1]);
@@ -181,8 +199,11 @@ var SignedHydratedTransactionWrapper = class _SignedHydratedTransactionWrapper e
181
199
  ...this._signatureCache
182
200
  ];
183
201
  }
184
- static async parse(block, validate = false) {
185
- const wrapper = new _SignedHydratedTransactionWrapper(block);
202
+ static async parse(transaction, validate = false) {
203
+ const wrapper = new _SignedHydratedTransactionWrapper([
204
+ await PayloadBuilder3.addStorageMeta(transaction[0]),
205
+ await PayloadBuilder3.addStorageMeta(transaction[1])
206
+ ]);
186
207
  return await wrapper.parse(validate);
187
208
  }
188
209
  signature(index) {
@@ -213,25 +234,36 @@ var HydratedBlockWrapper = class _HydratedBlockWrapper {
213
234
  __name(this, "HydratedBlockWrapper");
214
235
  }
215
236
  data;
216
- payloadsCache = [];
237
+ allPayloadsCache = [];
238
+ publicPayloadsCache = [];
217
239
  transactionsCache = [];
218
- constructor(block) {
219
- this.data = block;
240
+ constructor(data) {
241
+ this.data = data;
220
242
  }
221
243
  get boundWitness() {
222
- throw new Error("Method not implemented.");
223
- }
224
- get fees() {
225
- throw new Error("Method not implemented.");
244
+ return this.data[0];
226
245
  }
227
246
  get payloadCount() {
228
- return this.payloadsCache.length;
247
+ return this.allPayloadsCache.length;
229
248
  }
230
249
  get payloads() {
231
- return this.payloadsCache;
250
+ return [
251
+ ...this.allPayloadsCache
252
+ ];
253
+ }
254
+ get privatePayloadCount() {
255
+ return this.data[1].length - this.publicPayloadCount;
256
+ }
257
+ get publicPayloadCount() {
258
+ return this.allPayloadsCache.length;
259
+ }
260
+ get publicPayloads() {
261
+ return [
262
+ ...this.publicPayloadsCache
263
+ ];
232
264
  }
233
265
  get reward() {
234
- return this.payloadsCache.reduce((acc, payload) => acc + (isTransfer2(payload) ? payload.from === XYO_ZERO_ADDRESS2 ? sumTransfers2(payload) : 0n : 0n), 0n);
266
+ return this.allPayloadsCache.reduce((acc, payload) => acc + (isTransfer2(payload) ? payload.from === XYO_ZERO_ADDRESS2 ? sumTransfers2(payload) : 0n : 0n), 0n);
235
267
  }
236
268
  get transactionCount() {
237
269
  return this.transactionsCache.length;
@@ -244,25 +276,35 @@ var HydratedBlockWrapper = class _HydratedBlockWrapper {
244
276
  return await wrapper.parse(validate);
245
277
  }
246
278
  payload(index) {
247
- return this.payloadsCache.at(index);
279
+ return this.data[1].at(index);
248
280
  }
249
281
  transaction(index) {
250
282
  return this.transactionsCache.at(index);
251
283
  }
252
- validate() {
253
- return [];
284
+ async validate() {
285
+ return await validateHydratedBlock(this.data);
254
286
  }
255
287
  async parse(validate = false) {
256
- const blockPayloads = await PayloadBuilder3.addStorageMeta(this.data[1]);
257
- for (const payload of blockPayloads) {
288
+ const allPayloads = await PayloadBuilder4.addStorageMeta(this.data[1]);
289
+ for (const payload of allPayloads) {
258
290
  if (isSignedTransactionBoundWitnessWithStorageMeta(payload)) {
259
291
  const hydratedTransaction = [
260
292
  payload,
261
- blockPayloads.filter((p) => payload.payload_hashes.includes(p._hash) || payload.payload_hashes.includes(p._dataHash))
293
+ allPayloads.filter((p) => payload.payload_hashes.includes(p._hash) || payload.payload_hashes.includes(p._dataHash))
262
294
  ];
263
295
  this.transactionsCache.push(await SignedHydratedTransactionWrapper.parse(hydratedTransaction));
264
296
  } else {
265
- this.payloadsCache.push(payload);
297
+ this.allPayloadsCache.push(payload);
298
+ }
299
+ }
300
+ for (const hash of this.data[0].payload_hashes) {
301
+ const payload = this.allPayloadsCache.find((p) => p._hash === hash);
302
+ if (payload) {
303
+ if (isAllowedBlockPayloadWithHashStorageMeta2(payload)) {
304
+ this.publicPayloadsCache.push(payload);
305
+ } else {
306
+ throw new Error("Disallowed payload type");
307
+ }
266
308
  }
267
309
  }
268
310
  if (validate) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/createSignatureWrappers.ts","../../src/Signature.ts","../../src/block/HydratedBlock.ts","../../src/transaction/HydratedTransaction.ts","../../src/Fees.ts","../../src/transaction/SignedHydratedTransaction.ts","../../src/block/SignedHydratedBlock.ts"],"sourcesContent":["import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignatureInstance } from '@xyo-network/xl1-model'\n\nimport { SignatureWrapper } from '../Signature.ts'\n\nexport const createSignatureWrappers = async (bw: BoundWitness): Promise<SignatureInstance[]> => {\n const signatures: SignatureInstance[] = []\n const hash = await PayloadBuilder.dataHash(bw)\n for (let i = 0; i < bw.$signatures.length; i++) {\n signatures.push(\n new SignatureWrapper(bw.$signatures[i], bw.addresses[i], hash),\n )\n }\n return signatures\n}\n","import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type { SignatureInstance } from '@xyo-network/xl1-model'\n\nexport class SignatureWrapper implements SignatureInstance {\n address: Address\n hash: Hash\n signature: Hex\n\n constructor(signature: Hex, address: Address, hash: Hash) {\n this.signature = signature\n this.address = address\n this.hash = hash\n }\n\n static async validate(hash: Hash, address: Address, signature: Hex): Promise<Error[]> {\n return await BoundWitnessValidator.validateSignature(toArrayBuffer(hash), toArrayBuffer(address), toArrayBuffer(signature))\n }\n\n async validate(): Promise<Error[]> {\n return await SignatureWrapper.validate(this.address, this.hash, this.signature)\n }\n}\n","import { hexToBigInt } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { XYO_ZERO_ADDRESS } from '@xyo-network/chain-utils'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport type {\n HydratedBlock, HydratedBlockInstance, SignedHydratedTransaction, SignedHydratedTransactionInstance,\n TransactionFeesInstance, Transfer,\n} from '@xyo-network/xl1-model'\nimport {\n isSignedTransactionBoundWitnessWithStorageMeta,\n isTransfer,\n} from '@xyo-network/xl1-model'\n\nimport { SignedHydratedTransactionWrapper } from '../transaction/SignedHydratedTransaction.ts'\n\nconst sumTransfers = (payload: Transfer) => {\n let total = 0n\n for (let i of Object.values(payload.transfers)) {\n total += hexToBigInt(i)\n }\n return total\n}\n\nexport class HydratedBlockWrapper<T extends HydratedBlock> implements HydratedBlockInstance<T> {\n data: T\n protected payloadsCache: WithStorageMeta<T[1][number]>[] = []\n protected transactionsCache: SignedHydratedTransactionInstance[] = []\n\n protected constructor(block: T) {\n this.data = block\n }\n\n get boundWitness(): T[0] {\n throw new Error('Method not implemented.')\n }\n\n get fees(): TransactionFeesInstance {\n throw new Error('Method not implemented.')\n }\n\n get payloadCount(): number {\n return this.payloadsCache.length\n }\n\n get payloads(): T[1][number][] {\n return this.payloadsCache\n }\n\n get reward(): bigint {\n return this.payloadsCache.reduce((acc: bigint, payload) => acc + (\n isTransfer(payload)\n ? payload.from === XYO_ZERO_ADDRESS\n ? sumTransfers(payload)\n : 0n\n : 0n), 0n)\n }\n\n get transactionCount(): number {\n return this.transactionsCache.length\n }\n\n get transactions(): SignedHydratedTransactionInstance[] {\n return this.transactionsCache\n }\n\n static async parse<T extends HydratedBlock>(block: T, validate = false): Promise<HydratedBlockInstance> {\n const wrapper = new HydratedBlockWrapper<T>(block)\n return await wrapper.parse(validate)\n }\n\n payload(index: number): T[1][number] | undefined {\n return this.payloadsCache.at(index)\n }\n\n transaction(index: number): SignedHydratedTransactionInstance | undefined {\n return this.transactionsCache.at(index)\n }\n\n validate(): Promisable<Error[]> {\n return []\n }\n\n protected async parse(validate = false): Promise<HydratedBlockInstance<T>> {\n const blockPayloads = await PayloadBuilder.addStorageMeta(this.data[1])\n for (const payload of blockPayloads) {\n if (isSignedTransactionBoundWitnessWithStorageMeta(payload)) {\n const hydratedTransaction: SignedHydratedTransaction = [payload, blockPayloads.filter(\n p => payload.payload_hashes.includes(p._hash) || payload.payload_hashes.includes(p._dataHash),\n )]\n this.transactionsCache.push(await SignedHydratedTransactionWrapper.parse(hydratedTransaction))\n } else {\n this.payloadsCache.push(payload)\n }\n }\n if (validate) {\n await this.validate()\n }\n return this\n }\n}\n","import { hexToBigInt } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { XYO_ZERO_ADDRESS } from '@xyo-network/chain-utils'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, HydratedTransaction, HydratedTransactionInstance, TransactionFeesInstance, Transfer,\n} from '@xyo-network/xl1-model'\nimport { isTransfer } from '@xyo-network/xl1-model'\n\nimport { FeesWrapper } from '../Fees.ts'\n\nconst sumTransfers = (payload: Transfer) => {\n let total = 0n\n for (let i of Object.values(payload.transfers)) {\n total += hexToBigInt(i)\n }\n return total\n}\n\nexport class HydratedTransactionWrapper<T extends HydratedTransaction> implements HydratedTransactionInstance<T> {\n data: T\n fees: TransactionFeesInstance\n\n protected payloadsCache: WithHashStorageMeta<Payload>[] = []\n\n protected constructor(transaction: T) {\n this.data = transaction\n this.fees = new FeesWrapper(\n this.boundWitness.fees,\n )\n }\n\n get boundWitness(): T[0] {\n return this.data[0]\n }\n\n get elevatedPayloadCount(): number {\n return 0\n }\n\n get elevatedPayloads(): AllowedBlockPayload[] {\n throw new Error('Method not implemented.')\n }\n\n get payloadCount(): number {\n return this.payloadsCache.length\n }\n\n get payloads(): Payload[] {\n throw new Error('Method not implemented.')\n // return this.payloadsCache\n }\n\n static async parse<T extends HydratedTransaction>(transaction: T, validate = false): Promise<HydratedTransactionInstance<T>> {\n const wrapper = new HydratedTransactionWrapper<T>(transaction)\n const parsed = await wrapper.parse()\n if (validate) {\n const errors = await wrapper.validate()\n if (errors.length > 0) {\n throw new Error(`Block validation failed: ${errors.join(', ')}`)\n }\n }\n return parsed\n }\n\n elevatedPayload(_index: number): AllowedBlockPayload | undefined {\n throw new Error('Method not implemented.')\n }\n\n gasRequired(): bigint {\n throw new Error('Method not implemented.')\n }\n\n payload(_index: number): Payload | undefined {\n throw new Error('Method not implemented.')\n // return this.payloadsCache.at(index)\n }\n\n reward(): bigint {\n return this.payloadsCache.reduce((acc: bigint, payload) => acc + (\n isTransfer(payload)\n ? payload.from === XYO_ZERO_ADDRESS\n ? sumTransfers(payload)\n : 0n\n : 0n), 0n)\n }\n\n validate(): Promisable<Error[]> {\n return []\n }\n\n protected async parse(validate = false): Promise<HydratedTransactionInstance<T>> {\n const transactionPayloads = await PayloadBuilder.addStorageMeta(this.data[1])\n for (const payload of transactionPayloads) {\n this.payloadsCache.push(payload)\n }\n if (validate) {\n await this.validate()\n }\n return this\n }\n}\n","import { hexToBigInt } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type {\n TransactionFeesBigInt, TransactionFeesHex,\n TransactionFeesInstance,\n} from '@xyo-network/xl1-model'\n\nexport class FeesWrapper implements TransactionFeesInstance {\n base: bigint\n gasLimit: bigint\n gasPrice: bigint\n priority: bigint\n\n constructor({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt) {\n this.base = typeof base === 'bigint' ? base : hexToBigInt(base)\n this.gasLimit = typeof gasLimit === 'bigint' ? gasLimit : hexToBigInt(gasLimit)\n this.gasPrice = typeof gasPrice === 'bigint' ? gasPrice : hexToBigInt(gasPrice)\n this.priority = typeof priority === 'bigint' ? priority : hexToBigInt(priority)\n }\n\n static validate({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt): Promisable<Error[]> {\n const errors: Error[] = []\n const baseValue = typeof base === 'bigint' ? base : hexToBigInt(base)\n const gasLimitValue = typeof gasLimit === 'bigint' ? gasLimit : hexToBigInt(gasLimit)\n const gasPriceValue = typeof gasPrice === 'bigint' ? gasPrice : hexToBigInt(gasPrice)\n const priorityValue = typeof priority === 'bigint' ? priority : hexToBigInt(priority)\n if (baseValue <= 0n) {\n errors.push(new Error('Base fee cannot be negative or zero'))\n }\n if (gasLimitValue < 0n) {\n errors.push(new Error('Gas limit cannot be negative'))\n }\n if (gasPriceValue < 0n) {\n errors.push(new Error('Gas price cannot be negative'))\n }\n if (priorityValue < 0n) {\n errors.push(new Error('Priority cannot be negative'))\n }\n return errors\n }\n\n async validate(): Promise<Error[]> {\n return await FeesWrapper.validate({\n base: this.base, gasLimit: this.gasLimit, gasPrice: this.gasPrice, priority: this.priority,\n })\n }\n}\n","import type {\n SignatureInstance,\n SignedHydratedTransaction,\n SignedHydratedTransactionInstance,\n} from '@xyo-network/xl1-model'\n\nimport { createSignatureWrappers } from '../lib/createSignatureWrappers.ts'\nimport { HydratedTransactionWrapper } from './HydratedTransaction.ts'\n\nexport class SignedHydratedTransactionWrapper<T extends SignedHydratedTransaction> extends HydratedTransactionWrapper<T>\n implements SignedHydratedTransactionInstance<T> {\n private _signatureCache: SignatureInstance[] = []\n\n get signatureCount(): number {\n return this._signatureCache.length\n }\n\n get signatures(): SignatureInstance[] {\n return [...this._signatureCache]\n }\n\n static override async parse<T extends SignedHydratedTransaction>(block: T, validate = false): Promise<SignedHydratedTransactionInstance<T>> {\n const wrapper = new SignedHydratedTransactionWrapper<T>(block)\n return await wrapper.parse(validate)\n }\n\n signature(index: number): SignatureInstance | undefined {\n return this._signatureCache[index]\n }\n\n override async validate(): Promise<Error[]> {\n const errors: Error[] = []\n errors.push(\n ...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),\n ...(await super.validate()),\n )\n return errors\n }\n\n protected override async parse(validate = false): Promise<SignedHydratedTransactionInstance<T>> {\n this._signatureCache = await createSignatureWrappers(this.data[0])\n await super.parse(validate)\n return this\n }\n}\n","import type {\n SignatureInstance, SignedHydratedBlock,\n SignedHydratedBlockInstance,\n} from '@xyo-network/xl1-model'\n\nimport { createSignatureWrappers } from '../lib/createSignatureWrappers.ts'\nimport { HydratedBlockWrapper } from './HydratedBlock.ts'\n\nexport class SignedHydratedBlockWrapper<T extends SignedHydratedBlock> extends HydratedBlockWrapper<T> implements SignedHydratedBlockInstance<T> {\n private _signatureCache: SignatureInstance[] = []\n\n get signatureCount(): number {\n return this._signatureCache.length\n }\n\n get signatures(): SignatureInstance[] {\n return [...this._signatureCache]\n }\n\n static override async parse<T extends SignedHydratedBlock>(block: T, validate = false): Promise<SignedHydratedBlockInstance<T>> {\n const wrapper = new SignedHydratedBlockWrapper<T>(block)\n return await wrapper.parse(validate)\n }\n\n signature(index: number): SignatureInstance | undefined {\n return this._signatureCache[index]\n }\n\n override async validate(): Promise<Error[]> {\n const errors: Error[] = []\n errors.push(\n ...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),\n ...(await super.validate()),\n )\n return errors\n }\n\n protected override async parse(validate = false): Promise<SignedHydratedBlockInstance<T>> {\n this._signatureCache = await createSignatureWrappers(this.data[0])\n await super.parse(validate)\n return this\n }\n}\n"],"mappings":"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","names":["PayloadBuilder","toArrayBuffer","BoundWitnessValidator","SignatureWrapper","address","hash","signature","constructor","validate","BoundWitnessValidator","validateSignature","toArrayBuffer","createSignatureWrappers","bw","signatures","hash","PayloadBuilder","dataHash","i","$signatures","length","push","SignatureWrapper","addresses","hexToBigInt","XYO_ZERO_ADDRESS","PayloadBuilder","isSignedTransactionBoundWitnessWithStorageMeta","isTransfer","hexToBigInt","XYO_ZERO_ADDRESS","PayloadBuilder","isTransfer","hexToBigInt","FeesWrapper","base","gasLimit","gasPrice","priority","constructor","hexToBigInt","validate","errors","baseValue","gasLimitValue","gasPriceValue","priorityValue","push","Error","sumTransfers","payload","total","i","Object","values","transfers","hexToBigInt","HydratedTransactionWrapper","data","fees","payloadsCache","transaction","FeesWrapper","boundWitness","elevatedPayloadCount","elevatedPayloads","Error","payloadCount","length","payloads","parse","validate","wrapper","parsed","errors","join","elevatedPayload","_index","gasRequired","reward","reduce","acc","isTransfer","from","XYO_ZERO_ADDRESS","transactionPayloads","PayloadBuilder","addStorageMeta","push","SignedHydratedTransactionWrapper","HydratedTransactionWrapper","_signatureCache","signatureCount","length","signatures","parse","block","validate","wrapper","signature","index","errors","push","Promise","all","map","flat","createSignatureWrappers","data","sumTransfers","payload","total","i","Object","values","transfers","hexToBigInt","HydratedBlockWrapper","data","payloadsCache","transactionsCache","block","boundWitness","Error","fees","payloadCount","length","payloads","reward","reduce","acc","isTransfer","from","XYO_ZERO_ADDRESS","transactionCount","transactions","parse","validate","wrapper","index","at","transaction","blockPayloads","PayloadBuilder","addStorageMeta","isSignedTransactionBoundWitnessWithStorageMeta","hydratedTransaction","filter","p","payload_hashes","includes","_hash","_dataHash","push","SignedHydratedTransactionWrapper","SignedHydratedBlockWrapper","HydratedBlockWrapper","_signatureCache","signatureCount","length","signatures","parse","block","validate","wrapper","signature","index","errors","push","Promise","all","map","flat","createSignatureWrappers","data"]}
1
+ {"version":3,"sources":["../../src/lib/createSignatureWrappers.ts","../../src/Signature.ts","../../src/block/HydratedBlock.ts","../../src/transaction/SignedHydratedTransaction.ts","../../src/transaction/HydratedTransaction.ts","../../src/Fees.ts","../../src/block/SignedHydratedBlock.ts"],"sourcesContent":["import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignatureInstance } from '@xyo-network/xl1-model'\n\nimport { SignatureWrapper } from '../Signature.ts'\n\nexport const createSignatureWrappers = async (bw: BoundWitness): Promise<SignatureInstance[]> => {\n const signatures: SignatureInstance[] = []\n const hash = await PayloadBuilder.dataHash(bw)\n for (let i = 0; i < bw.$signatures.length; i++) {\n signatures.push(\n new SignatureWrapper(bw.$signatures[i], bw.addresses[i], hash),\n )\n }\n return signatures\n}\n","import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type { SignatureInstance } from '@xyo-network/xl1-model'\n\nexport class SignatureWrapper implements SignatureInstance {\n address: Address\n hash: Hash\n signature: Hex\n\n constructor(signature: Hex, address: Address, hash: Hash) {\n this.signature = signature\n this.address = address\n this.hash = hash\n }\n\n static async validate(hash: Hash, address: Address, signature: Hex): Promise<Error[]> {\n return await BoundWitnessValidator.validateSignature(toArrayBuffer(hash), toArrayBuffer(address), toArrayBuffer(signature))\n }\n\n async validate(): Promise<Error[]> {\n return await SignatureWrapper.validate(this.address, this.hash, this.signature)\n }\n}\n","import { hexToBigInt } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { XYO_ZERO_ADDRESS } from '@xyo-network/chain-utils'\nimport { validateHydratedBlock } from '@xyo-network/chain-validation'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { WithHashStorageMeta } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n HydratedBlock, HydratedBlockInstance, SignedHydratedTransaction, SignedHydratedTransactionInstance, Transfer,\n} from '@xyo-network/xl1-model'\nimport {\n isAllowedBlockPayloadWithHashStorageMeta,\n isSignedTransactionBoundWitnessWithStorageMeta,\n isTransfer,\n} from '@xyo-network/xl1-model'\n\nimport { SignedHydratedTransactionWrapper } from '../transaction/SignedHydratedTransaction.ts'\n\nconst sumTransfers = (payload: Transfer) => {\n let total = 0n\n for (let i of Object.values(payload.transfers)) {\n total += hexToBigInt(i)\n }\n return total\n}\n\nexport class HydratedBlockWrapper<T extends HydratedBlock> implements HydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {\n data: [WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]\n protected allPayloadsCache: WithHashStorageMeta<WithHashStorageMeta<T[1][number]>>[] = []\n protected publicPayloadsCache: WithHashStorageMeta<WithHashStorageMeta<T[1][number] & AllowedBlockPayload>>[] = []\n protected transactionsCache: SignedHydratedTransactionInstance[] = []\n\n protected constructor(data: [WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]) {\n this.data = data\n }\n\n get boundWitness() {\n return this.data[0]\n }\n\n get payloadCount(): number {\n return this.allPayloadsCache.length\n }\n\n get payloads(): T[1][number][] {\n return [...this.allPayloadsCache]\n }\n\n get privatePayloadCount(): number {\n return this.data[1].length - this.publicPayloadCount\n }\n\n get publicPayloadCount(): number {\n return this.allPayloadsCache.length\n }\n\n get publicPayloads(): (T[1][number] & AllowedBlockPayload)[] {\n return [...this.publicPayloadsCache]\n }\n\n get reward(): bigint {\n return this.allPayloadsCache.reduce((acc: bigint, payload) => acc + (\n isTransfer(payload)\n ? payload.from === XYO_ZERO_ADDRESS\n ? sumTransfers(payload)\n : 0n\n : 0n), 0n)\n }\n\n get transactionCount(): number {\n return this.transactionsCache.length\n }\n\n get transactions(): SignedHydratedTransactionInstance[] {\n return this.transactionsCache\n }\n\n static async parse<T extends HydratedBlock>(block: T, validate = false): Promise<HydratedBlockInstance> {\n const wrapper = new HydratedBlockWrapper<T>(block)\n return await wrapper.parse(validate)\n }\n\n payload(index: number) {\n return this.data[1].at(index)\n }\n\n transaction(index: number): SignedHydratedTransactionInstance | undefined {\n return this.transactionsCache.at(index)\n }\n\n async validate(): Promise<Error[]> {\n return await validateHydratedBlock(this.data)\n }\n\n protected async parse(validate = false): Promise<HydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {\n const allPayloads = await PayloadBuilder.addStorageMeta(this.data[1])\n for (const payload of allPayloads) {\n if (isSignedTransactionBoundWitnessWithStorageMeta(payload)) {\n const hydratedTransaction: SignedHydratedTransaction = [payload, allPayloads.filter(\n p => payload.payload_hashes.includes(p._hash) || payload.payload_hashes.includes(p._dataHash),\n )]\n this.transactionsCache.push(await SignedHydratedTransactionWrapper.parse(hydratedTransaction))\n } else {\n this.allPayloadsCache.push(payload)\n }\n }\n for (const hash of this.data[0].payload_hashes) {\n const payload = this.allPayloadsCache.find(p => p._hash === hash)\n if (payload) {\n if (isAllowedBlockPayloadWithHashStorageMeta(payload)) {\n this.publicPayloadsCache.push(payload)\n } else {\n throw new Error('Disallowed payload type')\n }\n }\n }\n if (validate) {\n await this.validate()\n }\n return this\n }\n}\n","import { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { WithHashStorageMeta } from '@xyo-network/payload-model'\nimport type {\n SignatureInstance,\n SignedHydratedTransaction,\n SignedHydratedTransactionInstance,\n} from '@xyo-network/xl1-model'\n\nimport { createSignatureWrappers } from '../lib/createSignatureWrappers.ts'\nimport { HydratedTransactionWrapper } from './HydratedTransaction.ts'\n\nexport class SignedHydratedTransactionWrapper<T extends SignedHydratedTransaction> extends HydratedTransactionWrapper<T>\n implements SignedHydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {\n private _signatureCache: SignatureInstance[] = []\n\n get signatureCount(): number {\n return this._signatureCache.length\n }\n\n get signatures(): SignatureInstance[] {\n return [...this._signatureCache]\n }\n\n static override async parse<T extends SignedHydratedTransaction>(transaction: T, validate = false):\n Promise<SignedHydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {\n const wrapper = new SignedHydratedTransactionWrapper<T>([\n await PayloadBuilder.addStorageMeta(transaction[0]),\n await PayloadBuilder.addStorageMeta(transaction[1]),\n ])\n return await wrapper.parse(validate)\n }\n\n signature(index: number): SignatureInstance | undefined {\n return this._signatureCache[index]\n }\n\n override async validate(): Promise<Error[]> {\n const errors: Error[] = []\n errors.push(\n ...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),\n ...(await super.validate()),\n )\n return errors\n }\n\n protected override async parse(validate = false):\n Promise<SignedHydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {\n this._signatureCache = await createSignatureWrappers(this.data[0])\n await super.parse(validate)\n return this\n }\n}\n","import { exists } from '@xylabs/exists'\nimport { hexToBigInt } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { XYO_ZERO_ADDRESS } from '@xyo-network/chain-utils'\nimport { validateTransaction } from '@xyo-network/chain-validation'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, HydratedTransaction, HydratedTransactionInstance, HydratedTransactionWithHashStorageMeta, TransactionFeesInstance, Transfer,\n} from '@xyo-network/xl1-model'\nimport { isAllowedBlockPayloadWithHashStorageMeta, isTransfer } from '@xyo-network/xl1-model'\n\nimport { FeesWrapper } from '../Fees.ts'\n\nconst sumTransfers = (payload: Transfer) => {\n let total = 0n\n for (let i of Object.values(payload.transfers)) {\n total += hexToBigInt(i)\n }\n return total\n}\n\nexport class HydratedTransactionWrapper<T extends HydratedTransaction>\nimplements HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {\n data: HydratedTransactionWithHashStorageMeta<T>\n fees: TransactionFeesInstance\n\n protected payloadsCache: WithHashStorageMeta<Payload>[] = []\n\n protected constructor(data: HydratedTransactionWithHashStorageMeta<T>) {\n this.data = data\n this.fees = new FeesWrapper(\n this.boundWitness.fees,\n )\n }\n\n get boundWitness() {\n return this.data[0]\n }\n\n get elevatedPayloadCount(): number {\n return 0\n }\n\n get elevatedPayloads(): WithHashStorageMeta<AllowedBlockPayload>[] {\n const elevatedHashes = (this.boundWitness.script ?? []).map((operation) => {\n const [opCode, ...args] = operation.split('|')\n if (opCode === 'elevate') {\n return args[0]\n }\n }).filter(exists)\n const elevated = elevatedHashes.map(hash => this.payloads.find(payload => payload._hash === hash)).filter(exists)\n return elevated.filter(isAllowedBlockPayloadWithHashStorageMeta)\n }\n\n get payloadCount(): number {\n return this.payloadsCache.length\n }\n\n get payloads(): WithHashStorageMeta<WithHashStorageMeta<T[1][number]>>[] {\n return [...this.payloadsCache]\n }\n\n static async parse<T extends HydratedTransaction>(transaction: T, validate = false):\n Promise<HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {\n const wrapper = new HydratedTransactionWrapper<T>(\n [\n await PayloadBuilder.addStorageMeta(transaction[0]),\n await PayloadBuilder.addStorageMeta(transaction[1]),\n ],\n )\n const parsed = await wrapper.parse()\n if (validate) {\n const errors = await wrapper.validate()\n if (errors.length > 0) {\n throw new Error(`Block validation failed: ${errors.join(', ')}`)\n }\n }\n return parsed\n }\n\n elevatedPayload(index: number): WithHashStorageMeta<AllowedBlockPayload & T[1][number]> | undefined {\n return this.elevatedPayloads.at(index)\n }\n\n gasRequired(): bigint {\n throw new Error('Method not implemented.')\n }\n\n payload(index: number): WithHashStorageMeta<Payload> | undefined {\n return this.payloads.at(index)\n }\n\n reward(): bigint {\n return this.payloadsCache.reduce((acc: bigint, payload) => acc + (\n isTransfer(payload)\n ? payload.from === XYO_ZERO_ADDRESS\n ? sumTransfers(payload)\n : 0n\n : 0n), 0n)\n }\n\n validate(): Promisable<Error[]> {\n return validateTransaction(this.data)\n }\n\n protected async parse(validate = false): Promise<HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {\n const transactionPayloads = await PayloadBuilder.addStorageMeta(this.data[1])\n for (const payload of transactionPayloads) {\n this.payloadsCache.push(payload)\n }\n if (validate) {\n await this.validate()\n }\n return this\n }\n}\n","import { hexToBigInt } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type {\n TransactionFeesBigInt, TransactionFeesHex,\n TransactionFeesInstance,\n} from '@xyo-network/xl1-model'\n\nexport class FeesWrapper implements TransactionFeesInstance {\n base: bigint\n gasLimit: bigint\n gasPrice: bigint\n priority: bigint\n\n constructor({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt) {\n this.base = typeof base === 'bigint' ? base : hexToBigInt(base)\n this.gasLimit = typeof gasLimit === 'bigint' ? gasLimit : hexToBigInt(gasLimit)\n this.gasPrice = typeof gasPrice === 'bigint' ? gasPrice : hexToBigInt(gasPrice)\n this.priority = typeof priority === 'bigint' ? priority : hexToBigInt(priority)\n }\n\n static validate({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt): Promisable<Error[]> {\n const errors: Error[] = []\n const baseValue = typeof base === 'bigint' ? base : hexToBigInt(base)\n const gasLimitValue = typeof gasLimit === 'bigint' ? gasLimit : hexToBigInt(gasLimit)\n const gasPriceValue = typeof gasPrice === 'bigint' ? gasPrice : hexToBigInt(gasPrice)\n const priorityValue = typeof priority === 'bigint' ? priority : hexToBigInt(priority)\n if (baseValue <= 0n) {\n errors.push(new Error('Base fee cannot be negative or zero'))\n }\n if (gasLimitValue < 0n) {\n errors.push(new Error('Gas limit cannot be negative'))\n }\n if (gasPriceValue < 0n) {\n errors.push(new Error('Gas price cannot be negative'))\n }\n if (priorityValue < 0n) {\n errors.push(new Error('Priority cannot be negative'))\n }\n return errors\n }\n\n async validate(): Promise<Error[]> {\n return await FeesWrapper.validate({\n base: this.base, gasLimit: this.gasLimit, gasPrice: this.gasPrice, priority: this.priority,\n })\n }\n}\n","import type { WithHashStorageMeta } from '@xyo-network/payload-model'\nimport type {\n SignatureInstance, SignedHydratedBlock,\n SignedHydratedBlockInstance,\n} from '@xyo-network/xl1-model'\n\nimport { createSignatureWrappers } from '../lib/createSignatureWrappers.ts'\nimport { HydratedBlockWrapper } from './HydratedBlock.ts'\n\nexport class SignedHydratedBlockWrapper<T extends SignedHydratedBlock> extends HydratedBlockWrapper<T>\n implements SignedHydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {\n private _signatureCache: SignatureInstance[] = []\n\n get signatureCount(): number {\n return this._signatureCache.length\n }\n\n get signatures(): SignatureInstance[] {\n return [...this._signatureCache]\n }\n\n static override async parse<T extends SignedHydratedBlock>(block: T, validate = false):\n Promise<SignedHydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {\n const wrapper = new SignedHydratedBlockWrapper<T>(block)\n return await wrapper.parse(validate)\n }\n\n signature(index: number): SignatureInstance | undefined {\n return this._signatureCache[index]\n }\n\n override async validate(): Promise<Error[]> {\n const errors: Error[] = []\n errors.push(\n ...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),\n ...(await super.validate()),\n )\n return errors\n }\n\n protected override async parse(validate = false): Promise<SignedHydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {\n this._signatureCache = await createSignatureWrappers(this.data[0])\n await super.parse(validate)\n return this\n }\n}\n"],"mappings":"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","names":["PayloadBuilder","toArrayBuffer","BoundWitnessValidator","SignatureWrapper","address","hash","signature","constructor","validate","BoundWitnessValidator","validateSignature","toArrayBuffer","createSignatureWrappers","bw","signatures","hash","PayloadBuilder","dataHash","i","$signatures","length","push","SignatureWrapper","addresses","hexToBigInt","XYO_ZERO_ADDRESS","validateHydratedBlock","PayloadBuilder","isAllowedBlockPayloadWithHashStorageMeta","isSignedTransactionBoundWitnessWithStorageMeta","isTransfer","PayloadBuilder","exists","hexToBigInt","XYO_ZERO_ADDRESS","validateTransaction","PayloadBuilder","isAllowedBlockPayloadWithHashStorageMeta","isTransfer","hexToBigInt","FeesWrapper","base","gasLimit","gasPrice","priority","constructor","hexToBigInt","validate","errors","baseValue","gasLimitValue","gasPriceValue","priorityValue","push","Error","sumTransfers","payload","total","i","Object","values","transfers","hexToBigInt","HydratedTransactionWrapper","data","fees","payloadsCache","FeesWrapper","boundWitness","elevatedPayloadCount","elevatedPayloads","elevatedHashes","script","map","operation","opCode","args","split","filter","exists","elevated","hash","payloads","find","_hash","isAllowedBlockPayloadWithHashStorageMeta","payloadCount","length","parse","transaction","validate","wrapper","PayloadBuilder","addStorageMeta","parsed","errors","Error","join","elevatedPayload","index","at","gasRequired","reward","reduce","acc","isTransfer","from","XYO_ZERO_ADDRESS","validateTransaction","transactionPayloads","push","SignedHydratedTransactionWrapper","HydratedTransactionWrapper","_signatureCache","signatureCount","length","signatures","parse","transaction","validate","wrapper","PayloadBuilder","addStorageMeta","signature","index","errors","push","Promise","all","map","flat","createSignatureWrappers","data","sumTransfers","payload","total","i","Object","values","transfers","hexToBigInt","HydratedBlockWrapper","data","allPayloadsCache","publicPayloadsCache","transactionsCache","boundWitness","payloadCount","length","payloads","privatePayloadCount","publicPayloadCount","publicPayloads","reward","reduce","acc","isTransfer","from","XYO_ZERO_ADDRESS","transactionCount","transactions","parse","block","validate","wrapper","index","at","transaction","validateHydratedBlock","allPayloads","PayloadBuilder","addStorageMeta","isSignedTransactionBoundWitnessWithStorageMeta","hydratedTransaction","filter","p","payload_hashes","includes","_hash","_dataHash","push","SignedHydratedTransactionWrapper","hash","find","isAllowedBlockPayloadWithHashStorageMeta","Error","SignedHydratedBlockWrapper","HydratedBlockWrapper","_signatureCache","signatureCount","length","signatures","parse","block","validate","wrapper","signature","index","errors","push","Promise","all","map","flat","createSignatureWrappers","data"]}
@@ -1,22 +1,24 @@
1
- import type { Promisable } from '@xylabs/promise';
2
- import type { WithStorageMeta } from '@xyo-network/payload-model';
3
- import type { HydratedBlock, HydratedBlockInstance, SignedHydratedTransactionInstance, TransactionFeesInstance } from '@xyo-network/xl1-model';
4
- export declare class HydratedBlockWrapper<T extends HydratedBlock> implements HydratedBlockInstance<T> {
5
- data: T;
6
- protected payloadsCache: WithStorageMeta<T[1][number]>[];
1
+ import type { WithHashStorageMeta } from '@xyo-network/payload-model';
2
+ import type { AllowedBlockPayload, HydratedBlock, HydratedBlockInstance, SignedHydratedTransactionInstance } from '@xyo-network/xl1-model';
3
+ export declare class HydratedBlockWrapper<T extends HydratedBlock> implements HydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {
4
+ data: [WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]];
5
+ protected allPayloadsCache: WithHashStorageMeta<WithHashStorageMeta<T[1][number]>>[];
6
+ protected publicPayloadsCache: WithHashStorageMeta<WithHashStorageMeta<T[1][number] & AllowedBlockPayload>>[];
7
7
  protected transactionsCache: SignedHydratedTransactionInstance[];
8
- protected constructor(block: T);
9
- get boundWitness(): T[0];
10
- get fees(): TransactionFeesInstance;
8
+ protected constructor(data: [WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]);
9
+ get boundWitness(): WithHashStorageMeta<T[0]>;
11
10
  get payloadCount(): number;
12
11
  get payloads(): T[1][number][];
12
+ get privatePayloadCount(): number;
13
+ get publicPayloadCount(): number;
14
+ get publicPayloads(): (T[1][number] & AllowedBlockPayload)[];
13
15
  get reward(): bigint;
14
16
  get transactionCount(): number;
15
17
  get transactions(): SignedHydratedTransactionInstance[];
16
18
  static parse<T extends HydratedBlock>(block: T, validate?: boolean): Promise<HydratedBlockInstance>;
17
- payload(index: number): T[1][number] | undefined;
19
+ payload(index: number): WithHashStorageMeta<T[1][number]> | undefined;
18
20
  transaction(index: number): SignedHydratedTransactionInstance | undefined;
19
- validate(): Promisable<Error[]>;
20
- protected parse(validate?: boolean): Promise<HydratedBlockInstance<T>>;
21
+ validate(): Promise<Error[]>;
22
+ protected parse(validate?: boolean): Promise<HydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>>;
21
23
  }
22
24
  //# sourceMappingURL=HydratedBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydratedBlock.d.ts","sourceRoot":"","sources":["../../../src/block/HydratedBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EACV,aAAa,EAAE,qBAAqB,EAA6B,iCAAiC,EAClG,uBAAuB,EACxB,MAAM,wBAAwB,CAAA;AAgB/B,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,CAAE,YAAW,qBAAqB,CAAC,CAAC,CAAC;IAC5F,IAAI,EAAE,CAAC,CAAA;IACP,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAK;IAC7D,SAAS,CAAC,iBAAiB,EAAE,iCAAiC,EAAE,CAAK;IAErE,SAAS,aAAa,KAAK,EAAE,CAAC;IAI9B,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAEvB;IAED,IAAI,IAAI,IAAI,uBAAuB,CAElC;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAE7B;IAED,IAAI,MAAM,IAAI,MAAM,CAOnB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,IAAI,YAAY,IAAI,iCAAiC,EAAE,CAEtD;WAEY,KAAK,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAKvG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS;IAIhD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,iCAAiC,GAAG,SAAS;IAIzE,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;cAIf,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAiB3E"}
1
+ {"version":3,"file":"HydratedBlock.d.ts","sourceRoot":"","sources":["../../../src/block/HydratedBlock.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EAAE,qBAAqB,EAA6B,iCAAiC,EACnG,MAAM,wBAAwB,CAAA;AAiB/B,qBAAa,oBAAoB,CAAC,CAAC,SAAS,aAAa,CAAE,YAAW,qBAAqB,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3J,IAAI,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;IACtE,SAAS,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAK;IACzF,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAK;IAClH,SAAS,CAAC,iBAAiB,EAAE,iCAAiC,EAAE,CAAK;IAErE,SAAS,aAAa,IAAI,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAI5F,IAAI,YAAY,8BAEf;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAE7B;IAED,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC,EAAE,CAE3D;IAED,IAAI,MAAM,IAAI,MAAM,CAOnB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,IAAI,YAAY,IAAI,iCAAiC,EAAE,CAEtD;WAEY,KAAK,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAKvG,OAAO,CAAC,KAAK,EAAE,MAAM;IAIrB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,iCAAiC,GAAG,SAAS;IAInE,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;cAIlB,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CA2B1I"}
@@ -1,12 +1,13 @@
1
+ import type { WithHashStorageMeta } from '@xyo-network/payload-model';
1
2
  import type { SignatureInstance, SignedHydratedBlock, SignedHydratedBlockInstance } from '@xyo-network/xl1-model';
2
3
  import { HydratedBlockWrapper } from './HydratedBlock.ts';
3
- export declare class SignedHydratedBlockWrapper<T extends SignedHydratedBlock> extends HydratedBlockWrapper<T> implements SignedHydratedBlockInstance<T> {
4
+ export declare class SignedHydratedBlockWrapper<T extends SignedHydratedBlock> extends HydratedBlockWrapper<T> implements SignedHydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {
4
5
  private _signatureCache;
5
6
  get signatureCount(): number;
6
7
  get signatures(): SignatureInstance[];
7
- static parse<T extends SignedHydratedBlock>(block: T, validate?: boolean): Promise<SignedHydratedBlockInstance<T>>;
8
+ static parse<T extends SignedHydratedBlock>(block: T, validate?: boolean): Promise<SignedHydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>>;
8
9
  signature(index: number): SignatureInstance | undefined;
9
10
  validate(): Promise<Error[]>;
10
- protected parse(validate?: boolean): Promise<SignedHydratedBlockInstance<T>>;
11
+ protected parse(validate?: boolean): Promise<SignedHydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>>;
11
12
  }
12
13
  //# sourceMappingURL=SignedHydratedBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignedHydratedBlock.d.ts","sourceRoot":"","sources":["../../../src/block/SignedHydratedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAAE,mBAAmB,EACtC,2BAA2B,EAC5B,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,qBAAa,0BAA0B,CAAC,CAAC,SAAS,mBAAmB,CAAE,SAAQ,oBAAoB,CAAC,CAAC,CAAE,YAAW,2BAA2B,CAAC,CAAC,CAAC;IAC9I,OAAO,CAAC,eAAe,CAA0B;IAEjD,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAEpC;WAEqB,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAK/H,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIxC,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;cASlB,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;CAK1F"}
1
+ {"version":3,"file":"SignedHydratedBlock.d.ts","sourceRoot":"","sources":["../../../src/block/SignedHydratedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,KAAK,EACV,iBAAiB,EAAE,mBAAmB,EACtC,2BAA2B,EAC5B,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,qBAAa,0BAA0B,CAAC,CAAC,SAAS,mBAAmB,CAAE,SAAQ,oBAAoB,CAAC,CAAC,CACnG,YAAW,2BAA2B,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACxG,OAAO,CAAC,eAAe,CAA0B;IAEjD,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAEpC;WAEqB,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,UAAQ,GACrF,OAAO,CAAC,2BAA2B,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAKtG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIxC,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;cASlB,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAKzJ"}
@@ -1,22 +1,22 @@
1
1
  import type { Promisable } from '@xylabs/promise';
2
2
  import type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model';
3
- import type { AllowedBlockPayload, HydratedTransaction, HydratedTransactionInstance, TransactionFeesInstance } from '@xyo-network/xl1-model';
4
- export declare class HydratedTransactionWrapper<T extends HydratedTransaction> implements HydratedTransactionInstance<T> {
5
- data: T;
3
+ import type { AllowedBlockPayload, HydratedTransaction, HydratedTransactionInstance, HydratedTransactionWithHashStorageMeta, TransactionFeesInstance } from '@xyo-network/xl1-model';
4
+ export declare class HydratedTransactionWrapper<T extends HydratedTransaction> implements HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {
5
+ data: HydratedTransactionWithHashStorageMeta<T>;
6
6
  fees: TransactionFeesInstance;
7
7
  protected payloadsCache: WithHashStorageMeta<Payload>[];
8
- protected constructor(transaction: T);
9
- get boundWitness(): T[0];
8
+ protected constructor(data: HydratedTransactionWithHashStorageMeta<T>);
9
+ get boundWitness(): WithHashStorageMeta<T[0]>;
10
10
  get elevatedPayloadCount(): number;
11
- get elevatedPayloads(): AllowedBlockPayload[];
11
+ get elevatedPayloads(): WithHashStorageMeta<AllowedBlockPayload>[];
12
12
  get payloadCount(): number;
13
- get payloads(): Payload[];
14
- static parse<T extends HydratedTransaction>(transaction: T, validate?: boolean): Promise<HydratedTransactionInstance<T>>;
15
- elevatedPayload(_index: number): AllowedBlockPayload | undefined;
13
+ get payloads(): WithHashStorageMeta<WithHashStorageMeta<T[1][number]>>[];
14
+ static parse<T extends HydratedTransaction>(transaction: T, validate?: boolean): Promise<HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>>;
15
+ elevatedPayload(index: number): WithHashStorageMeta<AllowedBlockPayload & T[1][number]> | undefined;
16
16
  gasRequired(): bigint;
17
- payload(_index: number): Payload | undefined;
17
+ payload(index: number): WithHashStorageMeta<Payload> | undefined;
18
18
  reward(): bigint;
19
19
  validate(): Promisable<Error[]>;
20
- protected parse(validate?: boolean): Promise<HydratedTransactionInstance<T>>;
20
+ protected parse(validate?: boolean): Promise<HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>>;
21
21
  }
22
22
  //# sourceMappingURL=HydratedTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydratedTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/HydratedTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,EACV,mBAAmB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,uBAAuB,EAC/F,MAAM,wBAAwB,CAAA;AAa/B,qBAAa,0BAA0B,CAAC,CAAC,SAAS,mBAAmB,CAAE,YAAW,2BAA2B,CAAC,CAAC,CAAC;IAC9G,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,EAAE,uBAAuB,CAAA;IAE7B,SAAS,CAAC,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAK;IAE5D,SAAS,aAAa,WAAW,EAAE,CAAC;IAOpC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAEvB;IAED,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED,IAAI,gBAAgB,IAAI,mBAAmB,EAAE,CAE5C;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,OAAO,EAAE,CAGxB;WAEY,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAY5H,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIhE,WAAW,IAAI,MAAM;IAIrB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAK5C,MAAM,IAAI,MAAM;IAShB,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;cAIf,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;CAUjF"}
1
+ {"version":3,"file":"HydratedTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/HydratedTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAIjD,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,EACV,mBAAmB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,sCAAsC,EAAE,uBAAuB,EACvI,MAAM,wBAAwB,CAAA;AAa/B,qBAAa,0BAA0B,CAAC,CAAC,SAAS,mBAAmB,CACrE,YAAW,2BAA2B,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACtG,IAAI,EAAE,sCAAsC,CAAC,CAAC,CAAC,CAAA;IAC/C,IAAI,EAAE,uBAAuB,CAAA;IAE7B,SAAS,CAAC,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAK;IAE5D,SAAS,aAAa,IAAI,EAAE,sCAAsC,CAAC,CAAC,CAAC;IAOrE,IAAI,YAAY,8BAEf;IAED,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED,IAAI,gBAAgB,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,CASjE;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAEvE;WAEY,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAClF,OAAO,CAAC,2BAA2B,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAiBtG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;IAInG,WAAW,IAAI,MAAM;IAIrB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,SAAS;IAIhE,MAAM,IAAI,MAAM;IAShB,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;cAIf,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAUhJ"}
@@ -1,12 +1,13 @@
1
+ import type { WithHashStorageMeta } from '@xyo-network/payload-model';
1
2
  import type { SignatureInstance, SignedHydratedTransaction, SignedHydratedTransactionInstance } from '@xyo-network/xl1-model';
2
3
  import { HydratedTransactionWrapper } from './HydratedTransaction.ts';
3
- export declare class SignedHydratedTransactionWrapper<T extends SignedHydratedTransaction> extends HydratedTransactionWrapper<T> implements SignedHydratedTransactionInstance<T> {
4
+ export declare class SignedHydratedTransactionWrapper<T extends SignedHydratedTransaction> extends HydratedTransactionWrapper<T> implements SignedHydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {
4
5
  private _signatureCache;
5
6
  get signatureCount(): number;
6
7
  get signatures(): SignatureInstance[];
7
- static parse<T extends SignedHydratedTransaction>(block: T, validate?: boolean): Promise<SignedHydratedTransactionInstance<T>>;
8
+ static parse<T extends SignedHydratedTransaction>(transaction: T, validate?: boolean): Promise<SignedHydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>>;
8
9
  signature(index: number): SignatureInstance | undefined;
9
10
  validate(): Promise<Error[]>;
10
- protected parse(validate?: boolean): Promise<SignedHydratedTransactionInstance<T>>;
11
+ protected parse(validate?: boolean): Promise<SignedHydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>>;
11
12
  }
12
13
  //# sourceMappingURL=SignedHydratedTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignedHydratedTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/SignedHydratedTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,iCAAiC,EAClC,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAErE,qBAAa,gCAAgC,CAAC,CAAC,SAAS,yBAAyB,CAAE,SAAQ,0BAA0B,CAAC,CAAC,CACrH,YAAW,iCAAiC,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,eAAe,CAA0B;IAEjD,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAEpC;WAEqB,KAAK,CAAC,CAAC,SAAS,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC;IAK3I,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIxC,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;cASlB,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC;CAKhG"}
1
+ {"version":3,"file":"SignedHydratedTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/SignedHydratedTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,iCAAiC,EAClC,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAErE,qBAAa,gCAAgC,CAAC,CAAC,SAAS,yBAAyB,CAAE,SAAQ,0BAA0B,CAAC,CAAC,CACrH,YAAW,iCAAiC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9G,OAAO,CAAC,eAAe,CAA0B;IAEjD,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAEpC;WAEqB,KAAK,CAAC,CAAC,SAAS,yBAAyB,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,UAAQ,GACjG,OAAO,CAAC,iCAAiC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAQ5G,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIxC,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;cASlB,KAAK,CAAC,QAAQ,UAAQ,GAC/C,OAAO,CAAC,iCAAiC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAK7G"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/chain-wrappers",
4
- "version": "1.3.2",
4
+ "version": "1.3.3",
5
5
  "description": "XYO Layer One SDK Wrappers",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -37,9 +37,10 @@
37
37
  "@xylabs/arraybuffer": "^4.8.7",
38
38
  "@xylabs/promise": "^4.8.7",
39
39
  "@xyo-network/boundwitness-validator": "^3.13.0",
40
- "@xyo-network/chain-utils": "^1.3.2",
40
+ "@xyo-network/chain-utils": "^1.3.3",
41
+ "@xyo-network/chain-validation": "^1.3.3",
41
42
  "@xyo-network/payload-model": "^3.13.0",
42
- "@xyo-network/xl1-model": "^1.3.2"
43
+ "@xyo-network/xl1-model": "^1.3.3"
43
44
  },
44
45
  "devDependencies": {
45
46
  "@types/node": "^22.14.1",
@@ -1,13 +1,15 @@
1
1
  import { hexToBigInt } from '@xylabs/hex'
2
2
  import type { Promisable } from '@xylabs/promise'
3
3
  import { XYO_ZERO_ADDRESS } from '@xyo-network/chain-utils'
4
+ import { validateHydratedBlock } from '@xyo-network/chain-validation'
4
5
  import { PayloadBuilder } from '@xyo-network/payload-builder'
5
- import type { WithStorageMeta } from '@xyo-network/payload-model'
6
+ import type { WithHashStorageMeta } from '@xyo-network/payload-model'
6
7
  import type {
7
- HydratedBlock, HydratedBlockInstance, SignedHydratedTransaction, SignedHydratedTransactionInstance,
8
- TransactionFeesInstance, Transfer,
8
+ AllowedBlockPayload,
9
+ HydratedBlock, HydratedBlockInstance, SignedHydratedTransaction, SignedHydratedTransactionInstance, Transfer,
9
10
  } from '@xyo-network/xl1-model'
10
11
  import {
12
+ isAllowedBlockPayloadWithHashStorageMeta,
11
13
  isSignedTransactionBoundWitnessWithStorageMeta,
12
14
  isTransfer,
13
15
  } from '@xyo-network/xl1-model'
@@ -22,33 +24,42 @@ const sumTransfers = (payload: Transfer) => {
22
24
  return total
23
25
  }
24
26
 
25
- export class HydratedBlockWrapper<T extends HydratedBlock> implements HydratedBlockInstance<T> {
26
- data: T
27
- protected payloadsCache: WithStorageMeta<T[1][number]>[] = []
27
+ export class HydratedBlockWrapper<T extends HydratedBlock> implements HydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {
28
+ data: [WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]
29
+ protected allPayloadsCache: WithHashStorageMeta<WithHashStorageMeta<T[1][number]>>[] = []
30
+ protected publicPayloadsCache: WithHashStorageMeta<WithHashStorageMeta<T[1][number] & AllowedBlockPayload>>[] = []
28
31
  protected transactionsCache: SignedHydratedTransactionInstance[] = []
29
32
 
30
- protected constructor(block: T) {
31
- this.data = block
33
+ protected constructor(data: [WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]) {
34
+ this.data = data
32
35
  }
33
36
 
34
- get boundWitness(): T[0] {
35
- throw new Error('Method not implemented.')
36
- }
37
-
38
- get fees(): TransactionFeesInstance {
39
- throw new Error('Method not implemented.')
37
+ get boundWitness() {
38
+ return this.data[0]
40
39
  }
41
40
 
42
41
  get payloadCount(): number {
43
- return this.payloadsCache.length
42
+ return this.allPayloadsCache.length
44
43
  }
45
44
 
46
45
  get payloads(): T[1][number][] {
47
- return this.payloadsCache
46
+ return [...this.allPayloadsCache]
47
+ }
48
+
49
+ get privatePayloadCount(): number {
50
+ return this.data[1].length - this.publicPayloadCount
51
+ }
52
+
53
+ get publicPayloadCount(): number {
54
+ return this.allPayloadsCache.length
55
+ }
56
+
57
+ get publicPayloads(): (T[1][number] & AllowedBlockPayload)[] {
58
+ return [...this.publicPayloadsCache]
48
59
  }
49
60
 
50
61
  get reward(): bigint {
51
- return this.payloadsCache.reduce((acc: bigint, payload) => acc + (
62
+ return this.allPayloadsCache.reduce((acc: bigint, payload) => acc + (
52
63
  isTransfer(payload)
53
64
  ? payload.from === XYO_ZERO_ADDRESS
54
65
  ? sumTransfers(payload)
@@ -69,28 +80,38 @@ export class HydratedBlockWrapper<T extends HydratedBlock> implements HydratedBl
69
80
  return await wrapper.parse(validate)
70
81
  }
71
82
 
72
- payload(index: number): T[1][number] | undefined {
73
- return this.payloadsCache.at(index)
83
+ payload(index: number) {
84
+ return this.data[1].at(index)
74
85
  }
75
86
 
76
87
  transaction(index: number): SignedHydratedTransactionInstance | undefined {
77
88
  return this.transactionsCache.at(index)
78
89
  }
79
90
 
80
- validate(): Promisable<Error[]> {
81
- return []
91
+ async validate(): Promise<Error[]> {
92
+ return await validateHydratedBlock(this.data)
82
93
  }
83
94
 
84
- protected async parse(validate = false): Promise<HydratedBlockInstance<T>> {
85
- const blockPayloads = await PayloadBuilder.addStorageMeta(this.data[1])
86
- for (const payload of blockPayloads) {
95
+ protected async parse(validate = false): Promise<HydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {
96
+ const allPayloads = await PayloadBuilder.addStorageMeta(this.data[1])
97
+ for (const payload of allPayloads) {
87
98
  if (isSignedTransactionBoundWitnessWithStorageMeta(payload)) {
88
- const hydratedTransaction: SignedHydratedTransaction = [payload, blockPayloads.filter(
99
+ const hydratedTransaction: SignedHydratedTransaction = [payload, allPayloads.filter(
89
100
  p => payload.payload_hashes.includes(p._hash) || payload.payload_hashes.includes(p._dataHash),
90
101
  )]
91
102
  this.transactionsCache.push(await SignedHydratedTransactionWrapper.parse(hydratedTransaction))
92
103
  } else {
93
- this.payloadsCache.push(payload)
104
+ this.allPayloadsCache.push(payload)
105
+ }
106
+ }
107
+ for (const hash of this.data[0].payload_hashes) {
108
+ const payload = this.allPayloadsCache.find(p => p._hash === hash)
109
+ if (payload) {
110
+ if (isAllowedBlockPayloadWithHashStorageMeta(payload)) {
111
+ this.publicPayloadsCache.push(payload)
112
+ } else {
113
+ throw new Error('Disallowed payload type')
114
+ }
94
115
  }
95
116
  }
96
117
  if (validate) {
@@ -1,3 +1,4 @@
1
+ import type { WithHashStorageMeta } from '@xyo-network/payload-model'
1
2
  import type {
2
3
  SignatureInstance, SignedHydratedBlock,
3
4
  SignedHydratedBlockInstance,
@@ -6,7 +7,8 @@ import type {
6
7
  import { createSignatureWrappers } from '../lib/createSignatureWrappers.ts'
7
8
  import { HydratedBlockWrapper } from './HydratedBlock.ts'
8
9
 
9
- export class SignedHydratedBlockWrapper<T extends SignedHydratedBlock> extends HydratedBlockWrapper<T> implements SignedHydratedBlockInstance<T> {
10
+ export class SignedHydratedBlockWrapper<T extends SignedHydratedBlock> extends HydratedBlockWrapper<T>
11
+ implements SignedHydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {
10
12
  private _signatureCache: SignatureInstance[] = []
11
13
 
12
14
  get signatureCount(): number {
@@ -17,7 +19,8 @@ export class SignedHydratedBlockWrapper<T extends SignedHydratedBlock> extends H
17
19
  return [...this._signatureCache]
18
20
  }
19
21
 
20
- static override async parse<T extends SignedHydratedBlock>(block: T, validate = false): Promise<SignedHydratedBlockInstance<T>> {
22
+ static override async parse<T extends SignedHydratedBlock>(block: T, validate = false):
23
+ Promise<SignedHydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {
21
24
  const wrapper = new SignedHydratedBlockWrapper<T>(block)
22
25
  return await wrapper.parse(validate)
23
26
  }
@@ -35,7 +38,7 @@ export class SignedHydratedBlockWrapper<T extends SignedHydratedBlock> extends H
35
38
  return errors
36
39
  }
37
40
 
38
- protected override async parse(validate = false): Promise<SignedHydratedBlockInstance<T>> {
41
+ protected override async parse(validate = false): Promise<SignedHydratedBlockInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {
39
42
  this._signatureCache = await createSignatureWrappers(this.data[0])
40
43
  await super.parse(validate)
41
44
  return this
@@ -1,12 +1,14 @@
1
+ import { exists } from '@xylabs/exists'
1
2
  import { hexToBigInt } from '@xylabs/hex'
2
3
  import type { Promisable } from '@xylabs/promise'
3
4
  import { XYO_ZERO_ADDRESS } from '@xyo-network/chain-utils'
5
+ import { validateTransaction } from '@xyo-network/chain-validation'
4
6
  import { PayloadBuilder } from '@xyo-network/payload-builder'
5
7
  import type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'
6
8
  import type {
7
- AllowedBlockPayload, HydratedTransaction, HydratedTransactionInstance, TransactionFeesInstance, Transfer,
9
+ AllowedBlockPayload, HydratedTransaction, HydratedTransactionInstance, HydratedTransactionWithHashStorageMeta, TransactionFeesInstance, Transfer,
8
10
  } from '@xyo-network/xl1-model'
9
- import { isTransfer } from '@xyo-network/xl1-model'
11
+ import { isAllowedBlockPayloadWithHashStorageMeta, isTransfer } from '@xyo-network/xl1-model'
10
12
 
11
13
  import { FeesWrapper } from '../Fees.ts'
12
14
 
@@ -18,20 +20,21 @@ const sumTransfers = (payload: Transfer) => {
18
20
  return total
19
21
  }
20
22
 
21
- export class HydratedTransactionWrapper<T extends HydratedTransaction> implements HydratedTransactionInstance<T> {
22
- data: T
23
+ export class HydratedTransactionWrapper<T extends HydratedTransaction>
24
+ implements HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {
25
+ data: HydratedTransactionWithHashStorageMeta<T>
23
26
  fees: TransactionFeesInstance
24
27
 
25
28
  protected payloadsCache: WithHashStorageMeta<Payload>[] = []
26
29
 
27
- protected constructor(transaction: T) {
28
- this.data = transaction
30
+ protected constructor(data: HydratedTransactionWithHashStorageMeta<T>) {
31
+ this.data = data
29
32
  this.fees = new FeesWrapper(
30
33
  this.boundWitness.fees,
31
34
  )
32
35
  }
33
36
 
34
- get boundWitness(): T[0] {
37
+ get boundWitness() {
35
38
  return this.data[0]
36
39
  }
37
40
 
@@ -39,21 +42,33 @@ export class HydratedTransactionWrapper<T extends HydratedTransaction> implement
39
42
  return 0
40
43
  }
41
44
 
42
- get elevatedPayloads(): AllowedBlockPayload[] {
43
- throw new Error('Method not implemented.')
45
+ get elevatedPayloads(): WithHashStorageMeta<AllowedBlockPayload>[] {
46
+ const elevatedHashes = (this.boundWitness.script ?? []).map((operation) => {
47
+ const [opCode, ...args] = operation.split('|')
48
+ if (opCode === 'elevate') {
49
+ return args[0]
50
+ }
51
+ }).filter(exists)
52
+ const elevated = elevatedHashes.map(hash => this.payloads.find(payload => payload._hash === hash)).filter(exists)
53
+ return elevated.filter(isAllowedBlockPayloadWithHashStorageMeta)
44
54
  }
45
55
 
46
56
  get payloadCount(): number {
47
57
  return this.payloadsCache.length
48
58
  }
49
59
 
50
- get payloads(): Payload[] {
51
- throw new Error('Method not implemented.')
52
- // return this.payloadsCache
60
+ get payloads(): WithHashStorageMeta<WithHashStorageMeta<T[1][number]>>[] {
61
+ return [...this.payloadsCache]
53
62
  }
54
63
 
55
- static async parse<T extends HydratedTransaction>(transaction: T, validate = false): Promise<HydratedTransactionInstance<T>> {
56
- const wrapper = new HydratedTransactionWrapper<T>(transaction)
64
+ static async parse<T extends HydratedTransaction>(transaction: T, validate = false):
65
+ Promise<HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {
66
+ const wrapper = new HydratedTransactionWrapper<T>(
67
+ [
68
+ await PayloadBuilder.addStorageMeta(transaction[0]),
69
+ await PayloadBuilder.addStorageMeta(transaction[1]),
70
+ ],
71
+ )
57
72
  const parsed = await wrapper.parse()
58
73
  if (validate) {
59
74
  const errors = await wrapper.validate()
@@ -64,17 +79,16 @@ export class HydratedTransactionWrapper<T extends HydratedTransaction> implement
64
79
  return parsed
65
80
  }
66
81
 
67
- elevatedPayload(_index: number): AllowedBlockPayload | undefined {
68
- throw new Error('Method not implemented.')
82
+ elevatedPayload(index: number): WithHashStorageMeta<AllowedBlockPayload & T[1][number]> | undefined {
83
+ return this.elevatedPayloads.at(index)
69
84
  }
70
85
 
71
86
  gasRequired(): bigint {
72
87
  throw new Error('Method not implemented.')
73
88
  }
74
89
 
75
- payload(_index: number): Payload | undefined {
76
- throw new Error('Method not implemented.')
77
- // return this.payloadsCache.at(index)
90
+ payload(index: number): WithHashStorageMeta<Payload> | undefined {
91
+ return this.payloads.at(index)
78
92
  }
79
93
 
80
94
  reward(): bigint {
@@ -87,10 +101,10 @@ export class HydratedTransactionWrapper<T extends HydratedTransaction> implement
87
101
  }
88
102
 
89
103
  validate(): Promisable<Error[]> {
90
- return []
104
+ return validateTransaction(this.data)
91
105
  }
92
106
 
93
- protected async parse(validate = false): Promise<HydratedTransactionInstance<T>> {
107
+ protected async parse(validate = false): Promise<HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {
94
108
  const transactionPayloads = await PayloadBuilder.addStorageMeta(this.data[1])
95
109
  for (const payload of transactionPayloads) {
96
110
  this.payloadsCache.push(payload)
@@ -1,3 +1,5 @@
1
+ import { PayloadBuilder } from '@xyo-network/payload-builder'
2
+ import type { WithHashStorageMeta } from '@xyo-network/payload-model'
1
3
  import type {
2
4
  SignatureInstance,
3
5
  SignedHydratedTransaction,
@@ -8,7 +10,7 @@ import { createSignatureWrappers } from '../lib/createSignatureWrappers.ts'
8
10
  import { HydratedTransactionWrapper } from './HydratedTransaction.ts'
9
11
 
10
12
  export class SignedHydratedTransactionWrapper<T extends SignedHydratedTransaction> extends HydratedTransactionWrapper<T>
11
- implements SignedHydratedTransactionInstance<T> {
13
+ implements SignedHydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]> {
12
14
  private _signatureCache: SignatureInstance[] = []
13
15
 
14
16
  get signatureCount(): number {
@@ -19,8 +21,12 @@ export class SignedHydratedTransactionWrapper<T extends SignedHydratedTransactio
19
21
  return [...this._signatureCache]
20
22
  }
21
23
 
22
- static override async parse<T extends SignedHydratedTransaction>(block: T, validate = false): Promise<SignedHydratedTransactionInstance<T>> {
23
- const wrapper = new SignedHydratedTransactionWrapper<T>(block)
24
+ static override async parse<T extends SignedHydratedTransaction>(transaction: T, validate = false):
25
+ Promise<SignedHydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {
26
+ const wrapper = new SignedHydratedTransactionWrapper<T>([
27
+ await PayloadBuilder.addStorageMeta(transaction[0]),
28
+ await PayloadBuilder.addStorageMeta(transaction[1]),
29
+ ])
24
30
  return await wrapper.parse(validate)
25
31
  }
26
32
 
@@ -37,7 +43,8 @@ export class SignedHydratedTransactionWrapper<T extends SignedHydratedTransactio
37
43
  return errors
38
44
  }
39
45
 
40
- protected override async parse(validate = false): Promise<SignedHydratedTransactionInstance<T>> {
46
+ protected override async parse(validate = false):
47
+ Promise<SignedHydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {
41
48
  this._signatureCache = await createSignatureWrappers(this.data[0])
42
49
  await super.parse(validate)
43
50
  return this