Skip to content

Repository files navigation

CosmJS

License: Apache-2.0

CosmJS is the Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers in the Cosmos ecosystem.

"Cosm" is short for Cosmos and "JS" is short for runs everywhere – we actually develop in TypeScript.

Documentation

Here is a list of examples using the Stargate package for use with Cosmos SDK 0.41 applications (like gaia 4). Take a look at the wiki page, "What can CosmJS do for me?" and various tests (ex) for more example usage of the packages.

API documentation

The full API documentation is hosted at cosmos.github.io/cosmjs. This is a bit tricky to navigate and requires basic TypeScript understanding. It is helpful if you want to look up details for advanced use cases. This documentation is auto-generated based on the current main branch and can occasionally diverge from the latest release.

Using custom Stargate modules

Documentation on how to use your own custom modules with CosmJS for Stargate chains (Cosmos SDK v0.41) can be found here.

Packages

CosmJS is a library that consists of many smaller npm packages within the @cosmjs namespace, a so-called monorepo. Here are some of them to get an idea:

PackageDescriptionLatest
@cosmjs/stargateA client library for the Cosmos SDK 0.40+ (Stargate)npm version
@cosmjs/faucetA faucet application for node.jsnpm version
@cosmjs/cosmwasm-stargateClient for Stargate chains with the CosmWasm module enablednpm version
@cosmjs/cryptoCryptography for blockchain projects, e.g. hashing (SHA-2, Keccak256, Ripemd160), signing (secp256k1, ed25519), HD key derivation (BIP-39, SLIP-0010), KDFs and symmetric encryption for key storage (PBKDF2, Argon2, XChaCha20Poly1305)npm version
@cosmjs/encodingEncoding helpers for blockchain projectsnpm version
@cosmjs/mathSafe integers; decimals for handling financial amountsnpm version

Modularity

We're pretty proud of the modularity and a clean dependency tree in this monorepo. This ensures software quality on our side and lets users pick exactly what they need. Here you see how everything fits together (every item is a npm package; right depends on left):

CosmJS dependency tree

If this was not enough to scare you away, check out the version including app runtime dependencies: cosmjs-tree-full.png.

Supported JS environments

Currently the codebase supports the following runtime environments:

  1. Node.js 14+
  2. Modern browsers (Chromium/Firefox/Safari, no Internet Explorer or Edge Spartan)
  3. Browser extensions (Chromium/Firefox)

Our current JavaScript target standard is ES2020. We use WebAssembly to implement certain cryptographic functions.

We're happy to adjust this list according to users' needs as long as you don't ask for Internet Explorer support. If your environment does not support Wasm, we can work on a solution with swappable implementations.

Webpack Configs

With WebPack 5, you have to be explicit about the usage of Node.js types and modules that were simply replaced with re-implementations for browsers in Webpack 4.

Configs for 0.28 and later:

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: false,string_decoder: false,},},},];

Configs for CosmJS < 0.28

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: require.resolve("stream-browserify"),string_decoder: false,},},},];

Roadmap

We maintain a development board, use release milestones and share important updates in the CosmWasm Community Call. For higher level roadmap discussion please reach out to the team.

Known limitations

0.26

  1. When connecting to a Cosmos SDK 0.44+ backend, the verified queries from AuthExtension and BankExtension as well as StargateClient.getAccountVerified will fail because the storage keys are not stable. Unverified queries can be used instead. Those queries are deprecated now and will be removed in 0.27 (#910).

0.25

  1. Decoding blocks of height 1 is unsupported. This is fixed in #815 and will be released as part of CosmJS 0.26.

0.24

  1. AuthExtension and all higher level Stargate clients only support BaseAccounts for all functionality, including getting account numbers and sequences for transaction signing. This will be implemented for all common Cosmos SDK account types in the 0.25 series.

Get in touch

The CosmJS development team is happy to get in touch with you for all questions and suggestions.

Development

See HACKING.md.

About

The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - CronosLabsDev/cosmjs: The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers. · GitHub
Skip to content

Repository files navigation

CosmJS

License: Apache-2.0

CosmJS is the Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers in the Cosmos ecosystem.

"Cosm" is short for Cosmos and "JS" is short for runs everywhere – we actually develop in TypeScript.

Documentation

Here is a list of examples using the Stargate package for use with Cosmos SDK 0.41 applications (like gaia 4). Take a look at the wiki page, "What can CosmJS do for me?" and various tests (ex) for more example usage of the packages.

API documentation

The full API documentation is hosted at cosmos.github.io/cosmjs. This is a bit tricky to navigate and requires basic TypeScript understanding. It is helpful if you want to look up details for advanced use cases. This documentation is auto-generated based on the current main branch and can occasionally diverge from the latest release.

Using custom Stargate modules

Documentation on how to use your own custom modules with CosmJS for Stargate chains (Cosmos SDK v0.41) can be found here.

Packages

CosmJS is a library that consists of many smaller npm packages within the @cosmjs namespace, a so-called monorepo. Here are some of them to get an idea:

PackageDescriptionLatest
@cosmjs/stargateA client library for the Cosmos SDK 0.40+ (Stargate)npm version
@cosmjs/faucetA faucet application for node.jsnpm version
@cosmjs/cosmwasm-stargateClient for Stargate chains with the CosmWasm module enablednpm version
@cosmjs/cryptoCryptography for blockchain projects, e.g. hashing (SHA-2, Keccak256, Ripemd160), signing (secp256k1, ed25519), HD key derivation (BIP-39, SLIP-0010), KDFs and symmetric encryption for key storage (PBKDF2, Argon2, XChaCha20Poly1305)npm version
@cosmjs/encodingEncoding helpers for blockchain projectsnpm version
@cosmjs/mathSafe integers; decimals for handling financial amountsnpm version

Modularity

We're pretty proud of the modularity and a clean dependency tree in this monorepo. This ensures software quality on our side and lets users pick exactly what they need. Here you see how everything fits together (every item is a npm package; right depends on left):

CosmJS dependency tree

If this was not enough to scare you away, check out the version including app runtime dependencies: cosmjs-tree-full.png.

Supported JS environments

Currently the codebase supports the following runtime environments:

  1. Node.js 14+
  2. Modern browsers (Chromium/Firefox/Safari, no Internet Explorer or Edge Spartan)
  3. Browser extensions (Chromium/Firefox)

Our current JavaScript target standard is ES2020. We use WebAssembly to implement certain cryptographic functions.

We're happy to adjust this list according to users' needs as long as you don't ask for Internet Explorer support. If your environment does not support Wasm, we can work on a solution with swappable implementations.

Webpack Configs

With WebPack 5, you have to be explicit about the usage of Node.js types and modules that were simply replaced with re-implementations for browsers in Webpack 4.

Configs for 0.28 and later:

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: false,string_decoder: false,},},},];

Configs for CosmJS < 0.28

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: require.resolve("stream-browserify"),string_decoder: false,},},},];

Roadmap

We maintain a development board, use release milestones and share important updates in the CosmWasm Community Call. For higher level roadmap discussion please reach out to the team.

Known limitations

0.26

  1. When connecting to a Cosmos SDK 0.44+ backend, the verified queries from AuthExtension and BankExtension as well as StargateClient.getAccountVerified will fail because the storage keys are not stable. Unverified queries can be used instead. Those queries are deprecated now and will be removed in 0.27 (#910).

0.25

  1. Decoding blocks of height 1 is unsupported. This is fixed in #815 and will be released as part of CosmJS 0.26.

0.24

  1. AuthExtension and all higher level Stargate clients only support BaseAccounts for all functionality, including getting account numbers and sequences for transaction signing. This will be implemented for all common Cosmos SDK account types in the 0.25 series.

Get in touch

The CosmJS development team is happy to get in touch with you for all questions and suggestions.

Development

See HACKING.md.

About

The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CronosLabsDev/cosmjs: The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers. · GitHub
Skip to content

Repository files navigation

CosmJS

License: Apache-2.0

CosmJS is the Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers in the Cosmos ecosystem.

"Cosm" is short for Cosmos and "JS" is short for runs everywhere – we actually develop in TypeScript.

Documentation

Here is a list of examples using the Stargate package for use with Cosmos SDK 0.41 applications (like gaia 4). Take a look at the wiki page, "What can CosmJS do for me?" and various tests (ex) for more example usage of the packages.

API documentation

The full API documentation is hosted at cosmos.github.io/cosmjs. This is a bit tricky to navigate and requires basic TypeScript understanding. It is helpful if you want to look up details for advanced use cases. This documentation is auto-generated based on the current main branch and can occasionally diverge from the latest release.

Using custom Stargate modules

Documentation on how to use your own custom modules with CosmJS for Stargate chains (Cosmos SDK v0.41) can be found here.

Packages

CosmJS is a library that consists of many smaller npm packages within the @cosmjs namespace, a so-called monorepo. Here are some of them to get an idea:

PackageDescriptionLatest
@cosmjs/stargateA client library for the Cosmos SDK 0.40+ (Stargate)npm version
@cosmjs/faucetA faucet application for node.jsnpm version
@cosmjs/cosmwasm-stargateClient for Stargate chains with the CosmWasm module enablednpm version
@cosmjs/cryptoCryptography for blockchain projects, e.g. hashing (SHA-2, Keccak256, Ripemd160), signing (secp256k1, ed25519), HD key derivation (BIP-39, SLIP-0010), KDFs and symmetric encryption for key storage (PBKDF2, Argon2, XChaCha20Poly1305)npm version
@cosmjs/encodingEncoding helpers for blockchain projectsnpm version
@cosmjs/mathSafe integers; decimals for handling financial amountsnpm version

Modularity

We're pretty proud of the modularity and a clean dependency tree in this monorepo. This ensures software quality on our side and lets users pick exactly what they need. Here you see how everything fits together (every item is a npm package; right depends on left):

CosmJS dependency tree

If this was not enough to scare you away, check out the version including app runtime dependencies: cosmjs-tree-full.png.

Supported JS environments

Currently the codebase supports the following runtime environments:

  1. Node.js 14+
  2. Modern browsers (Chromium/Firefox/Safari, no Internet Explorer or Edge Spartan)
  3. Browser extensions (Chromium/Firefox)

Our current JavaScript target standard is ES2020. We use WebAssembly to implement certain cryptographic functions.

We're happy to adjust this list according to users' needs as long as you don't ask for Internet Explorer support. If your environment does not support Wasm, we can work on a solution with swappable implementations.

Webpack Configs

With WebPack 5, you have to be explicit about the usage of Node.js types and modules that were simply replaced with re-implementations for browsers in Webpack 4.

Configs for 0.28 and later:

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: false,string_decoder: false,},},},];

Configs for CosmJS < 0.28

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: require.resolve("stream-browserify"),string_decoder: false,},},},];

Roadmap

We maintain a development board, use release milestones and share important updates in the CosmWasm Community Call. For higher level roadmap discussion please reach out to the team.

Known limitations

0.26

  1. When connecting to a Cosmos SDK 0.44+ backend, the verified queries from AuthExtension and BankExtension as well as StargateClient.getAccountVerified will fail because the storage keys are not stable. Unverified queries can be used instead. Those queries are deprecated now and will be removed in 0.27 (#910).

0.25

  1. Decoding blocks of height 1 is unsupported. This is fixed in #815 and will be released as part of CosmJS 0.26.

0.24

  1. AuthExtension and all higher level Stargate clients only support BaseAccounts for all functionality, including getting account numbers and sequences for transaction signing. This will be implemented for all common Cosmos SDK account types in the 0.25 series.

Get in touch

The CosmJS development team is happy to get in touch with you for all questions and suggestions.

Development

See HACKING.md.

About

The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CronosLabsDev/cosmjs: The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers. · GitHub
Skip to content

Repository files navigation

CosmJS

License: Apache-2.0

CosmJS is the Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers in the Cosmos ecosystem.

"Cosm" is short for Cosmos and "JS" is short for runs everywhere – we actually develop in TypeScript.

Documentation

Here is a list of examples using the Stargate package for use with Cosmos SDK 0.41 applications (like gaia 4). Take a look at the wiki page, "What can CosmJS do for me?" and various tests (ex) for more example usage of the packages.

API documentation

The full API documentation is hosted at cosmos.github.io/cosmjs. This is a bit tricky to navigate and requires basic TypeScript understanding. It is helpful if you want to look up details for advanced use cases. This documentation is auto-generated based on the current main branch and can occasionally diverge from the latest release.

Using custom Stargate modules

Documentation on how to use your own custom modules with CosmJS for Stargate chains (Cosmos SDK v0.41) can be found here.

Packages

CosmJS is a library that consists of many smaller npm packages within the @cosmjs namespace, a so-called monorepo. Here are some of them to get an idea:

PackageDescriptionLatest
@cosmjs/stargateA client library for the Cosmos SDK 0.40+ (Stargate)npm version
@cosmjs/faucetA faucet application for node.jsnpm version
@cosmjs/cosmwasm-stargateClient for Stargate chains with the CosmWasm module enablednpm version
@cosmjs/cryptoCryptography for blockchain projects, e.g. hashing (SHA-2, Keccak256, Ripemd160), signing (secp256k1, ed25519), HD key derivation (BIP-39, SLIP-0010), KDFs and symmetric encryption for key storage (PBKDF2, Argon2, XChaCha20Poly1305)npm version
@cosmjs/encodingEncoding helpers for blockchain projectsnpm version
@cosmjs/mathSafe integers; decimals for handling financial amountsnpm version

Modularity

We're pretty proud of the modularity and a clean dependency tree in this monorepo. This ensures software quality on our side and lets users pick exactly what they need. Here you see how everything fits together (every item is a npm package; right depends on left):

CosmJS dependency tree

If this was not enough to scare you away, check out the version including app runtime dependencies: cosmjs-tree-full.png.

Supported JS environments

Currently the codebase supports the following runtime environments:

  1. Node.js 14+
  2. Modern browsers (Chromium/Firefox/Safari, no Internet Explorer or Edge Spartan)
  3. Browser extensions (Chromium/Firefox)

Our current JavaScript target standard is ES2020. We use WebAssembly to implement certain cryptographic functions.

We're happy to adjust this list according to users' needs as long as you don't ask for Internet Explorer support. If your environment does not support Wasm, we can work on a solution with swappable implementations.

Webpack Configs

With WebPack 5, you have to be explicit about the usage of Node.js types and modules that were simply replaced with re-implementations for browsers in Webpack 4.

Configs for 0.28 and later:

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: false,string_decoder: false,},},},];

Configs for CosmJS < 0.28

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: require.resolve("stream-browserify"),string_decoder: false,},},},];

Roadmap

We maintain a development board, use release milestones and share important updates in the CosmWasm Community Call. For higher level roadmap discussion please reach out to the team.

Known limitations

0.26

  1. When connecting to a Cosmos SDK 0.44+ backend, the verified queries from AuthExtension and BankExtension as well as StargateClient.getAccountVerified will fail because the storage keys are not stable. Unverified queries can be used instead. Those queries are deprecated now and will be removed in 0.27 (#910).

0.25

  1. Decoding blocks of height 1 is unsupported. This is fixed in #815 and will be released as part of CosmJS 0.26.

0.24

  1. AuthExtension and all higher level Stargate clients only support BaseAccounts for all functionality, including getting account numbers and sequences for transaction signing. This will be implemented for all common Cosmos SDK account types in the 0.25 series.

Get in touch

The CosmJS development team is happy to get in touch with you for all questions and suggestions.

Development

See HACKING.md.

About

The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - CronosLabsDev/cosmjs: The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers. · GitHub
Skip to content

Repository files navigation

CosmJS

License: Apache-2.0

CosmJS is the Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers in the Cosmos ecosystem.

"Cosm" is short for Cosmos and "JS" is short for runs everywhere – we actually develop in TypeScript.

Documentation

Here is a list of examples using the Stargate package for use with Cosmos SDK 0.41 applications (like gaia 4). Take a look at the wiki page, "What can CosmJS do for me?" and various tests (ex) for more example usage of the packages.

API documentation

The full API documentation is hosted at cosmos.github.io/cosmjs. This is a bit tricky to navigate and requires basic TypeScript understanding. It is helpful if you want to look up details for advanced use cases. This documentation is auto-generated based on the current main branch and can occasionally diverge from the latest release.

Using custom Stargate modules

Documentation on how to use your own custom modules with CosmJS for Stargate chains (Cosmos SDK v0.41) can be found here.

Packages

CosmJS is a library that consists of many smaller npm packages within the @cosmjs namespace, a so-called monorepo. Here are some of them to get an idea:

PackageDescriptionLatest
@cosmjs/stargateA client library for the Cosmos SDK 0.40+ (Stargate)npm version
@cosmjs/faucetA faucet application for node.jsnpm version
@cosmjs/cosmwasm-stargateClient for Stargate chains with the CosmWasm module enablednpm version
@cosmjs/cryptoCryptography for blockchain projects, e.g. hashing (SHA-2, Keccak256, Ripemd160), signing (secp256k1, ed25519), HD key derivation (BIP-39, SLIP-0010), KDFs and symmetric encryption for key storage (PBKDF2, Argon2, XChaCha20Poly1305)npm version
@cosmjs/encodingEncoding helpers for blockchain projectsnpm version
@cosmjs/mathSafe integers; decimals for handling financial amountsnpm version

Modularity

We're pretty proud of the modularity and a clean dependency tree in this monorepo. This ensures software quality on our side and lets users pick exactly what they need. Here you see how everything fits together (every item is a npm package; right depends on left):

CosmJS dependency tree

If this was not enough to scare you away, check out the version including app runtime dependencies: cosmjs-tree-full.png.

Supported JS environments

Currently the codebase supports the following runtime environments:

  1. Node.js 14+
  2. Modern browsers (Chromium/Firefox/Safari, no Internet Explorer or Edge Spartan)
  3. Browser extensions (Chromium/Firefox)

Our current JavaScript target standard is ES2020. We use WebAssembly to implement certain cryptographic functions.

We're happy to adjust this list according to users' needs as long as you don't ask for Internet Explorer support. If your environment does not support Wasm, we can work on a solution with swappable implementations.

Webpack Configs

With WebPack 5, you have to be explicit about the usage of Node.js types and modules that were simply replaced with re-implementations for browsers in Webpack 4.

Configs for 0.28 and later:

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: false,string_decoder: false,},},},];

Configs for CosmJS < 0.28

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: require.resolve("stream-browserify"),string_decoder: false,},},},];

Roadmap

We maintain a development board, use release milestones and share important updates in the CosmWasm Community Call. For higher level roadmap discussion please reach out to the team.

Known limitations

0.26

  1. When connecting to a Cosmos SDK 0.44+ backend, the verified queries from AuthExtension and BankExtension as well as StargateClient.getAccountVerified will fail because the storage keys are not stable. Unverified queries can be used instead. Those queries are deprecated now and will be removed in 0.27 (#910).

0.25

  1. Decoding blocks of height 1 is unsupported. This is fixed in #815 and will be released as part of CosmJS 0.26.

0.24

  1. AuthExtension and all higher level Stargate clients only support BaseAccounts for all functionality, including getting account numbers and sequences for transaction signing. This will be implemented for all common Cosmos SDK account types in the 0.25 series.

Get in touch

The CosmJS development team is happy to get in touch with you for all questions and suggestions.

Development

See HACKING.md.

About

The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - CronosLabsDev/cosmjs: The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers. · GitHub
Skip to content

Repository files navigation

CosmJS

License: Apache-2.0

CosmJS is the Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers in the Cosmos ecosystem.

"Cosm" is short for Cosmos and "JS" is short for runs everywhere – we actually develop in TypeScript.

Documentation

Here is a list of examples using the Stargate package for use with Cosmos SDK 0.41 applications (like gaia 4). Take a look at the wiki page, "What can CosmJS do for me?" and various tests (ex) for more example usage of the packages.

API documentation

The full API documentation is hosted at cosmos.github.io/cosmjs. This is a bit tricky to navigate and requires basic TypeScript understanding. It is helpful if you want to look up details for advanced use cases. This documentation is auto-generated based on the current main branch and can occasionally diverge from the latest release.

Using custom Stargate modules

Documentation on how to use your own custom modules with CosmJS for Stargate chains (Cosmos SDK v0.41) can be found here.

Packages

CosmJS is a library that consists of many smaller npm packages within the @cosmjs namespace, a so-called monorepo. Here are some of them to get an idea:

PackageDescriptionLatest
@cosmjs/stargateA client library for the Cosmos SDK 0.40+ (Stargate)npm version
@cosmjs/faucetA faucet application for node.jsnpm version
@cosmjs/cosmwasm-stargateClient for Stargate chains with the CosmWasm module enablednpm version
@cosmjs/cryptoCryptography for blockchain projects, e.g. hashing (SHA-2, Keccak256, Ripemd160), signing (secp256k1, ed25519), HD key derivation (BIP-39, SLIP-0010), KDFs and symmetric encryption for key storage (PBKDF2, Argon2, XChaCha20Poly1305)npm version
@cosmjs/encodingEncoding helpers for blockchain projectsnpm version
@cosmjs/mathSafe integers; decimals for handling financial amountsnpm version

Modularity

We're pretty proud of the modularity and a clean dependency tree in this monorepo. This ensures software quality on our side and lets users pick exactly what they need. Here you see how everything fits together (every item is a npm package; right depends on left):

CosmJS dependency tree

If this was not enough to scare you away, check out the version including app runtime dependencies: cosmjs-tree-full.png.

Supported JS environments

Currently the codebase supports the following runtime environments:

  1. Node.js 14+
  2. Modern browsers (Chromium/Firefox/Safari, no Internet Explorer or Edge Spartan)
  3. Browser extensions (Chromium/Firefox)

Our current JavaScript target standard is ES2020. We use WebAssembly to implement certain cryptographic functions.

We're happy to adjust this list according to users' needs as long as you don't ask for Internet Explorer support. If your environment does not support Wasm, we can work on a solution with swappable implementations.

Webpack Configs

With WebPack 5, you have to be explicit about the usage of Node.js types and modules that were simply replaced with re-implementations for browsers in Webpack 4.

Configs for 0.28 and later:

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: false,string_decoder: false,},},},];

Configs for CosmJS < 0.28

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: require.resolve("stream-browserify"),string_decoder: false,},},},];

Roadmap

We maintain a development board, use release milestones and share important updates in the CosmWasm Community Call. For higher level roadmap discussion please reach out to the team.

Known limitations

0.26

  1. When connecting to a Cosmos SDK 0.44+ backend, the verified queries from AuthExtension and BankExtension as well as StargateClient.getAccountVerified will fail because the storage keys are not stable. Unverified queries can be used instead. Those queries are deprecated now and will be removed in 0.27 (#910).

0.25

  1. Decoding blocks of height 1 is unsupported. This is fixed in #815 and will be released as part of CosmJS 0.26.

0.24

  1. AuthExtension and all higher level Stargate clients only support BaseAccounts for all functionality, including getting account numbers and sequences for transaction signing. This will be implemented for all common Cosmos SDK account types in the 0.25 series.

Get in touch

The CosmJS development team is happy to get in touch with you for all questions and suggestions.

Development

See HACKING.md.

About

The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - CronosLabsDev/cosmjs: The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers. · GitHub
Skip to content

Repository files navigation

CosmJS

License: Apache-2.0

CosmJS is the Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers in the Cosmos ecosystem.

"Cosm" is short for Cosmos and "JS" is short for runs everywhere – we actually develop in TypeScript.

Documentation

Here is a list of examples using the Stargate package for use with Cosmos SDK 0.41 applications (like gaia 4). Take a look at the wiki page, "What can CosmJS do for me?" and various tests (ex) for more example usage of the packages.

API documentation

The full API documentation is hosted at cosmos.github.io/cosmjs. This is a bit tricky to navigate and requires basic TypeScript understanding. It is helpful if you want to look up details for advanced use cases. This documentation is auto-generated based on the current main branch and can occasionally diverge from the latest release.

Using custom Stargate modules

Documentation on how to use your own custom modules with CosmJS for Stargate chains (Cosmos SDK v0.41) can be found here.

Packages

CosmJS is a library that consists of many smaller npm packages within the @cosmjs namespace, a so-called monorepo. Here are some of them to get an idea:

PackageDescriptionLatest
@cosmjs/stargateA client library for the Cosmos SDK 0.40+ (Stargate)npm version
@cosmjs/faucetA faucet application for node.jsnpm version
@cosmjs/cosmwasm-stargateClient for Stargate chains with the CosmWasm module enablednpm version
@cosmjs/cryptoCryptography for blockchain projects, e.g. hashing (SHA-2, Keccak256, Ripemd160), signing (secp256k1, ed25519), HD key derivation (BIP-39, SLIP-0010), KDFs and symmetric encryption for key storage (PBKDF2, Argon2, XChaCha20Poly1305)npm version
@cosmjs/encodingEncoding helpers for blockchain projectsnpm version
@cosmjs/mathSafe integers; decimals for handling financial amountsnpm version

Modularity

We're pretty proud of the modularity and a clean dependency tree in this monorepo. This ensures software quality on our side and lets users pick exactly what they need. Here you see how everything fits together (every item is a npm package; right depends on left):

CosmJS dependency tree

If this was not enough to scare you away, check out the version including app runtime dependencies: cosmjs-tree-full.png.

Supported JS environments

Currently the codebase supports the following runtime environments:

  1. Node.js 14+
  2. Modern browsers (Chromium/Firefox/Safari, no Internet Explorer or Edge Spartan)
  3. Browser extensions (Chromium/Firefox)

Our current JavaScript target standard is ES2020. We use WebAssembly to implement certain cryptographic functions.

We're happy to adjust this list according to users' needs as long as you don't ask for Internet Explorer support. If your environment does not support Wasm, we can work on a solution with swappable implementations.

Webpack Configs

With WebPack 5, you have to be explicit about the usage of Node.js types and modules that were simply replaced with re-implementations for browsers in Webpack 4.

Configs for 0.28 and later:

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: false,string_decoder: false,},},},];

Configs for CosmJS < 0.28

module.exports=[{// ...plugins: [
...,newwebpack.ProvidePlugin({Buffer: ["buffer","Buffer"],}),],// ...resolve: {fallback: {buffer: false,crypto: false,events: false,path: false,stream: require.resolve("stream-browserify"),string_decoder: false,},},},];

Roadmap

We maintain a development board, use release milestones and share important updates in the CosmWasm Community Call. For higher level roadmap discussion please reach out to the team.

Known limitations

0.26

  1. When connecting to a Cosmos SDK 0.44+ backend, the verified queries from AuthExtension and BankExtension as well as StargateClient.getAccountVerified will fail because the storage keys are not stable. Unverified queries can be used instead. Those queries are deprecated now and will be removed in 0.27 (#910).

0.25

  1. Decoding blocks of height 1 is unsupported. This is fixed in #815 and will be released as part of CosmJS 0.26.

0.24

  1. AuthExtension and all higher level Stargate clients only support BaseAccounts for all functionality, including getting account numbers and sequences for transaction signing. This will be implemented for all common Cosmos SDK account types in the 0.25 series.

Get in touch

The CosmJS development team is happy to get in touch with you for all questions and suggestions.

Development

See HACKING.md.

About

The Swiss Army knife to power JavaScript based client solutions ranging from Web apps/explorers over browser extensions to server-side clients like faucets/scrapers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages