[ANN] Link - The Blockchain File Sharing Protocol
-
[quote name=“zerodrama” post=“42755” timestamp=“1386715047”]
[quote author=Kevlar link=topic=5558.msg42724#msg42724 date=1386711867]
Well, I’d like to think I have some idea of the direction this can go. By layering a protocol on top of the blockchain, the blockchain as an abstract concept becomes a concrete platform for launching new technologies. The current attempt I’m working on aims to transform every coin out there, present and future, into a content delivery mechanism for data, a searchable index for meta-data, a record of account for anything (not just currency), but it does so by literally transforming the blockchain into programmable framework that can be freely modified and adapted to whatever the user desires. The directions it can be taken from there are limited by imagination… how would you like to reprogram your blockchain today?
[/quote]What Kevlar said, squared.
I’ve got a few insane ideas: like tracking limited time currencies, meta transactions representing transactions in microchains, tracking everything from post office shipments to genetic programming for software, to genetic experiments with cake recipes.
Kevlar, you opened up a shitstorm.
[/quote]Yo, dawg! I hear you like blockchains… so I embedded a blockchain in your blockchain, so you can meta while you meta!
-
Kevlar,
Awesome work. I’m very excited for this project.
If you need help with designing the UI, let me know! -
[quote name=“Kevlar” post=“42776” timestamp=“1386717642”]
Yo, dawg! I hear you like blockchains… so I embedded a blockchain in your blockchain, so you can meta while you meta!
[/quote]XD
Permission to make this into a meme.
-
[quote name=“mnstrcck” post=“42864” timestamp=“1386742285”]
Kevlar,Awesome work. I’m very excited for this project.
If you need help with designing the UI, let me know!
[/quote][quote author=Calem link=topic=5558.msg42869#msg42869 date=1386742918]
Permission to make this into a meme.
[/quote]I do, and I will. You’ll be the first on my list!
[quote author=Calem link=topic=5558.msg42869#msg42869 date=1386742918]
[quote author=Kevlar link=topic=5558.msg42776#msg42776 date=1386717642]
Yo, dawg! I hear you like blockchains… so I embedded a blockchain in your blockchain, so you can meta while you meta!
[/quote]XD
Permission to make this into a meme.
[/quote]Permission granted!
-
So I spent the evening changing over the code to coffeescript. LOVE that language. So much easier to read and write. All the work is up on git. ‘npm install -g coffee-script’ to get going. I’ve still not gotten to read Modules.md from ZD, but I will tomorrow.
I’ve gotten about half of the encoder/decoder up to the spec. It’s doing SHA256 correctly on payloads, and payload attachments are returned as buffers on the decoder. The encoding and decoding functions are in place, the op codes are in, but the encoder doesn’t encode everything yet, and decoder objects don’t yet support all the opcodes that can be encoded.
I still need to move all of this to a library that exports so other people can use it. That and make it an NPM module.
I found node-bitcoin for talking to the QT feathercoin client, going to use that. ‘npm install bitcoin’.
The plan is to make the QT client make the raw transactions, so all that remains is to get the unspent outputs and do the math on what’s being sent and make the change accordingly. Shouldn’t be terrible, but I won’t get to it until the weekend, because I’m trying to get the encoder/decoder all up to the spec and get it into a proper node library/npm package.
Progress is steady. Every night I get a little more done. Hopefully by tomorrow the encoder/decoder will be at 80% so I can move on to transaction building over the weekend. Onward and upward.
-
[quote name=“Kevlar” post=“42924” timestamp=“1386754878”]
Progress is steady. Every night I get a little more done. Hopefully by tomorrow the encoder/decoder will be at 80% so I can move on to transaction building over the weekend. Onward and upward.
[/quote]Thanks for doing this for everyone in the world Kevlar!
-
[quote name=“Tuck Fheman” post=“43168” timestamp=“1386795518”]
[quote author=Kevlar link=topic=5558.msg42924#msg42924 date=1386754878]
Progress is steady. Every night I get a little more done. Hopefully by tomorrow the encoder/decoder will be at 80% so I can move on to transaction building over the weekend. Onward and upward.
[/quote]Thanks for doing this for everyone in the world Kevlar!
[/quote]Here here!
-
[url=http://torrentfreak.com/pirate-bay-docks-in-peru-new-system-will-make-domains-irrelevant-131212/]http://torrentfreak.com/pirate-bay-docks-in-peru-new-system-will-make-domains-irrelevant-131212/[/url]
Think they’re monitoring the work?
-
[quote name=“HopeStillFlies” post=“43641” timestamp=“1386897476”]
[url=http://torrentfreak.com/pirate-bay-docks-in-peru-new-system-will-make-domains-irrelevant-131212/]http://torrentfreak.com/pirate-bay-docks-in-peru-new-system-will-make-domains-irrelevant-131212/[/url]Think they’re monitoring the work?
[/quote]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 name=“Kevlar” post=“43644” timestamp=“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]
-
Link is PoE * over 9000.
With multiple links, you can have Proof of Evidence or Research which would could invalidate bullshit patents.
-
[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?