') + ')', '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('^' + ".*" + ', '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" + ', '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('^' + ".*" + ', '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 - cheqd/cheqd-node: Ledger/node software for cheqd's decentralised identity network. Built using the Cosmos SDK blockchain framework. · GitHub
Skip to content

cheqd-node: Ledger code cheqd network

GitHub release (latest by date)GitHub Release DateGitHub license

GitHub release (latest by date including pre-releases)GitHub commits since latest release (by date)GitHub contributors

GitHub Workflow StatusGitHub Workflow StatusGitHub go.mod Go versionGitHub repo size

ℹ️ Overview

cheqd is a public self-sovereign identity (SSI) network for building secure 🔐 and private 🤫 self-sovereign identity systems on Cosmos 💫. Our core vision is to add viable commercial models to decentralised digital 🆔

cheqd-node is the ledger/node component of the cheqd network tech stack, built using Cosmos SDK and CometBFT.

▶️ Quick start for joining cheqd networks

Join our Discord server for help, questions, and support if you are looking to join our mainnet or testnet.

Either the cheqd team, or one of your fellow node operators will be happy to offer some guidance.

✅ Mainnet

Getting started as a node operator on the cheqd network mainnet is as simple as...

  1. Install the latest stable release of cheqd-node software (currently v3.x.x) on a hosting platform of your choice by following the setup guide.
  2. Once you have acquired CHEQ tokens, promote your node to a validator

If successfully configured, your node would become the latest validator on the cheqd mainnet. Welcome to the new digital ID revolution!

🚧 Testnet

Our testnet is the easiest place for developers and node operators to get started if you're not quite ready yet to dive into building apps on our mainnet. To get started...

  1. Install the latest stable release of cheqd-node software (currently v3.x.x) on a hosting platform of your choice by following the setup guide.
  2. Acquire testnet CHEQ tokens through our testnet faucet.
  3. Once you have acquired CHEQ tokens, promote your node to a validator

🧑‍💻 Using cheqd

Once installed, cheqd-node can be controlled using the cheqd Cosmos CLI guide.

📌 Currently supported functionality

🛠 Developing & contributing to cheqd

cheqd-node is written in Go and built using Cosmos SDK. The Cosmos SDK Developer Guide explains a lot of the basic concepts of how the cheqd network functions.

If you want to build a node from source or contribute to the code, please read our guide to building and testing.

Creating a local network

If you are building from source, or otherwise interested in running a local network, we have instructions on how to set up a new network for development purposes.

🐞 Bug reports & 🤔 feature requests

If you notice anything not behaving how you expected, or would like to make a suggestion / request for a new feature, please create a new issue and let us know.

💬 Community

Our Discord server is our primary chat channel for the open-source community, software developers, and node operators.

Please reach out to us there for discussions, help, and feedback on the project.

🙋 Find us elsewhere

TelegramDiscordTwitterLinkedInMediumYouTube

About

Ledger/node software for cheqd's decentralised identity network. Built using the Cosmos SDK blockchain framework.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

76 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages