text:
what is the fastest free way to get at least 1 satoshi
I know CPU mining uses more power than its worth.  I know GPU mining uses more power than its worth.  Yadda yadda.  Regardless, I have a spare server, my home internet is on an unlimited plan, and electricity is included in my rent, so...
As a learning exercise, I have been running headless bitcoind for several weeks.  I have also run it on testnet3 at times, and used online testnet3 BTC faucets to get testnet3 BTC to my bitcoin-core testnet3 wallet.  I have also played with the command line RPC interface for querying the blockchain, the wallet, etc.
Now I would like to do similar with (non-testnet3) BTC.
However the faucet I tried is "giving" me like 23 Satoshi (within their internal account register) per captcha, with 1 h wait for next try, and 30,000 Satoshi payout limit, and 3,000 withdraw fee.  This will take 54 d if I visit it every hour 24x7.
And with the mining pool I tried (slushpool with bfgminer compiled from source with CPU, GPU mining enabled), I don't entirely understand the pool's nor miner's interface.  The miner claims to be working at 6 Mhash/s, while the pool at first seemed to be saying 0 hash/s.  But after 24 h, it seems to show 1 blip in its graph where there was momentarily 1 active worker, and the hash rate blipped up to 427 Mhash/s and then decayed back to 0 over about 1 h.  I suppose this represents the completion of 1 share but I don't see a way to set a lower difficulty than the default 128 (and haven't read enough about pools and shares yet to understand how that would help anyway).  The pool has a minimum payout of 0.1 BTC and thus estimates my time to next payout at 48 y.
What other free method can I use to get at least 1 Satoshi into my wallet sooner than the above?  Are there faucets or pools or other methods that are several orders of magnitude faster than this, such that I could complete my experiment in a day or two?
Note, please exclude answers that boil down to "mine altcoin and convert to BTC".  Also I've implied in my question (in addition to my hardware, electricity, and bandwidth being considered free) that my time, by mentioning faucets which mostly have captchas, is free.  However let's not extend that to "design a web site and charge in BTC".  And obviously not "buy BTC on exchange" as that is not free.  Also I don't mind if the transaction fee is exorbitant, e.g. I do the captcha equivalent of 2 Satoshi and only get 1 Satoshi.

Filling out captchas on faucets is not free; it costs a ridiculous amount of your valuable time and reimburses you at a pitiful rate.  You'd be far better served to spend a fraction of that time working at some worthwhile job, and using your wages to buy some coins on an exchange.  Heck, in the time you spent posting this, you could likely have earned enough money to cover the fees of buying some coins.

"as a learning exercise"  and "considered free" both in the question already.  Yes I've done the math on the effective "wage" of at least this first particular faucet I looked at.

There are no shortcuts, nor any free rides.
First off, you aren't going to be able to do anything with 1 satoshi.  You wouldn't be able to afford the mining fee to transfer it anywhere, which means that it has essentially been taken out of circulation.  As it stands, everything you can do with 1 satoshi you can currently do with 0 satoshi.  For amounts that small, you shouldn't bother.
Second, your time has value.  Regardless of your electricity costs, setting up a CPU/GPU to mine bitcoin will take time.  Furthermore, with so little hashing power, you aren't going to see a payout anytime soon...even while mining on a pool.  You are probably better off trying to use the faucet you mentioned.
As it stands, the least expensive (both time and money) and fastest way for you to obtain a usable amount of bitcoin is either to purchase some, or sell a product/service in exchange for some.
I know this is not what you are looking for, but I assure you that it is the truth.

Thanks for your time in answering.  As I tried to make clear in the question, I'm not concerned with the profitability or shortcut or free ride as you call it, I'm concerned with the educational benefit of verifying that the bitcoin system worked more provably than a testnet3 test.

Also you dwell a little on the uselessness of 1 satoshi.  That's fine I understand that too.  I did say at least 1 satoshi.  If this "fastest" way that I'm asking for must deal with 3 or 30 or 300 satoshi, that's fine, as long as its significantly faster than 54 d.

It won't be.  If you want free, you'll be lucky to get some as soon as 54 days.

Jestin - As it stands, the least expensive (both time and money) and fastest way for you to obtain a usable amount of bitcoin is either to purchase some, or sell a product/service in exchange for some.

You could take the opportunity to register on earn.com and put yourself out for a bit of fee-based consulting. Depending on your profile you may be added to some lists which will possibly get you some paying tasks in addition.
Another way that you can put out some service in return for Bitcoin's is coinworker.com.
There are several of these type of service for Bitcoin opportunities on the web.


text:
Blockchain.com blocking my account and all transactions pending since one month
I have more than 40BTC blocked in blockchain saving account, they asked me for KYC to send them my official documents and proof of earning of those BTC, I sent all and they ask now for Tax correspondance about those BTC a way to steal my BTC !
An official complaint is being done now with my international lawers.
Ticket#1989121
Anyone have same problem with them ?

The Blockchain.com wallet is non-custodial, unless you specifically opted to use their trading wallet (to buy/sell BTC using their exchange). If you didn't specifically opt to use the Blockchain.com trading account, I would assume you have been scammed by someone.

I lost 0.1 BTC like this. Out of the blue they blocked my saving account and asked me to send them my official documents. I sent all and they ask and they say: "Please be advised that your application for identity verification has been temporarily rejected because the document you have used for verification is no longer supported. [...] You will receive another email in the nearest time from Blockchain.com with more details on the information required.". Total scam - the ain't sending anything for month now.

If you have the walletID and password, then you could simply download the encrypted backup and sweep your private key to another wallet like electrum and move your funds out without needing to wait for blockchain.com

Thanks, but they are in the interest account not in wallet, I sent them from the interest account to the wallet, transaction pending since a month now

They still cannot block your funds. At least they should return them to the account from where it was sent.

source: Stack Exchange

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

sort: votes


text:
Process for finding nonce
Assume we have a transaction in hex (tx_hex) and we want to find a nonce such that
SHA-256(SHA-256(nonce|| tx_hex)) = new_transaction_id   ('||' denotes concatenation)
first bits consist of 32 zeros. I understand that this nonce can be found only by brute force.
However, I cannot figure out how you check this condition in practice. new_transaction_id is in hex, so is that equivalent to checking that its first 8 digits are 0?
And if so to find the nonce, I just have to try every possible number (let's say up to 32 bits) for the first 8 digits of new_transaction_id to be 0?
That is my code BTW
def mine(self, tx_hex):
    for i in range(1,4294967295):
        nonce = hex(i)[2:]
        new_tx = self.add_nonce(nonce, tx_hex)
        sha = self.get_tx_id(new_tx)
        print(sha[:2])
        if sha[:8] == '00000000':
            print('Nonce:', i)
            break

Does this answer your question? How does solving a block work in relation to the first letter/number after the 0's?

@RedGrittyBrick I don't know if I fully understood your answer, but here I specifically want the new hash to have zeros at its first 32 bits. Can you help for this case?

Ignore the count of leading zeroes. Test whether the calculated hash is numerically less than the target value (hash < target).

@RedGrittyBrick Ok, that makes sense in practice, but I still want to understand what we mean by the first 32 bits to be zero. Do we examine the 256 bits of SHA-256(SHA-256(nonce|| tx_hex)) (binary) output and expect the first 32 to be zero?

See  https://www.oreilly.com/library/view/mastering-bitcoin/9781491902639/ch08.html#difficulty_bits  you  should probably view the difficulty as simply a compact encoding of an inverse of the block target. You get the target then you compare the hash with the target, not with any aspect of the compact encoding of it's inverse. The 32 bits of zeroes is just an aspect of the encoding - it isn't applied to the hash.

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


text:
How to execute bitcoin transactions in a decentralized way?
I'm working on a project to automate donating bitcoins to charity every time Elon Musk mentions #Bitcoin on Twitter. To make this possible, people who want to donate would need to send bitcoins to an address holding all the coins in the meantime. And then when the condition is met (Elon mentions #bitcoin in a tweet), the bitcoins would be sent to the bitcoin address of a charity.
Obviously for security reasons, I shouldn't know the private key of the address holding the donations or that would allow me to steal the donations. So I'm trying to figure out how can the donations be sent to charity without any one person knowing the private key of the wallet?

What you're asking for is called Oracle and as we speak there are no perfect implementations of it. It's an ongoing problem to be solved for example it's hard to weed out false information. I advise you to read more about it outside this forum.


text:
Assuming a decentralized exchange like this, wouldn't this basic logic guarantee profits every single day?
Let's say that Bisq releases their API (which seems imminent) tomorrow. Now, we can automate talking to Bisq to trade between Bitcoin and whatevercoin.
If I do the following:

Manually put 0.01 BTC into my Bisq account.
Start my bot loop which connects every minute or something similar to the Bisq API to check the price of Bitcoin.
Note the current price of Bitcoin.
Wait a minute.
Check the price of Bitcoin versus whatevercoin.
If the difference to Bitcoin's benefit is larger than arbitrary small amount, buy predetermined arbitrary small amount of whatevercoins for Bitcoin.
If the difference to Bitcoin's benefit is smaller than arbitrary small amount, buy predetermined arbitrary small amount of Bitcoin for whatevercoins.
If the Bitcoin price goes up too much in a too short period of time, pause trading until it's become stable again.
Regularly send out some Bitcoin profits from Bisq to my normal wallet, always keeping at least 0.01 BTC in there.

This logic seems way too basic and naive to ever work. There must be something I'm missing. Would this not guarantee constant profits since, with the exception of steep bull runs (which this bot would detect and pause for), the price goes up and down all the time during the day?
Even including "expensive" offers (not exactly market price), and Bisq trading fees, that could easily be accounted for to determine if it's meaningful to buy or if it has to wait another minute, etc.
Would this not guarantee constant profits? In what scenario would this not guarantee that your coins slowly but surely increase all the time?
Is this exactly what will happen when they release the API? Should I be not wasting one second right now but instead get to work to actually code together this script to be one of the first to take advantage of it when it's released? Or have I missed some basic point which would quickly drain my 0.01 BTC?

What goes wrong is that you make a profit on every trade, but you are holding lots of bitcoin when it goes down and lots of whatevercoin when it goes down. Adverse selection causes you to take huge losses when you aren't trading! When bitcoin is going down, everybody wants you to take theirs. When bitcoin is going up, everybody wants yours.

Sorry, but I don't understand what you mean.

When you aren't trading, the value of the assets you hold is changing. You will find that when bitcoin goes down, you are holding a lot of it and when it goes up you are holding much less. Ditto for every other asset you hold. (People want to sell bitcoin when it's going down, so you wind up buying to from them. They want to but it when it's going up, so you wind up selling it then.) This causes you to suffer a net loss that is not due to your trades. This is called "adverse selection".


text:
Bitcoin Core wallet fails to load and requires reindex after I already did it
My Bitcoin Core is synchronized. But I can't open a wallet, it says that I might need a reindex. Though I already did it. Also I can't do dumpprivkey because it says that no wallet is loaded.
How can I make it work or at least get my private key in order to use another wallet..?

Are you pruning?

@Anonymous Yes, I am

Do you use the newest version of bitcoin core?

@GašperČefarin Yes, v0.19.1


text:
Why importing private key from one HD wallet to another doesn't restore the balance?
I've seen similar questions here but didn't find an answer
I look for a private key in Exodus, for example, and import it to Jaxx and I don't see my balance correctly
So my questions is, do all HD wallets generate public keys from private in the same way?
Also, for example, there are wallets that do not allow to generate new public address, does it mean that wallet is bad?
And if public keys aren't generated in the same way then does it even make sense to keep you private key on paper wallet if you won't be able to get your funds then?

do all HD wallets generate public keys from private in the same way?

No, the "derivation path" is an important additional piece of information. You should be prompted for this when importing / sweeping a private-key
See Default derivation paths

Thanks.
So, I understand, that the best practice is to avoid wallets which derivation path I don't know(if I want to be able to then restore funds sent to it's addresses)?
I experimented with multiple wallets and made a conclusion that loosing your funds is pretty easy

@Vid, I expect the derivation path for any popular or well-known wallet should be findable online without too much trouble. I feel it is a good idea to practise restoring a wallet from backup, from private-key (etc) or from the seed-phrase/recovery-phrase.

In Exodus every address have private key maybe you import address with zero balance. To import all you must do it through 12-word recovery phrase.

I saw balances and imported the one with nonzero


text:
What is this code saying ?
16: bad-txns-in-belowout (code -26)
With the Bitcoin Core Console
I get this code when I'am done signing my transaction.
I get this message instead of a transaction ID number.
What is it ?

It means the total value of the UTXO spent by your transaction's inputs is less than the total total of the outputs.
Put otherwise, it's trying to create money.


text:
Does cgminer have to be on for me to solo mine for bitcoins
I see my antminer has cgminer built into it.
Do I need to have cgminer on my computer screen while "solo mining" for bitcoins ? or can I just have the antminer on and hashing straight through the router ?

Related: https://bitcoin.stackexchange.com/questions/36845/solo-mine-with-an-antminer?rq=1

cgminer is just the client software to control your ASICs. Where cgminer gets it's work from is your question and that depends ...

You can run your own full node and point your hashing power there
or way easier would be to just use some hosted solo pool like http://solo.ckpool.org/

On the website you finde further information on how to solo mine.

The basic idea of mining is that there is a node which has work (actually calculating hashes) to distribute to (usually a pool of) workers. Your Antminder would typically be such a worker, i.e. it is usually configured to ask a pool for work, do work and report results back.
The idea of solo mining typicalls means to run your own local pool on your machine (which of course doesn't charge you anything) and run just one worker.
What that means related to your question:
Theoretically, an Antminer ist a computer after all, so it should be able to run a node which distributed work to itself, which is what solo mining is all about. Just I haven't seen any option to enable this in the Antminer GUI. This maybe due to the fact that if was probably academic anyway as solo mining will not generate any coins for you anymore. Also it may be an issue if your Antminder would have sufficient storage capacity to run a node.


text:
Can multiple small graphic card memory collect more mining hash rate
If I set multiple 3GB GTX 1060 , It can generate more hash rate than single GTX 1070 6GB.
Can I still mining ETH by this 3 Gb cards when the bloCk size of eth is over 3 Gb.
EXPLAIN ME.

Currently you can not do that.
DAG should be loaded to card's memory to mine. Current miner software do not support this kind of cross-card memory management

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


text:
Does anyone know specifically what are all the entities behind Ripple and who runs / owns them?
As far as I'm concerned, there are Ripple Labs and Ripple Foundation, but I couldn't find any good resource providing more details on each of them.
I was wondering what their business model is and how it works.
Thank you in advance.

You may need @DavidSchwartz to answer your this question ;)

The team behind Ripple can be found here
https://ripple.com/company/leadership/#brad
Team running Ripple Foundation can be seen here
https://www.rippelfoundation.org/about-us/from-the-president/
They have a couple of banks signed to work on replacing old SWIFT based transactions between banks. There was also interested in currency exchanges.

Since it is a "centralized" cryptocurrency (or at least considered to be such), they are the best source.  www.ripple.com is probably the best resource.

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


text:
automatic wallet.dat
I installed a bitcoin-qt  and received a transaction. Few minutes later, the pc crashed,after restoration of the pc,I only saw  an automatic saved wallet.dat file  I tried to recover fund but no avail. Please help me to restore my fund

The transactions on the network are kept on the blockchain, off your computer.  Your wallet.dat file's main purpose is to remember your private keys so that your wallet program and create transactions and know what addresses it needs to show you as depicting your balance.
Therefore, as long as your wallet.dat file retains your original address information (you can check that by comparing the address that received the transaction to that which you have as a "receiving address") you still have access to your coins.  It may just be that your blockchain needs to catch up or the wallet you're using is glitching out at the moment.

Bitcoin core has keypool option enabled by default, so when you install it a %n of keys will be generated and saved on your PC so when you generate Bitcoin address the address is coming from keypool which is already saved on your PC.
So, Your bitcoins should be on your PC, just give it some time to reindex.
and check debug.log file.


text:
in PHP how to calculate full uncompressed public key from a short 02/03 pubkey?
in PHP how do i create the full public key from a compressed one?
my test key is
026a04ab98d9e4774ad806e302dddeb63bea16b5cb5f223ee77478e861bb583eb3
and the uncompressed one is
6a04ab98d9e4774ad806e302dddeb63bea16b5cb5f223ee77478e861bb583eb3
36b6fbcb60b5b3d4f1551ac45e5ffc4936466e7d98f6c7c0ec736539f74691a6
can this be done via openssl?
thanks for any helpful answer!!

using MDANTER's great library i managed it to work.
if anyone needs it in the future.
use Elliptic\EC;
$ec = new EC('secp256k1');
$pub="026a04ab98d9e4774ad806e302dddeb63bea16b5cb5f223ee77478e861bb583eb3";
$key = $ec->keyFromPublic($pub, 'hex');
print_r($key);


text:
getting public key from any raw transaction - what to take care of?
i need to retrieve public key of transaction sender.
now i know there are 03 compressed pubkeys and 04 uncompressed ones.
but how is this working with segwit and multisig addresses?
can you please point me to what possible combinations there could be, so i am ready for any possible trnasaction to always get the right key?
thanks a lot!

I have summarized some popular payment types in my book "Grokking Bitcoin". There are 6 standard payment types:
p2pkh: Pay-to-public-key-hash. The public key is the second (last) item in scriptSig.

p2sh: Pay-to-script-hash. The public key(s) are packed into the redeem script which is the last item in scriptSig. To get them you need to parse the redeem script (which itself is a script) and look for key patterns (push of 33 bytes).

p2wpkh: Pay-to-witness-public-key-hash. The public key is found in the witness of the transaction. More specifically in the second item of the witness field with the same index as the input you're investigating (the witness contains one witness field for each input. There's only one witness field in this example, because there's only one input).

p2wsh: Pay-to-witness-script-hash. The public key(s) are packed into the witness script which is the last item in the input's corresponding witness field. To get them you need to parse the witness script (which itself is a script) and look for key patterns (push of 33 bytes).

p2wpkh nested in p2sh: The pubkey is in the same place as in p2wpkh.

p2wsh nested in p2sh: The pubkey is in the same place as in p2wsh.

I hope this helps

great answer. thank you. helpful for your book would also be linking to example transactions of each case. thanks a lot again

i needed this to build this tool:
https://free-online-app.com/bitcoin-2-ethereum-address-converter/
and this tool:
https://free-online-app.com/bitcoin-ethereum-private-key-converter/
maybe you take a look and find some error or stuff i completely missed out on. thanks

@brocard could you mark my answer as accepted if you think it answers your question. Thanks.

i got not enough rep to rate. gonna do it when i have enough!! your answer was very helpful!


text:
Can't send raw transaction Bitcoin Core 0.19.1 - non-mandatory-script-verify-flag (Signature must be zero for failed CHECK(MULTI)SIG operation)
I wanted to send a raw testnet transaction and I was doing it like in the bitcoin documentation, but I still get this error:
non-mandatory-script-verify-flag (Signature must be zero for failed CHECK(MULTI)SIG operation) (code 64) (code -26).
What am I doing wrong?

I take one transaction from my listunspent

{
    "txid": "8ee71fee9e4706100c09fb2da4c3ccdac1a4475981bd893ba1eba9417947abff",
    "vout": 0,
    "address": "2Mw44JvAhBs4hgh5bT3gP2NgbhTbVwngW1m",
    "label": "",
    "redeemScript": "00143b88811e01b3efaa0bcd9da16ef85ef3a1583349",
    "scriptPubKey": "a91429c3d920cd18e34db9035c4322474aae4465792187",
    "amount": 0.02641617,
    "confirmations": 16197,
    "spendable": true,
    "solvable": true,
    "desc": "sh(wpkh([8939dfa5/0'/0'/8']02a44b3dd2f0964048265982156f668c037dfabc140eb98f292dbb723d28b85261))#husuy9tw",
    "safe": true
}

Then I create raw transaction from this:

createrawtransaction '[{"txid":"8ee71fee9e4706100c09fb2da4c3ccdac1a4475981bd893ba1eba9417947abff","vout":0}]' '{"2NCH5HXBwfHegFEUTNrkSKzyYTnTYQKDUjU":0.02}'

dumpprivkey
And signs the transaction like this

signrawtransactionwithkey '0200000001ffab477941a9eba13b89bd815947a4c1daccc3a42dfb090c1006479eee1fe78e0000000000ffffffff0180841e000000000017a914d0c3f50336b5f109207d722c692191ff86263e968700000000' '[" $privKey "]' '[{"txid":"8ee71fee9e4706100c09fb2da4c3ccdac1a4475981bd893ba1eba9417947abff","vout":0,"scriptPubKey":"a91429c3d920cd18e34db9035c4322474aae4465792187","redeemScript":"00143b88811e01b3efaa0bcd9da16ef85ef3a1583349","amount":0.02}]'

{
  "hex": "02000000000101ffab477941a9eba13b89bd815947a4c1daccc3a42dfb090c1006479eee1fe78e00000000171600143b88811e01b3efaa0bcd9da16ef85ef3a1583349ffffffff0180841e000000000017a914d0c3f50336b5f109207d722c692191ff86263e968702473044022010c174b3306cac5ca8ddbb6eadf0de2299c2a216ade25088290c17880aa5bd60022017bc9de608e7ff59ffa09a6a60d848875d37edfc4a4b687f0eb94d4c2cd11b4f012102a44b3dd2f0964048265982156f668c037dfabc140eb98f292dbb723d28b8526100000000",
  "complete": true
}

But when I want to send raw transaction
sendrawtransaction 02000000000101ffab477941a9eba13b89bd815947a4c1daccc3a42dfb090c1006479eee1fe78e00000000171600143b88811e01b3efaa0bcd9da16ef85ef3a1583349ffffffff0180841e000000000017a914d0c3f50336b5f109207d722c692191ff86263e968702473044022010c174b3306cac5ca8ddbb6eadf0de2299c2a216ade25088290c17880aa5bd60022017bc9de608e7ff59ffa09a6a60d848875d37edfc4a4b687f0eb94d4c2cd11b4f012102a44b3dd2f0964048265982156f668c037dfabc140eb98f292dbb723d28b8526100000000

non-mandatory-script-verify-flag (Signature must be zero for failed CHECK(MULTI)SIG operation) (code 64) (code -26)

I tried with a lot of transactions but I can't send it and can't see what I'm doing wrong. Normally, the Bitcoin Core send button works fine.

That error message is irrelevant.
SegWit introduced a new way of producing the hash digest for signing which requires the "amount" being spent to be included during hashing. This "amount" is the value of the output that is being spent not the amount of the new output you create. In your it is 0.02641617 or the actual value 2641617 in satoshi.
Your step 4 should become:
signrawtransactionwithkey '0200000001ffab477941a9eba13b89bd815947a4c1daccc3a42dfb090c1006479eee1fe78e0000000000ffffffff0180841e000000000017a914d0c3f50336b5f109207d722c692191ff86263e968700000000' '[" $privKey "]' '[{"txid":"8ee71fee9e4706100c09fb2da4c3ccdac1a4475981bd893ba1eba9417947abff","vout":0,"scriptPubKey":"a91429c3d920cd18e34db9035c4322474aae4465792187","redeemScript":"00143b88811e01b3efaa0bcd9da16ef85ef3a1583349","amount":0.02641617}]'

Thanks a lot! It worked :) I just misunderstood the documentation. Have a nice day and I wish You good health!


text:
Why raw Bitcoin transaction are in hex format?
Why are Bitcoin raw transactions in hexadecimal format? I am looking for scientific articles / books on this topic and I can't find anything, so my question is: why are they in hexadecimal and can there be any article on this topic?

Related: https://bitcoin.stackexchange.com/q/94991

Because unlike addresses, hex raw transactions aren't meant to be seen or used by end-users. Hex is easy to encode and decode (every two character in hex represents one byte*, whereas in base64 one character is 3/4 byte and Base58 is log(58)/log(256) = 0.7322476244 bytes) so it is convenient if you want to debug your implementation.
*: which means if you can find an erroneous byte in the transaction that you can CTRL+F for that byte in the serialized hex transaction and change it since unlike Base58 or Base64 an encoded character depends on the part of only one byte and never two neighboring bytes. Hex is the highest base with that property. Binary (1 bit divides 8 bits), Quaternary (2 bits divide 8 bits), not octal (3 bits don't divide 8 bits), and hexadecimal (4 bits is the largest divisor of 8 that isn't 8) are other bases with that property, so hex is the most efficient one among them.
Or simply, it was created as an internal tool which didn't need the complexity of a new format that provides space efficiency or avoiding similar characters (or checksum, even though hex doesn't depend on checksum) that is user-friendly.
From Bitcoin QT 0.7.0 release notes:

Added raw transaction API. See https://gist.github.com/2839617

Gavin Andresen, who created and submitted the hex transaction encoding code to Bitcoin Core/QT wrote:

I considered parsing/writing BIP 10 format for raw transactions, but
  decided that reading/writing BIP 10 format should happen at a higher
  level and not in the low-level RPC calls. So 'raw transactions' are
  simply hex-encoded into JSON strings, and encoding/decoding them is
  just a couple of lines of already-written-and-debugged code.

Why raw Bitcoin transaction are in hex format?

They are not.
So far as I know and have read.
Bitcoin raw format
According to https://bitcoin.org/en/developer-reference

Bitcoin transactions are broadcast between peers in a serialized byte format, called raw format. It is this form of a transaction which is SHA256(SHA256()) hashed to create the TXID and, ultimately, the merkle root of a block containing the transaction—making the transaction format part of the consensus rules.

and https://bitcoin.org/en/glossary/serialized-transaction defines Serialized Transaction, Raw Transaction as

Complete transactions in their binary format; often represented using hexadecimal. Sometimes called raw format because of the various Bitcoin Core commands with “raw” in their names

(my emphasis)
So the form transmitted over the wire is not composed of ASCII characters 0-9A-F (hexadecimal) but of numbers and other values in a normal binary form.

Hexadecimal
Software engineers like to use a hexadecimal encoding when writing and reading documentation. This hexadecimal encoding is simply one of many equally-valid visual-representations (binary, octal, ...). It just happens to be convenient and familiar to software engineers.
To take a specific example, the first part of a transaction is a version number. This could have the value 2. It is of data type int32_t, so it is 32 binary bits in length and represents a signed integer. I can write the value as 2 (decimal) or as 00000000000000000000000000000010 (binary) or as 00000002 (hex) but these are all just visual representations, none of them have any special meaning, you can't say that the value 2 is not transmitted. You could inspect and interpret that data using a tool that shows octal or binary or decimal or base 17 or any other arbitrary representation.


text:
I accidentally used BTC xpub key to generate HD wallet addresses for BCH, can I recover funds?
I am using Exodus wallet and an eCommerce plugin to accept cryptocurrency payments. To generate the HD wallet addresses I needed to provide an xpub key. I accidentally used the BTC xpub key instead of the BCH xpub key. They are different. Is it possible to recover my funds somehow or are they lost forever?

The answer, surprisingly, is yes. You need to change the derivation path of your BCH wallet to that of a BTC wallet m/0'/0'/0 and it will generate the necessary private keys.


text:
I mistakenly sent my bitcoin to a banned address. Please how can I get my bitcoin back?
MISTAKENLY SENT BTC TO A BANNED ADDRESS
how can I get my btc back that was mistakenly sent to a banned address

There is no such thing as a "banned address" in Bitcoin. You'll need to clarify what you did, what you expected to see, what you saw instead, and which software or websites are involved.

What I mean is that I mistakenly sent my bitcoin from my paxful account to another paxful account that have been banned......how can I get my bitcoin back to my paxful account

You should ask paxful. Nothing anyone else can do about this.

Update: based on your clarification, you were not asking about a "bitcoin address", but rather a "paxful account" -- two totally different things.  You will need to contact paxful to see what they can do.

Previous answer:
If you send bitcoins to ANY address for which you do not have the private key, then you no longer control that bitcoin.  It is owned by someone else (or lost) at that point.
If you know the owner of the address you can ask them to please send them to you, but this will obviously not help if they are criminals.  If you were scammed (tricked into sending bitcoin to someone fraudulently) -- then you can report it to a website like this (to help others) and / or the police.
Note: as mentioned by Pieter -- there is no such thing as a "banned address" in Bitcoin.  Any address that has the correct format is valid.


text:
How to get info for public address from bitcoin-cli + local db? (Can it be done without creating a wallet?)
I just started running my own full node.  IBD is finished, and I'm now learning how to use bitcoin-cli.
First I would like to extract all the available information for one or more public addresses from the downloaded blockchain.
For the most part 1, I have not been able to find a way to do this that does not require creating a wallet.
For example, if I run
% bitcoin-cli getaddressinfo 1XPTgDRhN8RFnzniWCddobD9iKZatrvH4

...I get an error message that says
error code: -18
error message:
No wallet is loaded. Load a wallet using loadwallet or create a new one with createwallet. (Note: A \
default wallet is no longer automatically created)

(BTW, I get the same error as long as I provide one argument after getaddressinfo, irrespective of its value.)
It seems to me that it should not be that difficult to dump all the information that the local blockchain currently has for a given address, without the need for a wallet.
Can this be done with bitcoin-cli?
If not, is there some other way to do it (without creating a wallet)?

1The only partial exception to this statement is that, if I have a transaction ID, I can use bitcoin-cli gettxout repeatedly, and look for the desired address(es) in the output.  This is not only absurdly laborious, but it requires having a specific transaction ID.

getaddressinfo is a wallet RPC. It reports the information a specific wallet has about a receiving address it created. Without wallet, there is no information.

It seems to me that it should not be that difficult to dump all the information that the local blockchain currently has for a given address, without the need for a wallet.

The local blockchain database in Bitcoin Core has no information about addresses or the scripts they refer to at all. All it has is the raw block data, and a database of unspent transaction outputs (indexed only by the txid and output position that created them - as you can query using gettxout).
It is of course still possible to index the chain and compute information related to addresses/scripts, like various block explorer websites do. Such functionality does not exist in Bitcoin Core, as it is unnecessary for the features it provides (full block validation, wallet functions, ...).

If not, is there some other way to do it (without creating a wallet)?

Perhaps you're interested in the scantxoutset RPC. You give it a descriptor (which can contain an address, but also xpubs, ...) and it will scan the current set of unspent transaction outputs that are assigned to those. Note however that this doesn't use any index, so it is rather slow (several minutes) for a query.
If you want the ability to query things faster, various indexing software packages exist.

I have written a program in Python3 that allows you to search for any address on bitcoin core whether it belongs to your wallet or not.
Here is the github link:
https://github.com/ORP967/Bitcoin_Core_RPC_par_address
Let me know what you think or if you have any improvements you might have.


text:
Cannot open wallet dump file (code-8)
Does anyone know why I can't dump info into a text file?
It also doesn't allow me to back up my wallet.
i am using SNAP

Try giving an absolute path.

If you installed Bitcoin Core via Snap, then you can easily dump your wallet keys to snap/bitcoin-core/common/ directory, like
dumpwallet /home/alex/snap/bitcoin-core/common/walletdump.txt

In case of success, you'll see the following response:
{
  "filename": "/home/alex/snap/bitcoin-core/common/walletdump.txt"
}

To fix this on Windows I had to specify the full path to a folder, and it could not be inside Program Files.  This full path worked
C:\Users\me\Desktop\temp\test

Last time it happened to me, it was because the user of bitcoind didn't have the write permission in the dir I tried to dump the backup.
I think you should check the permission for the bitcoin directory, or try to change the path where to dump your wallet backup and see if it still fails.

I try to make the backup in my home but it doesn't allow me

which user "home" is it? The one that is running bitcoind or the one you are calling the rpc method right now? Where is the bitcoin directory and what is its permission? Can you make other rpc call?

The one that is running bitcoind and the one is calling the rpc method are the same user.
BTC directory is ~/snap/bitcoin-core/common/.bitcoin    with permission 775.
But I am trying to backup in /snap/bin with permission 777

Ok it's probably not the problem I was thinking about then, sorry for the false hope!


text:
bitcoin-cli how to verify balance
I've read that addresses alone are a "confusing" way to think about "where" bitcoins "are".  Nonetheless I was formerly (2018) able to correlate what I got from bitcoin-cli commands with what I saw on blockchain explorers like https://www.blockchain.com/btc/address/
e.g. back in 2018 getaccountaddress would list 1 address, getaddressesbyaccount would list that plus a 2nd address, getaddressesbylabel would list those same two addresses, getwalletinfo would show a 0.0003 balance, and listaddressgroupings would also show that balance.
Now in 2020, that online explorer still shows that 0.0003 BTC balance, as it did in 2018, but due to deprecated cli commands, how can I confirm that with bitcoin-cli?
Background... I have been running a full bitcoin node on Ubuntu 16.04, kept updated, so currently Satoshi:0.18.0, and just to experiment and educate myself, I played around in 2018 with a bitcoin faucet until I managed to get 0.0003 BTC.  Then I had the faucet site transfer it to one of the addresses in my bitcoin node's wallet.
For non-deprecated commands I've also found
bitcoin-cli scantxoutset "start" "[\"addr()\"]"
from this question
https://bitcoin.stackexchange.com/questions/92342/how-to-quickly-get-the-balance-of-any-bitcoin-address-with-no-third-party-api however that too shows a zero balance for the two addresses that I can list from getaddressesbylabel.

I've read that addresses alone are a "confusing" way to think about "where" bitcoins "are".

Yep, addresses are only an encoded description of how the coins are locked, not when(*) they are.

e.g. back in 2018 getaccountaddress would list 1 address, getaddressesbyaccount would list that plus a 2nd address, getaddressesbylabel would list those same two addresses, getwalletinfo would show a 0.0003 balance, and listaddressgroupings would also show that balance.

The listreceivedbyaddress command is probably the most similar one : it lists coins locked to each address, if an address has been reused then you'll see multiple txids.  The balance will be updated accordingly.
Given your first sentence, you might be interested in checking listunspent which will give you a less abstract representations of the coins you received.

Now in 2020, that online explorer still shows that 0.0003 BTC balance, as it did in 2018, but due to deprecated cli commands, how can I confirm that with bitcoin-cli?

So, you can use :

getbalance for your total balance
listreceivedbyaddress for the representation by address
listunspent for the representation by unspent transaction

Finally, check the Wallet section of bitcoin-cli help for more commands. For more details about a command, use bitcoin-cli help <command>.
(*) You used "where" in your question, but I think since we are talking about blocks, it makes more sense to reason chronologically.

You can use getReceivedByAddress


text:
How is Ethash a 'memory hard' algorithm if it utilizes peak GPU memory bandwidth?
According to the Ethash algorithm described here, the computation for each nonce requires a loop of 64 iterations, where each iteration reads a chunk of 128 bytes from a pseudo-random location in memory.
Reported hash rates for the NVIDIA GTX 1070 are around 30MH/s, which means that every second this GPU is reading 30.000.000 nonces x 64 iterations x 128 bytes from memory. That is 245.76 GB/s.
I was unable to find the peak memory bandwidth that the 1070 is capable of, but this thread suggests it should be 197.76 GB/s, and Ethash is achieving even more than that. Howcome?!
Also, I would expect that reading from many different memory locations (as opposed to sequential reads) would result in a very inefficient use of memory, but it seems it doesn't really matter?
I'd appreciate if someone could clear this up, thank you!

"Memory hard" means the algorithm is designed to use a lot of memory; its purpose is to prevent an ASIC being developed that would overwhelm the existing CPU/GPU-based mining.
This site indicates the memory bandwidth for a GTX-1070 is in fact 256GB/sec, which fits your calculation.


text:
sendtoaddress not deducting from account
I have two accounts called "hot" and "cold" and have few address and transactions in each of them. I am trying to move some funds between "hot" to "cold" and using sendtoaddress like this

bitcoin-cli sendtoaddress "one-of-the-cold-wallet-address" 1.23 "" ""

If i check the balances using

bitcoin-cli listreceivedbyaccount

The balance in "cold" has increased by 1.23 and the balance in "hot" is still the same.
Q1: by default, which account does sendtoaddress uses if i dont have the default account?
Q2: Why did the balance in the "hot" is still the same while the balance in the "cold" increased.

Did you you try "bitcoin-cli getunconfirmedbalance" for "hot" wallet?


text:
What exactly does the "For each input, if the referenced output exists in any other tx in the pool, reject this transaction." tx validation rule mean?
I am currently following the "tx" messages section of en.bitcoin.it/wiki website, and I need some clarity about the following rule regarding the validity of a transaction:

For each input, if the referenced output exists in any other tx in the pool, reject this transaction.

I don't really understand which of these two interpretations is meant here:

The output referenced by the input must not be referenced by another input of a transaction already in the pool.
The output referenced by the input must not be present in a transaction already in the pool.

Or perhaps it means something else entirely?

First of all a meta note: lots of information on https://bitcoin.it is seriously outdated, including this.

I don't really understand which of these two interpretations is meant here:

The output referenced by the input must not be referenced by another input of a transaction already in the pool.
The output referenced by the input must not be present in a transaction already in

What is meant is (1). For a transaction to be acceptable, all outputs referred to by its inputs must exist (created by an output of a transaction that's either in the blockchain or in the mempool), and those outputs cannot be spent already (by an input of a transaction either in the blockchain or already in the mempool). A simpler way to state this would perhaps be: if all transactions currently in the mempool would confirm, the inputs of the transaction that is being verified must refer to outputs that still exist.
This isn't exactly true anymore. BIP125 (Replace-by-fee) will in some cases permit a transaction to be accepted when the mempool already has a transaction spending one of its inputs. In that case, the older transaction is removed and replaced with the newer one.

So, if we pretend replace by fee doesn't exist, this rule is about preventing multiple inputs in the pool referring to the same output. And when combined with another check to see if the output is not referenced in the blockchain either, it confirms that the referenced output is a UTXO. Is my understanding correct?


text:
Why did Bitcoin Core switch from wallet.dat, cold.dat, lukewarm.dat, etc., into "sub-dirs"?
I've noticed that Bitcoin Core and its API now strongly prefers to make a separate sub-dir in your datadir for each wallet, such as "lukewarm", which then contains a wallet.dat, instead of just having "lukewarm.dat" in the data dir.
Why was this change made? I can't tell you how much scary work it would be for me to update my own system into this new method. I refer to my wallets by their .dat filename and that's their internal label that I use to keep track of everything in my database.
I know that Bitcoin Core also supports the old way (different-named .dat files in the data dir), but for how long? And why was this change made to begin with? It seems to create some kind of log files or something which seem to contain nothing of value. What's that about? Am I missing out by clinging to the old way? I don't understand why it wants to segment wallets into wallet.dat files in their own sub-dirs.

The original move to a directory per wallet file was motivated due to an issue with the way Berkeley DB behaved when multiple databases were opened in the same database environment, which are tied to directories containing the database. In particular, the issue is that BDB creates a database environment log which contains data from all of the databases open. This creates issues with backing up and portability as database logs need to be backed up as well.
With the transition away from BDB to SQLite, it is possible that we move back to the old way. However current discussions around that seem to indicate that that move is unlikely.l

Interesting. Can you elaborate on why the database logs need to be backed up, though? Why are those important? Am I putting myself at risk for not using or backing up them?

BDB writes to the log before they are written to the database file. It is possible to create a situation where a record exists only in the log and not the database itself (the wallet.dat file). This is dangerous as only backing up the database file will cause you to lose anything that was only written to the log and not the database yet. So yes, you should be backing up the database logs and you are putting yourself at risk if you are not.

Bitcoin Core will try to ensure that everything from the logs is in the database file, and remove the logs afterwards. But it is possible to create a situation where the logs exist after the shutdown.


text:
No path found when connected to the same node
I'm trying to understand how the lightning network works in practice, so I figured I'd just use some Electrum wallets on testnet.
So here's what I did:

set up two wallets
funded them with some tBTC
opened a channel to the same node on both

My goal? Send a small amount of BTC via LN. Except... I think I don't understand some fundamentals, or perhaps the error is misleading, since an attempt to transfer a small amount between my two wallets results in a "No path found" error.
It might be that I picked a "weak" node to open a channel with? Like, if I were to use LN on mainnet, is it this hit-or-miss if payments go through? Because opening a channel, ultimately, isn't free (it might be on testnet, but you know)...

When you open a channel, the complete channel balance starts out on the side of the opening party, you. So, by opening two channels, both channels had the complete balance on your side. This leaves no balance on the side of the counterparty to assign to you.
To explain graphically, think of a channel as a string of beads. I use [U] for you, and [C] for the counterparty:
A new channel has all the balance on one side:
[U] 000------ [C]

When you send funds to your channel partner, part of the balance in the channel is assigned to the partner:
[U] 00------0 [C]

To make a multi-hop payment to [R], you trade balance in your channel for balance in another channel of the counterparty:
[U] 000------ [C] 000------ [R]
               ⇒
[U] 00------0 [C] 00------0 [R]

This leaves the same total balance for the forwarding node, just shifted from one channel to another (plus a fee you might have paid for the forwarding).
In your case your two channels looked like this:
[U] 000------ [C] ------000 [U]

The forwarding party had no balance in either channel, so it could not facilitate the multi-hop payment. You will need to spend some of your balance, find someone to open a channel to you, purchase in-bound liquidity, or loop-out some balance to generate some in-bound liquidity before you can receive a payment.

Hmm, I think I'm starting to understand. If you don't mind me asking - say I want to get paid via the LN network from something like Nice Hash (that's my ultimate target and I'm trying to understand the systems before I get there); does this mean I need to first open a LN channel AND spend additional funds to get inbound liquidity?

Sort of. While there are ways to pay for inbound liquidity, you could e.g. also open a channel yourself and then spend money on Lightning on something that you were going to buy anyway. This site has a few suggestions how to create inbound liquidity: https://openoms.gitbook.io/lightning-node-management/createinboundliquidity


text:
In case of a double spend (after double spend and prior getting resolved) what is actual account balance?
For eg. if Ta and Tb are a double spend of the same transaction with different outputs. These two transactions can flow through different path in the network, and assume flow in exactly opposite path. So Ta reaches miner Ma who creates a block and Tb reaches another miner Mb. Now, Ma may solve the block with Ta and Mb with Tb. Both start broadcasting the respective blocks with Ta and Tb to be a part of block chain (fork created here).
After fork is created and before it is resolved, what is actual balance appearing on the account? Is it double down and gets credited later on?

In your example, only one of the blocks will become part of the longest valid chain, and the transaction included in that block will become a part of the blockchain history. The other block would be discarded, this is what is often called an 'orphan block'.
Wallet software will show you an 'account balance', but understand this is not how the book keeping works at the protocol level. The blockchain keeps track of 'unspent outputs', which are bitcoin addresses with some as-of-yet unspent balance stored in them. A double spend is an attempt to spend a certain unspent output more than once, but ultimately the network will only accept one of those two (or more) transactions into the blockchain.
Once one of the transactions is included in the blockchain, those bitcoins now reside at a new address, and the other transaction (and any block it is included in) is dropped from the network. There is no 'double debit' from an account, so to speak. Bitcoins exist at one address, and then once a valid transaction is confirmed in the blockchain, those bitcoins exist at a new address.
I suppose some wallet software could be written to debit all unconfirmed transactions from a wallet's balance (thus allowing a 'double debit, as in your example), but this would be a naïve implementation that is not representative of what is actually happening at the protocol level.

The OP is asking about what happens before one of the blocks is orphaned. I.e. they are both on separate chains of equal length.

@AdamMillerchip At that point, each node on the network will have chosen one chain or the other, and will update their UTXO appropriately (to include Ta or Tb, depending on which block they've accepted). Until the network converges back to a single chain, txs spending either Ta's/Tb's output will be accepted by the portion of the network that sees each of those txs as confirmed. Any one node will not accept more than one chain as valid at the same time. If they accept the 'wrong' one, and the other is extended first by miners, then their client will simply update to the new longest valid chain

Before the orphaning, from OPs perspective, the wallet OP is using will end up on either one half of the network, or the other. Their wallet should simply show a single debit from their balance, and the corresponding tx (either Ta or Tb).


text:
Bitcoin actual value
Bitcoins are purchased or mined to earn USD.  Bitcoin does not standalone it is tethered to the USD.  Isn't more a commodity instead of a currency?  If the confidence in the dollar drops, Bitcoin has no actual standalone value.  For example, if I have a freezer of pork bellies worth 1 million USD, and the dollar drops, I can trade pork bellies for goods or services, making pork bellies an independent currency.  Bitcoins cannot do this.
So beyond speculation measured in USD, what is the value of Bitcoins?

The value of anything is what someone else will pay for it. Bitcoin is not tethered to USD - if it was, it's USD value would be constant. That's what tethered means. You can only trade pork bellies for goods or services if someone else wants your pork bellies (and at a value you're willing to give them up for), just like Bitcoin.

Pork bellies are also purchased or sold to earn USD. Does that mean pork bellies are tethered to USD?

Yes pork bellies are tethered to USD.  But if the dollar disappeared, I could use pork bellies as currency to trade for goods and services, so a pork belly can stand alone.  A Bitcoin cannot stand alone, its only value is in transferring it to USD.  If USD disappeared, Bitcoin cannot maintain a value.  Im not arguing against cryptocurrency, I'm just trying to understand its value besides speculation in USD.


text:
Does blockchain.info show balances for addresses that are in cold storage?
If a miner mined a large amount of coins and these coins were stored offline once generated, would the balance of the addresses that hold these coins still be viewable on a blockexplorer like blockchain.info if you had the public address?
Or would a person need to use something like bitcoin core or bitcoind and add the address as a watch only address and call getbalance?
I'm trying to verify if a seller actually has the coins they claim to have. They apparently can show the wallets and their balances to the person interacting with them in the office now using bitcoin core. But is there any way for me in another country to confirm that what my colleague views is actually accurate and correct?

Does blockchain.info show balances for addresses that are in cold storage?
Yes.

... is there any way for me in another country to confirm that what my colleague views is actually accurate and correct?

Since they use Bitcoin Core, yes, there is a way to verify that they hold the addresses that they claim. Have them sign a message with each address that they claim to have the holdings on, using Bitcoin Core you can verify that they indeed have those addresses and check them on blockchain.info to find the current balance. This feature has been in Bitcoin Core for a long time.
Only works in Bitcoin Core currently for addresses starting with a '1' (not Segwit addresses starting with a '3' and not Bech32 addresses starting with 'bc1' - the developers are aware of this and I will remind them shortly.)
In Bitcoin Core, your transaction opposite goes to File -> Sign Message and signs any message with one of the holding addresses. Copy the message, address and signature and send to you via probably plain text format email is the easiest. Repeat for each additional address holding the balance of BTC that they are offering to sell.
In Bitcoin Core, you go to File -> Verify Message and key the details provided EXACTLY - spaces, new lines and all characters must be an EXACT match. Click on verify and voilà.
I prefer the form of signed message as follows (don't key the top and bottom bar rows for the message, just the contents and you can check this yourself, the bottom row is the signature). I like to key the address used for verifying as a part of the message but that is not strictly necessary:
------------------------------
Something that I want to sign.

bitcoin:1PMUf9aaQ41M4bgVbCAPVwAeuKvj8CwxJg
------------------------------
Signture:
IGaXlQNRHHM6ferJ+Ocr3cN9dRJhIWxo+n9PGwgg1uPdOLVYIeCuaccEzDygVgYPJMXqmQeSaLaZVoG6FMHPJkg=

This contains all of the compact information necessary to verify the message.
Example of verified message:

Thank you for the in-depth answer and explanation. Is it possible to use any version of bitcoin core without downloading the full blockchain to sync?

@JohnMurphy Yes, just about any version. Always use the official release version of the software from bitcoin.org. You do not need to download the full blockchain in order to sign/verify messages. The signer must have the key in their wallet already, that is about the only requirement.

Sorry to keep asking questions but how do I use the bitcoin core software without downloading the full blockchain. When I attempt to run for the first time I am greeted by this screen:  https://i.imgur.com/I9q5UQj.png
Thank you for your help.

@JohnMurphy You can just select yes to that unless you want something custom. My suggestion is to go to Settings -> Options -> Network and set it to use a proxy that you do not have then OK and then File -> Exit and then restart it again.

On the developer side, this use of message signing has been upgraded to '..not only just "proof I receive at this address", but also "proof of funds" (as a separate feature) since this is a popular misuse of the current message signing...' status on the [bitcoin-dev] mailing list. It should be noted that in the case of web wallets there is no such proof since a web wallet user does not really own the utxo's and they could be moved while your web wallet retains its balance but, we are speaking here about use with Bitcoin Core per the question.


text:
What is a simple way to sign a message to verify that you possess the private key for a specific public address?
I need to explain to somebody step by step how to go through the process of signing a message to verify they own the private keys associated with an address containing funds. This is to ensure ownership before a sale is agreed.
What is the simplest and easiest way to do this (so that I can get them to understand my instructions and be able to follow through)?
I know this can be done a number of ways (bitcoin core, Electrum, Using a Ledger or Trezor, or a browser based tool .
I appreciate any input.
Thanks.

Most wallets include a sign feature (with the exception of some segwit wallets). Asking them to use that would be easiest, since forcing them to use any other method would likely involve export/import of private keys, which isn't always easy, and is definitely insecure

Assuming they have only a paper wallet, and the importing of private keys is a necessity, which wallet would you suggest is best for this purpose?
Also is the same wallet needed by the verifying party or can they use any of the other wallets to verify a message signed via a different method?
Thank you for your help.

You could also just have them send themselves an amount of BTC you choose from that wallet. Pick a number with lots of digits.

Thanks David. That's something I think we will use as well. I want to have the most professional and thorough vetting possible for proving ownership and verifiying BTC before escrow sales.


text:
How do I import a wallet into Bitcoin core?
I have the public address, and the private key of a BTC wallet. How can I import this into bitcoin core so that I can use it to sign messages?
I need to be able to sign a message to show that I possess the private keys for an account.
Thanks for any help.

https://bitcoin.stackexchange.com/questions/5941/how-do-i-import-a-private-key-into-bitcoin-core

what is YourLongPassphrase in that answer?

its a password you set up for bitcoin core wallet. if you don't have one (which is highly unrecommended) you should skip this command

It seems I have lost the passphrase. Is there any way to reset bitcoin core, or do i need to do a full reinstall? I have no funds on bitcoin core currently so have no problem resetting it all.  Thanks for your help, zergatul.

I am not sure, you can try to delete wallet.dat file

Thanks. I ended up just doing a reinstall. It was simpler than I expected. And for posterity, when I went to "change passphrase" I just put in a new passphrase as both the old and new passphrase and it worked. I Was then able to use the console to import the priivate key. Thanks a lot.

Answer was given for a similar question as commented by Zergatul here. https://bitcoin.stackexchange.com/questions/5941/how-do-i-import-a-private-key-into-bitcoin-core

Hi John, thanks, I've closed your question as a duplicate of that one, so that people who find your question will find Zergatul's answer.


text:
What are the realistic system requirements to run bitcoin core for generating wallets, signing and verifying messages on a laptop?
I need to be able to verify messages and check that funds in wallets are valid and that the claimed owner possesses the private keys (hence checking messages signed).
I know that I need to be able to download and sync the whole blockchain so I will be getting at least a 1TB HDD.
Are there any other things that would be really needed to run it smoothly? I was thinking of a laptop with an i7-6700HQ processor and 16GB of ram.
Will this cut it?

You can just use the pruning, which lowers the required storage size to 550 MB. Other than that, you don't need a strong computer. It can run on a Raspberry Pi 3 B+ without any problems (but it won't be able to keep a full mempool).

It runs without problems on my old laptop - i7-4712MQ with 8gb ram. I guess it will run even on i3 with 4gb ram, but I haven't tried it. The disk space is important. The chain is around 200gb and will increase.

Yes that laptop will work.
Realistically it could be run on an i3 with 4GB of ram, provided the storage is enough.


text:
What is the cost of resolving a Lightning channel breach?
If someone breaches a Lightning channel (aka tries to spend more than he is allowed to), the other party has to intervene and prove that the coins actually belong to them. This process happens on-chain. How large would such a transaction be? Is it proportional to the number of transactions that happened while the channel was open?

The cost is proportional to the number of committed HTLCs on the channel at the time of closure. Each HTLC has an output in the commitment transaction which pays into either a HTLC-success transaction script or a HTLC-timeout transaction script, depending on whether the HTLC was incoming our outgoing. The commitment also usually has an output to the spender (timelocked) and a regular P2WSH output to the other party of the channel.
Due to both parties needing to agree up-front about the transaction fees involved (in order to sign matching transactions), the protocol works on an "estimated weight", which assumes worst-case sizes for signatures etc.
The estimated weights are broken down in full in BOLT#3, but the key values are
Commitment weight:   724 + 172 * num-untrimmed-htlc-outputs
HTLC-timeout weight: 663
HTLC-success weight: 703

The transaction fee is then the agreed upon feerate in satoshi/kweight * expected_weight / 1000 (rounding down).
Clearly it is undesirable to have a large number of htlcs in flight in case of unilateral closure. There is a technical limit of 453 due to the 10k script limit in Bitcoin, but ideally you will want to use a much smaller number.
With other developments like Taproot, it should be possible to bring these costs down significantly for the most likely outcomes.

So the smart contracts are structured in a way, that the cheater has to pay all the transaction fees? What if the fees have singificantly risen since we both agreed on the contract?

The transaction fees are paid out of the channel funds, which are initially provided by the channel funder when the channel is created. On a unilateral close, the cost of the commitment transaction is above regardless of whether it was cheating or not, the only difference being that the claimant of a penalty transaction uses signature||revocation_key versus signature||payment_hash as the witness for their to_local output, and their witness for the htlc transactions is signature||1.

Do I understand it correctly: 100% of channel funds are on my side and there are a lot of htlcs associated with the channel. If my peer decides to cheat, he has almost nothing to lose, ecxept for a tiny amount of fees, but I have to pay a huge fee on a big transaction to prove him wrong, otherwise I lose all of the money that is in the channel?

The fee is paid regardless of whether you prove him wrong or not. You will never lose all of the money in the channel, but at worst, you may lose the to_remote amount or the amounts of any timed out htlcs of the revoked commitment the cheater broadcasts if you don't issue the penalty. The fee is paid by the channel funder. The fundee has no obligation to cooperate with you except the funds on their side of the channel which they might be able to gain if they do cooperate. There is a channel_reserve for this purpose, which ensures that there is a minimum amount kept by the fundee

There is also a push_amount on channel open, which establishes that the fundee at least has some funds if they cooperate. There is an incentive for them to accept channels because they stand to gain from it. Also, if they don't keep enough funds on their side of the channel, their output will be truncated and they will gain nothing, unless they successfully cheat. Since the fundee cheating is always possible, the funder needs to account for the possibility and set a sufficiently low max_htcls_in_flight that they can afford to pay if the other party is uncooperative.

I wanted to say: I would lose money, if I decided not to challenge his fraudulent transaction.

Transactions are larger if there is a dispute, right? So if the cheater has no money on his side, he can attempt to cheat, risk nothing and harm me, as I have to issue a larger transaction that I would have if he cooperated.

Yes, the commitment transaction is larger than the mutual close transaction. The idea of the channel_reserve is to make it so that a peer never has no money on their side of the channel, and therefore, attempting to cheat would be throwing away the money they do have. On the other hand, they have an incentive to keep the channel open because it provides them with inbound capacity for receiving payments.

The channel_reserve system is a good idea, but it only works once the other side has money on their side. Do you know if this value is set by default?

I'm not aware of what each client sets their channel_reserve to by default. It should be user configurable. The purpose of the push_msat in the channel opening is to provide the other side with some money. The won't attempt to cheat unless that have had at least some money at some point in the past (ie, there is a revoked commitment which would award them some of the channel funds). If they have never had funds, they stand to gain nothing by closing the channel anyway.

@Grunzwanzling: In the future, please be sure to either include follow-up questions into the question, or to ask follow-up questions as a new topic so that they're also added to our question and answer body.

@MarkH: When you answer follow-up questions, it would be preferable to collect the gist of the answers in your answer post for the same reason. :)


text:
What is the size of different types of channel funding/closing transactions for the Lightning Network?
This matters a lot for people who want to host a Lightning Network node and will influence LN-transaction fees, because a node-host has to justify the miner fees of setting up channels for others with the income by charging fees themselves.
If a channel-funding transaction is for example 500 bytes in size, it will often cost more than 10$. Sub-one-cent transactions through 5 channels can now only be achieved if more than 5000 transactions pass through each channel before it closes which is quite a lot.
If transactions are that funding transactions are that expensive, centralization is a major concern, because smaller users can't justify paying for 5-10 or even more channels to sustain true decentralization and will rather have one channel to a big hub.

The size of a transaction is no longer relevant. What matters is the weight (which is based on size), especially because LN uses segwit which has different weight values for segwit spends.
The expected weights for the commitment transactions and HTLC success and timeout transactions can be found here: https://github.com/lightningnetwork/lightning-rfc/blob/master/03-transactions.md#appendix-a-expected-weights.
The weight for the funding transaction is harder to know as that entirely depends on the inputs being spent and that is dependent on the sender. Since the inputs and their signatures make up the vast majority of a transaction, it is impossible to say what weight funding transactions will have as they will basically all be different.

not sure what you mean by different size... amount of money/fees? Tx size in bytes is less relevant opening a channel.
For this particular use case your use case seems valid. If you "insist" on opening 10$ channels for sub-cent channels (and another 10$ to close), you naturally  come to the conclusion, that the network gets centralized. And the options are nearly unlimited to create assumptions/ideas to centralize with Lightning. However you can also avoid centralization. In your example, you have the assumption that 5 channels are opened at the same time, and the 50$ are "illiquid", and eventually lost to miners. Keeping one channel only, is a 10$ loss (+ maybe some LN fees for hopping through the network). So the question is, how many tx you push through the network, compared to "normal" bitcoin tx. You can have a channel opened for a year, and order every month a book. In lightning it looks like a one off cost for opening the channel. In bitcoin this would be 12 fee payments.
There was a picure in the net, that I allowed myself to extend a bit:

The three left pictures are limited in a way, that everyone is connected with everyone else. The possibility that you and me just open a channel, close it afterwards, and can even decide when to close the channel (when fees are down) is often not mentioned. Instead assumption is always a short time view. I think a general topic is also the assumption, that fees will stay high forever. There is no proof for this, but as an underlying assumption it (only) could lead to centralization. Taking the assumption, that many tx go into the lightning network, the main blockchain is freed up from 10.000s of low fee tx (see also Jochen's page). This would reduce fees dramatically. We would then have segwit for "more capacity", and lightning for repeating low level tx - future only will show. Same applies for other crypto currencies :-) Really exiting times ahead.
btw: first tx are on mainnet, want to join the revolution?
https://bitcointalk.org/index.php?topic=2815332.0
https://www.reddit.com/r/Bitcoin/comments/7pwna9/lightning_network_megathread/
https://lightning.network/lightning-network-paper.pdf
Bitcointalk discussion here: https://bitcointalk.org/index.php?topic=2854596.0

I really hope that it will happen like this. I think though, that it is very unlikely that people will open channels that link them to one other node. It is far more appealing to open a channel to a hub so that you can basically access all of the network using only one channel. When two people want to transfer money daily for a year, they could either form a channel between them for this single purpose or both (for the same cost) link to a giant hub so they can do those daily transactions and also everything else.

yup indeed. I think it boils down to the question, what "we" as community do with it. And how we understand, what centralization in this sense means. Usually we have some negative concerns with this word "centralization" (most certainly loosing funds or similar). btw: nice nickname, in which forests of southern Germany would I find this animal? :-)


text:
When will the last block halving happen and when will the block reward fall to 0?
I could not find an answer for these questions:
I found out that there are 33 periods of 210,000 blocks?!?!? First one gave the miner 50 bitcoins per block, then 25, 12.5 ... and the last one 1 satoshi.
My questions:

So there must be 32 block halvings, right?
When will the last block halving happen?
When will the block reward fall to 0?

For questions 2 & 3:

After which block will it happen?
In which year will it happen?

related: https://bitcoin.stackexchange.com/q/5545/5406, https://bitcoin.stackexchange.com/a/52096/5406, https://bitcoin.stackexchange.com/a/37092/5406

The block reward includes transaction fees. You probably meant “block subsidy”.

I created a Google doc to calculate some metrics of the Bitcoin reward schedule including e.g. the number of halvings, their first blocks, and how much supply is left to be mined.
As you can see, there will be 33 epochs of 210,000 blocks with a block subsidy. Bitcoin doesn't end there, after that the block reward will be composed only of transaction fees.
The block subsidy will be reduced 33 times, 32 times halving the block reward, and the last event ("33rd halving") reducing the block subsidy from 1 satoshi per block to zero satoshis per block. The limit of the block subsidy is accounted in a whole number of satoshis. The protocol does not allow partial satoshis to be created.
The last (32nd) halving will occur on block 6,720,000 reducing the block subsidy from 2 sats to 1 sat, approximately in 2136, the 33rd "halving" will reduce the block subsidy to zero in block 6,930,000 approximately in year 2140. This means that the last block with a block subsidy will be block 6,929,999.
Related:

How many Halving Days will there be?
How many Bitcoin are mined per day?
How much inflation does Bitcoin have, year by year?

Terminology:

Block subsidy: newly minted coins in a block
Block reward: the miner's total yield from a block composed of block subsidy plus transaction fees

1) Yes, there will be 32 block halvinings. Each happens every 210,000 blocks.
2) Assuming a block is mined ~10 minutes, it takes ~4 years to mine 210,000. The last halvining will happen around the year 2140 (block 6,720,000).
3) After the final halvining, the block reward will fall to 0 and the network will have to rely on transaction fees to incentivize miners to continue operating.
Good links for further reading:
https://blockgeeks.com/guides/bitcoin-halving/
https://www.binance.vision/halving

"After the final halvining, the block reward will fall to 0" Is this 4 year after or right after it? Is block 6,719,999 the last block with reward or 6,929,999?

There are 33 block subsidy reductions, although the last one doesn't halve the reward but reduces it to zero. So, there are 32 halvings, or 33 "halvings" depending on how you count. ;)

As I wrote on the question: The block reward includes transaction fees. You probably meant “block subsidy”.


text:
How can I check the hash of a bitcoin block?
Let's pick an example bitcoin block: #499583
This is the block: https://insight.bitpay.com/api/rawblock/000000000000000000677c4077da7c9f01dde5f332ba2fbff962ee699714d5da
It starts with 00000020164a1e4a7f34b96b0e201d....
I'm trying to hash it so that the hash is 000000000000000000677c4077da7c9f01dde5f332ba2fbff962ee699714d5da again. This is my Javascript-Code:
var Bitcoin = require('bitcoinjs-lib');
var request = require('request');
var crypto = require('crypto');

function getRawBlock(blockHash) {
  return new Promise((resolve, reject) => {
    request('https://insight.bitpay.com/api/rawblock/' + blockHash, // hitting an insight API to get the full block
      (error, response, body) => {
        try {
          var block = JSON.parse(body); // result is in JSON
          resolve(block.rawblock)
        } catch (error) {
          reject(error)
        }
      })
  })
}

getRawBlock('000000000000000000677c4077da7c9f01dde5f332ba2fbff962ee699714d5da')
  .then((rawBlock) => {
    var hash = crypto.createHash('sha256').update(rawBlock).digest('hex');
     console.log(hash);
  })
})

But the result is 484cd10be70dbc7615dd9a71b1f91375b100715d9b2a0ecc6a05b9d247a8cda9.
What am I doing wrong? The result should be 000000000000000000677c4077da7c9f01dde5f332ba2fbff962ee699714d5da. Do I hash something in the wrong format?

Seems to me that you are hashing the whole block instead of header only. Take my code (in C++).
void test ( )
{
  const MyByteArray header ( QByteArray::fromHex (
     "00000020" // version
     "164a1e4a7f34b96b0e201dcc6a623c63fe3874696e4875000000000000000000" // prev hash
     "49de8b4f4bfa9fc890d3d28a93156a111f891dc680090cd497b58a7d5c2b09cf" // merkle
     "2f62345a"      // timestamp
     "edb00018"      // bits
     "ffdfd257" ) ); // nonce
  const MyKey32 key ( header.sha256d ( ) );
  qDebug ( ) << key.toString ( );
}

and the output is:
000000000000000000677c4077da7c9f01dde5f332ba2fbff962ee699714d5da

What format does the input data need to be? I'm trying to manually plug the data into a sha256 calculator, and not getting the correct result. I know it is a double sha256 but I must be making a mistake somewhere

input is raw binary data 80 bytes length

I thank you amaclin, I did not know that you only need to hash the header. But can someone maybe write such a short program in Javascript or Java or Python? (I can't read C++, I don't know what a QByteArray ist, what MyKey32 ist, what the proramm is really doing.)

#include <openssl/sha.h>

int main()
{
    const char * sin = "00000020" // version
        "164a1e4a7f34b96b0e201dcc6a623c63fe3874696e4875000000000000000000" // prev hash
        "49de8b4f4bfa9fc890d3d28a93156a111f891dc680090cd497b58a7d5c2b09cf" // merkle
        "2f62345a"      // timestamp
        "edb00018"      // bits
        "ffdfd257";
    string xxs = Helper::decode16(sin);

    unsigned char md[32];
    SHA256_CTX ctx;
    SHA256_Init(&ctx);
    SHA256_Update(&ctx, xxs.data(), xxs.length());
    SHA256_Final(md, &ctx);

    SHA256_Init(&ctx);
    SHA256_Update(&ctx, md, 32);
    SHA256_Final(md, &ctx);

    const char * tbl = "0123456789abcdef";
    char outs[64 + 1] = { 0 };
    for (int i = 0; i < 32; ++i)
    {
        outs[2 * i + 0] = tbl[md[31-i] >> 4];
        outs[2 * i + 1] = tbl[md[31 - i] & 0xf];
    }
    printf("%s\n", outs);

    return 0;
}

my code uses openssl. passed.


text:
Can sendtoaddress use account other than ""?
sendtoaddress is using the "" account by default. Is it possible to make it use any other account name?

You want sendfrom, but the whole account feature is deprecated so you should redesign your application to not use it at all.

Accounts are deprecated and labels are the alternative for accounts.
I'd recommend using latest Bitcoin 0.17.0 which has multi wallet features which can isolate each user, further read:

https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#Multi-wallet_RPC_calls
https://github.com/bitcoin/bitcoin/pull/13058

sendtoaddress Doesn't support accounts at all
Parameter #1—to address
Parameter #2—amount to spend
Parameter #3—a comment
Parameter #4—a comment about who the payment was sent to
Result—a TXID of the sent transaction

What you can do as alternative is getaccountaddress to get bitcoin address of an account and then sendtoaddress

actually i want to pick the source account..not the destination. By default sendtoaddress picks the "" account as source. Is it possible to pick any other account?

Yes, put account name instead of "", like that "myaccount"

First do move command to move bitcoins from custom account to "", for example
bitcoin-cli move "account_with_bitcoins" "" amount_to_send
And then use sendtoaddress
bitcoin-cli sendtoaddress "address" amount_to_send


text:
How and why increasing and decreasing block size will affect transaction fees?
I am reading an article on bitcoin wiki about bitcoin block size https://en.bitcoin.it/wiki/Block_size_limit_controversy and it says that increasing block size will lead to "Bitcoin competitors will have lower fees" so fees will increase if we increase block size. But also it says that decreasing block size will lead to "Fees will not be zero. This is eventually a necessity in order to incentivize miners and secure the mining ecosystem" so fees increase again. It is very strange that no matter what we do transaction fees always increase. What am I missing?

What any particular change will do to fees is mostly speculation.
A larger block size will not necessarily reduce fees, however, given the current fee model is an auction for limited bandwidth model, it is likely that selling pressure in the auction would be reduced if block sizes were increased. The inverse would be expected initially if blocksize was smaller although, if transaction bandwidth is stifled significantly it also seems likely that consumers may then seek an alternative to Bitcoin since their demand cannot be satisfied. Block size is a delicate balancing act.
Larger block size and a corresponding reduction in fees, if attained, may also harm the mining effort and force miners to seek an alternative as block rewards further reduce in the future. Mining may then no longer be viable even with ASIC hardware.
As I say, much is to speculation.


text:
How can I recover BTC sent to BCC wallet from Bitcoin Core Wallet?
I sent BTC from my Core Wallet to my BCC Wallet on my phone.  The BCC wallet still shows a 0 balance.  How can I recover it?

Welcome to Bitcoin.SE! Your question appears to have already been answered. You can find previous questions by using the search at the top of the page.

With BCC, do you mean Bitconnect Coin (BCC) or Bitcoin Cash (BCH)?

You can not unless you also have the same BTC address as BCC address.
Basically you need the private key for the address you sent it to.
So let's say your BTC address is A, and you sent it to BCC address B.
You now need to have the private key of B on the BTC network, and you need to import it into Core.
Look up the private key of your BCC address B, and see if you can import it t into Core. I don't think it will work, but i have never tried that.


text:
GPU Mining Speed
I am a bit new to the whole mining thing and just have a economical issue when it comes to selecting GPUs. Sorry if the title is in appropriate.
Let's just say in mining Ethereum,
a 1070 ti (costs $945) has a speed of Approx 30-31 Mhz
a 1080 ti (costs $1450) has a speed of approx 38 mhz
a 1060 3gb (costs $350 used) has a speed of approx 20 mhz.
Putting aside the brand new/used factor, PCI slot usage on the board, DAG size etc and considering only sheer economics/speed,
I could buy about 3 1060s and get a total speed of approx 60 mhz rather than buy a 1070 ti.
I could buy about 4 1060s a get a total speed of approx 80 mhz.
Therefore, does buying 3/4 1060s rather than 1 1080ti or 1070ti get me at an advantage in solving shares?
Does the speed/ram in a GPU has a part in playing the share solving scenario? What would you recommend if I am at a budget in starting up this mining thingi?
I know individually the 1080ti will out perform the 1060s in it's sleep.

Welcome to Bitcoin.SE! I see you have experience with other SE sites so I will leave the explanations. Please enjoy your time over here at Bitcoin.SE.

You have essentially answered your own question. Mining comes down to sheer hashing power and 80MHz > 38MHz. You just need appropriately configured mining software.
If you have the choice, always buy graphics cards with higher clock speeds for GPU and RAM - provided you consider the need to cool them.

Hi, I was under the impression that 1 GPU was meant to process 1 share/task. If I have 6 GPUs 6 shares would be tried solved. Was I wrong? Do all GPU's combined together solve a share? I just use EWBF, Claymore, Cgminer or a miner recommended by a pool and point my wallet address and update the pools address/ports. Do I need to do something else, as suggested by you of "configuring mining software"?

It is totally dependant on the mining software you are using. Either more shares on one worker (workers is for pooled mining) or more workers. Either way same hash power. Work out the capabilities of the mining software you are using first. Even if the mining software cannot handle more than one GPU, can you run more than one instance of the mining software? Look for setup guides for the mining software you are going to be using.


text:
Possible optimisation to bitcoin propagation
One of the main arguments for not raising the block size in Bitcoin is the fact that larger block size means slower propagation.
The most space consuming section of the Bitcoin block is the data of the transactions. Assuming a large portion of the nodes is full nodes, there is a large redundancy in the block data.
When a miner successfully mines a block, he needs to send it to the other nodes in the network. Many of those nodes already possess most of the transactions data that is included in the block.
Maybe it is better to send a hash of each transaction instead of the data itself. In case the receiving node doesn't have this data, it can request it from the sending node.
This might compress the size of a block by 5-10 times (depending on the size of the hash) and allow significantly larger block size.

Not sure how this didn't get more completely answered previously.
Bitcoin has not sent the full block as the primary propagation method for a couple years now, see BIP 152.  What gets sent is the block header, 6 bytes per transaction, and the coinbase transaction. Optionally, additional transactions may be sent that the sender predicted the receiver won't know.
The very short hash is possible because the hash is salted distinctly by each transmitting node. This makes it impossible for an attacker to intentionally create collisions, and any collisions that happen by chance get 'routed around' in network propagation by virtue of the fact that blocks just flow faster on links where there wasn't a collision.
Because this message is so small BIP152 is able to frequently eliminate one round trip by not performing an INV. So the fact that an extra roundtrip is sometimes needed to fill in missing transactions only leaves it with the same number of round trips as the original protocol.
There is also fibre which unconditionally reduces the transmission to 0.5 round-trips, but at a cost of wasting a considerable amount of bandwidth. For fast links this is the fastest thing to do.
For the concerns of network security and stability, it isn't just a question of how slow propagation is on average but how slow it can be made by a miner in the first case. BIP152 does a great job on the average, but doesn't actually improve the worst case  Also the amount of data in a block also controls the amount of data outside of blocks, at most compact blocks can only reduce the total bandwidth of a node to half over the original scheme.
BIP152's design was selected as a trade-off between many factors-- latency, bandwidth, computational load, implementation complexity. Fibre represents a different tradeoff (favoring the absolute lowest delay instead of less bandwidth).  We know how to get blocks down to about 500 bytes typically, with considerably more implementation complexity and computation, but it doesn't seem like there is much cause to do so relative to the importance of improving other areas of the protocol.  This is doubly true because these improvements don't help the worst case.  I believe FIBRE already achieves very close to the best possible worst case performance.

My concern would be that in the case where the recipient doesn't have all the transactions, the extra request(s) to get them would end up taking more time than just sending them in the first place.  Miners are scattered all around the world but are likely to be able to pay for fast connections, so I would expect connections between them to have high latency and high bandwidth.  In such a case it's better to preemptively send a larger amount of data (fast because of high bandwidth) than to risk a request/reply round trip (slow because of high latency).
Also, miners pretty often include transactions that they originated, or were sent to them privately, or otherwise have not been broadcast on the peer-to-peer network.  Consider mining pool payouts, nonstandard transactions, low-fee transactions which the miner has agreed to "accelerate", etc.  So I think this extra request protocol would be needed more often than not.
This could be a reasonable optimization for full nodes who are not miners, and thus don't need to receive the block urgently.  They might save some bandwidth this way.  But on the other hand, since they don't need to receive the block urgently, we don't care so  much about them, and it's hard to justify a major p2p protocol change just for this.


text:
I can withdraw my BTC on cryptoayo and they insisting on me to pay an amount ...?? How can one unlock block chain and be independent and withdraw?

Hello guys ...Im asking how can I withdraw from cryptoayo and there is a block chain that doesn't wanna release my current balance and it's 23,825 been trading on auto trading for six months

A scam. Normally withdrawal fees are deducted, not requested. Don't pay them, you won't receive your money back.

Then please look up if cryptoayo.com is legit or not because my account is active but can't access the funds ....

They are scam, I couldn't find even one review about them. They seem to be have poorly made their website from a shopping website template you can see how unprofessional they look here: https://cryptoayo.com/product/fresh-organic-honey/ Seek help from your local authorities to get your money back.

The app is cryptoayo.com and Im amazed when they say organic

Related: https://bitcoin.meta.stackexchange.com/q/1072/5406


text:
How can I get the transaction history of a bitcoin address?
Lets say that I have a bitcoin address that is not owned by me. Is it possible to get that address's full transaction history (send/receive addresses and amount), and if the owner bought bit coins using a credit card will I be able to see that and possibly the card number? If not, what can I see with just a random bitcoin address, and who can see that credit card number?

Is it possible to get that address's full transaction history (send/receive addresses and amount)

Yes, all that information is in the public blockchain.
type the address into any blockchain explorer

if the owner bought bit coins using a credit card will I be able to see that and possibly the card number

No. That information is not public. It isn't really part of Bitcoin - not the network protocol, the blockchain or the reference software.

who can see that credit card number?

The merchant involved may, or their payment processor. But this part of your question is absolutely nothing to do with Bitcoin.


text:
On the Bitcoin wallet app for Android
I can't switch between addresses so any coin I have in other wallets isn't accessible. Does anyone know how to solve this? It's the app with the bitcoin symbol on a yellow circle background for Android. Thank you!

Hi Opendoorexe, could you please clarify the name of the software you're using? You appear to be trying to use the same wallet from multiple devices, how did you attempt to synchronize the wallet across the devices?

Are you using https://play.google.com/store/apps/details?id=de.schildbach.wallet&gl=GB "Bitcoin Wallet for Android" by "Bitcoin Wallet Developers"  also sometimes known as the Schildbach wallet to avoid ambiguity.

It's one device but multiple wallets. It's called Bitcoin Wallet and it is created by Bitcoin Wallet Developers as said by RedGrittyBrick. There are many addresses there only 2 of them have coin but I can only send from one wallet and I'm not sure how to change the primary wallet to get access to my coin.


text:
I set my transaction fee too low 2 months ago and blockchain says "transaction invalid", will I get my coins back?
About 2 months ago I sent BTC from my Mycelium wallet to an XMR exchange, however I set the transaction fee too low so it never got any confirmations. I found the transaction on blockchain.info and it would start off saying unconfirmed, then after some time it would say "Transaction invalid: some outputs that it attempts to spend have been already spent or are no longer valid" (although I have done nothing else with the bitcoin), then sometimes when I checked the transaction on Mycelium every few days it would rebroadcast and the same cycle would happen.
After 3-4 weeks I let the transaction rebroadcast once more and then deleted the transaction from Mycelium, so it would not rebroadcast anymore - I was hoping that after couple weeks the transaction would drop from the mempool and I would be refunded the coins. However this was now over 4 weeks ago and there is still no sign of the coins coming back. What should I do? Should I just wait it out and they will be guaranteed to come back eventually, or is there some action I should take?
Here is the transaction on blockchain: https://www.blockchain.com/btc/tx/4367ed782f5347ec5184b597d38267ccd117c0705b419bda5911d3a199df3483

If the transaction never gets confirmed, the money never left your wallet and, so far as the Bitcoin network is concerned, is still under your control, even if your wallet doesn't show it. Since it never left, the notion of it coming back is not necessary. Bitcoin has no notion of refunds.

Thanks for the replies, it is good to know my coins are still technically safe. I read through that thread and I'm still unsure because the blockchain says my transaction is invalid, so I suppose that means there is no chance of it getting confirmed. But my wallet is still showing its funds to be empty (although I understand they were never sent), should I expect that they will show up again at some point?

Probably not - you should find a way to convince Mycelium that the transaction doesn't exist. If that happens, it should show you the original balance again. I have no idea how to do this, but I don't expect this is something time based. There isn't any event that needs to happen; you just need to convince your wallet the coins never left.

Thank you Pieter, I will see what I can do on the app to fix this.

Thanks everyone for the help, I have managed to solve the issue, I simply deleted the Mycelium app and reinstalled it, having made sure my wallet was backed up. I suppose it must've been some glitch that prevented the funds from showing.

Contact the person you sent it to sometimes they can speed up a transaction. Like when i sent a small amount of btc to localbitcoins in 2017, the can see the transaction and somehow point their miners specifically at that transaction. Maybe i don't recall correctly.but it took like two weeks and that was a long time then. Sounds like it's getting far worse. Probably will continue to get worse and worse. Bitcoin could be completely obsolete in another 3 to 6 years because it will be so slow.
I think the only thing you can do is wait. There's no centralized regulations that you can complain to. Very to hear that. Next time increase the transaction fee. The fees are godawful and are ruining crypto.