46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import {
|
|
coin,
|
|
coins,
|
|
makeSignDoc,
|
|
makeStdTx,
|
|
CosmosClient,
|
|
MsgDelegate,
|
|
Secp256k1HdWallet,
|
|
} from "@cosmjs/launchpad";
|
|
|
|
const wallet = await Secp256k1HdWallet.fromMnemonic(
|
|
"enlist hip relief stomach skate base shallow young switch frequent cry park",
|
|
);
|
|
const [{ address: senderAddress }] = await wallet.getAccounts();
|
|
|
|
const client = new CosmosClient("http://localhost:1317");
|
|
|
|
const msg: MsgDelegate = {
|
|
type: "cosmos-sdk/MsgDelegate",
|
|
value: {
|
|
delegator_address: senderAddress,
|
|
// To get the proper validator address, start the demo chain (./scripts/launchpad/start.sh), then run:
|
|
// curl http://localhost:1317/staking/validators | jq '.result[0].operator_address'
|
|
validator_address: "cosmosvaloper1yfkkk04ve8a0sugj4fe6q6zxuvmvza8r3arurr",
|
|
amount: coin(300000, "ustake"),
|
|
},
|
|
};
|
|
const fee = {
|
|
amount: coins(2000, "ucosm"),
|
|
gas: "180000", // 180k
|
|
};
|
|
const memo = "Use your power wisely";
|
|
|
|
const chainId = await client.getChainId();
|
|
console.log("Connected to chain:", chainId);
|
|
|
|
const { accountNumber, sequence } = await client.getSequence(senderAddress);
|
|
console.log("Account/sequence:", accountNumber, sequence);
|
|
|
|
const signDoc = makeSignDoc([msg], fee, chainId, memo, accountNumber, sequence);
|
|
const { signed, signature } = await wallet.signAmino(senderAddress, signDoc);
|
|
const signedTx = makeStdTx(signed, signature);
|
|
|
|
const result = await client.broadcastTx(signedTx);
|
|
console.log("Broadcast result:", result);
|