@xyo-network/xl1-wrappers 1.16.24 → 1.16.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/index.mjs +2 -1
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/lib/createSignatureWrappers.d.ts.map +1 -1
- package/dist/neutral/transaction/HydratedTransaction.d.ts +3 -6
- package/dist/neutral/transaction/HydratedTransaction.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/lib/createSignatureWrappers.ts +2 -1
- package/src/transaction/HydratedTransaction.ts +4 -5
package/dist/neutral/index.mjs
CHANGED
|
@@ -97,6 +97,7 @@ var FeesWrapper = class _FeesWrapper {
|
|
|
97
97
|
};
|
|
98
98
|
|
|
99
99
|
// src/lib/createSignatureWrappers.ts
|
|
100
|
+
import { asHex } from "@xylabs/sdk-js";
|
|
100
101
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
101
102
|
|
|
102
103
|
// src/Signature.ts
|
|
@@ -127,7 +128,7 @@ var createSignatureWrappers = /* @__PURE__ */ __name(async (bw) => {
|
|
|
127
128
|
const signatures = [];
|
|
128
129
|
const hash = await PayloadBuilder.dataHash(bw);
|
|
129
130
|
for (let i = 0; i < bw.$signatures.length; i++) {
|
|
130
|
-
signatures.push(new SignatureWrapper(bw.$signatures[i], bw.addresses[i], hash));
|
|
131
|
+
signatures.push(new SignatureWrapper(asHex(bw.$signatures[i], true), bw.addresses[i], hash));
|
|
131
132
|
}
|
|
132
133
|
return signatures;
|
|
133
134
|
}, "createSignatureWrappers");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Base.ts","../../src/chain/chain.ts","../../src/Fees.ts","../../src/lib/createSignatureWrappers.ts","../../src/Signature.ts","../../src/transaction/HydratedTransaction.ts"],"sourcesContent":["import type { PromisableArray } from '@xylabs/sdk-js'\nimport type { XyoConnection } from '@xyo-network/xl1-protocol-sdk'\n\nexport interface BaseWrapperConfig<T> {\n provider: XyoConnection\n value: T\n}\n\nexport class BaseWrapper<T, C extends BaseWrapperConfig<T> = BaseWrapperConfig<T>> {\n protected readonly config: Partial<C>\n protected readonly value: T\n protected constructor(value: T, config: Partial<C> = {}) {\n this.config = config\n this.value = value\n }\n\n get provider(): XyoConnection | undefined {\n return this.config.provider\n }\n\n static async create<T, C extends BaseWrapperConfig<T> = BaseWrapperConfig<T>>(value: T, config: Partial<C> = {}) {\n if ((await this.validateValue(value)).length > 0) {\n throw new Error(`Invalid value for ${this.constructor.name}: ${value}`)\n }\n if ((await this.validateConfig(config)).length > 0) {\n throw new Error(`Invalid config for ${this.constructor.name}: ${config}`)\n }\n return new this<T>(value, config)\n }\n\n static validateConfig(_config: unknown): PromisableArray<Error> {\n return []\n }\n\n static validateValue(_value: unknown): PromisableArray<Error> {\n return []\n }\n\n validate(): PromisableArray<Error> {\n return []\n }\n}\n","import type { Address } from '@xylabs/sdk-js'\n\nimport type { BaseWrapperConfig } from '../Base.ts'\nimport { BaseWrapper } from '../Base.ts'\n\nexport class ChainWrapper extends BaseWrapper<Address, BaseWrapperConfig<Address>> {\n get id(): Address {\n return this.value\n }\n}\n","import type { Hex, Promisable } from '@xylabs/sdk-js'\nimport { hexToBigInt } from '@xylabs/sdk-js'\nimport type { TransactionFeesBigInt, TransactionFeesHex } from '@xyo-network/xl1-protocol'\nimport { AttoXL1 } from '@xyo-network/xl1-protocol'\nimport type { TransactionFeesInstance } from '@xyo-network/xl1-protocol-sdk'\n\nfunction parseHexOrBigInt(value: Hex | bigint) {\n return AttoXL1((typeof value === 'bigint' ? value : hexToBigInt(value)))\n}\n\nexport class FeesWrapper implements TransactionFeesInstance {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n\n constructor({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt) {\n this.base = parseHexOrBigInt(base)\n this.gasLimit = parseHexOrBigInt(gasLimit)\n this.gasPrice = parseHexOrBigInt(gasPrice)\n this.priority = parseHexOrBigInt(priority)\n }\n\n static validate({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt): Promisable<Error[]> {\n const errors: Error[] = []\n const baseValue = parseHexOrBigInt(base)\n const gasLimitValue = parseHexOrBigInt(gasLimit)\n const gasPriceValue = parseHexOrBigInt(gasPrice)\n const priorityValue = parseHexOrBigInt(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 { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignatureInstance } from '@xyo-network/xl1-protocol-sdk'\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 type {\n Address, Hash, Hex,\n} from '@xylabs/sdk-js'\nimport { toArrayBuffer } from '@xylabs/sdk-js'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type { SignatureInstance } from '@xyo-network/xl1-protocol-sdk'\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.hash, this.address, this.signature)\n }\n}\n","import type { Hash, Hex } from '@xylabs/sdk-js'\nimport { hexToBigInt, isDefined } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, Schema,\n WithHashMeta,\n WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, HydratedTransactionWithStorageMeta, Transfer,\n} from '@xyo-network/xl1-protocol'\nimport { isTransfer, XYO_ZERO_ADDRESS } from '@xyo-network/xl1-protocol'\nimport type {\n HydratedTransactionInstance, SignatureInstance,\n TransactionFeesInstance,\n} from '@xyo-network/xl1-protocol-sdk'\nimport {\n transactionRequiredGas, tryExtractElevatedHashes, tryExtractElevatedHashesFromScript,\n} from '@xyo-network/xl1-protocol-sdk'\nimport { validateTransaction } from '@xyo-network/xl1-validation'\n\nimport { FeesWrapper } from '../Fees.ts'\nimport { createSignatureWrappers } from '../lib/index.ts'\n\nconst sumTransfers = (payload: Transfer) => {\n let total = 0n\n for (let i of Object.values(payload.transfers)) {\n total += hexToBigInt(i ?? '00' as Hex)\n }\n return total\n}\n\nexport class HydratedTransactionWrapper<T extends HydratedTransactionWithStorageMeta> implements HydratedTransactionInstance<[T[0],\n T[1][number][]]> {\n data: T\n fees: TransactionFeesInstance\n\n protected payloadsCache: WithStorageMeta<Payload>[] = []\n\n private _signatureCache: SignatureInstance[] = []\n\n protected constructor(data: T) {\n this.data = data\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 const { script } = this.data[0]\n return script ? tryExtractElevatedHashesFromScript(script).length : 0\n }\n\n get elevatedPayloads(): WithStorageMeta<AllowedBlockPayload>[] {\n return tryExtractElevatedHashes(this.data)\n }\n\n get externalPayloads(): Record<Hash, Schema | Payload> {\n const allPayloads = this.payloads\n const external: Record<Hash, Schema | Payload> = {}\n for (let i = 0; i < this.boundWitness.payload_hashes.length; i++) {\n const payloadHash = this.boundWitness.payload_hashes[i]\n const payload = allPayloads.find(p => p._hash === payloadHash)\n external[payloadHash] = isDefined(payload) ? payload : this.boundWitness.payload_schemas[i]\n }\n return external\n }\n\n get from() {\n return this.data[0].from\n }\n\n get payloadCount(): number {\n return this.payloadsCache.length\n }\n\n get payloads(): WithHashMeta<WithStorageMeta<T[1][number]>>[] {\n return [...this.payloadsCache]\n }\n\n get privateExternalPayloads(): Record<Hash, Schema> {\n const allPayloads = this.payloads\n const missing: Record<Hash, Schema> = {}\n for (let i = 0; i < this.boundWitness.payload_hashes.length; i++) {\n const payloadHash = this.boundWitness.payload_hashes[i]\n if (!allPayloads.some(p => p._hash === payloadHash)) {\n missing[payloadHash] = this.boundWitness.payload_schemas[i]\n }\n }\n return missing\n }\n\n // list all the payloads that are included in the transaction and are not elevated and found in the hydration\n get publicExternalPayloads(): Payload[] {\n const allPayloads = this.payloads\n const elevatedPayloads = this.elevatedPayloads\n return allPayloads.filter(p => !elevatedPayloads.some(ep => ep._hash === p._hash))\n }\n\n get signatureCount(): number {\n return this._signatureCache.length\n }\n\n get signatures(): SignatureInstance[] {\n return [...this._signatureCache]\n }\n\n static async parse<T extends HydratedTransactionWithStorageMeta>(transaction: T, validate = false): Promise<HydratedTransactionInstance<[T[0],\n T[1][number][]]>> {\n const wrapper = new HydratedTransactionWrapper<T>(\n transaction,\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): WithHashMeta<AllowedBlockPayload & T[1][number]> | undefined {\n return this.elevatedPayloads.at(index)\n }\n\n gasRequired(): bigint {\n return transactionRequiredGas(this.data)\n }\n\n payload(index: number): WithStorageMeta<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 signature(index: number): SignatureInstance | undefined {\n return this._signatureCache[index]\n }\n\n async validate(): Promise<Error[]> {\n const errors: Error[] = [...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),\n ...(await validateTransaction(this.data))]\n return errors\n }\n\n protected async parse(validate = false): Promise<HydratedTransactionInstance<[WithHashMeta<T[0]>, WithHashMeta<T[1][number]>[]]>> {\n const transactionPayloads = await PayloadBuilder.addStorageMeta(this.data[1])\n this._signatureCache = await createSignatureWrappers(this.data[0])\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"],"mappings":"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","names":["BaseWrapper","config","value","provider","create","validateValue","length","Error","name","validateConfig","_config","_value","validate","ChainWrapper","BaseWrapper","id","value","hexToBigInt","AttoXL1","parseHexOrBigInt","value","AttoXL1","hexToBigInt","FeesWrapper","base","gasLimit","gasPrice","priority","validate","errors","baseValue","gasLimitValue","gasPriceValue","priorityValue","push","Error","PayloadBuilder","toArrayBuffer","BoundWitnessValidator","SignatureWrapper","address","hash","signature","validate","BoundWitnessValidator","validateSignature","toArrayBuffer","createSignatureWrappers","bw","signatures","hash","PayloadBuilder","dataHash","i","$signatures","length","push","SignatureWrapper","addresses","hexToBigInt","isDefined","PayloadBuilder","isTransfer","XYO_ZERO_ADDRESS","transactionRequiredGas","tryExtractElevatedHashes","tryExtractElevatedHashesFromScript","validateTransaction","sumTransfers","payload","total","i","Object","values","transfers","hexToBigInt","HydratedTransactionWrapper","data","fees","payloadsCache","_signatureCache","FeesWrapper","boundWitness","elevatedPayloadCount","script","tryExtractElevatedHashesFromScript","length","elevatedPayloads","tryExtractElevatedHashes","externalPayloads","allPayloads","payloads","external","payload_hashes","payloadHash","find","p","_hash","isDefined","payload_schemas","from","payloadCount","privateExternalPayloads","missing","some","publicExternalPayloads","filter","ep","signatureCount","signatures","parse","transaction","validate","wrapper","parsed","errors","Error","join","elevatedPayload","index","at","gasRequired","transactionRequiredGas","reward","reduce","acc","isTransfer","XYO_ZERO_ADDRESS","signature","Promise","all","map","flat","validateTransaction","transactionPayloads","PayloadBuilder","addStorageMeta","createSignatureWrappers","push"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Base.ts","../../src/chain/chain.ts","../../src/Fees.ts","../../src/lib/createSignatureWrappers.ts","../../src/Signature.ts","../../src/transaction/HydratedTransaction.ts"],"sourcesContent":["import type { PromisableArray } from '@xylabs/sdk-js'\nimport type { XyoConnection } from '@xyo-network/xl1-protocol-sdk'\n\nexport interface BaseWrapperConfig<T> {\n provider: XyoConnection\n value: T\n}\n\nexport class BaseWrapper<T, C extends BaseWrapperConfig<T> = BaseWrapperConfig<T>> {\n protected readonly config: Partial<C>\n protected readonly value: T\n protected constructor(value: T, config: Partial<C> = {}) {\n this.config = config\n this.value = value\n }\n\n get provider(): XyoConnection | undefined {\n return this.config.provider\n }\n\n static async create<T, C extends BaseWrapperConfig<T> = BaseWrapperConfig<T>>(value: T, config: Partial<C> = {}) {\n if ((await this.validateValue(value)).length > 0) {\n throw new Error(`Invalid value for ${this.constructor.name}: ${value}`)\n }\n if ((await this.validateConfig(config)).length > 0) {\n throw new Error(`Invalid config for ${this.constructor.name}: ${config}`)\n }\n return new this<T>(value, config)\n }\n\n static validateConfig(_config: unknown): PromisableArray<Error> {\n return []\n }\n\n static validateValue(_value: unknown): PromisableArray<Error> {\n return []\n }\n\n validate(): PromisableArray<Error> {\n return []\n }\n}\n","import type { Address } from '@xylabs/sdk-js'\n\nimport type { BaseWrapperConfig } from '../Base.ts'\nimport { BaseWrapper } from '../Base.ts'\n\nexport class ChainWrapper extends BaseWrapper<Address, BaseWrapperConfig<Address>> {\n get id(): Address {\n return this.value\n }\n}\n","import type { Hex, Promisable } from '@xylabs/sdk-js'\nimport { hexToBigInt } from '@xylabs/sdk-js'\nimport type { TransactionFeesBigInt, TransactionFeesHex } from '@xyo-network/xl1-protocol'\nimport { AttoXL1 } from '@xyo-network/xl1-protocol'\nimport type { TransactionFeesInstance } from '@xyo-network/xl1-protocol-sdk'\n\nfunction parseHexOrBigInt(value: Hex | bigint) {\n return AttoXL1((typeof value === 'bigint' ? value : hexToBigInt(value)))\n}\n\nexport class FeesWrapper implements TransactionFeesInstance {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n\n constructor({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt) {\n this.base = parseHexOrBigInt(base)\n this.gasLimit = parseHexOrBigInt(gasLimit)\n this.gasPrice = parseHexOrBigInt(gasPrice)\n this.priority = parseHexOrBigInt(priority)\n }\n\n static validate({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt): Promisable<Error[]> {\n const errors: Error[] = []\n const baseValue = parseHexOrBigInt(base)\n const gasLimitValue = parseHexOrBigInt(gasLimit)\n const gasPriceValue = parseHexOrBigInt(gasPrice)\n const priorityValue = parseHexOrBigInt(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 { asHex } from '@xylabs/sdk-js'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignatureInstance } from '@xyo-network/xl1-protocol-sdk'\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(asHex(bw.$signatures[i], true), bw.addresses[i], hash),\n )\n }\n return signatures\n}\n","import type {\n Address, Hash, Hex,\n} from '@xylabs/sdk-js'\nimport { toArrayBuffer } from '@xylabs/sdk-js'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type { SignatureInstance } from '@xyo-network/xl1-protocol-sdk'\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.hash, this.address, this.signature)\n }\n}\n","import type { Hash, Hex } from '@xylabs/sdk-js'\nimport { hexToBigInt, isDefined } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, Schema,\n WithHashMeta,\n WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, HydratedTransactionWithHashMeta, Transfer,\n} from '@xyo-network/xl1-protocol'\nimport { isTransfer, XYO_ZERO_ADDRESS } from '@xyo-network/xl1-protocol'\nimport type {\n HydratedTransactionInstance, SignatureInstance,\n TransactionFeesInstance,\n} from '@xyo-network/xl1-protocol-sdk'\nimport {\n transactionRequiredGas, tryExtractElevatedHashes, tryExtractElevatedHashesFromScript,\n} from '@xyo-network/xl1-protocol-sdk'\nimport { validateTransaction } from '@xyo-network/xl1-validation'\n\nimport { FeesWrapper } from '../Fees.ts'\nimport { createSignatureWrappers } from '../lib/index.ts'\n\nconst sumTransfers = (payload: Transfer) => {\n let total = 0n\n for (let i of Object.values(payload.transfers)) {\n total += hexToBigInt(i ?? '00' as Hex)\n }\n return total\n}\n\nexport class HydratedTransactionWrapper<T extends HydratedTransactionWithHashMeta> implements HydratedTransactionInstance<T> {\n data: T\n fees: TransactionFeesInstance\n\n protected payloadsCache: WithStorageMeta<Payload>[] = []\n\n private _signatureCache: SignatureInstance[] = []\n\n protected constructor(data: T) {\n this.data = data\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 const { script } = this.data[0]\n return script ? tryExtractElevatedHashesFromScript(script).length : 0\n }\n\n get elevatedPayloads() {\n return tryExtractElevatedHashes(this.data)\n }\n\n get externalPayloads(): Record<Hash, Schema | Payload> {\n const allPayloads = this.payloads\n const external: Record<Hash, Schema | Payload> = {}\n for (let i = 0; i < this.boundWitness.payload_hashes.length; i++) {\n const payloadHash = this.boundWitness.payload_hashes[i]\n const payload = allPayloads.find(p => p._hash === payloadHash)\n external[payloadHash] = isDefined(payload) ? payload : this.boundWitness.payload_schemas[i]\n }\n return external\n }\n\n get from() {\n return this.data[0].from\n }\n\n get payloadCount(): number {\n return this.payloadsCache.length\n }\n\n get payloads(): WithHashMeta<WithStorageMeta<T[1][number]>>[] {\n return [...this.payloadsCache]\n }\n\n get privateExternalPayloads(): Record<Hash, Schema> {\n const allPayloads = this.payloads\n const missing: Record<Hash, Schema> = {}\n for (let i = 0; i < this.boundWitness.payload_hashes.length; i++) {\n const payloadHash = this.boundWitness.payload_hashes[i]\n if (!allPayloads.some(p => p._hash === payloadHash)) {\n missing[payloadHash] = this.boundWitness.payload_schemas[i]\n }\n }\n return missing\n }\n\n // list all the payloads that are included in the transaction and are not elevated and found in the hydration\n get publicExternalPayloads(): Payload[] {\n const allPayloads = this.payloads\n const elevatedPayloads = this.elevatedPayloads\n return allPayloads.filter(p => !elevatedPayloads.some(ep => ep._hash === p._hash))\n }\n\n get signatureCount(): number {\n return this._signatureCache.length\n }\n\n get signatures(): SignatureInstance[] {\n return [...this._signatureCache]\n }\n\n static async parse<T extends HydratedTransactionWithHashMeta>(transaction: T, validate = false): Promise<HydratedTransactionInstance<[T[0],\n T[1][number][]]>> {\n const wrapper = new HydratedTransactionWrapper<T>(\n transaction,\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): WithHashMeta<AllowedBlockPayload & T[1][number]> | undefined {\n return this.elevatedPayloads.at(index)\n }\n\n gasRequired(): bigint {\n return transactionRequiredGas(this.data)\n }\n\n payload(index: number): WithStorageMeta<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 signature(index: number): SignatureInstance | undefined {\n return this._signatureCache[index]\n }\n\n async validate(): Promise<Error[]> {\n const errors: Error[] = [...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),\n ...(await validateTransaction(this.data))]\n return errors\n }\n\n protected async parse(validate = false): Promise<HydratedTransactionInstance<[WithHashMeta<T[0]>, WithHashMeta<T[1][number]>[]]>> {\n const transactionPayloads = await PayloadBuilder.addStorageMeta(this.data[1])\n this._signatureCache = await createSignatureWrappers(this.data[0])\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"],"mappings":"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","names":["BaseWrapper","config","value","provider","create","validateValue","length","Error","name","validateConfig","_config","_value","validate","ChainWrapper","BaseWrapper","id","value","hexToBigInt","AttoXL1","parseHexOrBigInt","value","AttoXL1","hexToBigInt","FeesWrapper","base","gasLimit","gasPrice","priority","validate","errors","baseValue","gasLimitValue","gasPriceValue","priorityValue","push","Error","asHex","PayloadBuilder","toArrayBuffer","BoundWitnessValidator","SignatureWrapper","address","hash","signature","validate","BoundWitnessValidator","validateSignature","toArrayBuffer","createSignatureWrappers","bw","signatures","hash","PayloadBuilder","dataHash","i","$signatures","length","push","SignatureWrapper","asHex","addresses","hexToBigInt","isDefined","PayloadBuilder","isTransfer","XYO_ZERO_ADDRESS","transactionRequiredGas","tryExtractElevatedHashes","tryExtractElevatedHashesFromScript","validateTransaction","sumTransfers","payload","total","i","Object","values","transfers","hexToBigInt","HydratedTransactionWrapper","data","fees","payloadsCache","_signatureCache","FeesWrapper","boundWitness","elevatedPayloadCount","script","tryExtractElevatedHashesFromScript","length","elevatedPayloads","tryExtractElevatedHashes","externalPayloads","allPayloads","payloads","external","payload_hashes","payloadHash","find","p","_hash","isDefined","payload_schemas","from","payloadCount","privateExternalPayloads","missing","some","publicExternalPayloads","filter","ep","signatureCount","signatures","parse","transaction","validate","wrapper","parsed","errors","Error","join","elevatedPayload","index","at","gasRequired","transactionRequiredGas","reward","reduce","acc","isTransfer","XYO_ZERO_ADDRESS","signature","Promise","all","map","flat","validateTransaction","transactionPayloads","PayloadBuilder","addStorageMeta","createSignatureWrappers","push"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSignatureWrappers.d.ts","sourceRoot":"","sources":["../../../src/lib/createSignatureWrappers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createSignatureWrappers.d.ts","sourceRoot":"","sources":["../../../src/lib/createSignatureWrappers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAItE,eAAO,MAAM,uBAAuB,GAAU,IAAI,YAAY,KAAG,OAAO,CAAC,iBAAiB,EAAE,CAS3F,CAAA"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import type { Hash } from '@xylabs/sdk-js';
|
|
2
2
|
import type { Payload, Schema, WithHashMeta, WithStorageMeta } from '@xyo-network/payload-model';
|
|
3
|
-
import type { AllowedBlockPayload,
|
|
3
|
+
import type { AllowedBlockPayload, HydratedTransactionWithHashMeta } from '@xyo-network/xl1-protocol';
|
|
4
4
|
import type { HydratedTransactionInstance, SignatureInstance, TransactionFeesInstance } from '@xyo-network/xl1-protocol-sdk';
|
|
5
|
-
export declare class HydratedTransactionWrapper<T extends
|
|
6
|
-
T[0],
|
|
7
|
-
T[1][number][]
|
|
8
|
-
]> {
|
|
5
|
+
export declare class HydratedTransactionWrapper<T extends HydratedTransactionWithHashMeta> implements HydratedTransactionInstance<T> {
|
|
9
6
|
data: T;
|
|
10
7
|
fees: TransactionFeesInstance;
|
|
11
8
|
protected payloadsCache: WithStorageMeta<Payload>[];
|
|
@@ -22,7 +19,7 @@ export declare class HydratedTransactionWrapper<T extends HydratedTransactionWit
|
|
|
22
19
|
get publicExternalPayloads(): Payload[];
|
|
23
20
|
get signatureCount(): number;
|
|
24
21
|
get signatures(): SignatureInstance[];
|
|
25
|
-
static parse<T extends
|
|
22
|
+
static parse<T extends HydratedTransactionWithHashMeta>(transaction: T, validate?: boolean): Promise<HydratedTransactionInstance<[
|
|
26
23
|
T[0],
|
|
27
24
|
T[1][number][]
|
|
28
25
|
]>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HydratedTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/HydratedTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EACV,OAAO,EAAE,MAAM,EACf,YAAY,EACZ,eAAe,EAChB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EACV,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"HydratedTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/HydratedTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EACV,OAAO,EAAE,MAAM,EACf,YAAY,EACZ,eAAe,EAChB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EACV,mBAAmB,EAAE,+BAA+B,EACrD,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EACV,2BAA2B,EAAE,iBAAiB,EAC9C,uBAAuB,EACxB,MAAM,+BAA+B,CAAA;AAiBtC,qBAAa,0BAA0B,CAAC,CAAC,SAAS,+BAA+B,CAAE,YAAW,2BAA2B,CAAC,CAAC,CAAC;IAC1H,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,EAAE,uBAAuB,CAAA;IAE7B,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAK;IAExD,OAAO,CAAC,eAAe,CAA0B;IAEjD,SAAS,aAAa,IAAI,EAAE,CAAC;IAO7B,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAEvB;IAED,IAAI,oBAAoB,IAAI,MAAM,CAGjC;IAED,IAAI,gBAAgB,2CAEnB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CASrD;IAED,IAAI,IAAI,qCAEP;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAE5D;IAED,IAAI,uBAAuB,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAUlD;IAGD,IAAI,sBAAsB,IAAI,OAAO,EAAE,CAItC;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAEpC;WAEY,KAAK,CAAC,CAAC,SAAS,+BAA+B,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;QACxI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;KAAC,CAAC,CAAC;IAcnB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;IAI5F,WAAW,IAAI,MAAM;IAIrB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS;IAI5D,MAAM,IAAI,MAAM;IAShB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIjD,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;cAMlB,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAWlI"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/xl1-wrappers",
|
|
4
|
-
"version": "1.16.
|
|
4
|
+
"version": "1.16.26",
|
|
5
5
|
"description": "XYO Layer One SDK Wrappers",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
"!**/*.test.*"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@xylabs/sdk-js": "~5.0.
|
|
43
|
-
"@xyo-network/boundwitness-model": "~5.
|
|
44
|
-
"@xyo-network/boundwitness-validator": "~5.
|
|
45
|
-
"@xyo-network/payload-builder": "~5.
|
|
46
|
-
"@xyo-network/payload-model": "~5.
|
|
47
|
-
"@xyo-network/xl1-protocol": "~1.
|
|
48
|
-
"@xyo-network/xl1-protocol-sdk": "~1.16.
|
|
49
|
-
"@xyo-network/xl1-validation": "~1.16.
|
|
42
|
+
"@xylabs/sdk-js": "~5.0.46",
|
|
43
|
+
"@xyo-network/boundwitness-model": "~5.2.10",
|
|
44
|
+
"@xyo-network/boundwitness-validator": "~5.2.10",
|
|
45
|
+
"@xyo-network/payload-builder": "~5.2.10",
|
|
46
|
+
"@xyo-network/payload-model": "~5.2.10",
|
|
47
|
+
"@xyo-network/xl1-protocol": "~1.14.15",
|
|
48
|
+
"@xyo-network/xl1-protocol-sdk": "~1.16.26",
|
|
49
|
+
"@xyo-network/xl1-validation": "~1.16.26"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/node": "~24.10.1",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@xylabs/tsconfig": "~7.2.8",
|
|
55
55
|
"eslint": "^9.39.1",
|
|
56
56
|
"typescript": "~5.9.3",
|
|
57
|
-
"vitest": "~4.0.
|
|
57
|
+
"vitest": "~4.0.13"
|
|
58
58
|
},
|
|
59
59
|
"engines": {
|
|
60
60
|
"node": ">=22.3 <23"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { asHex } from '@xylabs/sdk-js'
|
|
1
2
|
import type { BoundWitness } from '@xyo-network/boundwitness-model'
|
|
2
3
|
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
3
4
|
import type { SignatureInstance } from '@xyo-network/xl1-protocol-sdk'
|
|
@@ -9,7 +10,7 @@ export const createSignatureWrappers = async (bw: BoundWitness): Promise<Signatu
|
|
|
9
10
|
const hash = await PayloadBuilder.dataHash(bw)
|
|
10
11
|
for (let i = 0; i < bw.$signatures.length; i++) {
|
|
11
12
|
signatures.push(
|
|
12
|
-
new SignatureWrapper(bw.$signatures[i], bw.addresses[i], hash),
|
|
13
|
+
new SignatureWrapper(asHex(bw.$signatures[i], true), bw.addresses[i], hash),
|
|
13
14
|
)
|
|
14
15
|
}
|
|
15
16
|
return signatures
|
|
@@ -7,7 +7,7 @@ import type {
|
|
|
7
7
|
WithStorageMeta,
|
|
8
8
|
} from '@xyo-network/payload-model'
|
|
9
9
|
import type {
|
|
10
|
-
AllowedBlockPayload,
|
|
10
|
+
AllowedBlockPayload, HydratedTransactionWithHashMeta, Transfer,
|
|
11
11
|
} from '@xyo-network/xl1-protocol'
|
|
12
12
|
import { isTransfer, XYO_ZERO_ADDRESS } from '@xyo-network/xl1-protocol'
|
|
13
13
|
import type {
|
|
@@ -30,8 +30,7 @@ const sumTransfers = (payload: Transfer) => {
|
|
|
30
30
|
return total
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
export class HydratedTransactionWrapper<T extends
|
|
34
|
-
T[1][number][]]> {
|
|
33
|
+
export class HydratedTransactionWrapper<T extends HydratedTransactionWithHashMeta> implements HydratedTransactionInstance<T> {
|
|
35
34
|
data: T
|
|
36
35
|
fees: TransactionFeesInstance
|
|
37
36
|
|
|
@@ -55,7 +54,7 @@ export class HydratedTransactionWrapper<T extends HydratedTransactionWithStorage
|
|
|
55
54
|
return script ? tryExtractElevatedHashesFromScript(script).length : 0
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
get elevatedPayloads()
|
|
57
|
+
get elevatedPayloads() {
|
|
59
58
|
return tryExtractElevatedHashes(this.data)
|
|
60
59
|
}
|
|
61
60
|
|
|
@@ -109,7 +108,7 @@ export class HydratedTransactionWrapper<T extends HydratedTransactionWithStorage
|
|
|
109
108
|
return [...this._signatureCache]
|
|
110
109
|
}
|
|
111
110
|
|
|
112
|
-
static async parse<T extends
|
|
111
|
+
static async parse<T extends HydratedTransactionWithHashMeta>(transaction: T, validate = false): Promise<HydratedTransactionInstance<[T[0],
|
|
113
112
|
T[1][number][]]>> {
|
|
114
113
|
const wrapper = new HydratedTransactionWrapper<T>(
|
|
115
114
|
transaction,
|