An open ideas document and a wish list for common functionality the dev community needs and possibly would like to develop.
Zome traits
Design patterns
Standalone DNA / hAPP
Potential core functionality
Standardised traits would allow for third party apps to better access and visualise an agents data (DNA-instances/zomes/entries) but also to interact with the data in a meaningful way. It faciltates better interopability between apps and speeds up development.
Implements
List which standard traits (and possibly trait versions) a zome uses. Possibly the trait definitions in the zome code are sufficient? But I have a sense we would like to have one more level of detail - trait id, a version number etc. The information has to be accessible not only for the app developer but for third party apps calling zome functions.
(Similar to IERC165
, supportsInterface(interfaceId)
https://docs.openzeppelin.com/contracts/2.x/api/introspection)
Ownable
The notion of “ownership” over a digital resource is a basic pattern many Holochain applications will need. With ownership comes the user expectance of being able to transfer that ownership, to renounce ownership, etc.
https://hackmd.io/kWfnGNR4Ta-K1h0jpK71Hw?both
Metadata
Both zome level fields and entry level fields. Standard (zome_description
, …) as well as zome/app specific.
Taxonomy
Provides a list of categories for other things.
Preview
Renders a human readable preview of an entry or list of entries, possibly returns a webcomponent? Example: embed a nice looking representation of a chat entry in a humm blog post.
Editor
? or Plugin
?Returns a plugin editor that can be embedded in other apps. Example: Every Humm blog post embeds a "Comments Editor" from the "HoloComments" app allowing for users to comment posts.
Timestamped
Entries carry metadata that give varying levels of proof that they happened at a certain moment in time. (cf Mixin zome(s) for entry timestamping)
ClaimsPermissioned
Actions are allowed or denied based on the possession of valid claims/credential (cf W3C Verifiable Credentials).
MembersOnly
A special application of ClaimsPermissioned that requires a valid credential to join the network.
DIDResolver
Able to take responsibility for resolving W3C Decentralised Identifiers for the data this DNA’s DHT contains. (cf Mixin zome and utility libraries for RESTful APIs and URI resolvers)
Signable
Signing: something that allows arbitrary participants to sign other entries by hash, thus indicating that they have seen and agreed with the information contained therein.
BlobStorage
Supports the storage and retrieval of chunked blobs and their manifests.
This could as well be a standalone DNA other DNAs can interact with.
Indexing patterns
…for browsing and retrieving other entries. I’ve seen anchors and DAGs (both have their use-cases), there are probably other flavours needed too.
Annotation
Able to annotate other data, either in the same zome/DNA, in some other DNA, or outside of Holochain entirely. Should probably be polymorphic, e.g., Annotation<BlogPost>
.
Presence
Shows whether an agent is online, offline, available, busy, typing, idle, etc.
Scheduling
Shows whether an agent is available or occupied at a given date in the future.
Events
Calendars, etc. Can be composed with Scheduling to do some cool things.
Messaging
Chat, IM, DM, comments, etc.
Posting
Similar to Messaging but meant for syndication. May just be an application of Messaging.
Notification
Allows agents to subscribe to things they want to be notified on; emits notification signals to clients.
Notary
Able to witness, and guarantee the uniqueness of, events.
LinkRegistry
Zome that tracks links incoming / outgoing between the host DNA and other DNAs using XDI Link Contract schema. We would also want this as a standalone DNA that tracks links between two other DNAs.
Presence
Shows whether an agent is online, offline, available, busy, typing, idle, etc.
Identity
Able to make assertions about facets of an agent’s identity, whether in a legally recognised (e.g., driver licensing office) or an informal capacity (web of trust).
GroupAgency
Agents can form recognisable groups with persistent identifiers; group membership (= authority to act as group representative) can be verified by third parties. Related to ClaimsPermissioned. (ping @pospi, cf How will Holochain handle group agents? )
MultiNodeAgent
This DNA is capable of combining multiple agent public keys into one human representation. Similar to GroupAgency and may be able to take advantage of the same codebase.
ExistenceCheck
Simple API that checks if entries with given hashes exist in the DNA, for use by other DNAs that need to perform referential integrity checks.
Timestamping
Able to provide a timestamp for external entries, at varying levels of proof. Naturally, this can support Timestamped
.
Persistent Off-Chain Storage
Provide a way to cache expensive computations and data-structures without poluting the source chain with transient data.
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing