chaingate
Version:
Multi-chain cryptocurrency SDK for TypeScript — unified API for Bitcoin, Ethereum, Litecoin, Dogecoin, Bitcoin Cash, Polygon, Arbitrum, and any EVM-compatible chain. Create wallets, query balances, send transactions, and manage tokens and NFTs across UTXO
68 lines (67 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EvmNetworkDescriptor = void 0;
const crypto_1 = require("../../utils/crypto");
const messageSigning_1 = require("../../utils/messageSigning");
const NetworkDescriptor_1 = require("./NetworkDescriptor");
/** A {@link NetworkDescriptor} whose {@link id} is an EVM network. */
class EvmNetworkDescriptor extends NetworkDescriptor_1.NetworkDescriptor {
/** @internal */
constructor(id, info, marketsCache, apiKey) {
super(id, info, marketsCache, apiKey);
}
/**
* Derives an EIP-55 checksummed Ethereum address from a public key.
*
* @param publicKey - Compressed or uncompressed secp256k1 public key.
*/
publicKeyToAddress(publicKey) {
return (0, crypto_1.publicKeyToEthAddress)(publicKey);
}
/**
* Checks whether a string is a valid EVM address for this network.
*
* Accepts both checksummed and all-lowercase/all-uppercase forms.
* When the address uses mixed case, the EIP-55 checksum is verified.
*
* @param address - The address string to validate.
* @returns `true` if the address is valid.
*/
isValidAddress(address) {
return (0, crypto_1.isValidEvmAddress)(address);
}
/**
* Signs a message using EIP-191 personal sign (the same scheme as MetaMask's
* `personal_sign`).
*
* @param message - The message to sign (string or raw bytes).
* @param privateKey - The 32-byte secp256k1 private key.
* @returns The 65-byte signature as a hex string with `0x` prefix.
*
* @example
* ```ts
* const key = await wallet.derive("m/44'/60'/0'/0/0");
* const sig = cg.networks.ethereum.signMessage('Hello', key.privateKey.raw);
* ```
*/
signMessage(message, privateKey) {
return (0, messageSigning_1.signEvmMessage)(message, privateKey);
}
/**
* Verifies an EIP-191 personal sign signature.
*
* @param message - The original message.
* @param signature - The signature hex string (with `0x` prefix).
* @param address - The expected signer address.
* @returns `true` if the signature is valid.
*
* @example
* ```ts
* const valid = cg.networks.ethereum.verifyMessage('Hello', sig, '0xAb5801a7...');
* ```
*/
verifyMessage(message, signature, address) {
return (0, messageSigning_1.verifyEvmMessage)(message, signature, address);
}
}
exports.EvmNetworkDescriptor = EvmNetworkDescriptor;