Minor: add some discussion to the JavaDocs about why attachments are zip files.

This commit is contained in:
Mike Hearn 2017-12-13 16:50:41 +01:00
parent 5df48e0f5e
commit 38fd99792f

View File

@ -12,11 +12,20 @@ import java.util.jar.JarInputStream
* An attachment is a ZIP (or an optionally signed JAR) that contains one or more files. Attachments are meant to
* contain public static data which can be referenced from transactions and utilised from contracts. Good examples
* of how attachments are meant to be used include:
*
* - Calendar data
* - Fixes (e.g. LIBOR)
* - Smart contract code
* - Legal documents
* - Facts generated by oracles which might be reused a lot
* - Facts generated by oracles which might be reused a lot.
*
* At the moment, non-ZIP attachments are not supported. Support may come in a future release. Using ZIP files for
* attachments makes it easy to ensure data on the ledger is compressed, which is useful considering that attachments
* may be widely replicated around the network. It also allows the jarsigner tool to be used to sign an attachment
* using ordinary certificates of the kind that many organisations already have, and improves the efficiency of
* attachment resolution in cases where the attachment is logically made up of many small files - e.g. is bytecode.
* Finally, using ZIPs ensures files have a timestamp associated with them, and enables informational attachments
* to be password protected (although in current releases password protected ZIPs are likely to fail to work).
*/
@CordaSerializable
interface Attachment : NamedByHash {