Immutable comment system and react component
Emitter
DUCE
DAOHAUS universal comment emitter
Decentralized universal comment emitter
poster.sol
daohaus sdk
react comonent
content: value, // content of the post (markdown)
version: "0.0.01", // version of the schema or maybe the post?
context: "post", // root | reaction, reply (always should have parent)
sender: address, // sender of post
image: image || "", // external image/link
created: Date.now() / 1000, // creation time
id: uuid, // unique id / salt
domain: TARGET.DOMAINID, // app / dao (maybe set at factory)
scope?: 12 // proposal id type data
tag: encodedData, // encoded tag for verification
parent: "", // if reply or reaction / parent tag
Poster.sol has 2 string fields content and tag. Content should contain a json string with content and meta data around a post. the tag can be a unique hash created from msg.sender, uuid and doaminid. this way a content string could be verified by the tag.
a factory should deploy a standard wrapper around Poster.sol (channel emmiter). this way every channel is its own contract, it could have tag generation logic, also could be used for role/token gatting, fees, relayers or other nuonces. Channel can have different meta data: title/topic/etc. Channels could have a owner (DAO)
a channel would probably have a domain of a DAO or a more general app. could be scopped to more specific things
A post can have a context of parent or child(anything string)
A root post is top level content.
A child (reaction/reply) and requires a parent
because of the channel emmiter contract indexing is scopped and in may case could be done client side. Could be a good usecase for a subgraph if multiple popular channels.
because this is uses poster under the hood all data can be easily indexed, the contract wrapper allows further easy scoping
a post need to be able to be verified as coming from a signer and is unique
// TODO
// add uuid and sender address to content and tag
// this is added in the contract as well
// allows to verify that the content was created by the sender
// uuid is a salt for a unique hash
// this does not prevent a user from submitting the same salt again
// - maybe this is a feature for delete/edit, only using the most recent
// const tag = `${TARGET.DOMAINID}:${uuid}:${address}
emiiter.wtf is a simple mico blog site
a post can be made by any address
a post can get a upddot or downdoot (increment totals, only one per account)
a post can have a reply
ipfs deploy - nobunny can take it down
doesn't this require signatures and cost gas? thats the point
has no way to censor content or block spam? thats the point
any post can recieve a tip. tips could include stable or haus. there should be a splits to eco fund, product fund and OP. there could also be a burn of haus/duce for rev share.
fee to OP, share to early adopters
fee to DAO treasury? OP choice on withdraw
keep a ui element on the bottom of page or something. allows users to periodically commit all changes with single signature (ups/comments/replys/etc)