@xyo-network/chain-wrappers 1.3.6 → 1.3.7

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.
@@ -42,18 +42,18 @@ import { hexToBigInt as hexToBigInt3 } from "@xylabs/hex";
42
42
  import { XYO_ZERO_ADDRESS as XYO_ZERO_ADDRESS2 } from "@xyo-network/chain-utils";
43
43
  import { validateHydratedBlock } from "@xyo-network/chain-validation";
44
44
  import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/payload-builder";
45
- import { isAllowedBlockPayloadWithHashStorageMeta as isAllowedBlockPayloadWithHashStorageMeta2, isSignedTransactionBoundWitnessWithStorageMeta, isTransfer as isTransfer2 } from "@xyo-network/xl1-model";
45
+ import { isAllowedBlockPayloadWithHashStorageMeta, isSignedTransactionBoundWitnessWithStorageMeta, isTransfer as isTransfer2 } from "@xyo-network/xl1-model";
46
46
 
47
47
  // src/transaction/SignedHydratedTransaction.ts
48
48
  import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
49
49
 
50
50
  // src/transaction/HydratedTransaction.ts
51
- import { exists } from "@xylabs/exists";
52
51
  import { hexToBigInt as hexToBigInt2 } from "@xylabs/hex";
52
+ import { tryExtractElevatedHashes, tryExtractElevatedHashesFromScript } from "@xyo-network/chain-protocol";
53
53
  import { XYO_ZERO_ADDRESS } from "@xyo-network/chain-utils";
54
54
  import { validateTransaction } from "@xyo-network/chain-validation";
55
55
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
56
- import { isAllowedBlockPayloadWithHashStorageMeta, isTransfer } from "@xyo-network/xl1-model";
56
+ import { isTransfer } from "@xyo-network/xl1-model";
57
57
 
58
58
  // src/Fees.ts
59
59
  import { hexToBigInt } from "@xylabs/hex";
@@ -124,17 +124,11 @@ var HydratedTransactionWrapper = class _HydratedTransactionWrapper {
124
124
  return this.data[0];
125
125
  }
126
126
  get elevatedPayloadCount() {
127
- return 0;
127
+ const { script } = this.data[0];
128
+ return script ? tryExtractElevatedHashesFromScript(script).length : 0;
128
129
  }
129
130
  get elevatedPayloads() {
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);
131
+ return tryExtractElevatedHashes(this.data);
138
132
  }
139
133
  get payloadCount() {
140
134
  return this.payloadsCache.length;
@@ -300,7 +294,7 @@ var HydratedBlockWrapper = class _HydratedBlockWrapper {
300
294
  for (const hash of this.data[0].payload_hashes) {
301
295
  const payload = this.allPayloadsCache.find((p) => p._hash === hash);
302
296
  if (payload) {
303
- if (isAllowedBlockPayloadWithHashStorageMeta2(payload)) {
297
+ if (isAllowedBlockPayloadWithHashStorageMeta(payload)) {
304
298
  this.publicPayloadsCache.push(payload);
305
299
  } else {
306
300
  throw new Error("Disallowed payload type");
@@ -1 +1 @@
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 { 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
+ {"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 { 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 { hexToBigInt } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { tryExtractElevatedHashes, tryExtractElevatedHashesFromScript } from '@xyo-network/chain-protocol'\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 { 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 const { script } = this.data[0]\n return script ? tryExtractElevatedHashesFromScript(script).length : 0\n }\n\n get elevatedPayloads(): WithHashStorageMeta<AllowedBlockPayload>[] {\n return tryExtractElevatedHashes(this.data)\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","hexToBigInt","tryExtractElevatedHashes","tryExtractElevatedHashesFromScript","XYO_ZERO_ADDRESS","validateTransaction","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","FeesWrapper","boundWitness","elevatedPayloadCount","script","tryExtractElevatedHashesFromScript","length","elevatedPayloads","tryExtractElevatedHashes","payloadCount","payloads","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 +1 @@
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
+ {"version":3,"file":"HydratedTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/HydratedTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAKjD,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,CAGjC;IAED,IAAI,gBAAgB,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,CAEjE;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"}
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.6",
4
+ "version": "1.3.7",
5
5
  "description": "XYO Layer One SDK Wrappers",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -35,17 +35,23 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@xylabs/arraybuffer": "^4.8.7",
38
+ "@xylabs/hex": "^4.8.7",
38
39
  "@xylabs/promise": "^4.8.7",
39
- "@xyo-network/boundwitness-validator": "^3.13.0",
40
- "@xyo-network/chain-utils": "^1.3.6",
41
- "@xyo-network/chain-validation": "^1.3.6",
42
- "@xyo-network/payload-model": "^3.13.0",
43
- "@xyo-network/xl1-model": "^1.3.6"
40
+ "@xyo-network/account-model": "^3.14.13",
41
+ "@xyo-network/boundwitness-model": "^3.14.13",
42
+ "@xyo-network/boundwitness-validator": "^3.14.13",
43
+ "@xyo-network/chain-protocol": "^1.3.7",
44
+ "@xyo-network/chain-utils": "^1.3.7",
45
+ "@xyo-network/chain-validation": "^1.3.7",
46
+ "@xyo-network/payload-builder": "^3.14.13",
47
+ "@xyo-network/payload-model": "^3.14.13",
48
+ "@xyo-network/xl1-model": "^1.3.7"
44
49
  },
45
50
  "devDependencies": {
46
- "@types/node": "^22.15.0",
51
+ "@types/node": "^22.15.3",
47
52
  "@xylabs/ts-scripts-yarn3": "^6.3.5",
48
53
  "@xylabs/tsconfig": "^6.3.5",
54
+ "knip": "^5.50.5",
49
55
  "typescript": "^5.8.3"
50
56
  },
51
57
  "engines": {
@@ -1,6 +1,6 @@
1
- import { exists } from '@xylabs/exists'
2
1
  import { hexToBigInt } from '@xylabs/hex'
3
2
  import type { Promisable } from '@xylabs/promise'
3
+ import { tryExtractElevatedHashes, tryExtractElevatedHashesFromScript } from '@xyo-network/chain-protocol'
4
4
  import { XYO_ZERO_ADDRESS } from '@xyo-network/chain-utils'
5
5
  import { validateTransaction } from '@xyo-network/chain-validation'
6
6
  import { PayloadBuilder } from '@xyo-network/payload-builder'
@@ -8,7 +8,7 @@ import type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'
8
8
  import type {
9
9
  AllowedBlockPayload, HydratedTransaction, HydratedTransactionInstance, HydratedTransactionWithHashStorageMeta, TransactionFeesInstance, Transfer,
10
10
  } from '@xyo-network/xl1-model'
11
- import { isAllowedBlockPayloadWithHashStorageMeta, isTransfer } from '@xyo-network/xl1-model'
11
+ import { isTransfer } from '@xyo-network/xl1-model'
12
12
 
13
13
  import { FeesWrapper } from '../Fees.ts'
14
14
 
@@ -39,18 +39,12 @@ implements HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStora
39
39
  }
40
40
 
41
41
  get elevatedPayloadCount(): number {
42
- return 0
42
+ const { script } = this.data[0]
43
+ return script ? tryExtractElevatedHashesFromScript(script).length : 0
43
44
  }
44
45
 
45
46
  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)
47
+ return tryExtractElevatedHashes(this.data)
54
48
  }
55
49
 
56
50
  get payloadCount(): number {