Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancing Torrent Protocols with an Optional Versioning Layer/plugin #1474

Open
burtvadr opened this issue Feb 24, 2025 · 1 comment
Open
Labels
enhancement New feature or request

Comments

@burtvadr
Copy link

Is your feature request related to a problem? Please describe.

I’ve been exploring ways to address the inherent limitations of traditional torrent protocols—particularly their lack of native support for temporal versioning, update pointers, and decentralized forking—while preserving the robustness and widespread adoption of torrents as a decentralized storage system. The goal is not to replace torrents, but to enhance them with an optional, backward-compatible layer that enables advanced version management. This layer is especially useful for files that are meant to evolve over time—such as historical documentation, games in development, or ongoing projects—while static files that require no updates remain unaffected. Below, I present a detailed proposal that covers the following features:

Describe the solution you'd like

-----Below, I present a detailed proposal that covers the following features:

Immutable Core with Optional Versioning

Immutable Original Files: Once a file (version 1) is released via torrent, it remains immutable. As it is seeded across the network, it acts as a permanent archive, keeping the current torrent system.

Optional Version Pointers: An optional metadata layer (embedded within the torrent file or as an accompanying file) can contain cryptographically secured pointers that link version 1 to subsequent versions (e.g., version 2). Key points include:

Pre-Release Pointers: The protocol should allow the original uploader to release an update pointer even if the new version does not yet exist or is not fully ready. This “reservation” of an update address means that the pointer is published and ready on the network, so that once version 2 is complete and hosted, it is seamlessly integrated.

Digital Signatures: The pointer is generated and signed by the original author using digital signatures (such as ECDSA or EdDSA), ensuring that any update is verifiably linked to the source.

Optional Nature: This mechanism should be entirely optional. If the uploader never releases an update, version 1 remains the final, immutable file. Clients that support this feature will automatically check for and notify users of updates, while those without the plugin will simply download the core binary.

Use Case Specificity: This layer is particularly useful for content that is meant to be updated over time (e.g., evolving documentation, games in development). For static files—like finalized movies or archived photographs—there is no need for update pointers.

Optional Mechanisms and Multisig Control

Optional Automatic Update Pointers: When a user downloads version 1, a plugin-enabled client can inspect the embedded pointer to determine if a new version exists . If the pointer is unlocked, the client can prompt the user to download version 2.

Multisignature (Multisig) for Update Release (Optional): To enhance security and control, an optional multisig feature could be implemented. In this scenario:

The original uploader (or group of trusted collaborators) must all sign off on the release of a new update.

This multisig mechanism ensures that only authorized parties can publish updates, providing an extra layer of trust and preventing unauthorized changes.

Such a mechanism is particularly useful in collaborative projects where multiple stakeholders are involved in managing updates.

Decentralized Forking and Versioning

Decentralized Forking: Beyond simple updates, the proposed layer supports forking for any type of binary file—whether it’s a game, movie, or document. Here’s how it could work:

Fork Creation: Suppose version 1 is released, A user might decide to create a fork based on version 1. creating (e.g, version 1 fork)In this case, the fork is an independent line of development but its cryptographically linked to version 1(original).

Separate Lineage: The original version 1 does not automatically point to the fork; instead, the fork exists as an alternative branch. In a later update (say, version 2), the original uploader may optionally choose to officially acknowledge the fork by adding it as historical metadata. For example, version 2 could list both the original version 1 and an “approved” version 1 fork, establishing a clear lineage.

Verification: Each fork’s pointer is also signed digitally, so that anyone can verify that the forked version originates from the same source as the original, even if the binary content is completely different.

Optionality: This forking functionality should be optional. Users/creators who wish not acknowledge any fork, should have the right to, while those seeking decentralized collaboration have the ability to branch off.

Integration and Compatibility

Plugin or Layer on Top of Torrents: The ideal solution would be implemented as an overlay on top of the existing torrent protocol—

either as an integrated layer or as a plugin for torrent clients and even for servers/seeders.

Backward Compatibility: Users without the plugin can still download and seed the file normally. They might not easily interpret the additional metadata, but they continue to support the network and help maintain the file’s availability.

Enhanced Participation: Even without full plugin support, every download and seeding operation contributes to preserving the immutable registration link system of version history embedded in the file’s metadata. This ensures that the update history remains intact and available across the network.

Preserving the Torrent Ecosystem: Millions of files already circulate through torrents. Any new layer must accommodate this legacy and ensure that even static files—those not intended for updates—remain unaffected.

Underlying Technologies and Approaches

Cryptographic Techniques:

Digital Signatures: To securely sign update and fork pointers, allowing users to verify authenticity.

Hash Pointers and Merkle Trees: To create a verifiable chain of file versions and forks.

Encryption Schemes: For optionally “timelocking” the update pointers so they remain hidden until the uploader releases the corresponding secret.

Distributed Systems and Storage Protocols:

BitTorrent & DHTs: The proposed layer leverages the existing BitTorrent protocol and Distributed Hash Tables (DHT) to distribute both the core file and its associated metadata.

IPFS/IPNS: Concepts from IPFS (immutable content addressing) and IPNS (mutable naming) could also be used for managing dynamic update pointers.

Blockchain (Optional): A lightweight blockchain or similar ledger could serve as an auxiliary record for update pointers and forks, though this is optional given potential scalability challenges.

Potential Challenges and Considerations

Usability and Key Management: Managing cryptographic keys securely is essential. The system must include user-friendly interfaces to prevent errors that could compromise update integrity.

Interoperability: The added versioning and forking layer must integrate seamlessly with current torrent operations, ensuring that even clients without the plugin continue to operate normally.

Scalability and Network Overhead: Embedding additional metadata and maintaining a history chain could introduce network overhead. Efficient data structures (like Merkle trees) and optimized DHT storage will be crucial.

Decentralized Trust and Multisig: Establishing a robust trust model, especially with forking and multisig updates, requires careful design to ensure that only authorized updates are released without central control.

Describe alternatives you've considered

Sistema de Arquivos Interplanetário (InterPlanetary File System)

Additional context

Conclusion

This proposal envisions an enhancement to the current torrent ecosystem through an optional versioning layer that supports:

Immutable file storage with update pointers that can be set even before the new version exists.

(optional)Automatic discovery of new versions ( like on Steam you can automatically download the update and trust the platform, you could have a creator that you trust and you can automatically download it from them, replacing the original files, or downloading side by side, helping to keep seeding the previous version) for users with enhanced clients, while maintaining backward compatibility.

Decentralized forking where alternative branches can be created and, if desired, later acknowledged by the original uploader.

Optional multisig control for collaborative or high-security update releases.

A system designed primarily for files intended to be updated (e.g., historical documents, games in development) while leaving static files unaffected.

By integrating such a layer as a plugin or optional extension on top of existing protocols, we can harness the strengths of torrents while introducing powerful new capabilities for version control and file evolution—all without needing a complete overhaul of a system that already plays a vital role in internet today(like IPFS).

I look forward to hearing thoughts on this approach and any suggestions for overcoming the highlighted challenges.

@burtvadr burtvadr added the enhancement New feature or request label Feb 24, 2025
@burtvadr
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant