text:
how do i convert bc1 address to hex? for coinbase transaction
Im trying to create a coinbase transaction so that I can do some mining.
I have a bech32 bitcoin address, how do I convert that to hex so that I can include it in the coinbase transaction data?
example> bc1quukrk3u6cgpjhyqvehcj0ruyk8990dpev0zn6h
Also, where are the parts of the address? network type, checksum.
And how would I do it with the other address types?
Thanks in advance!

On-line converter: https://bitcoin.sipa.be/bech32/demo/demo.html

BIP173 specifies the conversion from Bech32 segwit addresses to scriptPubKey. You probably want to use some reference software to do the decoding (there are several links in the BIP). If you need the details, it is approximately:

Split the address in a "human readable part" and a "data part"; the last '1' character in the address separates the two.
Convert the data part from characters to symbols (integers in range 0-31) using the character map in the BIP.
Verify the checksum (last 6 characters of the data part). I'll refer to the BIP for the details.
Interpret the symbols of the data part as follows:

One symbol: Witness version (number 0-16)
Variable number of symbol: witness program
The last 6 symbols: the checksum

Perform various sanity checks on the data sizes and ranges, also illustrated in the BIP.

The retrieved information (witness version and program) can the be converted to a scriptPubKey, as specified in BIP141. Namely, OP_n (where n is the witness version), followed by a push of the witness program. Note that OP_0 is 0x00, while OP_1-OP_16 are 0x51..0x60.
There is a proposed amendment called BIP350 which improves the checksum for witness versions higher than 0 (which are currently not in use, but may become in use following the activation of Taproot (BIP340-342).
This is how conversion from addresses to scriptPubKeys works for all transaction outputs, FWIW. It is entirely unrelated to coinbases.
Disclaimer: I'm a co-author of all the BIPs mentioned in this answer.

Based on the given Bech32 address and quoting from BIP173
bc1quukrk3u6cgpjhyqvehcj0ruyk8990dpev0zn6h
Broad level, Bech32 splits into two parts, human-readable and data with 1 as a separator.
bc 1
quukrk3u6cgpjhyqvehcj0ruyk8990dpev0zn6h
Human readable part:

The human-readable part, which is intended to convey the type of data,
or anything else that is relevant to the reader. This part MUST
contain 1 to 83 US-ASCII characters...

bc segwit bitcoin network indicator:  "bc" for mainnet, and "tb" for testnet.
The data part

The data part, which is at least 6 characters long and only consists of alphanumeric characters excluding "1", "b", "i", and
"o".

q the witness version
uukrk3u6cgpjhyqvehcj0ruyk8990dpev0zn6h

A conversion of the 2-to-40-byte witness program (as defined by
BIP141) to base32:
Start with the bits of the witness program, most significant bit per byte first.
Re-arrange those bits into groups of 5, and pad with zeroes at the end if needed.
Translate those bits to characters using the table.

    0   1   2   3   4   5   6   7
+0  q   p   z   r   y   9   x   8
+8  g   f   2   t   v   d   w   0
+16 s   3   j   n   5   4   k   h
+24 c   e   6   m   u   a   7   l

An online converter:
bitcoin.sipa.be/bech32/demo/demo.html

I assume you want to post it in the coinbase transaction in the form of hex-represented ASCII data (like encoding text in OP_RETURN) for some sort of signaling/"bragging rights".
You haven't mentioned any specific programming language you want to use so I'd suggest using online ASCII to HEX converter? Like this one? Most programming languages have very simple to use ASCII to HEX converters as well.

I think the question is how to create a coinbase txout that pays out to the address he specifies.

Oh, looks like XY problem ;)


text:
Can Bitcoin.org precalculate bitcoin history and distribute it instead of requiring every new user calculate it for hours?
I am trying to set up a desktop client of Bitcoin Core, downloaded from Bitcoin.org. The process requires me to download about 350 GB of data of all bitcoin transactions, but there is an option to prune it to size of user choice like 2 or 4 GB. Since the history is the same for all downloads, why not precalculate these 2 or 4 GB and distribute it to new users? Why it is required that they process all the data by their computer?

Because that would require to trust the person that gave you the data (the utxo set). If you could download just the utxo set and start running your node someone could easily circulate fake data i.e credit his own address with 1000 BTC. In order to know that his address does not actually have 1000 BTC you need to replay all the transactions that ever happened and arrive to the correct balance for each address.
An alternative to running a full node (which requires no trust) is to run an SPV client which does not validate all block data but still does header verification.

source: Stack Exchange

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

sort: votes


text:
Solo Mining Difficulty?
So I finally got P2Pool up and running after a lot of trial and error. When I launched my miner, I noticed that the Network Difficulty is the same as Bitcoins overall difficulty (1.93T). When I mined in pools they would always adjust to an appropriate level, such as 200 or even down to 1. Is this just how solo mining works or is there something that I can adjust, because I will never get a share at that high of a difficulty.

I figured it out! (Kind of) I had originally connected my miner via http://. When attempting to use port 9332 it always gave me an error, so I had used a random port which allowed me to connect. Finally I tried using stratum+tcp:// with the 9332 port and that is what fixed it. I cannot set the difficulty though, so I am fluctuating between 1 and 3. Any suggestions on how to bump that up?

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


text:
How to generate scriptPubKey?
My address is 389CLh5Ect2i7U5116gqjBSLykYHRmdcgZ. In request from site i see this
scriptPubKey, how i can generate this scriptPubKey from my Address
{scriptPubKey: "a91446c443cc449d9e9a54a9e07a30dfd2ab1960a18f87", value: 60000} ?
If you have examples in javascript it will be good.

this is the partial answer, on the underlying logic. I cannot help with java script. The critical part would be the base58decoding, but it seems there are solutions already: https://www.npmjs.com/package/base58check
Underlying logic:
the scriptpubkey contains the RipeMD160 Hash, surrounded by some codes:
a9 14  87. This is a P2SH address.
the meaning of the codes is:
a9 -> do a RipeMD160 on the top stack item
14 -> push hex 14 (decimal 20) bytes on stack
87 -> check if the top two stack elements are equal

From your address, you need four steps, to come to this goal:
1.) base58decode the address
2.) remove last 4 bytes (this is a checksum)
3.) remove the first two bytes (the network prefix
4.) surround the codes to it

effectivly the procedure is the revers of the standard "base58check encoding": which answers, how to come from a pubkey in hexformat to
 an address:
0: have a Private ECDSA Key
1: derive the Public ECDSA Key
2: do a SHA-256 of 1
3: RIPEMD-160 Hash of 2
4: add address prefix 0x00 for P2PKH, 0x05 for P2SH
5. sha256
6. another sha256
7. take first four Bytes from step 6 as checksum
8. append checksum from step 7 to the result from step4
9. encode Base58

--> your bitcoin address !
help while testing: http://gobittest.appspot.com/Address
(hint: never put your production private keys into a webpage - you might/will loose the funds on it!)

scriptPubKey is static or dynamic ?

I am not sure what you mean by static or dynamic. The pubkey is derived from the private key via the ECDSA logic, then hashed, concatenated with a prefix and chcksummed, re-assembled and bas58encoded. There are other pubkey-scripts, which can be assembled dynamically, but not keys...

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


text:
Do miners participating in pools pay a transaction fee?
So I understand that an individual miner in a pool gets paid based on their hashrate. But my question is, what about the Bitcoin transaction fee? When the pool pays the miner, who is paying that fee to transfer the funds from the pool to the individual person?

The sender always pays the transaction fee, so it is the mining pool operators that pay the transaction fee. Of course since they control a mining pool, the mining pool operator can just have their pool mine the transaction and thus not have to pay any transaction fees. This is a fairly common occurrence.


text:
How does bitcoins power consumption compare to other financial institutions/exchanges? (ie banks, stock exchanges)
So recently in the news there has been some negative reporting bout bitcoins power consumption. "the Bitcoin network is consuming power at an annual rate of 32TWh—about as much as Denmark."  arstechnica
The article makes this look like a bad thing by comparing it to Denmarks power consumption,  But I'm wondering how bitcoins power consumption compares to A) other crypto currencies,  B)  to other financial instuments like The New York Stock Exchange, Nasdaq, or the the US banking system.  I can't seem to find this information by googling.
How does bitcoins power consumption compare to other financial institutions/exchanges?

Here is a cool article about bank energy use

Not exactly what you are looking for, but according to
United States Data Center Energy Usage Report .
All data centers in USA consume about 70-73 billion KWH, thats about 70-73TWh.
I can't imagine that other financial instruments would use more than 1-2% of that.

So many people have an opinion, but nobody is doing the calculation. I'll give a helping hand: an Antminer S9 can do 13TH/sec, and uses 1.2 kilowatt, if it runs one hour, it uses 1 kwh. I multiply this with 24 (for the day) and 365 (for the year). This is a bit less than 10'000 kwh.
Now I am looking at bitcoin.info, in the charts, how many terahashes are approximatly used. As of today (2018march05) I read 23mio TH/sec. I divide this 23mio TH/sec by the power of a single Antminer, to get an idea how many there might be in the world. This gives me 1.77mio Antminers. They consume all together per year 1.77mio * 10.000 = 17'700'000'000 kwh. Divided by 1000 for megawatthours, and another 1000 for gigawatthours and another 1000 for terawatt hours. 17,7 Terawatthours per year (well, it is growing at an enourmous speed...).
How many power supply units does this make? A huge carbon plant or atomic system provides 1000 Megawatt, equivalent to 350 wind turbines. 1.77 mio Antminers consume roughly (1.77mio * 1.2 kw) 2.124 Megawatt. This means, on the other side of the power plug must be roughly two atomic or carbon power plants.
Wikipedia says, that there are 3mio ATMs worldwide. I found different sources for ATM power supply, and found between 125Watts and 750 Watts. So lets only work with 125 Watts. This is 0.125 kW times 3mio installed systems gives me 375 Megawatts. So only the ATMs consume roughly one third of the Bitcoin miners.
I think this gives a good relation, and now the experts can extend this with the amount of power for printing dollars, distributing dollars, office space of the employees, transportation costs of the employees, and much much more. For sure this is still a naive comparison, cause the dollar reaches literally everyone, whereas bitcoin is still in its infancy (with constantly growing power demands).
Oh, on the power supply of Denmark: there are 5.75 mio inhabitants, and consumes per inhabitant 0.6kwh, so Denmark consumes 3450 Megawatt, which requires a bit more than three atomic or carbon power plants. But as Denmark is champion on windenergy per inhabitant, it is more like 1000 wind turbines :-) This gives an annual consumption of ~30 Terwatthours per year.


text:
how long does it take for a miner to validate account "balance" and how does it do it
My question is how long does it take for a miner to validate account "balance" is sufficient to initiate the transfer so it can include it in a block and how does it do it?
Does it iterates through the whole block chain and sums up the unspent outputs associated with the sender? Or it maintains an internal database that represents each member and their balances whose transaction was ever included in the block chain and once new transactions(a new block) is added to the block chain it updates its internal database?
I guess the second would be much faster than iterating through the whole block chain which is now over 100+ gigabyte.
I'm really interested in how the account balance is determined by the miners. Any help is appreciated. Thx

Every full node in the network does the work of making sure a transaction is valid, whereas miners do the work of confirming valid transactions by including them in new blocks. Transactions can be validated very quickly, whereas being confirmed in a block may take some time.
Every node keeps a copy of the blockchain and in doing so it generates a list of unspent transaction outputs (UTXO). When a node hears about a new tx, it will check to see if that tx's signature cryptographically matches the relevant address in the UTXO. If it validates, then the tx is valid, if it does not validate, then the node will drop the tx, and not relay it to other nodes. For some good related info, check out the answer to this question.
This is different than a method that functions by "maintain[ing] an internal database that represents each member and their balances", for more info on this, check out the answer of this question.


text:
Sent BTC to BCH wallet
I have seen this question pop over a few times but I did not find an answer I could understand. This is the scenario:

I created a BCH wallet, mistakenly thinking it was a BTC one.
I bought BTC and sent to the BCH address
Realizing the mistake, I created a BTC wallet using the BCH passphrase.

Is what I did correct? Am I likely to see my bitcoins? Should I do anything else? How can I check where the purchased coins are?

Your method is correct: you'll need to use the mnemonic seed phrase that generates the bch wallet, to generate a btc wallet. If you do that, you should see your btc balance.
To see if your btc are at the address you sent them to, just use a block explorer website such as blockchain.info. When you use the mnemonic to generate a btc wallet, it should show you the sae addresses as the bch wallet (as long as the software uses the same derivation scheme. Most software does).

This did the trick, thank you. For anyone else with the same problem, this is the procedure in case you have a bitcoin.com wallet : https://walletsupport.bitcoin.com/article/110/i-accidentally-sent-btc-to-my-bch-wallet


text:
Multibit transactions unconformed since august. Where is my money?
I heard last summer that Multibit wouldn't be supported any more. So I set up a Blockchain-wallet account and tried to receive the btc to my Blockchainwallet.
4 transactions seem to be stuck somewhere. 2 are unconfirmed and seen by 26 peers and 2 others are also unconfirmed and seen by 21 peers. I've also tried one of those accelerators but apart from increasing it with one seen peer its helping me not at all.
Back in august I googled a bit about this and saw in similar discussions people advising to just 'wait it out'. However, we're december now and my BTC still seem stuck. I'm getting a bit nervous now.
1) What should I do to either get the transaction done or get my btc returned?
2) I have other BTC in my multibit wallet left: how do I move them to blockchain wallet?

Probably it's due to a low fee. If you see the TX in blockchain.info or similar, you can view the satoshis per byte you paid for fee. Today (12Dec17), it's recommended to pay at least 100 satoshis per byte.
To try to fix your problem, you can reset multibit by clicking on Tools > Reset Blockchain and transactions, and wait to re-sync, as seen here
Hope it helps you


text:
What part that control coin's total supply and give initial coins to specific wallet?
As title,

Max coins supply.

From github's bitcoin source, where is line or function that define coin's total supply? Like bitcoin's case, 21,000,000.
I found that amount.h  file has above number, so then revise this number only and all done? What is maximum number this can be? int's max value, 2,100,000,000?

Give initial coin.
How to give initial coin to developer, marketing team member? And to pre-sale ICO customers? Where is that code?

You will probably not find the number 21,000,000 in the source code. The reason is that there are not really 21,000,000 BTC. It's a bit less. You need to sum up the block rewards. It's 210,000 * 50 + 210,000 * 25 + 210,000 * 12.5 ... < 21,000,000


text:
How to choose the transactions for a block?
From my understanding, the memory pool (or transaction pool) contains "open" or "unconfirmed" transactions that have to be validated and can be chosen (arbitrarily?) to be part of a "candidate block". For this block, the hash puzzle in a proof of work blockchain has to be solved before it can be added as a valid block to the blockchain.

How do miners choose the transaction(s)?

Does the difficulty vary depending on the number of chosen transactions? If not, wouldn't it be advisable to include as many transactions as possible when trying to find a new "candidate" block (maybe depending on the reward - just currency units or also (or only) transaction fees for the transactions included in the block)?

If the difficulty varies based on the number of selected transactions, however, wouldn't it be best to just choose one transaction and then "quickly" (i.e. as the first) come up with a valid candidate block to be added to the blockchain?

If it makes sense to choose "all open/unconfirmed" transactions and then try to solve the hash puzzle (by, as I've read starting with a Nonce value of 0 and then sequentially increasing it), wouldn't it simply boil down to the result that the miner with the largest processing power would always win?

similar: How do miners select which transactions to include in a block?. If you believe it’s different, please [edit] the question, make it clear how it’s different and/or how the answers on that question are not helpful for your problem.

How do miners choose the transaction(s)?

However they want. Usually by picking the ones with the highest fees, but also sometimes picking ones that have been unconfirmed for the longest, sometimes prioritizing their own transactions, etc.

Does the difficulty vary depending on the number of chosen transactions?

No.

If not, wouldn't it be advisable to include as many transactions as possible when trying to find a new "candidate" block (maybe depending on the reward - just currency units or also (or only) transaction fees for the transactions included in the block)?

Yes, this is the general idea.

If the difficulty varies based on the number of selected transactions, however, wouldn't it be best to just choose one transaction and then "quickly" (i.e. as the first) come up with a valid candidate block to be added to the blockchain?

The difficulty doesn't vary based on the number of selected transactions.

If it makes sense to choose "all open/unconfirmed" transactions and then try to solve the hash puzzle (by, as I've read starting with a Nonce value of 0 and then sequentially increasing it),

You can't include "all unconfirmed transactions" -- there's a size limit to the block. It's in the miner's best interest to include as many will fit in the block though, since the transactions come with transaction fees that are paid to the miner.

wouldn't it simply boil down to the result that the miner with the largest processing power would always win?

I don't understand what you mean by win, but miners who have the most processing power will mine the most blocks.

Thank you for the clarification. My last question was under the assumption that all miners would include the same transactions in when trying to solve the hash puzzle. This, also assuming everyone would start with the same Nonce value (0) would mean that the first solution found would be the same for everyone, just at different times (the more processing power, the quicker). But as it really is, even a miner with small processing power could be the first to find a new block - statistically, they more powerful miners would still find more blocks though.

All miners include different transactions. The first transaction is the one that pays the miner, and every miner probably wants their payout to go to their own address :) so everyone's working on their own unique version of the block. But yes, everyone, including smaller miners, technically can create the next block, it's just extremely statistically unlikely the smaller miners will be the one to do so.

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


text:
How basecoin transaction is added to a block?
I'm new to blockchain and bitcoin. In my understanding, miners are trying to find a nonce that is added to a block, and then the hash of the block will have some zeros at first and the first transaction in each block is a coinbase transaction.
Is coinbase transaction added to block before calculating the hash or after??? And what forces the miner, not to add 100 bitcoins as their basecoin transaction??
Also on btc.com I saw that different blocks have different amounts of bitcoins. Shouldn't it be a fixed amount of bitcoin, i.e 6.25??

It's called a "coinbase" transaction. It's added before the hashing work is done, just like all of the other transactions are.
If a miner tried to pay themselves any more than allowed in the coinbase transaction then the block they mine is considered invalid (since it contains an invalid coinbase transaction) and will not be accepted by the network, so they would have wasted any money spent mining it. This has happened before; for example, AntPool at block #584,802 submitted a block with too high of a coinbase transaction, and the block was rejected (see more).
Any amount above the block reward of 6.25 BTC paid in the coinbase is the sum of all of the transaction fees paid in that block, and this is how the miner claims their transaction fee reward.


text:
Is there such a thing as a decentralized stock market desktop application, in concept similar to Bisq?
Please note that I've already visited thousands upon thousands of slick websites with fuzzy claims about being "the future of money" and I consider them all to be vaporware at best, and usually downright scams. I have no use for yet another such URL where all I get is the same nonsensical word salad but nothing that can actually be downloaded and used today, right now.
Is there such a thing as a currently launched, in-use, decentralized trading desktop application? That is, not a centralized website with "Register" and "Log in" on it, not "Open in App Store", not "Available for your Android phone", but an actual program that is downloaded, installed, run, and which then functions like Bisq, but instead, you can trade on stocks with zero KYC/AML BS, zero registration of any accounts, zero any BS except that you have to back up a file on your computer. Like I already do with Bitcoin Core and Bisq. But for trading stocks and perhaps other financial instruments, in a tokenized digital form which has nothing to do with the "traditional" stock market.
My guess/hunch is that this "is being worked on", but is not actually available yet.
Just like in Bisq, I would expect it to require me to initially send in some satoshis to my "wallet" inside of the application, which is then locked while used as some kind of internal tokens until I withdraw the BTC back to my own wallet. (If I have any left after making actual trades.)
As you might have guessed, I've extensively searched for this myself before asking here, and only found the kind of "word salad" fake websites which offer nothing but empty claims of being "the future".

'not "Open in App Store", not "Available for your Android phone", but an actual program' — are iOS and Android apps not "actual programs"?


text:
Private Blockchains: Validation
I'm a software developer, and I have some questions about private blockchains, I'd like to have technical answers since I'm trying to understand blockchain at a code level. I'm going to write a problem, and it's all for the sake of getting ideas :)
So this is the context:
We have a private blockchain where blocks are added by a certain type of node (let's call them validators). The validators are the ones that are allowed to add blocks to the chain: they of course, verify the blocks by making use of some rules.
We also have the regular nodes (they can't add blocks but they can send their chain to other nodes if x node requires it)
Node A modified a block (x), and node B requested Block X to node A, Node A sends its block to Node B but this block that was just sent is an invalid block because it has been modified.
How can Node B certify that block x is an invalid block (since It's valid for Node A, how does node B know that it's an invalid block): we have a 50-50, who holds the truth then?
Would node B need many examples of Block X so Node B can decide if the block is valid?: 10 examples were received by Node B, 9 out of those 10 examples has the same hash (Y) but the hash that is different (block x from Node A) is the minority, so the winning hash (winning block) would be Y
Would we need an election process where the validators nodes decide which block is valid?
How would we solve that issue according to your knowledge?
I think that problem I just wrote is called The byzantine fault problem (I'm not sure but According to what I've read it seems like it is). I'd be glad to hear answers from you and any ideas as well!.
NOTE: THE PROBLEM I just described is not related to any blockchain of any cryptocurrency. The problem i described is only related to the blockchain technology itself and applications based on it.

How can Node B certify that block x is an invalid block

At a very basic level: a blockchain is a hash-linked list. Each block references the hash of the block preceding it, so any modification to a past block will be obvious, because that block's hash will no longer be a part of the longest chain.
The situation is trickier for a new node that is hearing the history for the first time though, or during a time when there are two valid competing chain-tips. Which chain-tip should be considered valid?
Bitcoin uses proof-of-work to decide which chain is valid: the one that has the most work accumulated (often termed 'the longest chain'). You cannot fake work being done, and so the competition amongst miners is what secures the network's history from tampering.
Without an objective measure (ie, energy spent creating a PoW), it can become very difficult to determine the valid chain in the event of a chain-split. You could create a system of voting, but such a system relies on subjective measures, and as such may be more game-able by network participants.

When it comes to a blockchain where there’s no mining involved, just a bunch of nodes that are the ones in charged of keeping the blockchain’s correctness alive, what way would be good to solve the aforementioned issues according to your knowledge? Thank you!


text:
Blockchain, correction of blocks
How do a malicious nodes correct their blockchain if they have it wrong?
If they don’t want to fix it, what happens then?


text:
How is the fault tolerance measured?
“If the number of nodes that agree exceeds 2/3, the blocks or transactions of clients will be accepted”
Practical Byzantine fault tolerance (pBFT) : (n - 1) / 3
I read those 2 things in a PDF that a friend of mine sent me.
The question is: are those numbers (2/3) or “(n-1)/3” constant? Or those numbers are established by the developers.
What makes those numbers? What’s the reason for 2/3 and not 2.5/3 ?  Or why not (n - 2 ) / 3

Possible duplicate of Byzantine fault-tolerant consensus - Why 33% threshold

It talks about why those numbers but not how they are measured

Where are you getting those nonsense numbers from? Those don't reflect anything about how the network operates at all.

They are not nonsense. They are written on the Practical Byzantine fault PDF. It does reflect how the network operates (Not for Bitcoin’s blockchain though)


text:
Theory: brute-force key search
Let’s say I want to generate many private keys so I can generate one private key (and thus a public key) identical to the richest bitcoin address.
But I can’t do that because my computer power is not enough.
What about if I create many machines, like the mining machines, but instead of generating hashes, they would only generate private keys, Let’s call them “Keying machines”
So I have many of those Keying machines generating thousands of thousands of thousands of private keys per minute.
These machines will only stop if and only if they recreate the private key-public key of the richest bitcoin address : 385cR5DM96n1HvBDMzLHPYcw89fZAXULJP )
Is this idea actually possible?

Sure, it's possible. In fact, this is exactly what the Large Bitcoin Collider does - It has successfully located a few private keys, mostly from a puzzle transaction that seems to have been made to test its progress.
That said, it would still take you an unreasonably long amount of time - The Large Bitcoin Collider took 1 year and 3 months to search 8,000,000,000,000,000 keys (8000 trillion).
There are 2^256 possible keys. Even if you are able to search 1000 trillion keys per second, it would take you 2.7×10^44 × age of the universe to go through all the keys. It's simply not feasible.
As pointed out by G.Maxwell in the comments, the Large Bitcoin Collider should be not be interpreted as a viable, secure, or even reasonable approach to this problem. There have been concerns about its safety and accuract (reddit source).

Right, but the more “keying machines” you have the more closer you get to the number of possible keys.

I cringe at any mention of "large bitcoin collider" -- because from all appearances it's a scam to get greedy people to run malware.  Its claim about being able to crack keys make no sense (see your math), and the software worked by sending arbitrary code to clients (behavior which was obfuscated in the codebase).

@Juan The basis for (almost) all cryptography's security is some computationally infeasible problem. That means that if an attacker can amass a large enough amount of computation power, they can break it. The question is only how hard it needs to be made for them so that this is infeasible. In this case, literally all computers in the world combined wouldn't be able to solve it within a large multiple of the age of the universe in time.

@G.MaxwellI agree, that's why I didn't link to their site, just mentioned it - I feel like it should be at least known that something like this exists, especially when relevant to the question

@Juan: Closer, yes.  In the same sense that if I start with one brick, and then I get 1000 more bricks, I am "closer" to being able to build a tower that reaches to Alpha Centauri.  Being "closer" isn't very relevant if you're still absurdly far away.

We would have to let the math do its magic. A Terahash can process 1 trillion hashes per second. If we do that, with keys, with many “keying machines” all over the world, we would be talking about a huge number that I can’t even imagine

My example already assumed 1000 trillion hashes per second, and you still end up with a dominant multiplier of 10^44. Even if could do 10^44 * 1000 trillions hashes per second, you would still need 2.7 times the age of the universe to compute all keys.

These machines will only stop if and only if they recreate the private
  key-public key of the richest bitcoin address :
  385cR5DM96n1HvBDMzLHPYcw89fZAXULJP

We do not need to use ECDSA math, calculating private and public keys and so on to steal funds from this address. In fact, this is P2SH address and the only thing we need is to find a good bitcoin script with a given hash160 value.
The good news are that finding such script is much more easier than finding a private key.
The bad news are that finding such script still takes more energy than our Sun can provide :)
Some pseudocode:
// push <20 bytes> OP_DROP OP_TRUE
for ( i = 0x1400000000000000000000000000000000000000007551;
     i <= 0x14ffffffffffffffffffffffffffffffffffffffff7551; i += 0x10000 )
{
//if ( unspent.contains ( hash160 ( i ) )
  if ( hash160 ( i ) == 385cR5DM96n1HvBDMzLHPYcw89fZAXULJP )
    println ( i );
}

Yes, it's possible but also (very,...) highly improbable.


text:
Can 2 blocks have the same previous hash?
Can two blocks have the same Previous hash after being created.
2 blocks totally different from each other but with the same previous hash

Can two blocks have the same Previous hash after being created.

Yes, two otherwise valid blocks could be created that both link to the same parent block, but importantly: only one of those two blocks will become a part of the valid chain. So ultimately, only one of them will be valid, and the winner will be the block that miners build on top of first (and thus it becomes a part of the longer chain).
The other block will become what is called an 'orphan block' (though some people prefer the more exact term, 'extinct block').
You can look through the orhpaned-blocks tag for more info.

What happens to the transactions on the orphan block?

@Juan simply: they are no longer a part of the blockchain record.

So that money is gone for good? The money X person sent to z person no longer exists?

@Juan no, the bitcoin would still exist, but the transaction sending it from X->Z would not (unless that transaction is also confirmed in the longest valid chain).

Oh okay, so you would have to send the transaction again so Z can get it

@Juan: In fact, other miners will normally consider transactions from the orphan block for inclusion in future blocks on the main chain.  So the sender typically doesn't have to do anything except wait a little longer for confirmation.


text:
Ripple: Validators
All the validators need to reach consensus in ripple.
Would it that mean that, the more validators there are, the slower the process results?
But the less validators there are, the more unsafe the consensus could result?

Increasing the number of validators can cause additional rounds to be needed for servers to reach consensus. This means that the consensus process could require more time.
The question is how much more? There are a lot of factors to consider; the network’s topology matters a lot. Generally, the operational metrics we’ve seen haven’t shown a statistically significant slowdown in the rate of ledger closed.
Quite the opposite in fact: improved validator connectivity has resulted in ledgers closing faster on average today than they had in the past. And this, despite the network’s diameter having increased.

I ran simulations on this a few years ago. Granted the code was somewhat different then but the general idea should be roughly the same. Each time I increased the number of validators by a factor of 6 or 7, an extra round (taking about 0.6 seconds) was added to the consensus process. This has no effect on the network throughput (transactions per second) but it does increase latency (time between issuing a transaction and knowing that it succeeded). So going from 20 validators to 200 validators would be expected to add an extra second or so of latency.


text:
Ripple: what’s the difference between “block” and “ledger”
I have heard many times that Ripple changed the concept of Blocks for Ledgers.
What would be the difference between a bitcoin block and a ripple ledger?

Bitcoin
In bitcoin, there is no concept of accounts, users, balances and payments. The bitcoin blockchain just stores the history of all the transactions that have happened. Each block contains transactions that were mined in that block. A particular block does not contain any details of the transactions included in the previous blocks (just the previous block header hash which links it to the previous block). When someone says that his wallet has a balance of 1 BTC, it only means that his wallet contains private keys that satisfies the unlocking condition (signature) to spend that 1 BTC. For example, to get your balance related to the private key, you will need to scan across all the blocks that have been mined and find out the transactions that can be unlocked with your private key signature (SPV nodes do this by connecting to a full node and use bloom filters, but that is a matter of discussion for other day).
Ripple
Ripple follows a ledger mechanism. By this we mean that unlike bitcoin blockchain which stores only the transactions, Ripple store account info such as the balances. So the ledger is a point in time snapshot of all the balances held by all the addresses. Each ledger has a version which is progressed by 1 as the ledger gets updated. If you want to get say your account balance, you can just download the latest ledger and need not download the previous versions of it. (You might only want to download the previous versions of the ledger in case you want to audit the ledger)


text:
can somone create guaranteed future transaction?
How to create a transaction in Bitcoin that can be spend after a certain period (e.g. 1 month) such that:
1. It is guaranteed that the transaction will be valid after 1 month (the account has enough BTC in it).
2. The amount to be withdrawn is not locked for that period.
Lightning network will allow this to happen. However, the amount must be locked, which violates the second condition above..

I don't see how it could even be possible to satisfy both conditions.  If the amount is not "locked", that implies that the owner is allowed to withdraw it before the month is up, perhaps paying it to some third party.  So now what should happen when the month is up?  Should the money be magically taken away from the third party and given to the original intended recipient?  That doesn't seem desirable.

You can create a transaction that has a lock time set. If a transaction has a lock time, it cannot be confirmed until after the lock time has passed. This mostly meets the first constraint.
However the inputs that it spends from could be spent by another transaction before the lock time of the original has passed, thus meeting the second constraint.
The caveat is that the lock timed transaction will only be valid if the output that it spends from is not spent yet. Bitcoin does not use accounts so there is no balance.

I agree with you that the problem can be partially solved using a time lock. However, such solution does not 100% (or with high probability) guarantee that the transaction will be valid after the period. I am looking for a solution with no caveat.

Then there is no solution.


text:
How to integrate 0-conf BCH payments into a web app?
I am currently working on a Bitcoin Cash related project with the goal of helping contribute to the ecosystem. I am getting to the point where I will soon be ready to start integrating with the protocol, but I am not quite sure how to proceed. The workflow I am looking for goes something like this:

User visits my website
User is presented a QR code that is for a specific payment amount (always $0.25 usd)
User scans QR code and submits payment
Website is listening for the broadcast of the payment (0-conf), and as soon as the network broadcasts the payment, a callback is executed therefore the user's session knows that their payment has been received.

I know the Bitcoin Cash Fund project is currently working on a bitcoincash.js library but it's not ready yet. Since that is the case, I assume I am going to have to fork the current bitcoin core js library and make it work with the cashaddr format to generate addresses for the QR codes.
The other piece that I am unclear about is how to go about listening for broadcasted txns. I see there is a blockchain.info websocket server, which I assume since they announced full support for BCH, that it will work with BCH:
https://blockchain.info/api/api_websocket
But, from what I can tell, I don't think it's possible to use the testnet?
So that is making me wonder if relying on a 3rd party for this, especially with it being 0-conf, is a bad idea? If so, I assume the answer is to run my own node and somehow have my own websocket server query it at regular intervals. Is that correct?
Also, on the topic of pub/sub for this, what is the best way for the client know a payment was made for that specific user? Is it to just generate a new address with each visit to the site? Or is it to include some sort of uuid as metadata with the txn?

You can host your own Bitcore Web services Bitcore
You can do things like as follows.

User present QR with the random address using this library Bitcore Library
User sends payment using wallet.
Website will be listening to transaction broadcasted by customer wallet.

Here is the resource for a payment protocol read it thorough you will get an idea. Bitcore Pay Pro
Talking about 0-conf: Once a transaction is sent, it is broadcasted immediately even if the next block has a few minutes before its found. If you as a merchant running  a node has capability to verify the transactions.
You can host your own BWS. No need to rely on 3rd party.
For more please refer to bws docs.

You can use the insticce.com api to generate unique addresses for your app. It will hit a callback url of your choice when payment is received.
It also forwards all payments immediately to a forwarding address of your choice. You have the option to wait for a confirmation before getting notified if you like.
If you accept zero conf you will be notified, and also receive the payment at your forwarding address within seconds of the customer hitting "send".
It works on testnet, mainnet and uses cashaddr format.


text:
why can I not fund my regtest named wallet?
I am using Bitcoin Core version v25.99.0-cbf385058bd6

I get the current blockheight
I create a named wallet
I verify that it's in <bitcoin-dir>/regtest/wallets/
I create a new bech32m address
I mine 101 blocks to the address
I get the current blockheight and verify it is 101 blocks later

The balance of my wallet is still zero.
What am I doing wrong?
> bitcoin-cli -regtest getchaintips
[
  {
    "height": 23534,
    "hash": "01884ed85ea0c2142e578237098e74d8d8e8f79398cb84fc5c11a21302a0f779",
    "branchlen": 0,
    "status": "active"
  }
]
> bitcoin-cli -regtest createwallet my-test-wallet
{
  "name": "my-test-wallet"
}
> ls ~/Library/Application\ Support/Bitcoin/regtest/wallets/my-test-wallet/
wallet.dat              wallet.dat-journal
> bitcoin-cli -regtest -rpcwallet=my-test-wallet getbalance
0.00000000
> bitcoin-cli -regtest -rpcwallet=my-test-wallet getnewaddress "" bech32m
bcrt1p3jderh6kwjtvcy67cwr863xg2n98c8rx8u6a94qyr7qk3ujvxagqm0wjvn
> bitcoin-cli -regtest -rpcwallet=my-test-wallet generatetoaddress 101 bcrt1p3jderh6kwjtvcy67cwr863xg2n98c8rx8u6a94qyr7qk3ujvxagqm0wjvn
[
  "40cdb3fc05b37d37a0653a710444b51e2ef266a0084c02a34c630a4ac15da07f",
  "34a55c80767b0774ed12e7e60a7df517fb32967a4b76b98539485739a71335e2",
  "77539a3ef7cff0b5b23c708b56d76690b6fb5c84ecb3f7459105ee62b64234b3",
  "43bdcfa08c709b33c302fb9288a791565aae4bf9ab73e6752e43c021d1e1d88c",
  "79075cbdc092fc72c0c755dfb2e76651bcdba5f72298153cd9c1931fdf9ba4ce",
  "64b10a9707a42073ea9bb74bb71ca1c576c20001eb182fb81b9c1dcb57552086",
  "7e3a35cc6480a825db995b7b8fdc363415236c9e08c83dddf5fe73ef5e77128f",
  "5874b187584337b3d2b3bbc6a5fe62e1f11caa7644416ae127e5551ee3505e00",
  "376883cdad3086ebfc1dac970dad78b3be23a725a084f0c165c8f28e43f7d5a8",
  "13b43a751dca0b286545b219e2a0b79bd67ce4708b8b5742c9892f2905691837",
  "31744c76dd4a60a82bee6f7f3622e30c22ce4f8bbeef1e6eada0a4bd4b0029e1",
  "5e59baeb67f4ace0956a89e42a382b0f1093dc48bab6fc05e075327aa8b76a89",
  "19c3bc1457bba90f676ddce2a7044db7edb935d171bafd1ba2c0d3cb74918de9",
  "71bec8c988c3c1175249ec47079dad4c26eff0aad0d41d273db05131593f1963",
  "0fe411004c21b956b90fb782ccde5cba0c2349c02964fb5a2a1678985f846acc",
  "07afb93edaa8ca28c131af6dd9f5ae9c306ef6a98646d8a045ca540e024bfcf3",
  "55867bbdc3652f5167165ea839c54436666c88d8596384c97383aa814e4f3fa4",
  "4837b83d2107ceb8c37f0f2fd650f2caa763194ffcc6d4f24a72e4a7f72c4eda",
  "322352edb7c42391173b470449e8f332ab452f56b5c0a6bec393be98613a510d",
  "49065488e0033054ab96a088730f1118a60331f4543b57c1467fa5e5f29cd472",
  "78c9afbc1b6047da4b4e4053791d02bc04dea5dddf3fa02134f33e390d1ae8e7",
  "654f4b60282ecd94649b3eff36526c3cefbf6e4b68d9275ed55c9bba28d90e5e",
  "4556526c0794293e950076cfba6550b7c701746ba907edbfb58478053fe4189e",
  "34962ac5b25a5000412d0bbd2d8b9b0454459ba7db88a91694755ecb89c43cd9",
  "2dd4466c9aa51ceb6d108095119350009e456b472aabed5418dfdf2c2ba0bef9",
  "36db0bc7d3da3f369d5ea4e04d5c7709765decc20ae8cefc0fccb64aa551b345",
  "1c30b58556d425308f47d960322b8a7abb0bffd451eb075217d7cefe9b689345",
  "6b24d6188960e1637ca4f15ebbfc99a6314afac153e5ef2aed4777bca8238049",
  "5ba939f6a092ba3c87988a20f1d7c798ff94971aa872cc322c9b4379a63e9b22",
  "643fe8b2c10360a679946e99a453e3d9877ff40484be12f11949e43ba9ce8988",
  "4db82357de82d878329116ee5afaaa45756d8431a1ac950a29c24fca2ab651f9",
  "4001cfd14c288aaa0efdd160c557e7c35701cbe0214735f68cee69ee3547c7a3",
  "0fcad6f5513ede892f444e6313f965e24358845fd4f28b42a23304a4bc4aec13",
  "2f9624d5fb294f6c040b9d930fd9f60e0990be8f27c9ffe1a0aafb7a1695c45f",
  "407034f34e1d7ec72e7a510c564f80c69b2ff32a76b77ea895bab21059ff8381",
  "4a36b8e54a9553be0123c77b5bd88381060e72c47207a1a36aa9508835a4a18f",
  "5eb91128a2fbf58793463ad547885d1866a5293652d3c0f48e2857e8c741d5dc",
  "44aeb0788d03212844066a5b803c18827b4310210214af21bf5101a860dc1794",
  "0b80155f207c27894999b8aef6b803daf52df953578f777b2234ae8a779970c9",
  "38638daab0557f0188c74b74b361ad5a8ae8b29c551c225388904acc50ba4744",
  "3a826abca36eb821db64b6488ce5fb383a959fe9757ee2b1dbbac651dc327d33",
  "7e73f4c49a4a391bd8adf0e71fe65ef32c07fb2c4cdea55b1741a54d27cf27ed",
  "7d4884840057eaf986263be82048d5cac85e1af609d390f9f1e05367f58c26ae",
  "552ebf48cf5a9795fdc3f0daa90ec74e50aca5b6f773f052d321a809073504fb",
  "067844068b5bfb3a12fa0eda7eead3f87ba9b77eedaa4758cd6bfaa33597ec37",
  "5a42b649614f019309d43ce254e4bf6d54b290edc48f3a7aadcac93d5e8d3e2c",
  "0c896192cba61b044c6175624ab1a0af21fe5cddd23535affaade40d7a7046fd",
  "4f1b08e2d4286793449e03b18af9848f0301d153aa9f592c8e0c3c0bf9f2b651",
  "166f31cdf4c282981ffa00c0c48a9bc192d94bdb30ac06ddc10f6058ce40d4f5",
  "127c85685d458f71b314db0938ede22131f028a13635c77de6a20ee3f65f3a94",
  "5cc55ec9e3144960d3e96723bd143422447ef09722a40cf2a93ca051ae5ec074",
  "3befaff7cdfabd762884d4ed39b8c44164585d9a83d5c0a732e58b2c2dd59645",
  "102fa5ba4b78ae3ff14a14a215da37787eb442336a05a13aef595d11798a4b86",
  "59c84ca96796a554ce098472977377245b2e896ab58f3a2737c3950fe305e884",
  "6055a4f0c5dfa1fe27c6414679f1868b0a34a213f723e5a98824f0e403be3f0d",
  "64585eabd5612ba77234da1b13de0d03dd8041ea80048965db69aba6f1fdae10",
  "66b23a788c2765d33592d26f6c71d395432e13a4e224d7f11dbdf996aeb877f7",
  "2d8180b05fad1f4bd5e684a914f0111bb824964fd6a2c487f436a400c01cda8d",
  "7556ec7b5861d36b6738eb0f9380dc39d9ef5fe1b8b6c1546cc73d0479a7528a",
  "491cd3a34267de9bb9806995572cad10a5536e4ebe21832dac72439d406031bb",
  "2ba9593e7ac1a77ee5309c08e770de45a7b11299311b5a030a4befb24c115a58",
  "02c451d099c3fd070f463d1798e89fb2b8f058b03169e54eb3d33babd70d8e9d",
  "6f3aeba45060406cfb2e095a692352b44903c201768f628231e6581be32c5797",
  "28008664a67305de9ad58bc90e51651e508e26a38122b9213cbc789d7f2b29fe",
  "3bf8ae82821498a3a114f7edac77f8c5d65d77045abc2b1e0512109455ccc471",
  "69a394736312fcf5a184e2fd9086a6f7004ae85ce28f379f4830bcc8098103c2",
  "4341c0ca65c65e32d04b9a3e85d8ea3a39fb3053cc91c2777e9c2db38427024e",
  "09e01c6f7b165a14a3511bba13b0b36935c5258d6e30b15bf1d1f5dc123529f2",
  "1dc03f6b9d3564062d9d52a458ef02f44fc231a1e5ef8da6728cf625a0a41e7f",
  "2779b983dc39828b708756dd6e680a0e3ef785313a4620fc58310c4cce49947c",
  "1458035817704386f18b6c9c83692eff386a0764578f0a58ff021a34ba11af26",
  "011ad33cb99e7150ae171897815666b06bd73fed285bb40396a1d1da6740af83",
  "650eab9341d6c9bea719f2646872f55369f8b3b092aa81ae9e712530e9b3b74f",
  "31b7283b2b6c6a35b289309e906d4dd5ae1aaaac4b6586bdeb1eaa879ffe1a80",
  "5826883ae1104fe833558f00b4d6b581dca88ef3a7680319b19dfb692d039b6b",
  "18c9ac98d100215e8605ff45be1821e64f05d0b853268e613c409e5bb9d02b6e",
  "490cf26cc49ee657c04a634a4f68eee514899119113fa9182d0dbfef7279c449",
  "48885e981bbbe25a8de1cd7555527351bddf67f381813c97e1f66e2a9fe1e67a",
  "479ad643362dd6e3b7bd7b05081e1563bd771909ef8270846d18d997cfe3ac26",
  "17094452389ea61deb98dc1c68fe4faf7f84d60d6f7f33a7a245e89e717f56e3",
  "4b3dc100043a0e969ebf00d0674f4c9ff0eb58fbccb8535c70512d2138482ffa",
  "0def7686d76348688dd1e451a4202fbbb306a92847eaf1a4fb0aa6bb1e7f5a7d",
  "739fb944aaf3afa7972c296626c511d43c38201d52a9e465eb243cd7bbd22cf0",
  "0e3ba82560cf395678439fa285945fd73b6ac5046d1bc9914fd8a4264a78e2d8",
  "20858133357de8af127657c7d0ec5eaa169b4bde2e7be9e223f6c41f413d40da",
  "18da25620e8e20e90c7849d45f1bf5c4dfb03c8e73f4ecc6f057ce9c79d21c16",
  "0378c0133613c0dbe76dd626c052109ab652575f811f63b4066d0e3c2afa8d0e",
  "23477d585ae84a358edd4d15836cd87093317f5aad885f4771e0987b89b21e88",
  "7ffec7929b63f3797e0b3ed7a34820414281ac07dca54faa97246eb6beed6a4a",
  "0aa44c2faf7ff90c8e8510152ae20b40a5d8aaa3fd796b0cbe6adab69f0dc00f",
  "7ed6d40df0812f7dab90ae4be01b0474aa168e89e304339c7f5cad61e1411558",
  "5943aa6f3532367fb83719c0e837ccab4448a44dd40e8ecd58928505f3c561a9",
  "17df2de0d67c3a28edfa9384ca1bb35a5db3ed617e33f9bc48f2d21ed9b03e7d",
  "492d8ccb60253d7285590317bbc26b7ac6f61d63578d0b31898c31b5864f58a9",
  "0cb7c7491a83487d605bb0fa357beb684bada46b792cafbcb6569daf452b2fd1",
  "42fa54512bf69a3aec904e2e5f8ab49353f21342e573a352160036b8823b8eea",
  "12fe259e90387fe48ae03f1af1c4019681f13fda48c8039c5b22d837463b9fc2",
  "251d665d6bf514bda8c6ad5d523f14d88e1b594f37a6d251aff0f95c6e79ab97",
  "5b9673ab761c13639872ad9a73d5947ec16e313b0409fe736bea83ad0b6ee216",
  "54761fe95456fc5a309964f6d058bc30742a601d2ec69cd65de57a8c93abd288",
  "01884ed85ea0c2142e578237098e74d8d8e8f79398cb84fc5c11a21302a0f779"
]
> bitcoin-cli -regtest getchaintips
[
  {
    "height": 23635,
    "hash": "410460c85ec568516f3b36eb1b97ff324e6160a7b4968bf2f0db035de2881fe0",
    "branchlen": 0,
    "status": "active"
  }
]
> bitcoin-cli -regtest -rpcwallet=my-test-wallet getbalance
0.00000000 <-- why???????????????????

The regtest halving interval is 150 blocks. With a block height of 23534, there have been 156 halving intervals. With that many intervals, the block reward is 0.

From what block height did you start mining at? Mining thousands of blocks when the block subsidy is already 0 is not going to change your balance - the block reward will always be 0.

is there a way to change the halving interval?

The halving interval can only be changed by modifying the software, and doing that will also represent a hard fork and further present issues if you have to validate the historical chain. Is there any reason that you have to use that particular regtest chain? If not, I suggest just deleting the entire regtest datadir and starting from scratch.

I just deleted my regtest and started over and it does the exact same thing..

err.. ok maybe not.. i mined 1 block and had a balance 0 zero.. then i did 100 blocks and now i have a balance of 100..  is there a minimum number of blocks I must mine to get a reward (in other words, why did I still have a balance of zero after mining one block)

Regtest still has the coinbase maturity requirement: newly generated coins are only spendable once they have 100 confirmations. The wallet will therefore not show immature coins in getbalance, however you will see them if you use getbalances, although they remain unspendable and the wallet will not try to spend those UTXOs.


text:
are there light-weight tools for viewing the mempool for unconfirmed txns?
Are there tools available for looking at what is unconfirmed in the mempool?  Or is running a full bitcoin core node the best way to do that?

There is no such thing as "the mempool". Every node has its own, and there are no guarantees about how consistent different nodes' mempools are with one another.
Hence, to even talk about a mempool, you need to have a node. I do not believe that any lightweight node implementations even maintain a mempool (as it's inherently pointless to talk about uncomfirmed transactions if you can't even verify them), so yes - you'll need a full node, whether your own or someone else's (e.g. some block explorer websites show you their mempool, but that is obviously trusting them).

You can run this on your full node, stay private
https://hub.docker.com/r/mempool/mempool
or run
 $ bitcoin-cli getrawmempool true

that requires having the whole blockchain downloaded.  I am looking a LIGHT-WEIGHT way to look at the mempool (specifically unconfirmed txns).

@patrick what you are asking for is to trust someone else's version of the Bitcoin chain. This is a security assumption that is not recommendable to anyone. You do not need to download the chain on to every device you want to query the mempool from. You can just run one node and then get mempool data from it via RPC such as https://developer.bitcoin.org/reference/rpc/


text:
How to increase payment process speed of crypto currency?
I want to make own coin. I have marketing cooperation team. I am main developer.
[Questions]
1 Making coin with pow and qr-code transaction function is possible for one man developer? Me, know C# well, but not yet C++
2 And currently bitcoin's transaction processing speed is 7 per 1 second, right?
How to increase this? How can it achieved? Is it at least possible?
Or it is impossible because crypto itself is decentralized? And what is maximum transaction processing speed can be achieved currently?
Thanks.

I'm afraid this is much too broad, its impossible to say whether you will be capable of creating a coin with your level of programming skill but its unlikely you will be able to if you are asking these questions, which shows a lack of core understanding about how bitcoin & other cryptocurrencies work. Bitcoin is coded in C++ and its testing framework is coded in Python so C# is not directly applicable to that code, but there may be other coins you could fork from and modify, or you could learn C++. But indeed, if you don't understand why the current transaction limit is in place or have not seen any of the research into more efficient transactions then you won't have the required knowledge to make meaningful improvements to how it works sorry
I'd suggest doing a lot more reading of firstly how bitcoin works at a fundamental level including raw transactions, block construction, etc., and then into research of scaling improvements that are being worked on such as lightning, MAST, how segwit works, etc. Note that if you want to help contribute to scaling research in bitcoin, that's a much larger and more useful area than trying to create an independent currency IMO :)

Thanks for comment. But my team want money... and me too. So we plan to do ICO within 2~3 months.  Of course I read some books about how bitcoin works.  And I will start by just copy & paste bitcoin's source itself.  From there, just I want to change some parameters like total coin numbers from 21 million (bitcoin's) to like 2 billion.  And just want to increase transaction speed per second. Is this hard to do? How to program it for fast transaction?

@leegod creating an ICO for a copy+paste coin is basically asking us how to make a scam. Don't do that, go and earn some money in legitimate ways not with an ICO

Why that is scam? Bitcoin is legitimate system, proven, there is no creator or any other hidden man can make coin. Just when it started, creator and his team get coin, it is justice because they do works.

Making an ICO for a product which is just copy pasted code and pretending it is worth money makes it a scam...


text:
How to compile newest source and find merkleRoot hash value?
I am following youtube video for make own coin.
I did below 4 lines command for compile  newest bitcoin source.
./autogen.sh
./configure
make
sudo make install
And run ./mycoind file at src/
after this, debug folder does not generated debug.log file like video at [Home/.mycoin/] folder.
This is for modify assert(block.hashMerfleRoot == uint256 ..... value.
Why and how to fix?
Thanks.


text:
How difficulty increases to get the lucky hash in blockchain?
Currently first 19 zeros are required in bitcoin block hash which has become very hard. How this zeros are being controlled to increase? If it is dynamic what are the factors which has influence to make hash matching difficult?

"Currently first 19 zeros are required" In hex. That's 76 zeros in binary which is a better way of saying it since the probability of finding a valid block after one attempt is 2^-76

The Bitcoin algorithm is written to aim for 2,016 blocks being mined roughly every 2 weeks (which works out to ~1 block every 10 minutes on average). After every 2,016 blocks, the network will adjust the difficulty based on how long those previous 2,016 blocks took to mine: if it took longer than 2 weeks, the difficulty is decreased; if it took less than 2 weeks, the difficulty is increased.
For the exact calculations and more information: https://en.bitcoin.it/wiki/Difficulty


text:
Private Keys Relationship in HD Wallets
I'm new to bitcoin (core) wallet. I recently begin to use it to store some BTC. I'm using the latest version 0.21.0.
I have some basic questions on the keys/addresses it generated. I use command getnewaddress 3 times, the last item has "hdkeypath": "m/0'/0'/2", and I dumped its private key, and put some BTC in this address.

What's the relationship between the first pkey/addr (the one with hdkeypath: m/0'/0'/0 and the third one m/0'/0'/2? Does the first key/addr is the master (key) who can recover all later keys generated in the wallet.

I only backup the private key of m/0'/0'/2, and removed the whole wallet (the .dat file). Is there a risk of this method? Since I only choose to use this key/addr to receive and store BTC.

I later create a new wallet and restore this m/0'/0'/2 key with command importprivkey. and send some BTC to other people, and found it generate a CHANGE addr, so I also backup this new addr's private key too. Since I mainly use this m/0'/0'/2 to store long term BTC, and will not use it to make a lot transactions. So I keep the privatekey of m/0'/0'/2, and keep backups priv keys of change addresses it generated, then drop all wallet files. Is this method enough to restore all my balances in a futher day.

Can the private key of m/0'/0'/2 be used to recover the change addresses' private keys? (What is the master seed of HD wallet, it is the private key of m/0'/0'/0?)

Thanks in advance

What's the relationship between the first pkey/addr (the one with hdkeypath: m/0'/0'/0 and the third one m/0'/0'/2?

They are derived from the same parent key. Other than that, there is no relation.

Does the first key/addr is the master (key) who can recover all later keys generated in the wallet.

No. They are both child keys of the key at m/0'/0'. The actual master private key (the key at m) is not exportable. There is a HD seed (which is used to generate the master private key at m), but this is only exportable through the dumpwallet RPC.

I only backup the private key of m/0'/0'/2, and removed the whole wallet (the .dat file). Is there a risk of this method? Since I only choose to use this key/addr to receive and store BTC.

Don't do that, you will lose money. When you send Bitcoin, Bitcoin Core will generate new change addresses and send any change there. Those change addresses have different private keys. Without them, you will lose money.
Additionally, by reusing the same address, you are significantly hurting your privacy. By using the same address over and over, anyone you transact with will know how much money you have in your wallet and be able to see all of your incoming and outgoing transactions. This allows anyone to track your spending habits.

I later create a new wallet and restore this m/0'/0'/2 key with command importprivkey. and send some BTC to other people, and found it generate a CHANGE addr, so I also backup this new addr's private key too. Since I mainly use this m/0'/0'/2 to store long term BTC, and will not use it to make a lot transactions. So I keep the privatekey of m/0'/0'/2, and keep backups priv keys of change addresses it generated, then drop all wallet files. Is this method enough to restore all my balances in a futher day.

Bitcoin Core constantly generates new change addresses. The one time you forget means that you will lose money. If you accidentally request a new address and use it, you will lose money.
In general, backing up individual private keys is not recommended. You should back up the entire wallet.dat file itself. There is no need to export each key individually and back it up in that way. That is a surefire way to lose money at some point in the future.

Can the private key of m/0'/0'/2 be used to recover the change addresses' private keys? (What is the master seed of HD wallet, it is the private key of m/0'/0'/0?)

No. The change addresses are unrelated. You would need to have the HD seed mentioned previously in order to derive them.

Thanks for the explanations. I may still to only backup private keys. Since I want to make a Paper Wallet (with a new layer of encrypt with a password with AES). Since I won't sent BTC out, so I think I can take the risk of remembering of store the priv-keys of change addresses if I do send BTC out occasionally.

@ntk135 Bitcoin Core is not the right choice if you want a paper wallet. That may change with future releases, but right now, you're really going to shoot yourself in the foot.

@Andrew Chow: The answer to question 4 is technically yes (if you have the xpub of m/0'/0' as well), but I don't think this changes anything about the overall advice here: don't rely on any of the details of how the wallet works internally; back up the entire wallet.dat file.

@PieterWuille I don't understand. As long as I have the correct private keys (and no matter what wallet these private keys are generated from), I can restore the BTC in any wallet implementations, no?

@ntk135 It's technically possible, but the chance of making a mistake that will lead to losing money is so high (even for experienced users) that it's not recommended.


text:
Can Bitcoin Core be made to display/enter amounts in USD or other fiat currencies?
Every time I need to make Bitcoin payments, I have to switch many times between Bitcoin Core and my separate Bitcoin currency converter. For example, to see how much that transaction fee is in USD.
It would be very useful if it could be made to display a fiat currency instead.
Since this requires reliance on a third-party service, I understand why this is not built in.
However, can't I enter in the configuration file something like:
currency_converter_url = 'http://127.0.0.1/btcconverter/'

And then Bitcoin Core could make requests such as:
http://127.0.0.1/btcconverter/?satoshis=123456&to_currency_code=USD

In order for my own script to output how much that many satoshis are in USD currently, so that it can display it to me.
Is this possible? It would be extremely useful.

No, this is not possible in Bitcoin Core. You will have to use a third party wallet software such as Electrum if you want this functionality.
There also isn't any standardized format for exchange rate APIs, so you will be limited to the exchanges that are already built into the wallet you select.

You missed the part where I said it was my own custom script. I can control exactly what is outputted to it, but apparently Bitcoin Core doesn't have this ability, so it doesn't matter.

I mean... no, Bitcoin Core doesn't come with the feature to interface with your own custom script, considering that would be a feature that's only useful to you.

Only useful to me? Are you serious? This is the most useful non-crucial feature imaginable.

There's an argument to be made for implementing with existing major exchange price APIs (but they'd rather not build third party API connections into Bitcoin Core)... however I can't imagine what the argument is for something that works only for your personal custom script.

What is your problem? The point of mentioning my custom script is that it can be ADOPTED to whatever Bitcoin Core expects/wants. Not that Bitcoin Core has to do it exactly like I have come up with it. Jeez.

@ieatpizza I don't really understand what you're getting at here. I've added my own answer that hopefully clarifies things a bit.

There isn't much to say about this. Bitcoin Core doesn't support this, presumably because nobody found it interesting enough to work on. It is open source software, without any governing body that sets the project's priorities. If you want it, you're free to work on it yourself, or convince someone else to do so.
I don't think there is anything fundamentally wrong with the idea. Bitcoin Core has a policy of not relying on any centralized services, but that doesn't preclude the ability to let users configure a script or URI to fetch exchange rate information from.


text:
How do miners decide when to give up on a block?
So in my understanding, miners bundle a list of transactions into a block and begin working on it until they can generate a valid proof of work. There are various reasons to group fewer or more transactions together into a block, but it's ultimately up to the miner.
I'm assuming that different miners may group the same transaction into different blocks and begin working on them. One miner might group transaction A into a block of 100 transactions and start working while another miner might group transaction A into a different block of 250 transactions and also start working.
When one miner finds a valid proof of work and broadcasts the new block, do all the other miners who included even a single transaction from the valid block in their own block have to drop what they're doing and start over?
Is there some system in place to ensure that most miners are working on blocks with the exact same set of transactions except for the miner's reward transaction?

You're right, miners can freely choose among the unconfirmed transactions when they're building their block template. However, miners are optimizing for revenue, so they'll be mostly selecting transactions in order of descending feerate.
Since transactions propagate quickly on the network, most miners will have a largely overlapping view of the queue, and their block templates should be almost the same.
Since each block commits to a specific predecessor, the best chain can only have one block at each height. Mining is progress-free in that each hash independently has a (tiny) chance of yielding a valid block. So, when a new block is found, miners do not have any sunk cost, they just update for the new predecessor, pick a new set of transactions, and go right back to mining at the new height.


text:
How could I do everything manually?
I don't like asking coin base to create an account for me and having them give me my private key. How can I do all of this process myself?
Either bitcoin or ethereum

If you want to do everything yourself, download a wallet program on your computer and run it instead of using coinbase. For example, if you use a wallet like Bitcoin Core, it is completely under your control on your own computer, and its completely open source so you can review it all yourself. Thus you don't have to trust any third parties like coinbase. That is the principle behind why bitcoin is designed the way it is, and bitcoin core is the evolved version of the original bitcoin software Satoshi wrote to be trustless in this way.

having them give me my private key.

As Pieter mentioned, coinbase will not give you any private key.

for now just open an account. i don't know if i could not use a wallet and manage my money myself.

Just to clarify a nit with this point, bitcoin doesn't have any "accounts", in the way you might be thinking. You just have private keys, which correspond to addresses, which bitcoins can be paid to. There is no "balance", just unspent bitcoins sent to addresses, which are known as UTXOs (unspent transaction outputs). By installing a wallet on your computer, it will store your private keys for you, and watch the blockchain for transactions sent to your addresses. It doesn't ever "register an account" anywhere :)

btw.is there a way to purchase btc and make sure that i will get what i pay for? i guess i should trust coinbase for that one. but maybe you know of a better way

Currently you just have to trust a seller like coinbase, yeah. If you pay via credit card and don't recieve it I imagine you could contact your credit card provider and ask them to reverse the payment or something though, not sure. But yeah there's no way I know of to trustlessly exchange BTC for fiat currency.

"But yeah there's no way I know of to trustlessly exchange BTC for fiat currency." Meeting in person and exchanging for physical cash (a bearer asset, like BTC) comes pretty close.

@PieterWuille ah that's true, that still does involve some trust though that the person will not try and forcibly take the money (and can often be quite difficult to arrange)

Right, I'm not claiming it is very practical. But it is an inherent issue with trading a bearer asset for a reversible payment - you can dispute the payment, but can't take back the bearer asset.


text:
Does the backup (Bitcoin QT) saves my BTC if i create thousands of addresses?
I'm using the latest version of Bitcoin QT
Just encrypted it and backed it up.
If i generate 20.000 addresses, and transfer BTC to this addresses.
Would the backup i made recover all my BTC?
Thanks.

If you're using an HD wallet, then yes.  This would be the case if you created the wallet from scratch with the latest version of Bitcoin Core using default settings.  However, if a lot of those addresses were unused, you might have to use special options to increase the gap limit when attempting to recover from the backup, or it might not regenerate enough addresses.
If you're using a non-HD wallet, then no; in that case you have a keypool of 1000 keys.  So when you make a backup, it will be able to recover coins from the next 1000 addresses you generate, but no more than that (unless you use the appropriate command line option to enlarge the keypool).  This would be the case if you created the wallet with an old version and then upgraded, or if you set the command line option to use a non-HD wallet.

In 0.15 the default keypool size was increased to 1000.

You can tell if your wallet is HD if it says as much in the bottom right corner of the QT window.


text:
How an order fulfillment works
I'm trying to understand how order fulfillment algorithm works from technical point of view.
Let's say I created an order to sell 0.8 BTC and buy 5400 XRP along with other orders to sell 0.35 BTC, 2.7 BTC, etc. On the other side, there are some traders who sell different amount of XRP to but BTC.
To be more specific, imagine:
trader1 wants to sell 0.8 BTC,
trader2 wants to sell 2.7 BTC
...
But there are no traders that are willing to sell exactly the same amount of XRP. There is a traderX who wants to sell 7000 XRP so in this case he may have a deal with trader1 and partial deal with trader2. However, this is not how all exchangers work, right? Usually all orders processed as a single transaction.
So how all these orders match to have a trading?
Any algorithm or code in any programming language would be very helpful. Thank you!

"so in this case he may have a deal with trader1 and partial deal
  with trader2."

This happens all the time in the markets. Majority of the people don't really notice this happen because the size of the trades are small enough relative to the liquidity of the market and get they get complete fills.
If you tried selling a huge amount, lets say, 1000000 XRP at a particular BTC price, you're likely not going to get a complete fill right away.
Another way to get a 100% fill is when some other trader places a market order bigger than the size of your limit order. In that case, the exchange will "eat through" your limit order and move on to the next best available order in the orderbook. Or may be there are multiple market orders that can be filled against your limit order, so your limit order gets filled as more and more market orders come through.
There's a lot to read about similar topics, search for order matching algorithms: https://stackoverflow.com/questions/13112062/which-are-the-order-matching-algorithms-most-commonly-used-by-electronic-financi


text:
Can I make Bitcoin transactions without the involvement of a bank account whatsoever?
I am a web designer and I don't have access to a bank-account (and therefore, credit/debit-card) and I am not old enough to open a bank-account yet. Could I use a Bitcoin wallet to receive money and store it there as long as I want (and possibly, send those Bitcoins) ? Paypal would be ok except they only allow you to receive a limited amount before you are required to connect your Paypal account to a bank-account.

Welcome to Bitcoin.SE! I see @Taurus you seem to have ended up with two user accounts. Please see merging accounts for assistance.

Related: https://bitcoin.stackexchange.com/q/13966/5406

Could I use a Bitcoin wallet to receive money and store it there as long as I want (and possibly, send those Bitcoins) ?

Yes. You can buy Bitcoin at Bitcoin ATM where is located some places. You can find a Bitcoin ATM here.
Some ATMs allow you to buy and sell coins, but some does not allow you to sell.

(I am OP BTW) Thanks. However, I don't want to buy any Bitcoins! I only want to receive them, what I am asking is, can I trade in Bitcoin efficiently without the involvement of a bank-account ?

Yes. You can trade in Bitcoin without a bank account. However, the transaction fee is expensive ( if you want to get a confirmation in 10 mins, you probably have to pay $20+ for the fee). If you receive Bitcoin, you do not have to care the fee. You can check the average fee here.

Thanks again. So, how do people get around these high transaction fees ? It sure is inefficient.

Those who afford high fees got involved in Bitcoin at an early stage, so they have a lot of bitcoin and made money with it. We can still send bitcoin with lower fees like $1 although it takes a few days to get a confirmation.

This is a big problem I never knew about. I did read somewhere though that the fees would get lower gradually (decades and years). And even worse, the confirmation problem, what are some possible solutions to this problem, aren't Bitcoin experts proposing any ?

Bitcoin core has been working on the scaling problem. You will be able to use Lightning Network which allows you instant payment and low fees. LN is called off-chain solution. Bitcoin is a layer-one protocol, and LN is a layer-two protocol. You can think of LN as TCP/IP layer. On the other hand, Bitcoin cash came out in order to solve slow confirmations and high fees on-chain.

@Taurus Also, if (as you can in Bitcoin Core) you choose three-day target confirmation for the fee, instead of twenty minutes, then the fee rate is quite reasonable but, the transaction may take some time to confirm - choosing three-day target confirmation is not a guarantee of confirmation in three days. Usually, you can see a transaction soon after it is broadcast, just not confirmed.

You can utilize cash to purchase Visa, MasterCard or American Express prepaid gift cards, sell these for bitcoins, and then you can do the inverse when ready and sell the bitcoin for prepaid gift card which can be sold for cash.
A little bit of searching on the dark web; you can easily sell the prepaid gift cards for a bitcoins, for a small fee. Of course, before proceeding with any of this you’ll need to set up an off-line bitcoin wallet to have ready once you sell the prepaid gift cards for bitcoins.
When you’re ready to cash in your BitCoin you can simply do the exact inverse to extract bitcoin to prepaid gift card and then sell these for cash (a robust market for this on the dark web as well).
There you go: (cash > bitcoin | bitcoin > cash), with no Identification, bank accounts, debit/credit cards required.
Cheers
(Cashing out Bitcoin to cash using Peer to Peer sale locally is much easier to buy and sell cash to bitcoin and vice versa (e.g. localbitcoins.com); however, depending on the amount of money, it can be more dangerous then the method above)


text:
How can data be accessed/searched for in a blockchain?
I'm currently trying to find practical examples for the usage of a blockchain, instead of a typical database like MySQL.
I understand that the big advantage of a blockchain is the high security of data not being compromised.
But how can I imagine accessing or searching for a specific record in the blockchain?
Let's say, in a company we use a blockchain for saving all employee payrolls? How could one look up all payrolls for a specific employee?

You can access blockchain data like the way you access normal data in any  MVC where you fetch data from database ,manipulate it in backend and display the result in front end. Incase of blockchain,what ayou need to understand is it is  nothing but a decentralized database where transactions occor dynamically and the data is distibuted among all the nodes.
So to explain how the data is actually fetched from blockchain, what I do is ,Crawl each block in the blockchain and store the data in your preferred data base like MySql or Mongo
You can use rpc getblockhash "n", which will return the hash of the block "n", for example:
eee7f58d111ef0b25f7f6e8703d80ab6b51ca957170daea949e93e6467906889
You can retrieve the block's contents by calling  get block "b", where "b" is the hash. Which can look like this:
{
        "hash" : "eee7f58d111ef0b25f7f6e8703d80ab6b51ca957170daea949e93e6467906889",
        "confirmations" : 176023,
        "size" : 261,
        "height" : 0,
        "version" : 1,
        "merkleroot" : "695191c2e8f8fddc75331a38d658ab07672970b09981ad77c29c4b0b17580941",
        "tx" : [
            "695191c2e8f8fddc75331a38d658ab07672970b09981ad77c29c4b0b17580941"
        ],
        "time" : 1518520240,
        "nonce" : 2084635057,
        "bits" : "1e0ffff0",
        "difficulty" : 0.00024414,
        "nextblockhash" : "1bb4a4c35103a363ad63bf59bf7fa45c06babcfa8d848ceeb7e4958f9a9f660e"
    }

Now every key value of above output replicates some important concept which cannot be ignored. But for now lets just focus on "tx",
the array of tx are the list of transaction that have been mined in the "n"th block, and now you can crawl each and evry transaction given in tx array using rpc getrawtransaction to know the detail of each transaction.
Personally, I store the details in MongoDB so I can keep track of my applications' users, their addresses and the transactions they have done.
So this is a simple approach by which you can access data from a blockchain.

I'm currently trying to find practical examples for the usage of a blockchain, instead of a typical database like MySQL. I understand that the big advantage of a blockchain is the high security of data not being compromised.

That's a meaningless question. A blockchain is not a replacement for a database; it is a mechanism for multiple parties which are already running their own databases to make sure they all end up in the same state.
For example, in Bitcoin, that database is the UTXO set, which maintains for every unspent coin the amount and owner. Every Bitcoin full node has its own copy of that UTXO set. It can be stored in any kind of database engine - the most common ones using a specialized LevelDB instance. The blockchain consists of a list of authenticated updates to that database. You never search the blockchain itself, as that would be like going through all your bank statements to find your balance. Instead, you just look at the balance itself.
In the case of Bitcoin, that database is a very simple key-value store, as that is sufficient for verifying transactions. It is highly specialized, and does not maintain any indexes beyond what is necessary for validating things. But in theory, it could instead be backed by MySQL - allowing you to issue queries against your own UTXO set.

Let's say, in a company we use a blockchain for saving all employee payrolls? How could one look up all payrolls for a specific employee?

That would be ridiculous. The problem a blockchain solves is consistency while permitting multiple independent and distrusting parties to make updates which may conflict with each other ("double spends" in Bitcoin's case). If you have a single party (the employer) who must approve updates to the database anyway (or a collection of identifiable parties who trust each other to some extent) much more efficient technologies exist.

So what does a blockchain store? If there's LevelDB to store the data, when will data from blockchain be ever fetched?

One possible simple implementation of this would be by making an Ethereum smart contract. You could easily store employee information in a mapping of their ethereum address to whatever information. You can fetch the stored information in javascript. The contract could be written so only the employee could view his data.

So a smart contract can have his own storage?

Yes, but writing is very expensive (you will need to pay ethereum gas), so I would not recommend to actually do this, but it's the easiest implementation that I can think of. Reading data is not expensive though.

When you say a smart contract can store data, means the data will still be stored on the blockchain, no? Because smart contracts live on the blockchain, right?

Blockchain is a P2P decentralised network of nodes.
The query of "Let's say, in a company we use a blockchain for saving all employee payrolls? How could one look up all payrolls for a specific employee?"
One simply will not use blockchain for this query.


text:
Can you prune blockchain without redownloading?
I've downloaded the whole blockchain now I want to run a pruned node on another device. But if I klick on prune block storage in bitcoin core, it tells me that reverting this setting requres re-downloadin the entire blockchain. Is it possible to prune a copy of the blockchain I've already downloaded and if so how do I do that?
Thanks

Pruning doesn't require downloading again. It's if you'd want to go back to unpruned state that it needs to download things again (obviously, because the data isn't there anymore).

Ok but then how do I do that? As mentioned I can't figure out how to do it in the bitcoin core GUI. Is there a command for bitcoind that I need to use?

That sounds like you're already pruned, and you're trying to revert to unpruned state. Going from unpruned to pruned should just work.

No it wasn't. Turns out the warning I got in the GUI was misleading. Upon restart it didn't re-download but just pruned the blockchain I had already stored. Thx for your time!


text:
QT compiling for Debian systems
Bitcoin version : 0.21
System: Ubuntu 18.04

All dependencies installed.
I am using Depends system to compile QT wallet. I compiled all three (Mac, Windows, and Ubuntu) successfully. All run just fine.
Only with Ubuntu, the QT file doesn't open with double click like other programs. How do I compile it so it works just like other programs, and I don't have to open terminal every time I want to run the QT wallet.

What happens instead when you open by double clicking? Maybe it's just already running? Can you run bitcoin-qt from the command line?

yes, everytime I want to run the QT wallet, I open the terminal and type ./bitcoin-qt to run it. It runs perfectly fine.

@Prayank That sounds unrelated to being able to start it by double clicking. Clearly the binary works, or OP wouldn't be able to start it from the command line.

@Prayank About bitcoin-qt.pro, see https://github.com/bitcoin/bitcoin/pull/21695

I am not saying binary doesn't work. I am saying I want to open it with double click instead of going to terminal. Just like if I download Bitcoin-qt from Ubuntu app store, or from Github release page.

here's the exact error when I double click the Bitcoin-qt binary file:
There is no application installed for "shared library" files. Do you want to search for an application to open this file?

@prayank That file is for Qt creator. It is not used for building binaries.


text:
Is Block 507570 a pure spam block?
I found Block 507570.
There are only 51 transactions in this block but its size is almost maximal, there are 3,964 input adresses with exactly 0.0001 BTC.
The sender paid only 10$ for 61,602 Bytes here for example and there are 19 similar transactions in this block.
Is this an attemp to waste space of the blockchain?

looking at this particular example, there is many, many multisig tx, one after another. These multisigs require more signatures, and extend the space. Now one can try to be speculative, and say it is spam - as we don't know the real use case. The advantage would be, that you fill the block of "low level fee tx" (see here: https://core.jochen-hoenicke.de/queue/#30d), so that following tx need higher fees, which pays better off for the miner(s).
Another approach for a use case is cold storage. To reduce the risk, I separate the funds of my exchange users in a hot wallet, and a cold wallet. Every now and then the users will want to move funds around, which might create such huge tx. I haven't followed the addresses though.
A third use case could be mixers. Many people would contribute their initial bitcoins, and then mix it between many different addresses, and bring it out again... In an overall tx, with 10$ fee, you could "wash" +170 US$ of current value.


text:
Transfer money from a bank account to a bitcoin wallet
How do I transfer or pay money from a bank account into a bitcoin wallet address? Please assist

You cannot transfer dollars from a bank account directly into a bitcoin wallet.
You’ll need to sign up with a bitcoin exchange service, there are many in existence. Once you have an account with one of them, you can transfer dollars to the exchange’s bank account, and then your user account will be credite. Next you will be able to purchase bitcoins at the current market rate through the exchange.
After that, you can withdraw your bitcoins to a bitcoin wallet you control.
There are other ways to purchase bitcoins too, but I think exchange services are perhaps the most commonly used


text:
How do I transfer money from a bank account to a bitcoin address
I need to pay money into a bitcoin wallet address from a South African bank account, please assist

I know that you say you need to buy bitcoin but, you have tagged bitcoin-cash which is different (unless you meant it to say 'pay cash for bitcoin'?). I hope you know the difference before you make an order.

Banks hold and transfer fiat currency.  The Bitcoin network holds and transfers a token called Bitcoin.  What you are looking for is someone who is willing to sell you Bitcoin in exchange for some of the fiat currency in your bank account.  This is fundamentally different than transferring money from a bank account to a bitcoin address.
What you need is an exchange.  There are several to choose from, but you will need to find one that accepts payments from a South African bank.  Product and service reviews are considered off topic on this site, so you may want to look elsewhere to find an exchange that suits your needs.

A quick internet search gives me this result:
Buy Bitcoin in South Africa
https://www.buybitcoinworldwide.com/south-africa/

You can use https://coinbase.com to help you convert it (note: ONLY 18+ can use it).

As far as I know, this Bitcoin wallet works in all countries, including with African countries https://polehin.com. Although, perhaps there are better analogues. I would generally make some sort of comparison list


text:
Trezor Security
I'm not completely sure this is on topic.  I apologize if it's not.
I have a 24-word seed stored (etched on metal) in my house.  I continue to worry (just a little) that the metal might either fail to survive a fire or end up buried under so much rubble that it will be outside my control.  So I'm using a backup storage system, and my question is whether it is insecure in ways I haven't thought of.
Namely:  I have a Trezor  (with the same seed and with a PIN number that I am confident is quite strong and secure) buried a few inches underground in a waterproof box, on my own property  but quite far from the house (and so presumably safe from house fires).  I can imagine that somebody might stumble on this somehow one way or another, but in view of the strong and secure PIN number I am not concerned about this.
I ordinarily walk by the burial site a few times a week, so will notice if it's been disturbed, in which case my plan is to bury a different Trezor, possibly in a different location.
It's also possible that the waterproof box is not as waterproof as I think it is, but I expect that the likelihood of losing both my metal seed backup to a fire and my Trezor to the elements is acceptably small.
I could, of course, put that Trezor in a safe deposit box instead of burying it.  But I am imagining a scenario where my seed phrase is gone; I'm not sure whether it's been destroyed or found by a firefighter, and I want to move my coins in a hurry, possibly on a weekend and surely without having to spend time at the bank.
Is this plan less safe than I think it is?  And if so, can you suggest an alternative that addresses the same issues?   And finally, am I worrying too much about extremely unlikely events and not enough about others that are more likely but that I've failed to consider?

Generally it is advised that you don't bury hardware wallets for long periods of time as they need to semi-regularly have their firmware updated to address vulnerabilities that get discovered over time. Instead what you should generally bury is the mnemonic seed on metal (encrypted with a passphrase or "seed extension" if it is possible an individual could find it or see you accessing it).
To state the obvious if anyone sees your unencrypted mnemonic seed they can access and move your funds.
However, in your case (everyone's circumstances are different) you want to have the option of moving the funds quickly from the burial site using a hardware wallet hence you are burying an actual hardware wallet. This seems ok to me though you should update the firmware on the hardware wallet in the case that you were ever to move funds using it. The hardware wallet may not work if it has been left for many years or decades whereas the mnemonic seed is designed to persist over time.
It seems like you have given a lot of thought to the risk of your house burning down. The probability of this happening (depending on where you are located and how common wildfires are) is low. I would encourage you to also consider other risks such as an individual (e.g. burglar) accessing the mnemonic seed on the metal in your house and whether the mnemonic should be encrypted with a passphrase or "seed extension". The upside to this is that it protects against a burglar but the downside to this is that if you forget or lose your passphrase you won't be able to access your funds.
You could also consider having your funds stored in a multisig address (e.g. 2-of-3 or 3-of-5) rather than a single signature address. This protects you against the 5 dollar wrench attack as there is no one location from where there are enough keys to move your funds but it does require more planning and technical competence.
Security is never perfect. You can only seek to improve your setup so that you can easily access your funds whilst making it as hard as possible for another individual to access your funds. It seems like you have given sufficient thought to this and your setup is satisfactory (perfection is unattainable).
This What Bitcoin Did episode with Shinobi on Bitcoin wallets and this Q&A with Andreas Antonopoulos has additional guidance and may be of interest.

I had not thought about the firmware issue; thanks for this.  Re burglars, I believe my seed to be well enough hidden that fire is the greater concern.


text:
I tried installing Bitcoin on a Ubuntu 18.4 server. The status of the Block is still in 0 even after two days of installation
I tried installing Bitcoin on a Ubuntu 18.4 server. After installing the Bitcoin core, I started Bitcoin-diamond. The status of the Block is still in 0 even after two days of installation.
I want to know how long it will take to allocate the blocks?

Do you mean the Bitcoin Core daemon bitcoind?

What does "status of the block" mean?


text:
Why do some wallets not need syncing?
I recently downloaded the Bitcoin Core wallet, and was mildly inconvenienced by the fact that I had to spend 4 days downloading 200 GB, but I just beared with it.
However, I soon discovered that some wallets like Electrum and Bitcoin Wallet don't need syncing at all, which makes me curious about why some wallets need syncing and others don't, and what are the benefits to syncing as it takes up a lot of space, time, and bandwidth?

In brief, so-called lightweight wallets have to trust the nodes they communicate with, full-node wallets don't have to trust other nodes.
Bitcoin's creator, Satoshi Nakamoto, wrote about Simplified Payment Verification (SPV):

As such, the verification is reliable as long as honest nodes control the network, but is more
  vulnerable if the network is overpowered by an attacker. While network nodes can verify
  transactions for themselves, the simplified method can be fooled by an attacker's fabricated
  transactions for as long as the attacker can continue to overpower the network.

Would this factor of trust be significant to an average user of the network?

@JamesPalmer that depends on how you define 'average'. Note that if everyone decided to trust someone else to do the verification, then the network would become very fragile to certain attacks and manipulation (ie a changing of consensus rules). On the other hand, if everyone runs a fully validating node, then it becomes very hard to alter the network's rules in this way. So it is in the user's best interest, from both a personal sovereignty, and network-health perspective. You wouldn't want to invest/use a network that is prone to unjust manipulation!


text:
Can you crack SHA-256?
From my understanding, a hash function is an algorithm that takes a unique input and produces a unique output, and a secure hash like SHA-256 cannot be reverse engineered. I saw this thread Won't ASIC miners eventually break SHA-256 encryption? saying that it would take a ridiculously long time to crack a SHA-256 hash, but can't you just brute force it if the input is short?
For example, if an insecure password such as test123 was turned into a SHA-256 hash, and an average gpu can do around 1000 MH/s, then just by brute forcing alphanumeric characters up to 7 digits (26 + 10) ^ 7, then wouldn't it take only about (26 + 10) ^ 7/(1000*1000)/60/24 = 54 days to crack it (less with a good gpu)?
Basically what I'm trying to say is isn't the strength of a SHA-256 hash directly correlated to the length of it's input? If a really short string such as "idk" was turned into a SHA-256 hash, wouldn't it be cracked in a matter of milliseconds? (and thus proving that you can crack a SHA-256 hash)

There is a large difference between being able to produce the preimage for a single SHA256 hash for which you may know certain factors like length, character set, etc., and being able to break SHA256 as a whole.
Short inputs are naturally more vulnerable to brute forcing, which is why SHA256 is not a recommended hash for password storage - instead, hash functions that are deliberately designed to be slow and adjustable, such as bcrypt, are used where the input size may be small enough for practical brute forcing of hashes like SHA256.
In all applications of SHA256 in the Bitcoin Protocol, all the inputs are large enough to make a brute force attack impractical.


text:
How long can popular hardware wallets last in cold storage?
Consider the Ledger and Trezor hardware wallets: how long could they last in a typical bank safety deposit box?
If the answer needs specifics, assume the following:

Temp: 20C
Humidity: 50% RH
Altitude: sea level
Vibration/shock: none
Cosmic radiation: whatever would get through to a typical safety deposit box (should I choose a box nearer to the floor assuming there's no risk of flood?)
"last" = 999 of 1000 wallets stored would have full functionality after this period

To help me understand more, in your answer, could you explain why hardware wallet data retention is longer (if it is) than, say, a typical USB stick, a typical SSD, and an IronKey.

It seems like the general consensus on how long the actual cryptographic chip in the Ledger and Trezor devices will last is ~20-30 years, comparable to a standard flash drive. The Ledger Nano X has a battery that is rated for a 5 year lifespan, after which you probably won't be able to use it without plugging it in, although the cryptographic chip should still work well beyond that.
Regardless, if you would like to ensure your crypto assets can be kept in cold storage for a very long period of time, it is recommended to keep a backup of the seed phrase. If you use a durable medium such as a steel or titanium wallet to record your seed phrase, your assets will be recoverable for as long as the seed phrase is legible.

There is no "cryptographic chip" in the Trezor, it's an off the shelf processor designed for consumer appliances. These numbers seem to have little basis in reality.

@Anonymous The storage of cryptographic secrets, in both Ledger and Trezor, are in standard flash memory whether that flash memory is on a specifically designed secured crypto chip like it is on Ledger or a standard microprocessor like it is in Trezor. Since neither of these to my knowledge have specifically tested the longevity of their storage, and because neither have existed for long enough to see significant numbers of them fail, it should be safe to assume the lifespan of them are comparable to other similar flash storage mediums.

Can you point me to the source of this information about the "general consensus"?


text:
how is blockchain data stored and accessed?
Can blockchain data be stored in a relational database? If so what would the schema be? I know blockchain itself is a data structure, but how is the data stored? In JSON files? In a RDBMS? in CSV file? What do you see in the wild? I'm looking to see if I can implement something for a case study in a RDBMS which we are required to make use of.
Is there any example of a schema for a given blockchain with tables I can find? (I started creating my own and I think it's reasonable).