Holochain Core Types
The reason for having this crate is to have a minimal but complete set of types that are used in most other Holochain crates, but that don't include Holochain itself.
Note: This is already quite big. Maybe break the CAS and EAV traits out into their separate crate as well since those are generic and not necessarily bound to Holochain.
This module contains trait definitions, examples, and test suites for AddressableContent and ContentAddressableStorage.
This module contains definitions of the ChainHeader struct, constructor, and getters. This struct really defines a local source chain, in the sense that it implements the pointers between hashes that a hash chain relies on, which are then used to check the integrity of data using cryptographic hash functions.
NOT YET AVAILABLE
This module holds the relevant constants and an enum required for Holochain to have 'status' metadata for entries. Since Holochain uses an append-only data structure, but still wishes to provide classical features of a data store such as "update" and "remove" (delete), metadata is created pointing entries forward to their 'latest' version, even including an entry being marked as deleted.
dna is a library for working with holochain dna files/entries.
This module contains all the necessary definitions for Entry, which broadly speaking refers to any data which will be written into the ContentAddressableStorage, or the EntityAttributeValueStorage. It defines serialization behaviour for entries. Here you can find the complete list of entry_types, and special entries, like deletion_entry and cap_entry.
This module contains Error type definitions that are used throughout Holochain, and the Ribosome in particular, which is responsible for mounting and running instances of DNA, and executing WASM code.
The HashString type is defined here. It is used for type safety throughout the codebase to keep track of places where a string is the product of a hash function, and as a base type for Address to use.
The JsonString type is defined here. It is used throughout Holochain to enforce a standardized serialization of data to/from json.
This module contains definitions for what a Link is in Holochain, as well as structs relating to the adding and removing of links between entries and lists of links.
The Signature type is defined here. They are used in ChainHeaders as a way of providing cryptographically verifiable proof of a given agent as having been the author of a given data entry.
The Iso8601 type is defined here. It is used in particular within ChainHeader to enforce that their timestamps are defined in a useful and consistent way.
This module defines structs that are used in the interchange of data that is used for validation of chain modifying agent actions between Holochain and Zomes.