Coder Social home page Coder Social logo

credence's Introduction

Credence

A platform for publishing and analysing belief in the truth of short, factual statements on the internet. For example, a published "cred" could be interpreted like this:

I believe the fact in the following phrase to be false:

"The longest consecutive crowd wave occurred in 2002 at a Denver broncos game. The wave circled the stadium 492 times and lasted over 3 hrs." (source)

I cite this proof. Signed, me.

Which woud be represented like this (in a compressed form) and transmitted to other users.

{
  "source_uri": "https://twitter.com/RealFakeFacts/status/409062831355486208",
  "timestamp": "1452109802",
  "assertion": "IS_FALSE",
  "proof_uri": "http://www.guinnessworldrecords.com/world-records/longest-mexican-wave-%28timed%29",
  "signature": "(base64 encoded RSA signature)",
  "human_readable": {
    "statement": "The longest consecutive crowd wave occurred in 2002 at a Denver broncos game. The wave circled the stadium 492 times and lasted over 3 hrs."
  }
}

How?

Creds are broadcast in a gossip-like fashion so any other user of the network can request what credence others give to specific phrases, websites, etc. Relevant creds are requested from the network and aggregated to create an indication of truth that can suppliment the user's own intuition (see Why?).

Some sources are trustworthy, some are best ignored, and which source is which is different for individuals. If a user publishes their public key, which allows others to recognise creds coming from them and assign a trust weighting to them.

I might choose to weight creds from Brian Cox or Sir David Attenborough at 1000 times more relevant to me than an anonymous user. Though the algorithm is complex, this broadly equates to "it would take 1000 anonymous people telling me a statement is false to balance Sir David telling me it is true".

Why?

The internet has allowed very fast, very broad dispersal of information and in particular between people who are effectively anonymous to each other. However there are limited mechanisms for evaluating the information sources and for doing fact checking.

The provenance of information used to be very clear -- "this article was written by this journalist who writes all the articles on that matter") -- but now its more often that the author of an article isn't known, let alone that their biases and factual reliability are understood.

Credence aims to be a mechanism for bringing our own networks of belief-in-accuracy to the internet. In an isolated community an individual quickly learns whose declarations can be trusted and who is less reliable using their own experiences and the reputation already earned with others in the community. Credence facilitates this functionality for massively distributed communication, and tries to do only that with the aim of becoming a platform for more specific tools.

I've also written an article on Medium which explains the rationale behind Credence.

Usage

Credence is a background service written in go. Once you have go installed you should clone this repo and use the Makefile to compile it.

brew install libsodium czmq
brew install --devel protobuf
go get github.com/golang/protobuf/protoc-gen-go

go get github.com/jphastings/credence
cd $GOPATH/github.com/jphastings/credence
make bootstrap

A credence binary will be created, running it will give you all the instructions you need.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.