willneedit / Arteranos

VR social app in a decentralized server-client model
Mozilla Public License 2.0
2 stars 1 forks source link

Migrate IPFS to an external daemon #129

Closed willneedit closed 5 months ago

willneedit commented 6 months ago

The embedded Unity IPFS module is horribly outdated and needs extensive maintenance. Now, even the official libp2p bootstrap servers don't talk to us.

In the long run, I have to use a well-maintained IPFS daemon program to work in the background. Prospective ones are...

More choices ref. https://docs.ipfs.tech/concepts/ipfs-implementations/#popular-or-actively-maintained

Subtasks will be:

  1. Choosing the daemon
  2. Gutting Unity-IPFS-Engine to move the functionality to the new daemon, mainly using the IPFS node's key for the multiplayer server's identification
  3. Rewriting the internal IPFS API to communicate to the daemon via RPC, or any means of IPC
  4. Adapting to new or omitted features (like, IPNS)
  5. Make Arteranos start up or shut down the daemon
  6. (optional) Configuration: Leave the daemon up in the background
  7. Extending the installation package so that the daemon will be installed alongside Arteranos
  8. The new daemon should cooperate with existing IPFS installation.
willneedit commented 5 months ago

It works, so far, with some issues.

Using https://github.com/ipfs-shipyard/net-ipfs-http-client took me a long way, but Kubo's PubSub HTTP interface is regarded as not for production use, among others.

I had to ditch the bradcasting scheme for the server description and the server online data, in exchange with using IPNS.

IPNS is a way to provide constant links to changing data, both for flood mitigation and imposter attacks.

willneedit commented 5 months ago

Squashed commit incorporated into master.

  1. Included kubo IPFS daemon v0.28 into the installation package
  2. Setup and startup if IPFS daemon in Arteranos' startup
  3. Replacing the IPFS communication architecture
  4. Extended the Installation wizard creator
willneedit commented 5 months ago

Works, but some blocking issues. Need to be addressed in other issues.