Skip to Content
dApps

Signature

Activez la chaîne cible avant de lire sa clé ou de demander une signature. Utilisez le numéro de compte, la séquence, les frais et le point de terminaison RPC propres à cette chaîne ; les valeurs fictives des exemples de signature doivent être remplacées avant utilisation.

Découvrez comment signer des transactions et messages avec le fournisseur Cosmos OneKey.


Signer en Amino (historique)

Pour les transactions historiques encodées en Amino :

const chainId = 'cosmoshub-4' const signer = 'cosmos1...' const signDoc = { chain_id: chainId, account_number: '0', sequence: '0', fee: { amount: [{ denom: 'uatom', amount: '5000' }], gas: '200000', }, msgs: [{ type: 'cosmos-sdk/MsgSend', value: { from_address: signer, to_address: 'cosmos1...', amount: [{ denom: 'uatom', amount: '1000000' }], }, }], memo: '', } const result = await provider.signAmino(chainId, signer, signDoc) console.log({ signed: result.signed, // Signed document signature: result.signature, // { pub_key, signature } })

Signer en Direct (Protobuf)

Pour les transactions modernes encodées en Protobuf :

import { makeSignDoc } from '@cosmjs/proto-signing' const chainId = 'cosmoshub-4' const signer = 'cosmos1...' const signDoc = makeSignDoc( bodyBytes, // Transaction body authInfoBytes, // Auth info with fee chainId, accountNumber ) const result = await provider.signDirect(chainId, signer, signDoc) console.log({ signed: result.signed, signature: result.signature, })

Signer des données arbitraires

Pour signer des messages arbitraires (utile pour l’authentification) :

const chainId = 'cosmoshub-4' const signer = 'cosmos1...' const data = 'Login to MyApp at 2024-01-01T00:00:00Z' const signature = await provider.signArbitrary(chainId, signer, data) // Verify the signature const isValid = await provider.verifyArbitrary(chainId, signer, data, signature) console.log('Signature valid:', isValid)

Diffuser une transaction

const chainId = 'cosmoshub-4' // `txBytes` is the complete signed transaction as a Uint8Array. // Broadcast modes: 'block', 'sync', 'async' const result = await provider.sendTx(chainId, txBytes, 'sync') console.log('TX Hash:', result)

Signer des données Ethereum

Pour les chaînes prenant en charge la signature Ethereum (comme Evmos) :

const result = await provider.signEthereum( chainId, signer, data, // Message to sign 'message' // EthSignType: 'message', 'transaction', or 'eip-712' ) console.log('Signature:', result)

Gestion des erreurs

try { await provider.enable('cosmoshub-4') } catch (error) { if (error.code === 4001) { console.log('User rejected the request') } else if (error.message.includes('not supported')) { console.log('Chain not supported, try experimentalSuggestChain') } else { console.error('Connection failed:', error) } }
Dernière mise à jour le