Descentralized object storage network for resilient services

Polar

Descentralized object storage network for resilient services

Polar is a binary that you can run on any linux distribution, it will expose a RPC API to communicate with it locally and a REST API on an open port for communicating with others nodes. Its purpose is to create a kind of descentralized and resilient database, to store metadatas of files, entities like user accounts or file chunks. This protocol will allow anyone to run their own instance of any of our services (like bloc) without worrying about loosing data after a hard drive break or a shutdown forced by a government or any unfriendly third party, for the Coldwire project it's a very important part that allow us to be more resilient against any government who are willing to shutdown our services and delete the ressources we publish.

How it's working?

all of this is theorical and have been written in one our, so there is probably errors, etc but will be edited when everything will be more accurate

basic functions

There are 4 main function you can call over RPC:

  1. push: cut data in chunks and then create objects for each chunks on a swarm of nodes and create a signed UID for each of theses object using owner's private key.
  2. pull: to pull data form a swarm of node by using the object/entity UID and verifying the ownership with its cryptographic signature
  3. find: to find the datas owned by someone by looking for datas signed with the entity's private key (and so by verifying using the public key)
  4. erase: erase data from a swarm of nodes by using the UID and verying the ownership

What are UIDs?

UIDs (Unique Identifiers) are 64 bytes ids generated by signing the data in an object using an entity private key

What are objects?

Object are just a chunk of data of maximum 8Mb identified with an UID to find it and to prove it's owner.

What are entities?

Entities are a kind of object that is a bit different, it aims to store user-related data, like username, hashed with argon2id password, etc and of course everything is encrypted using user's private key. Storing this kind of data on the network allow the resiliency of accounts and also to allow using the same account on every instances, if I made an account on coldwire.org I'll be able to also use it on the services hosted by another org/person.

How pushing data works?

In your program you call the "push" function where you pass the buffer stream (encrypting data is not managed by Polar!!!), then it will cut the buffer in serveral 8Mb chunks, will find in its local nodes database 3 nodes with the most storage available, will generate three UID and then will push each object on the nodes, at the end it will push a last "metadata" object with the file size, name, etc and an array of arrays that contain UID of each chunks:

{
  "name": "file.zip",
  "size": 74957045711,
  "checksum": "61be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b4",
  "chunks": [
    [
      "6dd355667fae4eb43c6e0ab92e870edb2de0a88cae12dbd8591507f584fe4912babff497f1b8edf9567d2483d54ddc6459bea7855281b7a246a609e3001a4e08",
      "6dd355667fae4eb43c6e0ab92e870edb2de0a88cae12dbd8591507f584fe4912babff497f1b8edf9567d2483d54ddc6459bea7855281b7a246a609e3001a4e08",
      "6dd355667fae4eb43c6e0ab92e870edb2de0a88cae12dbd8591507f584fe4912babff497f1b8edf9567d2483d54ddc6459bea7855281b7a246a609e3001a4e08",
    ],
    [...],
    [...]
  ] 
}

// To finish/make better/less wrong/improve

Owner
Coldwire
A resilient, self-managed, anonymous network fighting repression and censorship
Coldwire
Similar Resources

Reads JSON object (stream) from file/stdin and routes it/them to GCP Pub/Sub topics.

json2pubsub Publish JSON object (stream) into GCP Pub/Sub topic based on a field value. Usage: json2pubsub --project=STRING mapping ... Reads JSON

Nov 3, 2022

SFTP backed by LDAP and S3-compatible object stores

RainSFTP RainSFTP is an implementaion of the Secure File Transfer Protocol backed by LDAP for authentication and an S3-compatible object store. This m

Nov 8, 2022

Tapestry is an underlying distributed object location and retrieval system (DOLR) which can be used to store and locate objects. This distributed system provides an interface for storing and retrieving key-value pairs.

Tapestry This project implements Tapestry, an underlying distributed object location and retrieval system (DOLR) which can be used to store and locate

Mar 16, 2022

⚡️Lightweight framework for microservices & web services in golang

⚡️Lightweight framework for microservices & web services in golang

Quickstart Zepto is a lightweight framework for the development of microservices & web services in golang. As an opinionated framework, zepto proposes

Jun 19, 2022

webrpc is a schema-driven approach to writing backend services for modern Web apps and networks

webrpc is a schema-driven approach to writing backend services for modern Web apps and networks

webrpc is a schema-driven approach to writing backend servers for the Web. Write your server's api interface in a schema format of RIDL or JSON, and t

Jan 7, 2023

Easily generate gRPC services in Go ⚡️

Easily generate gRPC services in Go ⚡️

Lile is a application generator (think create-react-app, rails new or django startproject) for gRPC services in Go and a set of tools/libraries. The p

Dec 27, 2022

rconn is a multiplatform program for creating generic reverse connections. Lets you consume services that are behind firewall or NAT without opening ports or port-forwarding.

rconn is a multiplatform program for creating generic reverse connections. Lets you consume services that are behind firewall or NAT without opening ports or port-forwarding.

rconn (r[everse] conn[ection]) is a multiplatform program for creating reverse connections. It lets you consume services that are behind NAT and/or fi

Jan 1, 2023

EasyAgent is an infrastructure component, applied to manage the life-cycle of services on the remote host.

EasyAgent is an infrastructure component, applied to manage the life-cycle of services on the remote host.

Easyagent English | 中文 介绍 easyagent是在袋鼠云内部广泛使用的基础架构组件,最佳应用场景包括ELK体系beats等数据采集器的管控和配置管理、数栈体系自动化部署等 基本原理 easyagent主要有sidecar和server两个组件,sidecar部署在主机端,si

Nov 24, 2022

Mortar is a GO framework/library for building gRPC (and REST) web services.

Mortar is a GO framework/library for building gRPC (and REST) web services.

Mortar Mortar is a GO framework/library for building gRPC (and REST) web services. Mortar has out-of-the-box support for configuration, application me

Dec 26, 2022
Related tags
Network Services Access and Operation Project
Network Services Access and Operation Project

NSAOP Network Services Access and Operation Project Project for software engineering course, 2021 Spring in THU. Provided by Huawei. Contributors Coli

Jun 29, 2022
A Filecoin Network sidecar for miners to bid in storage deal auctions.
A Filecoin Network sidecar for miners to bid in storage deal auctions.

bidbot Bidbot is a Filecoin Network sidecar for miners to bid in storage deal auctions. Join us on our public Slack channel for news, discussions, and

Nov 24, 2022
Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and deadline support. MIT Licensed.

socket Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and d

Dec 14, 2022
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Dec 31, 2022
Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface).

windows-ndi-optimizer[WIP] Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface). How it works This is batchfile d

Apr 15, 2022
A simple network analyzer that capture http network traffic
A simple network analyzer that capture http network traffic

httpcap A simple network analyzer that captures http network traffic. support Windows/MacOS/Linux/OpenWrt(x64) https only capture clienthello colorful

Oct 25, 2022
Zero Trust Network Communication Sentinel provides peer-to-peer, multi-protocol, automatic networking, cross-CDN and other features for network communication.
Zero Trust Network Communication Sentinel provides peer-to-peer, multi-protocol, automatic networking, cross-CDN and other features for network communication.

Thank you for your interest in ZASentinel ZASentinel helps organizations improve information security by providing a better and simpler way to protect

Nov 1, 2022
OpenDILab RL Object Store

Introduction Decision AI Store Installation Prerequisites Linux Python >= 3.6 pip install . Quick Start Start Etcd Server di_store etcd_server ./conf/

Jan 6, 2023
parse-curl.js golang version. Parse curl commands, returning an object representing the request.

parse-curl.js golang version. Parse curl commands, returning an object representing the request.

Nov 1, 2022
requestgen generates the cascade call for your request object

requestgen requestgen generates the cascade call for your request object Installation go get github.com/c9s/requestgen Usage requestgen scans all the

Nov 30, 2022