rps17
Hi,
recently I took contact with IPFS, an attempt to improve the current web making it permanent and more resilient. I found it very interesting and with great potential to help in the development of distributed apps (dapps).
The IPFS make use of Merkle DAG and characteristics of other applications.
Currently, IPFS is implemented with GO language. I was wondering how to implement it in Elixir. I think it worth while since Elixir language is more fun to code regarding GO.
I am learning Elixir yet and have few practice in development, but trying hard to improve my skills.
To see more about IPFS:
Juan Benet explaining the IPFS at the Standford University
Thanks
Trending in Discussions
Hey there,
It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
I’ve been using Emacs as my main code editor for more than a two years. It’s a custom build version although I’ve tried doom emacs and sp...
New
Hi there! :wave:
@frigidcode and I (but mostly him) have been running an Elixir Book club, we’re almost done with Designing Elixir Syste...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Just published claude-code-elixir, a plugin marketplace for Claude Code with Elixir support. These are the plugins I’ve been using for my...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 3- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
rps17
Here is the code GitHub - ipfs/kubo: An IPFS implementation in Go · GitHub
ibgib
Well, that is a huge, non-trivial question!
They’ve been at it according to github for a couple years now, with over a hundred of contributors and almost 200 current branches! So, you would need to ask not only an elixir expert, but also a IPFS expert - which I’m not sure if there are any experts in both (yet)!
That said, and with the caveat that I know next to nothing of their actual code implementation, I have been learning about how they’re structuring it conceptually. I can tell you that ibgib has many similarities with their goals. I’m using a mechanism that is very merkle-esque. Briefly, the data structure for ibgib is
ib,gib,data, andrel8ns. Theibacts as a non-unique identifier, and thegibacts (usually) as a sha-256 hash of theib,data, andrel8ns(i.e. the “content”). This is the only data struct in the application, as the actual content of the ibgib populations (persisted in the repo) contains the actual “data structures”. As such, it is also a monotonically-increasing database, with no deletes (no “unlinking”). So if you have anib^gibaddress, then you have the address to a unique, immutable thing.So the “heart” as he calls it, the merkle(ish) dag, is there.
Ibgib does not however concern itself with the transport layer, as it is strictly agnostic to how these data get created. And since the
gibacts as a hash, it should not matter what the transport layer is. I think (perhaps!) that they’re more interested in supplanting current http infrastructure, and that just isn’t something I’m remotely interested at attempting to do.But the one big foundational concept is the one he discusses about distributability. Because of this end goal in mind, I have created each individual
ib_gibas a process. It is an “immutable state” process, but a process nonetheless. This way, in the future when it grows from a single repo and a single node to a cluster of nodes and whatever db substrate implementations (because the db is just a persistence mechanism), any users can talk to any of their “local” ibgib processes to interact with.But one of the big problems with using Elixir, and this is probably important for you with regards to your question, is regarding what he discusses in the video you linked as the “offline” disconnected scenario. In order to effect this, you have to be able to have the engine running on any client. This is similar to how git can operate locally on any node and then merge changes/interact with servers, as the servers are just other nodes in the merkle dag.
Elixir, at the current time, only runs where erlang (the BEAM!) runs, and as best as I can tell, that does not currently include apple iOS or Android. Perhaps this is why the IPFS team is approaching the transport layer?
Anyway, I have no idea if this helps you on your question, but I just had to go ahead and respond because IPFS looks very interesting!
rps17
Hi! thanks for your interesting answer. Certainly it helped me to see the big challenge to implement IPFS using Elixir. I’ll try to understand the ibgib.
I also think IFPS iss approaching the transport layer.
Thanks again and good lucky!