[ANN] Link - The Blockchain File Sharing Protocol
-
I’ve decided to do this. Feathercoin will be the first blockchain I write it for, but there’s no reason it can’t be adapted to other blockchains.
Github is here: https://github.com/TSavo/Link/blob/master/README.md
Link is a protocol designed to allow publishing of data and associated meta-data to the public in such a way that it cannot be censored or destroyed. It works on top of existing blockchain protocols to store it’s data by embedding the information in the blockchain itself.
The protocol itself will be blockchain agnostic and allow for arbitrarily large metadata to be stored in the blockchain. Messages can be virtually unlimited in length, and are protected against spamming because they require coins to be destroyed in the process of publishing the message, making larger messages more expensive to send.
I’ll be writing the specification in the gihub.com repository. I’m also going to have the first pass at a reference client. The client will have a search feature which will allow you to read an existing blockchain on disk, index the blockchain’s Link metadata, search it, and use protocol handlers to launch any linked information at the user’s discretion.
I’d love to hear any comments, ideas, discussions, screams of agony, or suggestions! Let the Linking begin!
-
Weeeee!
(From original thread [url=http://forum.feathercoin.com/index.php/topic,5528.0.html]http://forum.feathercoin.com/index.php/topic,5528.0.html[/url])
Mining for publishing (on the blockchain) rights. Sounds good.
Off on another tangent … why do we have to have external marketplaces to sell things with crypto?
Why can’t a blockchain exist as a huge marketplace and users shop via the client (using a search of the blockchain for specific items/topics). Load up the client, type in “music”, find a song, send xx BTC/LTC/FTC (whatever it requires) to address, receive song, ebook, movie once transaction is confirmed … all automatically. Why do we need an escrow service? If the money is received and verified in the blockchain then and only then is the file sent to the user and once it’s received and verified by the blockchain we’re all good.
Or am I way off here on the capabilities available?
And it looks like we’re on the same page here with the searchable index, nice.
-
This sounds really interesting, however… If you allow people to link ‘illegal’ ala CP, would that not be a reason for a government to target the block chain idea?
-
[quote name=“Vidicus” post=“40842” timestamp=“1386380735”]
This sounds really interesting, however… If you allow people to link ‘illegal’ ala CP, would that not be a reason for a government to target the block chain idea?
[/quote]There’s no “allow”, once it’s done it’s done. So the thinking process for what to do to “break” the system and then find ways to prevent it would be advisable.Unless everyone wants to make a massive free speech statement by forcing the protocol through Tor and let God sort 'em all out.
-
[quote name=“HopeStillFlies” post=“40846” timestamp=“1386381760”]
[quote author=Vidicus link=topic=5558.msg40842#msg40842 date=1386380735]
This sounds really interesting, however… If you allow people to link ‘illegal’ ala CP, would that not be a reason for a government to target the block chain idea?
[/quote]There’s no “allow”, once it’s done it’s done. So the thinking process for what to do to “break” the system and then find ways to prevent it would be advisable.Unless everyone wants to make a massive free speech statement by forcing the protocol through Tor and let God sort 'em all out.
[/quote]
Yes, I agree. I apologize for playing the devil’s advocate but I really like this idea and do not want it to be hindered by what the ‘baddies’ will do with it. That being said, Is there any possible way to ‘undo’ a data entry in the blockchain? Should such a protocol be adopted? -
[quote name=“Vidicus” post=“40852” timestamp=“1386382797”]
That being said, Is there any possible way to ‘undo’ a data entry in the blockchain? Should such a protocol be adopted?
[/quote]Do you work for … [url=https://coinvalidation.com]https://coinvalidation.com[/url]? ;)
-
[quote name=“Vidicus” post=“40852” timestamp=“1386382797”]
Yes, I agree. I apologize for playing the devil’s advocate -
[/quote]Don’t. That’s the entire basis of my desire for wanting to find things wrong with it. So that they can be addressed. -
[quote name=“Vidicus” post=“40852” timestamp=“1386382797”]
That being said, Is there any possible way to ‘undo’ a data entry in the blockchain? Should such a protocol be adopted?
[/quote]Being able to undo is a bit of a can of worms - it would be a form of centralization.
I think the fact that entries “cost” - that would be an incentive to not submit something without first thinking about it.
I like Namecoin’s use of high fees at start to prevent early abuse.
What I really like about this is that it’s a very secure method of sharing knowledge without fear of censorship or repercussions [this goes both ways of course]. KnowledgeCoin or OpenCoin or something like that might actually be a better name. It has so many uses to: Links to torrent magnets, manifesto uploads, images can be shared in textual formats [base64], but I think the biggest thing that it offers is that it can be used as a messaging tool. You could actually LEAK documents on there. Wikileaks controls these things, but imagine someone being able to download a client and directly input something to the blockchain.
Users can create tags/keywords [like hashtags] to put things up and make things easy to search for.
Which brings me to the search function:
If a “green” - “red” / like - dislike function can be added that users vote on entries in the blockchain with - which then gets added to the it as a sort of transaction we could provide for the ability to use the search function as a means of seeing what’s POPULAR in the last few blocks. And, of course, it can be used to further thwart abuse as users can choose to filter things. Limitations on “transactions” like this can be placed - or a fee instituted so voting also costs money. But it never removes anything - it’s all user specific - just sort of meta-data to show what’s popular.
Not sure how this would work out technically.
Anyway, this is really cool. It’s like Reddit 4.0 - or Tor 2.0
More Thoughts:
Legally, having the entire blockchain downloaded can result in issues with content contained within. Security and anonymity should be a key concern. How would this be solved?
-
this will amount to something good…i like
-
I’ll be honest. I’m salivating over what I think is a good idea. I wish I had something to contribute to this idea, but I am not technical.
-
[quote name=“mnstrcck” post=“40862” timestamp=“1386383755”]
Legally, having the entire blockchain downloaded can result in issues with content contained within. Security and anonymity should be a key concern. How would this be solved?
[/quote]Speaking as someone who instead would want it to be used as a disruption tool, security and anonymity is super important but at the same time I do want a technology that is so powerful and persuasive enough that governments simply are forced to give up trying to shape laws to deal with it.Force all content to have a unique public PGP key? People trading and using private keys will be 3rd party from the project on forums and communities not affiliated with the project.
-
[quote name=“mnstrcck” post=“40862” timestamp=“1386383755”]
KnowledgeCoin or OpenCoin or something like that might actually be a better name. It has so many uses to: [b]Links[/b] to torrent magnets, manifesto uploads, images can be shared in textual formats [base64],
[/quote]
I think “Link” is a great name, especially because it describes exactly what it is. [i][b]Linkster[/b][/i], lulz.
[quote author=mnstrcck link=topic=5558.msg40862#msg40862 date=1386383755]
Which brings me to the search function:If a “green” - “red” / like - dislike function can be added that users vote on entries in the blockchain with - which then gets added to the it as a sort of transaction we could provide for the ability to use the search function as a means of seeing what’s POPULAR in the last few blocks. And, of course, it can be used to further thwart abuse as users can choose to filter things. Limitations on “transactions” like this can be placed - or a fee instituted so voting also costs money. But it never removes anything - it’s all user specific - just sort of meta-data to show what’s popular.
[/quote]
Great idea!
Also, nodes could carry specific information perhaps or choose which to carry (like a library), which I believe (this ability) is built into the bitcoin blockchain as per a LTB discussion recently. So a node could specialize in certain links (music/ebook/data/images/video/information/etc) and only download those they subscribe to … like a newsreader on Usenet.
-
[quote name=“mnstrcck” post=“40862” timestamp=“1386383755”]
Users can create tags/keywords [like hashtags] to put things up and make things easy to search for.
[/quote]That feature will actually be built into the protocol. :)
[quote]
Which brings me to the search function:If a “green” - “red” / like - dislike function can be added that users vote on entries in the blockchain with - which then gets added to the it as a sort of transaction we could provide for the ability to use the search function as a means of seeing what’s POPULAR in the last few blocks. And, of course, it can be used to further thwart abuse as users can choose to filter things. Limitations on “transactions” like this can be placed - or a fee instituted so voting also costs money. But it never removes anything - it’s all user specific - just sort of meta-data to show what’s popular.
[/quote]That’s something I hadn’t considered adding to the protocol, but there’s no reason it couldn’t be added at a later date! I’m going to start with the basic search result + keywords, and then we can move onto other meta-data support.
[quote]
Not sure how this would work out technically.
[/quote]It’s trivial to do fortunately, albeit pretty expensive for the user.
[quote]
Legally, having the entire blockchain downloaded can result in issues with content contained within. Security and anonymity should be a key concern. How would this be solved?
[/quote]With encryption of course. That’s what Tor is for. This is already an issue with the Bitcoin blockchain as there’s already copyrighted content encoded in it, so adding this won’t change anything about that situation.
-
First let’s discuss file sharing:
We cannot have a bloated blockchain for file sharing. Filesharing blocks have to expire or be reusable in some way. The filesharing blocks should simply be references that improve finding chunks of data. There was once a filesharing system OFFSystem, a brightnet. People send random strings that contain zero information until combined with other random strings to produce the data. There is no way to say who has any data until it is combined. No one knows what you have and no one can sue.Seems like a good starting point.
To Tuck regarding exchanges:
I’d like to jump on this with a concept: FLUXchannel
We all know how difficulty works. Get a certain minimum of 0s and you get your reward. But this means 0s from the beginning of the binary representation. 000000blah works. blah000000blah does not. Pools reject hashes which have the same probability but happen to be shifted by a few bits. We should use these for other purposes. This approach beats Mastercoin and Coin Coloring. Both suffer from bloat effects.I have been thinking about my earlier exchange idea. And it occurred to me file sharing is a kind of exchange. You get data as long as you’re seeding. Up until now we have had big forums that spend all day arguing about who is leeching and who is contributing and it’s frankly sad to watch. Suppose there were some steps to converting the rejected hashes into coins and people could devote some hashes to someone else’s mining for contributing data. At the end of the work all that remains in the blockchain is the coins with little or no trace of the data or work exchange.
Mining levels: These levels represent different levels of reward
0 - Confirmation mining
a. too low = fail to receive reward.
b. high hash = receive reward1 - Exchange mining
a. rotating someone else’s failed hashes based on whether they are delivering on promises. the incentive is for contributors to be able to trade the level 1 reward based on item and value for actual FTC
b. rotating hashes the other way based on failure to deliver or extension of work. the incentive is for contributors to recover uncommitted funds.2 - Work mining
a. splitting 0 strings in hashes and rotating a portion which cannot be retracted when it completes. this would be used to pay someone in installments.
b. combining 0 strings in hashes to guarantee a minimum payment. this would be used to make sure that if a payment is transmitted for partial work or sale it cannot be recalled once it arrives.3 - Conversion mining
a. broadcasting high difficulty hashwork to other chains for trade. if you hit a high difficulty hash you can send that across chains and receive a larger reward.
b. broadcasting low difficulty hashwork to other chains for trade. if you hit a low difficulty hash you can still get paid for the work by having it approved on a different network.Each level higher requires some of the lower level interactions. It will also require cryptocoiners to agree on a value (work not price) negotiation scheme. 200 FTC at a high difficulty is the same as 50 FTC reward at low difficulty.
How does this apply to file sharing?
As I mentioned with OFFSystem you have random blocks that are put together. The number of combinations increase geometrically.With 2 random blocks you can have a 3rd block.
3, 3 extra blocks.
4, 6 extra blocks.
5, 10
6, 15Now most of these results will be random as well, but with the rotations and such they can be converted into useful chunks of data. I would limit the coin work to rotations, but with filesharing we can add other operations to the rotations:
ROT - straight forward rotation
XOR - simple way to combine blocks to create other blocks
ADD - add the values with overflow remainder
REV - reverse subsection of bitsOne thing that comes to mind is common data, like schema and file format data will take up much less space.
-
There is something else that happens in the above scheme:
It allows low hashrate miners to get money back for someone who is getting ripped off. It’s easier for people to share hashes than it is to send money around. This would create a market where someone could not hold out in trading for content or work. It also turns hashes into something that may contain the information people are looking for even if no one can find missing pieces. -
[quote name=“zerodrama” post=“40876” timestamp=“1386385132”]
First let’s discuss file sharing:
We cannot have a bloated blockchain for file sharing. Filesharing blocks have to expire or be reusable in some way. The filesharing blocks should simply be references that improve finding chunks of data. There was once a filesharing system OFFSystem, a brightnet. People send random strings that contain zero information until combined with other random strings to produce the data. There is no way to say who has any data until it is combined. No one knows what you have and no one can sue.Seems like a good starting point.
[/quote]Yes it does. I’d never heard of a brightnet, but after reading shortly it sounds like a genius idea.
[quote author=zerodrama link=topic=5558.msg40876#msg40876 date=1386385132]
To Tuck regarding exchanges:
I’d like to jump on this with a concept: FLUXchannel
We all know how difficulty works. Get a certain minimum of 0s and you get your reward. But this means 0s from the beginning of the binary representation. 000000blah works. blah000000blah does not. Pools reject hashes which have the same probability but happen to be shifted by a few bits. We should use these for other purposes. This approach beats Mastercoin and Coin Coloring. Both suffer from bloat effects.
[/quote]I’ve never peeked behind the curtains of the great Pool Wizard, but if what you’re saying is valid it sounds like an excellent way for it to be handled.
[quote author=zerodrama link=topic=5558.msg40876#msg40876 date=1386385132]
Suppose there were some steps to converting the rejected hashes into coins and people could devote some hashes to someone else’s mining for contributing data. At the end of the work all that remains in the blockchain is the coins with little or no trace of the data or work exchange.
[/quote][Mind Blown.gif] (Technical forum adjustment)
-
Is there a GPU miner for this thang yet? All I’m getting are rejects!
Any pools or is it being premined as I type?
I don’t see any source code (Warning possible wallet stealer or Scam Coin!).
Is this scrypt?
What port do I use?
Any other nodes?
-
I am very interested in seeing this idea through, it could be one of the major talking points which takes us from “clone” to Feathercoin. I think having torrents embedded in the blockchain is a great first step, if we could get a website like TPB on board it could be huge!
Kevlar: Would this protocol have to be accessed via TOR?
PS. What is in the bitcoin block-chain which is copyrighted?
-
[quote name=“Vidicus” post=“41012” timestamp=“1386406659”]
I think having torrents embedded in the blockchain is a great first step, if we could get a website like TPB on board it could be huge!
[/quote]It would require a bit of resources to do, but it’s entirely possible to do it. Getting the index into the blockchain is easy. Having the coins to spend… a bit trickier.
You wouldn’t need them to do anything. It’s the type of project a clever kid with some python skills could whip up in an hour.
[quote]
Kevlar: Would this protocol have to be accessed via TOR?
[/quote]Nope, it just layers into the existing blockchain protocol. No changes to the blockchain required.
[quote]
PS. What is in the bitcoin block-chain which is copyrighted?
[/quote]Well I know someone embedded DeCSS in there, which is the famously copyrighted number. My buddy Dan Kaminsky did a bunch of work on this a while back.
-
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!