UNPKG

@xpla/xpla

Version:

<p align="center"> <img src="https://user-images.githubusercontent.com/545047/188804067-28e67e5e-0214-4449-ab04-2e0c564a6885.svg" width="80"> </p>

64 lines (63 loc) 2.4 kB
import { defaultAccountParser as parseCosmosAccount, defaultSignerConfig as CosmosSignerConfig, } from '@interchainjs/cosmos/defaults'; import { toDecoder } from '@interchainjs/cosmos/utils'; import { PubKey as Secp256k1PubKey } from '@interchainjs/cosmos-types/cosmos/crypto/secp256k1/keys'; import { EthAccount } from './accounts/eth-account'; import { EthAccount as protoEthAccount } from '@xpla/xplajs/ethermint/types/v1/account'; import { bytes as assertBytes } from '@noble/hashes/_assert'; import { keccak_256 } from '@noble/hashes/sha3'; import { computeAddress } from '@ethersproject/transactions'; import { Key } from '@interchainjs/utils'; import { EthSecp256k1Auth } from '@interchainjs/auth/ethSecp256k1'; export const Network = { Mainnet: { lcd: "https://dimension-lcd.xpla.io", rpc: "https://dimension-rpc.xpla.io", }, Testnet: { lcd: "https://cube-lcd.xpla.io", rpc: "https://cube-rpc.xpla.io", } }; export const defaultPublicKeyConfig = { isCompressed: CosmosSignerConfig.publicKey.isCompressed, hash: (publicKey) => Key.fromHex(computeAddress(publicKey.value)) }; export const defaultEncodePublicKey = (key) => { return { typeUrl: '/ethermint.crypto.v1.ethsecp256k1.PubKey', value: Secp256k1PubKey.encode(Secp256k1PubKey.fromPartial({ key: key.value })).finish(), }; }; export const defaultAccountParser = (encodedAccount) => { try { return parseCosmosAccount(encodedAccount); } catch (error) { const decoder = toDecoder(protoEthAccount); const account = decoder.fromPartial(decoder.decode(encodedAccount.value)); return account.baseAccount; } }; export const defaultSignerOptions = { Cosmos: { ...CosmosSignerConfig, message: { ...CosmosSignerConfig.message, hash: (message) => { const hashed = keccak_256(message); assertBytes(hashed); return hashed; }, }, publicKey: defaultPublicKeyConfig, encodePublicKey: defaultEncodePublicKey, parseAccount: defaultAccountParser, createAccount: EthAccount, prefix: 'xpla', } }; export const defaultWalletOptions = { bip39Password: undefined, createAuthsFromMnemonic: EthSecp256k1Auth.fromMnemonic, signerConfig: defaultSignerOptions.Cosmos, };