Forum Home
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular

    [ANN] Link - The Blockchain File Sharing Protocol

    Technical Development
    19
    138
    72838
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kevlar Spammer last edited by

      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?

      1 Reply Last reply Reply Quote 0
      • ?
        A Former User last edited by

        [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]

        1 Reply Last reply Reply Quote 0
        • K
          Kevlar Spammer last edited by

          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!

          1 Reply Last reply Reply Quote 0
          • ?
            A Former User last edited by

            [me=Calem]wishes Kevlar all the luck possible![/me]

            1 Reply Last reply Reply Quote 0
            • K
              Kevlar Spammer last edited by

              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

              1 Reply Last reply Reply Quote 0
              • ?
                A Former User last edited by

                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!

                1 Reply Last reply Reply Quote 0
                • E
                  Ernesto last edited by

                  astonished :o

                  1 Reply Last reply Reply Quote 0
                  • zerodrama
                    zerodrama Regular Member last edited by

                    Can we use Pay to Script Hash for Link?

                    https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki

                    1 Reply Last reply Reply Quote 0
                    • A
                      Aldanga last edited by

                      This is really sweet. I’m going to take a look at the spec tonight after work.

                      1 Reply Last reply Reply Quote 0
                      • K
                        Kevlar Spammer last edited by

                        [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?

                        1 Reply Last reply Reply Quote 0
                        • zerodrama
                          zerodrama Regular Member last edited by

                          [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.

                          1 Reply Last reply Reply Quote 0
                          • N
                            Nixxle last edited by

                            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]

                            1 Reply Last reply Reply Quote 0
                            • K
                              Kevlar Spammer last edited by

                              [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?

                              1 Reply Last reply Reply Quote 0
                              • N
                                Nixxle last edited by

                                [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. :)

                                1 Reply Last reply Reply Quote 0
                                • ?
                                  A Former User last edited by

                                  [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.

                                  1 Reply Last reply Reply Quote 0
                                  • K
                                    Kevlar Spammer last edited by

                                    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. :)

                                    1 Reply Last reply Reply Quote 0
                                    • ?
                                      A Former User last edited by

                                      Awesome awesome awesome!

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        Kevlar Spammer last edited by

                                        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.

                                        1 Reply Last reply Reply Quote 0
                                        • ?
                                          A Former User last edited by

                                          I know all I can provide is moral support, but you go rest man… Your doing something quite amazing indeed.

                                          1 Reply Last reply Reply Quote 0
                                          • zerodrama
                                            zerodrama Regular Member last edited by

                                            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.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post