vac.dev-experimental-old/remote-log.html

466 lines
23 KiB
HTML
Raw Permalink Normal View History

2021-09-02 21:14:19 +00:00
<!DOCTYPE html>
<html class="h-full" lang="en-US">
<head>
<title>Vac - P2P Data Sync with a Remote Log</title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>Vac</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
2022-01-11 20:48:02 +00:00
<script async defer src="https://cdn.simpleanalytics.io/hello.js"></script>
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>
<!-- Fathom - simple website analytics - https://github.com/usefathom/fathom -->
<script>
(function (f, a, t, h, o, m) {
a[h] =
a[h] ||
function () {
(a[h].q = a[h].q || []).push(arguments);
};
(o = f.createElement("script")), (m = f.getElementsByTagName("script")[0]);
o.async = 1;
o.src = t;
o.id = "fathom-script";
m.parentNode.insertBefore(o, m);
})(document, window, "//fathom.status.im/tracker.js", "fathom");
fathom("set", "siteId", "YELIA");
fathom("trackPageview");
</script>
<!-- / Fathom -->
<!-- Twitter cards -->
<meta name="twitter:site" content="@vacp2p" />
<meta name="twitter:creator" content="@oskarth" />
<meta name="twitter:title" content="P2P Data Sync with a Remote Log" />
<meta name="twitter:description" content="A research log. Asynchronous P2P messaging? Remote logs to the rescue!" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="https://vac.dev/assets/img/remote-log.png" />
<!-- end of Twitter cards -->
<link rel="shortcut icon" href="/assets/img/favicon.png" type="image/png" />
<link rel="preload" href="/fonts/OpenSans-Regular.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="/fonts/OpenSans-SemiBold.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="/fonts/OpenSans-SemiBoldItalic.woff2" as="font" type="font/woff2" crossorigin />
2021-09-02 21:14:19 +00:00
<link rel="stylesheet" href="/assets/css/style.css" />
</head>
2022-01-11 20:48:02 +00:00
<body class="h-full flex flex-col font-body">
<div class="flex-grow container max-w-screen-xl mx-auto px-5 md:px-12 lg:pt-6">
<header class="sm:sticky sm:top-0 bg-white z-50">
2021-09-02 21:14:19 +00:00
<div class="container max-w-screen-xl sm:border-b">
2022-01-11 20:48:02 +00:00
<div class="nav-section flex justify-between items-center py-3 md:py-5 lg:py-10">
2021-09-02 21:14:19 +00:00
<div class="logo md:pr-8 l:p-0">
2022-01-11 20:48:02 +00:00
<a href="/"><img src="/assets/img/logo.png" alt="Vac logo" class="w-9 h-11" /></a>
2021-09-02 21:14:19 +00:00
</div>
<div class="flex justify-between items-center w-9/12">
<div class="burger block sm:hidden z-50">
2022-01-11 20:48:02 +00:00
<button class="burger__button burger__button--open fixed top-2 right-5 w-12 h-12" type="button" aria-label="Mobile menu button">
<img class="burger__icon" src="/assets/img/burger.svg" alt="Open menu button" />
2021-09-02 21:14:19 +00:00
</button>
2022-01-11 20:48:02 +00:00
<button class="burger__button burger__button--close hidden fixed top-2 right-5 w-12 h-12" type="button" aria-label="Close mobile menu button">
<img class="burger__icon burger__icon--close" src="/assets/img/close.svg" alt="Close menu button" />
2021-09-02 21:14:19 +00:00
</button>
</div>
<nav class="nav max-w-screen-xm md:max-w-screen-sl container">
2022-01-11 20:48:02 +00:00
<ul class="nav__list hidden sm:flex justify-between container text-xs font-semibold md:pr-8 l:p-0">
2021-09-02 21:14:19 +00:00
<li class="hover:opacity-50">
<a class="nav__link" href="/#work">Work</a>
</li>
<li class="hover:opacity-50">
<a class="nav__link" href="/#about">About</a>
</li>
<li class="hover:opacity-50">
2022-01-11 20:48:02 +00:00
<a class="nav__link" href="/#join">Join Vac</a>
2021-09-02 21:14:19 +00:00
</li>
<li class="hover:opacity-50">
<a class="nav__link" href="/research-log">Research log</a>
</li>
<li class="hover:opacity-50">
<a class="nav__link" href="/media">Media</a>
</li>
<li class="hover:opacity-50">
2022-01-11 20:48:02 +00:00
<a href="https://rfc.vac.dev/" target="_blank" rel="noopener noreferrer">Specs</a>
2021-09-02 21:14:19 +00:00
</li>
<li class="hover:opacity-50">
2022-01-11 20:48:02 +00:00
<a href="https://forum.vac.dev/" target="_blank" rel="noopener noreferrer">Forum</a>
2021-09-02 21:14:19 +00:00
</li>
</ul>
</nav>
<ul class="social items-center hidden md:flex">
<li class="pr-5">
2022-01-11 20:48:02 +00:00
<a href="https://twitter.com/vacp2p" target="_blank" rel="noopener noreferrer">
<svg width="25" height="21" viewBox="0 0 25 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
2021-09-02 21:14:19 +00:00
<path
d="M24.8872 3.04499C23.9872 3.43499 23.0572 3.70498 22.0672 3.82499C23.0872 3.22498 23.8672 2.26499 24.2272 1.09499C23.2672 1.66499 22.2172 2.05499 21.1072 2.29499C20.2072 1.33499 18.9172 0.734985 17.5072 0.734985C14.7772 0.734985 12.5872 2.95499 12.5872 5.65499C12.5872 6.04499 12.6172 6.40498 12.7072 6.76498C8.62721 6.58498 5.02721 4.60498 2.59721 1.63499C0.857207 4.75498 2.80721 7.33499 4.09721 8.20499C3.31721 8.20499 2.53721 7.96499 1.87721 7.60499C1.87721 10.035 3.58721 12.045 5.80721 12.495C5.32721 12.645 4.24721 12.735 3.58721 12.585C4.21721 14.535 6.04721 15.975 8.17721 16.005C6.49721 17.325 4.03721 18.375 0.887207 18.045C3.07721 19.455 5.65721 20.265 8.44721 20.265C17.5072 20.265 22.4272 12.765 22.4272 6.28499C22.4272 6.07499 22.4272 5.86499 22.3972 5.65499C23.4172 4.90499 24.2572 4.03499 24.8872 3.04499Z"
fill="#151512"
/>
</svg>
</a>
</li>
<li class="pr-5">
2022-01-11 20:48:02 +00:00
<a href="https://github.com/vacp2p" target="_blank" rel="noopener noreferrer">
<svg width="26" height="25" viewBox="0 0 26 25" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
2021-09-02 21:14:19 +00:00
<path
d="M12.8857 0.856567C6.26021 0.856567 0.915339 6.20154 0.950043 12.7951C0.9778 18.0687 4.43935 22.5427 9.21766 24.1227C9.81824 24.2327 10.0353 23.864 10.0336 23.5474C10.0321 23.2635 10.0177 22.5129 10.0065 21.5171C6.67274 22.238 5.95552 19.9163 5.95552 19.9163C5.40376 18.5369 4.61433 18.1698 4.61433 18.1698C3.51994 17.4296 4.69151 17.4444 4.69151 17.4444C5.89646 17.5291 6.53549 18.6751 6.53549 18.6751C7.61609 20.4989 9.35182 19.9727 10.0342 19.6665C10.1382 18.8951 10.4459 18.3689 10.7878 18.0702C8.12222 17.7684 5.31483 16.7443 5.29076 12.1708C5.2839 10.8672 5.74629 9.80152 6.50989 8.96619C6.3838 8.66445 5.96641 7.45009 6.61027 5.80766C6.61027 5.80766 7.61658 5.4866 9.9167 7.03094C10.8723 6.76636 11.8976 6.63408 12.9191 6.62962C13.9376 6.63556 14.9658 6.76636 15.9257 7.03242C18.2081 5.48809 19.2163 5.80914 19.2163 5.80914C19.8789 7.45306 19.4743 8.66594 19.3529 8.96767C20.1268 9.80301 20.5959 10.8687 20.6028 12.1723C20.6269 16.7577 17.8272 17.767 15.1558 18.0628C15.5882 18.4314 15.976 19.1597 15.9819 20.273C15.9903 21.8693 15.9821 23.1565 15.9841 23.5474C15.9858 23.867 16.2038 24.2386 16.8122 24.1212C21.5663 22.5397 24.9778 18.0672 24.95 12.7951C24.9153 6.20154 19.5142 0.856567 12.8857 0.856567Z"
fill="#151512"
/>
</svg>
</a>
</li>
<li>
2022-01-11 20:48:02 +00:00
<a href="https://discord.gg/PQFdubGt6d" target="_blank" rel="noopener noreferrer">
<svg width="25" height="21" viewBox="0 0 25 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
2021-09-02 21:14:19 +00:00
<path
d="M22.7861 9.04256C21.8482 5.74455 20.7799 4.04048 20.7627 4.00991C20.7017 3.93459 19.189 2.104 15.5271 0.75L15.0353 2.0764C16.7774 2.72057 18.0116 3.50643 18.6899 4.01419C16.6599 3.40408 14.2431 3.03041 12.1008 3.03041C9.95851 3.03041 7.53775 3.40408 5.50128 4.01419C6.18496 3.50648 7.42744 2.72057 9.17631 2.0764L8.69846 0.75C5.02238 2.104 3.49044 3.93459 3.42863 4.00991C3.41108 4.04048 2.32479 5.74455 1.35221 9.04256C0.414855 12.2208 0.0415214 16.7045 0.027872 16.8843C0.109225 17.0131 1.97891 20.25 7.12077 20.25L8.43406 18.3536C6.97595 17.964 5.58693 17.3357 4.31689 16.4832L5.10228 15.3069C7.15122 16.6822 9.54509 17.4092 12.0251 17.4092C14.5051 17.4092 16.9067 16.6822 18.9701 15.3069L19.7431 16.4832C18.4641 17.3357 17.0684 17.964 15.6062 18.3536L16.8995 20.25C22.0414 20.25 23.9452 17.0131 24.0279 16.8843C24.0161 16.7045 23.69 12.2208 22.7861 9.04256ZM8.79853 12.7392H7.39228L7.40468 10.3841H8.81093L8.79853 12.7392ZM16.7071 12.7392H15.3008L15.3132 10.3841H16.7195L16.7071 12.7392Z"
fill="#151512"
/>
</svg>
</a>
</li>
</ul>
</div>
2022-01-11 20:48:02 +00:00
<div class="overlay container max-w-screen-sm w-full hidden sm:hidden fixed top-0 right-0 h-screen bg-black bg-opacity-40 z-30">
<nav class="nav-mobile hidden fixed top-0 right-0 flex flex-col justify-between items-center pt-14 px-12 pb-5 bg-white w-9/12 h-3/4 z-40">
<ul class="nav__list flex flex-col flex-1 justify-between items-center container box-content w-32 h-auto max-h-nav text-xs font-normal">
2021-09-02 21:14:19 +00:00
<li class="hover:opacity-50">
<a class="nav__link" href="/#work">Work</a>
</li>
<li class="hover:opacity-50">
<a class="nav__link" href="/#about">About</a>
</li>
<li class="hover:opacity-50">
2022-01-11 20:48:02 +00:00
<a class="nav__link" href="/#join">Join Vac</a>
2021-09-02 21:14:19 +00:00
</li>
<li class="hover:opacity-50">
<a class="nav__link" href="/research-log">Research log</a>
</li>
<li class="hover:opacity-50">
<a class="nav__link" href="/media">Media</a>
</li>
<li class="hover:opacity-50">
2022-01-11 20:48:02 +00:00
<a href="https://rfc.vac.dev/" target="_blank" rel="noopener noreferrer">Specs</a>
2021-09-02 21:14:19 +00:00
</li>
<li class="hover:opacity-50">
2022-01-11 20:48:02 +00:00
<a href="https://forum.vac.dev/" target="_blank" rel="noopener noreferrer">Forum</a>
2021-09-02 21:14:19 +00:00
</li>
</ul>
<ul class="social items-center flex mt-8">
<li class="pr-5">
2022-01-11 20:48:02 +00:00
<a href="https://twitter.com/vacp2p" target="_blank" rel="noopener noreferrer">
<svg width="25" height="21" viewBox="0 0 25 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
2021-09-02 21:14:19 +00:00
<path
d="M24.8872 3.04499C23.9872 3.43499 23.0572 3.70498 22.0672 3.82499C23.0872 3.22498 23.8672 2.26499 24.2272 1.09499C23.2672 1.66499 22.2172 2.05499 21.1072 2.29499C20.2072 1.33499 18.9172 0.734985 17.5072 0.734985C14.7772 0.734985 12.5872 2.95499 12.5872 5.65499C12.5872 6.04499 12.6172 6.40498 12.7072 6.76498C8.62721 6.58498 5.02721 4.60498 2.59721 1.63499C0.857207 4.75498 2.80721 7.33499 4.09721 8.20499C3.31721 8.20499 2.53721 7.96499 1.87721 7.60499C1.87721 10.035 3.58721 12.045 5.80721 12.495C5.32721 12.645 4.24721 12.735 3.58721 12.585C4.21721 14.535 6.04721 15.975 8.17721 16.005C6.49721 17.325 4.03721 18.375 0.887207 18.045C3.07721 19.455 5.65721 20.265 8.44721 20.265C17.5072 20.265 22.4272 12.765 22.4272 6.28499C22.4272 6.07499 22.4272 5.86499 22.3972 5.65499C23.4172 4.90499 24.2572 4.03499 24.8872 3.04499Z"
fill="#151512"
/>
</svg>
</a>
</li>
<li class="pr-5">
2022-01-11 20:48:02 +00:00
<a href="https://github.com/vacp2p" target="_blank" rel="noopener noreferrer">
<svg width="26" height="25" viewBox="0 0 26 25" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
2021-09-02 21:14:19 +00:00
<path
d="M12.8857 0.856567C6.26021 0.856567 0.915339 6.20154 0.950043 12.7951C0.9778 18.0687 4.43935 22.5427 9.21766 24.1227C9.81824 24.2327 10.0353 23.864 10.0336 23.5474C10.0321 23.2635 10.0177 22.5129 10.0065 21.5171C6.67274 22.238 5.95552 19.9163 5.95552 19.9163C5.40376 18.5369 4.61433 18.1698 4.61433 18.1698C3.51994 17.4296 4.69151 17.4444 4.69151 17.4444C5.89646 17.5291 6.53549 18.6751 6.53549 18.6751C7.61609 20.4989 9.35182 19.9727 10.0342 19.6665C10.1382 18.8951 10.4459 18.3689 10.7878 18.0702C8.12222 17.7684 5.31483 16.7443 5.29076 12.1708C5.2839 10.8672 5.74629 9.80152 6.50989 8.96619C6.3838 8.66445 5.96641 7.45009 6.61027 5.80766C6.61027 5.80766 7.61658 5.4866 9.9167 7.03094C10.8723 6.76636 11.8976 6.63408 12.9191 6.62962C13.9376 6.63556 14.9658 6.76636 15.9257 7.03242C18.2081 5.48809 19.2163 5.80914 19.2163 5.80914C19.8789 7.45306 19.4743 8.66594 19.3529 8.96767C20.1268 9.80301 20.5959 10.8687 20.6028 12.1723C20.6269 16.7577 17.8272 17.767 15.1558 18.0628C15.5882 18.4314 15.976 19.1597 15.9819 20.273C15.9903 21.8693 15.9821 23.1565 15.9841 23.5474C15.9858 23.867 16.2038 24.2386 16.8122 24.1212C21.5663 22.5397 24.9778 18.0672 24.95 12.7951C24.9153 6.20154 19.5142 0.856567 12.8857 0.856567Z"
fill="#151512"
/>
</svg>
</a>
</li>
<li>
2022-01-11 20:48:02 +00:00
<a href="https://discord.gg/PQFdubGt6d" target="_blank" rel="noopener noreferrer">
<svg width="25" height="21" viewBox="0 0 25 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
2021-09-02 21:14:19 +00:00
<path
d="M22.7861 9.04256C21.8482 5.74455 20.7799 4.04048 20.7627 4.00991C20.7017 3.93459 19.189 2.104 15.5271 0.75L15.0353 2.0764C16.7774 2.72057 18.0116 3.50643 18.6899 4.01419C16.6599 3.40408 14.2431 3.03041 12.1008 3.03041C9.95851 3.03041 7.53775 3.40408 5.50128 4.01419C6.18496 3.50648 7.42744 2.72057 9.17631 2.0764L8.69846 0.75C5.02238 2.104 3.49044 3.93459 3.42863 4.00991C3.41108 4.04048 2.32479 5.74455 1.35221 9.04256C0.414855 12.2208 0.0415214 16.7045 0.027872 16.8843C0.109225 17.0131 1.97891 20.25 7.12077 20.25L8.43406 18.3536C6.97595 17.964 5.58693 17.3357 4.31689 16.4832L5.10228 15.3069C7.15122 16.6822 9.54509 17.4092 12.0251 17.4092C14.5051 17.4092 16.9067 16.6822 18.9701 15.3069L19.7431 16.4832C18.4641 17.3357 17.0684 17.964 15.6062 18.3536L16.8995 20.25C22.0414 20.25 23.9452 17.0131 24.0279 16.8843C24.0161 16.7045 23.69 12.2208 22.7861 9.04256ZM8.79853 12.7392H7.39228L7.40468 10.3841H8.81093L8.79853 12.7392ZM16.7071 12.7392H15.3008L15.3132 10.3841H16.7195L16.7071 12.7392Z"
fill="#151512"
/>
</svg>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
</header>
2022-01-11 20:48:02 +00:00
<main class="bg-white text-black flex flex-col"><section class="container max-w-screen-xl flex flex-col items-center pt-10 pb-0 md:pb-10 lg:pb-0">
<div class="info-block max-w-680 pb-5 sm:pb-10 overflow-hidden">
2021-09-02 21:14:19 +00:00
<div class="post mb-10">
2022-01-11 20:48:02 +00:00
<h1 class="text-xl md:text-xxl mb-5 sm:max-w-md lg:max-w-2xl">P2P Data Sync with a Remote Log</h1>
2021-09-02 21:14:19 +00:00
<div>
2022-01-11 20:48:02 +00:00
<span class="text-s lg:text-base"> 04 Oct 2019 • by </span>
<a href="/authors/oskarth" class="text-s lg:text-base font-bold hover:underline">oskarth</a>
2021-09-02 21:14:19 +00:00
</div>
</div>
<div class="post__content"><p>A big problem when doing end-to-end data sync between mobile nodes is that most devices are offline most of the time. With a naive approach, you quickly run into issues of ping-pong behavior, where messages have to be constantly retransmitted. We saw some basic calculations of what this bandwidth multiplier looks like in a <a href="https://vac.dev/p2p-data-sync-for-mobile">previous post</a>.</p>
<p>While you could do some background processing, this is really battery-draining, and on iOS these capabilities are limited. A better approach instead is to loosen the constraint that two nodes need to be online at the same time. How do we do this? There are two main approaches, one is the <em>store and forward model</em>, and the other is a <em>remote log</em>.</p>
<p>In the <em>store and forward</em> model, we use an intermediate node that forward messages on behalf of the recipient. In the <em>remote log</em> model, you instead replicate the data onto some decentralized storage, and have a mutable reference to the latest state, similar to DNS. While both work, the latter is somewhat more elegant and “pure”, as it has less strict requirements of an individual nodes uptime. Both act as a highly-available cache to smoothen over non-overlapping connection windows between endpoints.</p>
<p>In this post we are going to describe how such a remote log schema could work. Specifically, how it enhances p2p data sync and takes care of the <a href="https://vac.dev/p2p-data-sync-for-mobile">following requirements</a>:</p>
<blockquote>
<ol>
<li>MUST allow for mobile-friendly usage. By mobile-friendly we mean devices
that are resource restricted, mostly-offline and often changing network.</li>
</ol>
</blockquote>
<blockquote>
<ol>
<li>MAY use helper services in order to be more mobile-friendly. Examples of
helper services are decentralized file storage solutions such as IPFS and
Swarm. These help with availability and latency of data for mostly-offline
devices.</li>
</ol>
</blockquote>
<h2 id="remote-log">Remote log</h2>
<p>A remote log is a replication of a local log. This means a node can read data from a node that is offline.</p>
<p>The spec is in an early draft stage and can be found <a href="https://github.com/vacp2p/specs/pull/16">here</a>. A very basic <a href="https://en.wikipedia.org/wiki/Spike_(software_development)">spike</a> / proof-of-concept can be found <a href="https://github.com/vacp2p/research/tree/master/remote_log">here</a>.</p>
<h3 id="definitions">Definitions</h3>
<table>
<thead>
<tr>
<th>Term</th>
<th>Definition</th>
</tr>
</thead>
<tbody>
<tr>
<td>CAS</td>
<td>Content-addressed storage. Stores data that can be addressed by its hash.</td>
</tr>
<tr>
<td>NS</td>
<td>Name system. Associates mutable data to a name.</td>
</tr>
<tr>
<td>Remote log</td>
<td>Replication of a local log at a different location.</td>
</tr>
</tbody>
</table>
<h3 id="roles">Roles</h3>
<p>There are four fundamental roles:</p>
<ol>
<li>Alice</li>
<li>Bob</li>
<li>Name system (NS)</li>
<li>Content-addressed storage (CAS)</li>
</ol>
<p>The <em>remote log</em> is the data format of what is stored in the name system.</p>
<p>“Bob” can represent anything from 0 to N participants. Unlike Alice, Bob only needs read-only access to NS and CAS.</p>
<h3 id="flow">Flow</h3>
<!-- diagram -->
<p align="center">
<img src="/assets/img/remote-log.png" />
<br />
Figure 1: Remote log data synchronization.
</p>
<h3 id="data-format">Data format</h3>
<p>The remote log lets receiving nodes know what data they are missing. Depending on the specific requirements and capabilities of the nodes and name system, the information can be referred to differently. We distinguish between three rough modes:</p>
<ol>
<li>Fully replicated log</li>
<li>Normal sized page with CAS mapping</li>
<li>“Linked list” mode - minimally sized page with CAS mapping</li>
</ol>
<p>A remote log is simply a mapping from message identifiers to their corresponding address in a CAS:</p>
<table>
<thead>
<tr>
<th>Message Identifier (H1)</th>
<th>CAS Hash (H2)</th>
</tr>
</thead>
<tbody>
<tr>
<td>H1_3</td>
<td>H2_3</td>
</tr>
<tr>
<td>H1_2</td>
<td>H2_2</td>
</tr>
<tr>
<td>H1_1</td>
<td>H2_1</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><em>address to next page</em></td>
<td> </td>
</tr>
</tbody>
</table>
<p>The numbers here corresponds to messages. Optionally, the content itself can be included, just like it normally would be sent over the wire. This bypasses the need for a dedicated CAS and additional round-trips, with a trade-off in bandwidth usage.</p>
<table>
<thead>
<tr>
<th>Message Identifier (H1)</th>
<th>Content</th>
</tr>
</thead>
<tbody>
<tr>
<td>H1_3</td>
<td>C3</td>
</tr>
<tr>
<td>H1_2</td>
<td>C2</td>
</tr>
<tr>
<td>H1_1</td>
<td>C1</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><em>address to next page</em></td>
<td> </td>
</tr>
</tbody>
</table>
2022-01-11 20:48:02 +00:00
<p>Both patterns can be used in parallel, e,g. by storing the last <code class="highlighter-rouge">k</code> messages directly and use CAS pointers for the rest. Together with the <code class="highlighter-rouge">next_page</code> page semantics, this gives users flexibility in terms of bandwidth and latency/indirection, all the way from a simple linked list to a fully replicated log. The latter is useful for things like backups on durable storage.</p>
2021-09-02 21:14:19 +00:00
<h3 id="interaction-with-mvds">Interaction with MVDS</h3>
2022-01-11 20:48:02 +00:00
<p><a href="https://rfc.vac.dev/spec/2/#payloads">vac.mvds.Message</a> payloads are the only payloads that MUST be uploaded. Other messages types MAY be uploaded, depending on the implementation.</p>
2021-09-02 21:14:19 +00:00
<h2 id="future-work">Future work</h2>
<p>The spec is still in an early draft stage, so it is expected to change. Same with the proof of concept. More work is needed on getting a fully featured proof of concept with specific CAS and NAS instances. E.g. Swarm and Swarm Feeds, or IPFS and IPNS, or something else.</p>
<p>For data sync in general:</p>
<ul>
<li>Make consistency guarantees more explicit for app developers with support for sequence numbers and DAGs, as well as the ability to send non-synced messages. E.g. ephemeral typing notifications, linear/sequential history and casual consistency/DAG history</li>
<li>Better semantics and scalability for multi-user sync contexts, e.g. CRDTs and joining multiple logs together</li>
<li>Better usability in terms of application layer usage (data sync clients) and supporting more transports</li>
</ul>
<hr />
<p>PS1. Thanks everyone who submitted great <a href="https://explorer.bounties.network/bounty/3389">logo proposals</a> for Vac!</p>
<p>PPS2. Next week on October 10th decanus and I will be presenting Vac at <a href="https://devcon.org/agenda">Devcon</a>, come say hi :)</p>
</div>
</div>
</section>
</main>
</div>
<footer class="footer bg-black flex flex-shrink-0 justify-center">
2022-01-11 20:48:02 +00:00
<div class="container max-w-screen-xl flex sl:justify-between lm:justify-start p-5 md:px-12 md:pt-5 lg:py-10">
2021-09-02 21:14:19 +00:00
<div class="logo mr-10 sm:mr-0 sm:w-2/12 lg:w-3/12">
2022-01-11 20:48:02 +00:00
<a href="/"><img src="/assets/img/logo.png" alt="Vac logo" class="w-9 h-11" /></a>
2021-09-02 21:14:19 +00:00
</div>
2022-01-11 20:48:02 +00:00
<div class="flex flex-col xm:flex-row xm:justify-between sm:w-10/12 lg:w-9/12">
<p class="hidden sl:inline-block sl:mr-10 text-xxs lg:text-base text-white opacity-75">Vac researches peer-to-peer, private, censorship resistant communication</p>
2021-09-02 21:14:19 +00:00
<nav class="flex max-w-xs mr-0 xm:mr-5 l:mr-32 mb-5 sm:mb-0">
<div class="flex">
<div class="flex flex-col mr-5 sm:mr-10 sl:mr-14">
2022-01-11 20:48:02 +00:00
<p class="text-xxs lg:text-base text-white opacity-75 mb-5 lg:mb-8">Research</p>
2021-09-02 21:14:19 +00:00
<ul>
2022-01-11 20:48:02 +00:00
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
<a href="/research-log" target="_blank" rel="noopener noreferrer">Log</a>
2021-09-02 21:14:19 +00:00
</li>
2022-01-11 20:48:02 +00:00
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
<a href="https://rfc.vac.dev/" target="_blank" rel="noopener noreferrer">Specs</a>
2021-09-02 21:14:19 +00:00
</li>
</ul>
</div>
<div class="flex flex-col sl:mr-14">
2022-01-11 20:48:02 +00:00
<p class="text-xxs lg:text-base text-white opacity-75 mb-5 lg:mb-8">Socials</p>
2021-09-02 21:14:19 +00:00
<ul>
2022-01-11 20:48:02 +00:00
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
<a href="https://twitter.com/vacp2p" target="_blank" rel="noopener noreferrer">Twitter</a>
2021-09-02 21:14:19 +00:00
</li>
2022-01-11 20:48:02 +00:00
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
<a href="https://discord.gg/PQFdubGt6d" target="_blank" rel="noopener noreferrer">Discord</a>
2021-09-02 21:14:19 +00:00
</li>
2022-01-11 20:48:02 +00:00
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
<a href="https://t.me/vacp2p" target="_blank" rel="noopener noreferrer">Telegram</a>
2021-09-02 21:14:19 +00:00
</li>
</ul>
</div>
2022-01-11 20:48:02 +00:00
</div></nav></div>
2021-09-02 21:14:19 +00:00
</div>
</footer>
2022-01-11 20:48:02 +00:00
<script src="/assets/js/main.min.js"></script>
<script src="/assets/js/smooth-scroll.min.js"></script>
2021-09-02 21:14:19 +00:00
</body>
</html>