@monolythium/core-sdk 0.3.14 → 0.3.15
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/crypto/index.cjs +5 -73
- package/dist/crypto/index.cjs.map +1 -1
- package/dist/crypto/index.d.cts +2 -2
- package/dist/crypto/index.d.ts +2 -2
- package/dist/crypto/index.js +5 -74
- package/dist/crypto/index.js.map +1 -1
- package/dist/index.cjs +75 -201
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +75 -201
- package/dist/index.js.map +1 -1
- package/dist/{submission-vhPqAwkD.d.cts → submission-BeEYbbGi.d.cts} +66 -17
- package/dist/{submission-vhPqAwkD.d.ts → submission-BeEYbbGi.d.ts} +66 -17
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { blake3 } from '@noble/hashes/blake3.js';
|
|
2
2
|
import { keccak_256 } from '@noble/hashes/sha3.js';
|
|
3
|
-
import { ml_kem768 } from '@noble/post-quantum/ml-kem.js';
|
|
4
|
-
import { chacha20poly1305 } from '@noble/ciphers/chacha.js';
|
|
5
|
-
import { randomBytes } from '@noble/hashes/utils.js';
|
|
6
3
|
import { ml_dsa65 } from '@noble/post-quantum/ml-dsa.js';
|
|
7
4
|
import { bls12_381 } from '@noble/curves/bls12-381.js';
|
|
5
|
+
import '@noble/post-quantum/ml-kem.js';
|
|
6
|
+
import '@noble/ciphers/chacha.js';
|
|
7
|
+
import '@noble/hashes/utils.js';
|
|
8
8
|
|
|
9
9
|
// src/error.ts
|
|
10
10
|
var SdkError = class _SdkError extends Error {
|
|
@@ -895,15 +895,26 @@ function bigintToBeBytes(value, bytes, label) {
|
|
|
895
895
|
}
|
|
896
896
|
return out;
|
|
897
897
|
}
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
898
|
+
|
|
899
|
+
// src/crypto/submission.ts
|
|
900
|
+
async function fetchEncryptionKey(client) {
|
|
901
|
+
const result = await client.call(
|
|
902
|
+
"lyth_getEncryptionKey",
|
|
903
|
+
[]
|
|
904
|
+
);
|
|
905
|
+
return {
|
|
906
|
+
algo: result.algo ?? "ml-kem-768",
|
|
907
|
+
epoch: typeof result.epoch === "string" ? BigInt(result.epoch) : BigInt(result.epoch),
|
|
908
|
+
encapsulationKey: hexToBytes2(result.encapsulationKey, "encapsulationKey")
|
|
909
|
+
};
|
|
910
|
+
}
|
|
911
|
+
var ENCRYPTED_SUBMISSION_UNAVAILABLE_MESSAGE = "encrypted mempool submission unavailable until MB-3 threshold decryption is active";
|
|
912
|
+
async function buildEncryptedSubmission(_args) {
|
|
913
|
+
await Promise.resolve();
|
|
914
|
+
throw new Error(ENCRYPTED_SUBMISSION_UNAVAILABLE_MESSAGE);
|
|
915
|
+
}
|
|
916
|
+
async function submitEncryptedEnvelope(client, envelopeWireHex) {
|
|
917
|
+
return client.call("lyth_submitEncrypted", [envelopeWireHex]);
|
|
907
918
|
}
|
|
908
919
|
|
|
909
920
|
// src/crypto/bincode.ts
|
|
@@ -964,164 +975,6 @@ var BincodeWriter = class {
|
|
|
964
975
|
}
|
|
965
976
|
}
|
|
966
977
|
};
|
|
967
|
-
var ML_DSA_65_PUBLIC_KEY_LEN = 1952;
|
|
968
|
-
var ML_DSA_65_SIGNATURE_LEN = 3309;
|
|
969
|
-
var STANDARD_ALGO_NUMBER_ML_DSA_65 = 1001;
|
|
970
|
-
var ENUM_VARIANT_INDEX_ML_DSA_65 = 5;
|
|
971
|
-
var ADDRESS_DERIVATION_DOMAIN = "MONO_ADDRESS_BLAKE3_20_V1";
|
|
972
|
-
var ADDRESS_DERIVATION_DOMAIN_BYTES = new TextEncoder().encode(ADDRESS_DERIVATION_DOMAIN);
|
|
973
|
-
function mlDsa65AddressFromPublicKey(publicKey) {
|
|
974
|
-
return bytesToHex2(mlDsa65AddressBytes(publicKey));
|
|
975
|
-
}
|
|
976
|
-
function mlDsa65AddressBytes(publicKey) {
|
|
977
|
-
const bytes = expectBytes(publicKey, ML_DSA_65_PUBLIC_KEY_LEN, "ML-DSA-65 public key");
|
|
978
|
-
return blake3(concatBytes2(
|
|
979
|
-
ADDRESS_DERIVATION_DOMAIN_BYTES,
|
|
980
|
-
bigintToBeBytes(BigInt(STANDARD_ALGO_NUMBER_ML_DSA_65), 2, "ML-DSA-65 algo id"),
|
|
981
|
-
bytes
|
|
982
|
-
)).slice(0, 20);
|
|
983
|
-
}
|
|
984
|
-
|
|
985
|
-
// src/crypto/envelope.ts
|
|
986
|
-
var DKG_AEAD_DOMAIN_TAG = new TextEncoder().encode("protocore/v2/mempool/dkg-mlkem768/1");
|
|
987
|
-
var ML_KEM_768_ENCAPSULATION_KEY_LEN = 1184;
|
|
988
|
-
var DKG_NONCE_LEN = 12;
|
|
989
|
-
var MempoolClass = {
|
|
990
|
-
Transfer: 0,
|
|
991
|
-
ContractCall: 1,
|
|
992
|
-
CLOBOp: 3};
|
|
993
|
-
function bincodeNonceAad(aad) {
|
|
994
|
-
const w = new BincodeWriter();
|
|
995
|
-
w.bytes(expectBytes(aad.sender, 20, "NonceAad.sender"));
|
|
996
|
-
w.u64(aad.nonce);
|
|
997
|
-
w.u64(aad.chainId);
|
|
998
|
-
w.enumVariant(aad.class);
|
|
999
|
-
w.u128(aad.maxFeePerGas);
|
|
1000
|
-
w.u128(aad.maxPriorityFeePerGas);
|
|
1001
|
-
w.u64(aad.gasLimit);
|
|
1002
|
-
return w.toBytes();
|
|
1003
|
-
}
|
|
1004
|
-
function bincodeDecryptHint(hint) {
|
|
1005
|
-
const w = new BincodeWriter();
|
|
1006
|
-
w.u64(hint.epoch);
|
|
1007
|
-
w.u16(hint.scheme);
|
|
1008
|
-
return w.toBytes();
|
|
1009
|
-
}
|
|
1010
|
-
function bincodeEncryptedEnvelope(env) {
|
|
1011
|
-
const w = new BincodeWriter();
|
|
1012
|
-
w.rawBytes(bincodeNonceAad(env.nonceAad));
|
|
1013
|
-
w.bytes(env.ciphertext);
|
|
1014
|
-
w.rawBytes(bincodeDecryptHint(env.decryptionHint));
|
|
1015
|
-
bincodeMlDsa65OpaqueInto(w, expectBytes(env.senderPubkey, ML_DSA_65_PUBLIC_KEY_LEN, "senderPubkey"));
|
|
1016
|
-
bincodeMlDsa65OpaqueInto(w, expectBytes(env.outerSignature, ML_DSA_65_SIGNATURE_LEN, "outerSignature"));
|
|
1017
|
-
w.bytes(expectBytes(env.sender, 20, "sender"));
|
|
1018
|
-
return w.toBytes();
|
|
1019
|
-
}
|
|
1020
|
-
function encryptInnerTx(signedInnerTxBincode, nonceAad, kemEncapsulationKey) {
|
|
1021
|
-
expectBytes(kemEncapsulationKey, ML_KEM_768_ENCAPSULATION_KEY_LEN, "kemEncapsulationKey");
|
|
1022
|
-
const { cipherText: kemCt, sharedSecret } = ml_kem768.encapsulate(kemEncapsulationKey);
|
|
1023
|
-
const nonce = randomBytes(DKG_NONCE_LEN);
|
|
1024
|
-
const cipher = chacha20poly1305(sharedSecret, nonce, aadFor(nonceAad));
|
|
1025
|
-
const aeadCt = cipher.encrypt(signedInnerTxBincode);
|
|
1026
|
-
sharedSecret.fill(0);
|
|
1027
|
-
return concatBytes2(kemCt, nonce, aeadCt);
|
|
1028
|
-
}
|
|
1029
|
-
function outerSigDigest(nonceAad, ciphertext, decryptionHint, senderPubkey) {
|
|
1030
|
-
const aad = bincodeNonceAad(nonceAad);
|
|
1031
|
-
const hint = bincodeDecryptHint(decryptionHint);
|
|
1032
|
-
return keccak_256(concatBytes2(aad, ciphertext, hint, expectBytes(senderPubkey, ML_DSA_65_PUBLIC_KEY_LEN, "senderPubkey")));
|
|
1033
|
-
}
|
|
1034
|
-
async function buildEncryptedEnvelope(args) {
|
|
1035
|
-
const ciphertext = encryptInnerTx(args.signedInnerTxBincode, args.nonceAad, args.kemEncapsulationKey);
|
|
1036
|
-
const digest = outerSigDigest(args.nonceAad, ciphertext, args.decryptionHint, args.senderPubkey);
|
|
1037
|
-
const outerSignature = await args.signOuterDigest(digest);
|
|
1038
|
-
const envelope = {
|
|
1039
|
-
nonceAad: args.nonceAad,
|
|
1040
|
-
ciphertext,
|
|
1041
|
-
decryptionHint: args.decryptionHint,
|
|
1042
|
-
senderPubkey: expectBytes(args.senderPubkey, ML_DSA_65_PUBLIC_KEY_LEN, "senderPubkey"),
|
|
1043
|
-
outerSignature: expectBytes(outerSignature, ML_DSA_65_SIGNATURE_LEN, "outerSignature"),
|
|
1044
|
-
sender: expectBytes(args.senderAddress, 20, "senderAddress")
|
|
1045
|
-
};
|
|
1046
|
-
const wireBytes = bincodeEncryptedEnvelope(envelope);
|
|
1047
|
-
return { envelope, wireBytes, wireHex: bytesToHex2(wireBytes) };
|
|
1048
|
-
}
|
|
1049
|
-
function aadFor(aad) {
|
|
1050
|
-
return concatBytes2(DKG_AEAD_DOMAIN_TAG, bincodeNonceAad(aad));
|
|
1051
|
-
}
|
|
1052
|
-
function bincodeMlDsa65OpaqueInto(w, raw) {
|
|
1053
|
-
w.enumVariant(ENUM_VARIANT_INDEX_ML_DSA_65);
|
|
1054
|
-
w.u16(STANDARD_ALGO_NUMBER_ML_DSA_65);
|
|
1055
|
-
w.bytes(raw);
|
|
1056
|
-
}
|
|
1057
|
-
|
|
1058
|
-
// src/crypto/submission.ts
|
|
1059
|
-
async function fetchEncryptionKey(client) {
|
|
1060
|
-
const result = await client.call(
|
|
1061
|
-
"lyth_getEncryptionKey",
|
|
1062
|
-
[]
|
|
1063
|
-
);
|
|
1064
|
-
return {
|
|
1065
|
-
algo: result.algo ?? "ml-kem-768",
|
|
1066
|
-
epoch: typeof result.epoch === "string" ? BigInt(result.epoch) : BigInt(result.epoch),
|
|
1067
|
-
encapsulationKey: hexToBytes2(result.encapsulationKey, "encapsulationKey")
|
|
1068
|
-
};
|
|
1069
|
-
}
|
|
1070
|
-
async function buildEncryptedSubmission(args) {
|
|
1071
|
-
const input = normalizeInput(args.tx.input);
|
|
1072
|
-
const to = normalizeTo(args.tx.to);
|
|
1073
|
-
const nonceAad = {
|
|
1074
|
-
sender: args.backend.addressBytes(),
|
|
1075
|
-
nonce: parseBigint(args.tx.nonce, "nonce"),
|
|
1076
|
-
chainId: parseBigint(args.tx.chainId, "chainId"),
|
|
1077
|
-
class: args.class ?? (to !== null && input.length === 0 ? MempoolClass.Transfer : MempoolClass.ContractCall),
|
|
1078
|
-
maxFeePerGas: u128Checked(parseBigint(args.tx.maxFeePerGas, "maxFeePerGas"), "maxFeePerGas"),
|
|
1079
|
-
maxPriorityFeePerGas: u128Checked(
|
|
1080
|
-
parseBigint(args.tx.maxPriorityFeePerGas, "maxPriorityFeePerGas"),
|
|
1081
|
-
"maxPriorityFeePerGas"
|
|
1082
|
-
),
|
|
1083
|
-
gasLimit: parseBigint(args.tx.gasLimit, "gasLimit")
|
|
1084
|
-
};
|
|
1085
|
-
const signed = args.backend.signEvmTx(args.tx);
|
|
1086
|
-
const decryptionHint = { epoch: args.encryptionKey.epoch, scheme: 0 };
|
|
1087
|
-
const built = await buildEncryptedEnvelope({
|
|
1088
|
-
signedInnerTxBincode: signed.wireBytes,
|
|
1089
|
-
nonceAad,
|
|
1090
|
-
decryptionHint,
|
|
1091
|
-
kemEncapsulationKey: args.encryptionKey.encapsulationKey,
|
|
1092
|
-
senderAddress: args.backend.addressBytes(),
|
|
1093
|
-
senderPubkey: args.backend.publicKey(),
|
|
1094
|
-
signOuterDigest: (digest) => args.backend.signPrehash(digest)
|
|
1095
|
-
});
|
|
1096
|
-
return {
|
|
1097
|
-
envelopeWireHex: built.wireHex,
|
|
1098
|
-
innerSighashHex: `0x${[...signed.sighash].map((b) => b.toString(16).padStart(2, "0")).join("")}`,
|
|
1099
|
-
innerTxHashHex: bytesToHex2(signed.txHash),
|
|
1100
|
-
innerWireBytes: signed.wireBytes.length
|
|
1101
|
-
};
|
|
1102
|
-
}
|
|
1103
|
-
async function submitEncryptedEnvelope(client, envelopeWireHex) {
|
|
1104
|
-
return client.call("lyth_submitEncrypted", [envelopeWireHex]);
|
|
1105
|
-
}
|
|
1106
|
-
function u128Checked(value, field2) {
|
|
1107
|
-
const cap = (1n << 128n) - 1n;
|
|
1108
|
-
if (value < 0n || value > cap) {
|
|
1109
|
-
throw new Error(`${field2} must fit in u128 for encrypted nonce AAD`);
|
|
1110
|
-
}
|
|
1111
|
-
return value;
|
|
1112
|
-
}
|
|
1113
|
-
function normalizeTo(value) {
|
|
1114
|
-
if (value === null) return null;
|
|
1115
|
-
if (typeof value === "string") return hexToAddressBytes(value);
|
|
1116
|
-
const bytes = value instanceof Uint8Array ? value : Uint8Array.from(value);
|
|
1117
|
-
if (bytes.length !== 20) throw new Error("to must be 20 bytes");
|
|
1118
|
-
return bytes;
|
|
1119
|
-
}
|
|
1120
|
-
function normalizeInput(value) {
|
|
1121
|
-
if (value === void 0) return new Uint8Array(0);
|
|
1122
|
-
if (typeof value === "string") return hexToBytes2(value, "input");
|
|
1123
|
-
return value instanceof Uint8Array ? value : Uint8Array.from(value);
|
|
1124
|
-
}
|
|
1125
978
|
|
|
1126
979
|
// src/mrv.ts
|
|
1127
980
|
var MRV_FORMAT_VERSION = 1;
|
|
@@ -1133,9 +986,9 @@ var MRV_MAX_DEBUG_BYTES = 16 * 1024 * 1024;
|
|
|
1133
986
|
var MRV_MAX_MEMORY_PAGES = 1024;
|
|
1134
987
|
var MRV_MAX_ABI_SYMBOLS = 1024;
|
|
1135
988
|
var MRV_MAX_STORAGE_NAMESPACE_BYTES = 64;
|
|
1136
|
-
var LYTH_DECIMALS =
|
|
989
|
+
var LYTH_DECIMALS = 18;
|
|
1137
990
|
var NATIVE_LYTH_DECIMALS = LYTH_DECIMALS;
|
|
1138
|
-
var LYTHOSHI_PER_LYTH =
|
|
991
|
+
var LYTHOSHI_PER_LYTH = 1000000000000000000n;
|
|
1139
992
|
var MRV_TX_EXTENSION_KIND = 48;
|
|
1140
993
|
var MRV_TX_EXTENSION_V1 = 1;
|
|
1141
994
|
var MRV_CODE_HASH_DOMAIN = new TextEncoder().encode("MONO_MRV_CODE_V1");
|
|
@@ -1202,7 +1055,7 @@ function parseLythToLythoshi(input) {
|
|
|
1202
1055
|
throw new MrvValidationError("lyth amount must be a canonical LYTH decimal");
|
|
1203
1056
|
}
|
|
1204
1057
|
if (fractionRaw.length > NATIVE_LYTH_DECIMALS || !/^[0-9]*$/.test(fractionRaw)) {
|
|
1205
|
-
throw new MrvValidationError(
|
|
1058
|
+
throw new MrvValidationError(`lyth amount supports at most ${NATIVE_LYTH_DECIMALS} decimal places`);
|
|
1206
1059
|
}
|
|
1207
1060
|
const whole = BigInt(wholeRaw.replaceAll(",", ""));
|
|
1208
1061
|
const fraction = fractionRaw === "" ? 0n : BigInt(fractionRaw.padEnd(NATIVE_LYTH_DECIMALS, "0"));
|
|
@@ -1226,7 +1079,7 @@ function checkMrvFeeDisplayConformance(input) {
|
|
|
1226
1079
|
failures.push(`defaultFeeText fee must total ${expectedTotalLythoshi} lythoshi`);
|
|
1227
1080
|
}
|
|
1228
1081
|
} catch {
|
|
1229
|
-
failures.push(
|
|
1082
|
+
failures.push(`defaultFeeText fee must be a canonical ${NATIVE_LYTH_DECIMALS}-decimal LYTH amount`);
|
|
1230
1083
|
}
|
|
1231
1084
|
}
|
|
1232
1085
|
const defaultForbidden = firstForbiddenDefaultFeeTerm(input.defaultFeeText);
|
|
@@ -1610,38 +1463,20 @@ function buildMrvNativeFeePreview(executionUnitLimit, maxExecutionFeeLythoshi, p
|
|
|
1610
1463
|
async function submitMrvDeployNativeTx(client, backend, artifactBytes, options) {
|
|
1611
1464
|
const plan = buildMrvDeployNativeTxPlan(artifactBytes, options);
|
|
1612
1465
|
assertMrvDeployNativeSubmissionPlan(plan);
|
|
1613
|
-
|
|
1614
|
-
backend,
|
|
1615
|
-
tx: plan.tx,
|
|
1616
|
-
encryptionKey: options.encryptionKey ?? await fetchEncryptionKey(client),
|
|
1617
|
-
class: options.class
|
|
1618
|
-
});
|
|
1619
|
-
return {
|
|
1620
|
-
...plan,
|
|
1621
|
-
...submission,
|
|
1622
|
-
txHash: await submitEncryptedEnvelope(client, submission.envelopeWireHex)
|
|
1623
|
-
};
|
|
1466
|
+
return submitMrvEncryptedNativeTxGated(client, backend, plan, options);
|
|
1624
1467
|
}
|
|
1625
1468
|
async function submitMrvDeployPayloadNativeTx(client, backend, artifactBytes, options) {
|
|
1626
1469
|
const plan = buildMrvDeployPayloadNativeTxPlan(artifactBytes, options);
|
|
1627
1470
|
assertMrvDeployNativeSubmissionPlan(plan);
|
|
1628
|
-
|
|
1629
|
-
backend,
|
|
1630
|
-
tx: plan.tx,
|
|
1631
|
-
encryptionKey: options.encryptionKey ?? await fetchEncryptionKey(client),
|
|
1632
|
-
class: options.class
|
|
1633
|
-
});
|
|
1634
|
-
return {
|
|
1635
|
-
...plan,
|
|
1636
|
-
...submission,
|
|
1637
|
-
txHash: await submitEncryptedEnvelope(client, submission.envelopeWireHex)
|
|
1638
|
-
};
|
|
1471
|
+
return submitMrvEncryptedNativeTxGated(client, backend, plan, options);
|
|
1639
1472
|
}
|
|
1640
1473
|
async function submitMrvCallNativeTx(client, backend, contractAddress, input, options) {
|
|
1641
1474
|
const plan = buildMrvCallNativeTxPlan(contractAddress, input, options);
|
|
1642
1475
|
assertMrvCallNativeSubmissionPlan(plan);
|
|
1476
|
+
return submitMrvEncryptedNativeTxGated(client, backend, plan, options);
|
|
1477
|
+
}
|
|
1478
|
+
async function submitMrvEncryptedNativeTxGated(client, backend, plan, options) {
|
|
1643
1479
|
const submission = await buildEncryptedSubmission({
|
|
1644
|
-
backend,
|
|
1645
1480
|
tx: plan.tx,
|
|
1646
1481
|
encryptionKey: options.encryptionKey ?? await fetchEncryptionKey(client),
|
|
1647
1482
|
class: options.class
|
|
@@ -1998,6 +1833,22 @@ function concatBytes3(...parts) {
|
|
|
1998
1833
|
function isIdentifier(value) {
|
|
1999
1834
|
return /^[a-z][a-z0-9_]*$/.test(value);
|
|
2000
1835
|
}
|
|
1836
|
+
var ML_DSA_65_PUBLIC_KEY_LEN = 1952;
|
|
1837
|
+
var ML_DSA_65_SIGNATURE_LEN = 3309;
|
|
1838
|
+
var STANDARD_ALGO_NUMBER_ML_DSA_65 = 1001;
|
|
1839
|
+
var ADDRESS_DERIVATION_DOMAIN = "MONO_ADDRESS_BLAKE3_20_V1";
|
|
1840
|
+
var ADDRESS_DERIVATION_DOMAIN_BYTES = new TextEncoder().encode(ADDRESS_DERIVATION_DOMAIN);
|
|
1841
|
+
function mlDsa65AddressFromPublicKey(publicKey) {
|
|
1842
|
+
return bytesToHex2(mlDsa65AddressBytes(publicKey));
|
|
1843
|
+
}
|
|
1844
|
+
function mlDsa65AddressBytes(publicKey) {
|
|
1845
|
+
const bytes = expectBytes(publicKey, ML_DSA_65_PUBLIC_KEY_LEN, "ML-DSA-65 public key");
|
|
1846
|
+
return blake3(concatBytes2(
|
|
1847
|
+
ADDRESS_DERIVATION_DOMAIN_BYTES,
|
|
1848
|
+
bigintToBeBytes(BigInt(STANDARD_ALGO_NUMBER_ML_DSA_65), 2, "ML-DSA-65 algo id"),
|
|
1849
|
+
bytes
|
|
1850
|
+
)).slice(0, 20);
|
|
1851
|
+
}
|
|
2001
1852
|
|
|
2002
1853
|
// src/registry.ts
|
|
2003
1854
|
var BLS_PUBLIC_KEY_BYTE_LENGTH = 48;
|
|
@@ -2631,7 +2482,7 @@ var NAME_BASE_MULTIPLIER = {
|
|
|
2631
2482
|
cluster: 20,
|
|
2632
2483
|
contract: 10
|
|
2633
2484
|
};
|
|
2634
|
-
var NAME_FALLBACK_FEE_UNIT_LYTHOSHI =
|
|
2485
|
+
var NAME_FALLBACK_FEE_UNIT_LYTHOSHI = 1000000000000n;
|
|
2635
2486
|
var NAME_MAX_LEN = 80;
|
|
2636
2487
|
var NAME_LABEL_MIN_LEN = 1;
|
|
2637
2488
|
var NAME_LABEL_MAX_LEN = 63;
|
|
@@ -2975,13 +2826,31 @@ var RpcClient = class _RpcClient {
|
|
|
2975
2826
|
async ethGasPrice() {
|
|
2976
2827
|
return parseQuantityBig(await this.call("eth_gasPrice", []));
|
|
2977
2828
|
}
|
|
2978
|
-
/**
|
|
2829
|
+
/**
|
|
2830
|
+
* `eth_feeHistory` — base-fee + gas-used history.
|
|
2831
|
+
*
|
|
2832
|
+
* The chain's eth-compat surface serializes the base-fee window under the
|
|
2833
|
+
* camelCase key `baseFeePerGas`. Internally the chain header field is
|
|
2834
|
+
* `base_fee_per_gas`; this method asserts the on-the-wire response actually
|
|
2835
|
+
* carries the expected `baseFeePerGas` array and fails LOUD if the field is
|
|
2836
|
+
* missing or has drifted to snake_case `base_fee_per_gas`. Without this
|
|
2837
|
+
* guard a future rename would silently collapse the base fee to an empty
|
|
2838
|
+
* array and over-/under-quote fees (e.g. name registration would fall back
|
|
2839
|
+
* to the placeholder fee unit and revert `IncorrectFee` on submit).
|
|
2840
|
+
*/
|
|
2979
2841
|
async ethFeeHistory(blockCount, newestBlock = "latest", rewardPercentiles = []) {
|
|
2980
|
-
|
|
2842
|
+
const result = await this.call("eth_feeHistory", [
|
|
2981
2843
|
`0x${blockCount.toString(16)}`,
|
|
2982
2844
|
encodeBlockSelector(newestBlock),
|
|
2983
2845
|
rewardPercentiles
|
|
2984
2846
|
]);
|
|
2847
|
+
if (result !== null && typeof result === "object" && !Array.isArray(result.baseFeePerGas)) {
|
|
2848
|
+
const drifted = "base_fee_per_gas" in result ? " (found snake_case 'base_fee_per_gas')" : "";
|
|
2849
|
+
throw SdkError.malformed(
|
|
2850
|
+
`eth_feeHistory response is missing the camelCase 'baseFeePerGas' array${drifted}; the base-fee field contract changed`
|
|
2851
|
+
);
|
|
2852
|
+
}
|
|
2853
|
+
return result;
|
|
2985
2854
|
}
|
|
2986
2855
|
/** `eth_syncing` — `null` when caught up. */
|
|
2987
2856
|
async ethSyncing() {
|
|
@@ -8521,6 +8390,11 @@ function wordToBigint(word) {
|
|
|
8521
8390
|
}
|
|
8522
8391
|
return out;
|
|
8523
8392
|
}
|
|
8393
|
+
new TextEncoder().encode("protocore/v2/mempool/dkg-mlkem768/1");
|
|
8394
|
+
var MempoolClass = {
|
|
8395
|
+
CLOBOp: 3};
|
|
8396
|
+
|
|
8397
|
+
// src/market-actions.ts
|
|
8524
8398
|
var CLOB_MARKET_ID_DOMAIN_TAG = 193;
|
|
8525
8399
|
var NATIVE_MARKET_MODULE_ADDRESS_BYTES = "0x4d41524b45545f4e41544956455f4d4f445f5631";
|
|
8526
8400
|
var NATIVE_MARKET_MODULE_ADDRESS = addressToTypedBech32(
|
|
@@ -9851,7 +9725,7 @@ var MONOLYTHIUM_NETWORKS = {
|
|
|
9851
9725
|
};
|
|
9852
9726
|
|
|
9853
9727
|
// src/index.ts
|
|
9854
|
-
var version = "0.
|
|
9728
|
+
var version = "0.3.15";
|
|
9855
9729
|
|
|
9856
9730
|
export { ADDRESS_HRP, ADDRESS_KIND_HRPS, API_STREAM_TOPICS, AddressError, AgentActionError, ApiClient, BRIDGE_QUOTE_API_BLOCKED_REASON, BRIDGE_REVERT_TAGS, BRIDGE_SELECTORS, BRIDGE_SUBMIT_API_BLOCKED_REASON, BURN_ADDR, BridgePrecompileError, BridgeRouteCatalogueError, CHAIN_REGISTRY, CHAIN_REGISTRY_RAW_BASE, CLOB_MARKET_ID_DOMAIN_TAG, CLOB_SELECTORS, CLUSTER_FORMED_EVENT_SIG, DELEGATION_REVERT_TAGS, DELEGATION_SELECTORS, DIVERSITY_SCORE_MAX, DelegationPrecompileError, EMPTY_ROOT, EXECUTION_UNIT_PRICE_SAFETY_MULTIPLIER, FEED_ID_DOMAIN_TAG, LYTHOSHI_PER_LYTH, LYTH_DECIMALS, MAX_NATIVE_CALL_FORWARDER_REQUEST_BYTES, MAX_NATIVE_RECEIPT_EVENTS, MIN_EXECUTION_UNIT_PRICE_LYTHOSHI, ML_DSA_65_PUBLIC_KEY_LEN2 as ML_DSA_65_PUBLIC_KEY_LEN, ML_DSA_65_SIGNATURE_LEN2 as ML_DSA_65_SIGNATURE_LEN, MONOLYTHIUM_NETWORKS, MONOLYTHIUM_TESTNET_CHAIN_ID, MONOLYTHIUM_TESTNET_NETWORK_NAME, MRV_DEPLOY_PAYLOAD_VERSION, MRV_FORMAT_VERSION, MRV_MAX_ABI_SYMBOLS, MRV_MAX_CODE_BYTES, MRV_MAX_DEBUG_BYTES, MRV_MAX_MEMORY_PAGES, MRV_MAX_STORAGE_NAMESPACE_BYTES, MRV_MEMORY_PAGE_BYTES, MRV_PROFILE_MONO_RV32IM_V1, MRV_STRUCTURED_FEE_FIELDS, MRV_TX_EXTENSION_KIND, MRV_TX_EXTENSION_V1, MULTISIG_ADDRESS_DERIVATION_DOMAIN, MarketActionError, MrvValidationError, NAME_BASE_MULTIPLIER, NAME_FALLBACK_FEE_UNIT_LYTHOSHI, NAME_LABEL_MAX_LEN, NAME_LABEL_MIN_LEN, NAME_MAX_LEN, NAME_REGISTRY_SELECTORS, NATIVE_AGENT_MODULE_ADDRESS, NATIVE_AGENT_MODULE_ADDRESS_BYTES, NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE, NATIVE_CALL_FORWARDER_RESPONSE_CAPACITY, NATIVE_CALL_FORWARDER_RESPONSE_OFFSET, NATIVE_DEV_HOST_API_VERSION, NATIVE_DEV_IPC_PROTOCOL_VERSION, NATIVE_DEV_MANIFEST_SCHEMA_VERSION, NATIVE_LYTH_DECIMALS, NATIVE_MARKET_EVENT_FAMILY, NATIVE_MARKET_MODULE_ADDRESS, NATIVE_MARKET_MODULE_ADDRESS_BYTES, NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC, NODE_REGISTRY_BLS_PUBKEY_BYTES, NODE_REGISTRY_CAPABILITIES, NODE_REGISTRY_CAPABILITY_MASK, NODE_REGISTRY_DKG_RESHARE_MAX_SIGNERS, NODE_REGISTRY_DKG_RESHARE_MIN_SIGNERS, NODE_REGISTRY_DKG_THRESHOLD_SIG_BYTES, NODE_REGISTRY_PENDING_CHANGE_MAX_INTENT_ID, NODE_REGISTRY_PUBLIC_SERVICE_MASK, NODE_REGISTRY_SELECTORS, NO_EVM_ARCHIVE_PROOF_SCHEMA, NO_EVM_ARCHIVE_SIGNATURE_SCHEME, NO_EVM_FINALITY_EVIDENCE_SCHEMA, NO_EVM_FINALITY_EVIDENCE_SOURCE, NO_EVM_RECEIPTS_ROOT_DOMAIN, NO_EVM_RECEIPT_CODEC, NO_EVM_RECEIPT_PROOF_SCHEMA, NO_EVM_RECEIPT_PROOF_TYPE, NO_EVM_RECEIPT_ROOT_ALGORITHM, NameRegistryError, NoEvmReceiptProofError, NodeRegistryError, OPERATOR_ROUTER_ADDRESS, OPERATOR_ROUTER_EVENT_SIGS, OPERATOR_ROUTER_SELECTORS, OPERATOR_ROUTER_SIGS, ORACLE_EVENT_SIGS, OracleEventError, PENDING_CHANGE_KIND_CODES, PRECOMPILE_ADDRESSES, PROTOCOL_MAX_OPERATOR_FEE_BPS, PROVER_MARKET_ADDRESS, PROVER_MARKET_BID_DOMAIN, PROVER_MARKET_EVENT_SIGS, PROVER_MARKET_REQUEST_DOMAIN, PROVER_MARKET_SELECTORS, PROVER_MARKET_SUBMIT_DOMAIN, PROVER_SLASH_REASON_BAD_PROOF, PROVER_SLASH_REASON_NON_DELIVERY, PUBKEY_REGISTRY_ML_DSA_65_PUBLIC_KEY_LEN, PUBKEY_REGISTRY_SELECTORS, ProverMarketError, PubkeyRegistryError, REGISTRY_DEFAULT_EXECUTION_UNIT_LIMIT, RESERVED_ADDRESS_HRPS, RpcClient, SERVES_GPU_PROVE, SERVICE_PROBE_STATUS, SET_POLICY_CLAIM_DOMAIN_TAG, SPENDING_POLICY_SELECTORS, SdkError, SpendingPolicyError, TESTNET_69420, TRANSFER_DEFAULT_EXECUTION_UNIT_LIMIT, V1_BRIDGE_ALLOWED_FEE_TOKEN, V1_BRIDGE_ALLOWED_PROTOCOL, addressBytesToHex, addressToBech32, addressToTypedBech32, allowRootFor, apiEndpointFromRpcEndpoint, assertMrvCallNativeSubmissionPlan, assertMrvDeployNativeSubmissionPlan, assertMrvFeeDisplayConformance, assertMrvStructuredFeeConformance, assertNativeDevMrcTokenPlan, assertNativeDevMrvDeployPlan, assertNativeDevWalletApprovalRequest, assertNativeMarketOrderBookStreamPayload, assessBridgeRoute, bech32ToAddress, bech32ToAddressBytes, bidSighash, bridgeAddressHex, bridgeDrainRemaining, bridgeQuoteSubmitReadiness, bridgeRoutesReadiness, bridgeTransferCandidates, buildBridgeRouteCatalogue, buildCancelSpotOrderPlan, buildMrvCallNativeTxPlan, buildMrvCallPlan, buildMrvCallRequest, buildMrvDeployNativeTxPlan, buildMrvDeployPayloadNativeTxPlan, buildMrvDeployPayloadPlan, buildMrvDeployPayloadRequest, buildMrvDeployPlan, buildMrvDeployRequest, buildNativeAgentCreateEscrowForwarderInput, buildNativeAgentCreateEscrowModuleCall, buildNativeAgentModuleCallEnvelope, buildNativeAgentRecordReputationForwarderInput, buildNativeAgentRecordReputationModuleCall, buildNativeAgentSetSpendingPolicyForwarderInput, buildNativeAgentSetSpendingPolicyModuleCall, buildNativeCallForwarderArtifact, buildNativeMarketModuleCallEnvelope, buildNativeNftBuyListingForwarderInput, buildNativeNftBuyListingModuleCall, buildNativeNftCancelListingForwarderInput, buildNativeNftCancelListingModuleCall, buildNativeNftCreateListingForwarderInput, buildNativeNftCreateListingModuleCall, buildNativeNftPlaceAuctionBidForwarderInput, buildNativeNftPlaceAuctionBidModuleCall, buildNativeNftSettleAuctionForwarderInput, buildNativeNftSettleAuctionModuleCall, buildNativeNftSweepExpiredListingsForwarderInput, buildNativeNftSweepExpiredListingsModuleCall, buildNativeSpotCancelOrderForwarderInput, buildNativeSpotCancelOrderModuleCall, buildNativeSpotCreateMarketForwarderInput, buildNativeSpotCreateMarketModuleCall, buildNativeSpotLimitOrderForwarderInput, buildNativeSpotLimitOrderModuleCall, buildNativeSpotSettleLimitOrderForwarderInput, buildNativeSpotSettleLimitOrderModuleCall, buildNativeSpotSettleRoutedLimitOrderForwarderInput, buildNativeSpotSettleRoutedLimitOrderModuleCall, buildPlaceLimitOrderViaPlan, buildPlaceSpotLimitOrderPlan, buildPlaceSpotMarketOrderExPlan, buildPlaceSpotMarketOrderPlan, categoryRoot, checkMrvFeeDisplayConformance, checkMrvStructuredFeeConformance, checkNativeDevkitCompatibility, clampPriorityTip, clobAddressHex, clusterApyPercent, compareNativeDevVersions, composeClaimBoundMessage, computeNoEvmDacFinalityMessage, computeNoEvmLeaderFinalityMessage, computeNoEvmReceiptsRoot, computeNoEvmRoundFinalityMessage, computeNoEvmTargetReceiptHash, computeQuoteLiquidity, consumeNativeEvents, decodeClusterDiversity, decodeClusterFormedEvent, decodeHasPubkeyReturn, decodeLookupPubkeyReturn, decodeNativeAgentStateResponse, decodeNativeMarketOrderBookDeltasResponse, decodeNativeReceiptResponse, decodeNoEvmReceiptTranscript, decodeOperatorFeeChargedEvent, decodeOperatorNetworkMetadata, decodeOracleEvent, decodeTimeWindow, decodeTxFeedResponse, delegationAddressHex, denyRootFor, deriveClobMarketId, deriveClusterAnchorAddress, deriveFeedId, deriveMrvContractAddress, deriveNativeSpotMarketId, deriveNativeSpotOrderId, destinationRoot, encodeAttestDkgReshareCalldata, encodeBlockSelector, encodeBridgeChallengeCalldata, encodeBridgeClaimCalldata, encodeCancelOrderCalldata, encodeCancelPendingChangeCalldata, encodeClaimCalldata, encodeClaimPolicyByAddressCalldata, encodeCompleteRedemptionCalldata, encodeCreateRequestCalldata, encodeCreateRequestCanonical, encodeDelegateCalldata, encodeDisableCalldata, encodeEnableCalldata, encodeHasPubkeyCalldata, encodeLockBridgeConfigCalldata, encodeLookupPubkeyCalldata, encodeMrvDeployPayload, encodeNameAcceptTransferCall, encodeNameProposeTransferCall, encodeNameRegisterCall, encodeNativeAgentAcceptEscrowCall, encodeNativeAgentApproveEscrowCall, encodeNativeAgentArbiterGetCall, encodeNativeAgentAttestationGetCall, encodeNativeAgentAvailabilityGetCall, encodeNativeAgentCancelEscrowCall, encodeNativeAgentCloseAvailabilityCall, encodeNativeAgentConsentGetCall, encodeNativeAgentCounterEscrowCall, encodeNativeAgentCreateEscrowCall, encodeNativeAgentDeactivateServiceCall, encodeNativeAgentDisputeEscrowCall, encodeNativeAgentEscrowGetCall, encodeNativeAgentGrantConsentCall, encodeNativeAgentIssueAttestationCall, encodeNativeAgentIssuerGetCall, encodeNativeAgentListServiceCall, encodeNativeAgentModuleForwarderInput, encodeNativeAgentOpenAvailabilityCall, encodeNativeAgentRecordPolicySpendCall, encodeNativeAgentRecordReputationCall, encodeNativeAgentRegisterArbiterCall, encodeNativeAgentRegisterIssuerCall, encodeNativeAgentReputationGetCall, encodeNativeAgentResolveEscrowCall, encodeNativeAgentRevokeAttestationCall, encodeNativeAgentRevokeConsentCall, encodeNativeAgentServiceGetCall, encodeNativeAgentSetAvailabilityCall, encodeNativeAgentSetSpendingPolicyCall, encodeNativeAgentSpendingPolicyGetCall, encodeNativeAgentStartEscrowCall, encodeNativeAgentSubmitEscrowCall, encodeNativeMarketModuleForwarderInput, encodeNativeNftBuyListingCall, encodeNativeNftCancelListingCall, encodeNativeNftCreateListingCall, encodeNativeNftPlaceAuctionBidCall, encodeNativeNftSettleAuctionCall, encodeNativeNftSweepExpiredListingsCall, encodeNativeSpotCancelOrderCall, encodeNativeSpotCreateMarketCall, encodeNativeSpotLimitOrderCall, encodeNativeSpotSettleLimitOrderCall, encodeNativeSpotSettleRoutedLimitOrderCall, encodePlaceLimitOrderCalldata, encodePlaceLimitOrderViaCalldata, encodePlaceMarketOrderCalldata, encodePlaceMarketOrderExCalldata, encodeRecoverOperatorNodeCalldata, encodeRedelegateCalldata, encodeRegisterPubkeyCalldata, encodeReportServiceProbeCalldata, encodeSetAutoCompoundCalldata, encodeSetBridgeResumeCooldownCalldata, encodeSetBridgeRouteFinalityCalldata, encodeSetLotSizeCalldata, encodeSetMinNotionalCalldata, encodeSetPolicyCalldata, encodeSetPolicyClaimCalldata, encodeSetTickSizeCalldata, encodeSubmitBridgeProofCalldata, encodeSubmitPendingChangeCalldata, encodeUndelegateCalldata, exportBridgeRouteCatalogueJson, fetchChainInfoLatest, fetchChainRegistryLatest, formatLyth, formatLythoshi, formatNativeReceiptFeeDisplay, formatOraclePrice, getChainInfo, getNoEvmReceiptTrustPolicy, getP2pSeeds, getRpcEndpoints, hexToAddressBytes, isBridgeAdminLockedRevert, isBridgeCooldownZeroRevert, isBridgeFinalityZeroRevert, isBridgeResumeCooldownActiveRevert, isConcreteServiceProbeStatus, isNativeDecodedEvent, isNativeMarketOrderBookStreamPayload, isRedemptionPrincipalUnavailableRevert, isSinglePublicServiceProbeMask, isValidNodeRegistryCapabilities, isValidPublicServiceProbeMask, mrvAddressToBech32, mrvBech32ToAddress, mrvCodeHashHex, mrvV1TransactionExtension, nameLengthModifierX10, nameRegistrationCost, nameRegistryAddressHex, nativeAgentStateFilterParams, nativeDevSchemaFieldNames, nativeDevUiStrings, nativeEventMatches, nativeEventsFilterParams, nativeEventsFromHistory, nativeEventsFromReceipt, nativeMarketEventFilter, nativeMarketEventsFromHistory, nativeMarketEventsFromReceipt, nativeMarketStateFilterParams, noEvmReceiptTrustPolicyFromChainInfo, nodeHostingClassFromByte, nodeHostingClassToByte, nodeRegistryAddressHex, normalizeAddressHex, normalizeBridgeRouteCatalogue, normalizePendingChangeKind, oracleAddressHex, oraclePriceToNumber, packTimeWindow, parseAddress, parseBridgeRouteCatalogueJson, parseChainRegistryToml, parseDkgResharePublicKeys, parseLythToLythoshi, parseNameCategory, parseNativeDecodedEvent, parseQuantity, parseQuantityBig, proverMarketStateFromByte, pubkeyRegistryAddressHex, quoteOperatorFee, rankBridgeRoutes, rankMarketsByVolume, requestSighash, requireTypedAddress, resolveExecutionFee, resolveMaxExecutionUnitPrice, resolveRegistryExecutionFee, resolveStudioHostStatus, selectBridgeTransferRoute, serviceProbeStatusLabel, setDestinationRoot, spendingPolicyAddressHex, submitMrvCallNativeTx, submitMrvDeployNativeTx, submitMrvDeployPayloadNativeTx, submitSighash, transactionFeeExposure, typedBech32ToAddress, validateAddress, validateBridgeRouteCatalogue, validateMrvArtifactMetadata, validateMrvCallRequest, validateMrvDeployRequest, verifyNoEvmArchiveProofSignatures, verifyNoEvmBlockFinalityEvidenceMultisig, verifyNoEvmBlockFinalityEvidenceThreshold, verifyNoEvmFinalityEvidenceMultisig, verifyNoEvmFinalityEvidenceThreshold, verifyNoEvmReceiptProof, verifyNoEvmReceiptProofTrust, version };
|
|
9857
9731
|
//# sourceMappingURL=index.js.map
|