├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Juan Batiz-Benet 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [DEPRECATED] archive-format 2 | 3 | [![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io) 4 | [![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://ipfs.io/) 5 | [![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs) 6 | [![](https://img.shields.io/badge/discussion_repo-go_to_issues-brightgreen.svg?style=flat-square)](https://github.com/ipfs/archive-format/issues) 7 | 8 | > car - Certified ARchives 9 | 10 | #### IMPORTANT! This work has been superseded by https://github.com/ipld/specs/blob/a3c982518232b79123af2a2cf5e8642162c62524/block-layer/content-addressable-archives.md #### 11 | 12 | **(WIP -- quick thought dump)** 13 | 14 | > A car for your data! 15 | 16 | `car` is an archive format, like [`tar`](https://en.wikipedia.org/wiki/Tar_(computing)). It is designed to improve upon some deficiencies in `tar` as well as add fundamental improvements. The deatils of `car` are still being worked on, but the design space is already well scoped. `car` is a synthesis of good ideas. Many other archive formats introduced some of its improvements. `car` is different as it was introduced mainly to work with [IPFS](https://ipfs.io) and related protocols, like [IPLD](https://github.com/ipfs/specs/tree/master/merkledag/ipld.md). But `car` is useful beyond IPFS. 17 | 18 | This is a **discussion repo**. That means that all of the work gets done in the [issues](https://github.com/ipfs/apps/issues). 19 | 20 | ## Table of Contents 21 | 22 | - [File System Improvements:](#file-system-improvements) 23 | - [Fundamentally New Features:](#fundamentally-new-features) 24 | - [Whishlist:](#whishlist) 25 | - [Related Work:](#related-work) 26 | - [Contribute](#contribute) 27 | - [Want to hack on IPFS?](#want-to-hack-on-ipfs) 28 | - [License](#license) 29 | 30 | ## File System Improvements: 31 | 32 | - **Seeking Optimized:** finding object within a `car` file should be easy and fast. We can do this via an index with in-file byte offsets. 33 | - **[UNIX/POSIX files]():** full unix + posix files compliance. 34 | - **[Extended Attributes](https://en.wikipedia.org/wiki/Extended_file_attributes):** support for xattrs and other extensions. 35 | - **Compression Optimized:** support for object-level and archive-level compression. Modular to support new compression protocols. 36 | - **Encryption Optimized:** support for object-level and archive-level encryption (through [AEADs](https://en.wikipedia.org/wiki/Authenticated_encryption) / [NaCl/Box](https://godoc.org/golang.org/x/crypto/nacl/box)) 37 | 38 | ## Fundamentally New Features: 39 | 40 | - **[Data Structures](https://github.com/ipfs/specs/tree/master/merkledag/ipld.md):** support for archiving more than files-- arbitrary datastructures (first-class JSON, XML, IPLD support) 41 | - **[Merkle-Linked](https://github.com/ipfs/specs/tree/master/merkledag/ipld.md):** all objects in a `car` file are merkle-linked -- hash-linked -- together. this means the whole `car` file is a [merkle-dag](https://en.wikipedia.org/wiki/Merkle_tree). 42 | - **[Digital Signatures](https://en.wikipedia.org/wiki/Digital_signature):** `car` has first-class support for Digital Signatures, to verify the authorship and certification of its content. 43 | 44 | ## Whishlist: 45 | 46 | - **[Repo Friendliness](https://github.com/jbenet/random-ideas/issues/33):** make it _easy, efficient, and useful_ to use `car` archives as on-disk repositories for other tools. 47 | - **[Authenticated Datastructures](https://www.cs.umd.edu/~mwh/papers/gpads.pdf):** define all `car` operations as an authenticated datastructure, to have secure, untrusted computing. Merkle-linking and Digital Signatures get us most of the way there. 48 | 49 | ## Related Work: 50 | 51 | - continuity: https://github.com/stevvooe/continuity 52 | - `asar`: https://github.com/electron/asar 53 | - IPFS: https://github.com/ipfs/ipfs 54 | - IPLD: https://github.com/ipfs/specs/tree/master/merkledag/ipld.md 55 | - ipfs/unixfs: https://github.com/ipfs/go-ipfs/tree/master/unixfs 56 | - lambda-auth: http://amiller.github.io/lambda-auth/ 57 | 58 | ## Contribute 59 | 60 | Feel free to join in. All welcome. 61 | 62 | ### Want to hack on IPFS? 63 | 64 | [![](https://cdn.rawgit.com/jbenet/contribute-ipfs-gif/master/img/contribute.gif)](https://github.com/ipfs/community/blob/master/contributing.md) 65 | 66 | ## License 67 | 68 | MIT 69 | --------------------------------------------------------------------------------