stamp-protocol / tracker

The place for all features, bugs, and discussions
https://stampid.net/
2 stars 0 forks source link

StampNet #15

Open orthecreedence opened 3 years ago

orthecreedence commented 3 years ago

Throwing this here for ongoing discussion and ideas. So far, I have some preliminary thoughts, some of which are effectively lifted directly from Duniter but without using a blockchain.

StampNet is a p2p storage and syncing system for identities. There are three main components to the network:

  1. Public reading
  2. Private syncing
  3. Public writing/participation

Public reading

Anybody can join StampNet and run queries against the available identities that are published. This allows verification, even for non-members.

Private syncing

Private syncing allows anybody who has an identity to share that idenity between their devices in a p2p fashion. This is done via a request/approval mechanism in which one device asks another device to sync private data. This data would be the full (not public) identity, although it will have all private data encrypted (via the master key) and will be encrypted by the recipient's public key, meaning the private information is twice-protected (once at rest, once in flight).

The idea here is that anybody who wants to can share their identity between devices easily, removing a barrier for network participation.

Public writing/participation

The ability to publicly publish your identity into StampNet requires network membership. In essence, you need some mechanism for ongoing approval to retain membership, and other members will check your status before allowing you to store your identity (and will remove your identity if your approval lapses).

Details on approval is not decided yet, although here are some mechanisms:

kaichaosun commented 2 years ago

Hi @orthecreedence, have been watching basis for a long time and now I'm glad to know stamp. A few thoughts on the public writing/participation,

orthecreedence commented 2 years ago

Hi, again! :smile:

if the identity claim is published publicly, everyone can see it and stamp on it, which means the privacy if not protected at all. For some claim like national number or driver license, user want it not leaked, but still able to be stamped on something like "I have a driver license". Is this not in the scope of stamp protocol, or maybe there is plan to introduce such functions with fancy techs like zero knowledge proof?

Stamp has private claims!

image

The idea is that each private claim is encrypted with the identity's master key. When requesting a stamp on that claim, the identity owner re-encrypts the claim with a random key, appends the new key and the re-encrypted claim, then encrypts the object with the potential stamper's public key. This way, the person who is stamping can decrypt the object with their private key, open the claim, and create a stamp for it without anybody else being able to read the claim.

Also, when an identity is published, data from private claims is removed so even the encrypted form isn't accessible.

I like the idea to use DHT or small world network to replace the inefficient blockchain. But I think there lack a working framework to build such function, which provides storing, validation and host renting. Let me know if you happen to know a working one.

I think something close to what bittorrent has. What's missing would be the rules governing who can publish to the network. I think something like Holochain might be helpful for the storage/validation.

That said, I haven't actually built anything useful on Holochain yet. I like the trade-offs it makes, but it's use-cases are different than blockchains.

Network membership works more like a spamming layer to avoid too many bad transactions, user referral is less efficient and probably introduce another form of renting. Before we reach a currency free world, it's still worth to integrate the idea of cryptocurrency, the distribution do matter though between network maintainer and users. The bridge to existing currency world is also valuable since not anyone wants to put focus in the underlying economics but just want to use a service.

Honestly I haven't put a lot of thought into how network membership will work. I'm not entirely opposed to blockchains/cryptocurrency here, but I want to make sure there aren't other options first. I've been more focused on building the protocol/implementation (working on a GUI now) than with StampNet, although Stamp will not be particularly useful without StampNet so maybe now is a good time to start figuring this out.

The reason I like the referral/sponsor method is because it can exist outside a monetary system and from my viewpoint it encourages person-to-person interactions. That said, I think it would be hard to scale properly. It would effectively end up being kind of like a social credit system, which is a currency in itself (granted, more akin to a gift economy than a monetary economy).

I'm not entirely opposed to people just buying membership, but that in itself would put us in the blockchain boat, which I'm trying to avoid because of all the things that come with it (endless append-only data, a requirement for constant connectivity, bundled economics systems, etc etc). P2P systems are easier to come into and out of, and with something like Stamp just about everything will be cryptographically verified so the guarantees a blockchain provides will already be distributed into the protocol/implementations themselves.

I'll put some more thought into this and see what I come up with. In the meantime, if you know of any incentives systems that could work for StampNet membership in blockchain systems, I'd be interested to read about them!

kaichaosun commented 2 years ago

I'm actually building on Holochain, I also like the tech balance it provides. But it doesn't provide the hosting inherently, you need Holo network for the hosting. Holo has its own metrics to incentivize host providers, and such metrics/constraints could be hard to fit all the use cases. Actually I'm not quite sure how is Holo hosting metrics going to be. A highly customizable hosting layer, plus the DHT validation provides by Holochain, I think it would be perfect for stamp or similar use cases.

any incentives systems that could work for StampNet membership in blockchain systems

An interesting membership has been performed in urbit, but seems not quite work out yet. Basically you need to make a one-time identity purchase and following with hosting costs. Also there are off the shelf hardware to meet the self hosting, like holo port and https://getumbrel.com/.

orthecreedence commented 2 years ago

A highly customizable hosting layer, plus the DHT validation provides by Holochain, I think it would be perfect for stamp or similar use cases.

One could use Holo, or I believe it's possible to run your own servers that interface with the p2p network holochain creates, like a traditional server setup. That said, I am hoping to build the StampNet implementation into the client so it would eliminate any servers/hosting altogether. In other words, in the stamp CLI/GUI you would have interfaces that allow you to find published identities, sync your private identity across your devices, store your public identity, etc.

It mightn eventually make sense to build APIs around Stamp/StampNet for people who want to interact with the network without a full implementation, and then the server approach would definitely make sense. The caveat is that you're trusting the servers to not censor/modify the data they handle.

An interesting membership has been performed in urbit, but seems not quite work out yet. Basically you need to make a one-time identity purchase and following with hosting costs.

I've been following the Urbit project for a while now. I do like their approach in a lot of ways. However I haven't heard of any actual usable apps coming from it. It has been a while since I looked though.

I'll take another look, especially at their built-in identity system. They are using Ethereum, right?

kaichaosun commented 2 years ago

They are using Ethereum, right?

Yeah, urbit has its identity build on NFT spec and using Ethereum initially, and now switch to their own layer2 to reduce the cost.