Fixed signning issue

This commit is contained in:
liangping 2022-06-04 09:04:00 +08:00
parent d8c0f02bc6
commit 899cb0d20d
2 changed files with 19 additions and 25 deletions

View File

@ -11,7 +11,7 @@ import { LedgerSigner } from '@cosmjs/ledger-amino';
import { EthereumLedgerSigner } from './EthereumLedgerSigner'; import { EthereumLedgerSigner } from './EthereumLedgerSigner';
import TransportWebUSB from '@ledgerhq/hw-transport-webusb'; import TransportWebUSB from '@ledgerhq/hw-transport-webusb';
import TransportWebBLE from '@ledgerhq/hw-transport-web-ble' import TransportWebBLE from '@ledgerhq/hw-transport-web-ble'
import { stringToPath } from '@cosmjs/crypto'; import { HdPath, stringToPath } from '@cosmjs/crypto';
import { StdFee } from "@cosmjs/amino"; import { StdFee } from "@cosmjs/amino";
import { TxRaw } from "cosmjs-types/cosmos/tx/v1beta1/tx"; import { TxRaw } from "cosmjs-types/cosmos/tx/v1beta1/tx";
@ -44,9 +44,9 @@ import { TxRaw } from "cosmjs-types/cosmos/tx/v1beta1/tx";
export declare type SigningClient = SigningStargateClient | SigningEthermintClient; export declare type SigningClient = SigningStargateClient | SigningEthermintClient;
export async function getSigningClient(device, hdpath) : Promise<SigningClient> { export async function getSigningClient(device, hdpath): Promise<SigningClient> {
let ledgerAppName = 'Cosmos' let ledgerAppName = 'Cosmos'
let coinType = Number(stringToPath(hdpath)[1]) let coinType = Number(hdpath[1])
switch (coinType) { switch (coinType) {
case 60: case 60:
return new SigningEthermintClient(await EthereumLedgerSigner.create(device, hdpath)) // 'Ethereum' return new SigningEthermintClient(await EthereumLedgerSigner.create(device, hdpath)) // 'Ethereum'
@ -71,7 +71,7 @@ export class SigningEthermintClient {
} }
sign(signerAddress: string, messages: readonly EncodeObject[], fee: StdFee, memo: string, explicitSignerData?: SignerData): Promise<TxRaw> { sign(signerAddress: string, messages: readonly EncodeObject[], fee: StdFee, memo: string, explicitSignerData?: SignerData): Promise<TxRaw> {
return new Promise(()=>{return TxRaw.decode(null)}) return new Promise(() => { return TxRaw.decode(null) })
} }
} }

View File

@ -18,6 +18,7 @@ import localeData from 'dayjs/plugin/localeData'
import { $themeColors } from '@themeConfig' import { $themeColors } from '@themeConfig'
// import { SigningStargateClient } from '@cosmjs/stargate' // import { SigningStargateClient } from '@cosmjs/stargate'
// import PingWalletClient from './data/signing' // import PingWalletClient from './data/signing'
import { SigningStargateClient } from '@cosmjs/stargate'
import { getSigningClient } from './client/PingWalletClient.ts' import { getSigningClient } from './client/PingWalletClient.ts'
import { EthereumLedgerSigner } from './client/EthereumLedgerSigner.ts' import { EthereumLedgerSigner } from './client/EthereumLedgerSigner.ts'
@ -225,30 +226,23 @@ async function getLedgerAppName(coinType, device, hdpath) {
export async function sign(device, chainId, signerAddress, messages, fee, memo, signerData) { export async function sign(device, chainId, signerAddress, messages, fee, memo, signerData) {
const hdpath = getHdPath(signerAddress) const hdpath = getHdPath(signerAddress)
const client = getSigningClient(device, hdpath) let client
if (device.startsWith('ledger')) {
client = await getSigningClient(device, hdpath)
} else {
if (!window.getOfflineSigner || !window.keplr) {
throw new Error('Please install keplr extension')
}
await window.keplr.enable(chainId)
const signer = window.getOfflineSignerOnlyAmino(chainId)
client = await SigningStargateClient.offline(signer)
}
// let transport // let transport
// let signer // let signer
// const hdpath = getHdPath(signerAddress) // const hdpath = getHdPath(signerAddress)
// const coinType = Number(hdpath[1]) const coinType = Number(hdpath[1])
// switch (device) { const addr = device.startsWith('ledger') && coinType === 118 ? toSignAddress(signerAddress) : signerAddress
// case 'ledgerBle': return client.sign(addr, messages, fee, memo, signerData)
// signer = await getLedgerAppName(coinType, device, hdpath)
// break
// case 'ledgerUSB':
// signer = await getLedgerAppName(coinType, device, hdpath)
// break
// case 'keplr':
// default:
// if (!window.getOfflineSigner || !window.keplr) {
// throw new Error('Please install keplr extension')
// }
// await window.keplr.enable(chainId)
// signer = window.getOfflineSignerOnlyAmino(chainId)
// }
// // Ensure the address has some tokens to spend
// const client = await PingWalletClient.offline(signer)
return client.signAmino(device.startsWith('ledger') ? toSignAddress(signerAddress) : signerAddress, messages, fee, memo, signerData)
} }
export async function getLedgerAddress(transport = 'blu', hdPath = "m/44'/118/0'/0/0") { export async function getLedgerAddress(transport = 'blu', hdPath = "m/44'/118/0'/0/0") {