@xyo-network/xl1-protocol-sdk 1.3.12 → 1.3.14
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/README.md +11 -32
- package/dist/neutral/index.mjs +15 -0
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/instances/BoundWitness.d.ts +9 -0
- package/dist/types/instances/BoundWitness.d.ts.map +1 -0
- package/dist/types/instances/Data.d.ts +4 -0
- package/dist/types/instances/Data.d.ts.map +1 -0
- package/dist/types/instances/Fees.d.ts +8 -0
- package/dist/types/instances/Fees.d.ts.map +1 -0
- package/dist/types/instances/HydratedBoundWitness.d.ts +10 -0
- package/dist/types/instances/HydratedBoundWitness.d.ts.map +1 -0
- package/dist/types/instances/Object.d.ts +5 -0
- package/dist/types/instances/Object.d.ts.map +1 -0
- package/dist/types/instances/Payload.d.ts +6 -0
- package/dist/types/instances/Payload.d.ts.map +1 -0
- package/dist/types/instances/Signature.d.ts +8 -0
- package/dist/types/instances/Signature.d.ts.map +1 -0
- package/dist/types/instances/block/BlockFields.d.ts +9 -0
- package/dist/types/instances/block/BlockFields.d.ts.map +1 -0
- package/dist/types/instances/block/HydratedBlock.d.ts +8 -0
- package/dist/types/instances/block/HydratedBlock.d.ts.map +1 -0
- package/dist/types/instances/block/SignedHydratedBlock.d.ts +6 -0
- package/dist/types/instances/block/SignedHydratedBlock.d.ts.map +1 -0
- package/dist/types/instances/block/index.d.ts +3 -0
- package/dist/types/instances/block/index.d.ts.map +1 -0
- package/dist/types/instances/index.d.ts +10 -0
- package/dist/types/instances/index.d.ts.map +1 -0
- package/dist/types/instances/modifiers/Signed.d.ts +7 -0
- package/dist/types/instances/modifiers/Signed.d.ts.map +1 -0
- package/dist/types/instances/modifiers/Validatable.d.ts +5 -0
- package/dist/types/instances/modifiers/Validatable.d.ts.map +1 -0
- package/dist/types/instances/modifiers/index.d.ts +3 -0
- package/dist/types/instances/modifiers/index.d.ts.map +1 -0
- package/dist/types/instances/transaction/HydratedTransaction.d.ts +6 -0
- package/dist/types/instances/transaction/HydratedTransaction.d.ts.map +1 -0
- package/dist/types/instances/transaction/SignedHydratedTransaction.d.ts +6 -0
- package/dist/types/instances/transaction/SignedHydratedTransaction.d.ts.map +1 -0
- package/dist/types/instances/transaction/TransactionFields.d.ts +9 -0
- package/dist/types/instances/transaction/TransactionFields.d.ts.map +1 -0
- package/dist/types/instances/transaction/index.d.ts +3 -0
- package/dist/types/instances/transaction/index.d.ts.map +1 -0
- package/dist/types/transaction/index.d.ts +1 -0
- package/dist/types/transaction/index.d.ts.map +1 -1
- package/dist/types/transaction/transactionRequiredGas.d.ts +3 -0
- package/dist/types/transaction/transactionRequiredGas.d.ts.map +1 -0
- package/package.json +8 -5
- package/src/index.ts +1 -0
- package/src/instances/BoundWitness.ts +13 -0
- package/src/instances/Data.ts +3 -0
- package/src/instances/Fees.ts +8 -0
- package/src/instances/HydratedBoundWitness.ts +15 -0
- package/src/instances/Object.ts +5 -0
- package/src/instances/Payload.ts +6 -0
- package/src/instances/Signature.ts +11 -0
- package/src/instances/block/BlockFields.ts +13 -0
- package/src/instances/block/HydratedBlock.ts +10 -0
- package/src/instances/block/SignedHydratedBlock.ts +6 -0
- package/src/instances/block/index.ts +2 -0
- package/src/instances/index.ts +9 -0
- package/src/instances/modifiers/Signed.ts +8 -0
- package/src/instances/modifiers/Validatable.ts +5 -0
- package/src/instances/modifiers/index.ts +2 -0
- package/src/instances/transaction/HydratedTransaction.ts +9 -0
- package/src/instances/transaction/SignedHydratedTransaction.ts +8 -0
- package/src/instances/transaction/TransactionFields.ts +13 -0
- package/src/instances/transaction/index.ts +2 -0
- package/src/transaction/index.ts +1 -0
- package/src/transaction/transactionRequiredGas.ts +14 -0
package/README.md
CHANGED
|
@@ -1,44 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
# @xyo-network/xl1-protocol-sdk
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[![logo][]](https://xyo.network)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Version: 1.3.13
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
[![codeclimate-badge][]][codeclimate-link]
|
|
9
|
-
[![codeclimate-coverage-badge][]][codeclimate-coverage-link]
|
|
7
|
+
XYO Layer One SDK Protocol
|
|
10
8
|
|
|
11
|
-
##
|
|
9
|
+
## Documentation
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
- [Table of Contents](#table-of-contents)
|
|
15
|
-
- [Description](#description)
|
|
16
|
-
- [Maintainers](#maintainers)
|
|
17
|
-
- [License](#license)
|
|
18
|
-
- [Credits](#credits)
|
|
11
|
+
[TypeDoc Generated Documentation](https://gitbook.xyo.network/xyo-data-lab/xyo-reference/package-documentation/xyo-network__xl1-protocol-sdk)
|
|
19
12
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Api/implementation of XYO Chain API Node
|
|
23
|
-
|
|
24
|
-
## Maintainers
|
|
25
|
-
|
|
26
|
-
- [Arie Trouw](https://github.com/arietrouw) [arietrouw.com](https://arietrouw.com)
|
|
13
|
+
Part of [sdk-xyo-client-js](https://www.npmjs.com/package/@xyo-network/sdk-xyo-client-js)
|
|
27
14
|
|
|
28
15
|
## License
|
|
29
16
|
|
|
30
|
-
See the [LICENSE](LICENSE) file for license details
|
|
17
|
+
> See the [LICENSE](LICENSE) file for license details
|
|
31
18
|
|
|
32
19
|
## Credits
|
|
33
20
|
|
|
34
|
-
[Made with 🔥 and ❄️ by
|
|
35
|
-
|
|
36
|
-
[logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
|
|
37
|
-
[main-build]: https://github.com/xylabs/xl1-protocol/actions/workflows/build-main.yml/badge.svg
|
|
38
|
-
[main-build-link]: https://github.com/xylabs/xl1-protocol/actions/workflows/build-main.yml
|
|
39
|
-
[codacy-badge]: https://app.codacy.com/project/badge/Grade/14640dade84b44a69e7b9daafd07be46
|
|
40
|
-
[codacy-link]: https://www.codacy.com/gh/xylabs/xl1-protocol/dashboard?utm_source=github.com&utm_medium=referral&utm_content=xylabs/api-xylabs-import-nodejs&utm_campaign=Badge_Grade
|
|
41
|
-
[codeclimate-badge]: https://api.codeclimate.com/v1/badges/dc0bb5770f231f22f826/maintainability
|
|
42
|
-
[codeclimate-link]: https://codeclimate.com/github/xylabs/xl1-protocol/maintainability
|
|
43
|
-
[codeclimate-coverage-badge]: https://api.codeclimate.com/v1/badges/dc0bb5770f231f22f826/test_coverage
|
|
44
|
-
[codeclimate-coverage-link]: https://codeclimate.com/github/xylabs/xl1-protocol/test_coverage
|
|
21
|
+
[Made with 🔥 and ❄️ by XYO](https://xyo.network)
|
|
22
|
+
|
|
23
|
+
[logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -97,6 +97,20 @@ var tryHydrateElevatedTransaction = /* @__PURE__ */ __name(async (archivist, has
|
|
|
97
97
|
var hydrateElevatedTransaction = /* @__PURE__ */ __name(async (archivist, hash) => {
|
|
98
98
|
return assertEx2(await tryHydrateElevatedTransaction(archivist, hash), () => "Hydration failed");
|
|
99
99
|
}, "hydrateElevatedTransaction");
|
|
100
|
+
|
|
101
|
+
// src/transaction/transactionRequiredGas.ts
|
|
102
|
+
import { hexToBigInt } from "@xylabs/hex";
|
|
103
|
+
function transactionRequiredGas([transaction, payloads]) {
|
|
104
|
+
const gasPrice = hexToBigInt(transaction.fees.gasPrice);
|
|
105
|
+
const gasPerCharacter = gasPrice;
|
|
106
|
+
const gasPerHash = gasPrice * 1000n;
|
|
107
|
+
const gasPerValidatedSignature = gasPrice * 1000n;
|
|
108
|
+
const characters = payloads.reduce((acc, payload) => acc + JSON.stringify(payload).length, 0);
|
|
109
|
+
const hashes = transaction.payload_hashes.length + 1;
|
|
110
|
+
const signatures = transaction.addresses.length + 1;
|
|
111
|
+
return gasPerCharacter * BigInt(characters) + gasPerHash * BigInt(hashes) + gasPerValidatedSignature * BigInt(signatures);
|
|
112
|
+
}
|
|
113
|
+
__name(transactionRequiredGas, "transactionRequiredGas");
|
|
100
114
|
export {
|
|
101
115
|
buildTransaction,
|
|
102
116
|
defaultFees,
|
|
@@ -104,6 +118,7 @@ export {
|
|
|
104
118
|
flattenHydratedTransactions,
|
|
105
119
|
hydrateElevatedTransaction,
|
|
106
120
|
hydrateTransaction,
|
|
121
|
+
transactionRequiredGas,
|
|
107
122
|
tryHydrateElevatedTransaction,
|
|
108
123
|
tryHydrateTransaction
|
|
109
124
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/transaction/buildTransaction.ts","../../src/transaction/hydrateTransaction.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n HydratedTransactionWithStorageMeta, TransactionBoundWitness, TransactionBoundWitnessFields, TransactionFeesBigInt,\n} from '@xyo-network/xl1-protocol'\n\nexport const defaultFees: TransactionFeesBigInt = {\n base: 1000n, gasPrice: 100n, gasLimit: 1_000_000n, priority: 0n,\n}\n\nexport async function buildTransaction(\n chain: Address,\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n signer: AccountInstance | AccountInstance[],\n nbf: number,\n exp: number,\n from?: Address,\n fees: TransactionFeesBigInt = defaultFees,\n): Promise<HydratedTransactionWithStorageMeta> {\n if (from === undefined && Array.isArray(signer)) {\n throw new Error('from is required when signer is an array')\n }\n\n const txBoundWitnessFields: TransactionBoundWitnessFields = {\n chain,\n fees: {\n base: toHex(fees.base),\n gasLimit: toHex(fees.gasLimit),\n gasPrice: toHex(fees.gasPrice),\n priority: toHex(fees.priority),\n },\n nbf,\n exp,\n }\n\n const elevatedHashes = await PayloadBuilder.hashes(elevatedPayloads)\n const script: string[] = []\n for (const elevatedHash of elevatedHashes) {\n script.push(`elevate|${elevatedHash}`)\n }\n\n const [tx, txPayloads] = await new BoundWitnessBuilder<TransactionBoundWitness>()\n .fields({\n ...txBoundWitnessFields,\n script,\n from: from ?? (Array.isArray(signer) ? assertEx(signer.at(0)?.address) : signer.address),\n })\n .meta({ $signatures: [] })\n .payloads([...elevatedPayloads, ...additionalPayloads])\n .signers(Array.isArray(signer) ? signer : [signer])\n .build()\n\n return [await PayloadBuilder.addStorageMeta(tx), await PayloadBuilder.addStorageMeta(txPayloads)]\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from '@xyo-network/archivist-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n HydratedTransaction, HydratedTransactionWithStorageMeta, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayload, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const tryHydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransactionWithStorageMeta | undefined> => {\n return (await tryHydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isTransactionBoundWitnessWithStorageMeta,\n )) as HydratedTransactionWithStorageMeta | undefined\n}\n\nexport const hydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransactionWithStorageMeta> => {\n return await hydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isTransactionBoundWitnessWithStorageMeta,\n ) as HydratedTransactionWithStorageMeta\n}\n\nexport const flattenHydratedTransaction = (hydratedTransaction: HydratedTransaction): Payload[] => {\n const [tx, txPayloads] = hydratedTransaction\n return [...txPayloads, tx]\n}\n\nexport const flattenHydratedTransactions = (hydratedTransactions: HydratedTransaction[]): Payload[] =>\n hydratedTransactions.flatMap(tx => flattenHydratedTransaction(tx))\n\nexport const tryHydrateElevatedTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction | undefined> => {\n const hydratedTransaction = await tryHydrateTransaction(archivist, hash)\n if (!hydratedTransaction) {\n return undefined\n }\n const [transaction, payloads] = hydratedTransaction\n const opCodes = (transaction.script ?? []).filter(operation => operation.startsWith('elevate|'))\n const elevatedPayloads: AllowedBlockPayload[] = []\n for (const opCode of opCodes) {\n const [code, hash] = opCode.split('|')\n if (code === 'elevated') {\n const elevatedPayload = payloads.find(payload => payload._hash === hash)\n if (isAllowedBlockPayload(elevatedPayload)) {\n elevatedPayloads.push(elevatedPayload)\n }\n }\n }\n if (opCodes.length === elevatedPayloads.length) {\n return [transaction, elevatedPayloads]\n }\n return undefined\n}\n\nexport const hydrateElevatedTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction> => {\n return assertEx(await tryHydrateElevatedTransaction(archivist, hash), () => 'Hydration failed')\n}\n"],"mappings":"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","names":["assertEx","toHex","BoundWitnessBuilder","PayloadBuilder","defaultFees","base","gasPrice","gasLimit","priority","buildTransaction","chain","elevatedPayloads","additionalPayloads","signer","nbf","exp","from","fees","undefined","Array","isArray","Error","txBoundWitnessFields","toHex","elevatedHashes","PayloadBuilder","hashes","script","elevatedHash","push","tx","txPayloads","BoundWitnessBuilder","fields","assertEx","at","address","meta","$signatures","payloads","signers","build","addStorageMeta","assertEx","hydrateTypedBoundWitness","tryHydrateTypedBoundWitness","isAllowedBlockPayload","isTransactionBoundWitnessWithStorageMeta","tryHydrateTransaction","archivist","hash","tryHydrateTypedBoundWitness","isTransactionBoundWitnessWithStorageMeta","hydrateTransaction","hydrateTypedBoundWitness","flattenHydratedTransaction","hydratedTransaction","tx","txPayloads","flattenHydratedTransactions","hydratedTransactions","flatMap","tryHydrateElevatedTransaction","undefined","transaction","payloads","opCodes","script","filter","operation","startsWith","elevatedPayloads","opCode","code","split","elevatedPayload","find","payload","_hash","isAllowedBlockPayload","push","length","hydrateElevatedTransaction","assertEx"]}
|
|
1
|
+
{"version":3,"sources":["../../src/transaction/buildTransaction.ts","../../src/transaction/hydrateTransaction.ts","../../src/transaction/transactionRequiredGas.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n HydratedTransactionWithStorageMeta, TransactionBoundWitness, TransactionBoundWitnessFields, TransactionFeesBigInt,\n} from '@xyo-network/xl1-protocol'\n\nexport const defaultFees: TransactionFeesBigInt = {\n base: 1000n, gasPrice: 100n, gasLimit: 1_000_000n, priority: 0n,\n}\n\nexport async function buildTransaction(\n chain: Address,\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n signer: AccountInstance | AccountInstance[],\n nbf: number,\n exp: number,\n from?: Address,\n fees: TransactionFeesBigInt = defaultFees,\n): Promise<HydratedTransactionWithStorageMeta> {\n if (from === undefined && Array.isArray(signer)) {\n throw new Error('from is required when signer is an array')\n }\n\n const txBoundWitnessFields: TransactionBoundWitnessFields = {\n chain,\n fees: {\n base: toHex(fees.base),\n gasLimit: toHex(fees.gasLimit),\n gasPrice: toHex(fees.gasPrice),\n priority: toHex(fees.priority),\n },\n nbf,\n exp,\n }\n\n const elevatedHashes = await PayloadBuilder.hashes(elevatedPayloads)\n const script: string[] = []\n for (const elevatedHash of elevatedHashes) {\n script.push(`elevate|${elevatedHash}`)\n }\n\n const [tx, txPayloads] = await new BoundWitnessBuilder<TransactionBoundWitness>()\n .fields({\n ...txBoundWitnessFields,\n script,\n from: from ?? (Array.isArray(signer) ? assertEx(signer.at(0)?.address) : signer.address),\n })\n .meta({ $signatures: [] })\n .payloads([...elevatedPayloads, ...additionalPayloads])\n .signers(Array.isArray(signer) ? signer : [signer])\n .build()\n\n return [await PayloadBuilder.addStorageMeta(tx), await PayloadBuilder.addStorageMeta(txPayloads)]\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from '@xyo-network/archivist-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n HydratedTransaction, HydratedTransactionWithStorageMeta, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayload, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const tryHydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransactionWithStorageMeta | undefined> => {\n return (await tryHydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isTransactionBoundWitnessWithStorageMeta,\n )) as HydratedTransactionWithStorageMeta | undefined\n}\n\nexport const hydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransactionWithStorageMeta> => {\n return await hydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isTransactionBoundWitnessWithStorageMeta,\n ) as HydratedTransactionWithStorageMeta\n}\n\nexport const flattenHydratedTransaction = (hydratedTransaction: HydratedTransaction): Payload[] => {\n const [tx, txPayloads] = hydratedTransaction\n return [...txPayloads, tx]\n}\n\nexport const flattenHydratedTransactions = (hydratedTransactions: HydratedTransaction[]): Payload[] =>\n hydratedTransactions.flatMap(tx => flattenHydratedTransaction(tx))\n\nexport const tryHydrateElevatedTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction | undefined> => {\n const hydratedTransaction = await tryHydrateTransaction(archivist, hash)\n if (!hydratedTransaction) {\n return undefined\n }\n const [transaction, payloads] = hydratedTransaction\n const opCodes = (transaction.script ?? []).filter(operation => operation.startsWith('elevate|'))\n const elevatedPayloads: AllowedBlockPayload[] = []\n for (const opCode of opCodes) {\n const [code, hash] = opCode.split('|')\n if (code === 'elevated') {\n const elevatedPayload = payloads.find(payload => payload._hash === hash)\n if (isAllowedBlockPayload(elevatedPayload)) {\n elevatedPayloads.push(elevatedPayload)\n }\n }\n }\n if (opCodes.length === elevatedPayloads.length) {\n return [transaction, elevatedPayloads]\n }\n return undefined\n}\n\nexport const hydrateElevatedTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction> => {\n return assertEx(await tryHydrateElevatedTransaction(archivist, hash), () => 'Hydration failed')\n}\n","import { hexToBigInt } from '@xylabs/hex'\nimport type { HydratedTransaction } from '@xyo-network/xl1-protocol'\n\nexport function transactionRequiredGas([transaction, payloads]: HydratedTransaction): bigint {\n const gasPrice = hexToBigInt(transaction.fees.gasPrice)\n const gasPerCharacter = gasPrice\n const gasPerHash = gasPrice * 1000n\n const gasPerValidatedSignature = gasPrice * 1000n\n\n const characters = payloads.reduce((acc: number, payload) => acc + JSON.stringify(payload).length, 0)\n const hashes = transaction.payload_hashes.length + 1 /* for transaction itself */\n const signatures = transaction.addresses.length + 1\n return gasPerCharacter * BigInt(characters) + gasPerHash * BigInt(hashes) + gasPerValidatedSignature * BigInt(signatures)\n}\n"],"mappings":"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","names":["assertEx","toHex","BoundWitnessBuilder","PayloadBuilder","defaultFees","base","gasPrice","gasLimit","priority","buildTransaction","chain","elevatedPayloads","additionalPayloads","signer","nbf","exp","from","fees","undefined","Array","isArray","Error","txBoundWitnessFields","toHex","elevatedHashes","PayloadBuilder","hashes","script","elevatedHash","push","tx","txPayloads","BoundWitnessBuilder","fields","assertEx","at","address","meta","$signatures","payloads","signers","build","addStorageMeta","assertEx","hydrateTypedBoundWitness","tryHydrateTypedBoundWitness","isAllowedBlockPayload","isTransactionBoundWitnessWithStorageMeta","tryHydrateTransaction","archivist","hash","tryHydrateTypedBoundWitness","isTransactionBoundWitnessWithStorageMeta","hydrateTransaction","hydrateTypedBoundWitness","flattenHydratedTransaction","hydratedTransaction","tx","txPayloads","flattenHydratedTransactions","hydratedTransactions","flatMap","tryHydrateElevatedTransaction","undefined","transaction","payloads","opCodes","script","filter","operation","startsWith","elevatedPayloads","opCode","code","split","elevatedPayload","find","payload","_hash","isAllowedBlockPayload","push","length","hydrateElevatedTransaction","assertEx","hexToBigInt","transactionRequiredGas","transaction","payloads","gasPrice","hexToBigInt","fees","gasPerCharacter","gasPerHash","gasPerValidatedSignature","characters","reduce","acc","payload","JSON","stringify","length","hashes","payload_hashes","signatures","addresses","BigInt"]}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
2
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
3
|
+
import type { PayloadInstance } from './Payload.ts';
|
|
4
|
+
export interface BoundWitnessInstance<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadInstance<TBoundWitness> {
|
|
5
|
+
payloadCount: number;
|
|
6
|
+
payloads: PayloadInstance<TPayload>[];
|
|
7
|
+
payload(index: number): PayloadInstance<TPayload> | undefined;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=BoundWitness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundWitness.d.ts","sourceRoot":"","sources":["../../../src/instances/BoundWitness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEnD,MAAM,WAAW,oBAAoB,CAAC,aAAa,SAAS,YAAY,GAAG,YAAY,EACrF,QAAQ,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,eAAe,CAAC,aAAa,CAAC;IAE1E,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAA;IAErC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAA;CAC9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Data.d.ts","sourceRoot":"","sources":["../../../src/instances/Data.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAA;CACR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fees.d.ts","sourceRoot":"","sources":["../../../src/instances/Fees.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAErE,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { HydratedBoundWitness } from '@xyo-network/archivist-model';
|
|
2
|
+
import type { DataInstance } from './Data.ts';
|
|
3
|
+
import type { ValidatableInstance } from './modifiers/Validatable.ts';
|
|
4
|
+
export interface HydratedBoundWitnessInstance<T extends HydratedBoundWitness = HydratedBoundWitness> extends ValidatableInstance, DataInstance<T> {
|
|
5
|
+
boundWitness: T[0];
|
|
6
|
+
payloadCount: number;
|
|
7
|
+
payloads: T[1][number][];
|
|
8
|
+
payload(index: number): T[1][number] | undefined;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=HydratedBoundWitness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HydratedBoundWitness.d.ts","sourceRoot":"","sources":["../../../src/instances/HydratedBoundWitness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAErE,MAAM,WAAW,4BAA4B,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,CACjG,SAAQ,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5C,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAElB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA;IAExB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CACjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Object.d.ts","sourceRoot":"","sources":["../../../src/instances/Object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;CAAG"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
2
|
+
import type { ValidatableInstance } from './modifiers/Validatable.ts';
|
|
3
|
+
import type { ObjectInstance } from './Object.ts';
|
|
4
|
+
export interface PayloadInstance<TPayload extends Payload = Payload> extends ObjectInstance<TPayload>, ValidatableInstance {
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=Payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../../src/instances/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,cAAc,CAAC,QAAQ,CAAC,EAAE,mBAAmB;CAAG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Address, Hash, Hex } from '@xylabs/hex';
|
|
2
|
+
import type { ValidatableInstance } from './modifiers/Validatable.ts';
|
|
3
|
+
export interface SignatureInstance extends ValidatableInstance {
|
|
4
|
+
address: Address;
|
|
5
|
+
hash: Hash;
|
|
6
|
+
signature: Hex;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Signature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Signature.d.ts","sourceRoot":"","sources":["../../../src/instances/Signature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EAAE,GAAG,EACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAErE,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,GAAG,CAAA;CACf"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface BlockFieldsInstance<TTransactionResult> {
|
|
2
|
+
privatePayloadCount: number;
|
|
3
|
+
publicPayloadCount: number;
|
|
4
|
+
reward: bigint;
|
|
5
|
+
transactionCount: number;
|
|
6
|
+
transactions: TTransactionResult[];
|
|
7
|
+
transaction(index: number): TTransactionResult | undefined;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=BlockFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockFields.d.ts","sourceRoot":"","sources":["../../../../src/instances/block/BlockFields.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB,CAAC,kBAAkB;IACrD,mBAAmB,EAAE,MAAM,CAAA;IAE3B,kBAAkB,EAAE,MAAM,CAAA;IAE1B,MAAM,EAAE,MAAM,CAAA;IAEd,gBAAgB,EAAE,MAAM,CAAA;IAExB,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAElC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAA;CAC3D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HydratedBlock } from '@xyo-network/xl1-protocol';
|
|
2
|
+
import type { HydratedBoundWitnessInstance } from '../HydratedBoundWitness.ts';
|
|
3
|
+
import type { HydratedTransactionInstance } from '../transaction/index.ts';
|
|
4
|
+
import type { BlockFieldsInstance } from './BlockFields.ts';
|
|
5
|
+
export interface HydratedBlockInstance<T extends HydratedBlock = HydratedBlock> extends BlockFieldsInstance<HydratedTransactionInstance>, HydratedBoundWitnessInstance<T> {
|
|
6
|
+
publicPayloads: T[1][number][];
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=HydratedBlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HydratedBlock.d.ts","sourceRoot":"","sources":["../../../../src/instances/block/HydratedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE3D,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAE,SAC9E,mBAAmB,CAAC,2BAA2B,CAAC,EAAE,4BAA4B,CAAC,CAAC,CAAC;IACjF,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA;CAC/B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SignedHydratedBlock } from '@xyo-network/xl1-protocol';
|
|
2
|
+
import type { SignedInstance } from '../modifiers/Signed.ts';
|
|
3
|
+
import type { HydratedBlockInstance } from './HydratedBlock.ts';
|
|
4
|
+
export interface SignedHydratedBlockInstance<T extends SignedHydratedBlock = SignedHydratedBlock> extends HydratedBlockInstance<T>, SignedInstance {
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=SignedHydratedBlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignedHydratedBlock.d.ts","sourceRoot":"","sources":["../../../../src/instances/block/SignedHydratedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE/D,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,qBAAqB,CAAC,CAAC,CAAC,EAAE,cAAc;CAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/instances/block/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './block/index.ts';
|
|
2
|
+
export * from './BoundWitness.ts';
|
|
3
|
+
export * from './Data.ts';
|
|
4
|
+
export * from './Fees.ts';
|
|
5
|
+
export * from './modifiers/index.ts';
|
|
6
|
+
export * from './Object.ts';
|
|
7
|
+
export * from './Payload.ts';
|
|
8
|
+
export * from './Signature.ts';
|
|
9
|
+
export * from './transaction/index.ts';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/instances/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Signed.d.ts","sourceRoot":"","sources":["../../../../src/instances/modifiers/Signed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,iBAAiB,EAAE,CAAA;IAE/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAA;CACxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validatable.d.ts","sourceRoot":"","sources":["../../../../src/instances/modifiers/Validatable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/instances/modifiers/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AllowedBlockPayload, HydratedTransaction } from '@xyo-network/xl1-protocol';
|
|
2
|
+
import type { HydratedBoundWitnessInstance } from '../HydratedBoundWitness.ts';
|
|
3
|
+
import type { TransactionFieldsInstance } from './TransactionFields.ts';
|
|
4
|
+
export interface HydratedTransactionInstance<T extends HydratedTransaction = HydratedTransaction, TElevatedPayload extends AllowedBlockPayload = AllowedBlockPayload> extends TransactionFieldsInstance<T[1][number] & TElevatedPayload>, HydratedBoundWitnessInstance<T> {
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=HydratedTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HydratedTransaction.d.ts","sourceRoot":"","sources":["../../../../src/instances/transaction/HydratedTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAEzF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAEvE,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,EAC9F,gBAAgB,SAAS,mBAAmB,GAAG,mBAAmB,CAClE,SAAQ,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,4BAA4B,CAAC,CAAC,CAAC;CACpG"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AllowedBlockPayload, HydratedTransaction } from '@xyo-network/xl1-protocol';
|
|
2
|
+
import type { SignedInstance } from '../modifiers/Signed.ts';
|
|
3
|
+
import type { HydratedTransactionInstance } from './HydratedTransaction.ts';
|
|
4
|
+
export interface SignedHydratedTransactionInstance<T extends HydratedTransaction = HydratedTransaction, TBlockPayload extends AllowedBlockPayload = AllowedBlockPayload> extends HydratedTransactionInstance<T, TBlockPayload>, SignedInstance {
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=SignedHydratedTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignedHydratedTransaction.d.ts","sourceRoot":"","sources":["../../../../src/instances/transaction/SignedHydratedTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAEzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAE3E,MAAM,WAAW,iCAAiC,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,EACpG,aAAa,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,2BAA2B,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc;CACvI"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AllowedBlockPayload } from '@xyo-network/xl1-protocol';
|
|
2
|
+
import type { TransactionFeesInstance } from '../Fees.ts';
|
|
3
|
+
export interface TransactionFieldsInstance<TBlockPayload extends AllowedBlockPayload = AllowedBlockPayload> {
|
|
4
|
+
elevatedPayloadCount: number;
|
|
5
|
+
elevatedPayloads: TBlockPayload[];
|
|
6
|
+
fees: TransactionFeesInstance;
|
|
7
|
+
elevatedPayload(index: number): TBlockPayload | undefined;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=TransactionFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionFields.d.ts","sourceRoot":"","sources":["../../../../src/instances/transaction/TransactionFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEzD,MAAM,WAAW,yBAAyB,CAAC,aAAa,SAAS,mBAAmB,GAAG,mBAAmB;IAExG,oBAAoB,EAAE,MAAM,CAAA;IAC5B,gBAAgB,EAAE,aAAa,EAAE,CAAA;IAEjC,IAAI,EAAE,uBAAuB,CAAA;IAE7B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAA;CAC1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/instances/transaction/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionRequiredGas.d.ts","sourceRoot":"","sources":["../../../src/transaction/transactionRequiredGas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAEpE,wBAAgB,sBAAsB,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAU3F"}
|
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-protocol-sdk",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.14",
|
|
5
5
|
"description": "XYO Layer One SDK Protocol",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -36,19 +36,22 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@xylabs/assert": "^4.8.9",
|
|
38
38
|
"@xylabs/hex": "^4.8.9",
|
|
39
|
+
"@xylabs/object": "^4.8.9",
|
|
40
|
+
"@xylabs/promise": "^4.8.9",
|
|
39
41
|
"@xyo-network/account-model": "^3.14.16",
|
|
40
42
|
"@xyo-network/archivist-model": "^3.14.16",
|
|
41
43
|
"@xyo-network/boundwitness-builder": "^3.14.16",
|
|
44
|
+
"@xyo-network/boundwitness-model": "^3.14.16",
|
|
42
45
|
"@xyo-network/payload-builder": "^3.14.16",
|
|
43
46
|
"@xyo-network/payload-model": "^3.14.16",
|
|
44
|
-
"@xyo-network/xl1-protocol": "^1.3.
|
|
47
|
+
"@xyo-network/xl1-protocol": "^1.3.11"
|
|
45
48
|
},
|
|
46
49
|
"devDependencies": {
|
|
47
50
|
"@types/node": "^22.15.3",
|
|
48
|
-
"@xylabs/ts-scripts-yarn3": "^6.5.
|
|
49
|
-
"@xylabs/tsconfig": "^6.5.
|
|
51
|
+
"@xylabs/ts-scripts-yarn3": "^6.5.5",
|
|
52
|
+
"@xylabs/tsconfig": "^6.5.5",
|
|
50
53
|
"@xyo-network/account": "^3.14.16",
|
|
51
|
-
"knip": "^5.
|
|
54
|
+
"knip": "^5.52.0",
|
|
52
55
|
"typescript": "^5.8.3"
|
|
53
56
|
},
|
|
54
57
|
"engines": {
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BoundWitness } from '@xyo-network/boundwitness-model'
|
|
2
|
+
import type { Payload } from '@xyo-network/payload-model'
|
|
3
|
+
|
|
4
|
+
import type { PayloadInstance } from './Payload.ts'
|
|
5
|
+
|
|
6
|
+
export interface BoundWitnessInstance<TBoundWitness extends BoundWitness = BoundWitness,
|
|
7
|
+
TPayload extends Payload = Payload> extends PayloadInstance<TBoundWitness> {
|
|
8
|
+
|
|
9
|
+
payloadCount: number
|
|
10
|
+
payloads: PayloadInstance<TPayload>[]
|
|
11
|
+
|
|
12
|
+
payload(index: number): PayloadInstance<TPayload> | undefined
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { HydratedBoundWitness } from '@xyo-network/archivist-model'
|
|
2
|
+
|
|
3
|
+
import type { DataInstance } from './Data.ts'
|
|
4
|
+
import type { ValidatableInstance } from './modifiers/Validatable.ts'
|
|
5
|
+
|
|
6
|
+
export interface HydratedBoundWitnessInstance<T extends HydratedBoundWitness = HydratedBoundWitness>
|
|
7
|
+
extends ValidatableInstance, DataInstance<T> {
|
|
8
|
+
|
|
9
|
+
boundWitness: T[0]
|
|
10
|
+
|
|
11
|
+
payloadCount: number
|
|
12
|
+
payloads: T[1][number][]
|
|
13
|
+
|
|
14
|
+
payload(index: number): T[1][number] | undefined
|
|
15
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Payload } from '@xyo-network/payload-model'
|
|
2
|
+
|
|
3
|
+
import type { ValidatableInstance } from './modifiers/Validatable.ts'
|
|
4
|
+
import type { ObjectInstance } from './Object.ts'
|
|
5
|
+
|
|
6
|
+
export interface PayloadInstance<TPayload extends Payload = Payload> extends ObjectInstance<TPayload>, ValidatableInstance {}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface BlockFieldsInstance<TTransactionResult> {
|
|
2
|
+
privatePayloadCount: number
|
|
3
|
+
|
|
4
|
+
publicPayloadCount: number
|
|
5
|
+
|
|
6
|
+
reward: bigint
|
|
7
|
+
|
|
8
|
+
transactionCount: number
|
|
9
|
+
|
|
10
|
+
transactions: TTransactionResult[]
|
|
11
|
+
|
|
12
|
+
transaction(index: number): TTransactionResult | undefined
|
|
13
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { HydratedBlock } from '@xyo-network/xl1-protocol'
|
|
2
|
+
|
|
3
|
+
import type { HydratedBoundWitnessInstance } from '../HydratedBoundWitness.ts'
|
|
4
|
+
import type { HydratedTransactionInstance } from '../transaction/index.ts'
|
|
5
|
+
import type { BlockFieldsInstance } from './BlockFields.ts'
|
|
6
|
+
|
|
7
|
+
export interface HydratedBlockInstance<T extends HydratedBlock = HydratedBlock> extends
|
|
8
|
+
BlockFieldsInstance<HydratedTransactionInstance>, HydratedBoundWitnessInstance<T> {
|
|
9
|
+
publicPayloads: T[1][number][]
|
|
10
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SignedHydratedBlock } from '@xyo-network/xl1-protocol'
|
|
2
|
+
|
|
3
|
+
import type { SignedInstance } from '../modifiers/Signed.ts'
|
|
4
|
+
import type { HydratedBlockInstance } from './HydratedBlock.ts'
|
|
5
|
+
|
|
6
|
+
export interface SignedHydratedBlockInstance<T extends SignedHydratedBlock = SignedHydratedBlock> extends HydratedBlockInstance<T>, SignedInstance { }
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './block/index.ts'
|
|
2
|
+
export * from './BoundWitness.ts'
|
|
3
|
+
export * from './Data.ts'
|
|
4
|
+
export * from './Fees.ts'
|
|
5
|
+
export * from './modifiers/index.ts'
|
|
6
|
+
export * from './Object.ts'
|
|
7
|
+
export * from './Payload.ts'
|
|
8
|
+
export * from './Signature.ts'
|
|
9
|
+
export * from './transaction/index.ts'
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AllowedBlockPayload, HydratedTransaction } from '@xyo-network/xl1-protocol'
|
|
2
|
+
|
|
3
|
+
import type { HydratedBoundWitnessInstance } from '../HydratedBoundWitness.ts'
|
|
4
|
+
import type { TransactionFieldsInstance } from './TransactionFields.ts'
|
|
5
|
+
|
|
6
|
+
export interface HydratedTransactionInstance<T extends HydratedTransaction = HydratedTransaction,
|
|
7
|
+
TElevatedPayload extends AllowedBlockPayload = AllowedBlockPayload>
|
|
8
|
+
extends TransactionFieldsInstance<T[1][number] & TElevatedPayload>, HydratedBoundWitnessInstance<T> {
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AllowedBlockPayload, HydratedTransaction } from '@xyo-network/xl1-protocol'
|
|
2
|
+
|
|
3
|
+
import type { SignedInstance } from '../modifiers/Signed.ts'
|
|
4
|
+
import type { HydratedTransactionInstance } from './HydratedTransaction.ts'
|
|
5
|
+
|
|
6
|
+
export interface SignedHydratedTransactionInstance<T extends HydratedTransaction = HydratedTransaction,
|
|
7
|
+
TBlockPayload extends AllowedBlockPayload = AllowedBlockPayload> extends HydratedTransactionInstance<T, TBlockPayload>, SignedInstance {
|
|
8
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AllowedBlockPayload } from '@xyo-network/xl1-protocol'
|
|
2
|
+
|
|
3
|
+
import type { TransactionFeesInstance } from '../Fees.ts'
|
|
4
|
+
|
|
5
|
+
export interface TransactionFieldsInstance<TBlockPayload extends AllowedBlockPayload = AllowedBlockPayload> {
|
|
6
|
+
|
|
7
|
+
elevatedPayloadCount: number
|
|
8
|
+
elevatedPayloads: TBlockPayload[]
|
|
9
|
+
|
|
10
|
+
fees: TransactionFeesInstance
|
|
11
|
+
|
|
12
|
+
elevatedPayload(index: number): TBlockPayload | undefined
|
|
13
|
+
}
|
package/src/transaction/index.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { hexToBigInt } from '@xylabs/hex'
|
|
2
|
+
import type { HydratedTransaction } from '@xyo-network/xl1-protocol'
|
|
3
|
+
|
|
4
|
+
export function transactionRequiredGas([transaction, payloads]: HydratedTransaction): bigint {
|
|
5
|
+
const gasPrice = hexToBigInt(transaction.fees.gasPrice)
|
|
6
|
+
const gasPerCharacter = gasPrice
|
|
7
|
+
const gasPerHash = gasPrice * 1000n
|
|
8
|
+
const gasPerValidatedSignature = gasPrice * 1000n
|
|
9
|
+
|
|
10
|
+
const characters = payloads.reduce((acc: number, payload) => acc + JSON.stringify(payload).length, 0)
|
|
11
|
+
const hashes = transaction.payload_hashes.length + 1 /* for transaction itself */
|
|
12
|
+
const signatures = transaction.addresses.length + 1
|
|
13
|
+
return gasPerCharacter * BigInt(characters) + gasPerHash * BigInt(hashes) + gasPerValidatedSignature * BigInt(signatures)
|
|
14
|
+
}
|