Pages:
Author

Topic: Post your SegWit questions here - open discussion - big week for Bitcoin! - page 26. (Read 84849 times)

staff
Activity: 3458
Merit: 6793
Just writing some code

Quote
The driver for SegWit seems to be purely LN

This is an rbtc talking point-- it has no basis in reality.   Segwit is largely orthogonal to lightning, and proposed long after it. The reason people keep claiming it is because segwit is above reproach and lightning is less well understood and easier to FUD.


Hmm, I suspect actually a lot of people think that because on the Segwit FAQ, here: https://bitcoincore.org/en/2016/01/26/segwit-benefits/ it says:

Quote
Who benefits?
...
...
The Lightning Network
...
Sure the lightning network benefits from segwit, but it is not the only reason (if a reason at all) that segwit exists. If you look at the rest of the document, there are a whole lot more benefits than just LN. The rbtc taking point is that segwit is only for lightning, but it most certainly is not.
hero member
Activity: 1029
Merit: 712

Quote
The driver for SegWit seems to be purely LN

This is an rbtc talking point-- it has no basis in reality.   Segwit is largely orthogonal to lightning, and proposed long after it. The reason people keep claiming it is because segwit is above reproach and lightning is less well understood and easier to FUD.


Hmm, I suspect actually a lot of people think that because on the Segwit FAQ, here: https://bitcoincore.org/en/2016/01/26/segwit-benefits/ it says:

Quote
Who benefits?
...
...
The Lightning Network
...
staff
Activity: 4326
Merit: 8951
I would have gone for |r| and |s| personally so no explicit rejection would be required. I wasn't sure that N-s was negative for all values of N,
You are showing an impressive level of ignorance here: N-s is _never_ negative, s is a field element.  

Quote
both DER encoding and ECDSA malleability are already addressed and not usable as a "malleability fix" argument for SegWit.
Malleability in Bitcoin goes far beyond just signature encoding malleability. Multistep multiparty protocols like coinswap require that the other signer in a 2 of 2 not be able to invalidate a chain (or extreme amount of additional protocol phases); this can never be accomplished with a DL signature since they inherently must have a random input, so long as the signature itself is part of the identifier. Segwit's approach to eliminating signature malleability gives a guaranteed solution to all forms that would potentially invalidate a chain of transactions.

There has only ever been one other proposal that provided an equally complete solution, but it had the downside of doubling the UTXO set size and roughly doubling the amount of transaction hashing work.

Quote
It would be a side-chain if the changes weren't being implemented. I do indeed know nothing about LN.

Clearly you don't-- because this statement makes no sense.

Quote
The driver for SegWit seems to be purely LN

This is an rbtc talking point-- it has no basis in reality.   Segwit is largely orthogonal to lightning, and proposed long after it. The reason people keep claiming it is because segwit is above reproach and lightning is less well understood and easier to FUD.

Quote
2. It is the architecturally correct solution for outsourcing the txID generation-that's it. If you are going to do that, then make it a plugin module then it doesn't need to be in Bitcoin at all and anyone can use their own, including legacy (maybe a default module). It is a poor solution just for malleability and a straight-jacket for txID generation.

You seem to be confused about what a txid is really used for.   From your comments it seems that you think that wallets are somehow distinguishing payments that way. That isn't the right way to distinguish a payment... Bitcoin Core doesn't, it tracks outpoints (either as inputs for conflict handling or outputs for payments).  No one cares much about the cosmetic implications of malleability, they're largely irrelevant.

Transaction IDs are an essential part of the Bitcoin consensus rules. A transaction selects the coins it will spend by specifying the transaction IDs of the transactions that created those coins.  These IDs are included under the subsequent transaction's signature.  If something happens to change a transaction's TXID then all subsequent descendant transactions are invalidated. This is what people care about.

No amount of module whatever can do anything to help that.  So what you propose would only ad a cosmetic issue that almost no one cares about ('I can't look up the txid I was expecting in a block explorer')-- and if anyone cared it would already be solved, as it's not a consensus change.
legendary
Activity: 1260
Merit: 1019
is it make them work so hard
It is not hard. But you have to be responsible for you actions.
It is not good idea to do everything just because it is easy and somebody told you to do it.

How many (percentage) of miners that approved SegWit upgrade? What the best site to determine the progress about it?

hero member
Activity: 1036
Merit: 514
How many have now updated to 0.13.1, they need at least 95% don't they?
Do we know if all the wallet providers are supporting the upgrade?
SegWit needs 95% of the miners to upgrade.  You can look at the block version to see if the miner has updated (version is x'2000002' for SegWit).  So far, I'm seeing around 1 block in 10 that has the SegWit version.  So there is a long ways to go yet.  I already have a SegWit transaction in the blockchain just waiting for the support to be locked in (you can create a P2SH-P2WPKH transaction but you can't spend it yet).

Looks like I have much to read about it, I've read some articles about SegWit but not fully understand why some miners don't like it to implemented, is it make them work so hard or less fee, or what?
How many (percentage) of miners that approved SegWit upgrade? What the best site to determine the progress about it?
Thank you.
legendary
Activity: 3962
Merit: 11519
Self-Custody is a right. Say no to"Non-custodial"

This has been done in Bitcoin,
Not just done in Bitcoin, but we came up with that improvement; and ripple borrowed it long after-- including the code for it. I put him on ignore after that post: There is nothing worse to deal with in this subforum than a chest-thumping altcoin promoter bragging about an altcoin being superior on the basis of code or techniques they coped from Bitcoin Core.

Ad hominem response that adds nothing and addresses nothing. I expect better.


You are coming off as a bit crazy if you believe that gmaxwell's above response fits into the "ad hominem attack" category.  It appears to be that you, TransaDox, are engaging in an ad hominem attack of gmaxwell by asserting that his response was an ad hominem attack

gmaxwell seems to provide a historical perspective in order to attempt to clarify the order of events... in other words, he is asserting that bitcoin came up with an invention first that was stolen by some alt (ripple) and then promoted by that alt as if it were the invention of the alt..

If you believe that gmaxwell is misstating some facts or some historical events, then maybe, arguably, there could be some kind of ad hominem attack going on with gmaxwell's respone.,.,. but does not seem to be the case.

If you have some kind of basis for your assertion, TransaDox, maybe you could explain a bit more what you mean more by the term "ad hominem attack" in this context?
full member
Activity: 219
Merit: 102
This has been done in Bitcoin,
Are you referring to
> LN will be the only side-chain

LN is not a sidechain. The fact that you say this suggests you know very basically exactly zero about LN. You might want to educate yourself before offering an opinion on it.
I beg to differ. It would be a side-chain if the changes weren't being implemented. I do indeed know nothing about LN. I don't care how it uses SegWit in a similar way that I don't care how coloured coins use Bitcoin- I am only interested in bitcoin and its SegWit solution. The driver for SegWit seems to be purely LN so that is political rather than technical driver and that worries me. Are you going to go as far as saying LN is Bitcoin 2.0?

> The point is that malleability is an edge case symptom that can be solved without adding a lot more complexity

This is wrong on two counts: 1, no it cannot be solved in a different way without adding a lot more complexity, and 2, segwit, at least in general terms, is the architecturally correct and simple solution to the problem. See the bip62 doc that you were already linked to for details on the first point.
1. I disagree. I have already outlined (albeit vaguely) several solutions. You want a txID not fixed to a signature. This isn't rocket science.
2. It is the architecturally correct solution for outsourcing the txID generation-that's it. If you are going to do that, then make it a plugin module then it doesn't need to be in Bitcoin at all and anyone can use their own, including legacy (maybe a default module). It is a poor solution just for malleability and a straight-jacket for txID generation.
 
Bitcoin's existing design for this is just wrong (or at the very least, not the best one): the signatures authorizing the transaction are included inside the final txid hash, which is being used as a transaction identifier; but it doesn't identify the transaction. The authorising portion (signatures) should be outside the hashed data/transaction as they are not part of the semantic content of the transaction, they are only an authorisation of that semantic content.
I agree entirely. We only disagree that SegWit is the optimal solution.

This has been done in Bitcoin,
Not just done in Bitcoin, but we came up with that improvement; and ripple borrowed it long after-- including the code for it. I put him on ignore after that post: There is nothing worse to deal with in this subforum than a chest-thumping altcoin promoter bragging about an altcoin being superior on the basis of code or techniques they coped from Bitcoin Core.

Ad hominem response that adds nothing and addresses nothing. I expect better.

staff
Activity: 4326
Merit: 8951
This has been done in Bitcoin,
Not just done in Bitcoin, but we came up with that improvement; and ripple borrowed it long after-- including the code for it. I put him on ignore after that post: There is nothing worse to deal with in this subforum than a chest-thumping altcoin promoter bragging about an altcoin being superior on the basis of code or techniques they coped from Bitcoin Core.
sr. member
Activity: 469
Merit: 253
Quote
Of course. "Malleability" is an umbrella term
First of all, ecdsa malleablity is the abliity to change the signature itself for the same
data without invalidating it by the person who knows the secret or by the "middle-man"

Sure, because distinguishing between  σ = (r,s) and σ'= (r,N − s) is just too hard for bitcoin, eh?  Angry
Ripple uses (r,s) < (r,N − s)?  (r,s):(r,N − s)

This has been done in Bitcoin, see BIP66: https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki

> LN will be the only side-chain

LN is not a sidechain. The fact that you say this suggests you know very basically exactly zero about LN. You might want to educate yourself before offering an opinion on it.

> The point is that malleability is an edge case symptom that can be solved without adding a lot more complexity

This is wrong on two counts: 1, no it cannot be solved in a different way without adding a lot more complexity, and 2, segwit, at least in general terms, is the architecturally correct and simple solution to the problem. See the bip62 doc that you were already linked to for details on the first point.

Bitcoin's existing design for this is just wrong (or at the very least, not the best one): the signatures authorizing the transaction are included inside the final txid hash, which is being used as a transaction identifier; but it doesn't identify the transaction. The authorising portion (signatures) should be outside the hashed data/transaction as they are not part of the semantic content of the transaction, they are only an authorisation of that semantic content.

There is a huge amount of resources that explain what segwit is, it is nothing to do with the paranoid fantasies being spread about. Do some research.



full member
Activity: 219
Merit: 102
Quote
Segwit started as an element in elements alpha. It allows for safe chaining of pre-signed transactions, which is important for payment channels and lightning network. The version in elements just changed how we defined txids, which we can't do in bitcoin. It's hard to imagine doing hard-forks in bitcoin just for this. Non-security hard-forks are going to be very hard to get consensus on.

As deployed, there's this key insight that you deploy a type of extension block and you can enforce inside of this extension some new rules. Some things that look like hard-forks turn into soft-forks. So we can sneak in confidential transactions as a soft-fork. So you have the base block and then you commit to something, and in this other block you reveal the real data that shows you own this bitcoin. As a highly desired extension, it kind of fits this model.
Source. (My emphasis)

I knew there was more to this than a "malleability  fix".

Quote
It's one of the largest changes to bitcoin ever. It has touched nearly all areas of the bitcoin code base, like p2p, wallet, consensus, every layer.

OK. So the whole codebase has been modified to account for this one side-chain, the reason being that if affords confidentiality for LN and to no-one else. For this reason alone it is cancer.

Now. It is certainly desirable to fix malleability and even allow side-chains to use the BC for their own back end systems. The proper way would be to allow others to plug-in a module at run-time so that anyone could create their own plugin module and distribute it with their wallet software. Hell. You could even support an unlimited number of "variants" from Bitcoin Core. LN could then have created a specific plugin for their wallets. As it happens, I've wanted the reference software to go down the plugin path for quite some time (the address creation, hash used, the mining method etc) but it is clear that is just a pipe-dream.

It seems to me that should this go live, then LN will be the only side-chain worth using with guarantees of confidentiality and everyone else has to wash all their clothes in public. Is this the case?
staff
Activity: 3458
Merit: 6793
Just writing some code
Speaking of malleability, I assume that the wtxid doubleSHA256([nVersion][marker][flag][txins][txouts][witness][nLockTime]) is now malleable but that is handled appropriately? Not sure if BIP 147 was meant to address part of this issue.
Yes, the wtxid is malleable, but it is not actually used for anything so that does not matter.
jr. member
Activity: 43
Merit: 1
Speaking of malleability, I assume that the wtxid doubleSHA256([nVersion][marker][flag][txins][txouts][witness][nLockTime]) is now malleable but that is handled appropriately? Not sure if BIP 147 was meant to address part of this issue.
legendary
Activity: 1260
Merit: 1019
Of course. I have already said it was an "umbrella term" to which amacilin picked one

The owner of private key can create several different valid signatures for the same data needed to sign.
This is also "malleability" and I told you about it ( ...by the person who knows the secret... )
The biggest advantage of segwit is that the txid would not change with different signatures
and can be calculated *before* signing the transaction
full member
Activity: 219
Merit: 102
This isn't the only source of malleability. The abandoned BIP62 lists ways in which a Bitcoin transaction is malleable:

  • Non-DER encoded ECDSA signatures
  • Non-push operations in scriptSig
  • Push operations in scriptSig of non-standard size type
  • Zero-padded number pushes
  • Inherent ECDSA signature malleability
  • Superfluous scriptSig operations
  • Inputs ignored by scripts
  • Sighash flags based masking

Of course. I have already said it was an "umbrella term" to which amacilin picked one and I specifically gave him a solution to that. I also mentioned  hashing the final stack which would fix:

  • Superfluous scriptSig operations
  • Inputs ignored by scripts
  • Sighash flags based masking
  • Non-push operations in scriptSig

The DER encoding is a consensus issue since OpenSSL accepts BER and DER (DER being a subset of BER). Pre-checking before passing to OpenSSL is trivial.

The point is that malleability is an edge case symptom that can be solved without adding a lot more complexity. There is a lot more to this SegWit proposal than we are being told.
full member
Activity: 205
Merit: 105
Sure, because distinguishing between  σ = (r,s) and σ'= (r,N − s) is just too hard for bitcoin, eh?  Angry
Ripple uses (r,s) < (r,N − s)?  (r,s):(r,N − s)

This isn't the only source of malleability. The abandoned BIP62 lists ways in which a Bitcoin transaction is malleable:

  • Non-DER encoded ECDSA signatures
  • Non-push operations in scriptSig
  • Push operations in scriptSig of non-standard size type
  • Zero-padded number pushes
  • Inherent ECDSA signature malleability
  • Superfluous scriptSig operations
  • Inputs ignored by scripts
  • Sighash flags based masking
legendary
Activity: 3962
Merit: 11519
Self-Custody is a right. Say no to"Non-custodial"
full member
Activity: 320
Merit: 101
full member
Activity: 219
Merit: 102
Quote
Of course. "Malleability" is an umbrella term
First of all, ecdsa malleablity is the abliity to change the signature itself for the same
data without invalidating it by the person who knows the secret or by the "middle-man"

Sure, because distinguishing between  σ = (r,s) and σ'= (r,N − s) is just too hard for bitcoin, eh?  Angry
Ripple uses (r,s) < (r,N − s)?  (r,s):(r,N − s)
legendary
Activity: 1260
Merit: 1019
You need to re-read the post.
Sorry, too difficult for me to catch all nuances. My English is far from perfect.

Quote
Of course. "Malleability" is an umbrella term
First of all, ecdsa malleablity is the abliity to change the signature itself for the same
data without invalidating it by the person who knows the secret or by the "middle-man"
full member
Activity: 219
Merit: 102
This seems far from "impossible".
MD5 is not malleable, but ECDSA is.
MD5 is hash-function, but ECDSA is signing
You need to re-read the post.

Of course. "Malleability" is an umbrella term for multiple issues that affect corner cases. For example. The script is hashed then signed causing a different hash if the instructions are changed but, never the less, yield the same result. The solution to this aspect, I believe, is to hash the final stack instead of the current method.
Pages:
Jump to: