ipfs / devgrants

The IPFS Grant platform connects funding organizations with builders and researchers in the IPFS community.
167 stars 75 forks source link

[MICROGRANT] rust-ipld hamt #61

Closed dvc94ch closed 4 years ago

dvc94ch commented 4 years ago

What do you work on? (max 100 words)

Sunshine protocol needs a unixfs implementation. To build unixfs a hamt is required. The hamt needs to implement get/insert/remove operations and be able to import/export data from a BTreeMap. To complete the hamt implementation we request a micro grant of 1000USD.

How are you planning to incorporate IPFS into your work? (max 250 words)

Below is an excerpt from our whitepaper explaining how we are using rust-ipld and ipfs-embed, both projects that we developed internally.

Chain module

The chain module is a reusable abstraction for building private proof of authority chains using ipfs and using substrate to provide authorization and consensus on the current head of the chain. When authoring a block on ipfs a race condition can occur. Due to substrate providing a total order of transactions only one transaction will succeed in updating the head of the chain, the other client will create a new block on the head of the chain and retry the failed operation.

chain_module.svg

Keybase module

The keybase identity module manages the user's chain that stores the user key, device keys, password and social media accounts using the sunshine chain module. Private data shared between devices is encrypted with the user private key. When a new device is provisioned a key is generated locally on the device, and a provisioning protocol is used to communicate between the new device and the provisioning device.

keybase-module.svg

Password changes are stored encrypted in the user chain. When a device receives a block with a password change it reencrypts it's local device key using the new password. This ensures that the user only needs to remember one password.

Social media accounts are linked to a chain account, by submitting a proof in the social media profile and on the user's chain. Other users can find the on chain account on the social media page and verify that they are both controlled by the same cryptographic identity. This allows us to use github usernames as aliases without compromising the decentralized nature or security that blockchains provide. While resolving the social media account to an on chain identity requires the service to be online, already resolved identities are stored locally. This means that even if github is offline, transfers to already verified github accounts can be performed.

Finally the user and team keys will be used in other modules to send encrypted messages, share encrypted files and vote to make decisions.

Website(s) (CV, GitHub, personal page...)

https://sunshine.foundation/

dvc94ch is CTO of sunshine-protocol. He is known for building rust-ipfs, rust-ipld and ipfs-embed among many other projects. He worked at parity technologies as a core dev before joining sunshine-protocol.

troublescooter skipped the last year of college by passing the ETH Zurich entrance exam, later earning two Bachelor degrees in mathematics and electrical engineering, before joining sunshine.

Will the work be Open Source? (if not, explain why)

The code will have an Apache + MIT license.

Does your proposal comply with our Community Standards?

I think so.

momack2 commented 4 years ago

Hey @dvc94ch - thanks for making a grant proposal here. Unfortunately, our grant program is currently on-pause until Q1 2021 as we're low on bandwidth to triage new suggestions as well as manage already ongoing grants - so we aren't accepting new grant proposals right now (we've already turned down other Rust grants as well for this reason). Happy to revisit in Q1 2021 (so feel free to reopen then if still interested). 🙏

dvc94ch commented 4 years ago

Ok, @4meta5 was in contact with someone from the pl grant program (last month if I'm not mistaken) and lead to believe the microgrant program was still open.

momack2 commented 4 years ago

Ah, sorry about that! We've had a few things we're still processing out of our queue, but new grants are on pause.

mishmosh commented 3 years ago

Hi @dvc94ch, thanks for your patience. PL's Microgrants program is now open again, and we are evaluating grant applications every 2 weeks. Are you interested in being re-considered?

dvc94ch commented 3 years ago

a little late for that