[ANN] Link - The Blockchain File Sharing Protocol
-
[quote name=“zerodrama” post=“41185” timestamp=“1386429718”]
[quote author=Kevlar link=topic=5558.msg41054#msg41054 date=1386410677]
[quote author=Vidicus link=topic=5558.msg41021#msg41021 date=1386407620]
I would match someone up to 100 FTC for this project and some of my personal time. I have some computer programming experience (pascal :o , Visual Basic, and Python) but am definitely rusty. What would the python have to do exactly?
EDIT: Sent 5.666 FTC to your sig address Kevlar, hopefully that gets a few more lines of code into this project!
[/quote]I’m already hard at work on it. Your donations are GREATLY appreaciated. :)
The python would have to read the pirate bay database, and insert it into the blockchain by spending the coins using the Link protocol. I’ve not yet calculated what the cost of a message will be, but I do estimate you can do several hundred thousand torrents for 1 FTC.
[/quote]So are we just storing torrent files in the blockchain? Torrents are notoriously resistant to adaptation. There is no torrent modify protocol or dynamic torrent. For example, there is no torrent proxy which can turn a folder being shared into a torrent file in real time.
I’ll work on FLUX and see how it fits here.
[/quote]That’s one possibility and you can do that with the Link protocol but I’m working on something a little more efficient in terms of storage. Why store the whole torrent when you can store a tiny fraction and accomplish the same thing?
As for modifying torrents, torrents are like URLs: you don’t modify one, you use a new one. That’s an important feature, because it means the same data will always be downloaded for a given torrent. Want different data? You wanted a different torrent.
Making them a directory at a time is trivial.
-
Is there any way the concept of holding the magnet files can encourage or push people to use i2p for further security?
I’m just envisioning people running the Link through Tor and going “Huh! It’s good enough for that. Let me go ahead run my torrent client through it.” and having a small nightmare about it.
-
[quote name=“Kevlar” post=“41250” timestamp=“1386439601”]
That’s one possibility and you can do that with the Link protocol but I’m working on something a little more efficient in terms of storage. Why store the whole torrent when you can store a tiny fraction and accomplish the same thing?
[/quote]See that’s what I was hoping for. Because many torrents are actually collections of files. This makes more sense. I still think link could be more dynamic. Like forking a linkchain for different remixes. Or updates to documents in progress.
[quote]
As for modifying torrents, torrents are like URLs: you don’t modify one, you use a new one. That’s an important feature, because it means the same data will always be downloaded for a given torrent. Want different data? You wanted a different torrent.
[/quote]Except we also have urls which are actually queries formatted as directories for search engines to crawl, which would mean blockchain search engines.
[quote]
Making them a directory at a time is trivial.
[/quote]I really should just build this feature and stop whining about it.
-
[quote name=“HopeStillFlies” post=“41254” timestamp=“1386440056”]
Is there any way the concept of holding the magnet files can encourage or push people to use i2p for further security?I’m just envisioning people running the Link through Tor and going “Huh! It’s good enough for that. Let me go ahead run my torrent client through it.” and having a small nightmare about it.
[/quote]Well they can run the blockchain download through the Tor network. That’s easy to do. I personally run my uTorrent over Tor and while I won’t max my bandwidth that way, it works well enough.
-
Ok, I’ve made a few changes to the initial pass. Specifically I’ve changed it from a fixed-length block-based encoding scheme to a variable-length stream-based encoding scheme based on op-codes to maximize compression and minimize wasted space in the blockchain.
Now is the time to get your op-codes submitted for inclusion. The list is far from complete, but please read the description of the ones suggested so far and if you have any ideas for other ones please let me know!
-
Is there anything someone who doesn’t have cryptos to donate, and doesn’t have the underlying computer skills, can do to help? It think this idea is brilliant.
-
[quote name=“Kevlar” post=“41313” timestamp=“1386448154”]
Ok, I’ve made a few changes to the initial pass. Specifically I’ve changed it from a fixed-length block-based encoding scheme to a variable-length stream-based encoding scheme based on op-codes to maximize compression and minimize wasted space in the blockchain.Now is the time to get your op-codes submitted for inclusion. The list is far from complete, but please read the description of the ones suggested so far and if you have any ideas for other ones please let me know!
[url=https://github.com/TSavo/Link/blob/master/README.md]https://github.com/TSavo/Link/blob/master/README.md[/url]
[/quote]I would do this for opcodes:
1st byte = module slot
2nd byte = module functionSo what you have defined so far is module 0 - the core link module. I would move 10, 11, FE, FF to 0A, 0B, 0D, 0E.
Module function 0 for all modules is the module key. Module function F for all modules is the extension range. Function 0 would identify the module we expect to be installed there. Function F would allow us to extend a module over several slots.The module key could be a digest of module name, version, VFW Post, geocaching GPS info, and other identifiers - they wouldn’t need to be listed, just the digest would need to match. The extension range would tell us the beginning and ending module slot which are allocated.
So core module/module key = Opcode 00. The extension key just points to module slot 0 as beginning and end. Say module 1 is a track list and module 2 is a list of ratings. Then track list/module key = Opcode 10 and ratings list/module key = Opcode 20. Both would also have extension range with beginning and end 1,1 and 2,2.
This means 14 functions per module slot. It allows for extreme extending of any concepts we want to add without getting lost. Core module in slot 0 is reserved for basic link protocol. I would suggest reserving slot F as well. The rest can be used by extenders. That leaves 14 slots of 14 functions each, for whatever we want to do. There is some duplication of info, but that may be the best way to do it.
If this isn’t too weird, I’ll set up FLUX (Flux Link Unit eXchange) functions within this same scheme.
One thing I would add (Peter Falk voice): some of these functions may require read write capability, but that’s for another time.
One favor Kevlar, I want to be able to read these streams from nodejs just for correctness in encoding. I might need to check with you on that.
-
[quote name=“zerodrama” post=“41331” timestamp=“1386453754”]
I would do this for opcodes:
1st byte = module slot
2nd byte = module function
[/quote]Sounds good. I’ll start organizing them next time I’m in the doc.
[quote]
One thing I would add (Peter Falk voice): some of these functions may require read write capability, but that’s for another time.
[/quote]Yeah, I’ve thought about a version scheme. It wouldn’t be hard. You could just say that this transaction succeeds this prior transaction, and sign the whole thing for security so only intended authors could version.
[quote]
One favor Kevlar, I want to be able to read these streams from nodejs just for correctness in encoding. I might need to check with you on that.
[/quote]Yep, I’m probably going to be doing the same in my initial pass. I’ve not decided on a language just yet. I’ll be sure to post anything nodish. Sails.js is lookin’ pretty rockin.
-
[quote name=“Kevlar” post=“41346” timestamp=“1386455714”]
[quote]
One thing I would add (Peter Falk voice): some of these functions may require read write capability, but that’s for another time.
[/quote]Yeah, I’ve thought about a version scheme. It wouldn’t be hard. You could just say that this transaction succeeds this prior transaction, and sign the whole thing for security so only intended authors could version.
[/quote]I’m gonna experiment with soft-reorgs here. If it works we can expand it to end 51% attacks. This would allow a safe environment for large and small currencies unencumbered by the philosophies of big players or unreasonable devs (ONE TROO COIN).
[quote]
[quote]
One favor Kevlar, I want to be able to read these streams from nodejs just for correctness in encoding. I might need to check with you on that.
[/quote]Yep, I’m probably going to be doing the same in my initial pass. I’ve not decided on a language just yet. I’ll be sure to post anything nodish. Sails.js is lookin’ pretty rockin.
[/quote]I normally hate frameworks (I want to know everything lol), but that looks very nice.
-
[quote name=“zerodrama” post=“41368” timestamp=“1386460296”]
I’m gonna experiment with soft-reorgs here. If it works we can expand it to end 51% attacks. This would allow a safe environment for large and small currencies unencumbered by the philosophies of big players or unreasonable devs (ONE TROO COIN).
[/quote]So, this could mean an end to ACP?
-
[quote name=“Tuck Fheman” post=“41383” timestamp=“1386463986”]
[quote author=zerodrama link=topic=5558.msg41368#msg41368 date=1386460296]I’m gonna experiment with soft-reorgs here. If it works we can expand it to end 51% attacks. This would allow a safe environment for large and small currencies unencumbered by the philosophies of big players or unreasonable devs (ONE TROO COIN).
[/quote]So, this could mean an end to ACP?
[/quote]The danger from 51% comes from two places:
1. 2 options - accepted or rejected - this gives us the > 50% value. FIX: create partial transactions, leading to more options, which will then require n-1/n of the network to override given n options.
2. no barrier once you cross the threshold - this means reorgs are free. FIX: make reorgs cost processing power#1 is a logical puzzle and will take some sideways thinking
#2 can be implemented as a feature and generalizedACP is a crutch. It will be removed eventually.
There are a couple more subtle reasons. But we’ll leave those for later.
-
And now for something completely different…
-
Ok, Payload op-codes are in, Meta-data op codes are up next. Also ZD’s organizational changes to op-codes has been implemented. 0 is Payload, 1 is Meta-data, and F is sequencing.
Anyone else have any other op-codes they would like to see?
-
[quote name=“Kevlar” post=“41442” timestamp=“1386475508”]
Ok, Payload op-codes are in, Meta-data op codes are up next. Also ZD’s organizational changes to op-codes has been implemented. 0 is Payload, 1 is Meta-data, and F is sequencing.Anyone else have any other op-codes they would like to see?
[/quote]Suhweet. :)
-
[quote name=“Kevlar” post=“41442” timestamp=“1386475508”]
Anyone else have any other op-codes they would like to see?
[/quote]be gentle, I have no clue what’s possible or already handled by something else but …
If there will exist categories, will they be handled via the keywords?
(source file) File type.
(source file) File size.
A few “Arbitrary user-defined meta-data” to be used as users please. Possibly to cover the three above.Edit : What about the ability to make these private? Sure the source file can be encrypted, but what about allowing entries to be private (password protected or otherwise) or the ability to designate who the source files are made available to be it individuals or a group or a continent, etc.
-
I’ll take #2 for Flux. I’ll play with some kind of module registration steps but we are go. o/.
-
[quote name=“Tuck Fheman” post=“41448” timestamp=“1386477154”]
[quote author=Kevlar link=topic=5558.msg41442#msg41442 date=1386475508]
Anyone else have any other op-codes they would like to see?
[/quote]be gentle, I have no clue what’s possible or already handled by something else but …
If there will exist categories, will they be handled via the keywords?
(source file) File type.
(source file) File size.
A few “Arbitrary user-defined meta-data” to be used as users please. Possibly to cover the three above.
[/quote]I’m not completely against that, but file type is discoverable from format in the beginning of the file. File size sounds like an important one tho.
Keep in mind, we can use modules now and modules can replace each other except 0 and F. 1 is a feature of Link so required for full Link, but it’s not as critical as the core and sequencing.Think of it like mix and match modules in the same blockchain for custom applications without the 80+ odd coin.
-
Kevlar, I think you did it better. With the exception of 0 and F, the 2nd byte F is the only one that needs to be explicitly describing the module itself.
So now there’s 15 OpCodes for each module.0 is the core, F keeps it tied together, 1 is for users. I claim 2 (20 - 2F) for FLUX.
EGGCELENTE.
-
There’s no one else doing this lol. I love it. They’ll be cloning us soon.
-
Kevlar, I forked the suppository. I’ll be working on Modules.md and modules/FLUX/README.md. Goosebumps.