Pages:
Author

Topic: Namecoin was stillborn, I had to switch off life-support - page 5. (Read 46129 times)

legendary
Activity: 938
Merit: 1013
I always posted critics to namecoin design.

Welcome to DIANNA - Decentralized Internet Assigned Names and Numbers Authority, the mother of all records Wink

https://dianna-project.org

Need volunteers.
jr. member
Activity: 46
Merit: 25
hero member
Activity: 632
Merit: 768
BTC⇆⚡⇄BTC
So who is going to create the new name coin chain?

Is there even a dev team?

Here is the announce thread: https://bitcointalksearch.org/topic/announce-namecoin-a-distributed-naming-system-based-on-bitcoin-6017

Dunno if the announcer called vinced is the main dev though...
hero member
Activity: 714
Merit: 510
I hope that someone uses this opportunity to create a decentralized DNS network that's actually good. Namecoin always had a lot of flaws which probably would have prevented any real success. In particular, DNS does not require its own currency.

Could DNS be implemented as smart property on top of something like Mastercoin?
member
Activity: 112
Merit: 10
Another way to see the blockchain wrt bitcoin.bit is http://explorer.dot-bit.org/n/1
... and it says the following:

On 2013-06-17 a NAME_NEW was issued for d/bitcoin, which is very unusual. There was no need for another NAME_NEW, as the name "d/bitcoin" was not expired yet.
On 2013-08-13 the "new" owner with IP 108.166.91.92 tried to make it look as if d/bitcoin is still owned by register.dot-bit.org
On 2013-10-15 (today) he issued a simple NAME_UPDATE.


To me it looks we haven't got a Namecoin problem, but we have a problem with namecoin.com (IP: 108.166.91.92).

EDIT: On the other hand:
http://dot-bit.org/forum/viewtopic.php?f=2&t=1295&start=10
legendary
Activity: 1120
Merit: 1149
One issue I could see with implementing NMC on top of BTC is future scalability. Specifically, when BTC blockchain gets huge, it would mean that the datacenters that store bitcoin blockchain information would have to also double as DNS providers. I think a NMC blockchain would be much much smaller in size compared to bitcoin, since transactions on namecoin are much less frequest, even if they may hold more data. So keeping the two separate would allow for many more smaller, independent DNS providers, instead of limiting it to just the few bitcoin providers we'll likely end up with in the future.

Scalability is already a serious problem with namecoin.

Done correctly a namecoin v2.0 doesn't have to make the same scalability mistakes as with namecoin v1.0, and can be implemented in such a way that if Bitcoin itself remains secure and usable for people who don't have the full blockchain, Namecoin v2.0 will be too. For instance any kind of UTXO proof thing in Bitcoin makes this easy to accomplish by creating a system where a series of one or more UTXO proofs can be used to prove the correct ownership of the domain name, without requiring anyone to have a full copy of all domain names.

Note how it helps that domain registrations can have much higher "fees" than Bitcoin transfers and still be useful.

Incidentally this is the same line of thinking when it comes to colored coins; I'm writing a paper on that topic right now that I really need to finish off before I annoy killerstorm any further...  Undecided
newbie
Activity: 13
Merit: 0
is it possible to check in the blockchain which domains have been affected by the exploit?

what could be done is if it's just the bitcoin domain to assign it back to who initially registered it (i guess that's possible)

any domain transfer from today to when patch is done would be reverted to who originally registered the domain, as it would be assumed to be a hack
legendary
Activity: 1680
Merit: 1035
One issue I could see with implementing NMC on top of BTC is future scalability. Specifically, when BTC blockchain gets huge, it would mean that the datacenters that store bitcoin blockchain information would have to also double as DNS providers. I think a NMC blockchain would be much much smaller in size compared to bitcoin, since transactions on namecoin are much less frequest, even if they may hold more data. So keeping the two separate would allow for many more smaller, independent DNS providers, instead of limiting it to just the few bitcoin providers we'll likely end up with in the future.
legendary
Activity: 1708
Merit: 1019
Well supposedly namecoin was never much use to start with because names were so cheap that basically everyone's name was already taken almost before anyone had heard of the thing?
Actually there was a long price ramp at the beginning and names started out very expensive.
jr. member
Activity: 46
Merit: 25
Another way to see the blockchain wrt bitcoin.bit is http://explorer.dot-bit.org/n/1
legendary
Activity: 1120
Merit: 1149
I'm not sure that a block chain is required at all

What prevents double-transfer of names, then?

The Namecoin v2.0 rules.

You have to understand that what Bitcoin provides for a "Namecoin v2.0" system that works on top of the Bitcoin blockchain is a (proof of) data publication and ordering service, nothing more. It's the agreed upon rules that would take that data and determine what it actually means in terms of who owns what domains.

it should be allowed (with appropriate fees), and in practice it's probably difficult to prevent it.

Unfortunately it's very easy to prevent and has already been discussed on bitcoin-dev.  It can be implemented the same way P2SH was added: a miners-only upgrade that is forced on the minority once the majority adopts it.

You might wake up one day to find that the currency you'd been using to store key/value pairs is no longer accepting updates.

Gregory Maxwell's P2SH^2 system is very clever, but it still doesn't prevent publication of data in the Bitcoin blockchain, only the Bitcoin UTXO set. There's absolutely nothing we can do to prevent people from publishing data in the blockchain other than miners using blacklists, and even that measure can be circumvented if what you are doing is timestamping; I wrote up a good Namecoin v2.0 proposal on #bitcoin-wizards a while back that I called "zookeyv" that is genuinely impossible to block short of having all Bitcoin users sign their transactions with real-world identities that a majority of miners verify.

I agree with theymos on this: the next namecoin should be implemented on top of the bitcoin blockchain.


FWIW I wrote an improved version of the "blockchain data uploading" script that was put in the Bitcoin blockchain a few months ago to get a better understanding of the counter-measures possible; I'm increasingly thinking it'd be worthwhile to publish that code in the same spirit of publishing security exploits. Better we understand these issues now than find out the hard way later.
legendary
Activity: 2940
Merit: 1090
Well supposedly namecoin was never much use to start with because names were so cheap that basically everyone's name was already taken almost before anyone had heard of the thing?

Are there any usernames from this forum that weren't squatted, for example?

Though maybe the whole point of this "bug" was precisely to get to see what names were wanted then grab them?

Starting over doesn't seem likely to be helpful since squatters scripts will collide all over each other in the first few moments after the fix grabbing every name than anyone ever wanted...

-MarkM-
legendary
Activity: 1764
Merit: 1000
Code:
$ ./namecoind name_history d/bitcoin

[
    {
        "name" : "d/bitcoin",
        "value" : "webpagedeveloper.me/namecoin",
        "txid" : "ab1207bd605af57ed0b5325ac94d19578cff3bce668ebe8dda2f42a00b001f5d",
        "address" : "NGcTVLgw6cgdavaE7C9QvWaY7gKiWbLrjP",
        "expires_in" : -127790,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "75e7f4bbccf673d755dd2b1e4a302c15f716c1f5b5d1d8f80d94d3d805ed64d1",
        "address" : "NJpHX9pHiApFtBtCMLxpEd9n4v47G2useU",
        "expires_in" : -91788,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "3376c5e0e5b69d0a104863de8432d7c13f891065e7628a72487b770c6418d397",
        "address" : "N9dLs1zHRfZr5cJNjSrvhWrrUcmNSthdmz",
        "expires_in" : -80068,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "cc9f6c9493ad9a556f19fe91539339529ed3ceb8a4abd281f49c049f274ff812",
        "address" : "N87erkfoA73u1hDBtMgAJqb1dRoN5Bf13g",
        "expires_in" : -44908,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "ad70a260c2877129b278bd8efdc8811c3f5b9246bdeb429bb2ff84c08cb53c59",
        "address" : "N2W86iuzrwwxZktpJZ3E2xBn1FaYza3Seo",
        "expires_in" : -9834,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "0bd0d194dfec880211d281fdf0efec28f36fc0a969ea2f437d56766e945fcccb",
        "address" : "MvuWVugaAAoU5CUq1ycggsQjYeeBwJ2nE6",
        "expires_in" : 25180
    },
    {
        "name" : "d/bitcoin",
        "value" : "Namecoin died October the 15th 2013, coinslayer",
        "txid" : "2f034f2499c136a2c5a922ca4be65c1292815c753bbb100a2a26d5ad532c3919",
        "address" : "NCef39aRywWU1CBnRYWhoLFyo7GqcvX7TB",
        "expires_in" : 35940
    }
]


So what we see here is apparently the history of the bitcoin.bit domain registration. If you look at the last entry.. that looks like a confirmation that  libcoin has found an exploit. If I knew C++ I'd try to reproduce this, but I don't.

If that's true then... RIP in pieces NMC
jr. member
Activity: 46
Merit: 25
Code:
$ ./namecoind name_history d/bitcoin

[
    {
        "name" : "d/bitcoin",
        "value" : "webpagedeveloper.me/namecoin",
        "txid" : "ab1207bd605af57ed0b5325ac94d19578cff3bce668ebe8dda2f42a00b001f5d",
        "address" : "NGcTVLgw6cgdavaE7C9QvWaY7gKiWbLrjP",
        "expires_in" : -127790,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "75e7f4bbccf673d755dd2b1e4a302c15f716c1f5b5d1d8f80d94d3d805ed64d1",
        "address" : "NJpHX9pHiApFtBtCMLxpEd9n4v47G2useU",
        "expires_in" : -91788,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "3376c5e0e5b69d0a104863de8432d7c13f891065e7628a72487b770c6418d397",
        "address" : "N9dLs1zHRfZr5cJNjSrvhWrrUcmNSthdmz",
        "expires_in" : -80068,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "cc9f6c9493ad9a556f19fe91539339529ed3ceb8a4abd281f49c049f274ff812",
        "address" : "N87erkfoA73u1hDBtMgAJqb1dRoN5Bf13g",
        "expires_in" : -44908,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "ad70a260c2877129b278bd8efdc8811c3f5b9246bdeb429bb2ff84c08cb53c59",
        "address" : "N2W86iuzrwwxZktpJZ3E2xBn1FaYza3Seo",
        "expires_in" : -9834,
        "expired" : 1
    },
    {
        "name" : "d/bitcoin",
        "value" : "{\"info\":{\"registrar\":\"http://register.dot-bit.org\"},\"email\": \"[email protected]\",\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"],\"map\":{\"\":{\"ns\":[\"ns0.web-sweet-web.net\",\"ns1.web-sweet-web.net\"]}}}",
        "txid" : "0bd0d194dfec880211d281fdf0efec28f36fc0a969ea2f437d56766e945fcccb",
        "address" : "MvuWVugaAAoU5CUq1ycggsQjYeeBwJ2nE6",
        "expires_in" : 25180
    },
    {
        "name" : "d/bitcoin",
        "value" : "Namecoin died October the 15th 2013, coinslayer",
        "txid" : "2f034f2499c136a2c5a922ca4be65c1292815c753bbb100a2a26d5ad532c3919",
        "address" : "NCef39aRywWU1CBnRYWhoLFyo7GqcvX7TB",
        "expires_in" : 35940
    }
]


So what we see here is apparently the history of the bitcoin.bit domain registration. If you look at the last entry.. that looks like a confirmation that  libcoin has found an exploit. If I knew C++ I'd try to reproduce this, but I don't.
newbie
Activity: 30
Merit: 0
This is the postmortems and obituary over namecoin. In fact it never really existed, but by block: 139872 it became clear. However, if you haven' t noticed yet read on...

Namecoin has always been my favorite alt-coin - it had a clear purpose, different from Bitcoin, offering a nice way to keep a de-central registry of key-value pairs. About a month ago I had a closer look at namecoin, to integrate it into libcoin. Libcoin is a complete other story, it is a library supporting bitcoin as well as several of the alt coins, enabling easy construction of anything from light weight wallets to full server wallet solutions for exchanges and merchant sites. However, back to namecoin...

I have integrated several alt coins, and I know the machinery pretty well by now. The engine of any bitcoin based crypto currency is the ConnectBlock / ConnectInputs methods in main.cpp. They keep the rules of when to accept a block and when to reject a block, and it is there you make patches to enable anything from alternative hashing algorithms (litecoin) to merged mining (namecoin and others) as well as add new features and rules. Namecoin keep a reasonable separation through the definitions of hooks, implementing the actual rules in a separate file, namecoin.cpp.

So the real interesting stuff in namecoin is happening in namecoin.cpp in the ConnectInputs method. This one is called from ConnectInputs in main.cpp and hence have the ability to change and add rules.

All namecoin rules are kept hidden from the bitcoin script rule engine through OP_DROP opcodes, i.e. some special opcodes and data is entered, followed by a matching chain of OP_DROP commands, so the normal script rule engine will simply ignore anything namecoin'ish. The special op codes of namecoin are:
Code:
OP_NAME_NEW
OP_NAME_FIRSTUPDATE
OP_NAME_UPDATE
The reason for the
Code:
OP_NAME_NEW/OP_NAME_FIRSTUPDATE
setup is to avoid domain opportunists listening for new domain reservations and issuing competing reservations to later sell the domain back. So first you issue a:
Code:
OP_NAME_NEW << hash << OP_2DROP
Where the hash is composed of a random number and the domain, hashed. You are not allowed to issue a first-update, finally registering the domain, before after 12 blocks, ensuring no block reorganizations can enable a domain opportunists to steal your domain. In the name_new/name_firstupdate RPC calls this rule is nicely enforced, however, when you look in the ConnectInputs method you find rules enforcing a fee, rules enforcing the 12 blocks, but NO RULES ENFORCING THE HASH! [namecoin.cpp line 1874-1907] ]. So any name_new can be used as input for ANY name. This means that the domain reservation is not enforced at all leaving namecoin completely open for domain opportunists.

Clearly the patient is bleeding and in urgent need for help, but brace yourselves, this is not affecting already registered domains so it is fixable by a proper patch, and a recommendation to not reserve any new domains before the patch is in effect. Relieved that there was a cure I continued with the standard examination, to check if the rest was ok.

The key lines in namecoin.cpp are probably 1930 to 1949, this is the very core of namecoin. This is the enforcing of a name_update - a name update is the script:
Code:
OP_NAME_UPDATE << vchName << vchValue << OP_2DROP << OP_DROP
So, take an already registered name and update that with a new value. Now you would expect some code enforcing that only an input of that name can be update to another value - but NO! Again there is no enforcing of the core ruleset. So you can in fact update the value of any name in namecoin by any other input name. And after that you own it, or well, as much as you can actually own a name who anyone can update.

The final test was to try it out - (sorry) - I might had overlooked something, so, I changed the name_update algorithm to enable such takeovers, and did a:
Code:
./namecoind name_fakeupdate d/postmortem d/bitcoin "Namecoin died October the 15th 2013, coinslayer"

Try name_history on d/bitcoin and see for yourselves - there is no enforced integrity of the key value pairs in namecoin. So namecoin looses its entire purpose. The problem is that there is no fix to this - it is similar to being able to randomly take ownership of other peoples money, all the value is gone. I tried, initially, a silent fix contacting namecoin developers and key users more than a month ago, but I never got any answers back. Perhaps, the best future for namecoin now is a rebirth with a new genesis, or just a cancel of all the name reservations starting from some future block ?

I should also note that up until block 139872, no one have exploited the bugs. The libcoin code actually enforced the above rules, and I was able to download and verify the entire chain, now I have added a flag, ignore_rules, to get pass block 139872.

Coinslayer


So while everyone is busy, selling all their namecoins on this rumour, has anyone bothered to fact check this? 
I would like to have independant verification that what he's writing is true.
legendary
Activity: 1708
Merit: 1019
I tried, initially, a silent fix contacting namecoin developers and key users more than a month ago, but I never got any answers back.
It seems you did not try very hard because none of the active Namecoiners heard of anything. Still, thanks for bringing it up.

We are looking into a fix that will not need a reorg. Maybe by ignoring bad name_ops until hard fork height or something.


Finally some publicity for Namecoin  Grin



newbie
Activity: 10
Merit: 1003
Hum, not sure to fully understand

I tought what you say would invalidate old blocks

You mean, it would invalidate only block mined after the exploit was used ?
donator
Activity: 980
Merit: 1004
felonious vagrancy, personified
I'm not sure that a block chain is required at all

What prevents double-transfer of names, then?


it should be allowed (with appropriate fees), and in practice it's probably difficult to prevent it.

Unfortunately it's very easy to prevent and has already been discussed on bitcoin-dev.  It can be implemented the same way P2SH was added: a miners-only upgrade that is forced on the minority once the majority adopts it.

You might wake up one day to find that the currency you'd been using to store key/value pairs is no longer accepting updates.
administrator
Activity: 5166
Merit: 12850
No, but it does require a serialization mechanism whose developers aren't actively hostile to it being used for information storage.

In other words, you can't use the bitcoin blockchain for this.

So if it isn't its own currency (and therefore pays no block reward) and you can't substitute the BTC blockchain, why should miners waste computing power on it?


I'm not sure that a block chain is required at all, but if it is, it's probably best to use the Bitcoin block chain. General timestamping with Bitcoin is incredibly useful, and it can't be done in other chains because the incentives aren't right. So it should be allowed (with appropriate fees), and in practice it's probably difficult to prevent it.

why not make it easier on everyone and just allow say, 64 or 128 bytes of random data in a transaction?
That's already possible.  OP_CHECKSIG.  can be 33 to 120 bytes.

I also support a third transaction type for timestamp hash sized arbitrary data.  There's no point not having one since you can already do it anyway.  It would tell nodes they don't need to bother to index it.
newbie
Activity: 10
Merit: 1003
But the miners have sold the coins, and the coins where bought, and sold again

If they disapears, a lot a transactions will disapear, no ?
Pages:
Jump to: