[ANN] Link - The Blockchain File Sharing Protocol
-
Ha! I did it.
Wrote up a program in Node that accepts the magnet link, name, and keywords, and generates the addresses. The code is in github here: https://github.com/TSavo/Link
You can even check them on blockchain.info, and see the link encoded message!
[code]
C:\NodeLink\NodeLink>node LinkAddressMaker.js
What is the magnet link? magnet:?xt=urn:btih:fbab636f9c91fb58038055dfce83cd8099a
7366e&dn=TPB+AFK%3A+The+Pirate+Bay+Away+from+Keyboard+%282013%29+720p+h264+581m
What is the name?TPB AFK: The Pirate Bay Away from Keyboard (2013) 720p h264 581
m
Keywords?TPB AFK,The Pirate Bay,Away From Keyboard,Simon Klose,Documentary,720p
17y2f5PYdSwFhzPTjPpMTVmZVTsttnpzk9
1B3qGjZ9SeqtuTcddSk5GHBry8BQnpRDWz
19xGyZ8rM6BxouZH6NDRVpJr4dkwrCfZ2M
16EPybUXLYBsUvPGCjNYdvPh8V5SnACDYY
16waq56MzXV8RKtA4x8XB34MLcJZHAEiTv
1C3gki8S17uBbE8WTnkKe1ciihEJvSphn9
15PpNfoKrEqwFoEPo8maqgUJM5Wfwe9vBe
1AwfpgH8E6c4K273EVsd4jNY7oheZybKZz
19tHysnPeZZuiXsxwBGxzuxsXzPEjWxBz9
1C4pgbr41jxhfWpVEkvHGSih5eRGUiWjDy
15aVij3HUiLfCwKz7mEroiFQbsYqkAUjKZ
1AWzRKnFNC6y5QLSngBMc4JDGM2AMbJAog
1BS5WuK3FynDCSjQpAwE2HAT9MwHmnCeGn
1AtMVTEx3eduyjRvAcUhok4Gsd3YjsZdGy
1BDCgV8ZgmTFz18ASzmhiJgXqbYuxPToBr
[/code]Try putting that first address into blockchain.info. Not only is it a valid address, but if you look at the hash160, you’ll see the Link protocol in action!
[code]
4c696e6b0100866d61676e65743a3f78743d7572
^^^^^^^^ Link Start sequence
^^ Inline payload op-code
^^^^ size
^^^^^^^^^^^^^^^^^^^^^ The magnet link (well, the first few bytes)
[/code]Ooooooooomg so exciting!
Ok, next up is to do it with Feathercoin addresses, and then to actually send the transaction using your donated coins.
But for that I need to know: What’s the Feathercoin version number? Bitcoin is 0x00 for mainnet. What’s FTC’s?
-
[img]http://whinybaby.files.wordpress.com/2013/04/mind-blown.jpg[/img]
+1 rep
and
110 ftc coming your way.[img]http://image.bayimg.com/2b719c8bc91b2374fe431bf2e7c73d60bcd26f47.jpg[/img]
[size=8pt]Sorry, tried to cut or hide or spoiler but I couldn’t figure out how. If someone can give me the BBcode, I’ll fix this… or simply just remove the screencap.[/size]
-
Ok, I spent a bunch of time cleaning up the code.
You can now do:
[code]
var sequence = new LinkSequenceBuilder();
sequence.addPayloadInline(magnet);
sequence.addName(name);
sequence.addKeywords(keywords);
var buf = new Buffer(sequence.toString(), “hex”);
var addresses = encodeAddresses(buf, 0x00);
for (x in addresses) {
console.log(addresses[x]);
}
[/code]Which I think is a whole lot cleaner than my first pass. Bushstar just got back to me with the version number for Feathercoin so I’m gonna give it a try here in just a few…
Edit: Tried it out in the code… looks pretty feathery to me!!!
[code]
C:\NodeLink\NodeLink>node LinkAddressMaker.js
What is the magnet link? aaaaaaaaaaaa
What is the name?aaaaaaaaaaaa
Keywords?aaaaaaaaaaaaaaa
6khUSbZaZtMv7czsXDqxWKgKTxofTBbtzY
6djhcj3jj1v97miAFqNZ97Vzdaqw1RCTQS
6ncLzEh3A1MJ3G7CkakETFdLwE3h93Aa1z
[/code]I’m going to give it a try… wish me luck!
-
[me=Calem]wishes Kevlar all the luck possible![/me]
-
So it ALMOST worked using the client.
Unfortunately the client stuck the change address in the middle of the sequence:
[url=http://ftc.cryptocoinexplorer.com/tx/cc66ef78c1bcfbaf2a691b3dda77847bc80350ad262f17af38f7950879ecaef2#o2]http://ftc.cryptocoinexplorer.com/tx/cc66ef78c1bcfbaf2a691b3dda77847bc80350ad262f17af38f7950879ecaef2#o2[/url]
Bummer. Owell, this simply means I’ll have to write my own client to do the sending so it always gets the sequence in the right order.
OMG I’m so excited that this almost worked. If you ignore that change send, you can see it totally did exactly what it was supposed to!!!
Tomorrow I’ll work on some code to reverse the process and read them back out of the blockchain. It’s pretty straightforward actually. ;D
-
Hi five!
I’ll be watching with anticipation. This seems to be the most awesome idea I’ve seen pitched for the use of the network to date.
100% Behind you Kevlar!
-
astonished :o
-
Can we use Pay to Script Hash for Link?
https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki
-
This is really sweet. I’m going to take a look at the spec tonight after work.
-
[quote name=“zerodrama” post=“42025” timestamp=“1386592639”]
Can we use Pay to Script Hash for Link?https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki
[/quote]Yes, we could, but I’m not sure what would be gained. It’s 20 bytes in the address, or it’s 20 bytes in the script. Since this doesn’t need to interoperate with the blockchain protocol, I feel pretty strongly that making it as simple and standard as possible is the way to go, unless there’s a really compelling reason to use p2sh. Can you think of one?
-
[quote name=“Kevlar” post=“42140” timestamp=“1386615479”]
[quote author=zerodrama link=topic=5558.msg42025#msg42025 date=1386592639]
Can we use Pay to Script Hash for Link?[url=https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki]https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki[/url]
[/quote]Yes, we could, but I’m not sure what would be gained. It’s 20 bytes in the address, or it’s 20 bytes in the script. Since this doesn’t need to interoperate with the blockchain protocol, I feel pretty strongly that making it as simple and standard as possible is the way to go, unless there’s a really compelling reason to use p2sh. Can you think of one?
[/quote]My brain instinctively goes meta like doge on crack. P2SH would keep that window open. We could use scripts to save some common searches, such as for translations of content that is in torrents. The torrent would be in one place and people could use different addresses to find parts they want.
Just a habit of mine of taking any constant assumption and making it a variable.
-
My head exploded like Calem trying to figure out how it works, but as the person on the sidelines,
very happy to watch this unfold.
[img]http://waybeyondthedream.files.wordpress.com/2013/01/happy_life_.jpg[/img] -
[quote name=“Nixxle” post=“42254” timestamp=“1386628616”]
My head exploded like Calem trying to figure out how it works, but as the person on the sidelines,
very happy to watch this unfold.
[/quote]I’m excited too! With all the donations I’ve received I’ve got all I need to make this really work. I expect that by sometime in January, I’ll have something automated that non-techie users can use. With the spec finished (enough to be usable) and the encoding code done, it’s time to do decoding, and then hook it up to the network. If I have the free time, I hope to have it done by this time next week, and then we can start on user interfaces for it! :)
BTW: Is that a pic of you? Or just some random person on the interweb?
-
[quote name=“Kevlar” post=“42265” timestamp=“1386629803”]
BTW: Is that a pic of you? Or just some random person on the interweb?
[/quote]Ha! Thats totally a pic off of google images under the search happy. I prefer to think of myself as grossly unphotogenic. For some reason that makes me feel fairly content. Like…I take a strange little joy in the idea that my face could break a camera.
[quote author=Kevlar link=topic=5558.msg42265#msg42265 date=1386629803]
I’m excited too! With all the donations I’ve received I’ve got all I need to make this really work. I expect that by sometime in January, I’ll have something automated that non-techie users can use. With the spec finished (enough to be usable) and the encoding code done, it’s time to do decoding, and then hook it up to the network. If I have the free time, I hope to have it done by this time next week, and then we can start on user interfaces for it! :)
[/quote]Its pretty awesome. I’m glad people have had coins to give. I’m too new to have successfully mined coins, but if I ever get to that point, I’'ll be happy to support this too. I’m especially happy for the interface for the people like me, and super happy y’all are using your expertise to do this. :)
-
[s]Hey Kevlar… Did you get that 110 ftc I tried to send?
My wallets sync’d but it’s still saying 0 of 6 confirms…
I’ve double checked the address and that’s fine.
I can’t see the deposit in the blockchain either.
Any idea what I’ve done wrong or am not seeing?[/s]
Never mind! Confirms going through now.
-
And… decoding works!
Here’s the output for you non techies with annotations.
[code]
***** First I enter in the test data *****
What is the magnet link? This is a test
What is the name?this is a bigger test
Keywords?This is to make sure we see no data loss
***** This results in a bunch of addresses for FTC *****
6khUSbZaZtSc6s2yRJQBY7q9E96oFjymCa
6pK8LVhU99pxqjUzXGudZfhaTuHkGSo2Mf
6gh3r1sVpquUNCCQE6vLotLuAX1d8tuQqq
6ncYz4mkS7pZHsXEwDEydR1Xb1tESfQ6zV
6ncjkJzuPg2TuZ2sdRspFwDBSKTRwCiwLs
***** I then take those addresses, and decode the Link Sequence embedded in them.
Presumably these would come from the blockchain itself. *****
4c696e6b01000e546869732069732061207465737410001574686973206973206120626967676572
20746573741200285468697320697320746f206d616b65207375726520776520736565206e6f2064
617461206c6f7373000e0e0e0e0e0e0e0e0e0e0e
***** I then run them through a parser. You can see each data marker being found in the stream *****
01
10
12
00
***** Finally I output the decoded data *****
This is a test
this is a bigger test
This is to make sure we see no data loss
[/code]This means round-trip publishing, AND reading back works!
Next up is to automate the task of putting it INTO and getting it OUT OF the blockchain. :)
-
Awesome awesome awesome!
-
So. Looks like the best way to publish is to create the raw transaction using the QT client JSON RPC.
I think that makes the most sense for now. That way people can run their own wallet and the Link software, and publish using the coins in their existing wallet. Later I’m sure people will write hosted web services for this where you can send your coins to publish things.
The raw transaction API is here: https://en.bitcoin.it/wiki/Raw_Transactions
I’ll work on it more tomorrow.
-
I know all I can provide is moral support, but you go rest man… Your doing something quite amazing indeed.
-
Module definition for Link is up. Kevlar, sent you a pull request. I’m going to add FLUX next. Let me know if anything is unclear.
Calem, srsly this is amazing what he’s set up. It has allowed me to get all my ideas organized. I can build on top of Link using the Link format and protocol.