K is a decentralized microblogging platform that leverages Kaspa's unique features to provide a truly censorship-resistant social experience.
In today's digital landscape, centralized social media platforms have unprecedented control over information flow and public discourse:
- Algorithmic Manipulation: Algorithms arbitrarily boost or suppress user content based on opaque criteria
- Censorship: Posts and accounts are removed or shadowbanned for expressing certain viewpoints
- Account Deletion: Users lose their entire digital presence overnight without warning or recourse
- Permissioned Systems: Your ability to participate depends on the platform's approval
- Information Control: A handful of private entities decide what billions of people can see and say
K tackles these fundamental issues by leveraging Kaspa's revolutionary technology to create a truly decentralized social media experience:
- β Complete Censorship Resistance: No central authority can delete or suppress your content
- β True Decentralization: Runs on Kaspa's widely distributed global network
- β Lightning Fast: Powered by Kaspa's unique speed and GHOSTDAG technology
- β Ultra-Low Cost: Post ~100 characters for only ~0.00002 KAS (2000 sompis)
- β Maximum Transparency: All content and interactions are publicly visible on the blockchain
- β Proven Security: Protected by Kaspa's Proof-of-Work and robust consensus mechanism
- β Based on a sustainable network: Kaspa's incentive structure ensures network sustainability
- β Maximum uptime: Kaspa network never stops
- β Open Source: Community-driven development and participation
K represents true freedom of expression - no borders, no control, no censorship. With the ability to post up to 50,000 messages for just 1 KAS, cost is never a barrier to sharing your thoughts with the world.
Born from the Kaspa community, K is designed to evolve through collaboration with developers, enthusiasts and users who believe in freedom.
This code is a PROOF OF CONCEPT designed to demonstrate K's potential to the Kaspa community and showcase a real solution to genuine problems faced by users worldwide.
While K has the potential to become a feature-rich, widely-adopted platform, the current version is experimental and includes:
- π Bugs and unexpected behaviors
- β‘ Inefficient processes in some areas
- π¨ User interface/experience improvements needed
- π§ Missing features and functionality
By using K, you accept these limitations as part of the development process.
π¨ TESTNET ONLY: We strongly recommend using K exclusively on Kaspa testnet until further development.
- β Creating your K identity: Generate your unique blockchain-based identity
- β User presentations: Introduce yourself to the K community
- β Creating posts: Share your thoughts with the network
- β Replying to posts: Engage in conversations
- β Viewing network posts: Browse all content shared by users
- β Reply notifications: See all replies involving you
- β Upvoting/Downvoting: Community-driven content ranking
- β Indexer configuration: Use local or public indexers for network data
- β Node configuration: Connect to local or public Kaspa nodes
- β UI Themes: Dark theme
- β Reposting: Share others' content with your network
- β Quoting: Add commentary when sharing posts
- β User mentions: Tag other users in your posts
- β Following/Unfollowing: Curate your content feed
- β User blocking: Spam protection and content filtering
- β User endorsements: Promote and suggest other users
- β Historical data: Access past user activity (indexer dependent)
K consists of three main components working together to provide a decentralized social media experience.
Each user locally runs their own:
- Kaspa node: Connects to the Kaspa network and manages transactions
- K-indexer: Processes and indexes K protocol transactions
- Webapp (frontend): User interface for interacting with the platform
sequenceDiagram
participant U as User (K frontend)
participant I as K-indexer
participant K as Kaspa node
Note over I,K: Background synchronization
K-->>I: Receive messages
Note over U,K: User interactions with system
U->>I: Request messages
I-->>U: Response
U->>K: Send messages
This repository contains the K webapp frontend. The K-indexer component is available separately:
K-indexer Repository: https://github.com/thesheepcat/K-indexer/blob/master/README.md
For detailed technical information, please refer to these comprehensive documents:
PROTOCOL SPECIFICATIONS: Complete technical specification of the K protocol, including transaction formats, data structures, and network communication standards.
API TECHNICAL SPECIFICATIONS: Detailed API documentation covering all endpoints, request/response formats, and integration guidelines for developers about the communication between K-indexer and K.
Before running K webapp, you need:
- Kaspa node running on testnet
- K-indexer processing transactions
- NodeJS installed on your PC (latest version: https://nodejs.org/en/download)
Follow the complete setup guide here: https://github.com/thesheepcat/K-indexer/blob/master/README.md
# Clone this repository
git clone https://github.com/thesheepcat/K.git
cd K
# Download Kaspa WASM SDK from official repository
# Extract only the "web" folder and place it in:
# /src/kaspa-wasm32-sdk/
# Install dependencies
npm install
# Start development server
npm run dev
The webapp will be available at: http://localhost:5173
- Open your browser to http://localhost:5173
- Generate a new Private/Public key pair
- Set a secure password for your K identity
- Your unique K identity is now created!
- Navigate to "Settings" section
- Configure your Kaspa node connection
- Configure your K-indexer connection (use this format http://localhost:3000 or http://your-server:3000)
- Save your configuration
- Go to "Profile" section to find your Kaspa address
- Send multiple small transactions (1 tKAS each) to your address
- π‘ Pro tip: More UTXOs = faster posting capabilities
- Use testnet KAS (tKAS) only
- "User" section: Create your introduction post to present yourself to the network
- "My posts" section: Share your thoughts and ideas
- "Watching" section: Discover and engage with other users' content
- Explore and connect with the K community!
- "How are the user contents (posts, replies, etc) being stored? In the Kaspa node?: All K relevant data are included in regular Kaspa transactions (in the payload) and processed by Kaspa node; K-indexer is connected to Kaspa node, it receives all transactions and it filters only K relevant transactions; then, K-indexer saves all these data in a dedicated database.
- "How are you planning on enabling historical data?: If historial data have already been saved in K-indexer, they are available to the user; if historical data traversed Kaspa network before K-indexer was acttivated, they aren't available. We're exploring the possibility to use kaspa.org APIs to retrieve hostorical data for specific transactions requested by the user, as a fallback mechanism.
- "Will the K stored data increase the storage requirements for running a Kaspa node?: Kaspa node requirements aren't affected by K or K-indexer as Kaspa node is just doing regular "Kaspa node things"; by the way, if the machine (PC, server, VPS, VM, etc) is hosting both Kaspa node and K-indexer, more storage space will be required (because of k-indexer database). How much storage will be required? We'll observe the behaviour of the testnet network, when more people will be engaged in day by day usage of K and we'll define the minimum requirements for operating K-indexer.
- "How do you delete data? How do you prevent illegal content?: Kaspa is an immutable decentralized ledger; it means that transactions (and their content) can't be deleted by anyone (except by the regular pruning process executed by the node itself). The so called "Illegal contents" are part of the decentralized and censorship resistant nature of K: they are a natural expression of the real "freedom of speech". Anyhow, as we understand this can be a tricky point for some users, we are exploring two mitigations:
- Allowing the user to block contents from some other users, just by using a "Block user" feature on K webapp; in this way, the user will not see any more content from the user being blocked; this solution would act exclusively on K webapp (meaning that, if user changes device to open and use K, those "User blocks" are unknown by the new device/browser).
- Allowing the user to propagate this "user block" to K-indexer; in this way, K-indexer would deleted any content from blocked users from K-indexer database (this would work for personally deployed indexers but it would be applicable for public indexers).
- "On login page, the user is required to generate or insert a Kaspa private key. Is it safe to insert and keep user's private key in K?: As general rule, we sugges to create a dedicated K identity and private key on the first use on K, avoiding to insert existing private key which could be already linked to user funds; once the private and public key, the user can fund small amount of KAS (ie. 4/5 KAS) to the K address, in order to allow the user to pay for network fees. In addition, here i share a dedicated document which aims to explain to both tech and non-tech people how authentication works in K, how private keys are managed, handled, saved, exposed, etc: AUTHENTICATION MANAGEMENT.
Need help or want to connect with other K users and developers?
Join the Kluster Discord server: https://discord.gg/vuKyjtRGKB