Settings

Theme

Show HN: A federated social network, built on Ethereum and IPFS

numaverse.com

25 points by heynk 8 years ago · 6 comments

Reader

evanprodromou 8 years ago

Hey, that's amazing! I think that having an AP server that stores data in IPFS is really cool. Where did the idea come from?

heynkOP 8 years ago

Hey HN!

I’m really excited to share what I’ve been working on for the past few months. It’s a social network, built on distributed technologies, with support for federation with Mastodon and other compatible networks.

I don’t want to throw around too many buzzwords, so let me just get to the point. There is a smart contract on Ethereum that keeps track of references to all the network’s data. The only data actuall passed to the contract are IPFS hashes. Those IPFS objects are JSON files that contain the actual information that describes users, messages, follows, favorites, etc. If you view a message page[1], you can scroll down and see the raw details like the IPFS hash, actual IPFS file, and transaction information for that message.

Because all the data is stored in a distributed fasion, that means you’re not reliant on any central server. The server is open source[2], so anyone can run their own ‘gateway’ to the network, or build their own on top of it. You could even run it locally. Either way, you get the same experience, and since you control your private keys, you can take your account wherever you want.

The app batches all of your actions into a single transaction that only costs a few cents. You can sign up, post messages, etc, without having to spend or own any Ethereum. When you want to actually post it on the blockchain, you commit your batch. Until then, your content is cached on the server, and only other folks on that server can view it. Still, I get not wanting to go through the whole hassle of buying Ether, sending it to an account, and testing it out on some new thing. I’ve setup a staging server[3] that connects to the ‘Ropsten’ test network, and you can get free ether from a faucet to use.

It’s also built it so that the ‘gateway’ server is ActivityPub compliant, which means you can follow and be followed by other folks in the fediverse. You can have people follow you from other networks, though, by having them search for @your_username@numaverse.com . To follow people on other networks, search for their ‘fediverse handle’ in the search bar, i.e. @gargron@mastodon.social.

It’s just a start, but I’ve loved this project because I’ve never learned more than while working on this. I’m really excited for what will come from these technologies. One cool feature coming up will be support for Token Curated Registries, which are a form of a reputation network that’s tied to a blockchain. Stuff like that will be really interesting in the context of social networks.

[1] - https://numaverse.com/messages/4

[2] - https://github.com/numaverse/numaverse-gateway

[3] - https://ropsten.numaverse.com/

  • DeadSuperHero 8 years ago

    Interesting stuff. Given that it's AP-compliant, does that mean messages from the rest of the fediverse are not stored on the blockchain?

    Also, can Numa be used like a regular fediverse client, without spending Ether or storing anything on the Blockchain?

  • im_dario 8 years ago

    What about privacy? Your project looks good but social networks don't need to be all public for starters.

    Anyway, congratulations for shipping.

  • exolymph 8 years ago

    Very cool project!

  • ultimape 8 years ago

    I got a little stuck in the weeds trying to figure out how it all works (I'm not well versed in Ruby). At first I thought this was acting as a thin client for data stored on IPFS/Ethereum, but it seems this is actually a full blown ruby+postgresss activitypub server that also happens to backup some data onto an IPFS node.

    I also saw that there are two version of the numa.sol contract posted, both to the ethereum network, and also in the github https://github.com/numaverse/numaverse-gateway/tree/master/c...

    When I send messages to your server from a different ActvityPub instance (like my account on mastodon), is it also being added to the IPFS node, or just to the gateway's postgres?

    I'm thinking about the case of moving an account but not being able to keep the threading of replies since the activitypub 'actor' isn't tied to the hash/wallet transactions, but to the server. Makes me think there is a bit of an impedance mismatch in what you're trying to do.

    That suggests taking my account someplace else will be tricky since my follower's accounts will still be following the old one.

    As it stands, it looks like i'd just be paying to have a hash stored on ethereum, but I'd still need to run my own/pay for an IPFS node to mirror those hashes if I wanted to secure my data.

    Those two things combined makes me question the "Because all the data is stored in a distributed fashion, that means you’re not reliant on any central server." bit. Seems that this could all be done with an export/import functionality and a bit of pgp. Maybe I missing something fancy going on with how you're handling the wallet stuff internally?

    ----

    But maybe im focusing too much on the activity pub thing and that's actually more of a bonus feature - expecting that to work across servers might be asking too much.

    Lets say I signed up on numaverse.com and created a profile. Then at some later time I manually publish a transaction to my own IPFS node linked up to the main IPFS network, then published my own hash on ethereum using the same wallet address and contract - And did so outside of the ruby app running on your server. Would numaverse.com be aware of that publication and be able accept replies/federate it out?

    Lets say someone spins up a separate copy of numaverse on a different URL with their own IPFS node linked to the larger IPFS network, and then followed me. would that instance be using activity pub to get the content, or would it be looking directly at the hash/wallet/ipfs and the ruby servers would never actually have to talk to each other?

    Maybe the feature i'm looking for here with regards to user identity being nomadic and tied to the wallet is just not implemented fully yet?

    ----

    "Token Curated Registries" reminds me of what Colony is trying to do - having a bunch of tokens that track reputation within the group that is somewhat separate from the global token. I saw you just added in a tipping system - presumably you'll be creating a set of smart contracts that facilitate the registries under a similar mechanism. Would be neat to have different kinds of reputation mechanisms and not just the raw token counts we see today.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection