I can&#x27;t help but compare this system to Datomic. Effectively, what ZeroDB is calling the &quot;database&quot; is what Datomic calls a &quot;storage service&quot;; and what ZeroDB is calling the &quot;client&quot;, Datomic calls the &quot;transactor.&quot;<p>In both architectures, &quot;blocks&quot; of data get pulled from the storage service (database) to the transactor (client), which decodes blocks into rows of tables or indexes, does a query which possibly mutates those tables&#x2F;indexes, generates new blocks from the mutated tables&#x2F;indexes, and uploads them.<p>The difference is that ZeroDB&#x27;s blocks are encrypted by the client, obviously—but I&#x27;m not sure that this is a <i>semantic</i> difference in the architectures of the two databases. I&#x27;m wondering if an equivalent change could be made to Datomic&#x27;s transactor logic, without materially affecting the way Datomic works. (The question is basically how much of Datomic&#x27;s required block <i>metadata</i>, necessary for finding the blocks on the storage service, leaks information which ZeroDB has managed to sequester inside the encrypted blocks instead.)