[ANN] Link - The Blockchain File Sharing Protocol
-
[quote name=“Tuck Fheman” post=“43667” timestamp=“1386903389”]
[quote author=Kevlar link=topic=5558.msg43644#msg43644 date=1386898249]
I kinda doubt it, but maybe. It’s very interesting to note how a solution for this particular problem is in crazy-high demand right now. I guess we’re doing something right, and this is validation of that.
[/quote]I was listening to the creator of “Proof of Existence” and he mentions that there is a better way to do what he’s doing (link below). I’m assuming what you have here (Link) is along the same lines as his program (PoE) in they both leave unspendable outputs(?). If that’s the case, as they ask in the discussion, how can you prove it’s unspendable?
If this has nothing to do with the way Link handles things, just brush this question aside.
[url=http://youtu.be/6YHiuZeWyrE?t=8m11s]http://youtu.be/6YHiuZeWyrE?t=8m11s[/url]
[/quote]That’s correct.
The short answer to your question is: You can’t. It’s just an assumption that I’m making.
The long answer is a little more involved.
Link works by encoding data into the public key, and then spending an output to it. Link encoded addresses are unspendable because it’s not generated by deriving the public key from a private one, it’s generated from the data you encode, which has absolutely no relation to any private key.
Public keys are derived from private keys. It’s mathematically trivial to generate the corresponding public key from the private key. Going the other way is theoretically possible, but the only known method is brute force, which means you’d have to search the keyspace for the answer. Remember a little while back directory.io made waves because it was a website that had every single private key, ever? Well, in fact the private key to every possible Link encoding is on that website, but it’s impossible to know ahead of time which one it is, so you would have to try every single one. As I back-of-the-napkined earlier, if you had a computer that was trying 999 trillion (that’s with a t, not a b or an m) keys every second, you’d exhaust 50% of the keyspace in 4.5 billion (with a b) years, which means that you’d have a 50% chance of having found the solution in that time. To bring that number back home, my laptop can search about 1,000 keys a second.
The theory behind Link’s unspendability is that given an encoding of some arbitrary data, the likelyhood of someone having the corresponding private key is exactly the same as ANY OTHER key. Since the public key isn’t being derived from a private one, but instead formed of the data that’s being encoded in the blockchain, the corresponding private key is as likely to show up as someone randomly generating the corresponding private key for someone else coins… and that number will blow your mind: 2^256. That’s a little larger than a 1 followed by 77 zeroes. The number of private keys that are possible is greater than the number of grains of sand on the earth. If every single grain of sand on the earth was another earth, the number of keys is greater than all the grains of sand on all the earths. Here’s another way of thinking about it: If every human that was ever born to date had been around since the start of the 1900’s, and every cell in their collective bodies was each checking keys at a rate of 10 keys a second, it would take over 300 trillion years more to reach just 10%.
Link relies on the same theory that your randomly generated key is as unspendable to me as any other private key I don’t have. If that assumption proves false, then Bitcoin is worth 0 dollars and 0 cents, because that means anyone could spend anyone’s money. If the Link unspendability assumption fails, then the Bitcoin assumption fails, and we can all go home and reminisce about the time when we fooled ourselves into thinking technology was cool.
As a scientist and mathematician, I’m quite comfortable putting my entire wealth’s safe keeping behind this assumption. I sleep at night just fine knowing my coins aren’t going anywhere without my permission… and my private key. If that assumption is true, then the assumption that Link outputs are unspendable is equally true.
-
[quote name=“Kevlar” post=“43670” timestamp=“1386906745”]
[quote author=Tuck Fheman link=topic=5558.msg43667#msg43667 date=1386903389]
[quote author=Kevlar link=topic=5558.msg43644#msg43644 date=1386898249]
I kinda doubt it, but maybe. It’s very interesting to note how a solution for this particular problem is in crazy-high demand right now. I guess we’re doing something right, and this is validation of that.
[/quote]I was listening to the creator of “Proof of Existence” and he mentions that there is a better way to do what he’s doing (link below). I’m assuming what you have here (Link) is along the same lines as his program (PoE) in they both leave unspendable outputs(?). If that’s the case, as they ask in the discussion, how can you prove it’s unspendable?
If this has nothing to do with the way Link handles things, just brush this question aside.
[url=http://youtu.be/6YHiuZeWyrE?t=8m11s]http://youtu.be/6YHiuZeWyrE?t=8m11s[/url]
[/quote]That’s correct.
The short answer to your question is: You can’t. It’s just an assumption that I’m making.
The long answer is a little more involved.
Link works by encoding data into the public key, and then spending an output to it. Link encoded addresses are unspendable because it’s not generated by deriving the public key from a private one, it’s generated from the data you encode, which has absolutely no relation to any private key.
…
The theory behind Link’s unspendability is that given an encoding of some arbitrary data, the likelyhood of someone having the corresponding private key is exactly the same as ANY OTHER key.
[/quote]I’m getting ideas. :)
-
[img]https://i.chzbgr.com/maxW500/7952788224/hA4452822/[/img]
Don’t mean to be off topic but I finally got around to it. =^-^=
-
[quote name=“Kevlar” post=“43670” timestamp=“1386906745”]
Link works by …
[/quote]k, thanks for explaining that!
-
[quote name=“Kevlar” post=“40832” timestamp=“1386378867”]
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!
[/quote]
This looks very good! I’ll get on it, because I hate the long sync times. Well, I hope you accept pull requests! :) -
[quote name=“algo160” post=“44118” timestamp=“1387002802”]
[quote author=Kevlar link=topic=5558.msg40832#msg40832 date=1386378867]
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!
[/quote]
This looks very good! I’ll get on it, because I hate the long sync times. Well, I hope you accept pull requests! :)
[/quote]I do! Let me commit the latest changes… Ok! And it’s up in github and npm. You can get started by typing ‘npm install blockchain-link’. Or get the source from Github.
Looking forward to your commits!
-
[quote name=“Kevlar” post=“44128” timestamp=“1387004871”]
[quote author=algo160 link=topic=5558.msg44118#msg44118 date=1387002802]
[quote author=Kevlar link=topic=5558.msg40832#msg40832 date=1386378867]
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: [url=https://github.com/TSavo/Link/blob/master/README.md]https://github.com/TSavo/Link/blob/master/README.md[/url]
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!
[/quote]
This looks very good! I’ll get on it, because I hate the long sync times. Well, I hope you accept pull requests! :)
[/quote]I do! Let me commit the latest changes… Ok! And it’s up in github and npm. You can get started by typing ‘npm install blockchain-link’. Or get the source from Github.
Looking forward to your commits!
[/quote]Got a few coming soon. Mind if I move things around to doc/ module/ tool/ and lib/ folders?
-
[quote name=“zerodrama” post=“44900” timestamp=“1387180804”]
[quote author=Kevlar link=topic=5558.msg44128#msg44128 date=1387004871]
[quote author=algo160 link=topic=5558.msg44118#msg44118 date=1387002802]
[quote author=Kevlar link=topic=5558.msg40832#msg40832 date=1386378867]
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: [url=https://github.com/TSavo/Link/blob/master/README.md]https://github.com/TSavo/Link/blob/master/README.md[/url]
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!
[/quote]
This looks very good! I’ll get on it, because I hate the long sync times. Well, I hope you accept pull requests! :)
[/quote]I do! Let me commit the latest changes… Ok! And it’s up in github and npm. You can get started by typing ‘npm install blockchain-link’. Or get the source from Github.
Looking forward to your commits!
[/quote]Got a few coming soon. Mind if I move things around to doc/ module/ tool/ and lib/ folders?
[/quote]There’s already a lib/, it’s where compiled code goes as per the node convention. doc/ module/ and tool/ sound great.
-
[quote name=“zerodrama” post=“44900” timestamp=“1387180804”]
[quote author=Kevlar link=topic=5558.msg44128#msg44128 date=1387004871]
Looking forward to your commits!
[/quote]Got a few coming soon. Mind if I move things around to doc/ module/ tool/ and lib/ folders?
[/quote]In the latest version of the library all the event handlers are treated as asynchronus data pipes to which data is fed, as opposed to callbacks to which results are returned. That means that when doing:
[code]
db.search “mySearchString”, (result)->
[/code]The callback may be called multiple times, once with each result… or not at all with no results. Previously this would be called once with all results or an empty array.
This allows for asynchronous operation on the client side as well, which has been implemented for search, and will soon be done for publishing.
ZD: Any update on those commits?
-
[quote name=“Kevlar” post=“45915” timestamp=“1387397322”]
ZD: Any update on those commits?
[/quote]Yeah. Trying to figure out how to represent exchanges as a mining operation. I’ll get it later tonight.
-
We’re on schedule too!!
Today I got a Backbone.js router in place so deep linking works. Looks REAL good. Still waiting on CSS for search results, but it won’t be long now.
I’ll do another video update this weekend to show it off.
-
Hello Kevlar
Thank you for all your hard work. I don’t have a clue what you are doing. I hope to understand more as your work
gets the rave reviews around the crypto world and here on the Feathercoin site.
Sent 5 Feathercoin your way for assisting you in a small way. If everyone here would give you 5, that would be add up I am sure. Knowing of course, that others have given much much more. As you move ahead in your work, I will donate more to the cause. This is my second send out of my wallet, since I have updated my wallet.
I am more than willing to donate along the way from time to time, to keep the good people here that really does the heavy lifting for those of us that love Feathercoin.
Thank you again
fkimbe -
I put Kevlar in the blockchain (well, sort of). :)
-
Great work, I didn’t think I could fit anything else in my brain. I managed one last waffer thin Kevlar mint…
-
hehe…
Just one last waffer!
*boom!*
-
I have been trying to figure out exactly what this is all about, but can’t help but come to the conclusion that this is a bad idea. NMC as far as I know acts as a general data store in a similar fashion, but why should any blockchain be polluted with the idea of p2p file sharing? Why not just create a complementary service that allows one to exchange space in this “permanent” blob of data and reward those willing to host and serve out this ever growing dirty snowball of who knows what?
Maybe I don’t understand this idea, but while I think it’d be interesting to marry the idea of an immortal blockchain for data, I just don’t think FTC would benefit from this at all. And why would one want to destroy coins again for this purpose? I would appreciate some clearer explanation of what exactly this is all about. Thanks!
-
[quote name=“estrabd” post=“55971” timestamp=“1391053574”]
I have been trying to figure out exactly what this is all about, but can’t help but come to the conclusion that this is a bad idea. NMC as far as I know acts as a general data store in a similar fashion, but why should any blockchain be polluted with the idea of p2p file sharing? Why not just create a complementary service that allows one to exchange space in this “permanent” blob of data and reward those willing to host and serve out this ever growing dirty snowball of who knows what?Maybe I don’t understand this idea, but while I think it’d be interesting to marry the idea of an immortal blockchain for data, I just don’t think FTC would benefit from this at all. And why would one want to destroy coins again for this purpose? I would appreciate some clearer explanation of what exactly this is all about. Thanks!
[/quote]it’s not file sharing.
file sharing is the easiest example to understand.
the blockchain is not money.
it’s a record of unforgeable events.
the address space is not accounts.
it’s a space of identifiable assets.there is no pollution.
the addresses can’t contain that much data anyway.it’s an application over a distributed index.
money was the first app.
links to things is the next one.we’re not storing files.
we are preventing references from being deleted.the real problem is the data portion of the blockchain was only envisioned to contain money.
the blockchain can do a hell of a lot more.also namecoin has a rigid structure that is difficult to adapt to radical ideas.
-
Alright, I’m ready to take another dive on doing something with LINK. Feedback is always great, which is why I’m posting.
-First, another coin implementation. After no communication from the MoonCoin staff for, well, now months, I’m abandoning them. I will now be focusing on Fedoracoin for this and will not be communicating with the staff at all. If the ability gets yoinked, it gets yoinked. With the flood of coins out there, though, I don’t want to start a new one. I’m a realist; I see a future for a hundred different coins according to niche and region need, I certainly don’t think one I copypasta from someone’s readme will be one of them.
-I will be altering the code from IDigDoge. One should be able to mine a FedoraCoin or two from CPU power only for submissions. Right now the payout process isn’t automated, it’s manual and it’s dependent on email. I’m going to investigate how frustrating it will be to create an account on the site that autogenerates a wallet that is deposited into and can be withdrawn from there to a personal wallet or the LINK payment address for a pending submission with a button press as opposed to copypastaing the addresses and amounts for submission.
-Here’s where it gets shady. Instead of relying on a pool that already exists that will be very confused about so much hash coming from so many locations into one account (something IDigDoge is dependent on), I plan on building my own pool instead of risking them going “lol noep” and blacklisting the service. The biggest reason for this, too, is to force the lone client to divy up the percentage payout. 10% to go to a buffer for when things go wrong and to fund a faucet directly on the site, 15% to payout to me because dammit, that’s the point. Will fluctuate or eliminate based on purchase referrals to who I have a VPN sales commission agreement with.
I presume my non-SSH capable shared hosting will poop a brick by trying to implement any of this on it. I’ve got an AWS account ready to go, I’ve got at least one micro instance running a different project, don’t know what my needs will be for the above so will look into it.
Um. Destroy it. Poke holes in it. Go.
-
-First, another coin implementation. After no communication from the MoonCoin staff for, well, now months, I’m abandoning them. I will now be focusing on Fedoracoin for this and will not be communicating with the staff at all. If the ability gets yoinked, it gets yoinked. With the flood of coins out there, though, I don’t want to start a new one. I’m a realist; I see a future for a hundred different coins according to niche and region need, I certainly don’t think one I copypasta from someone’s readme will be one of them.
I did this; abandoned MoonCoin, communicated with Fedoracoin devs, more than happy to provide feedback and help.
I may return to MoonCoin as a side because their devs are nonexistent but still have a community of sorts. Without their devs to get in my way, I can do as I please. In the meantime, though, Fedoracoin for this.
-I will be altering the code from IDigDoge. One should be able to mine a FedoraCoin or two from CPU power only for submissions. Right now the payout process isn’t automated, it’s manual and it’s dependent on email. I’m going to investigate how frustrating it will be to create an account on the site that autogenerates a wallet that is deposited into and can be withdrawn from there to a personal wallet or the LINK payment address for a pending submission with a button press as opposed to copypastaing the addresses and amounts for submission.
I’ve accomplished this:
http://tippingintensifies.com/
Still work to be done on it, but the heavy lifting is done.
-Here’s where it gets shady. Instead of relying on a pool that already exists that will be very confused about so much hash coming from so many locations into one account (something IDigDoge is dependent on), I plan on building my own pool instead of risking them going “lol noep” and blacklisting the service. The biggest reason for this, too, is to force the lone client to divy up the percentage payout. 10% to go to a buffer for when things go wrong and to fund a faucet directly on the site, 15% to payout to me because dammit, that’s the point. Will fluctuate or eliminate based on purchase referrals to who I have a VPN sales commission agreement with.
Ditched making my own pool and worrying about percentages. Right now on the site I have a 0% take which may change in the future or may not depending on how much gets plowed through payment processes instead of kept.
I got with a pool that acknowledges what I’m doing and says they won’t shut me down. Chickenstrips.net. They’ve been really cool.
I presume my non-SSH capable shared hosting will poop a brick by trying to implement any of this on it. I’ve got an AWS account ready to go, I’ve got at least one micro instance running a different project, don’t know what my needs will be for the above so will look into it.
It did poop a brick. AWS got ridiculously expensive, I went back to DigitalOcean. Been running mostly trouble free on it.
Um. Destroy it. Poke holes in it. Go.
YOUR INABILITY TO THRASH ME HAS BEEN A DISMAL FAILURE
Nah, really, it’s not necessary since I’m doing it anyway.
Long of the short of it, though, is anyone still in contact with Kevlar? He’s not answering my emails.
-
Thanks for the update always an interesting view on the projects status and progression.
As for kevlar he did pop in on April 1st for the prank but I’ve not seen him since. :(