Skip to main content
OverflowAI is here! AI power for your Stack Overflow for Teams knowledge community. Learn more
17 votes
Accepted

When Schnorr signatures are part of Bitcoin will it be possible validate each block with only one signature validation?

Yes, one validation per block, but not one signature per block. To clear up confusion, there are 3 distinct technologies involved here: (1) non-interactive aggregation is the ability for a third ...
Pieter Wuille's user avatar
15 votes
Accepted

Schnorr's batch validation

You're right that the elliptic curve multiplication is indeed the most expensive operation in the validation algorithm. And as both single signature validation and batch validation require two EC ...
Pieter Wuille's user avatar
13 votes
Accepted

How long does block validation take?

There are several questions here. Please correct me if I'm wrong: The miner validates the newly received block before using it themself and sending it to their other connected peers. Yes and no. ...
Pieter Wuille's user avatar
9 votes
Accepted

How do you validate a bitcoin address using bitcoinjs library in javascript?

If you call bitcoin.address.toOutputScript(address, bitcoin.networks.bitcoin) It will throw an error if the address cannot be parsed as P2SH or P2PKH, or if the checksum is not valid. Replace the ...
Nick ODell's user avatar
  • 29.4k
9 votes

How to prevent a miner from stealing another miner's block?

A is protected by adding coinbase transaction with himself's bitcoin address. from https://en.bitcoin.it/wiki/Block_hashing_algorithm The body of the block contains the transactions. These are ...
Mithril's user avatar
  • 333
8 votes
Accepted

How strict are the Unix Epoch time validation rules?

How strict are the time validation rules? Very. If the next block is mined more than 2 hours after the current block, would this not stall the blockchain? No. It doesn't break the rule "Full ...
RedGrittyBrick's user avatar
8 votes
Accepted

What does an un-upgraded node see when new Taproot transactions are on chain?

Yet, if the transactions are valid, the old nodes have no idea where those coins got spent. Are they seen as lost coins? Old nodes do know where the coins are going, as the transaction format didn't ...
Pieter Wuille's user avatar
7 votes
Accepted

How are transactions verified with only the Bitcoin address, not the public key?

When you spend from a Bitcoin address, your transaction includes both the public key corresponding to the hashed address you're trying to spend from, as well as a signature that can be verified with ...
ieatpizza's user avatar
  • 2,068
7 votes

How strict are the Unix Epoch time validation rules?

I think you have a misconception about what this clause means: Full nodes will not accept blocks with headers more than two hours in the future according to their clock. You appear to be ...
Douglas's user avatar
  • 171
6 votes
Accepted

What forces transactions to be visible to all miners?

A transaction can go in a block if it's valid (references inputs that are already in the same or previous blocks, scripts are legal and return success, and signatures validate ok), regardless of ...
Nate Eldredge's user avatar
6 votes

How does copying main stack prevent malformed unlocking scripts vulnerabilities?

you can find explanation here: https://bitcointalk.org/index.php?topic=5095376.msg49150302#msg49150302 the issue was actually with OP_RETURN. What OP_RETURN used to do is it would skip to the end ...
LIU YUE's user avatar
  • 214
6 votes

Schnorr batch validation speed statistics

Speedup in well optimized cryptographic functions are hard to come by. In libsecp256k1 we'll usually celebrate a 4% algorithmic speedup. Figures on the order of 2x are reasonable for the usage in ...
G. Maxwell's user avatar
  • 7,727
6 votes
Accepted

Does Bitcoin Core validate signatures by default?

Bitcoin Core does validate all signatures after a certain point, and can be configured to validate all signatures in history if so desired. The assumevalid feature only disables signature validation ...
Ava Chow's user avatar
  • 70.7k
6 votes
Accepted

Is it theoretically possible to have an inverted nLockTime?

This is intentionally not possible. If a transaction would be valid in block X, we want it (absent double spend) to remain valid in any successor of X. This guarantees that (temporary, otherwise ...
Pieter Wuille's user avatar
6 votes
Accepted

If my node is connected to 7 nodes and 4 of those say that a block they transmitted to me is valid will i mark it as valid?

No, every node validates transactions and blocks independently according to a shared ruleset. It doesn't matter if someone creates a hundred nodes to connect to you and send you invalid transactions ...
Vojtěch Strnad's user avatar
5 votes

Which sender is banned in case of invalid transactions or blocks?

There is no way to know which node created a transaction or block, unless they publish that information themselves. Nodes should not have an identity that leaks into transaction or block data. So ...
Pieter Wuille's user avatar
5 votes
Accepted

Does bitcoin validate transactions against the mempool?

A transaction that has been included in a block does not need to be in a node's mempool in order for that node to validate the block. Each block contains the transactions, so by downloading and ...
chytrik's user avatar
  • 18.3k
5 votes

How do nodes come to consensus on whether a timestamp is valid?

They don't need to. If a block's timestamp is in the future, it won't be accepted - but it also won't be marked as invalid. Once enough time passes, the node will accept the block if it is offered or ...
Pieter Wuille's user avatar
5 votes
Accepted

How is a bitcoin transaction validated?

Nodes maintain multiple databases, they do not just store the blockchain and scan it every time it wants to do something. These databases include a block index (so that it knows where to find a block) ...
Ava Chow's user avatar
  • 70.7k
5 votes
Accepted

Are attempts to spend from a timelocked UTXO rejected?

I'm going to only address the first part of your question, as I think the root of your confusion can be addressed there. Time locking in Bitcoin refers to two related and interacting, but ...
Pieter Wuille's user avatar
5 votes

Bitcoin Core file with the signing keys was removed from repo. How is the process supposed to be now?

Instead of fetching the keys from keyservers by fingerprint, you can now get the keys actually used from https://github.com/bitcoin-core/guix.sigs/tree/main/builder-keys. This repository contains all ...
Ava Chow's user avatar
  • 70.7k
4 votes

how to evaluate if this (or any) bitcoin public key / private key combination is valid?

First, what you defining as public key and private key are actually a bitcoin address and a private key encoded in Wallet Import Format (WIF). In order to check that the WIF and the bitcoin addresses ...
sr_gi's user avatar
  • 3,220
4 votes

Would moving a transaction from an old block to a new one allow more pruning?

This seems a lot of effort for absolutely no benefit. In the Bitcoin pruning model you discard ALL those old blocks anyway, and JUST keep the utxo set. It doesn't matter whether a utxo is in an old ...
Riaan Swart's user avatar
4 votes

What forces transactions to be visible to all miners?

Whomever originates the transaction (the sender) wants their transaction completed as quickly as possible, especially if they attached a big "incentive" (fee) to it. So they will announce their ...
abelenky's user avatar
  • 1,344
4 votes
Accepted

What prevents anyone from spending utxos from a native segwit address?

Segwit is a soft fork. A supermajority of miners have agreed that they will not include such transactions in their blocks, and will orphan any block that does include such a transaction. If you send ...
Nate Eldredge's user avatar
4 votes
Accepted

A couple of questions on Schnorr sig

A schnorr signature, without key prefixing, is a tuple {pubkey (P), message (m), R, s} where the equation R == sG + H(R||m)P holds. Now, assume you have pubkeys P and P2 who's discrete logs differ ...
G. Maxwell's user avatar
  • 7,727
4 votes
Accepted

How are blocks verified?

A block consists of a header, and then a number of serialised transactions. The block header contains no script, it only contains data such as the merkle root of the transactions in the block (so the ...
meshcollider's user avatar
  • 11.8k
4 votes
Accepted

Why every node needs to validate a transaction in Bitcoin

I think your confusion comes from a slight misunderstanding of the reason a node validates all transactions/blocks. This validation is done so that the user running the node can join the network and ...
chytrik's user avatar
  • 18.3k
4 votes
Accepted

How to tell if a transaction is valid?

When you spend Bitcoin in a transaction, the transaction must reference at least one existing unspent transaction output (UTXO) and provide a valid signature proving that you are authorized to spend ...
Murch's user avatar
  • 75.7k
4 votes

Does each block contain all the Bitcoin transactions for that time period?

The process of a transaction being created and included in the blockchain is as follows: The sender creates, signs, and broadcasts the transaction All Bitcoin full nodes, including miners and regular ...
billygarrison's user avatar

Only top scored, non community-wiki answers of a minimum length are eligible