Reasons for not using Namecoin are many (we have 1+ year experience with using Namecoin and plan to release some of our lessons learned as a white paper soon). We can send you a early copy if you want. In short, I wouldn’t spend effort on Namecoin and look more into Blockstore.
Based on my experience creating and operating Nametiles I can think several reasons not to use namecoin:
Chunking data across multiple key-value pairs is complicated and error prone, I run into chunks of Passcard profiles that have inadvertently expired way too frequently for the small amount of time I spend looking at them.
Currency - having another coin is a huge barrier to entry: all the infrastructure (wallet, exchanges, tools) need to be replicated for Namecoin and this is even less likely to happen in the developing regulatory environment. It’s like working with a vendor that only takes Macau Patcas in the middle of Kansas where everyone else uses US Dollars. There’s a non-trivial cost that adds no value to the end user.
Security - even with merge mining, Namecoin isn’t as secure as Bitcoin - I recall seeing @ryan mention specific numbers on this somewhere.
the namecoin blockchain seems better suited to store the kinds of key-value pairs that blockstore/blockname are looking to implement. it was designed for that very purpose
the complexities of managing chunking and renewals can be hidden away by a well designed wallet
users need not worry about dealing with NMC. again the wallet can hide away any BTC/NMC exchanges under the hood
blockchain security should not be an issue, since it uses the same PoW algorithm as Bitcoin and can be merge mined. miner incentive to do so will increase as namecoin usage increases too
accessory DHTs can also be used to store larger blobs of data, keeping the blockchain relatively lean
There are many ways to skin a cat, and of course alternatives to namecoin are interesting from the point of view of addressing potential existing issues. However, from a purely technical point of view I’m not convinced that the issues pointed out so far justify it.
I’m open to changing my mind though, so looking forward to further opinions.
If you look at the design of Namecoin, it’s basically 1) introducing a bunch of new OP_CODES and 2) using tx outputs for storing data. Doing (1) is easy and (2) should not be done at the blockchain-level. Is there any other specific design choice that makes it particularly useful?
Agreed. This is not a deal-breaker, just a annoying thing in practice. The real issue here is blockchain bloat and size of data that we can use (can’t put 1000s of chunked data items easily).
This is not that trivial because you’re talking about implementing an exchange for BTC/NMC or talking to some default exchange all the time.
This is a common misunderstanding. Even if NMC is at 80% hashing power of BTC, it’s possible for a miner to have > 50% on NMC. In fact, this has already happened (and I have the data). It’s not just about 51% attack. There are also issues around network throughput and time it takes to get transactions accepted etc. There have been times in NMC when there were network-level issues that effected throughput and latency (again I have data on this).
If you’re getting into using DHTs for storing data then storing data in blockchain as well makes less sense. The overhead of managing DHTs is significant (it’s a hard problem to solve) and if you’ve solved it then might as well use the Bitcoin blockchain and not bother with putting data in the NMC blockchain.
There are also a lot of other issues e.g., software engineering challenges where NMC code is not as well maintained as BTC code. NMC is an old fork and there is currently an effort going on to re-implement NMC, exactly for the reasons I mentioned. This effort is currently driven by 1 developer basically. The amount of developer resources available for Bitcoin are (and likely will be for the near-future) an order of magnitude better than any other alt-coin. There is a long list of problems with running namecoind (the NMC daemon) at scale and we’ve encountered a large number of bugs/issues. In fact, by “normal” standards of deploying systems even bitcoind is a buggy piece of software that is hard to scale – namecoind is an orders of magnitude worse.
There are other reasons as well and we discuss them in detail in the white paper that I mentioned earlier. Hoping to put that white paper out for everyone to read soon.
Finally, a disclaimer that this is not a “I hate Namecoin” post. I think that Namecoin was the first/original cryptocurrency that implemented a decentralized key/value store and deserves a lot of credit for it. It’s also one of the oldest alt-coins that still works and has been running in production. It has faced many challenges and has somehow lived on, because the core idea is simply that good. With that said, there are many ways a Namecoin-like implementation can be improved and we’re merely trying to do that.
@muneeb I will not argue that namecoin is perfect and has no implementation issues, because that’s not the case.
However, unlike Bitcoin, the design goal of namecoin is to use its blockchain in order to store key-value pairs. Existing implementation issues aside, surely it makes more sense to focus on making namecoin work for its intended use, rather than abuse a blockchain whose primary intended use is not to store arbritary data. Just because you can doesn’t mean you should.
To be honest my main concern is that several projects are looking to ab(use) the Bitcoin blockchain, which is already experiencing scalability issues dealing with its intended use case (transfer of monetary value).
It shoud be pretty clear that the Bitcoin blockchain cannot possibly scale to be the universal blockchain for every use case out there.
Hi @ktorn! Great to see you here!
I’ve been following this discussion quietly after @larry’s invitation. I love the project, and very much believe the Bitcoin blockchain is the right place for this.
In short, a blockchain needs to be open, secure and have a relatively stable token of value. Bitcoin fulfills that more than any other blockchain. It may not be designed for arbitrary data, but I don’t buy into this argument that we harm/abuse the Bitcoin by adding lots of garbage. How much is a blockchain really worth if it needs to be protected from abuse to function?
I wouldn’t call non-monetary uses of the Bitcoin blockchain abuse:
It is good for bitcoin to have more uses because it increases the value of bitcoin and therefore the security of its blockchain
If Bitcoin doesn’t scale, then transaction prices will increase and naturally only the most valuable uses of bitcoin will continue to use it. Something else might arise to handle less valuable use cases.
I feel that the reason devs have more incentive to work on the bitcoin blockchain key-value stores such as Blockstore, rather than Namecoin, is that the ROI for time spent solving out issues has a greater chance of success. Namecoin does not have the same number of developers working on it as does the bitcoin blockchain and therefore these key-value stores possess a greater chance of success in solving issues such as scalability.
Well, great to see a discussion going, even if I feel slightly outnumbered on my side of the argument
OK, let me try and address your latest points.
The question is not only of a political nature, as in what should the Bitcoin blockchain be used for, but also of a technical nature, as in can one blockchain scale to every use-case (spoiler: the answer is no). The Bitcoin blockchain is not a stranger to use-cases that technically acted as a DDOS attack. I’m thinking SatoshiDice for example.
This is a very common argument, and a valid one, but only if you don’t care about the use cases that will suffer the most. Here’s the thing, the most vulnerable use-case is also the one that is being sold to the general public: the payment system. If that fails then Bitcoin will fail to live up to expectations, and when that happens unfortunately there won’t be a need to offload payments to another chain. Merchants will simply not be willing to adopt what they perceive to be a “failed” tech.
You see, your argument makes the potentially wrong assumption that the increase in fees would be a gradual process, gracefully handling the increase in transaction traffic. That may well be the case if block size is increased on time (you’ll be hoping Gavin Andresen and Mike Hearn have their way), otherwise as Mike argues, the system will likely come to a sudden halt, with confirmations taking hours to days (imagine how that will impact the payment use-case).
Choosing a blockchain based on the number of active core devs, or even hashing-power (security) is a very pragmatic thing to do, but does not qualify as a design choice. I’m asking you to take a step back, look at the big picture (long term pros and cons), and only then make a decision.
The TL/DR version:
Currently a single “universal” blockchain cannot scale to acommodate every application that wishes to use blockchain-tech. Ignoring that fact is a clear example of tragedy of the commons ;
Trying to modify blockchains to achieve (1.) requires a compromise: centralization;
The only way to achieve distributed scale is to take things off-chain and/or use multiple blockchains;
Given (4.) I think it is our duty as engineers to choose the right tool for the job today.
At this stage I’m also interested in knowing what is the expected footprint of Blockstack on the Bitcoin blockchain. I think it warrants its own topic though, so I will start one.
The lessons learnt from Namecoin + design of Blockstore research paper is currently going through peer review and we will post an early version of it as a white paper soon. We’ll announce the white paper on this forum, so stay tuned!