RippleMessenger: A blockchain-based client (part 1/2)

Published: (March 1, 2026 at 12:21 AM EST)
5 min read
Source: Dev.to

Source: Dev.to

Question

Based on the previous analysis of personal data rights, to what extent can an individual achieve the maximum degree of fairness and freedom in cyberspace?

Sovereignty on a Personal Computer

When using their own computer (which is also part of cyberspace), an individual is almost sovereign:

  • Store any data they want.
  • Read it whenever they want.
  • Delete it at will.
  • Generate new content (write novels, edit videos, do design work).
  • Install any software they like (or even write their own).
  • Turn the machine on or off, connect to the network or disconnect.

In short, when using a personal computer, the individual is the master.

Therefore: use your computer more often. When you are using your own computer, you are in control.

Maximum Realistic Power vs. Online Services

The greatest power an individual can realistically strive for when facing online services they do not control is the right for their published data not to be deleted.

To achieve this, three conditions must be met:

  1. Local storage & backup

    • Keep your data on your personal computer.
    • Even if a network service deletes the data, you can re‑upload and re‑publish it from your local copy.
  2. Open, independent, and public data format

    • Publish data in a format that is openly specified and independent of any proprietary conditions.
    • Example: once the TCP/IP packet standard is publicly released, any packet that conforms to the standard can be transmitted across the Internet.
    • The data can exist independently of any particular system; the system merely obeys the individual’s instructions to transmit, store, or display the data.
    • Consequently, any person can provide data services in cyberspace—no single provider can delete an individual’s published data across the entire network.
  3. Non‑forgable and non‑repudiable data (cryptographic integrity)

    • Sign the data with cryptography. A valid signature prevents forgery and ensures the signer cannot deny publishing it.
    • The key pair is generated locally using open algorithms and is not authorized or managed by any third party, allowing anonymous publication (anonymity toward service providers and non‑interacting parties).
    • The individual may reveal their real identity to specific parties, or not. Trust is ultimately a judgment made by each concrete person.

Apart from the two major powers described above, individuals do not need to pursue additional rights—and may even consider proactively giving up other demands.

Based on the analysis, individuals should choose one data format to publish data in cyberspace. The format is defined below.

{
  "type": "object",
  "required": [
    "ObjectType",
    "Sequence",
    "PreHash",
    "Content",
    "Timestamp",
    "PublicKey",
    "Signature"
  ],
  "maxProperties": 10,
  "properties": {
    "ObjectType": { "type": "number", "const": "ObjectType.Bulletin" },
    "Sequence":   { "type": "number" },
    "PreHash":    { "type": "string" },
    "Content":    { "type": "string" },

    "Tag": {
      "type": "array",
      "minItems": 1,
      "items": { "type": "string" }
    },

    "Quote": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["Address", "Sequence", "Hash"],
        "properties": {
          "Address":  { "type": "string" },
          "Sequence": { "type": "number" },
          "Hash":     { "type": "string" }
        }
      }
    },

    "File": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["Name", "Ext", "Size", "Hash"],
        "properties": {
          "Name": { "type": "string" },
          "Ext":  { "type": "string" },
          "Size": { "type": "number" },
          "Hash": { "type": "string" }
        }
      }
    },

    "Timestamp": { "type": "number" },
    "PublicKey": { "type": "string" },
    "Signature": { "type": "string" }
  }
}

Field Explanations

Core / Mandatory Fields (6)

FieldDescription
ObjectTypeIdentifies the type of this object.
SequenceSequence number of this item in the chain published by this PublicKey under this ObjectType (starts at 1, increments by 1). Forms a logical chain per account per type.
PreHashHash of the previous item in the chain; for the first item it is the fixed value 44F8764BCACFF5424D4044B784549A1B. Together with Sequence, creates a tamper‑evident chain.
TimestampCreation time of this bulletin; should be later than any referenced items.
PublicKeyIdentifier of the publishing account.
SignatureCryptographic signature over the bulletin, ensuring integrity, authenticity (tied to PublicKey), and non‑repudiation.

Content‑Related Fields (Optional / Extensible)

FieldDescription
ContentMain text content of the bulletin, filled by the user.
TagArray of tags for later retrieval and filtering.
QuoteReferences to other bulletins (cross‑chain linking / replying), by Address + Sequence + Hash.
FileMetadata about attached files (name, extension, size, hash).

Bulletin Overview

The bulletin itself does not contain file data — it only holds references via a hash, allowing the actual files to be transported separately.

Minimum Validation Rules

Any node/peer must perform the following checks before accepting or storing a bulletin:

  1. Signature verification

    • Use the provided PublicKey to verify the Signature.
    • This confirms the integrity and authenticity of the publisher.
  2. Sequence continuity

    • Ensure that the current last sequence number in the chain (for this PublicKey + ObjectType) is exactly Sequence - 1.
  3. Pre‑hash validation

    • Compute the hash of the previous item (Sequence - 1).
    • Confirm that this computed hash matches the bulletin’s PreHash field.
    • This guarantees that the new item can be appended to the tail of the chain.
0 views
Back to Blog

Related posts

Read more »

The Last Dance with the past🕺

Introduction Hello dev.to community! A week ago I posted my first article introducing myself and explaining that I left web development to focus on cryptograph...