<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Providers on Bitsy Wiki</title>
    <link>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/</link>
    <description>Recent content in Providers on Bitsy Wiki</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pinata</title>
      <link>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/pinata/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/pinata/</guid>
      <description>&lt;p&gt;Pinata is the longest-running service built for nothing but&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs&#34;&gt;IPFS&lt;/a&gt; pinning, and the one most likely to be assumed when a&#xA;project says &amp;ldquo;we pin to a service&amp;rdquo;. It runs its own infrastructure rather than&#xA;fronting somebody else&amp;rsquo;s network, which makes the arrangement an ordinary&#xA;hosting relationship: retention while the invoice is paid, no proof mechanism,&#xA;no second tier behind it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;two-apis-and-only-one-of-them-is-portable&#34;&gt;Two APIs, and only one of them is portable&lt;a class=&#34;anchor&#34; href=&#34;#two-apis-and-only-one-of-them-is-portable&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The native API does uploads in one call — post a file, get a&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/cid&#34;&gt;content identifier (CID)&lt;/a&gt; back — plus metadata, key scoping,&#xA;and grouping that the standard specification has no vocabulary for. Everything&#xA;written against it is written against Pinata.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Filebase</title>
      <link>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/filebase/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/filebase/</guid>
      <description>&lt;p&gt;Filebase is object storage with an S3-compatible interface whose buckets are&#xA;backed by decentralized networks, &lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs&#34;&gt;IPFS&lt;/a&gt; among them. The&#xA;consequence is unusual in this market: no client library is required, because&#xA;every tool that already speaks bucket semantics — the AWS command line,&#xA;backup software, Terraform, anything with an S3 driver — works against it&#xA;unmodified.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-bucket-is-the-pinset&#34;&gt;The bucket is the pinset&lt;a class=&#34;anchor&#34; href=&#34;#the-bucket-is-the-pinset&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Files written to an IPFS bucket are pinned automatically, and Filebase has long&#xA;described the pinning as geo-redundant across separate locations. The current&#xA;pinning documentation does not state a replication factor, which puts it in the&#xA;same position as most of this market — the&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/pinning/pinning-services#what-is-actually-being-promised&#34;&gt;quiet variable&lt;/a&gt;&#xA;is how many copies &amp;ldquo;pinned&amp;rdquo; means, and the answer is usually not written down.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lighthouse</title>
      <link>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/lighthouse/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/lighthouse/</guid>
      <description>&lt;p&gt;Lighthouse serves content over &lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs&#34;&gt;IPFS&lt;/a&gt; and persists it to one of&#xA;two networks behind the scenes —&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/economics/finance/defi/filecoin&#34;&gt;Filecoin&lt;/a&gt; or&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/economics/finance/defi/sui/walrus&#34;&gt;Walrus&lt;/a&gt; — with the choice made per&#xA;plan rather than per file. What distinguishes it from the rest of this section&#xA;is not the storage but the access control layered on top.&lt;/p&gt;&#xA;&lt;h2 id=&#34;encryption-with-programmable-access-conditions&#34;&gt;Encryption with programmable access conditions&lt;a class=&#34;anchor&#34; href=&#34;#encryption-with-programmable-access-conditions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Kavach is Lighthouse&amp;rsquo;s threshold-encryption layer. A file is encrypted before&#xA;upload, the key is split across nodes, and reassembly is conditioned on a rule&#xA;evaluated at request time: holding a particular token or&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/economics/finance/defi/nft&#34;&gt;NFT&lt;/a&gt;, presenting a passkey, or satisfying an&#xA;arbitrary contract call.&lt;/p&gt;</description>
    </item>
    <item>
      <title>QuickNode</title>
      <link>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/quicknode/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/quicknode/</guid>
      <description>&lt;p&gt;QuickNode sells blockchain node infrastructure, and &lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs&#34;&gt;IPFS&lt;/a&gt;&#xA;pinning is one product in that catalogue rather than the business. The case for&#xA;using it is that the account, the billing, and the dashboard already exist for&#xA;whatever &lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/entity-addressing/resource-vs-rpc&#34;&gt;RPC&lt;/a&gt; endpoints&#xA;the project is running on.&lt;/p&gt;&#xA;&lt;h2 id=&#34;its-own-rest-api&#34;&gt;Its own REST API&lt;a class=&#34;anchor&#34; href=&#34;#its-own-rest-api&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;There are three groups of endpoints under one base — gateway management,&#xA;pinning, and account usage — authenticated with an &lt;code&gt;x-api-key&lt;/code&gt; header:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;8&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -X POST &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://api.quicknode.com/ipfs/rest/v1/pinning&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;x-api-key: &lt;/span&gt;$QN_KEY&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;cid&amp;#34;: &amp;#34;bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;site-v4&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;origins&amp;#34;: [&amp;#34;/ip4/203.0.113.7/tcp/4001/p2p/12D3KooWExampleOriginPeerID&amp;#34;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      }&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;This is not the vendor-agnostic&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/pinning/pinning-service-api&#34;&gt;Pinning Service API&lt;/a&gt;, and the way it&#xA;is not is instructive. The request body is the specification&amp;rsquo;s body — &lt;code&gt;cid&lt;/code&gt;,&#xA;&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;origins&lt;/code&gt;, &lt;code&gt;meta&lt;/code&gt;, with &lt;code&gt;name&lt;/code&gt; required here rather than optional.&#xA;&lt;code&gt;origins&lt;/code&gt; carries the multiaddresses of nodes that already have the blocks and&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/pinning/pinning-service-api#origins-and-delegates-do-the-actual-work&#34;&gt;does the same work here&lt;/a&gt;&#xA;as it does everywhere else. What differs is the envelope: a proprietary path, an&#xA;&lt;code&gt;x-api-key&lt;/code&gt; header where the specification says &lt;code&gt;Authorization: Bearer&lt;/code&gt;, and no&#xA;&lt;code&gt;/pins&lt;/code&gt; root. So&#xA;&lt;code&gt;ipfs pin remote service add&lt;/code&gt; cannot point at it, no standard client library&#xA;works, and porting to a provider that does implement the specification is mostly&#xA;a matter of moving the same JSON to a different URL.&lt;/p&gt;</description>
    </item>
    <item>
      <title>4EVERLAND</title>
      <link>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/4everland/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/4everland/</guid>
      <description>&lt;p&gt;4EVERLAND is a Web3 infrastructure platform — storage, static hosting, and node&#xA;access — whose storage arm includes 4EVER Pin, an &lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs&#34;&gt;IPFS&lt;/a&gt; pinning&#xA;service that implements the vendor-agnostic&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/pinning/pinning-service-api&#34;&gt;Pinning Service API&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;standard-api-bulk-oriented-tooling&#34;&gt;Standard API, bulk-oriented tooling&lt;a class=&#34;anchor&#34; href=&#34;#standard-api-bulk-oriented-tooling&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The endpoint takes a bearer token generated on the 4EVER Pin page, and Kubo&#xA;talks to it with no adapter:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipfs pin remote service add 4everland https://api.4everland.dev &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TOKEN&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipfs pin remote add --service&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;4everland --name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;archive-2026 &amp;lt;cid&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;The tooling around it leans toward bulk work that the specification does not&#xA;describe: importing many&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/cid&#34;&gt;content identifiers (CIDs)&lt;/a&gt; at once, uploading whole&#xA;folders, and parsing&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/gateways#trustless-gateways&#34;&gt;content addressable archive (CAR)&lt;/a&gt;&#xA;files rather than requiring individual objects. Bringing an existing pinset in&#xA;from somewhere else is the operation that is usually painful and is specifically&#xA;catered for here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Crust</title>
      <link>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/crust/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/crust/</guid>
      <description>&lt;p&gt;Crust is a decentralized storage network with a chain of its own, and its&#xA;pinning product is the only one in this section with no account and no invoice.&#xA;Storage is ordered on chain and served by staked nodes, so the thing that&#xA;normally ends a pinning relationship — a company deciding to stop — has no&#xA;obvious counterpart.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-wallet-signature-in-place-of-a-token&#34;&gt;A wallet signature in place of a token&lt;a class=&#34;anchor&#34; href=&#34;#a-wallet-signature-in-place-of-a-token&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Crust&amp;rsquo;s W3Auth pinning service implements the standard&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/pinning/pinning-service-api&#34;&gt;Pinning Service API&lt;/a&gt; surface and&#xA;then replaces the one part that assumes a vendor. The specification says the&#xA;&lt;code&gt;Authorization&lt;/code&gt; header carries a bearer token; Crust carries a signature&#xA;instead:&lt;/p&gt;</description>
    </item>
    <item>
      <title>web3.storage and Storacha</title>
      <link>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/web3-storage/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/ipfs/pinning/providers/web3-storage/</guid>
      <description>&lt;p&gt;This entry is a lineage rather than a live option. One service was renamed twice&#xA;and re-architected each time, dropping a little more of its&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs&#34;&gt;IPFS&lt;/a&gt; surface at every step, and the names are still all over&#xA;old code and documentation.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;web3.storage      →   Storacha        →   Fil One&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Pinning Service       own client,         S3-compatible object&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;API, then not         capability auth     storage for AI workloads&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;what-each-generation-was&#34;&gt;What each generation was&lt;a class=&#34;anchor&#34; href=&#34;#what-each-generation-was&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;web3.storage&lt;/strong&gt; was Protocol Labs&amp;rsquo; free-tier upload service: post a file, get a&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/cid&#34;&gt;content identifier (CID)&lt;/a&gt;, with&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/economics/finance/defi/filecoin&#34;&gt;Filecoin&lt;/a&gt; deals behind it. It&#xA;implemented the vendor-agnostic&#xA;&lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/ipfs/pinning/pinning-service-api&#34;&gt;Pinning Service API&lt;/a&gt;, and then&#xA;withdrew that interface — the first step away from portability.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
