Stacks Voice is a reference project that builds on the SIP018 signed structured data standard to create an accountless internet forum.

Overview

Stacks Voice

Stacks Voice is a reference project that builds on the SIP018 signed structured data standard to create an accountless internet forum. Threads and posts are signed messages that are independently verified by clients accessing the forum. Although the reference implementation uses a central backend to index and store the messages, it is impossible for the host to alter their contents without alerting users.

The purpose of this project is to show how SIP018 messages can be used to create off-chain applications that leverage on-chain identities and trust.

The application is built with SvelteKit and micro-stacks.

Features

  • Accountless: there is no need for users to register an account. Instead, they connect their wallet (like Hiro Wallet) and send properly signed SIP018 messages to the backend. The backend checks if the signature is valid and whether it was written recently. If so, it will add the message to its local database.

  • BNS support: the application automatically resolves the BNS names of authors (if any), and displays them next to the posts.

  • Client-side verification: clients independently verify the posts and display the verification status next to each post. Any invalid posts—for example due to server-side manipulation—are displayed differently and clearly marked.

  • Manual verification: users can download raw messages and verify their authenticity manually.

  • Post deletion: posts can be deleted by the original author. The request to delete a post is likewise done by means of a signed message.

Limitations

  • BNS names are resolved based on current time. Ideally the BNS name of authors should be resolved according to the closest block height at the time of the post. There is currently no built-in way to do this apart from running your own node. (Running a node was out of scope for the project.)

  • No profile picture support. Once we have full Stacks profile capability the application can automatically show profile pictures for authors. Another solution would be to add a signed message that allows the user to define an NFT it owns as a profile picture. (Which is then stored in the backend.) We ran out of time and thus were unable to create an example of how it could be done.

  • No spam control nor administrative support. A bot can blast the API with properly signed messages and the backend will accept them. An end-user version of Stacks Voice should include administrative capabilities and other content safeguards. Naturally we recognise the problem but it was low priority as this is a reference project.

  • No edit capabilities. Users can only post or delete messages.

On-chain capabilities

The signed messages for the project are used exclusively off-chain. However, there is nothing that would prevent the messages from being used on-chain. We had the idea to implement a poll voting feature in Stacks Voice with the intention to bring those votes on-chain later. Such a feature would be fantastic DAO governance: discuss and vote off-chain and take the result on-chain. Unfortunately, the Clarity Innovation Lab ran out of time and we were unable to complete the feature and corresponding ExecutorDAO extension in time.

Install and run a development server

  1. Copy .env.example to .env and edit where necessary.
  2. Run npm install to install dependencies.
  3. Run npm run db:create to create the SQLite3 database.
  4. Run npm run dev to start the development server.
  5. Follow console instructions.

Integrations

  • Stacks Voice is currently being integrated into the stx.eco EcosytemDAO.

License

MIT

You might also like...

📕 The minimal and reddit like forum

📕 The minimal and reddit like forum

jeddit 📕 The minimal and reddit like forum Install git clone https://github.com/kyro95/jeddit.git cd reddit npm install npx prisma db push Setup Crea

Sep 1, 2022

The one DAO to rule them all. A modular DAO written in Clarity for the Stacks blockchain.

ExecutorDAO The one DAO to rule them all. ExecutorDAO is designed to be completely modular and flexible, leveraging Clarity to the fullest extent. The

Oct 5, 2022

MultiSafe is a shared crypto wallet for managing Stacks (STX) and Bitcoin (BTC).

MultiSafe MultiSafe is a shared crypto wallet for managing Stacks (STX) and Bitcoin (BTC). Deploy a MultiSafe https://app.multisafe.xyz/ Features Curr

Dec 26, 2022

A Stacks DeFi app that automates covered call writing to generate sustainable, risk-adjusted yield.

A Stacks DeFi app that automates covered call writing to generate sustainable, risk-adjusted yield.

💰 Options Vault 💰 A Stacks DeFi app that automates covered call writing to generate sustainable, risk-adjusted yield. Options vaults allow you to al

Nov 16, 2022

API dot Open Sauced is NestJS and SupaBase powered OAS3 backend designed to remove client complexity and provide a structured graph of all @open-sauced integrations

API dot Open Sauced is NestJS and SupaBase powered OAS3 backend designed to remove client complexity and provide a structured graph of all @open-sauced integrations

🍕 Open Sauced Nest Supabase API 🍕 The path to your next Open Source contribution 📖 Prerequisites In order to run the project we need the following

Dec 18, 2022

jQuery UI widget for structured queries like "Contacts where Firstname starts with A and Birthday before 1/1/2000 and State in (CA, NY, FL)"...

jQuery UI widget for structured queries like

Structured-Filter · Structured-Filter is a generic Web UI for building structured search or filter queries. With it you can build structured search co

Jan 6, 2023

Builds components using a simple and explicit API around virtual-dom

Etch is a library for writing HTML-based user interface components that provides the convenience of a virtual DOM, while at the same time striving to

Dec 15, 2022

A demo to show how to re-use Eleventy Image’s disk cache across Netlify builds.

Re-use Eleventy Image Disk Cache across Netlify Builds Live Demo This repository takes all of the high resolution browser logos and processes them thr

Apr 5, 2022

Storybook add-on to enable SWC builds.

storybook-addon-swc Storybook addon that improves build time by building with swc. 🗒 Examples webpack4 webpack5 🚀 Installation $ npm install -D stor

Dec 20, 2022
Owner
Clarity Innovation Lab
Clarity Innovation Lab
DNS-Blocklists: For a better internet - keep the internet clean!

DNS Blocklists - For a better internet! Multi - Cleans the Internet and protects your privacy! An all in one blocklist based on the OISD blocklist, ba

Gerd 280 Jan 2, 2023
Open-source NFID SDK for Internet Identity, a blockchain authentication system for the Internet Computer.

NFID-SDK is an open source software development kit that contains examples and packages for developers to integrate NFID into your application

Internet Identity Labs 15 Dec 23, 2022
I'm trying to create simple program for adding the digital signature to a pdf file with self-signed certificate. I use node-signpdf and pdf-lib library.

pdf-digital-signature-with-node-signpdf-ejs I'm trying to create simple program for adding the digital signature to a pdf file with self-signed certif

null 5 Dec 25, 2022
A simple API to interact with Stacks and CityCoins data.

CityCoins API Probably Nothing CF Workers + IttyRouter + micro-stacks + TypeScript ...and it feels good! Things to Note uses simple typed responses an

CityCoins 9 Oct 10, 2022
A tiny, reactive JavaScript library for structured state and tabular data.

A JavaScript library for structured state. Using plain old JavaScript objects to manage data gets old very quickly. It's error-prone, tricky to track

tinyplex 1.4k Jan 1, 2023
A simple project of task list! - Stacks HTML, CSS and JS(pure)

Stacks used This project The purpose of this was to recreate a To do list project using the concepts of JavaScript, HTML and CSS and also storing the

Alisson Peixer 3 Sep 20, 2022
Portfolioshop builds custom portfolio websites with submitted user data.

Portfolio Shop What our project does? We are trying to build a website to make the process of building personal portfolios easier. Often we have seen

Portfolio Shop 44 Dec 22, 2022
Generate meshes from signed distance functions and constructive solid geometry operations.

sdf-csg Generate meshes from signed distance functions and constructive solid geometry operations. This library is heavily based upon Inigo Quilez's 3

Rye Terrell 151 Oct 24, 2022
A GitHub action to automate Rojo project builds.

Rojo Build Action This action swiftly builds your rojo places, models & assets. Inputs output Required This is the file you want the action to output

Compey 3 Oct 23, 2022
A Hacker News style forum, built on the Lens Protocol.

Refract A Hacker News style forum, built on the Lens Protocol This starter kit is composed of Next.js and Tailwind CSS, with RainbowKit, ethers, & wag

Miguel Piedrafita 65 Dec 2, 2022