text:
Proof-of-inclusion: Merkle Tress, derivation paths
My assumption is that when transaction proof of inclusion occurs, it takes place only at full nodes, since this may happen when a block is mined (as a node has to evict transactions from its mempool to make sure the same txns aren't added in their candidate block) and when someone queries a block explorer and the full nodes hold all the transactions (needed for merkle proofs). Is this true?
In these cases then, wouldn't it be quicker to just search through the transactions for a match instead of doing merkle proofs? How does a node know which block a TX is in? The transaction data doesn't contain what block it is in, so does a node start scanning the chain downwards?
When someone queries a proof-of-inclusion, a bitfield is constructed as a derivation path down to the leaf in question. For this to work, I assume that for each merkle root, is a mapping, and the associates nodes and all transactions. Doesn't this defeat the purpose of a merkle tree then, still needing to hold all information + more? So is it just to summarise the transaction data in a block header to add some more entropy to a block hash?
If only the root and leaf are known, how is a derivation path found?
Is it so that that a light clients queries full nodes on who construct the merkle tree on the fly, providing a tree which the light client can then perform proof of inclusion?
I know I am missing something. Could someone please fill me in here? Thank you.
PS: Apologies for the long drawn out question.

My assumption is that when transaction proof of inclusion occurs

Which proofs of inclusions are you talking about? The only ones I'm aware of in the Bitcoin P2P protocol are those in BIP37 (server side Bloom filtering of transactions). There are other uses though (e.g. utreexo), but you'll need to be specific.

it takes place only at full nodes, since this may happen when a block is mined (as a node has to evict transactions from its mempool to make sure the same txns aren't added in their candidate block) and when someone queries a block explorer and the full nodes hold all the transactions (needed for merkle proofs). Is this true?

Block explorers have nothing to do with inclusion proofs. They just search their database for the transaction. They don't need any proof, because they run their own node, so they know the transactions they have were included - if they weren't, they wouldn't have been entered into their database.

In these cases then, wouldn't it be quicker to just search through the transactions for a match instead of doing merkle proofs?

Merkle proofs are only used when one party needs to prove to another that a transaction was included in a block. They are not involved in block explorers at all, as they're just showing users data - nothing is being proven.

How does a node know which block a TX is in?

Normal Bitcoin P2P nodes don't, and have no need for this. The protocol supports querying for unconfirmed transactions that were recently relayed (so they're not in a block yet), and supports querying by block. With BIP37 (which is increasingly being abandoned due to bad privacy and DoS risks) it is/was possible to first tell a node which addresses/scripts/transactions you were interested in by sending a Bloom filter, and then ask for "filtered" blocks - blocks with irrelevant transactions removed, and replaced with inclusion proofs for the remaining ones.

The transaction data doesn't contain what block it is in, so does a node start scanning the chain downwards?

At least in the Bitcoin P2P protocol, this simply does not happen as it is unnecessary.
Outside of that, indexes are used. For local usage, Bitcoin Core can build an index that remembers which transaction was found in which block, so it can be looked up by txid. The Electrum protocol (which uses separate Electrum servers) may support querying by txid as well, and its servers need an index for that too. I believe they do also construct inclusion proofs (which are built on the fly when requested).

When someone queries a proof-of-inclusion, a bitfield is constructed as a derivation path down to the leaf in question. For this to work, I assume that for each merkle root, is a mapping, and the associates nodes and all transactions. Doesn't this defeat the purpose of a merkle tree then, still needing to hold all information + more? So is it just to summarise the transaction data in a block header to add some more entropy to a block hash?

It's very hard to answer this without knowing the concrete application you're talking about. In general, inclusion proofs are unrelated to the problem of finding the data - someone needs to have it, and they can use it to prove it to others.

If only the root and leaf are known, how is a derivation path found?

You can't. Proofs are used to prove to someone who has the root already (and trust it) that a particular leaf is in fact part of the tree that that root commits to. Obviously the party constructing the proof needs to know which leaf somehow, and the rest of the block.

Is it so that that a light clients queries full nodes on who construct the merkle tree on the fly, providing a tree which the light client can then perform proof of inclusion?

Yes, that's what happens in BIP37 filtered block querying, and presumably also in other protocols.

Thanks again Pieter! Understood. Should have realised that merkle-proofs is self-explanatory, for providing 'Proof' that a txn exists in a merkle tree.

Still roughly answering & hoping I can clarify the vague area:
1-Witnesses or proofs r used by stateless nodes not full nodes ( their use in full nodes is a future work of the Utreexo project). Stateless nodes r something bet full & lite nodes which doesn't store the whole Merkle Tree just the proofs it needs
2-I think the checking-verifying doesn't work as u wrote...

if u noticed in block explorer, u press the numeric value of the UTXO to know where it came from
-So the transaction contains the position of the UTXO in the database, I think, which is linked to the position of it's hash as a leaf node in the Merkle Tree.
.
3-Now u reached the UTXO hash, and u do have the accumulated hash of all existing UTXOs( the root value), u go upward (not downward) from the leaf to the root to know if this leaf hash is correct. This is done by getting all the sibling hashes along the way to extract the leaf from the root and compare both values.
-Those is why it's better to have a tree structure, to get only O(log n) sibling values if the tree is balanced.

I think these images may help explain it more

(To verify the green value HL given the root value, u need to get all the blue values. They're called siblings as they're in the same level of the tree as the UTXO u r verifying, or the upward Internal node in its path)
Original text from the paper https://youtu.be/HEKtDILPeaI

Sorry, I downvoted. I find this incomprehensible.

I said it's a rough quick answer

I mean it doesn't annoy me if someone had a better answer to help the person who asked, but it does annoy me when someone downgrade a Q without answering it ... u do not promote the transfer of knowledge & science this way

Putting dots on the empty lines breaks your formatting and makes your posts difficult to read. Please use proper words instead of chat lingo like "u" and "r" and make sure that your sentences are grammatically sound.

That's a "meta-group" topic, but I don't think an answerer should have the right to downvote a competing answer, or a Q without answering, answers should be arranged/voted according to correctness for the "came to know & understand" asker. I don't think the "style of writing" is more important than what is written. I came here to find answers which I didn't; when tried to volunteer to help others in same situation by answering what I can, got a "repelling attitude"

Ok, I've withdrawn my downvote to avoid the impression of a conflict of interest. My intention isn't to criticize; I feel this answer is too hard to read to understand and that makes it a bad answer, and I feel like I owe an explanation when I downvote someone, so the answer can be improved. Style is only one aspect of this.

For what it is worth, I also couldn't understand the answer and downvoted. From what I did understand I thought it was answering a question not posed by the asker. The downvote is there for this purpose. However, I am also happy to withdraw my downvote if you feel it is discouraging.

@ShAr: I'm sorry that you felt that you got a hostile reception. Our community's goal is to build an archive of useful content. Posts that are clear and comprehensive are more expedient to that end than posts that are hard to read or miss the topic. We use upvotes and downvotes to direct our users' and our readers' attention at the content we consider the most useful. Downvotes can generally be avoided by investing a reasonable amount of attentiveness to the form of posts.


text:
Why is Bitcoin Core not asking me to enter the decryption key for my allegedly "encrypted" wallet.dat?
I created a wallet.dat with Bitcoin Core on a new PC. Then I encrypted it with the GUI menu.
When I reloaded that computer, I was shocked to see that Bitcoin Core did NOT ask me to decrypt/unlock the wallet.dat -- it just loaded it right back up. The only indication I got that it was encrypted was that the "Encrypt wallet" menu item was disabled/greyed out. Not even a small text saying: "This wallet is encrypted."
Obviously, this made me feel as if it was not encrypted at all. So, assuming that Bitcoin Core had saved some kind of decryption file on my other computer from which it auto-decrypts it or something, I transferred the wallet.dat over to my current computer, also running Bitcoin Core. Same thing there: the only indication that it's encrypted is that disabled menu item.
Nothing else. I'm able to read the labels and see all the receive addresses and everything. Since the wallet has no actual Bitcoins in it yet, I can't test to make a transaction, but hopefully, at least that will prompt for the decryption passphrase.
Is there something I'm missing? Why isn't encrypting a wallet.dat actually encrypting its data? Is this like that idiotic practice that WinZip/ZIP format used to do where you could see all the files and the filenames but just couldn't read the file contents without the password? I never understood the point of that, and I certainly don't understand the point of Bitcoin's encryption if all it does is prevent you from sending coins away, but still allow you to snoop on the labels and receive addresses and all that.

Only the private keys are encrypted if you have an encrypted wallet.dat. The passphrase is only asked when those are needed, i.e. when you try to send coins.

Okay. Why is that?

@NicholesH probably because A) The private keys are the only important data in the wallet, everything else is either public knowledge or relatively inconsequential. and B) to avoid causing what some users would consider unnecessary annoyance.

The direct reason is probably because that's what the person who worked on it cared about, and not many people argued otherwise. Personally I think this makes sense, as the privacy functionality (if desired) is much better fullfilled by the operating system, by encrypting the whole disk. But protection of funds beyond encryption of user data isn't something that's easy to do outside of the wallet software.

I'm not sure I follow the reasoning. It seems like a very major privacy implication to have all your labels leaked. I've seen guides that tell you to "safely upload your wallet.dat to the cloud now that you've encrypted it". Of course, I would never follow such inane advice, but others might, thinking that the encryption applies to the entire wallet.dat and not just the sending of money part.

It’s not really the fault of wallet encryption written a decade ago that people today are giving poor advice though.

To trigger the added encryption password, you need to close the wallet. While it's "open" in your Bitcoin Core, it will only ask for the passphrase when sending a transaction. Essentially, behind the scenes that means it signs the transaction before announcing it to the network.
Closing the wallet unloads it from your Bitcoin core and enables the 'double encryption'. Even without closing the wallet, if someone managed to retrieve your wallet file, depending if it's while you are synced to the network (and therefore your wallet directory contains the wallet_lock file, they wouldn't be able to send out any Bitcoin you might have without the passphrase.
You can learn more here.
If you really want to test it without having a balance, open the console and try any of the dumpwallet or dumpprivkey commands and any other you find among the list using help to test what you think might enable a bad actor to steal your BTC and see what happens. You'll find that most give you a warning that you need to enter the passphrase first.
It's like someone driving by your house with the window open, they can see you have a big screen TV but that doesn't mean they can open the front door.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Is Bitcoin considered mobile money (formal definition)?
I'm using an IMF data set that includes mobile money variables along with a data set of cryptocurrency use. I found the mobile money variables to be highly correlated with the cryptocurrency use data. I'm wondering now if cryptocurrency trading and payment platforms are actually being considered as mobile money and directly contributing to the mobile money data. And if no is a clear answer for this, any theories about the correlation?
See IMF data here: https://data.imf.org/?sk=388DFA60-1D26-4ADE-B505-A05A558D9A42&sId=1479329132316
Codebook here: https://data.imf.org/?sk=E5DCAB7E-A5CA-4892-A6EA-598B5463A34C&sId=1460040555909

Which the jurisdiction?

Does the IMF consider Bitcoin to be "Mobile Money"? (paraphrased)

It appears not.
Their Mobile Money Note 2019 defines Mobile Money as

Mobile money is a pay-as-you-go digital medium of
exchange and store of value using mobile money accounts
which is typically offered by a mobile network operator
(MNO) or another entity in partnership with an MNO. It has
had a profound impact on the way people access finance,
particularly in countries without deep banking penetration
and with poor infrastructure.
Mobile money offers a novel way to access financial services,
especially for individuals who do not have access to traditional
banking services, as the only requirement is a basic mobile
phone. Customers need to register with a mobile money agent
to obtain an individual virtual account linked to their mobile
phone number and accessible through a SIM card. Users can
carry out financial transactions—including making peer-topeer
transfers, bill payments, in-store purchases, remittances
and savings—across mobile money accounts through the data
messaging channel. In select countries, microcredit is also
offered via mobile money. Studies suggest that, as mobile
money reaches scale, new and enhanced services including
credit and insurance may be offered through this channel on a
larger scale (GSMA, 2018a).

So the IMF consider mobile money to be money that is tied to mobile phones.
Although there are Bitcoin-wallet apps that run on mobile phones, they
do not require registration with a mobile money agent. They don't link virtual accounts to mobile phone number. They don't use GSM's data messaging channels.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Wasabi-wallet slow startup

Every time I start Wasabi Wallet, it spends a least one hour downloading filters.  Is this normal?

When I start Wasabi Wallet (having first started Tor), my previously saved wallet does not appear in the Wallet Explorer. Is this normal?

The only way I can open my wallet is using "Recover Wallet".
This behaviour does not seem right to me.  The documentation does not cover these questions.
Can anyone throw any light on this please?

It sounds as if your wallet doesn't have persistent storage. Are you running the wallet from an ephemeral operating system like Tails?

It's not supposed to be. When starting Wasabi for the first time, Wasabi does have a longer 'downloading filters'. If you're using Wasabi frequently, it shouldn't take that long. Have you changed any settings? Maybe try to switch back to the defaults and see if it works better. Or you could turn of tor and see if that might be a problem (please consider privacy risks before switching off tor)

No, that is not normal. If I understand correct: your wallet is also not displayed (using GUI) at 'wallet manager' -> 'Load Wallet'?
If not, is your wallet displayed in the 'wallet folder'?
See wallet folder: (top left corner) 'File' -> 'Open' -> 'Wallets Folder' ?

Hi, Thanks for your response.  It spends a long time downloading filters every time I restart the application.  I can't find the wallet files either.  Cound this be a problem with permissions?

The wallet is not displayed under 'load wallet', and nothing happens when I try to open the wallet folder.

I didn't mention, I thought you'd know it you're using it: Lucas put it this way 'it could be that you're using a mem disk or one of those privacy oriented OSes that create temporary disks and then delete everything? That's why it has to re-download all the filters and recover the wallet from seed and do a full rescan.' Could that be the reason?

Thanks for your help.  I'm using Linux Mint, which I have been using for many years without this kind of problem, although I have occasionally had problems with permissions.  The folder /Home/.walletwasabi does not appear to have been created.

Hmm ok, sounds like the reason why is your OS. Maybe this helps? https://forums.linuxmint.com/viewtopic.php?t=151399     if not, please let us know


text:
I am getting an RPC error when trying to run any Bitcoin-cli commands on Ubuntu
I asked this question on AskUbuntu and was told to post it here.
https://askubuntu.com/q/1373657/1519292
I am trying to follow the Mastering Bitcoin tutorial. After compiling Bitcoin Core, and changing the datadir to my external hard drive in the config file, I get the following error any time I try a Bitcoin-cli command:
error: Could not locate RPC credentials. No authentication cookie could be found, and RPC password is not set. See -rpcpassword and -stdinrpcpass. Configuration file: (/media/XXXX/f1ebcea0-6304-4580-9ce2-1416dc0be49f/BlockchainData/bitcoin.conf)
When I search the forums, the only solution to this error is that Bitcoind was not running, but I confirmed that it is running. I suspect it has something to do with my hard drive permissions or admin level, but everything seems to be set up properly.

datadir=/media/XXXX/f1ebcea0-6304-4580-9ce2-1416dc0be49f/BlockchainData is the only thing i have in it

This did not solve the issue. I resorted to re-formatting my drive and got a larger home drive. Thank you for the help though.

Since you are probably starting the daemon with a non-standard data directory, you'll need to specify the datadir every time you use the bitcoin-cli command, like this:
bitcoin-cli -datadir=/mnt/bitcoin YOUR_COMMMAND

Source: https://howchoo.com/bitcoin/run-bitcoin-full-node-raspberry-pi

I already re-formatted my hard drive, thank you for the help though


text:
public key to private key using HASH TABLE (Pollard's kangaroo for SECPK1)
I have done a little bit of research on HASH TABLE (Pollard's kangaroo for SECPK1) I was wondering if there is any way to extract the private key range using the public key or the public address..??

In secp256k1 there are 2256 possible keys. Pollard's kangaroo algorithm (and other known algorithms) run in time square root of the number of keys. So the algorithm would take ~2128 steps. This is completely infeasible. Just as a comparison: Bitcoin's hashrate is 160M TH/s. That's 160 million * 1 billion hashes per second. Say all of bitcoin's miners would try to find one private key, at a rate of one attempt per hash. It would take them 67 trillion years. As a comparison, the universe has existed for less than 14 billion years. (Also bitcoin's hardware isn't set out to find private keys but let's ignore that).
Caveat: Quantum computers enable special algorithms to solve the discrete logarithm problem exponentially faster. If such a computer existed it could potentially find private keys within seconds. That being said, quantum computers are still far away from reaching this level of maturity and some doubt whether they ever will.


text:
What is it about Bitcoin Core that always makes it so "glitchy" and "buggy"?
I've used Bitcoin Core for many years now. Primarily on Windows. While I appreciate its existence, and in many way, it's structured just as I want and expect it (except some really weird stuff which I've tried to ask about but can't get anyone to explain), my main issue is that I've lost count on the number of times that it just gets "stuck". It freezes. Stops responding. I'm forced to kill and restart it. Often it then takes forever to start up, saying something about "Rescanning" or other wording.
Right now, I've simply slept for six hours with my computer off, and come back to really struggling to get Bitcoin Core back up and running. I don't get how things like that happen. It just seems to randomly decide to break for no reason.
What is it with its code that apparently makes it so flimsy? Is it because it uses so much of the hardware to do all kinds of crypto calculations?
Oftentimes when I've really needed to use it, or make a transaction, I just can't get it to respond. It's so frustrating.
And this is not due to my computer, because it has been the same for numerous different machines and installations and I never have anything weird interfering with it. This general behaviour has not changed no matter how many times I've updated to a new version. It's as if the program is fundamentally unstable/fragile.
I wish I could at least understand why this is happening. I can deal with it, just barely, but it really makes it feel like a chore to use when you always have to be scared that it basically "locks the door on you" temporarily when you really need to "do your banking", just like the physical banks were only open for a very small window a day.
This is not about one single issue, or my current problem. It's about a seemingly never ending stream of similar issues/glitches/freezes/lockouts. Is this out of necessity due to how complex/demanding the software is or something? I just wish its internal work wouldn't affect the GUI, which it very much seems to do.

@Prayank 1. Sorry, what does Outlook have to do with this? The e-mail suite? 2. Don't know what to say... 3. Never even heard of those, but I'm talking about Bitcoin Core.

Bitcoin Core is a full node, meaning behind the scenes it's also going and downloading and validating every single block and every single Bitcoin transaction, which would explain why sometimes it's a little laggy. When you first start it up, it has to download all blocks between the last time you opened it and now, validate it all, then scan all of the transactions in there for transactions involving your addresses, which is what it's doing when it says it's "rescanning" or your balance is out of date.
If this is a significant problem for you, I suggest looking into a SPV client like Electrum which offloads that heavy work of maintaining a copy of the blockchain to outside servers. Instead, Electrum will verify things like there being sufficient proof of work on each block it fetches from the server, to ensure that the server can't feed it false data. If you would still like to run a full node, you could also look into running your own Electrum server.

It is a thing called software. Software is ditchy, buggy and glitchy.
That is why Software Engineers developed things like git, bugzilla, linux, ... stackexchange ... hang on? What exactly are you asking?


text:
Two kinds of Bitcoin addresses issued with bitaddress.org
I forked the bitaddress.org repository and generated a new paper wallet. On the output page there are two addresses generated: one "regular" and one "short address". Both start with 1 and are legacy addresses. I transfered a small amount to the short address and checked the balance on blockchain.com. The problem is that there is only a transaction on the short address. I expected the addresses to be linked somehow. What am I missing here?

I haven't heard of a short address, nor was I able to generate one when I went to bitaddress.org. Each key only has a single address that corresponds to that key.

In 'Wallet details' I enter the PK and get both the regular and the compressed address.

Using exact terminology helps. Compressed addresses exist (their name is derived from the fact that they use compressed public keys) - but in no way are those addresses any shorter than others.

Okay, so a compressed address and an uncompressed address are 2 separate addresses. They aren't linked, and the blockchain sees them as 2 entirely different addresses.
There are 2 different private keys, and the one starting with the number 5 is for the regular address whereas the one starting with the letter K or L is for the compressed address. If you want to use the uncompressed address you will have to import the private key starting with the number 5. If you want to use the compressed address, you will have to use the private key starting with K or L.
So now, what is a compressed address? The underlying ECDSA key for these two addresses is the same, just represented 2 different ways, one of which is longer than the other. The 2 private keys encode the same ECDSA key, they just have a small header that identifies whether the address being used is the compressed or uncompressed variant.
You should only use one or the other, not both. To the Bitcoin network, they are 2 different addresses, so if you wanted to use both you'd have to import both keys separately. However, because the underlying ECDSA key for both are the same, if you use both addresses, it is possible for an analyst to identify both addresses as belonging to the same person, and if someone got your compressed key, they would be able to easily figure out the key to your uncompressed address (and vice versa).


text:
How to send Bitcoins to "anyone"?
I am new to the cryptocurrency domain. I think I understand how to buy bitcoins (on CoinBase for example) and store them locally on my computer (thanks to a software such as Electrum).
I also know how to send bitcoins to someone identified by his address.
But how can I sell Bitcoins without knowing someone who is interested, so without specifying a particular address?

But how can I sell Bitcoins without knowing someone who is interested, so without specifying a particular address?

You can't. You first need to know who you're selling to if you're trading directly.
Perhaps you're asking about trading on an exchange, however? In that case, you'll have an account with the exchange, and deposit your BTC there (in many ways, but not all, like a bank account that holds fiat). To do so, you'll get a deposit address from the exchange, and send your coins there, and the exchange will credit your account. Then you can issue trading orders on the exchange, which will increment/decrement your BTC account value while decrementing/incrementing your fiat account value (or whatever you're trading against). The trading partners' account(s) will be decremented/incremented in the opposite way.
Note that when using such exchanges, you are trusting them to honor your balance with them. Exchanges can, and in the past have, ran off with customer funds. Don't leave your coins there longer than needed.

@Peter Wuille Thanks, that's very clear. So I have to transfer btc from my local wallet to the exchange wallet, then sell to the exchange from this wallet. Ils Coinbase or Kraken such an exchange? When selling, do I get euros / dollars / anything else?

Yes, and it all depends on the exchange.


text:
Saving diskspace in bitcoin with a sort of snapshot of the blockchain
I am reading that some people try to save diskspace in what information is stored in the blockchain. I am wondering if it is possible to save such a diskspace in taking a sort of snapshot of the blockchain where only all the wallets and their worth in BTC at time T_0 is saved, rather than their full transaction history. We would save the blockchain up to time T_0 in some archive and move on with the snapshot as a starting point for the next blocks, and repeat this process so that the current blockchain never takes too much diskspace.

There is no need.
If disk space is an issue, run a pruned node. Those still fully validate all transactions, only don't store them after validation.


text:
Can I get any info of the owner of the bitcoin wallet?
I transferred an amount by the Moonpay site to the person who didn't do what I paid him for.
Moonpay.com page advises me to go to the police and share with them all the information I have about the scammer. Can I get any info of the owner of the bitcoin wallet?

No, you cannot get any information about the identity of the recipient just from the Bitcoin address of the recipient.
Privacy was important to the inventor of Bitcoin and they made it difficult to trace participants in a transaction from just the information in a Bitcoin transaction.
If the recipient used a "custodial wallet" - an account with a business, rather than a normal "non-custodial" personally managed wallet, then some people claim to be able, in some cases, to identify the business who provided the account. But that business has a duty to protect the personal details of their customer. To get information from them might take a court order from a court in a foreign country.

Similar questions:

Tracing

Find recipient of a bitcoin transaction?
Can I Find out where I sent my bitcoin from my paxful wallet
Can bitcoins be traced to scammers
How is blockchain not responsible for someone stealing my Bitcoin?
Trace and contact bitcoin thief
Trace Bitcoin Fund Flows When There Are Multiple Input and Output Addresses

Recovery

How do I recover from a cryptocurrency scam?
Is there a 'BTC Refund Department'?


text:
Do Bitcoin deposits happen in 3 phases?
I recently had someone convert my sumcoin and said they were going to send to my Bitcoin wallet. I noticed that about $150 (of the $57,000) came through. He said that deposits of that size occur in 3 phases. I got the first two. The second would require me to send 0.059717 Bitcoin to "be paid by the investor directly to the blockchain technology, activation wallet address "
bitcoin:
bc1q5tx6vnhtr4ewwup246fe3xs6kgwrhql4l5xnp2
When I google that wallet it doesnt come back to anyone and appears to have around 41 transactions against it. Here is what the rest of his text says, "and as soon as it is recieved by the wallet the coins are automatically activated.
And YOUR FULL AMOUNT WILL SHOW ON YOUR BITCOIN WALLET ADDRESS SAME WAY THE $50 and $100 showed up
Note : THE 0.059717 Bitcoin is simply for activation and release purposes of your balance sent coins and you are to fund it into the blockchain technology activation wallet .  To avoid a reversion there’s usually a 14 business days limit placed on it
So ensure to have it funded within the next 14 business days to avoid the coins being held up completely
Thank you
We are here to provide the very best blockchain technology
Customer support"
When I asked him to give me the customer support info he was very stand-offish. Said the way he converted was proprietary. I said I dont care how he did it... I want to make sure this "Customer support" is real.
Has anyone else gone through anything like this?
thanks!
-Blake

Does this answer your question? Is it normal to be asked for an advance fee on a withdrawal?. The person you entrusted your money to seems to be talking nonsense. There are no activation fees. I am certain you have been scammed. Any money you sent is stolen. You can report this to local police but you will almost certainly never get any of your money back.

Thats what I was thinking. If there is some place that is asking for some fee (I know there are mining fees of some sort with the blockchain) they should be able to tell me who is asking so I could verify. They refuse to tell me. They are also pressing pretty hard for a commission.  When I asked why they just didnt withdraw that before sending my BTC they said they forgot. Oh well... lesson learned. Thanks!


text:
BitCoin SHA256 - ShortCut
just a general question, would it be ethical to start mining bitcoin using a shortcut, in the SHA256 hash (if that may even be possible), and mining at a much much faster speed using very less processing power/electricity than everyone else?

Ethical positions are going to be opinion-based (and thus off-topic), however no system can be secure under the presumption of "someone won't do something because it might be seen as unethical". We should presume that if it is possible, someone will do it.

This is how all markets work: some individuals try to produce a good faster, cheaper, and better than everyone else, in order to make more profit. Over time, these advantages are diffused into the general public, allowing competitors to catch up. This process is called innovation.
In Bitcoin, people who produced ASICs initially had an advantage over those using CPUs, GPUs, or FPGAs. So did people who had access to cheaper electricity. However, Bitcoin's difficulty adjustment means that this rise in hash rate will result in a rise in difficulty for all miners.


text:
Can't query own node
I'm trying different ways to query my own bitcoind node on testnet but I'm failing every time.
Tried using bitcore's API and nodejs:
async function tryBitcoin() {
    const data = await axios.get('http://127.0.0.1:8333/api/BTC/testnet/address/mubUbyPazdyvhPJYPGWUkFWj7bkw1Yq8ys/balance');
    console.log('data: ', data);
}
tryBitcoin();

..but I'm getting this error:
Error: socket hang up
    at connResetException (node:internal/errors:683:14)
    at Socket.socketOnEnd (node:_http_client:471:23)

Tried with bitcoin-core and I get the same error from above:
async function tryBitcoinCore() {
    const Client = require('bitcoin-core');
    const client = new Client({
    network: 'testnet',
    username: xxxxx,
    password: zzzzz,
    port: 8333
    });

    const data = await client.getBlockchainInfo();
    console.log('data: ', data);
}
tryBitcoinCore();

And using curl:
curl --user xxxxx:zzzzzz -v 127.0.0.1:8333/api/BTC/testnet/address/mubUbyPazdyvhPJYPGWUkFWj7bkw1Yq8ys/balance

...gets an empty reply from the server:
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8333 (#0)
* Server auth using Basic with user 'xxxxx'
> GET /api/BTC/testnet/address/mubUbyPazdyvhPJYPGWUkFWj7bkw1Yq8ys/balance HTTP/1.1
> Host: 127.0.0.1:8333
> Authorization: Basic zzzzzz=
> User-Agent: curl/7.64.1
> Accept: */*
>
* Empty reply from server
* Connection #0 to host 127.0.0.1 left intact
curl: (52) Empty reply from server
* Closing connection 0

This is my bitcoin.conf file:
testnet=1
daemon=0
server=1
rpcuser=xxxxx
rpcpassword=zzzzz

zmqpubrawblock=tcp://127.0.0.1:29000
zmqpubrawtx=tcp://127.0.0.1:29000
zmqpubhashtx=tcp://127.0.0.1:29000
zmqpubhashblock=tcp://127.0.0.1:29000

prune=10000

listen=1

onion=127.0.0.1:9050
listenonion=1
onlynet=onion
proxy=127.0.0.1:9050
proxyrandomize=1

fallbackfee=0.0003

[test]
bind=127.0.0.1:8333

Any help here would be very much appreciated. Thanks!

Bitcoin Core and bitcore are two independent and unrelated pieces of software. You're trying to query Bitcoin Core using a bitcore API.

Thanks! What package would I need then to query my own Bitcoin Core node through nodejs? @PieterWuille

According to this article, I should be able to use the bitcoin-core npm package to query my Bitcoin Core node using nodejs but I get the same error that of using bitcore https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#Node.js @PieterWuille

You're running a testnet node; its RPC interface by default is on port 18332. The bind=... only changes what port it listens for other node's connections for, not RPC (use rpcport= for that, but really, there is no need to change it).

Awesome, man! It worked perfectly. Thanks a lot. If you want, you can leave an official answer with this comment and I can choose it as the correct one so you get the points. @PieterWuille


text:
Bitcoin payment gateways in c#
My question is about Bitcoin payment gateways and we can add their gateways to my site Like those sites (bitpay.com,https://gourl.io/), I want to create a bitcoin payment gateway in C#
my question :
If two users paid from their wallet at the same time and at the same price (Bitcoin wallet address) but one of those payments was confirmed, how can I find out which transaction is for which user?
I can see the payments that came to my wallet with this code, but how do I know which user has made which payment?
QBitNinjaClient client = new QBitNinjaClient(_network);
        var _walletAddress = BitcoinAddress.Create(walletAddress, _network);
        var balance = client.GetBalance(_walletAddress, true).Result;

        foreach (var operation in balance.Operations)
        {

                if (operation.Confirmations > 0)

                    {
                       //do
                    }
            }
        }

Try btcpayserver.org

@Jannes I want to create a payment getway too and like this but what is my question answare?


text:
How to calculate economic security for bitcoin proof of work?
Is this the correct way to calculate security for bitcoin proof of work?
https://twitter.com/drakefjustin/status/1356918733441294336
If a government or group of few rich people or organizations create a token, hold most of the tokens and stake it, price of this token and few people holding this token makes the system secure?
What are other differences in proof of work and proof of stake?


text:
signing input for spend funds locked by this script
Please explain how to sign input for raw transaction with privet key corresponding to 1st or 2nd public key in this script
"asm": "OP_IF 1694275749 OP_CHECKLOCKTIMEVERIFY OP_DROP 03cd18ace3a339fcd0039fd87d7a7a8377537cd9a9f2afa2a3e76f40e53112a535 OP_CHECKSIG OP_ELSE 1694277749 OP_CHECKLOCKTIMEVERIFY OP_DROP 036bb176ed8fe2e38949a63ff964eed3c5e79fd88ac011cad1eecf22702ea65d23 OP_CHECKSIG OP_ENDIF"
hex 63051694275749b1752103cd18ace3a339fcd0039fd87d7a7a8377537cd9a9f2afa2a3e76f40e53112a535ac67051694277749b17521036bb176ed8fe2e38949a63ff964eed3c5e79fd88ac011cad1eecf22702ea65d23ac68
address were I locked some sats bc1qes2v6ts5ckxuz5mkwdeukcn62hkac05kf97gugc4jnu3kj3wg5as3nes34
txID 14290ef656c05f8e0c06b6d99a6ae72c77a8809b3a69dd5fb00f07ce9cee1637
vout 133

Does this answer your question? What goes in to the message of a transaction signature?

Or maybe https://stackoverflow.com/questions/34451214/how-to-sign-and-verify-signature-with-ecdsa-in-python


text:
Can hot wallets be secure?
Hot wallets are generally considered the least secure because their online nature creates an opportunity for hackers to crack them. but is there a way to cryptographically secure the seed generation process in a way that's secure to a high degree of confidence against hacking?

The seed generation process and its cryptographic security is irrelevant to the insecurities of hot wallers

The problem here is not cryptography, but the number of attack vectors.
To tackle the first point, cryptography:
It doesn't matter if you use the most sophisticated seed generation process if someone is snooping. For example, if you roll 50 casino-grade dice to generate a 128 bits of entropy (considered a very secure way), your seed-generation might be very cryptographically secure, but you:

Forgot to close the curtains and your nosy neighbor was watching
Had your CCTV cameras on
Were doing it in a coffee shop full of people

That would render your very secure cryptographic seed generation process completely useless.
Now, the second point, consider the possible attack vectors of a hot wallet:

Malware/keylogging software installed on the phone/computer
A bug present in the wallet software (or the wallet itself being malicious)
The inevitability that when we use electronic devices, we frequently copy and paste information
A diversion that tricks you into believing that you are using the right piece of software (when you aren't)

The last one is my favorite. To give an example:
You install Electrum, a very popular wallet that many trust. You generate your seed, you use it normally.
One day, out of the blue, your funds are missing.
How can it be possible? You haven't shared your seed with anyone, you trust that Electrum generated a cryptographically secure seed, and that Electrum's app has no vulnerabilities.
Well, turns out that you accidentally installed a counterfeit version of Electrum that looks exactly the same.
No need to panic though, hot wallets are great for convenience and I use them to generate seeds when testing small amount of funds.
The key importance is how much the funds mean to you. I have a tiny amount on my phone wallet that I use to pay for services, a small percentage on desktop hot wallets. For everything else, hardware wallets.
There are still possible attack vectors on cold wallets that don't connect to the internet, but most of them require you to be physically close to the wallet (such as this Trezor being split open), or an exploit on how the devices communicate (say you use a Cold Card and communicate through an SD Card, there could be a bug where your private key is leaked).
In reality, the biggest threat is a socially engineered situation where you are told to share your information, like a fake Ledger email telling you that the device is compromised, prompting you to panic and type your mnemonic seed on their website to secure your device.
The risks are just much less considering the millions of people that could get access to your information through the internet.
A lot of digression, but hope it helps! I used a broad number of examples from different vendors so that you see the big picture. (Nothing against them, as I am a happy user of many of them).


text:
What happens under the hood when the Bitcoin Core application is launched i.e. when the bitcoin icon is clicked on the computer's desktop?
Does the computer read all of the files in the Bitcoin application at the same time, or which files get read and processed before other files?

By "files in the application" do you mean the data files (blockchain, wallet, mempool, fee estimates, peers data, config, ...)? The application ifself just consists of a binary executable file (bitcoin-qt.exe or bitcoind.exe, if you're on Windows).

Yes, I am referring to the data files and all the other files listed on github.com/bitcoin/bitcoin. I'm on Linux.

The files in the github repository are just the source code files from which the application is built. As a user of the software, you generally won't have those on your system even; they're just used to build the bitcoin-qt.exe file (and related binaries).

Is there a bitcoin-qt.exe file in a linux setup?

It's just called bitcoin-qt there (Linux systems don't use filename extensions like that).

So in the bitcoin-qt binary file in a  Linux setup there are just 1's and 0's? When you say binary this is how I would interpret the word 'binary'.

Let us continue this discussion in chat.

A "binary" is a generic computer term for files that are not human readable but are interpreted by the CPU. Pretty much all software you run on your computer consists of binaries.

According to https://insidebitcoincode.substack.com/p/ibc003-the-main-function there is a specific order in which the source files are processed.The main() function is processed first. It this correct? So the compiler orders the binary code to facilitate this - am I correct?

The compiler proceses the files in whatever order it likes, it doesn't matter (and in fact, may well be random). The outcome must be and is a binary that does what the source code instructs it to do. That substack page digs into what functions are called at startup and what order, but that has nothing to do with processing files - the files don't matter anymore after compilation. If you want to understand what the source code intends to do, I suggest taking a C++ course, as this will turn into a far too broad topic otherwise here

I am studying C++ at learncpp.com.

Regarding the order in which files are read and processed, the precise sequence can vary based on the version of Bitcoin Core and the specific actions taken by the user. However, in general, the following order is likely to occur:

Read bitcoin.conf: The configuration file is read early in the initialization process to apply any custom settings.
Load Blockchain Data: Bitcoin Core begins loading and verifying the blockchain data, which is essential for the application's operation.
Wallet Initialization: If a wallet is present or created, the wallet data is loaded, making it possible to access your funds and perform wallet-related operations.
User Interface: Once the critical components are in place, the user interface is displayed, providing access to the various features of Bitcoin Core.

But isn't the bitcoin-qt file a binary file? Are all the source files compiled into binary code for the bitcoin-qt binary file? In what way is that binary code ordered and processed by the processor?

@EoinMcQuinn The binary that is produced by the compiler will do exactly what the source code instructs it to do. And I think the part of your questions here relating to source files and the compilation process are off-topic here, as they're unrelated to Bitcoin. I suggest taking a programming course if you're interested in that.


text:
Why do we need github.com/bitcoin-core, when we already have github.com/bitcoin/bitcoin?
There is already github.com/bitcoin/bitcoin, so why do we need to have github.com/bitcoin-core?
The GUI bit is stored in github.com/bitcoin/bitcoin under the qt section, so I don't see why we need to have a separate repository under github.com/bitcoin-core for the GUI.

The bitcoin-core GitHub organization was created to contain ancillary repositories that were related to the Bitcoin Core software but not necessarily Bitcoin itself. These were for more project specific things such as developer documentation/wiki, reproducible build signatures, assets involved in quality assurance, etc.
Over time it has become the default place to put new repositories that are related to Bitcoin Core and are otherwise developed by Bitcoin Core contributors who want it those projects to be under the Bitcoin Core banner, such as the secp256k1 library, HWI, btcdeb, etc.
Since new repos are generally made in the bitcoin-core organization, the repo for GUI issues and PRs was also made there.

Personally, I think we should move bitcoin/bitcoin to under bitcoin-core as well. GitHub actually has systems for moving repositories and providing redirects for everything so it wouldn't actually break any links.

The Bitcoin Core branding and GitHub organization was only introduced in 2013 and so presumably contributors and maintainers didn't want to move pre-existing repos (implementation, BIPs etc) to a new GitHub organization in case it broke links, external documentation and general familiarity with the location of those repos. However, new repos could be (and were) created under the new Bitcoin Core GitHub organization.
With regards to the GUI, development and review happens in the repo under the Bitcoin Core organization and code changes are only mirrored in the github.com/bitcoin/bitcoin repo. The GUI repo was separated out in 2020.

Is bitcoin-qt the GUI for Bitcoin Core?

@EoinMcQuinn: Yes, although there is an alternative GUI being worked on that is a WIP https://github.com/bitcoin-core/gui-qml

Why did they move the bitcoin gui from github.com/bitcoin/bitcoin to github.com/bitcoin-core?

@EoinMcQuinn: It is discussed in that issue I linked to https://github.com/bitcoin/bitcoin/pull/19071


text:
Who approves the merger of github pull requests to the Bitcoin Core master branch?
Does it have to be one of the 5 Lead Maintainers, or who can merge a pull request to the Bitcoin Core master branch?

See https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md#decision-making-process:

Whether a pull request is merged into Bitcoin Core rests with the project merge maintainers.
Maintainers will take into consideration if a patch is in line with the general principles of the project; meets the minimum standards for inclusion; and will judge the general consensus of contributors.

Any maintainer can approve merges. See Is there a list of core Bitcoin committers? for a list of maintainers.

Have the Lead Maintainers divided up the code base into sections of responsibility?

Most maintainers have their own focus area. There is no lead maintainer.

What are those focus areas?

Read the linked answer. It's not entirely up-to-date (as pointed out in the comment there), but repeating things here will just result in more places that go out of date over time.


text:
Running Lightning Node without Bitcoin node
Is there a way to run Lightning Node without any kind of Bitcoin node on your local machine? If not, is there a way for me to run without installing a full node? If any of this approach is possible, what is best software I should use?

Does this answer your question? How does Lightning Node communicate with Bitcoin node?

P.S. This website wasn't designed for sharing software recommendations and so it isn't suitable for that part of your question.

Not entirely. I wanted to know what implementation of LN use lightweight client instead of full node.

See https://www.google.com/search?q=lightning+network+client+software+for+spv+nodes which returns a similar q here and a mention of BLW


text:
Running bitcoin core functional tests
How do you run the test at test/functional/test_runner.py in Bitcoin core downloaded and installed from the Ubuntu snap store?


text:
How do we know whether a pull request will be a soft fork or a hard fork?
Aren't all pull requests either one or the other - a soft fork or a hard fork?

Hi, does https://bitcoin.stackexchange.com/questions/30817/what-is-a-soft-fork-what-is-a-hard-fork-what-are-their-differences answer your question?

Does this answer your question? What is a soft fork? What is a hard fork? What are their differences?

Pull requests (PR) are requests to change code. Not all requests to change code are related to the validity of blocks or transactions. As Pietter Wuille said, only a very small percentage of PR do.
When code introduces a change in the rules of validity, we have a fork.
If nodes that don’t upgrade to the new code are still able to consider the new blocks valid, we have a soft fork. If not, we have a hard fork.
As a rule of thumb, everytime the PR thightens some rule, we have a soft fork. If the PR loosens some rule, we have a hard fork, but it needs to be analyzed case by case.
For example, an increase of block size (ex: 10 MB) would be a hard fork, since old nodes would not accept the new blocks (they are too big). On the other hand, if the change was to decrease the block size (ex: 0.5MB) that would be a soft fork, since old nodes would still accept the new blocks.

(I'm assuming this question is about pull requests to Bitcoin Core)
Bitcoin Core is just a software project, implementing lots of features, which is developed by a community of developers. While it is also the most common implementation of a fully validating Bitcoin node, that only comprises a tiny portion of its codebase, and an even tinier portion of its development work.
Software changes to fully validating nodes are only softforking or hardforking changes if they change what blocks are valid. The vast vast majority (I assume 99%) of all pull requests to Bitcoin Core do not touch the block validity code at all, and an even larger fraction (99.99%) do not change validity. Those that do will be very clearly labelled as implementing this or that softfork.
Instead, most code changes are for things like:

Wallet features
GUI improvements
Documentation changes
Making the code a bit faster
New tests
Build system changes


text:
Retrieve all Unspend Output given a priv key
Is it possible to retrieve all Unspend Output transaction given the private key?
I have noticed that different wallet give me different balance for the same Private Key. For instance, Atom and BitPay give the same result but they use BIP44. Exodus and Defi Wallet give the same result and they use BIP84. On these wallets I have given the same Private Key but every wallet sees part of the Unspend Output. Hence my question.
Thanks
https://bip39.org/

generally speaking the answer is no: you should generate every public address to check it's balance and the possible addresses are too many to be checked all.
in your case, if you remember the wallets where you imported the keys, you can only check the derivation paths used by them.
even the addresses that can be generated from the first branch of the derivation path are too many to check them all, the wallets usually stop generating public keys to be checked when they find a certain number (which varies depending on the wallet, usually a few thousand) of unused addresses in a row.
so in case you have large blocks of unused addresses among the addresses used, you can't even trust the automatic wallet balance check for it's specific derivation path, but you should generate other addresses on your own to verify their balance.
this is a very rare case that hardly occurs in real life, but it is good to know anyway.


text:
Question about the efficacy and safety of Privacy Cryptos like XMR, Zcash, etc
new here and haven't found an answer to this conceptual question:
Crypto is said to have solved the coordination problem through rewards and punishment (honest users are rewarded; dishonest users are punished). From my understanding, this is dependent on transparency of the blockchain as it would be impossible to hold an anonymous user accountable for dishonest behavior. While dishonest use can be considered subjective, I read that BTC addresses this by allowing users to manually adjust their network to exclude dishonest nodes. To do this, one must be able to identify the "dishonest" node.
With something like Monero, I learned that the two nodes involved in a transaction are completely anonymous and that the transaction is also obscured. If this is true, then wouldn't it be impossible to identify and take action against a dishonest user? Without the ability for an individual node to subjectively discriminated between honest and dishonest nodes, wouldn't you lose all the trust in the system? How would this satisfy the coordination problem if there's no longer a means of punishment.
If that's a bit confusing I can elaborate: The Lemon vs. Peach problem often used by Monero enthusiasts describes a situation where the seller has an advantage in a transaction because they have relevant knowledge of the merchandise. If the seller continues to sell lemons, then eventually all the peaches will disappear due to buyer uncertainty within the system. It seems to me like this relates to privacy cryptos in general. If one participates in an anonymous transaction online, then the seller has the advantage. If the buyer is cheated once, then how can they be certain that they're not dealing with the same "dishonest" seller in their next transaction? We have a system of rating IRL where you can write a review for a business to let others know that they're reputable or "honest", whereas with privacy crypto you can't even recognize who you did business with.
Doesn't this pose an issue for privacy crypto in general? You're kind of entering into transactions based on blind trust with no option for recourse? Is this just the nature of privacy cryptos/privacy in general? You've effectively reduced the trust within a network to zero if members cannot actively recognize and choose who to trust.
Would it be incorrect to assume that Monero/privacy cryptos depend on IRL credibility with total node anonymity whereas Bitcoin connects the two assuming you didn't anonymously acquire BTC?

Thanks for the response but I guess my misunderstanding stems from not having used Monero yet. After having read the white paper I'm still not understanding what insurance you have in transactions with others via Monero i.e. is there any form of receipt to prove you paid or were paid and by whom? If not, what prevents fraud? Like if I make a purchase, can the merchant only see a certain amount of Monero but not who sent it? This would be extremely risky for both parties involved. Can you link individual users to nodes to ban out dishonest users?


text:
What is the best way to pull miner's fee associated with a list of transactions?
I have a spreadsheet containing the transaction ID, datetime, and BTC amount of 800,000+ transactions associated with a BTC address (includes both sent and received transactions). Now I am trying to add another column listing the fee paid for each of those transactions. What is the (1) fastest (2) easiest (3) most efficient way to do that? Please explain in detail if technical know-how is required, because I am a novice in coding.

@Prayank not entirely. vin only contains the prevouts so you'd have to  call getrawtransaction again. Also, it won't work without txindex.


text:
Can I spend from multiple wallets in Electrum (or somehow import/merge them)?
Is it possible, in Electrum, to merge wallets, and or do a transfer using multiple wallet keys?  I have some dust in a wallet and would like to get it out. I'm hoping I can easily incorporate it into another payment.
Given the sum of the dust, this is primarily a curiosity. I know it's possible in the protocol, but wondering whether there's a high level way, or even a command-line way.

You could export the private keys from all the wallets you wish to send from, save them to a file. (Wallet->Private keys->Export (to .csv) , open in Excel and copy the private_key column to a new file)
Build a new wallet with imported private keys on Electrum (File->New/Restore->[+] Import Bitcoin Addresses or private keys)
The new wallet would contain all addresses you wish to spend from


text:
What happens if I lose Bitcoin Investment, is there Bitcoin insurance?
If fiat bank money is stolen, or bank is fire/damaged, we have banking insurance. If hard money gold is stolen, it can always be replenished with Lloyds of London insurance, or with a mining annual growth rate of 2% per year.
If Bitcoin money is hacked (as it was in past), USB Drive destroyed, or the bitcoin is missing, how can a person recoup their losses?
Some of us agree, slight inflation 1-2% helps insure against losses (just like FDIC insurance, or gold insurance). Of course large inflation, where governments finance war, pointless government programs with inflation of 20-30% year is too much.
The question is, How will Bitcoin solve the insurance issue? Can be it a good storage of value to families if its lost?
Note: I'm aware fiat or gold insurance, will not work if 3rd party insurance is lacking funds. It can work however, last time, someone stole money from friend's bank account. Does bitcoin offer any level of insurance?

This question seems to be based on a false premise. Is there anybody who is saying that bitcoin is a good store of value for families? Obviously, its volatility makes it a terrible store of value for families.

hi @DavidSchwartz thats what many supporters are saying

Well, they're obviously wrong. Its volatility makes it a terrible store of value. It may become a useful store of value in the future, but it's definitely not a good store of value for families today.

So far as I am aware, no currency, whether fiat or cryptocurrency offers intrinsic insurance against accidental loss of cash.
For example is a shopkeeper takes dollar bills from their cash register and drops it unnoticed in the street on the way to the bank, they will not be covered for that loss by the US treasury. The shopkeeper will only be covered by any relevant insurance whose cover includes that kind of loss.
Bitcoin insurance exists in the same way that dollar insurance exists for cash.
Bitcoin was designed to do away with trusted third parties such as banks therefore there is no need for government organised recompense for bank failure.

hi, not referring to losing money on the street, but losing money at the bank,  equivalent to losing money in Coinbase brokerage etc ,if money is hacked like two years ago when reading news etc, thanks

interesting though, just reading these articles now https://www.investopedia.com/news/cryptocurrency-insurance-could-be-big-industry-future/  https://www.coincover.com/theft/bitcoin-insurance

@mattsmith5: Bitcoin was designed to make banks redundant. So no need to care if banks fail if you use Bitcoin as intended.

not referring to banks failing, but if coinbase, or robinhood fails, etc

@mattsmith5: That's like putting dollars into a business that isn't a bank, there's no insurance managed by the US treasury department for people who give dollars to fund-managers or other businesses. Dollar investors lose their shirts when such businesses fail. Bitcoin was designed as cash, definitely not as some ultra-safe investment consortium.


text:
Transaction will not broadcast: 0/ not confirmed not in mempool
Found wallet.dat file from 2013
Fee is high, blockchain is synced, and network is stable.
Bitcoin core v27
I could use some direction or alternative solutions. The goal is to send bitcoin from this wallet to an exchange. Happy to tip whoever helps. Thanks in advance

Are you sure it’s a Bitcoin Core wallet file and not for the client of another cryptocurrency? I assume that you have made at least one backup of the wallet file. What happens when you try to -rescan? If you could provide a few more details, it might be easier to figure out what the problem is.


text:
How to claim funds in a multisig address from a money pool psbt?
Mostly followed this guide on how to create a psbt where multiple users pool money together. Everything is done in regtest.
The gist of what I did is as follows:

Created 2 different descriptor wallets (Same machine, but different seeds), generated some funds into each wallet, and used createmultisig using public keys from the 2 wallets. createmultisig 2 (pubkey1, pubkey2) address_type=bech_32
created psbt using createpsbt(inputs, outputs)
ran walletprocesspsbt on each wallet with appropriate hexstrings
ran finalizepsbt and sendrawtransaction with appropriate hexstrings
created a new blank wallet as such createwallet wallet_name="wallet_multisig" disable_private_keys=true blank=true
ran importdescriptors on the descriptor created from above createmultisig command. Success
Can view balance in wallet_multisig with listunspent, but since no keys, can't send that balance. So I'm at a loss on what to do or if I used wrong commands so I can spend that balance after importing the multisig address into a new wallet.

As stated previously, after finalizing the psbt and importing the descriptor (from createmultisig command) into a blank descriptor wallet, I can view the balance using listunspent, but I can't spend it.
Looking at another chapter of the guide spending funds sent to a multisignature address, the theoretical next step is to create a transaction, then on each wallet sign using signrawtransactionwithkey command with private key. Given that I'm using descriptor wallets (not legacy), this isn't an option. Nor can I generate an address since the wallet has no keys.
Am I doing something wrong in my previous steps? If not, what steps moving forward can I do to be able to claim the coins in the multisig address?


text:
marker byte interpretation by legacy transaction parser
The marker byte is interpreted by a legacy transaction parser as number of inputs in the transaction and is always 0. My question is, why is a transaction with 0 inputs considered valid by a legacy transaction parser?
Mastering Bitcoin book mentions marker byte interpretation by legacy transaction parser

In legacy serialization, the marker byte would have been interpreted
as the number of inputs (zero). A transaction can’t have zero inputs,
so the marker signals to modern programs that extended serialization
is being used. The flag field provides a similar signal and also
simplifies the process of updating the serialization format in the
future.

Also this answer by Ava Chow mentions the same:

Specifically, what you are missing is that the field immediately
following the version number is a single 0 byte (referred to as the
marker byte), instead of the input count. This was done specifically
to make a transaction appear as if it has no inputs to a legacy
transaction parser.

My understanding is that the minimum number of inputs for a transaction is 1, so why does a legacy transaction parser that sees a transaction with 0 inputs (the marker byte) consider the transaction valid?

yes that answered my question thank you!

Legacy transaction parsers do not consider segwit transactions to be valid. They will fail to parse the transaction when read the marker byte as indicating 0 inputs.
Part of the way that segwit maintains backwards compatibility is that software that is aware of segwit will specifically indicate that they are, and thus such software can also tell if a peer they are communicating with is not segwit aware. Since it is trivial to strip out the segwit data from a segwit transaction so that it can be parsed by legacy parsers, such nodes will do that prior to relaying any blocks and transactions to the non-segwit nodes.

Segwit nodes strip Segwit information (marker, flag witness) from transactions before sending them to pre-Segwit nodes. Therefore, pre-Segwit nodes do not see, or need to interpret, the marker/flag. They see stripped confirmed Segwit transactions as "spent anyone can spend" transactions.
If a pre-Segwit node did for some reason receive a Segwit transaction (with marker+flag+witness) it would see it as invalid for the reason you mention. However, a pre-Segwit node could incorporate a "Segwit-stripper" script to remove the marker/flag/witness fields relatively easily.
If the pre-Segwit node wanted to be a block-author for potential new blocks, it would not include the stripped Segwit transactions as it cannot verify them.


text:
Connect to Remote Bitcoin Node
Is there a free Bitcoin full node I can connect remotely? Based on my understanding, SPV nodes have to rely on full nodes, but I don't know how to connect to full nodes with SPV nodes. How can I find a public free node and how can I connect to it?

Here's a list of public bitcoin nodes https://bitnodes.io/ I'm not sure about connecting with SPV client though.

I am curious how wallet services actually connect to full node. For example, Electrum wallet is not running full node, but how is it actually connected to full node for getting transaction data?

A full node is basically a server, a server has an IP address and listens on a specific port. Electrum has a tab where you can enter the IP of the node you wish to connect to: https://armantheparman.com/connect-electrum-desktop-wallet-to-your-bitcoin-node/. There is also something called SPV or Simple Payment Verification, I don't know if they use it but theoretically it is like running a node but with the lite characteristic of a small wallet app. It is relatively important to know how to manage which nodes you are connected to.


text:
Lightning Network Data
What data is public in Lightning Network (such as number of nodes, channel balances, etc)? What are some ways to retrieve them (API, running node), and what would be pros and cons for each option?

Here is 1ml https://1ml.com/ a well known search engine and statistics monitor for lightning nodes.
https://moneni.com/nodematch
Lightning node match website for routing data.
https://lnnodeinsight.com/
lightning node insight which gives you channel opening simulations and stuff like that.
As far as what data is public, this is 100% up to each node operator. If a lightning node operator doesn't want to be connected to nodes who use public broadcasting they do not have to however, there is lots of benefit to doing so in terms of growing channel balance.
Edit: Theres also terminal lightning which gives some statistics about node health https://terminal.lightning.engineering/#/
https://github.com/alexbosworth/balanceofsatoshis alex bosworth tool for working with your node balances
https://lightningnetwork.plus/ and a website where you can request incoming capacity in groups

Thank you so much for your help. Do you know if there is an website or API that keeps historical data of Lightning Network?

I think the issue is that the lightning network is very much peer to peer which means that lots of data you might want may not be publically available. Thats why you dont see the same types of apis for it as you have with blockchains. That being said if you can specify what data youre looking for I can try help you find it. Likely some website will be aggregating it for you already but they tend to aggregate specific data per website.

I was interested in number of channels and how channels are connected to each other.

@xor try this https://explorer.acinq.co/

But this explorer doesn't let you obtain historical data, right?

no, heres one historical chart of capacity https://bitcoinvisuals.com/ln-capacity


text:
How can I retrieve transaction graph data in specific time period
I want to create a graph data of Bitcoin transactions in specific time period. In other words, I am trying to write some kind of program when a user enters specific time range, transactions graph data will be returned, and user will be able to play around with it.
Does anyone know what would be the easiest or best way to do this? I know there are couple of APIs I can use (Blockchain.com, Blockstream), or I can run full node, but wanted to hear people's suggestions. My other concern would be going over memory capacity for retrieving data in big time range.
Thank you!

It is not clear to me what sort of graph you want to produce. Could you please edit your question to explain in more detail what you are trying to do?

The question is pretty clear: the author is looking for the Bitcoin network graph in a certain moment. This is formally a graph with nodes and edges.

Let's look at papers like this: BTCmap: Mapping Bitcoin Peer-to-Peer Network
Topology https://www.researchgate.net/profile/Varun-Deshpande/publication/329299820_BTCmap_Mapping_Bitcoin_Peer-to-Peer_Network_Topology/links/5cbddfe4299bf1209778bdc2/BTCmap-Mapping-Bitcoin-Peer-to-Peer-Network-Topology.pdf

You can quickly get only the nodes from https://bitnodes.io/api/

I'm not certain about what is your question exactly, but the transaction graph as you call is literally the block's content. If you want to see all transactions that happened from date X to date Y, you just take the first block whose timestamp is greater or equal to X, and the last block whose timestamp is lesser or equal to Y. All transactions that fall in this period will be inside the blocks between those two blocks.
Any API that allows you to access blocks will do. Pretty much all of them, do. And of course, you can always use your node.
As for memory exhaustion, yes, considerable periods may take a lot of RAM. You might limit the selected period, or else you have to write some summary to disk and only load parts of it.

If I use my own node, to get a block at right date, don't I have to iterate through entire chain? Also, if there is specific API you recommend to do this? Maybe I am missing, but it seems like blockchain.com api only allow to retreive singe block, or block for one day at a time.

It depends on what exactly you want. Inside a block, you have a list of transactions. Each transaction contains a list of inputs and outputs. The graph I'm assuming you need is money moves from UTXO A and B to UTXO C. This is accomplishable using only block data, without iterating over the whole chain. Yes, it should only allow one block at time, so you have to make multiple requests.

The question is pretty clear: the author is looking for the Bitcoin network graph in a certain moment. This is formally a graph with nodes and edges.


text:
Bitcoin core savemempool
Bitcoin JSON RPC has savemempool command for saving mempool data to the disk. However, it seems like saved file is binary. How can I read this file in human readable format?
https://developer.bitcoin.org/reference/rpc/savemempool.html

Does this answer your question? DumpMempool() and LoadMempool() in src/validation.cpp

You can also check how this is implemented in  https://github.com/bitcoin/bitcoin/blob/master/src/kernel/mempool_persist.cpp written in C++, where DumpMempool() function is responsible for dumping the contents of a transaction mempool to a file and LoadMempool() function is responsible for loading the contents of the mempool from a specified file on disk. To read the transactions, you would need to create a similar LoadMempool function in your chosen programming language and parse the structured objects: uint64_t version ... up to unbroadcast_txids.

Is there any Python code that can read mempool.data file?


text:
Can I pick a certain channel for payment?
Having Electrum wallet and 2+ open Lightning channels can I pick a certain one when paying for something? Or the channel is picked automatically due to some algorithm?

The whole idea of the lightning network is to allow you to make payments without knowing how they where made, so basically the answer is no, you can’t pick a specific channel to be used for the payment.
The lightning protocol has 2 distinct algorithms: one is for path finding, to select the complete path to make a payment from the sender to the receiver,  and the other algorithm is routing, to actually deliver the payments. In the path finding algorithm the information of the network (channel capacity and network topology) is used to decide which set of channels to use to deliver the payment.


text:
how to know the public address of a wallet that sent me funds (bitcoins), using python
I have a website that will show a QR code of my bitcoin wallet (public key), I will ask the client to deposit bitcoins there, I want to know which wallet (public key) was the one that deposited this in order to know which client is paying for a service that I am going to give you. I am using Python and Django to create the WEB page

You cannot; Bitcoin has no concept of a "sender" of a transaction.
If you want to know which invoice/bill has been paid, give out a new address for every payment you expect.
Bitcoin block explorer sites sometimes do show the "input addresses" of a transaction, but these do not have the properties you generally expect from a sender:

There may be 1, or more, or even no identifiable input addresses.
The addresses may not all belong to the sender, in case of a payjoin transaction.
The addresses may not belong to the sender at all. For example if the sender uses an exchange site, the addresses you see will belong to the exchange.
You don't know anything about where money goes if you'd try to send coins back there. If you want a refund address, you need to ask the payer for one.

If I know the public address of my client's wallet, how do I know when and when BTC has been sent to my wallet? How can I do that query?

As Pieter wrote, a wallet doesn't have an address. A wallet has control over "coins" previously sent to many "addresses" created by that wallet for receiving that money. When you are paid, the sender's wallet chooses which coins to use to make up the amount and thus what  "addresses" to use. The user usually has no control over which coins (and therefore addresses) are used unless their wallet offers a feature called coin control and the user chooses to use it. All addresses are functionally like an invoice-reference-number.

@evvrivas For the reasons I elaborated on above, that does not work; Bitcoin simply has no concept of a "sender address". If you want to determine which client paid you, give each client a separate address, and remember which address belongs to whom.

That won't work: Bitcoin transactions do not reliably identify the sender.
Bitcoin addresses are unlike (e)mail addresses. Think of bitcoin addresses as "invoice identifiers": whenever you want to get paid, request to be paid to a new address on your invoice. Then, whenever you get paid, you know which invoice was paid.
Bitcoin wallets have many addresses and addresses should not be reused.


text:
Do I need to Download the complete Blockchain before BTC will reflect under amount after running importprivkey? Current Version being used is V22
I have done the importprivkey as per instructions.
I can see the transactions under the transaction Tab, but I do not see my BTC under overview balance.
I do not see the address Tab also as per Wiki Instruction either.
Synchronizing with network currently on 1 year and 48 weeks behind.
All my transactions was before 2020.
Will my BTC only reflect once full Blockchain downloaded and synced with network?

The spendable funds should start being reflected in the balance whenever the transaction is processed while your node is aware of the private key. Since your wallet is already showing you the transaction, it sounds as if the key was present when the transaction was processed. I would suggest to wait for the initial synchronization to finish, during rescans and sync the wallet may still be showing outdated information until it has caught up with the chaintip.
Generally, a node will automatically rescan the blockchain after importing a key (unless you disable it explicitly, e.g. because you want to import multiple keys before rescanning once). If the key's creation date is known, it will only scan the blockchain after that date.

Importing itself will trigger a rescan (unless you explicitly disable) of the part of the chain after they (claimed) key birthdate.

@ Murch & Pieter.
Thank you for your answers, really appreciate the feedback. Please excuse as I am very new to the Bitcoin Core GUI Platform and process.

Should I wait for the complete networking Syncronizing before doing an importprivkey again? Currently 1 year & 22 Weeks behind and syncing slowly.
Since I did the importprivkey more than a week ago already, do I need to run importprivkey command again or just run a rescan in Console?
Do I wait for the Syncronizing with Network to complete before running Rescan?

Is there a command to rescan only the blocks already syncronized with network(Downloaded)? Then last but not least: Is there a way for me to check my BTC against my privkey. I see my BTC on Blockchain Explorer using Address, but now concerned about the link between my BTC Address & my privkey.

Thanking you in advance.

I'd suggest waiting before doing another import. 2. No need to run import again unless you have more (different) things to import. 3. You do not need to rescan. 4. By definition you can only rescan what you already have. If you have more questions, either update the question asked here, or ask new ones.

@ConradS69: It'll probably be fine when it's finished synchronizing, if not feel free to bring your follow-up questions here. :) It is highly unlikely that there is a problem connecting your address and private key, especially since your transaction is already showing up in your wallet. You can look up your ADDRESS on blockexplorers to confirm that your funds are unspent, but please DO NOT try to import your PRIVATE key in any websites, you may lose your funds if you do.


text:
is this normal to have 22000 transcations in a testnet block of bitcoin
So I having this issue where in my local system when I hit getblock RPC method in a public node, for block number 2813986, I get around 22000 transactions in it, But when I check on blockstream.info/testnet it seems like it has only 300 transactions, So not sure which one is the correct one? any help is highly appreciated.

What is the block's hash (in getblock RPC output)?

well I don't have a block hash for that now, but here is this block 2814499
and here is the hash: 000000000000000a80ec98597306b112091422294544853e92202f8cef5ec48d
and in my local, it has 20319 transactions. wondering if this is correct or if there is some issue with it.


text:
Why is Taproot important to Ordinals?
I've learned SegWit, Taproot, Schnoor and Ordinals recently. I can understand all these terms. But I don't understand why people say Taproot makes Ordinals possible.
Taproot is actually the version 1 of SegWit. Before Taproot, we can only set version 0 when using SetWit. But I think the version 0 SegWit is already sufficient to implement Ordinals protocol? In the same way, we need 2 phases/transactions to inscribe some data:

Create a P2WSH transaction to commit a script. Just like what Ordinals does now (i.e., create a P2TR transaction to commit a script).
Create a transaction to reveal the script in the witness field. Just like what Ordinals does now.

In the script, I can still use the OP_FALSE OP_IF ... OP_ENDIF pattern to embed the inscription data into the script.
So we can still implement Ordinals protocol without Taproot. Why do people say Taproot makes Ordinals possible?

Related: How can taproot transactions manage to store so much data?

Thanks! Now I know that before Taproot, the P2WSH has a script size limit of 10000 bytes. Taproot eliminates this script size limit.


text:
How to keep transaction generating time down?
I have a wallet for a service that's getting bloated, and whenever I want to send transactions they notably get slow. How do I prevent stuff like this? Can I just send all the funds to an address to merge the unspent inputs?

You can always send whatever you have in your wallet to another address in the same wallet.
Depending on the size of the transaction you might have to pay a larger fee than normal.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Open/Close LN tx size
What is the average size of a on chain closing LN transaction ?
It seems to be 140vb but I don't find any source.

Assuming that you mean a collaborative channel closing, this should involve spending be a 2-of-2 multisig input (either P2SH-P2WSH or P2WSH), and the creation of two outputs that pay out to the channel partners. There might be additional HTLC outputs in the case that there are unresolved open payments that had been routed through the channel (although channel closure might just wait until those are resolved then?).
A 2-of-2 P2SH-P2WSH should be 132 vB, and a 2-of-2 P2WSH input should be 60 vB. Adding two outputs of e.g. P2WPKH type adds 2×31 vB, and finally we have a transaction header that will be 10 bytes and 2 WU (10.5 vB). In sum that should come to about 132.5 vB when the channel was anchored to a native segwit UTXO or 204.5 vB when the channel was anchored to a wrapped segwit UTXO. If the outputs go to other output types, that might add a few more bytes: wrapped segwit outputs would come in at 32 bytes, P2TR outputs would be 43 bytes.


text:
WitnessPubKeyHash to address
I'm trying to derive address from pubkeyhash in GoLang. Current i'm getting invalid address
Current i'm getting SegWit address but mine chain doesn't support Segwit.
addr, err := btcutil.NewAddressWitnessPubKeyHash(
        btcutil.Hash160(request.PublicKey.Bytes),
        s.config.Params,
    )

Params:
Name: "test",

    Net:         0xba657645,
    DefaultPort: "46464",

    GenesisBlock: &TestnetGenesisBlock,
    GenesisHash:  &TestnetGenesisHash,

    PubKeyHashAddrID:        0x8B,
    ScriptHashAddrID:        0x13,
    PrivateKeyID:            0xEF,

    HDPrivateKeyID: [4]byte{0x3a, 0x80, 0x58, 0x37},
    HDPublicKeyID:  [4]byte{0x3a, 0x80, 0x61, 0xa0},

    HDCoinType: 1,

Can someone help me with solving this.
I'm trying to implement rosetta-api

You are using btcutil.NewAddressWitnessPubKeyHash rather than NewAddressPubKeyHash but you don't want Segwit. Is that true?

@RedGrittyBrick, yes you are right, i don't want Segwit addresses

@RedGrittyBrick Thanks for the tip for NewAddressPubKeyHash, i have solved the issue. +1


text:
Generate Random Bitcoin Addresses from my own Extended Public Key with Coinb.in Wallet
I'm customizing https://coinb.in/ wallet.
    var compressed = coinjs.compressed;
    coinjs.compressed = true;
    var coin = coinjs.newKeys(); // keys are changing...
    var sw = coinjs.bech32Address(coin.pubkey);
    var address = sw.address;

    coinjs.compressed = compressed;
    console.log(address);

This works as expected, but it generates new bitcoin addresses because of newKeys(). I don't own them.
I need set my own xpub. So I'm trying this:
    var pubkey = "xpub661MyMwAqRbcFAYRXx71gFgohbagK22EwLd24pQE98PfQKvtJDP6bFWge2N6WJjhhNriBYdjHadGwtFj8HaTG6s4HnprSpNZ7x2xo9Ag4RU"; // I need set my own xpub.
    var b32 = coinjs.bech32Address(pubkey);
    addr = b32.address;
    console.log(addr); // bc1q9m6yz90ekwdrgum294w7z85cth7muk600gnvxh

The issue here is that it gives always the same address (bc1q9m6yz90ekwdrgum294w7z85cth7muk600gnvxh).
I need somehow generate always new random bitcoin addresses (from my own xpub).

Xpubs do not create random addresses. They are part of the Hierarchal Deterministic wallet structure.
Coinbin uses his own library or wrapper so it may not work as you expect when trying to hack it. To me it looks like you are feeding an xpub into a public key to address conversion which isn't how an extended public key (xpub) is used.
An HD derivation path looks like m/84'/0'/0'/0 for BIP84 bech32 addresses. The example code in your question does not contain any derivation path instructions, so you will always create the same address.
In order to deterministically create from an extended public key you need to specify which change and index you are using in the derivation path which is the last two numbers in the path: m/84'/0'/0'/0. The m/84'/0' portion of the derivation path is already encoded in your xpub/zpub.
For example:
The derivation path for the first address in the keychain would be: m/84'/0'/0'/0
The derivation path for the second address in the keychain would be: m/84'/0'/0'/1
The derivation path for the first change address: m/84'/0'/1'/0 ...
and so on.
Although using a different library deriving from an xpub should look something more like the below (source) where derivation path parameters are needed:
buidljs.fromXpub("zpub6sCAx5BGhzosvmBsLyj8P1xjQHmuwHMoFm4ykHMmeP16Zn6iKpxy4BBDsHPRj4RsU5YvXigGvnYRYo4n5sA4QH2kgZUoTgQVTmzt5XuC6qD",0,0)

`{addr: "bc1qzsg5xf3kmdrd8629p29vtvj39ep82rhjwx58dh"}`

Note the last two parameters of the fromXpub function communicates which change and index from the derivation path we want, in this case the first address in the keychain.
Also just as a warning, do not generate "random" derivation indexes. HD wallets have look-ahead gaps which can only see about 20 address ahead, sending funds to m/84'/0'/34'/251 for example could possibly never be found by a wallet unless you had a custom wallet that knew to look there.


text:
What is the largest multisig quorum currently possible?
Bitcoin script allows for a UTXO to be (un)encumbered by an N-of-N signature. When N is 1, this is referred to as a single signature.
What are the limits of N for this application?
What is the technical cause of this limitation? Is it blockspace? Limitations of Script? Or some other reason?
Coordinating large amounts of people is often failure prone, inconvenient and confusing. For simplicity, let’s assume the involved users are all well-behaved and competent.

The rules governing this depend on the type of script used and whether that script is in the output script, in a P2SH, in a P2WSH, or in P2TR. Additionally, the rules are more restrictive for standardness than just validity.
OP_CHECKMULTISIG allows up to n=20. However there are other limitations due to script size limits that cause n to be smaller.
The alternate constructions of
<pubkey1> OP_CHECKSIG OP_SWAP <pubkey2> OP_CHECKSIG OP_ADD ... OP_SWAP <pubkeyn> OP_CHECKSIG OP_ADD <m> OP_NUMEQUALVERIFY

and
<pubkey1> OP_CHECKSIG <pubkey2> OP_CHECKSIGADD ... <pubkeyn> OP_CHECKSIGADD <m> OP_NUMEQUAL

are only bounded by script size limits.
MuSig2 as specified in the draft BIP allows for up to n=2^32-1 keys. However if you do not follow the standard, it is effectively infinite.

Multisigs in output scripts can use either of the script constructions. In terms of standardness, only OP_CHECKMULTISIG with up to n=3 is allowed. However in terms of validity, OP_CHECKMULTISIG can be up to n=20. With the alternate construction, the limit is n=67. This is constrained by the maximum number of non-push operations in the script of 201 operations.
In P2SH, the script is limited for validity by the stack element size limit of 520 bytes. This means n=15 using OP_CHECKMULTISIG. The alternate construction is limited to n=14. There are no standardness limits that would constrain this.
In P2WSH, the validity limits are the same as bare multisigs. It is limited to n=20 for OP_CHECKMULTISIG and n=67 with the alternate construction due to the operations limit. There are no standardness limits that would constrain this.
In P2TR, OP_CHECKMULTISIG is disabled, so only the OP_CHECKSIGADD construction can be used.  There are no standardness limits except for those that apply to the transaction as a whole. Additionally, the validity limits are those that apply to a block as a whole. With the maximum standard transaction weight of 400,000, a transaction could contain a script that uses OP_CHECKSIGADD that has n=11,759. With the maximum block weight of 4,000,000, n=117,637.
However with P2TR, MuSig is also possible. So those keys could each be a MuSig of 2^32-1 keys (or infinity keys if not using the draft BIP). Furthermore, it is possible to do nested MuSig (MuSig where keys are themselves MuSig), so this would also greatly expand the maximum number of keys that can be involved.


text:
Modelling random walks for double spending based on hashrate
I'm reading Analysis of hashrate-based double-spending where the following assumptions are made (on page 5):

The total hashrate of the honest network and the attacker is constant, say H. Let the honest network have pH hashrate while the attacker has qH hashrate, p + q = 1.

Mining difficulty is constant, and with hashrate H the average time to mine a block is T_0.

The author writes that if the honest network and attacker start mining blocks at the same time then the probability that the former (resp. latter) mines a block first is p (resp. q).
Now, while it is intuitive to grasp why this should be true, I am unable to prove so.
Any help would be appreciated!

I'm not sure if there is a formal "proof" available as this is implied by basic logic.
Assuming a block is found (aka mined) in future and there are only two mining subgroups "Honest" and "Attacker". If they have equal hashpower (p=0.5, q=0.5) then they are searching the solution space at the same rate and each has a 50 percent chance of finding this next block. If Honest has twice the hashpower of Attacker (p=2/3, q=1/3) then Honest is searching the solution space at twice the rate of Attacker and hence has twice the probability of finding the next block. Similarly with p=0.8, q=0.2 Honest is searching the solution space at 4 times the rate of Attacker and has 4 times the probability of finding the next block.


text:
Mt. Gox Exchange currency list
I am studying crypto-assets and wanted to know if there is a list of fiat currencies that could be exchanged for Bitcoin before its bankruptcy. Does anyone have any sources on this topic?
Thank you in advance!

You can check the copies of old mtgox.com web pages in the internet archive (wayback machine).
For example, https://web.archive.org/web/20121112054338/https://support.mtgox.com/entries/20490576-withdrawals-and-deposits lists

USD, EUR, CAD, CHF, AUD, HKD, YEN, MYR, NZD, SAR, SEK, and THB

However, I think you might need to search a wider set of archived pages from the same date.


text:
Synchronizatting network issue
Synchronizatting network problem, bitcoin not showing up in my wallet how can i retrieve it? Yried finding private key. Blockchain has it confirmed anyone know how to get it from blockchain?


text:
How do I recover cryptocurrency from a scammer?
I have been scammed by similarwebglobal.com.I have lost 25000 dollar. I have 2 addresses where I sent the cryptos. Can somebody help?


text:
Samourai Wallet missing funds
I apologize if this has been asked and answered... This past weekend I found out about the shutdown of Samourai Wallet. I had some BTC in there that is now gone.
I'm well aware of the fact that Samourai balances show up as 0.000 because of the servers being gone, but this is more: There was a withdrawal on 4/29 that emptied the account.
I have recovered the Wallet to Sparrow, but shows a balance of 0.
I have read posts saying that the xpub is now compromised by the Feds...Can someone help me with finding out where this transaction went? Much appreciated!

https://drive.google.com/file/d/1QxX_2uPiROKyiNPHo3YzLyjUogCEYDTM

https://drive.google.com/file/d/1R9V1D8wGDpzX2vuFYWmCRLKPamPQ5Cl3

There was a withdrawal on 4/29 that emptied the account.

You can check the transaction at any blockchain explorer for example, Blockchair

Can someone help me with finding out where this transaction went?

It went to address bc1qel94nj4vu2aedmmy5ffrpaxs4c007cwv4e96ka but it would likely be extremely difficult, perhaps impossible, to find out what person or organisation created that addess.
Even if you could, any hope of recovering money without expensive legal processes - perhaps in foreign countries - might be almost non-existent.
For the equivalent of $1800, about 5 hours of a lawyers time, I doubt there is any point in persuing this.

Related:

Is it possible to track stolen Bitcoin after exchange
How can I confirm to whom the bitcoin address I sent a payment too?