cosmos_sdk

Creator: coderz1093

Last updated:

0 purchases

TODO
Add to Cart

Description:

cosmos sdk

Dart Cosmos-sdk #
Experience effortless interaction with a Cosmos SDK-based network in Dart, facilitating the seamless creation, signing, and transmission of transactions. (Beta version)
*** This version is in beta and requires comprehensive testing for each model implementation. ****
Supported Protocol Buffer packages #

cosmos.auth.v1beta1
cosmos.authz.v1beta1
cosmos.bank.v1beta1
cosmos.base.abci.v1beta1
cosmos.base.node.v1beta1
cosmos.base.query.v1beta1
cosmos.base.reflection.v1beta1
cosmos.base.tendermint.v1beta1
cosmos.base.v1beta1
cosmos.crisis.v1beta1
cosmos.crypto.ed25519
cosmos.crypto.multisig.v1beta1
cosmos.crypto.secp256k1
cosmos.crypto.secp256r1
cosmos.distribution.v1beta1
cosmos.feegrant.v1beta1
cosmos.genutil.v1beta1
cosmos.gov.v1beta1
cosmos.mint.v1beta1
cosmos.nft.v1beta1
cosmos.params.v1beta1
cosmos.slashing.v1beta1
cosmos.staking.v1beta1
cosmos.tx.signing.v1beta1
cosmos.tx.v1beta1
cosmos.upgrade.module.v1
cosmos.upgrade.v1beta1
cosmos.vesting.v1beta1
cosmos.ics23.v1
capability.v1
ibc.applications.fee.v1
ibc.applications.interchain_accounts.controller.v1
ibc.applications.interchain_accounts.genesis.v1
ibc.applications.interchain_accounts.host.v1
ibc.applications.interchain_accounts.v1
ibc.applications.transfer.v1
ibc.applications.transfer.v2
ibc.core.channel.v1
ibc.core.client.v1
ibc.core.commitment.v1
ibc.core.connection.v1
ibc.core.types.v1
ibc.lightclients.localhost.v2
ibc.lightclients.solomachine.v2
ibc.lightclients.solomachine.v3
ibc.lightclients.tendermint.v1
ibc.lightclients.wasm.v1
tendermint/tendermint

Example #
Transaction #
Create and sign transactions related to the Cosmos Hub.

/// Generating BIP39 seed from mnemonic phrase
final seedBytes = Bip39SeedGenerator(Mnemonic.fromString(
"this dove indoor skin shed gap east welcome gift buffalo silent high"))
.generate();

/// Deriving hierarchical deterministic (HD) wallet using BIP44
final bip44 = Bip44.fromSeed(seedBytes, Bip44Coins.cosmos).deriveDefaultPath;
final pubkey = CosmosSecp256K1PublicKey.fromBytes(bip44.publicKey.compressed);
final privateKey = CosmosSecp256K1PrivateKey.fromBytes(bip44.privateKey.raw);

// Initializing provider to interact with Tendermint node of Theta testnet
final provider = TendermintProvider(TendermintHTTPProvider(
url: "https://rpc.sentry-02.theta-testnet.polypore.xyz"));

/// Querying account info from the blockchain
final accountInfo = await provider.request(TendermintRequestAbciQuery(
request: QueryAccountInfoRequest(pubkey.toAddresss())));

/// Querying the latest block information
final latestBlock = await provider.request(
TendermintRequestAbciQuery(request: const GetLatestBlockRequest()));

/// Creating authentication info for transaction
final authInfo = AuthInfo(
signerInfos: [
SignerInfo(
publicKey: pubkey,
modeInfo: const ModeInfo(ModeInfoSignle(SignMode.signModeDirect)),
sequence: accountInfo.info.sequence)
],
fee: Fee(amount: [
Coin(
denom: "uatom",
amount: BigInt.from(1000),
)
], gasLimit: BigInt.from(200000)));

/// Creating a transaction message to send tokens
final message = MsgSend(
fromAddress: pubkey.toAddresss(),
toAddress: CosmosBaseAddress("cosmos1qhslf0sx2fegltfqq0p5j6etmdznjgfnm2j6nc"),
amount: [Coin(denom: "uatom", amount: BigInt.from(1000000))]);

/// Creating transaction body with the message
final txbody = TXBody(messages: [message]);

/// Creating a signable document for the transaction
final SignDoc signDoc = SignDoc(
bodyBytes: txbody.toBuffer(),
authInfoBytes: authInfo.toBuffer(),
chainId: latestBlock.block!.header.chainId!,
accountNumber: accountInfo.info.accountNumber);

/// Signing the document with the private key
final sign = privateKey.sign(signDoc.toBuffer());

/// Creating a raw transaction with body, authentication info, and signature
final txRaw = TxRaw(
bodyBytes: txbody.toBuffer(),
authInfoBytes: authInfo.toBuffer(),
signatures: [sign]);

/// Broadcasting the raw transaction to the network
await provider.request(TendermintRequestBroadcastTxCommit(
BytesUtils.toHexString(txRaw.toBuffer(), prefix: "0x")));

copied to clipboard
Address and key managment #
Support for Secp256k1, ED25519 and NIST P-256 keys.

/// Generate seed bytes from a mnemonic
final seedBytes = Bip39SeedGenerator(Mnemonic.fromString(
"this dove indoor skin shed gap east welcome gift buffalo silent high"))on
.generate();

/// Derive BIP44 path
final bip44 = Bip44.fromSeed(seedBytes, Bip44Coins.cosmos).deriveDefaultPath;

/// Create a Cosmos Secp256k1 private key from the derived private key bytes
final privateKey = CosmosSecp256K1PrivateKey.fromBytes(bip44.privateKey.raw);

/// Generate the corresponding public key and address for Secp256k1
final pubkey = CosmosSecp256K1PublicKey.fromBytes(bip44.publicKey.compressed);
final cosmosAddress = pubkey.toAddresss(hrp: "cosmos");

/// Sign the provided digest using the Secp256k1 private key
final sign = privateKey.sign(digest);

/// Create a Cosmos ED25519 private key from the provided key bytes
final ed25519PrivateKey = CosmosED25519PrivateKey.fromBytes(keyBytes);

/// Generate the corresponding public key and address for ED25519
final edPublicKey = ed25519PrivateKey.toPublicKey();
final validatorAddr = edPublicKey.toAddresss(hrp: "cosmosvaloper");

/// Sign the provided digest using the ED25519 private key
final edSign = ed25519PrivateKey.sign(digest);

/// Create a Cosmos NIST P-256 private key from the provided key bytes
final nistPrivateKey = CosmosNist256p1PrivateKey.fromBytes(keyBytes);

/// Generate the corresponding public key and base address for NIST P-256
final nistPublicKey = nistPrivateKey.toPublicKey();
final baseAddress = nistPublicKey.toAddresss();

/// Sign the provided digest using the NIST P-256 private key
final nistSign = nistPrivateKey.sign(digest);

copied to clipboard
JSON-RPC #
Support Tendermint RPC.

/// Define a Tendermint provider with a HTTP URL
final provider = TendermintProvider(TendermintHTTPProvider(
url: "https://rpc.sentry-02.theta-testnet.polypore.xyz"));

/// Query account information using the provider
final accountInfo = await provider.request(TendermintRequestAbciQuery(
request: QueryAccountInfoRequest(pubkey.toAddresss())));

/// Get the latest block information using the provider
final latestBlock = await provider.request(
TendermintRequestAbciQuery(request: const GetLatestBlockRequest()));

/// Broadcast a transaction and wait for a commit using the provider
final transaction = await provider.request(TendermintRequestBroadcastTxCommit(
BytesUtils.toHexString(txRaw.toBuffer(), prefix: "0x")));

copied to clipboard
Contributing #
Contributions are welcome! Please follow these guidelines:

Fork the repository and create a new branch.
Make your changes and ensure tests pass.
Submit a pull request with a detailed description of your changes.

Feature requests and bugs #
Please file feature requests and bugs in the issue tracker.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files:

Customer Reviews

There are no reviews.