Cosmos
Cosmos
#Installation
Magic interacts with the Cosmos blockchain via Magic's extension NPM package @magic-ext/cosmos
. The Cosmos extension also lets you interact with the blockchain using methods from cosmjs.
You can skip straight to our kitchen sink example directly:
👉 Cosmos Example
01npm install --save @magic-ext/cosmos
#Initialization
01import { Magic } from 'magic-sdk';
02import { CosmosExtension } from '@magic-ext/cosmos';
03
04const magic = new Magic('YOUR_API_KEY', {
05 extensions: [
06 new CosmosExtension({
07 rpcUrl: 'cosmos rpc url',
08 }),
09 ],
10});
#Common Methods
#Sign and Send Transaction
To send or sign a standard Cosmos blockchain transaction, you can call the magic.cosmos.signAndBroadcast
method or magic.cosmos.sign
method.
01import { Magic } from 'magic-sdk';
02import { CosmosExtension } from '@magic-ext/cosmos';
03import { coins } from '@cosmjs/launchpad';
04
05const magic = new Magic('YOUR_API_KEY', {
06 extensions: [
07 new CosmosExtension({
08 rpcUrl: 'cosmos rpc url',
09 }),
10 ],
11});
12
13const handlerSendTransaction = async () => {
14 const metadata = await magic.user.getMetadata();
15
16 const message = [
17 {
18 typeUrl: '/cosmos.bank.v1beta1.MsgSend',
19 value: {
20 fromAddress: metadata.publicAddress,
21 toAddress: destinationAddress,
22 amount: [
23 {
24 amount: String(sendAmount),
25 denom: 'atom',
26 },
27 ],
28 },
29 },
30 ];
31 const fee = {
32 amount: [{ denom: 'uatom', amount: '500' }],
33 gas: '200000',
34 };
35
36 const sendTransactionResult = await magic.cosmos.signAndBroadcast(message, fee);
37 //or
38 const signTransactionResult = await magic.cosmos.sign(message, fee);
39};
#Send Tokens
Using magic.cosmos.sendTokens
function to native tokens on Cosmos blockchain.
01import { Magic } from 'magic-sdk';
02import { CosmosExtension } from '@magic-ext/cosmos';
03
04const magic = new Magic('YOUR_API_KEY', {
05 extensions: [
06 new CosmosExtension({
07 rpcUrl: 'cosmos rpc url',
08 }),
09 ],
10});
11
12const result = await magic.cosmos.sendTokens('recipientAddress', 'transferAmount', 'denom', 'memo');
#Change Address
Using magic.cosmos.changeAddress
function to change the address prefix.
01import { Magic } from 'magic-sdk';
02import { CosmosExtension } from '@magic-ext/cosmos';
03
04const magic = new Magic('YOUR_API_KEY', {
05 extensions: [
06 new CosmosExtension({
07 rpcUrl: 'cosmos rpc url',
08 }),
09 ],
10});
11
12const result = await magic.cosmos.changeAddress('address prefix');