goblin
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 80
Merit: 10
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 04, 2011, 08:38:48 PM |
|
Hang on, you're saying that sending arbitrary data in a transaction with a fee is possible and accepted by mainstream clients? That's not what I've heard on IRC...
It's impossible to distinguish between a valid public key and arbitrary data. Pretend that the data is a public key you're sending BTC to. The size is pretty limited when you do this, but it's more than enough for a hash. Sorry, still unsure... Does this "burn" bitcoins? I'm not proficient with low-level bitcoin stuff yet, but... is such a transaction possible then? in: 0.01 from a valid bitcoin address out: 0.00 to arbitrary data / public key (induced fee: 0.01 to the miner)
|
|
|
|
theymos
Administrator
Legendary
Offline
Activity: 5306
Merit: 13222
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 04, 2011, 08:43:53 PM |
|
I'm not proficient with low-level bitcoin stuff yet, but... is such a transaction possible then?
in: 0.01 from a valid bitcoin address out: 0.00 to arbitrary data / public key (induced fee: 0.01 to the miner)
Yes -- that's how it would be done. 0-value outputs are valid.
|
1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
|
|
|
goblin
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 80
Merit: 10
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 04, 2011, 08:46:15 PM |
|
I'm not proficient with low-level bitcoin stuff yet, but... is such a transaction possible then?
in: 0.01 from a valid bitcoin address out: 0.00 to arbitrary data / public key (induced fee: 0.01 to the miner)
Yes -- that's how it would be done. 0-value outputs are valid. Great, then there's no problem at all! We do have a reliable p2p timestamping service using the bitcoin's blockchain and everyone is happy! Yay! :-)
|
|
|
|
goblin
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 80
Merit: 10
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 04, 2011, 08:57:53 PM |
|
OK, some people might hate me for this:...
If it's OK to store a hash that way... It should also be OK to store a small simple NS record, right? :->
|
|
|
|
|
goblin
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 80
Merit: 10
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 04, 2011, 09:34:21 PM |
|
|
|
|
|
jimbobway
Legendary
Offline
Activity: 1304
Merit: 1015
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 04, 2011, 11:58:50 PM |
|
I agree with [mike] in that what satoshi says has more weight than what we say. I like the concept of shared work with bitcoin miners. It will only make the bitcoin more valuable and I'm all for that. Shared work is also what satoshi recommended.
I would also say that what [mike] says carries more weight than some others on this board, simply because he works for Google and also for implementing the BitcoinJ project. Google only hires the best of the best of the best.
|
|
|
|
BitterTea
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 02:55:17 PM |
|
Mike, I'm a little confused what exactly miners would be hashing that can be shared between Bitcoin and BitDNS. Is there some value they can hash that represents both Bitcoin and BitDNS?
|
|
|
|
Mike Hearn (OP)
Legendary
Offline
Activity: 1526
Merit: 1129
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 04:23:24 PM |
|
Miners hash the BitCoin block header. Miner workers like UfaSoft/poclbm wouldn't need to change at all. That header has a merkle root which is dependent on the contents of every transaction in the current block.
Imagine the BitCoin network is quiet and nothing is happening. Miners hash over a block header that changes only by the "nonce" field each time. Every so often the nonce field overflows and the "extraNonce" part of the coinbase scriptSig is incremented. Because this changes the contents of a transaction, it also changes the merkle root in the header (essentially randomizing it).
Now if a new alternative chain block comes in, your node tells BitCoin "update the extra hash", which is sitting next to the extraNonce. That also triggers re-calculation of the merkle root in the current BitCoin block. If a moment later you find a nonce that makes the current BitCoin block header fit the difficulty of the alternative chain, you have all the data you need to prove on the alternate chain that you did the proof of work.
So to answer your question the value they're hashing that represents both BitCoin and DNS is the current bitcoin block header - same as today.
|
|
|
|
0x6763
Newbie
Offline
Activity: 24
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 04:36:53 PM |
|
Sorry [mike], it's time to rip your post apart: It makes nobody happy.
The only people I've seen unhappy about doing domain name registration or other things with bitcoin are those that seem to have some sort of purist mentality in regards to which arbitrary uses of bitcoin are acceptable (according to their own subjective preferences, of course). Regardless, please don't make assumptions about how random people you don't know will feel if someone does X or Y, and then use your assumption as an argument against some use of bitcoin. it's unfair to externalize the costs of unrelated schemes onto people who are interested only in payments
So merchants will be ok with supporting bitcoin transactions for drugs, porn, alpaca socks, and their competitors, but not for domain names? What's the difference? If a domain name transaction can be done using practically the same amount of space and computational power as a normal transaction for any other good, then why does it matter? If the merchant is ok with processing bitcoin transactions that go to their competitors (and the blocks holding those transactions), then why would they care about processing transactions with a few bytes of extra data for domain name registrations? Either way from their perspective it's just bandwidth, processing power, and storage being used up for things that do not pertain to their business... Why would they single out domain name transactions as being unacceptable, but tolerate all the other millions of bitcoin transactions that provide no income to them but cost them resources? Increasing the cost of accepting BitCoins for goods and services hurts everyone who uses the system by reducing the number of merchants or increasing their costs.
How can you decide who it does and does not hurt or if it will increase or reduce the number of merchants? Like I said, they're willing to tolerate transactions and blocks containing transactions to their competitors or businesses/people that aren't directly competing, so why would they single out domain name transactions? Perhaps registering domain names through bitcoin increases the security (more miners due to higher fees for domain name transactions) and value (by adding decentralized domain name registration as another use) of bitcoin...is it impossible, or even unlikely that some merchants won't find that increased value more than enough to offset the increase in transactions of similar size to any other transaction? Verifying its integrity requires many slow (and thus expensive) operations like ECDSA verifications and disk seeks.
And this will have to be done for every bitcoin transaction that's buying a domain, whether or not the actual domain information is in the transaction or not. 10000 bitcoin transactions buying domains from some centralized domain name registrar, or 10000 bitcoin transactions containing perhaps a couple more opcodes and a 32-byte hash referencing the domain name the registering has no practical difference in computational cost (and I think some have presented ways to do it without increasing the size at all). One final reason is that Satoshi was opposed to putting non-BitCoin related data into the main chain. As creator of the system, his opinion should carry a lot of weight with anyone serious about extending it.
I care about his technical opinions, but I don't recall him presenting any technical reasons for not putting non-bitcoin related data into the main chain. I think it's purely an economic issue (one I believe most people will view as a net gain), not a technical one. This means it is merely a matter of personal preference. Just because Satoshi's preference was to keep non-bitcoin related data out of the block chain does not mean that putting that data in there is not a good idea...it just means he doesn't want it in there. It's no different than you wanting or not wanting pineapple on your pizza. A commonly cited reason for putting DNS related data into BitCoin is the desire to pay for names with BitCoins.
It's not because people want to pay for domain names (I think most people, including myself, would much rather get them for free than pay for them). It's because there needs to be an incentive for people to work on the block chain. Other schemes are possible, like pay to miner
So you leave out the one that actually gives people incentive to work on the DNS block chain... Obviously you're under no obligation to provide such a solution to us, but it's the most important part! You went through all of this trouble making this post, but left out the most important piece. Without it, a decentralized domain name registration project will not become widely used. If two different block chains were to be used while sharing work and providing an incentive for the miner to support the secondary block chain, the domain name block generated has to be synchronized with the bitcoin block that holds the transaction paying the miner. If they are not synchronized, the miner is not necessarily guaranteed to be paid for registering the domain name (requiring that registration to be considered invalid, and wasting work on the miner's part for including it, not to mention the block chain being wide open to spam due to not needing to pay to get transactions put into it). The person buying the domain name can't pay before the block is mined, because they don't know who will mine the block until after it happens. The simplest way to solve this is for the domain name registrations and fees paid to the miners be in the same transactions on the same block chain. This means either doing it in the bitcoin block chain, or creating a (probably more valuable) competitor to bitcoin that will provide a greater incentive for miners to stop mining bitcoin and start mining in the new system...not good for bitcoin. I have to question whether or not you really understand the issue with domain name registrations and bitcoin. You're using personal preferences as reasons to not do domain name registration in bitcoin, while providing unnecessary technical alternatives (that do not provide the necessary incentives for it to work) just to meet your personal preferences. For you to even think that people "want to pay for domain names" and then going through the trouble of providing a technical way to do this proves your lack of understanding on this matter. You're willing to make modifications to bitcoin to accommodate alternative block chains, but are not willing to allow a few extra bytes in a fraction of the transactions, requiring no change to bitcoin and likely providing an economic benefit for most/all people using bitcoin through more mining incentive, thereby increasing network security, and also through more demand for bitcoins due to it's use for domain name registration. The issue of using the bitcoin block chain for domain name registration is not technical. It's purely an economic matter, meaning it's entirely subject to personal preferences. Please don't hide behind Satoshi's opinions or use unnecessary (and unsatisfactory) technical alternatives as a way to suggest to us that your anti-DNS-in-bitcoin post is anything more than an expression of your personal preference. Also, please don't state your assumptions as to how it would affect others economically or emotionally as though it's some sort of provable fact.
|
|
|
|
Mike Hearn (OP)
Legendary
Offline
Activity: 1526
Merit: 1129
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 04:52:20 PM |
|
So merchants will be ok with supporting bitcoin transactions for drugs, porn, alpaca socks, and their competitors, but not for domain names? What's the difference?
When you track the transaction history, you aren't doing it pointlessly. You need to know the history of all coins so when one of those coins comes to you as payment, you can verify it's legitimate and not an attempted double spend. This is fundamental to BitCoin and accepted by everyone who runs a node. The only way to prove the absence of transactions is to be aware of all transactions. If you are already happy with the existing domain name system (or whatever), you don't care about those transactions. You aren't planning on taking part in that system so those domain names will never "come around" to you. You also don't care if somebody else owns any particular name. It's additional expense that gains you nothing. I think you're overfocussing on the DNS case. There are several possible use cases for alternative chains. Nobody will care about all of them. Some of them may involve significant amounts of data, far beyond a DNS system. I care about his technical opinions, but I don't recall him presenting any technical reasons for not putting non-bitcoin related data into the main chain.
Then you need to re-read his posts. The technical reason is that trying to combine every possible proof of work based quorum into a single chain does not scale. This is not a matter of personal preference, it's about solid engineering. It's not because people want to pay for domain names (I think most people, including myself, would much rather get them for free than pay for them). It's because there needs to be an incentive for people to work on the block chain.
If the names are free then somebody will just do a dictionary attack on the network and claim all useful names. But regardless, if for your 0x6763 chain you don't want to charge any coins you don't have to. Miners don't need much incentive to work on alternative chains as long as the CPU cost of receiving and verifying your transactions isn't too high. They just connect your software to BitCoin and their mining hardware works on both simultaneously. Beyond an hour or twos setup time nothing more is required. So you leave out the one that actually gives people incentive to work on the DNS block chain... Obviously you're under no obligation to provide such a solution to us, but it's the most important part! You went through all of this trouble making this post, but left out the most important piece.
I left it out because the post was already too long and the overhead of joining a second chain once you do mining on the first is so trivial. Believing in "the cause" is probably enough. It got BitCoin bootstrapped quite fine after all, BTC was not always worth $3. Regardless, if you believe your idea is so uncompelling nobody will join you unless they get paid, there are designs possible which allow for it. I'm about to head out for the night. I'm sure somebody can propose one here.
|
|
|
|
jimbobway
Legendary
Offline
Activity: 1304
Merit: 1015
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 05:02:36 PM Last edit: May 05, 2011, 05:16:47 PM by jimbobway |
|
The technical reason is that trying to combine every possible proof of work based quorum into a single chain does not scale. This is not a matter of personal preference, it's about solid engineering. Agree with [mike]. It is pretty obvious that allowing domain name registration info in the block chain does not scale. If you open the doorway to domains, other potential applications using P2P could also do the same causing the chain to bloat. It truly is about solid engineering. If the names are free then somebody will just do a dictionary attack on the network and claim all useful names. This is pretty obvious. Registering a domain must cost something so all the names will not be taken. One cannot just get it for 'free'.
|
|
|
|
BitterTea
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 05:05:36 PM |
|
Also agree with Mike. Anyone who hasn't gotten this point yet, keep in mind that you can look for a solution for any and all block chains (set up as Mike specified) with one round of hashing. If this becomes popular, all miners could be computing for all parallel block chains simultaneously.
|
|
|
|
theymos
Administrator
Legendary
Offline
Activity: 5306
Merit: 13222
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 06:49:57 PM Last edit: May 05, 2011, 07:05:33 PM by theymos |
|
It is pretty obvious that allowing domain name registration info in the block chain does not scale.
I guess you should sell your BTC, then, because arbitrary transactions are allowed right now, and they are very likely to always be allowed. If using Bitcoin's chain for DNS is the best way to do DNS (which I'm not totally convinced about), that's how it will be done. There's no way to stop people from sending information via Bitcoin. Look who came up with that OP_CHECKSIG trick for inserting arbitrary data: Timestamp hashes are still already possible:
txin: 0.01 txout: 0.00 <appid, hash> OP_CHECKSIG fee: 0.01
If there's an actual application like BitDNS getting ready to actually start inserting hashes, we can always add a specific transaction template for timestamps.
I like Hal Finney's idea for user-friendly timestamping. Convert the hash of a file to a bitcoin address and send 0.01 to it:
|
1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
|
|
|
0x6763
Newbie
Offline
Activity: 24
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 07:34:14 PM |
|
If you are already happy with the existing domain name system (or whatever), you don't care about those transactions. You aren't planning on taking part in that system so those domain names will never "come around" to you. You also don't care if somebody else owns any particular name. It's additional expense that gains you nothing.
Gains you nothing...oh, except for maybe a more robust and secure network and a more valuable and more widely used currency. What each person loses and gains is for each individual person to decide for themselves and only themselves. Again, please don't state your assumptions of what other people gain or lose as though it's some provable objective fact. I think you're overfocussing on the DNS case. There are several possible use cases for alternative chains. Nobody will care about all of them. Some of them may involve significant amounts of data, far beyond a DNS system.
And the miners can and most likely will charge the fees that gets them the most profit for those types of transactions, causing the number of them to be lower than if they were free. To reduce costs in fees, the people designing the system could provide a more cost effective system by limiting the amount of data put into the transactions/block chain to a minimum that merely references where to find the data in some other system (which is exactly how I would do DNS). The incentives to prevent it from blowing up out of control already exist (except for perhaps the lack of flexibility for setting fees in the bitcoin client and mining software). The technical reason is that trying to combine every possible proof of work based quorum into a single chain does not scale.
Scaling is generally an economic issue, not a technical one. With enough resources you can scale anything up in an incredibly inefficient way if you wanted to (just look at most governments). The nice thing about bitcoin is that the miners can charge transaction fees, reducing the externalization of costs to others from people putting non-bitcoin related data into the block chain, because the fees will make it cost prohibitive to just throw whatever or however much data they want into the block chain. The miners could pick and choose which types of transactions they will put into a block according to their own economic goals, and the people making the transactions will pick and choose what transactions they will make and pay fees for based on their own economic goals. The network will adjust and scale according to the values of its users. This is not a matter of personal preference, it's about solid engineering.
All engineering is intended to meet some arbitrary subjective goal, to provide some subjective value to one or more people. From what you have stated thus far, it seems that among your goals (preferences, values, or whatever you wish to call them) you want the bitcoin block chain to hold only data related to bitcoins, and nothing else, with the exception of making some changes to include some non-bitcoin related data in coinbase transactions. You've chosen an arbitrary trade-off to meet your goals...some people like it, and some people don't. Others are willing to make the arbitrary exception of just simplifying things to the point that you can include data in a transaction that references something in some other datastore. And others are willing to go as far as putting a lot of data into the block chain (entire DNS records and other data). Every single one of these is completely arbitrary, and the network can technically handle every single one. The problem is not a technical one, but an economical one. Storing large amounts of data in the block chain is likely not very economical, but the amount stored would be prevented from growing beyond a certain point due to transaction fees. Creating an alternative block chain and making exceptions to allow a reference to this alternate chain in a coinbase transaction is certainly less burdensome on the bitcoin network, but I'm not confident that anyone's fully solved all the issues of miner incentive and asynchronous difficulty between the two chains. Unless those issues are definitely solved, an alternative chain sharing work with bitcoin is likely to suffer and not have a chance of having widespread use. I personally think that allowing people to put arbitrary references to outside data in bitcoin transactions makes the most sense technically (it's simple) and can be well accommodated by the bitcoin network economically (the market rate chosen by miners and those sending special transactions will regulate how much of this data goes into the block chain). If the names are free then somebody will just do a dictionary attack on the network and claim all useful names.
Yes, that's another reason (in addition to the one where I said the miners need an incentive to even bother creating the blocks), for there to be a fee. But regardless, if for your 0x6763 chain you don't want to charge any coins you don't have to.
It seems you misunderstood what I was saying. I was not saying that I want to create a system where the domain names would be free, because I am already well aware that won't work. Miners don't need much incentive to work on alternative chains as long as the CPU cost of receiving and verifying your transactions isn't too high. They just connect your software to BitCoin and their mining hardware works on both simultaneously. Beyond an hour or twos setup time nothing more is required. ... Believing in "the cause" is probably enough.
That's awfully short-sighted of you. For bootstrapping, sure, 'believing in "the cause"' may be enough just like it was for bitcoin. But "this doesn't scale" to wide use of the system. The vast increase in bitcoin difficulty is due to the fact that the price of bitcoins increased, resulting in more opportunity to make a profit from mining, leading to more people investing in mining. In the future, I doubt most people are going to be investing in multi-million dollar data centers for bitcoin mining just because they 'believe in "the cause"', and I believe the same will be true for a decentralized DNS. What significant reason does any other miner have to spend even just a couple hours to get setup for working on the alternative block chain if they don't already 'believe in "the cause"' and don't earn extra money from it?
|
|
|
|
BitterTea
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 07:39:28 PM |
|
0x6763, why are you so hostile? Your tone is not contributing to this discussion.
|
|
|
|
0x6763
Newbie
Offline
Activity: 24
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 07:50:09 PM |
|
0x6763, why are you so hostile? Your tone is not contributing to this discussion.
I apologize for the tone, and I'll try to keep it a little nicer in any further posts. I don't find the arguments against using bitcoin for DNS to be compelling as they all seem to be personal preferences disguised as technical reasons against it. I'm just trying to point out that all the arguments that have been made against using bitcoin for DNS are economic arguments, which means they are based on perceived gains and loses, personal preferences, etc, and are not technical in nature. And I should qualify this: To reduce costs in fees, the people designing the system could provide a more cost effective system by limiting the amount of data put into the transactions/block chain to a minimum that merely references where to find the data in some other system (which is exactly how I would do DNS).
with: "if I were to choose bitcoin for DNS over the option of creating a competing currency."
|
|
|
|
BitterTea
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 07:55:54 PM |
|
What technical issues are solved by storing DNS data in the main block chain, as opposed to an alternate yet connected block chain, as Mike has proposed?
I find the idea of one block chain per application, but connected in such a way that they can all be mined against simultaneously, much more appealing than one monolithic block chain. Similar to those that want to change Bitcoin to have constant inflation, or distribute payouts more fairly, or anything else... rather than trying to impose a change on all Bitcoin users, why not start a new chain instead?
I now return you to your regularly scheduled argument.
|
|
|
|
theymos
Administrator
Legendary
Offline
Activity: 5306
Merit: 13222
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 08:04:55 PM |
|
What technical issues are solved by storing DNS data in the main block chain, as opposed to an alternate yet connected block chain, as Mike has proposed?
Incentives. If I want to make an alternative chain for timestamping documents, then no one will ever generate blocks on that chain, since there would be no profit. If you can easily work incentives into your project, a side chain is better. Then you can do simple payment verification for your chain, too.
|
1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
|
|
|
0x6763
Newbie
Offline
Activity: 24
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
May 05, 2011, 08:23:31 PM |
|
What technical issues are solved by storing DNS data in the main block chain, as opposed to an alternate yet connected block chain, as Mike has proposed?
I find the idea of one block chain per application, but connected in such a way that they can all be mined against simultaneously, much more appealing than one monolithic block chain. Similar to those that want to change Bitcoin to have constant inflation, or distribute payouts more fairly, or anything else... rather than trying to impose a change on all Bitcoin users, why not start a new chain instead?
First, not every bitcoin miner is going to be a domain name block chain miner, or timestamping miner, etc. This means that to generate a block in that system that is also tied to a block in the bitcoin block chain could take significantly longer. If you have 1/1000th of the bitcoin network's hashing power also working on the domain name block chain, then approximately 1 out of every 1000 blocks will generate a block for the domain name block chain. Not a problem for bitcoin, but it is a problem for the alternative block chain. If that ratio were to ever reverse to where bitcoin has the minority in hashing power, then bitcoin will suffer from blocks being few and far between. I'm not sure that anyone has sufficiently solved this problem. Another problem that comes from this asynchronous block generation rate is paying the miners fees for generating blocks in the alternative block chain. Currently with bitcoin, when you send a transaction with a fee, you know the miner does not get the fee unless the transaction is accept, and the miner knows your transaction will not be accept without him getting the fee. But with two block chains where blocks are generated at different rates, you don't know ahead of time who to send the fee to (say for registering a domain name)...the next person that generates a block may not be mining for the domain name block chain, so they shouldn't get the fee. Someone might just assume pay the domain name miner afterwards, but this is not enforceable, and due to this lack of enforceability it opens up the system to spam attacks where someone sends a bunch of domain name registrations because they don't have to pay for them, yet, and can't be forced to pay for them in the future, but the miner's won't be able to know this, and have know way to know whether or not to put them into a block. If they don't, they risk losing fees they could have gained...if they do, they risk filling up the block chain with useless data for nothing. These issues do not exist when the currency and secondary application are both on the same block chain. If someone has solved this asynchronous block generation rate issue, please point me to the post. Perhaps I've overlooked it. Otherwise, I believe the solution that is most likely to work for alternative applications of a block chain is for both the alternative application and the currency to be on the same block chain, which leads me to either using bitcoin, due to it already existing and thriving, or to compete against it.
|
|
|
|
|