Census Protocol Dev Team

James Ayvaz

Request for Comments 2015-001

Lee Preimesberger

Obsoletes: none

Category: Base Protocol

Revision 001

               

Enablement of Trust Brokering



Status of this Memo

  This document specifies changes to the Census Protocol, and requests discussion and suggestions for improvements.  Distribution of this memo is unlimited.

1. Introduction



  This documents details proposed changes to several schema to enable users to be certified by others - essentially providing a trusted chain from a central authority.

2. Motivation

Users on Census have no method of certifying their existence as real and valid users.  This update provides a method for them to do so.

3. Proposed Changes

The protocol will be extended to include the new entry point */bless.  */bless indicates the signing authority has accepted the target wallet as being a valid and reliable business.  This blessing can be rescinded thorough the */curse entry point below.

*/bless takes an input similar to the wallet API:

exports.cp_bless_schema = {

 required: true,

 type: 'object',

 properties: {

   /* version - must be 1 for this version */

   version: {

     required: true,

     type: 'integer',

     minimum: 1,

     maximum: 1

   },

   /* unique id - this is of the form of a uuid generally, but it just must be unique if that no longer works in the future */

   txid: {

     required: true,

     type: 'string'

   },

   /* this existing simplifies interfaces a lot - required to be blank on incoming */

   block_in:{

     required: true,

     type: 'string',

     value: ''

   },

   /* when it was created - required for consensus stuff later - note this is utc time */

   created: {

     required: true,

     type: 'integer'

   },

   /* required proof that you actually have this key - must be signed with source private key */

   signature: {

     required: true,

     type: 'string'

   },

   /* must be item or wallet in v1 */

   item_type:{

     required: true,

     type: 'string',

     enum: ["bless"]

   },

   /* required proof that you actually have this key - this is a ECDSA public key in the form defined in the spec */

   source: {

     required: true,

     type: 'string'

   },

   /* user text - we dont limit but there's an overall entry cap in the spec */

   comment: {

     required: false,

     type: 'string'

   },

 }

};

The protocol will be extended to include the new entry point */curse.  */curse indicates the signing authority has removed any previous blessing and wishes to officially log a ‘curse’ on the source wallet.  A new blessing will counteract this.

*/curse takes an input similar to the wallet API:

exports.cp_curse_schema = {

 required: true,

 type: 'object',

 properties: {

   /* version - must be 1 for this version */

   version: {

     required: true,

     type: 'integer',

     minimum: 1,

     maximum: 1

   },

   /* unique id - this is of the form of a uuid generally, but it just must be unique if that no longer works in the future */

   txid: {

     required: true,

     type: 'string'

   },

   /* this existing simplifies interfaces a lot - required to be blank on incoming */

   block_in:{

     required: true,

     type: 'string',

     value: ''

   },

   /* when it was created - required for consensus stuff later - note this is utc time */

   created: {

     required: true,

     type: 'integer'

   },

   /* required proof that you actually have this key - must be signed with source private key */

   signature: {

     required: true,

     type: 'string'

   },

   /* must be item or wallet in v1 */

   item_type:{

     required: true,

     type: 'string',

     enum: ["curse"]

   },

   /* required proof that you actually have this key - this is a ECDSA public key in the form defined in the spec */

   source: {

     required: true,

     type: 'string'

   },

   /* user text - we dont limit but there's an overall entry cap in the spec */

   comment: {

     required: false,

     type: 'string'

   },

 }

};