Skip to content

Remote denylists and watching system (proposal) #19

@hsanjuan

Description

@hsanjuan

The following are my thoughts on how to provide denylists so that they can be subscribed-to.

Server

  • Using HTTP (poll), essentially an IPFS-gateway served file:
    • Lists are made available over an http endpoint.
    • Range requests are supported an accepted.
    • eTag (set to CID )and caching headers
    • I'd like to expand this to use Server Push / Notifications, but it is actually simpler and ok if clients check regularly and check e-tag to see if content changed.
  • Using IPFS:
    • Denylist IPFS-host server publishes to pubsub topic denylist/<name>. Must be a signed message.
    • The message includes the CID of the latest version of the list. This is published every minute, or when it is updated.
    • The CID is the CID of the denylist which is a normal unixfs file (balanced chunking).
    • UnixFS files have support for seeking out of the box, and only the necessary blocks are downloaded when looking for specific bytes.

Client

  • HTTP: Client polls for the file every minute using a ranged request starting at the last byte read. A head request can be done in advance to check eTAG and decide if a GET request is needed. New bytes are appended to the file on disk.
  • IPFS: Client subscribes to pubsub topic. If a new CID comes in, we use unixfs to seek to the last byte read and then it is appended to the file on disk. The pubsub message can include more than the CID, for example a field to indicate if redownloading the full file and processing from the beginning is necessary.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions