Pages:
Author

Topic: Design notes for sharing work between multiple independent chains - page 5. (Read 15103 times)

sr. member
Activity: 294
Merit: 252
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?
legendary
Activity: 1304
Merit: 1015
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.
member
Activity: 80
Merit: 10
I think so. Take a look at the DNS proposal that nanotube an I made, which stores records in that area:
http://privwiki.dreamhosters.com/wiki/Bitcoin_DNS_System_Proposal
Awesome.
administrator
Activity: 5222
Merit: 13032
I think so. Take a look at the DNS proposal that nanotube an I made, which stores records in that area:
http://privwiki.dreamhosters.com/wiki/Bitcoin_DNS_System_Proposal
member
Activity: 80
Merit: 10
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? :->
member
Activity: 80
Merit: 10
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! :-)
administrator
Activity: 5222
Merit: 13032
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.
member
Activity: 80
Merit: 10
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)
administrator
Activity: 5222
Merit: 13032
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.
member
Activity: 80
Merit: 10
Well, then that's even more damaging to the blockchain... You're sending an arbitrary transaction without any fee, to yourself... Everyone has to pay for it with bandwidth + disk storage, the transaction is at least as large as a signature-signing one, yet there's no fee for it..?

You could include a fee if that was needed for the tx to confirm - it's no different to any other financial transaction.

Today fees aren't really needed because security of the network is funded via inflation. In future it'll change.

Nodes don't have to store the transaction forever. Only for as long as you hold the name (or whatever thing you're paying for on the other chain). If one day you get bored of owning goblin.bit and spend the coins, that tx that spends the tx that held the name for you will get buried under more and more blocks. Eventually it becomes computationally intractable to reverse and the tx can be thrown away with only that part of the merkle tree remaining. BitCoin doesn't implement this today, but it's described in Satoshis paper and could be implemented with some work.

Quote
I don't understand the concept of "parking" though, so I might be wrong... What's that?

I just mean the coins aren't spent. They're sitting there, owned by you, but as far as BitCoin is concerned they might as well be your personal savings.
Riight, OK, I get what you're saying now. Yes, it's a possible implementation of some P2P DNS, and quite an interesting one.

I just wanted a generic timestamping service out of bitcoin, which could theoretically be used in some P2P DNS implementation as well as other stuff, but yeah, what you're saying makes sense.
member
Activity: 80
Merit: 10
But I don't think that's currently possible, so that's why I was suggesting adding processing of non-standard transactions to the mainstream client (with a fee of, say, 0.01 BTC for 32 bytes).

It's entirely possible right now. You can put the hash in a standard OP_CHECKSIG output with 0 value and bypass IsStandard, even.

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...
administrator
Activity: 5222
Merit: 13032
But I don't think that's currently possible, so that's why I was suggesting adding processing of non-standard transactions to the mainstream client (with a fee of, say, 0.01 BTC for 32 bytes).

It's entirely possible right now. You can put the hash in a standard OP_CHECKSIG output with 0 value and bypass IsStandard, even.
member
Activity: 80
Merit: 10
This doesn't solve the incentive problem. A simple timestamping chain couldn't work, for example. For these cases, it makes more sense to put the hash of a message in a Bitcoin transaction and transfer the actual message through other means.
Yes, that is EXACTLY what I want. You don't want to store the whole message in the block because it would be too expensive. You store the hash only AND pay a fee for it.

But I don't think that's currently possible, so that's why I was suggesting adding processing of non-standard transactions to the mainstream client (with a fee of, say, 0.01 BTC for 32 bytes).

Perhaps re-using a private key to sign your message and sending a transaction using that same private key is equivalent in functionality and doesn't require a change though.
legendary
Activity: 1526
Merit: 1134
Well, then that's even more damaging to the blockchain... You're sending an arbitrary transaction without any fee, to yourself... Everyone has to pay for it with bandwidth + disk storage, the transaction is at least as large as a signature-signing one, yet there's no fee for it..?

You could include a fee if that was needed for the tx to confirm - it's no different to any other financial transaction.

Today fees aren't really needed because security of the network is funded via inflation. In future it'll change.

Nodes don't have to store the transaction forever. Only for as long as you hold the name (or whatever thing you're paying for on the other chain). If one day you get bored of owning goblin.bit and spend the coins, that tx that spends the tx that held the name for you will get buried under more and more blocks. Eventually it becomes computationally intractable to reverse and the tx can be thrown away with only that part of the merkle tree remaining. BitCoin doesn't implement this today, but it's described in Satoshis paper and could be implemented with some work.

Quote
I don't understand the concept of "parking" though, so I might be wrong... What's that?

I just mean the coins aren't spent. They're sitting there, owned by you, but as far as BitCoin is concerned they might as well be your personal savings.
administrator
Activity: 5222
Merit: 13032
This doesn't solve the incentive problem. A simple timestamping chain couldn't work, for example. For these cases, it makes more sense to put the hash of a message in a Bitcoin transaction and transfer the actual message through other means.
member
Activity: 80
Merit: 10
I updated the original post to have the pay-to-self solution instead of using coin burning.

Correct, you aren't paying anyone for anything. You're simply parking the coins. You have ownership of the name for as long as the coins remain parked.

Well, then that's even more damaging to the blockchain... You're sending an arbitrary transaction without any fee, to yourself... Everyone has to pay for it with bandwidth + disk storage, the transaction is at least as large as a signature-signing one, yet there's no fee for it..?

I don't understand the concept of "parking" though, so I might be wrong... What's that?
sr. member
Activity: 294
Merit: 252
Anyways, I'd also like to have a simple feature of "send X amount of BTC to the guy who next generates a block", as a form of donation to the "bitcoin network". Is it currently possible to have the outputs of a transaction be 0? That + using the private key to sign stuff would indeed solve my problem pretty well.

You could just do a send to an address you own and include however large a fee you desire.
legendary
Activity: 1526
Merit: 1134
I updated the original post to have the pay-to-self solution instead of using coin burning.

Correct, you aren't paying anyone for anything. You're simply parking the coins. You have ownership of the name for as long as the coins remain parked.

Obviously there are other schemes that are possible. If you want to actually pay somebody specific, like somebody mining on the DNS chain, you'd do it another way - eg, use an escrow transaction to send coins to the DNS miner that you only release once they show you a newly found DNS block containing your transaction. It's up to you to define how BitCoin payments interact with the rules of your network.
member
Activity: 80
Merit: 10
Burning coins wasn't very well thought out, I had to get back to doing real work by the end of writing that so it was rushed Wink

A simpler way that's compatible with the BitCoin of today is just to sign the NameTx with a private BitCoin key that has sufficient coins in it. If you spend those coins the name is automatically relinquished. The name network can simply ask BitCoin "what is the balance of this address" to find out if the name is still valid or should be released.

It'd be a bit annoying with todays software because there's no good way to stop BitCoin using some coins to make new spends. But there are patches floating around to let you extract keys out of BitCoin and re-import them, I think sipa was working on it. So to buy a name that costs 10 BTC you'd send that much to a new address owned by yourself, then export that keypair, then import into the NameCoin software which would use it to sign the NameTx. In practice this would be all automated by the NameCoin software that runs alongside BitCoin.

OK, that's an interesting solution that also didn't cross my mind yet.

Regarding buying a name that costs 10 BTC... if you sent that much (10 BTC) to a new address owned by yourself, you wouldn't actually pay anything to anyone, would you?

Anyways, I'd also like to have a simple feature of "send X amount of BTC to the guy who next generates a block", as a form of donation to the "bitcoin network". Is it currently possible to have the outputs of a transaction be 0? That + using the private key to sign stuff would indeed solve my problem pretty well.
member
Activity: 80
Merit: 10
Wow, excellent job [mike]!  Thanks for describing this so well--you need an address in your signature for tips.
Agreed.

@goblin I'm pretty sure Mike only offered the "burning bitcoins" option as a technical example.  The reasoning for implementing alternate blockchains is an incredibly sound economic and pragmatic one.  Consider, for example, that someone implements some random scheme within the standard blockchain that experiences a huge boom and bust.  It doesn't make any sense to have bitcoin transaction fees rise and fall with that scheme, yet they would unless miners specifically filtered out transactions related to it. 
It wouldn't. Read what I wrote again. Non-standard timestamping transactions would not affect the price of standard transactions.

Also, imagine an online poker company like fivestars incorporated bitcoins into their business model. That would make bitcoin's popularity much higher than it is today, millions of transactions would be processed every day and the fees would get higher. That's one example of your "random scheme with the standard blockchain that experiences a huge boom" (not bust, actually), and it's EXACTLY what you want bitcoin for. It DOES make sense for transaction fees to rise then.

That's the other side of it too--you don't want to give miners an incentive to do that.  You want mining for alternative schemes to just be "free money" for them, which is what happens when you use your own blockchain paid for in bitcoins (rather than burned of course).
How exactly do you propose to have my own blockchain paid for in bitcoins? The only way I see this is via markets like mt.gox or OTC, which requires willing buyers and sellers.

My scheme gives the miners a very easy scheme to be "free money" for them. They'd earn more in transaction fees than they would if my scheme wouldn't be implemented.
Pages:
Jump to: