text:
how does the blockchain addresses relate to the blockchain WIF?
I'm using block.io and experimenting with a testnet accounts given to me by the site.
I can create addresses on the website and have thus far created 5 in total.
However, I only have one WIF, also given by block.io.

When I am building a transaction with bitcoinjs-lib, the WIF associated with the account decodes to a public address which does not match any of the 5 created addresses.

I'm still having trouble building a transaction and so am looking to understand how the WIF relates to the public addresses
I'm not really sure if this is a feature of block.io or if the address generation is a feature of bitcoin itself. It would be great if I can get an explanation of how these two are related.

tl:dr: The WIF is the master private key. The addresses are different things entirely but are derived from that.

[I] am looking to understand how the WIF relates to the public addresses

WIF
In Bitcoin, Wallet Import format (WIF) is a way of writing private keys. The numbers that give you power to spend money.
WIF is used to make backups of keys and when replacing one wallet program with another from a different developer.
Addresses
However addresses are abstractions of locking scripts. These locking scripts are the parts of transactions in the blockchain that effectively specify who is allowed to spend a specific amount.
For P2PKH outputs the address would be based on a hash of a public key.
Addresses are used to tell payers how they can construct an output in a transaction that will pay you money.
Blockchain
Note that WIF and addresses never appear in the Bitcoin blockchain.

Derivation of addresses from  keys
There are other questions here about Bitcoin address generation that may be helpful however my rough understanding of the process is as follows

When you create a wallet, a seed is created. This is a randomly generated number.
From that seed we can use HMAC-SHA512 to generate

A master private key
A master public key
A master chain code

From those, each time we want to receive a payment, we can use BIP-32 and a chosen derivation-path to create the next in a series of hierarchical deterministic (HD) private and public keys.
from each of those public keys we can create an address suitable for
use with one of the standard Bitcoin locking scripts.

for P2PKH locking scripts the process is
Public-key
     |
     | SHA256,RIPEMD160 (AKA HASH160)
     |
Public key hash
     |
     | Base58Check encode with 0x00 prefix
     |
Bitcoin address

Example values
When you have a long string of numbers and letters and are wondering what sort of thing it is, this may help.

Prefix
Example use
Example value (DO NOT USE)

0  0x00 "1"
Pubkey hash (P2PKH address)
17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem

5  0x05 "3"
Script hash (P2SH address)
3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX

128 0x80 "5"
Private key (WIF, uncompressed pubkey)
5Hwgr3u458GLafKBgxtssHSPqJnYoGrSzgQsPwLFhLNYskDPyyA

128 0x80 "K"/"L"
Private key (WIF, compressed pubkey)
L1aW4aubDFB7yfras2S1mN3bqg9nwySY8nkoLmJebSLD5BWv3ENZ

4,136,178,30  0x0488B21E  "xpub"
BIP32 pubkey
xpub661MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3 zgtU6LBpB85b3D2yc8sfvZU521AAwdZafEz7mnzBBsz4wKY5e4cp9LB

4,136,173,228 0x0488ADE4 "xprv"
BIP32 private key
xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63o StZzF93Y5wvzdUayhgkkFoicQZcP3y52uPPxFnfoLZB21Teqt1VvEHx

111 0x6F "m"/"n"
Testnet pubkey hash
mipcBbFg9gMiCh81Kj8tqqdgoZub1ZJRfn

196 0xC4 "2"
Testnet script hash
2MzQwSSnBHWHqSAqtTVQ6v47XtaisrJa1Vc

239 0xEF "9"
Testnet Private key (WIF, uncompressed pubkey)
92Pg46rUhgTT7romnV7iGW6W1gbGdeezqdbJCzShkCsYNzyyNcc

239 0xEF "c"
Testnet Private key (WIF, compressed pubkey)
cNJFgo1driFnPcBdBX8BrJrpxchBWXwXCvNH5SoSkdcF6JXXwHMm

4,53,135,207 0x043587CF "tpub"
Testnet BIP32 pubkey
tpubD6NzVbkrYhZ4WLczPJWReQycCJdd6YVWXubbVUFnJ5KgU5MDQrD9 98ZJLNGbhd2pq7ZtDiPYTfJ7iBenLVQpYgSQqPjUsQeJXH8VQ8xA67D

4,53,131,148 0x04358394 "tprv"
Testnet BIP32 private key
tprv8ZgxMBicQKsPcsbCVeqqF1KVdH7gwDJbxbzpCxDUsoXHdb6SnTPY xdwSAKDC6KKJzv7khnNWRAJQsRA8BBQyiSfYnRt6zuu4vZQGKjeW4YF

"bc1"
Bech32 pubkey hash or script hash
bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4

"tb1"
Bech32 testnet pubkey hash or script hash
tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx

Prefixes are given as decimal, hex and resulting symbolic values.

See also

How can I get the destination address from raw transaction data?
Most common derivation Paths, accounts and indexes

oh wow. thanks for the really comprehensive explanation.


text:
BitcoinJ : Balance and Transaction are not showing in wallet after restoring wallet from MnemonicCode
I have created a wallet with the help of WalletAppKit on Android and did some transaction in it.
Now what I try to do is, restoring that wallet from mnemonic code (BIP39). It also returns the Wallet object but it doesn't contain the transactions.
Here is the link ref https://bitcoinj.github.io/working-with-the-wallet#seeds-and-mnemonic-codes which describe the working with mnemonic code and seeds.
It also says "now sync the restored wallet as described below" but I never found any way to sync it.
DeterministicSeed seed = wallet.getKeyChainSeed();
println("Seed words are: " + Joiner.on(" ").join(seed.getMnemonicCode()));
println("Seed birthday is: " + seed.getCreationTimeSeconds());

String seedCode = "yard impulse luxury drive today throw farm pepper survey wreck glass federal";
long creationtime = 1409478661L;
DeterministicSeed seed = new DeterministicSeed(seedCode, null, "", creationtime);
Wallet restoredWallet = Wallet.fromSeed(params, seed);
// now sync the restored wallet as described below.

I found this link https://github.com/bitcoinj/bitcoinj/blob/master/examples/src/main/java/org/bitcoinj/examples/RestoreFromSeed.java. it takes so long time but nothing heppend.

Yes, that part is critical. It need to parse all historical transactions to check which ones are spendable by HD keys which are derivable from your wallet. This will take a while as includes the entire chain. The backed-up wallet doesn't know which keys or transactions were previously received, so it has to iterate through all child key indices, until it finds the index where the previous wallet stopped generating children keys (a gap of 20 unused hd keys). For each child key, it will derive the public key hash, and search for those while parsing the chain to determine whether it was used.

I think this example can help you, to synchronize the wallet
https://github.com/bitcoinj/bitcoinj/blob/master/examples/src/main/java/org/bitcoinj/examples/RefreshWallet.java

source: Stack Exchange

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

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

sort: votes


text:
How to monitor balance for addresses other than by using importAddress?
Is there any way, other than importaddress, to watch balances of specific addresses?
If not, how it is possible for wallets and explorers to give information (balance, transactions) about specific addresses even though importaddress takes some time?  Because we have to rescan sooner or later.

Is there any way, other than importaddress, to watch balances of specific addresses?

You can import a wallet that was exported in the dumpwallet format using the importwallet command. You can also import addresses using importmulti and importpubkey. But, in general, no, there is no way to watch balances of specific addresses in Bitcoin Core without using an import* command.
With Bitcoin Core 0.17, you can use the scantxoutset command which will scan the UTXO set for the UTXOs pertaining to an output script (defined in various ways).

If not, how it is possible for wallets and explorers to give information (balance, transactions) about specific addresses even though importaddress takes some time? Because we have to rescan sooner or later.

Wallets keep track of this information themselves. They do so in the same way that the import* command work. import* commands are wallet commands to tell a wallet to keep track of certain output scripts. They keep track of these in the same way: scan incoming blocks and transactions for outputs that match what they are looking for.
Blockchain explorers do not use Bitcoin Core nor do they use the wallet for this sort of stuff. They maintain their own databases that store the information for all transactions and their outputs. They do so in a similar way to wallets, but instead of looking for specific output scripts, they just store all output scripts.

how Wallets are keeping track of this information?

any open Source block explorer you can refer?

Wallets keep track of this information by receiving all transactions (both in blocks and not) and then scanning the outputs of those transactions for specific scripts that they are looking for. If the scripts match, the transaction is stored and whatever internal databases are updated. As for open source block explorers, have a look at insight: https://github.com/bitpay/insight

I dont know what but I m missing something. Could you please help me @Andrew ???
Lets say I made a wallet and have full synced node. A user with an address which also have some coins, comes to my wallet and sign-up. Now wallet will have to show balance of his address, but in my case I could not be able to show him without rescan - which takes some time. Then how do the already running wallets are doing it?

Users typically don't already have an address with coins when they create an account with an online wallet service. Or if they do, they aren't bringing those with them to that online service. Many online services are already indexing the blockchain anyways for all addresses. So it is very quick for them to just search through that index instead of rescanning the blockchain if a user imports their own addresses.

Is there any way, other than importaddress, to watch balances of specific addresses?

No, creating a watch-only address is the way to do this using a wallet such as Bitcoin-core.

how it is possible for wallets and explorers to give information ... even though importaddress takes some time?

Once the blockchain has been initially scanned for transactions involving an imported address, the wallet need only check new blocks for mentions of that address as it receives the new blocks, there should be no need to rescan the blockchain.
Blockchain explorers can maintain an index per address and continuously keep track of balances for all addresses. They don't need to recompute this from scratch for every new enquiry.

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 and any improvements you might have for it,

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


text:
scam with blockchain
Recently a scammer contacted me to invest in Bitcoin. Well after losing my money with him, this person offered to return my money, and asked me to create a blockchain account. I did, then he asked me to share my id wallet and my password, because I did not know it. After a while he told me that my money was back, but it was not usable, if I wanted to have it. I thought it was strange, so I started to investigate, realizing it was a scam. I did not fall for his scam, but he still does not want to return my money.
My question is if I can get my money from the addresses that I leave, which by the way move a lot of money, it is possible to get the private key, hack those addresses, if they need the information I have the account still active.
The scams page is: https://kryptobinary.co.uk/
My non-spendable balance:

I'm afraid you were scammed.
The balance shown by your wallet software is not your money - it is that of someone else the scammed convinced you to "watch". Without access to the private key, there is nothing you can do. It isn't even necessarily the scammer's money either.


text:
Which price need to be taken for bitcoin analysis
I'm doing a bitcoin statistical analysis using Python. The bitcoin prices consist of close,open, low, high prices per an hour. For statistical analysis, which price do I need to take to consider. Is it close price? Or the mean prices.
Many of the analysis had used the closing price as shown below. What is the base for that? What if we consider the mean of them?
https://medium.com/spreadstreet/bitcoin-madness-how-to-simulate-bitcoin-prices-in-google-sheets-c61cb42f26ed
Sorry if this is not the write place to post this question

I worked in IT in the traditional finance industry for a while many moons ago.
There is no 'right' answer to what you want. What's important is not that you use one or other, but that you are consistent and reasonable in your choice. Being consistent example: if you use the open price, always use the open price. Being reasonable example: if you are analysing for highs, then use the highs that come in.
Bitcoin is a 24 hour market unlike traditional trading where they will often use the close. There, the close has a particular meaning: people have often borrowed to trade a position and they want to leave that position before the close, particularly at the end of each session or before weekends. If they do not, they risk the market moving against them at the next open, and risk additional costs for holding borrowed money during a period where there's no trading. Thus, you may prefer to use the close because that's what many traditional traders do, even though it has less meaning to Bitcoin, and even less meaning for hourly closes.
If your analysis is directed at trading, you might want to try https://quant.stackexchange.com/


text:
What is the most suitable time interval to analyze data
I'm statistically analyzing the bitcoin prices. We have the ability to analyze them based on hourly, daily, monthly etc. So based on the requirement it is possible to select the period. Consider if we are looking at all hourly prices or longer intervals (i.e. daily or weekly prices) What is the most suitable time interval to select ? (hourly or longer).
Also, please let me know whether the analysis should be done on the prices or on the relative returns or the log-returns? Please explain

Your question seems only tangentially about bitcoin. You're unlikely to get the quality of answer you want here; consider asking in https://stats.stackexchange.com/ or https://quant.stackexchange.com/

There's no "best interval", as per the Heisenberg Uncertainty Principle.


text:
Bitcoin Signatures are susceptible to quantum attacks - how exactly and with what practical impact?
@PieterWuille  wrote in another thread:
""
The hashing algorithm is probably the most quantum-resistant piece of cryptography right now in Bitcoin. Barring any specific breaks, SHA256 and RIPEMD160 are as quantum-resistant as hash functions can be (there is an inevitable square-root speedup that applies to any hash function). Much more can be said about the quantum resistance of digital signatures. – Pieter Wuille Mar 5 at 0:03
""
I would like to ask for more precise information if possible:
Which precise parameters of bitcoins blockchain would be susceptible to quantum attacks (Pieter mentioned "signatures", but what else)? And what could be the potential impact  if those parameters (signature, etc.) were successfully attacked?  (one transaction could be blocked, the entire blockchain controlled, etc...which practical effects?)
-And what could be ways to prevent attacks on those parameters? Any ideas circulating among btc dev community on how to "adjust" those parameters?

Or is the current consensus among the community to rather wait for the world till they provide new crypto schemes which are quantum proof (for example waiting for the NIST Post-Quantum Crypto Competition) ...

thank u!

Which precise parameters of bitcoins blockchain would be susceptible
  to quantum attacks?

(1) Private Key: ECDSA is the first thing that can get vulnerable with quantum computer. Using Shor’s algorithm and Grover’s algorithm you can break the private and public key encryption. As Peter said in the previous post, hashing is Quantum resistant, so you would not make your private key vulnerable in post quantum world when providing an address. However, when a person sends you some bitcoins, his signature/public key can reveal the private key. The owner of the quantum computer can go back across all transactions and calculate the private keys from the signature provided or from the public key and control all the UTXOs from it.
(2) Mining: A classical computer need O(N) operations to go through all the nonces in order to find the solution to the cryptographic puzzle. A Quantum computer would need O(sqrt(N)) to go through the nonces. This would lead to increase in efficiency in the order of magnitude of 10^10 (Tangle whitepaper). If mining is faster with a quantum computer, it could lead to consolidation of mining power if one entity were to acquire a quantum computer while it remains out of reach of others. In that case, the owner of the quantum computer can launch double spend attacks and all other benefits of 51% attack
According to this discussion, signature will need to move to post quantum world much before quantum PoW. This is because, the rough speedup is 2^240 for signatures while it is ~2^40 for proof of work.

What could be done to prevent attacks on those parameters?

(1) Bitcoin is more resistant to quantum computing than most of the security on which the internet relies. Moreover, if you never reuse addresses, then no one knows your public keys and thus there's nothing for a QC to solve.  For example, when you send some bitcoins to a person, send the remaining change to an account controlled by a different private key. By the time someone gets your public keys/signatures, you've already spent the funds and sent the change to an account created by a different signature. Also the crypto algorithms in Bitcoin can be changed to quantum-resistant ones (see here).
(2) Bitcoin increases difficulty by only by a factor of 4 at a given time. This means we would need a hard fork to change the difficulty to suit that of Quantum computer it the transition does not happen gradually.

thx, and ""signature will need to move to post quantum world much before quantum PoW""  so, to which signature concept are experts thinking on moving to in the future, any ideas now?

https://www.wikiwand.com/en/Post-quantum_cryptography has a good article on this one. However, one should note that quantum resistant signature rely on very large signatures - which may make them expensive for purposes like Bitcoin. Also, much less research exists into features that can be derived from those making us go a step backwards in terms of functionality.


text:
Why is Script needed?
As I see it, the script feature is one of the most complicated features in the entire protocol. It features
$ cat src/script.h|grep '^ *OP_'|wc -l
118

instructions, and requires a stack to calculate.
The most important limitation, it makes it complicated to answer a simple and common question - "how much bitcoins does my key have".
With a complicated script, a bug in the script engine is more likely, and thus, it is possible that the network will split (50% client accept this transaction, 50% do not, before you notice, you have two long block chains. One longer which is considered invalid by 50% of the clients, and one shorter, considered valid by both).
What's the rational behind such a system? Why can't any transaction be simply "move X BTC from key K to key I signed by private key K"?
(If indeed you want anything complex - do that in a different system, and not inside bitcoins block).

I think that the claim "the 'simple' kind of transactions can be feasible proven not to have bugs because of scripts" is correct. Most transactions real world transactions will only use trivial scripts for the near future ... and I believe that if you choose to only use such transactions (let's say with a "safe client" or "safe mode" that rejects all other tx), then you can be safe from potential bugs. The usefulness of scripts is enormous, but you can work around them for everyday use if you don't need those features ... or so I think/hope.

Can you explain why the usefulness of scripts is enormous, especially given that most of the transaction are "regular" ones? And correct me if I'm wrong, but safe client wouldn't protect you from bugs that split the network.

Scripts are very useful, because they allow everything @theymos wrote, and much more. Most transactions don't need to use any of the features, but a lot of people will choose to use these scripts to hold their "uber secure wallet that uses multisig", while condutcing day-today business via simpler tx. The beauty is that as a user you can completely isolate yourself from any risk. I don't think a split network bug is a realistic scenario - try asking another question like "Could bugs in script execution realistically cause network splits" to understand why or why not.

Why can't any transaction be simply "move X BTC from key K to key I signed by private key K"?

Then you couldn't (easily) do the P2SH stuff being implemented right now without getting everyone to upgrade. You also couldn't do escrow, multisig, secure cross-chain trading, secure high-frequency trading, etc. These features are very valuable; Script-based escrow, for example, will be the first escrow system ever which requires no trust in third-parties.
Script is, in my opinion, one of the greatest innovations in Bitcoin. I would prefer a much more powerful, Turing-complete version of Script in Bitcoin, actually.

Won't the Turing completeness cause infinite loops?

@makerofthings7 There'd need to be some sort of limit on the number of instructions executed per script.

I'm doing a deep dive in the scripting, and ported a proof of concept to C# from BitcoinJ.  Do you have any details on some theoretical scripts that are useful?  The contracts page doesn't go into enough detail, and there are no examples of a turing complete example

(If indeed you want anything complex - do that in a different system, and not inside bitcoins block).

I'll first try to answer your second comment: in short, you cannot do it in a different system, with the same security properties.
Several schemes exist for sharing keys according to complex schemes, for example Shamir's Secret Sharing. Unfortunately, that still requires the full secret key to be recombined on a single computer system at some point in time, which becomes a single point of failure.
In contrast, Bitcoin's 2-of-2 transactions for example allow a transaction to be created that needs to be signed using two different keys, which can reside on two different systems, independent from eachother. That will hopefully allow applications that require a confirmation to be given on a mobile phone system, while that phone's private key never needs to leave the device.

What's the rational behind such a system? Why can't any transaction be simply "move X BTC > > from key K to key I signed by private key K"?

Restricting transactions to such a simple form would restrict Bitcoin to exactly the possibilities traditional currencies had (though decentralized). However, Satoshi saw the potential to allow it to do more, and introduced a script system. He wasn't around anymore to bring it to practice, but Mike Hearn wrote down some of the things Satoshi had in mind on the Contracts page of the Bitcoin wiki.

It's worth noting that there is a protocol, the development of which Stefan Thomas leads, that allows creating a 2-of-2 (and maybe m-of-n) transaction from two ECDSA keys without combining them, and looks exactly like a single ECDSA signature which can be placed in a simple transaction. So at least this application does not necessarily require scripts.

You can also use Shamir's Secret Sharing in conjunction with M of N transactions. One or more of the N private keys can be split up into multiple shares with SSS. If you decide to use SSS, here's a pretty straightforward python implementation: https://github.com/halfmoonlabs/secretsharing

The most important limitation, it makes it complicated to answer a simple and common question - "how much bitcoins does my key have".

Why is that a limitation? It's actually a critical defense against one of the most realistic vulnerabilities in crypto-currencies as immortalized in this XKCD cartoon. There is at least one very good reason Satoshi chose to remain anonymous.

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


text:
How do I extract the private keys from my namecoind wallet?
Seems like namecoind doesn't support the dumpprivkey command.

https://github.com/gavinandresen/bitcointools
or pywallet (link on the site above).
These are the only ways I know. Not really comfortable. Also it is probably not possible while namecoind is running.

Thanks @phelix. It seems that for namecoin, one needs to use a forked version of pywallet https://github.com/jackjack-jj/pywallet and use the command line parameter --namecoin.

Fun fact: you can even share private keys between Bitcoin and Namecoin. Might make a good secret wallet ;)

Care to explain? :)

Bitcoin and Namecoin private and public keys are exactly the same thing. Only the address generated from the pub key looks a little different. It is possible to generate both address types from a single priv key. Check out the casascius address utility.


text:
Is there a risk of double-spending when making a face-to-face transaction?
When exchanging funds or services face-to-face, is there a risk of a double-spending attack? If there is, how could it be technically done?

I proffer that it would depend on the tools used to make the transaction and broadcast it.
Assuming use of something like Bitcoin Wallet for Android or even a laptop running Bitcoin-Qt, the chances are very unlikely.
A malicious user would have to connect to the network with two devices simultaneously and broadcast the real transaction (the one being "sent" to the vendor) milliseconds after the malicious transaction. The vendor's client would have to see the real transaction before the malicious transaction, give the item to the malicious buyer, and depart company before realizing he's been had.
Simply put, a malicious user would have to be connected to more nodes in the network than the vendor and NOT be connected to any of the nodes to which the vendor is connected when broadcasting the malicious transaction, probably out at least one or two degrees of separation. This would ensure enough latency to ensure the vendor sees the real transaction first and surrenders the goods before the vendor's client says that other nodes think another transaction is of higher priority.
All of this can be avoided by waiting for a confirmation, but in real commerce, that may not feasible.

What happens when a node receives two conflicting transactions? Does it notify other nodes? Does it drop both or just one? If just one, is it first-come-first-served?

My understanding is that it accepts the one with the earlier lock time. It does not notify other nodes in any way, it simply would drop the other transaction.


text:
How do I build bitcoin transactions graph?
I'm using blockchain dumps from http://dumps.webbtc.com/
in database schema in mentioned that result of script in pk_script should specify recipient of transaction. But how do I get amount of bitcoin sent and sender?

The database schema is located here: https://webbtc.com/api/schema
You might be disappointed to find out that it's not as simple as an amount and a sender for each transaction. What there are is a list of inputs (references to previous outputs), and a list of new outputs. Each output with an amount and a pseudonymous address. Each input has a TXID and output index to reference which previous output it is spending. Unless you know who owns specific addresses, though, you can't determine the identity of the sender(s).
You can use the prev_out and prev_out_index from a row in the inputs table to find the associated previous output, which will tell you the amount and address.

I need sender in sense of getting his pubkey or even hash of pubkey which your comment if I understand correctly refers to as 'address'.
So, I need to look up previous transactions. And what if previous transaction has many recipients and only one of them participating in the current?

The pk_script of the outputs table gives you that, but you'll need to convert that scriptPubKey to an address. It's not super easy to do that, and the table doesn't give you the actual address. So, you can either look up the standard output types and learn how to convert them to an address, or use a different data set that has the addresses in them.

Could you suggest different data set which already has addresses in it? I would much appreciate it.

If you're specifically looking for downloadable databases, I don't know of any, unfortunately. There are API web services that provide that information, but it takes a long time to parse the whole block chain (and a lot of bandwidth) with an API.

See http://bitcoin.stackexchange.com/questions/11687/reliable-efficient-way-to-parse-the-blockchain-into-a-sql-database


text:
Bitstamp ripple bridge clearing time
How long does it take for a ripple bridge transaction to clear?
Bitstamp BTC on ripple -> bitcoin address

Currently, the only functional bitcoin bridge the client directly uses is operated by Bitstamp. The time until they issue a matching bitcoin transaction is completely dependant on how well Bitstamp's automation and bitcoin transaction batching is working.
The Ripple side of the transaction completes within seconds. When Bitstamp is operating "correctly" the bitcoin transaction is initiated within seconds or a couple of minutes. Then of course you'll need to wait for however many bitcoin confirmations the receiver requires.
Once the Ripple side of the transaction completes, if there are any further unexpected delays or problems the sender will need to enter a support ticket with the brigde operator (Bitstamp for now) to have someone there look into the issue/problem. For example, a week or so ago, their automation stopped processing most Ripple transactions and it took quite a long time for their support to straighten everything out.

FYI a while ago Bitstamp stopped operating their bridge and the Ripple client silently (without any user visible notice!) switched to using SnapSwap :(.

I tried it... ~ 2 hours before the bitcoin transaction is published.


text:
Is the removal of Bitcoin checkpoints considered a hard-fork?
The value of DEFAULT_CHECKPOINTS_ENABLED is true and changing it will allow nodes using the default settings to accept blocks that would be currently rejected during a potential reorg. Is this change considered a hard-fork, or only changes to clearly enforced consensus rules can qualify as such?

That's a bit of a stretch. Related: https://bitcoin.stackexchange.com/a/75735/5406

A hard fork is defined as a relaxation of the consensus rules. (In contrast a soft fork is defined as a restriction of the consensus rules.) Changing the consensus rules to ignore checkpoints by default (assuming the reference client Bitcoin Core defines the consensus rules) would be a relaxation of the consensus rules and hence theoretically a hard fork. However, in reality the checkpoints that have been defined in Bitcoin Core are many years deep and the probability of a re-org back to these checkpoints is infinitesimally small (zero to a huge number of decimal places). So practically it wouldn't have any impact.
Checkpoints and assumedvalid was discussed at this London BitDevs Socratic Seminar in November 2021 on AssumeUTXO.

Yes.
Adding a checkpoint to your rules is a soft fork (makes invalid certain blocks that would have been valid). Once you have added that rule, removing it is a hard fork (makes valid certain blocks that would have been invalid).
Any rule one deploys is "clearly enforced". There is no gray area in this distinction. Think of it from the context of your own single node. If you implement a new checkpoint above your current top checkpoint, you have deployed a soft fork.
The likelihood of a chain split is not an aspect of this distinction.


text:
Are there alternatives for proof of work?
Bitcoin uses proof of work to secure the network, Ripple uses a global consensus system and PPCoin uses proof of stake.
Are there any known alternatives to the above methods?

in the ppc paper they talk about a 'proof of excellence' where all peers compete to solve a game. It is basically proof of work, buta better algorithm could score higher.

@David Perry. This is a subtly different question than what you've suggested as a duplicate. This person is asking if there exist alternative distributed synchronization algorithms. The other question asks if the proof-of-work system can prove secondarily-useful work. There is a clear difference.

@Rooke fair enough, I'll re-open it.

possible duplicate of Is there a way to set up proof-of-work systems so it would be even more useful?

Another alternative is proof of burn.

A really quick answer is this: The proof of work system is a solution to the distributed synchronization issue; in another guise it is called the Byzantine Generals' Problem. Thus, any solution to this problem is an acceptable alternative, however the proof-of-work solution is particularly suited to distributed systems.
You can read Satoshi Nakamoto's discussion of this here.

I have been researching on blockchain for sometime now and some of them I found are a mix of some existing and some proposed.

Proof-of-Stake
Proof-of-Burn
Proof-of-Capacity
Proof-of-Activity
Proof-of-Checkpoint

Source: https://bytecoin.org/blog/proof-of-activity-proof-of-burn-proof-of-capacity/

Link is dead. https://web.archive.org/web/20160304055454/https://bytecoin.org/blog/proof-of-activity-proof-of-burn-proof-of-capacity/

authors: Вячеслав Штрунг


text:
Why does the hash-rate change so drastically?
I've been watching the global estimated hash-rate, as estimated by blockchain.info.
While it is clearly increasing, it also varies around 20% day-to-day.
Yesterday, it was around 4,325,000 TH/s.
Today, it is 5,688,000 TH/s.
Wouldn't miners want to keep their equipment running 24/7?
That is a lot of hashing-power to go on and offline so frequently.
What is causing this?

The actual hash rate isn't publicly known.  Blockchain.info is probably extrapolating it from some other information (difficulty level, block times, etc) and this jitter could be an artifact of that.  They don't seem to explain their methodology so it is hard to know.  If this variation is real and not just an artifact, one possible explanation would be variation in the cost of electricity.  In some places, electricity is substantially cheaper at night (when overall demand is lower).  Or in the other direction, some miners might be using solar power.

By the way, your link is missing.

The actual hash rate of the network is not (and likely cannot be) known. Blockchain.info and any other website that tells you the network hashrate is extrapolating it from the frequency that blocks are being produced and the difficulty of each block. However, because there can be significant variance in the times between blocks, this can sometimes make it seem like the hashrate is significantly higher or lower than it actually is. This is likely what causes the variation that you see in blockchain.info's chart.

Around 144 blocks are produced every day, so block time volatility hardly explains daily averaged hash rate deviations of almost 40%.

The block time volatility is literally the only reason for the hash rate deviations because that is the only way for people to measure the hashrate. There is no other way because the hashrate is not directly measurable.

If block time is an average of ten minutes, that means that it is standard between one second and twenty minutes to find the next block but, could be longer on occasion.

The values showed in blockchain.info use the average block times for the 144 blocks in a day. Even if block time variance is high, daily average curve should be smooth in the absence of real hash rate volatility.

The number of blocks per day is not guaranteed to be 144. That is only the average number of blocks per day. Blockchain.info is comparing the number of blocks found per day to the expected number (144) of blocks per day. Block time variance means that not every day will have the same number of blocks. If one day has 6 blocks more (or less) than the previous day, that difference is enough for a 1 exahash/s hashrate difference in the calculation which is noticeable on blockchain.info's graph. Such a variation is not uncommon and averaging does not smooth that out.


text:
Bitcoinj: Multiple wallets
In my Java application I am now required to handle multiple bitcoin wallets (HD wallets?). This means sending and receiving BTC. Unfortunately bitcoin is quite new for me, so there are some questions:
Would it be possible to use BitcoinJ in order to do this? Is it performing well with hundrets of wallets (or more)? If not, what would be the alternative?
Regarding the workflow:
Of course the private key will stay on the user side and thus cannot be read by the application itself. Would it still be possible to raise events like "money received" without having the private key of the wallet?

Concerning the second question, I did it using watch addresses.

I had the same doubt. I've done a little research in the library bitcoinj, and I think that it is possible to use multiple wallets at the same time. I recommend you first work with a single wallet so that you can understand a little how it works the library. I leave an example:
public class MainClass {
    private static final File BLOCKCHAIN_FILE = new File("block.dat");
    private static final NetworkParameters NET_PARAMS = MainNetParams.get();

    public static void main(String[] args) throws Exception {

        List<Wallet> wallets = getWallets();
        BlockStore blockStore = new SPVBlockStore(NET_PARAMS, BLOCKCHAIN_FILE);
        BlockChain blockChain = new BlockChain(NET_PARAMS, wallets, blockStore);
        PeerGroup peerGroup = new PeerGroup(NET_PARAMS, blockChain);

        for (Wallet w : wallets) {
            peerGroup.addWallet(w);
        }

        //Starting peerGroup;
        peerGroup.startAsync();

        //Start download blockchain
        peerGroup.downloadBlockChain();
    }

    public static List<Wallet> getWallets() throws UnreadableWalletException {

        List<Wallet> wallets = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            Wallet w = Wallet.loadFromFile(new File("wallet_" + i + ".dat"), null);
            wallets.add(w);
        }

        return wallets;
    }
}

You can use bitcoinj with multiple wallets (just use peerGroup.addWallet(wallet) multiple times), but it isn't designed to scale well in such a scenario. Depending on your resources and the activity on the wallets, two, three or five wallets might work ok. But hundreds will almost certainly not work.


text:
How to get a description (comment) of the transaction?
From this json response from blockchain.com
How can I get a comment on the translation from here?

This sort of description/comment is just stored locally in your wallet for you to see, it is not information that is broadcast publicly.

How can I get her?
How to get comment if sent via blockchain

You can not get the description of the transaction, because of the description not is for bitcoin but is for the wallet. How when you give the money for the coffee, you know how you spend your money but not have any description. ps: you don't send the description to blockchain.

The comment field seen on the blockchain.info blockexplorer is a feature of the blockchain.com wallet. The data for that comment field is created by users of their wallet, stored only by blockchain.com/info and published by blockchain.info.
This comment is not part of the Bitcoin transactions stored on the Bitcoin blockchain, it's only stored in the databases of a service by a company called Blockchain. The comment thus cannot be retrieved by other wallets. It may be possible to retrieve it from the blockchain.info API.


text:
Using maxuploadtarget in Node Window Console
Complete first-timer to setting up my own node here... I’ve got as far as downloading and syncing the node (on Windows PC), getting my router and anti-virus ports sorted, but want to limit my upload/download capacity for a number of reasons.
I’m trying to follow the instructions from bitcoin.org by typing in -maxuploadtarget=<MiB per day> Or -maxconnections=<num> into the Node Window Console.
I keep getting the error “Method not found” despite trying a number of different ways of typing in the command.  Do I include the “-“, do I include the “< >”, do I include “Mib”, etc.
Can someone please help what exactly I should type in for a medium quality broadband without drawing too much attention (e.g. 500 MiB?).
Thanks so much and look forward to joining the BTC network.


text:
Bitcoin core causing reboot
I have been having an issue with bitcoin core lately. It has been causing my computer to randomly reboot about every hour or so. I was on version 17.1 but upgraded to 18.0 hoping that would fix the issue but no dice. I am running it on Linux Mint 19.1 on an Intel Nuc. I regularly update by system and have all current updates. I see nothing wrong in the bitcoin debug log or in the Linux system log. Any help would be appreciated.
Thanks,
C

Can you add more info for the configuration bitcoin core? you can see the resources of the system during the System is ran?

How have you determined that Bitcoin Core is causing it and not a more general cause like a hardware issue?

Nothing in Bitcoin Core can cause a reboot. You have some severe hardware failure.

Vince - do you mean my bitcoin.conf file?

I’m pretty sure Bitcoin Core is doing something that causes the reboot. I’m not saying it specifically calls for the computer to reboot but it is the cause. I’m pretty sure because the computer is fine when bitcoin core is not running. It only happens when either Bitcoin-Qt or bitcoind is running


text:
How to Post Transaction in Bitcoin Network?
I need help here as it has been almost a week since I've been trying to figure this out. Fyi, I can get my Python Script running using "Mainnet" for Bitcoin Transaction that able to execute and produce the following results:
Tx ID:8b547dd1e6393b4279afe6e083b3b563b929d09ab5bfdbf55c773c84af10b047
bc1qelvkpyjqc6j4smr5n4mscn86pphuv5nxugnvz9  --> P2WPKH Receiving Address
Raw transaction:
0200000001ff67938803c97f765e89dfe81522a20569a38f60b911daa58f4e97ca0ed3d2130000000000ffffffff01a0bb0d00000000001976a914cfd9609240c6a5586c749d770c4cfa086fc6526688ac00000000

Raw signed transaction:
02000000000101ff67938803c97f765e89dfe81522a20569a38f60b911daa58f4e97ca0ed3d2130000000000ffffffff01a0bb0d00000000001976a914cfd9609240c6a5586c749d770c4cfa086fc6526688ac02473044022023c2275892a7d85996a9578e9310122e63f9b4c89b25062a9bbc28ca2891524802206fc32e53a346fcfb41cf0193c5ddfcfad0f240593fdf95a3eda624ff4e25fe7f012102e365c048d44d323ef7ece0084b7ea403758c650a990092002375588c412377fe00000000

However, when I check the above Tax ID, is not in the Blockchain Explorer due to in my Python Script (that's where I've run this it does not "SET" or "POST" into Bitcoin Network)
I do need guidance on how to connect or post my Python Bitcoin Transaction Script to the Bitcoin Network?
My apology as I'm not an expert and I'm quite a nerd but who is willing to learn.
Appreciate your kind guidance on my situation here.
Thanking you in advance

What are you trying to do?

@vincenzopalazzo - sorry to make you confused, My goal is to Run the Script in conjunction with having connected to Bitcoin Network so that my TXID is posted and the transaction goes through.

Your transaction is trying to spend an output (13d2d30eca974e8fa5da11b9608fa36905a22215e8df895e767fc903889367ff:0) that does not exist (and never existed as far as I can see), so this cannot work. How did you construct the transaction?

@PieterWuile I run that using Atom Editor without connecting to rpc_user and rpc_password. This is why in the Blockchain Explorer, it does not have or exist.

What editor you use isn't relevant. What program did you use to construct the transaction? It is invalid.

@PieterWuille Sorry, I'm using Python running inside Atom Editor. I forked this from Github --> https://github.com/jsim77/python-bitcoin-utils    About what program I use? That's the above I have. If you mentioned that this is invalid, can you guide me? to be honest, I'm no expert but still learning.


text:
When did Bitcoin Core deprecate the mining function?
I understand that bitcoin clients originally allowed users to run their own node and mine. This was back when mining was mainly GPU-based.
When was the mining functionality removed from Bitcoin Core?

Arguably, never: Bitcoin Core still has a rudimentary mining function built-in, as it is used for testing purposes (on testing networks where the difficulty is lower). CPU mining has however been entirely pointless since GPU mining became ubiquitous, around the end of 2010. Since then, features and optimizations related to CPU mining have been removed from, and moved out of, Bitcoin Core.
There have roughly 5 different ways to interact with the mining functionality:

The built-in background miner, accessed through GUI, by just enabling a checkbox "generate". This was available in the very first release. I'm not sure when it was removed, but at the latest in 2016.
The built-in background miner, accessed through the setgenerate RPC. This RPC was added on 2010 Feb 23, and removed on 2016 Mar 14.
The synchronous miner, accessed through RPCs like generate and generatetoaddress, which don't run in the background, but just run a relatively small number of POW operations, and return the constructed blocks through RPC. The purposes is testing, and using these on mainnet will almost certainly just fail to construct anything. The generate RPC call was introduced on 2015 Apr 9, and while that specific RPC doesn't exist anymore, more recent incarnations of it like generatetoaddress still exist in the codebase today.
The getwork RPC protocol allows mining in an external process was introduced on 2010 Nov 23, and removed on 2014 Jun 21, as it was superseded by getblocktemplate.
The more advanced getblocktemplate (BIP22) RPC protocol was added on 2012 May 12, still exists in the codebase today, and is the primary way through which mining pools interact with the Bitcoin network.

After 2010, various optimizations for faster CPU mining that existed in the codebase have also been gradually removed, as they were irrelevant for mining for test purposes, and added a maintenance burden.

The mainnet mining capability was removed in 0.13.0, The release note is dated 23 August 2016
https://bitcoin.org/en/release/v0.13.0#removal-of-internal-miner

Removal of internal miner
As CPU mining has been useless for a long time, the internal miner has
been removed in this release, and replaced with a simpler
implementation for the test framework.
The overall result of this is that setgenerate RPC call has been
removed, as well as the -gen and -genproclimit command-line options.
For testing, the generate call can still be used to mine a block, and
a new RPC call generatetoaddress has been added to mine to a specific
address. This works with wallet disabled.


text:
How to recover missing word(s) from recovery phrase (seed phrase)?
Due to a copying error the last word of my 12 word mnemonic recovery phrase for blockchain is missing.
Just wondering if anyone knows of any software that could generate words and automatically test them out to see if they work?
Cheers!

You can do this with the seedrecover.py script in btcrecover
You will need to have the master public key (xpub), a receiving address generated from the seed, or an addresses database.  seedrecover.py will then check all the seed variations to see if they derive the specified key or address.

your question is very short, and links to a "foreign" webpage. Maybe you can shortly describe what needs to be done, and put the link to the end?

As already suggested the best option is to try the Seed Recovery script from btcrecover.
You just need to run the python script, which will ask you for the words you know (those eleven words) and then you also need one of these two:

An address that you know it is from the wallet you are trying to recover.
A full node running on your computer so the script can check out each wallet it generates until it finds one with non-negative balance.

Welcome to Bitcoin.SE! Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.


text:
Mycelium Backup Restore
Is there a way I can restore my mycelium Bitcoin wallet if I have forgotten the 12-word list?
I have searched everywhere and no one describes a situation like this.

Short answer: No. Do you still have access to Mycelium and can send BTC from there to other addresses? Then you could transfer funds somewhere else. But to restore a wallet e.g. on another phone you need the mnemonic words based on the security implemented to secure wallets (or the extended private key which you probably do have as well).

authors: ทวีชัย เมฆวัน


text:
Bitcoin Wallet for Android/Windows with Full Control of BTC (keys)
I used to manage my bitcoin by using MultiBit for Windows. I had full control of them, without any involvement from a 3rd party.
But as a person i know wanted to get bitcoin and a Android wallet, i started to see if there was a MultiBit version for Android, just to realize MultiBit for Windows is discontinued.
I stumbled into Web Wallet difference but it's not exactly the question i am asking.
On Google Play the results aren't familiar at all and the Blockchain app asks for e-mail/etc and the BTC will be stored by them, and i want an app that give me full control of the btc/private keys.
So what apps can be used for Android/Windows that meet the criteria i am asking?

There are a lot of wallets for Android & Windows in which you are on control your private keys. Here you can find a list recommended by Bitcoin Core.
Personally, I recommend Mycelium because is very complete.

Yes. i recommended Mycelium and also installed myself, liking it very much-


text:
complete bitcoin script example
I am trying to learn how to write my own script from scratch. I have seen about a dozen examples by googling but non of them are complete. I am aware of btcdeb as well. Is there a tutorial that covers

what a complete script looks like in a modern day transaction
how to compile that script so it can be uploaded to the test net
what is required on the client side, including cryptographic
operations
How to actually upload that with an rpc call to a node

Thank you in advance


text:
i have 0.10096 mbtc (0.00010096 BTC) in my btc wallet but when ever i try to send bitcoins it always says your balance is low to pay the fee
kindly tell me how much fee is charged over 0.1 mbtc as i have this much amount and i want to send it but it always shows this balance is too low to pay charges.

it doesn't matter how much BTC you transfer, the fee will be the same.. so it's not percentage like credit cards or so but a fixed amount probably higher than your balance. It is not really "fixed" to be honest but not a function of the transferred amount let me say.

depending what wallet you use. you might be able to control the fee. from local wallet I set the amount of fee I want to spend on transaction.

This is currently worth about $0.50 USD.   Is this an amount worth pursuing?  Do you have any other addresses / wallets that you may be able to combine?

The fees you may pay for a transaction do not depend on the amount to be transferred, but to the transaction size. Transaction size highly depends on the number of inputs and outputs, as well as the type of those.
For example, a normal Pay-to-PubKey-Hash (P2PKH) transaction with a simple input, lets say with the exact amount you referred to (0.00010096 BTC), will pay less fees than a transaction with the same amount but 2+ inputs.
Can it be that you have such amount of bitcoins spread in really small amount transactions?

In preferences you can choose payment urgent normal economy. The fee is bigger if urgent is selected.


text:
How to avoid conflicts in a peer-to-peer topology (Bitcoin)?
For example in Bitcoin, if I want a miner to verify whether other miners store a transaction, before deleting it from his mempool.
How can I handle the case more than one miner doing the verification at the same time?
Is it possible to use backoff algorithm?

It's impossible to answer this as its based on a misunderstanding of the system.

The mempool is just a temporary store of unconfirmed transactions. Each node's mempool is not synchronized, and in fact a node could choose to not keep a mempool at all. So no node needs to verify whether anyone else has a transaction, before deleting it from their memory. Miners will choose transactions from their mempool, to build new block templates that they will mine on.
What matters is the blockchain. Each new valid block will (likely) include some transactions, so when a node hears about that block, it will update its mempool accordingly (removing transactions that have been confirmed in the block).
Thus, miners can all be attempting to mine a block that includes the same (or different) transactions, and it is simply the first miner to find a valid block that will 'win', with their block being appended to the blockchain. All other miners will see this new block, and start to mine on top of it, adjusting their mempool (and thus the transactions they include in their new attempts to find a block) accordingly.

So all miners will work on what they see as a full block of transactions, when a miner found a valid block it will broadcast it on the network to everyone. At that point will all other other miners stop mining and verify the new valid block? After that the miner will collect see what transactions where now verified and assemble a for a new block I assume. In the bitcoin blockchain there the miners will stop collecting transactions every 10 minutes (on average). Other parameters is the priority (fee) and congestion in the network (to many transaction). Are these assumptions correct?

I now understand that the difficulty is adjusted my looking at the average time between verification over the last 2 weeks. The goal is to get this to about 10 minutes in bitcoin.

Miners never stop mining. They are continuously trying to find a successor block, with a contents drawn from the mempool of that time. Whenever a new block is found, their mempool changes, and thus their next future attempts will be on top of that.

So when the first miner solves the hashing solution and broadcasts it, will the other miners verify that block? I assume the transactions are sealed in the block that we are trying to reach consensus on, but what if a the different blocks the miners are checking have different transactions in them?

@Damian see: https://bitcoin.stackexchange.com/questions/8172/what-happens-if-two-miners-mine-the-next-block-at-the-same-time


text:
Why didn't Bitcoin implement segwit in the first place?
Why didn't Bitcoin implement segwit in the first place?
Why and how does non-segwit Bitcoin enable a miner to change a transaction's txid?
From Mastering Bitcoin ch. 7 § "Transaction identifiers":

Before segwit, transactions could have their signatures subtly modified by third parties, changing their transaction ID (hash) without changing any fundamental properties (inputs, outputs, amounts).

Why didn't Bitcoin implement segwit in the first place?

The reason Bitcoin didn't initially have SegWit is up to interpretation, I would say that it simply was not thought of prior to transaction malleability. Although that is not its only goal. Segregated Witness was an idea proposed in BIP 141 as a soft-fork, meaning it did not require an entire network upgrade. Due to the nature of a soft-fork, it is backwards compatible with previous versions of the Bitcoin software. Over time, it has been gradually adopted.

Why and how does non-segwit Bitcoin enable a miner to change a transaction's txid?

Mastering Bitcoin is referring to something called transaction malleability. Traditionally, the txid was a hash of ALL the data in the transaction including the signatures. Transaction malleability meant a signature could be slightly modified such that the txid would be changed entirely while the signature still remained valid.
As David has mentioned in his own answer:

changing even a single byte in the transaction completely changes the transaction ID.

This created an opportunity for a "Denial-of-Service" attack where while the transaction was still valid, and every part of the transaction would have the same inputs/outputs, nodes could reject modified transactions and prevent them from confirming. With SegWit, the signatures (as implied by the name "Segregated Witness") are no longer part of this hash. Eliminating the issue entirely.
I recommend reading this article for more information on how exactly it is done in practice.

Why didn't Bitcoin implement segwit in the first place?

Nobody thought of it at the time. There wasn't interest in things like off-chain scaling at the time.

Why and how does non-segwit Bitcoin enable a miner to change a transaction's txid?

The signature for each input only covers critical parameters of the transaction such as who it makes payments to and how much. It is possible to modify the transaction and preserve the signature validity by not changing anything critical. Since the transaction ID is the hash of the entire transaction, changing even a single byte in the transaction completely changes the transaction ID.

Transaction malleability totally messed up the original wallet and would cause effective funds loss (the wallet would never release coins for respending when killed by parent tx malleability).  It was just an un-thought of vulnerability. Segwit is desirable without any thought to off-chain anything, and was first proposed in 2012 without any reference to it importance for smart contracts.

Had anyone thought of the malleability probably in the early days, it would likely have lead to a smaller change just to fix malleability, not segwit. But, of course, counterfactuals are hard to establish.

That isn't at all clear to me, both the full data and the witnessless data must be committed to, no matter how it's constructed.  When we created segwit we first did it as a from scratch redo for elements with no need to be compatible and only later realized we could retrofit it into Bitcoin. The two versions were almost identical. As a result I think it's likely that if the flaw was originally known the solution would be equivalent at a high level description level, other than also supporting the old style-- of course.


text:
Warning: Unknown block versions being mined! It's possible unknown rules are in effect
Recently, my full node (Bitcoin Core 0.14.2) displays this for both HD and non-HD wallets:

Warning: Unknown block versions being mined! It's possible unknown rules are in effect

What does this mean?

Which wallet?  Which version?  Have you upgraded to the latest?

@ErikFunkenbusch Bitcoin Core 0.14.2 for both HD and non-HD wallets

even latest bitcoin core wallet 0.17.1 shows the warning :(

0.17.1 is not the latest, at the time of this comment the latest is 0.18 and this false warning is completely eliminated from it.

Miners have started signalling for BIP 91, which sets bit 4 in version numbers. When BIP 91 activates, it will force miners to set bit 1 (which then indirectly will cause activation of BIP 141 SegWit).
No software release has implemented BIP 91, as a result, it warns because it sees an unknown feature rollout with significant support from miners.

When you say "no software release" - you mean that no bitcoin core software release has been released recognizing BIP 91 right? This warning is safe to ignore since BIP 91 has no actual change in consensus rules associated with it, right?

@BT - yes.  BIP91 is informational, essentially.  It triggers BIP148 so requires no support by wallets.

So will we have to do anything ourselves with respect to this? Are our coins safe by not doing anything at all?

I am not an expert at Bitcoin, but here is some of my research:
https://github.com/bitcoin/bips/blob/master/bip-0091.mediawiki
"While this bip (91) is active users should either upgrade to segsignal or wait for additional confirmations when accepting payments."
I guess this is why Bitcoin Core 0.14.2 displays the warning, on my end too.
More:
"BIP91: The SegWit Activation "Kludge" That Should Keep Bitcoin Whole"
https://bitcoinmagazine.com/articles/bip91-segwit-activation-kludge-should-keep-bitcoin-whole/


text:
What if an intruder modify scriptSig to get the same hashMerkleRoot of a block?
What if an intruder try to modify the coinbase transaction of a block buried in the blockchain, writing as output some other address. The arbitrary content of the scriptSig field could be modified as much as necessary so that the hashMerkleRoot hash match with the one in the original block. What prevents this thing happen?
Thanks.

I assume you mean scriptPubKey in the outputs of the coinbase transaction.
Assuming that, what you are describing is popularly known in cryptography as a pre-image attack. If you can find a 'collision' with fixed existing message (in your example that is the original coinbase transaction) in such a way that they both produce identical hashes then you have a pre-image attack. If you change the scriptPubKey in the output of coinbase transaction, assuming no 'collision' happens, it will change the txid and hence change the merkleroot, which would in turn change the block header hash.
SHA-256 algorithm outputs 32 bytes, which means there are a total of 2^256 (or 10^77 combination). SHA256 is a one way mathematical function, as a result  you will have to brute force your way to actually produce hash similar to the one before. Running that kind of brute force is not only computationally impossible, but also impossible due to the energy that it consumes (check this).

Finding a "collision" with a fixed existing message is called a preimage attack, and it is much harder than a collision attack. It's only called collision when the attacker just has to find two inputs that hash to the same thing, without constraints on what that hash is.

@PieterWuille Thanks for clarifying, I'll incorporate in my answer.


text:
BCH to paxful pls help
If can anyone tell me how I can recover my BCH I mistakenly sent to paxful wallet address though I'm still seeing unspent on my BCH wallet I'm so confused pls help

Could you please tell me more details? "mistakenly sent to paxful wallet address" is that paxful address yours?  - then your BTC is still not lost - It's still in your wallet, do you mean this?

Yes it's my paxful wallet but paxful support said they don't refund or covert any BCH sent to any paxful wallet... this is my paxful wallet I d. 3MnBe9KoCyh7Wp79ogtmsBDADoL8rjR3Zs

one biggest attribute of cryptocurrencies is irreversible. It's just like you give cash to someone, then unless he gives you back, no 3party can refund it for you. - anyhow refunds or coverts are impossible - But I don't think that's any problem with you, and you're not at any loss - since you've sent your bitcoin to your own paxful wallet. Just log into your paxful account, you'll see the money.? Right? If you want to transfer them back, just transfer them back from your paxful! I've been trading bitcoin in paxful for serveral times, paying USD to get BTC, etc.

I saw 0.52461990 BCH in your paxful wallet you provided. Is that right?

When I check my paxful wallet I didn't see any coins there the balance is still 0.0Usd that is what is showing me today make it day 4 since I have transferred the BCH into my paxful

Pls can I have your number maybe you can help me out more better

Yes I saw 0.52461990 BCH when I track ok blockchain explore but my paxful wallet balance didn't show anything

Instead with a phone number why not try live chat? I am willing to help you. The first reason I consider is that you may have sent BCH to a BTC address, please take a check?

Did you clicked “receive Bitcoin” and sent bitcoin cash to the address? Bitcoin and bitcoin cash are different cryptos.

in my vision i didn’t see bitcoin cash receiving option , I only saw receive bitcoin in paxfu

Yes I used the BTC address to received BCH that was the mistake

I’ve just sent a tiny amount to your paxfu see if you can receive (maybe transaction will take some time) but if you received my BTC then it’s solely because you sent BCH to BTC address

Oh yes I received it

Definitely the BCH is gone

I am sorry that this happened to you :(  you’re taught a really expensive lesson for that.. Further when you deal with crypto make sure to check with full caution especially the Currency TyPE when sending any money because the send is irreversible :(.

Who's now holding the coins is it paxful or Bitcoin.com because i transferred the BCH from my bitcoin.com bch wallet

Thanks so much next time I will be more careful


text:
How to convert script hash to base58 address?
For example :
take a look at this  37d1d453311ea5682cdb31468826178db15fa731722a5dbb09525ea901f1c41c scripthash.
I need help converting it to base58 address.
Thank you.

Take your choice using bitcoin explorer (bx):
echo 37d1d453311ea5682cdb31468826178db15fa731722a5dbb09525ea901f1c41c | bx ec-to-public | bx sha256 | bx ripemd160 | bx base58check-encode -v 5
32BcK7C6FBCzzyB617gwTQuaLdbQufuAcc
% echo 37d1d453311ea5682cdb31468826178db15fa731722a5dbb09525ea901f1c41c | bx ec-to-public | bx bitcoin160 | bx base58check-encode -v 5
32BcK7C6FBCzzyB617gwTQuaLdbQufuAcc
% echo 37d1d453311ea5682cdb31468826178db15fa731722a5dbb09525ea901f1c41c | bx ec-to-public | bx ec-to-address -v 5
32BcK7C6FBCzzyB617gwTQuaLdbQufuAcc

Hello Skaht, the expected result looks like a multisig address but that script belongs to non multisig address. Thanks.

Bitcoin P2SH and BIP 49 P2WPKH-nested-in-P2SH addresses both start with the number 3. Take a look at https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L132 to see why the version is set to 5.  Also look at column 5 of this Table.

To provide more context, it would not hurt to share the original script that was encoded and hashed to 37d1d453311ea5682cdb31468826178db15fa731722a5dbb09525ea901f1c41c.  I'm not 100% certain I properly answered your question.

The answer might be simpler:
% echo 37d1d453311ea5682cdb31468826178db15fa731722a5dbb09525ea901f1c41c | bx bitcoin160 | bx address-encode -v 5
3GRerFiaihoo7mwMBix6Xojtff46HBNtnB

Or: % echo 37d1d453311ea5682cdb31468826178db15fa731722a5dbb09525ea901f1c41c | bx ripemd160 | bx address-encode -v 5 This is most likely the answer without knowing more.
3JSbrUCtDBzWGVWjZ5rFDxBh2Kzhszor9U

Hello Skaht, thank you very much for understanding the issue. Heres an example: scripthash: 47e414636b2d5675ce1ef1459775792d9bee689f0b97b0a43f92a69cc3db4845  address : 19pTZUvpBt5EXPJSVjp56YA6AzUazNFGdi , i'm still trying to get that from your steps. :D

What is the script before it gets hashed?


text:
How to extract addresses from input in raw transaction
I need help to get input addresses from "vin" in offline mode.
I don't know how https://live.blockcypher.com/btc/decodetx/ is doing it.
Example raw transaction:
txn id : b0dd3d915a568c9d48e37b3fbfca58ae3276a5dba176fdf30f18af794310cc02
raw txn :
01000000000102b4370d52c1e1dc67b0250ef7bd5265146d4def0beacfefd99660a86baf97faf000000000232200202dc520822e73d4262000d3b456b16df1d07b0ba9d238f3063379d65840fd38e7feffffff92e7b08c7a67a7a783b52d83e7b051a4812e496fac181aaadcaa69a3b526ca500100000023220020357bc74e1f825c4628519a3322f2aa9b2c5bd55b523149d4e1f7fe2f273ce7d6feffffff02a08601000000000017a914113e1767186f0280174123ad0c22e8929f994c1c87f4fd01000000000017a9148160a47aeafb68288f0df8551d5d9dddd22a643387040047304402202575f8326e510b8213d70a8213ab1a36cd2984b16673ef3579960d0089ad13de022020ec4e78129c084103909acec0319f7d326fff699de142ab354be9570d68dc170147304402202bc22860e84e0311bbc175940c2b3b5435255dc7ca3fb0d12e5f03df80237b880220536eceee1aace094825f0fd884d057e395102f4e4627188fe6dd5648cdc7a457014752210274ecb4e28e6b7be314d844bb7561b605d537106f7f5c3eaba31a8cd3dd0097c8210343ed9c58350b4013b3c9a02da2148d59e8109a90f0fa0ea77d31b8570990d46352ae0400473044022042d6861f81b617cfbe51e7efefb59dd990d4c0057b43645d2f006db93b38c59e02204595b7f822546082b0ee1efb6966c97b2d8174c96b670a10bc9d78d3cf7ba99101483045022100bb3a612fe17f261a0c5e9db20a087362c10556571ef54866ab29cfdb94975236022037bebec4c0459bba21656cb36b331313c2dd6008ed7a2479efca659c7fc97c9d0147522103838edaeadeed0e9f660e725970787b69ad4926afe1f19626d5476d356cb3b4722103c37f3b264f674c6c2e273e06da7fb7fe720be6828f251c71d0cb10e349d0222d52ae2f3f0800

Expected "input addresses":
38Rgbmaxitveg1S8UNbWjwV5UMoBt3PtnG
3Bx1UMJieKFngvBA8m2VqE6s4wXYKWzhkP
Thank you.

The bitcoin-exlporer (bx) tool applied below does not yet support the segwit-encoded portion of analyzing a raw hexadecimal transaction (TX).  However, the bx commands below can analyze the results offline given the supplied raw TX provided above, and two pertinent TXs associated with the two input UTXOs.
% echo 01000000000102b4370d52c1e1dc67b0250ef7bd5265146d4def0beacfefd99660a86baf97faf000000000232200202dc520822e73d4262000d3b456b16df1d07b0ba9d238f3063379d65840fd38e7feffffff92e7b08c7a67a7a783b52d83e7b051a4812e496fac181aaadcaa69a3b526ca500100000023220020357bc74e1f825c4628519a3322f2aa9b2c5bd55b523149d4e1f7fe2f273ce7d6feffffff02a08601000000000017a914113e1767186f0280174123ad0c22e8929f994c1c87f4fd01000000000017a9148160a47aeafb68288f0df8551d5d9dddd22a643387040047304402202575f8326e510b8213d70a8213ab1a36cd2984b16673ef3579960d0089ad13de022020ec4e78129c084103909acec0319f7d326fff699de142ab354be9570d68dc170147304402202bc22860e84e0311bbc175940c2b3b5435255dc7ca3fb0d12e5f03df80237b880220536eceee1aace094825f0fd884d057e395102f4e4627188fe6dd5648cdc7a457014752210274ecb4e28e6b7be314d844bb7561b605d537106f7f5c3eaba31a8cd3dd0097c8210343ed9c58350b4013b3c9a02da2148d59e8109a90f0fa0ea77d31b8570990d46352ae0400473044022042d6861f81b617cfbe51e7efefb59dd990d4c0057b43645d2f006db93b38c59e02204595b7f822546082b0ee1efb6966c97b2d8174c96b670a10bc9d78d3cf7ba99101483045022100bb3a612fe17f261a0c5e9db20a087362c10556571ef54866ab29cfdb94975236022037bebec4c0459bba21656cb36b331313c2dd6008ed7a2479efca659c7fc97c9d0147522103838edaeadeed0e9f660e725970787b69ad4926afe1f19626d5476d356cb3b4722103c37f3b264f674c6c2e273e06da7fb7fe720be6828f251c71d0cb10e349d0222d52ae2f3f0800 | bx tx-decode
{
    hash b0dd3d915a568c9d48e37b3fbfca58ae3276a5dba176fdf30f18af794310cc02
    inputs
    {
        input
        {
            address_hash 49e282ad0605c1cb63ff45fc34b14357859e8d08
            previous_output
            {
                hash f0fa97af6ba86096d9efcfea0bef4d6d146552bdf70e25b067dce1c1520d37b4
                index 0
            }
            script [00202dc520822e73d4262000d3b456b16df1d07b0ba9d238f3063379d65840fd38e7]
            sequence 4294967294
            witness "[] [304402202575f8326e510b8213d70a8213ab1a36cd2984b16673ef3579960d0089ad13de022020ec4e78129c084103909acec0319f7d326fff699de142ab354be9570d68dc1701] [304402202bc22860e84e0311bbc175940c2b3b5435255dc7ca3fb0d12e5f03df80237b880220536eceee1aace094825f0fd884d057e395102f4e4627188fe6dd5648cdc7a45701] [52210274ecb4e28e6b7be314d844bb7561b605d537106f7f5c3eaba31a8cd3dd0097c8210343ed9c58350b4013b3c9a02da2148d59e8109a90f0fa0ea77d31b8570990d46352ae]"
        }
        input
        {
            address_hash 70871ecb261f3df9a9d325b33ef6d8acb5074258
            previous_output
            {
                hash 50ca26b5a369aadcaa1a18ac6f492e81a451b0e7832db583a7a7677a8cb0e792
                index 1
            }
            script [0020357bc74e1f825c4628519a3322f2aa9b2c5bd55b523149d4e1f7fe2f273ce7d6]
            sequence 4294967294
            witness "[] [3044022042d6861f81b617cfbe51e7efefb59dd990d4c0057b43645d2f006db93b38c59e02204595b7f822546082b0ee1efb6966c97b2d8174c96b670a10bc9d78d3cf7ba99101] [3045022100bb3a612fe17f261a0c5e9db20a087362c10556571ef54866ab29cfdb94975236022037bebec4c0459bba21656cb36b331313c2dd6008ed7a2479efca659c7fc97c9d01] [522103838edaeadeed0e9f660e725970787b69ad4926afe1f19626d5476d356cb3b4722103c37f3b264f674c6c2e273e06da7fb7fe720be6828f251c71d0cb10e349d0222d52ae]"
        }
    }
    lock_time 540463
    outputs
    {
        output
        {
            address_hash 113e1767186f0280174123ad0c22e8929f994c1c
            script "hash160 [113e1767186f0280174123ad0c22e8929f994c1c] equal"
            value 100000
        }
        output
        {
            address_hash 8160a47aeafb68288f0df8551d5d9dddd22a6433
            script "hash160 [8160a47aeafb68288f0df8551d5d9dddd22a6433] equal"
            value 130548
        }
    }
    version 1
}

Then one needs to examine the encumbrance scripts associated with the following to affirm determine if they P2PKH or P2SH address types:
1) transaction ID f0fa97af6ba86096d9efcfea0bef4d6d146552bdf70e25b067dce1c1520d37b4 and index 0
2) transaction ID 50ca26b5a369aadcaa1a18ac6f492e81a451b0e7832db583a7a7677a8cb0e792 and index 1
% bx fetch-tx -c ~/bitcoin-explorer/bx-mainnet-remote.cfg f0fa97af6ba86096d9efcfea0bef4d6d146552bdf70e25b067dce1c1520d37b4
transaction
{
    hash f0fa97af6ba86096d9efcfea0bef4d6d146552bdf70e25b067dce1c1520d37b4
    inputs
    {
        input
        {
            address_hash 40ef0e3af404842b44912f6a65ca4adfb8f93a1a
            previous_output
            {
                hash f0eda490f5e8c3096b74b66524ff9c7b6fa1b9d4280e8372476af1d202a8b360
                index 1
            }
            script [0020de730ce4f827ac7c63ea8c9a47419875eacaf167f9391eb5d30817a181aca8d3]
            sequence 4294967294
        }
    }
    lock_time 539071
    outputs
    {
        output
        {
            address_hash 49e282ad0605c1cb63ff45fc34b14357859e8d08
            script "hash160 [49e282ad0605c1cb63ff45fc34b14357859e8d08] equal"
            value 18640
        }
        output
        {
            address_hash 113e1767186f0280174123ad0c22e8929f994c1c
            script "hash160 [113e1767186f0280174123ad0c22e8929f994c1c] equal"
            value 30000
        }
    }
    version 1
}

% bx fetch-tx -c ~/bitcoin-explorer/bx-mainnet-remote.cfg 50ca26b5a369aadcaa1a18ac6f492e81a451b0e7832db583a7a7677a8cb0e792
transaction
{
    hash 50ca26b5a369aadcaa1a18ac6f492e81a451b0e7832db583a7a7677a8cb0e792
    inputs
    {
        input
        {
            address_hash 62979379f3e415ef86d5dcecf9c93a9930333ce6
            previous_output
            {
                hash dbc6bff3ef644974667316072c6e28e5c58c18e62f8282ff624fde7d179639b2
                index 3
            }
            script [0020a9250a9c4e56b3d822717c37c713d30618f2af8f5932ded48fd6c8b3f0b5ff05]
            sequence 4294967295
        }
    }
    lock_time 0
    outputs
    {
        output
        {
            address_hash 877f4856923528187ab9708660fa201e4282ef8f
            script "dup hash160 [877f4856923528187ab9708660fa201e4282ef8f] equalverify checksig"
            value 10000
        }
        output
        {
            address_hash 70871ecb261f3df9a9d325b33ef6d8acb5074258
            script "hash160 [70871ecb261f3df9a9d325b33ef6d8acb5074258] equal"
            value 212250
        }
    }
    version 1
}

Upon examination of the two different encumbrance scripts are of P2SH form:
1) script "hash160 [49e282ad0605c1cb63ff45fc34b14357859e8d08] equal"
2) script "hash160 [70871ecb261f3df9a9d325b33ef6d8acb5074258] equal"
the two address_hash data values are operated on as follows:
% echo 49e282ad0605c1cb63ff45fc34b14357859e8d08 | bx base58check-encode -v 5
38Rgbmaxitveg1S8UNbWjwV5UMoBt3PtnG
% echo 70871ecb261f3df9a9d325b33ef6d8acb5074258 | bx base58check-encode -v 5
3Bx1UMJieKFngvBA8m2VqE6s4wXYKWzhkP
If a particular addresses were of P2PKH form, replace the -v 5 with -v 0 in the operations above.
BTW - It looks like the two redeemed P2SH inputs are really both 2 of 2 multisig addresses based upon the examination of the two DER-encoded signatures and knowing the last data elements are script-encoded.
% echo 52210274ecb4e28e6b7be314d844bb7561b605d537106f7f5c3eaba31a8cd3dd0097c8210343ed9c58350b4013b3c9a02da2148d59e8109a90f0fa0ea77d31b8570990d46352ae | bx script-decode
2 [0274ecb4e28e6b7be314d844bb7561b605d537106f7f5c3eaba31a8cd3dd0097c8] [0343ed9c58350b4013b3c9a02da2148d59e8109a90f0fa0ea77d31b8570990d463] 2 checkmultisig

% echo 522103838edaeadeed0e9f660e725970787b69ad4926afe1f19626d5476d356cb3b4722103c37f3b264f674c6c2e273e06da7fb7fe720be6828f251c71d0cb10e349d0222d52ae | bx script-decode
2 [03838edaeadeed0e9f660e725970787b69ad4926afe1f19626d5476d356cb3b472] [03c37f3b264f674c6c2e273e06da7fb7fe720be6828f251c71d0cb10e349d0222d] 2 checkmultisig

Bitcoin Explorer kicks butt!!

do you know what you are a life saviour. Thanks.

You do not need access to the previous transactions to find the input addresses. See my answer below for how to do this.

@ThorkilVærge -  You are right since the redeem scripts are both for multisig addresses.  Two or more signatures for a redemption requires the two inputs to be P2SH addresses.  Otherwise, if not multisig there is ambiguity whether the inputs are P2PKH or P2SH where version=0 or version=5 respectively to compute the input addresses.

@skaht: I am not familiar with a transaction from where you cannot derive a list of input addresses. Can you give me a more concrete, specific example?

@ThorkilVaerge -  I'm not saying input addresses can't be derived, however, a degree of analysis indirection is needed. The issue is without knowing the UTXO locking scripts used fund the TX being analyzed there is typically ambiguity as to how to synthesize the addresses for those inputs.  This is because address version numbers ( 0 or 5 ) are missing in the primary TX's inputs.  Hence, the reason for analyzing the two other secondary TXs, which are the UTXO sources for funding the TX being analyzed.

Addresses are associated with output scripts (scriptPubKeys). This information is not encoded in the transaction, the only information in the input is the txid and index of the output that is being redeemed. In order to do this offline you need to have the previous transaction.
The way they do it for inputs is they look up the previous output that the input is spending in their internal database and get the script from there.
In your example, this is the first input:
    {
        "addresses": [
            "38Rgbmaxitveg1S8UNbWjwV5UMoBt3PtnG"
        ],
        "age": 539082,
        "output_index": 0,
        "output_value": 18640,
        "prev_hash": "f0fa97af6ba86096d9efcfea0bef4d6d146552bdf70e25b067dce1c1520d37b4",
        "script": "2200202dc520822e73d4262000d3b456b16df1d07b0ba9d238f3063379d65840fd38e7",

        "script_type": "pay-to-script-hash",
        "sequence": 4294967294,
        "witness": [
            "",
            "304402202575f8326e510b8213d70a8213ab1a36cd2984b16673ef3579960d0089ad13de022020ec4e78129c084103909acec0319f7d326fff699de142ab354be9570d68dc1701",

            "304402202bc22860e84e0311bbc175940c2b3b5435255dc7ca3fb0d12e5f03df80237b880220536eceee1aace094825f0fd884d057e395102f4e4627188fe6dd5648cdc7a45701",

            "52210274ecb4e28e6b7be314d844bb7561b605d537106f7f5c3eaba31a8cd3dd0097c8210343ed9c58350b4013b3c9a02da2148d59e8109a90f0fa0ea77d31b8570990d46352ae"
        ]
    },

So you have to have the full tx with txid f0fa97af6ba86096d9efcfea0bef4d6d146552bdf70e25b067dce1c1520d37b4 in which case you inspect the first output (index 0) and from this output's script OP_HASH160 49e282ad0605c1cb63ff45fc34b14357859e8d08 OP_EQUAL you can derive the address 38Rgbmaxitveg1S8UNbWjwV5UMoBt3PtnG

thank you for your help. :D  i 'm unable to upvote since i'm new to this platform. thanks again.

You do not need access to the previous transactions to find the input addresses. See my answer below for how to do this.

This can actually also be achieved without access to the previous transactions.
The transaction b0dd3d915a568c9d48e37b3fbfca58ae3276a5dba176fdf30f18af794310cc02 is a segwit transaction. And it contains multiple signatures, so it is a multisig transaction. Formally this is called a P2SH-P2WSH transaction.
There are two transaction inputs being spent in this transaction. Each transaction input has a witness field. Each witness field contains four elements, a dummy field (because Bitcoin has some legacy issues), two signature fields, and one witness script which contains the public keys which are used to check if the provided signatures are valid.
These two last elements of the witness fields (the witness scripts) look like this:
52
21
  0274ecb4e28e6b7be314d844bb7561b605d537106f7f5c3eaba31a8cd3dd0097c8
21
  0343ed9c58350b4013b3c9a02da2148d59e8109a90f0fa0ea77d31b8570990d463
52
ae

and
52
21
  03838edaeadeed0e9f660e725970787b69ad4926afe1f19626d5476d356cb3b472
21
  03c37f3b264f674c6c2e273e06da7fb7fe720be6828f251c71d0cb10e349d0222d
52
ae

Each witness script has an associated address. These are the addresses we are looking for, the input addresses. To derive this address, we follow the recipe described on Bitcoin Core's Segregated Witness Wallet Development Guide. Basically, it says
redeemScript = "0020" + SHA256(witnessScript);
address = base58Enc("05" + RipeMD160(Sha256(redeemScript)));

Which yields the two input addresses, 38Rgbmaxitveg1S8UNbWjwV5UMoBt3PtnG and 3Bx1UMJieKFngvBA8m2VqE6s4wXYKWzhkP.
You should note that this derivation was made much more complicated by the fact that it was a multisig and segwit transaction. In a more regular transaction, like a4453c9e224a0927f2909e49e3a97b31b5aa74a42d99de8cfcdaf293cb2ecbb7 you can simply find the public keys of the address and calculate the addresses corresponding to those public keys:
Base58Enc(00 + RipeMD160(SHA256(0x029774feb36d1af279b42a6414e9a702c5e451397671554792c00e5f14bcbce292))) = 1KuK7vSWJCKcidp6WU1Cj3csxKoeTiYYCs


text:
How anonymous are Bitcoin transactions?
I read some sources that say Bitcoin transactions are anonymous, some that say they are semi-anonymous, and some that say they are not anonymous at all.  In what ways are the transactions anonymous and in what ways are they not anonymous?

Technically the appropriate term is "pseudonymous" - imagine that your bitcoin address is like an email address or an online alias: how hard it is to trace to your actions depend largely on what you do with it.
There is, for example, a bitcoin address in my forum signature that would obviously be VERY traceable back to me. On the other hand if I install the client on a separate system which only connects to the internet through TOR and obtain my bitcoins by mining them from a pool like Eligius (no accounts/email necessary, they only ask for a bitcoin address) then it would be very difficult indeed to trace those funds to me.
And of course there are shades of gray in-between. As I said, think of it as being an email address and then consider how your actions with that bitcoin address can be tied to you. It's difficult but possible to make truly anonymous bitcoin transactions.

Right so if I had a secret TOR bitcoin wallet which mined/acquired and sent them to another bitcoin wallet, which was is not anonymous. Where I got them from/How I acquired them would be anonymous still right?

@StevenTilling, the public blockchain would show the transfers from the 'TOR' wallet to 'public' wallet.

@JamesRattray The blockchain would also show transfers from the pool operator to your mining address in your TOR wallet.  Most pool operators are known or can be determined from their spend patterns.  So it would be clear to any blockchain auditor that you mined those coins.

Correct, the full path of the coins would be visible no matter what you do, the question is how useful that path is in determining your identity. Hence the suggestion of anonymous address-only pools.

It is considered pseudo-anonymous.  With casual usage, it is not very anonymous at all.  Transactions occur between cryptographic addresses and anyone can create any number of these addresses.  However, Bitcoin transactions can be traced back to your IP address.  The history of all transactions can be analyzed for spatial and temporal correlations.  If one address can be linked to a person, then related transactions can be identified.  I would say that bitcoin offers a degree of privacy not offered by other means of online payment, but for a sufficiently motivated entity, it is possible to reconstruct a person's bitcoin transaction activity.  There are steps that one can take to make it more anonymous, but it is certainly not as anonymous as physical cash.  And, you have to know what you're doing to use it in complete anonymity.  I would not advise using bitcoin if you are seeking complete anonymity.

There are ways to acquire and use Bitcoins anonymously. This article for example states:

install Tor and use it for all subsequent browsing steps
visit Instawallet to anonymously create a Bitcoin wallet
List $100 cash for sale on Silk Road Market
Mail the cash through any US Postal Service drop box
When the Silk Road bitcoin payment arrives, withdraw it to your Instawallet

You can now spend Bitcoins from this Instawallet with complete anonymity.  Instawallet doesn't know who you are (because of Tor).  Silk Road doesn't know who you are (because of Tor).  The USPS doesn't know who you are (anonymous drop boxes).  The person who sold you Bitcoins doesn't know who you are (anonymous US mail).

You get an upvote because I was just thinking someone should mention that article here.  But you really need some kind of summary in the answer in order to make it link-death-proof.  Even a representative blockquote would be great.

Kudos to @eMansipater for suggesting summary in the answer, the link is indeed dead!

Two researchers did a study on bitcoin at the Clique Research Cluster at University College Dublin. Their results say that bitcoin is not inherently anonymous.
http://anonymity-in-bitcoin.blogspot.com/2011/07/bitcoin-is-not-anonymous.html
http://arxiv.org/abs/1107.4524

They are not anonymous at all. Bitcoin is just a distributed accounting scheme - every client stores all transactions, so no secret transactions are possible.
However, if there's no way to tie a specific address to you (you bought your bitcoins with cash) and no way to tie the receiver of your transaction to you (you simply donated to the EFF) then it's pseudonymous. Everybody knows that a transaction to the EFF has taken place from some address, but nobody knows it's you.

... unless somebody like Dan Kaminsky is monitoring the bitcoin network and sees which IP address the transaction starts at.  They they know either your IP address or the TOR exit node that you're behind.

They are anonymous in that we don't know the name of the physical holder of a wallet. However, the interactions in terms of wallet ids are completely public. See these questions for more details:
https://cstheory.stackexchange.com/q/7145/1037
https://crypto.stackexchange.com/q/508/617

One easy way to anonymize Bitcoins is to use a mixer based on Chaumian blinding (such as Open-Transactions.) This enables fully-untraceable transactions. Then, connect over an anonymous network such as I2P for full-anonymity.
Here is a diagram of the concept in action:  http://opentransact.nevermeta.com/OT-Anon-CashOnly.jpg

One more step to make your identity more anonymous would be to use a second hand cash bought old laptop that you only use for anonymous bitcoin transactions. Adding to it, go use public hot-spots or use the war driving method to locate unsecured networks. That would make it much harder to track you.

Welcome to Bitcoin SE!  You don't have enough rep to comment yet, but this is certainly more of a comment than an answer.  If you take the question "How anonymous are Bitcoin transactions" and apply your answer, it doesn't make a lot of sense.  It only works in context of other answers, which isn't really how SE is supposed to work.  Answer or ask a question or two, and you'll likely gain the rep to comment.


text:
Multibit HD 0.5.1 with Unconfirmed transactions for months now
Multibit HD 0.5.1
This is my wallet's transaction list and amount:

I am having the following issues:

I don't understand why do I have 0.07btc ~ 224.59$ unconfirmed for a month by now.
I have three transactions there that are still sending/receiving... What the hell?

These are the transactions in the blockchain:

https://blockchain.info/tx-index/9ca971dfab49b924bde33664505c7f3f19e3480171cc2e4c04b93a07e8ec4305
https://blockchain.info/tx-index/9e3f1b829b13731701a8aa71f97675c4c60881c622712f7a664f0cff63a75044
https://blockchain.info/tx-index/d22eefe0f139a825e725c403f029c907cd6975b8706d4f1e4b47b85025ccf797

I have tried the following solutions that failed:

Wallet repair multiple times
Wallet removal and reinstallation, from the seed words
Wallet recovery on another computer

What I didn't try:

Double spend (how do I do it in Multibit HD?)
Remove transaction from mempool or wtvr (how do I do it in Multibit HD?)

I got help from BTC Portugal (Portuguese slack channel, thank you @riclas, @shutaru and @malmen) and was able to solve this issue.
This is what I did (ETA: 10 minutes):

Close all running Multibit HD wallets you have. I really mean all, no computer in this planet should be running your wallet at this moment.
On a "new", clean computer, or in a Virtual Machine, install Multibit HD, a fresh installation.
When the new Multibit HD installation asks you, instead of creating a new wallet, chose the restore wallet option.
Insert your seed words and date.
Voila! It will now take some minutes to synchronize your wallet with the chain, but it should load only the confirmed transactions.
Go to the other computers, uninstall Multibit HD completely.
Make sure you delete everything in folders such as C:\Users\<user name here>\AppData\Roaming\MultiBitHD (or /Users/<user name here>/Library/Application Support/MultiBitHD/ for OSX) or simply search for MultiBitHD files on your disk and delete them all.
Install the wallet once again in those computers and recover just like you did in steps 3 and 4.
Profit!

If you are really in a rush, just perform steps 6, 7 and 8.
Don't do any of this if you don't know your words and date for recovery!
UPDATE: This doesn't actually solve the issue. In fact the wallet thinks that all your transactions are confirmed, until you try to spend the money. Then you'll get a Low spendable balance detected. some of your bitcoins are tied up with ongoing transactions. error.
The thing is that the wallet refuses (or the network refuses) to double spend that money, because they see the unconfirmed requests already broadcasted.
For what I've read these requests will never timeout from the mempool. This is a known issue of BTC, and is making this coin hard to scale to the rising numbers of transactions (as of now only 3 transactions are processed per minute, which is ridiculous).
The only way I can perceive now to "solve" these unconfirmed transactions, is to use accelerators.
These accelerators are basically mining pools (a huge team of miners), where you ask them "pretty please" to consider adding your transaction to their next created block. This will confirm your transactions. However, this solution is at very least, not accessible.
You can try asking it for free here: https://www.viabtc.com/tools/txaccelerator/
After I get my money back, I'll consider not using Multibit HD anymore, since issues like these made me lose some money so far...

I have a same problem (a pending send request that I want to remove it), and I follow your instruction, first it works and the second computer shows only my confirmed transactions, but when I try to spend coins (to another address), it fails with a double spending error and I cant broadcast new transaction. after that the pending transaction appears!

Yes you're right... Actually I just tried that and got the same issue. The problem is that the wallet already broadcasted the transactions and is unable to double spend at will (I don't know why multibit creators decided things this way). The only way I find as an alternative to solve this is asking a mining pool to put our transactions in their next blocks. ViaBTC has an option for that (which is not working at the moment, but I will keep trying this week). link: https://www.viabtc.com/tools/txaccelerator/

there are some posts that say double spending is possible e.g. https://bitcoin.stackexchange.com/questions/41399/any-way-to-delete-unconfirmed-transaction , but they said inputs must be the same. I don't know that means same amount or address or both, in my case I tried to send different amount to another address.

what did you do? did you send the same amount?

That might work, but it seems risky to upload your private keys online. I am going to read this book (https://github.com/bitcoinbook/bitcoinbook) and the bitcoin dev wiki to make sure that I don't mess things up.

I have the same issue, but when asking a tx accelerator (I used https://pushtx.btc.com since viabtc seems to be not working), I get the response that the transactions have already been confirmed. This is also what I can see on blockchain.info. My transactions are more than a year old. Nonetheless my entire balance in Multibit HD is unconfirmed, and all transactions appear as either "sending" or "receiving".


text:
how to get Received Time of Transaction in validation.cpp bitcoin core
for research purpose i needed Transaction hash,size, fee and received time. i have already managed to get hash, size and fee but unable to get time. what to do?

Transactions do not have a time. There is a time that your node received the transaction, but that is not necessarily the time that the transaction was originally broadcast.
To get the time of a transaction being accepted to your node's mempool, you can add debug=mempool to your bitcoin.conf file and then restart Core. Then grep through the debug.log file for any lines of the form "AcceptToMemoryPool: peer=%d: accepted %s (poolsz %u txn, %u kB). Since all lines have a time logged with them, you can get the time that a transaction was accepted to your node's mempool. However this will not include any transactions that are first received in a block.

If transactions do not have a time. then how blockchain.info shows Received Time. what if i use UNIX time for transactions that are being accepted by my node????

blockchain.info displays the time that their node received the transaction. That is not necessarily the time that the transaction was broadcast to the network. The time that they display also changes; when a transaction is confirmed, they set the time to the timestamp of the block it was included in.


text:
Securely encrypting a cold storage wallet
I'm going to buy bitcoin to exchange BRL to CAD currency, as it's gonna be a great amount I'm concerned about the security of my wallet. I don't want to use a physical backup like paper or device because I don't trust myself to not lose or burn anything.
By my study so far the best option is to generate a wallet in an offline and secure device and to encrypt the private key before to do a backup.
Does someone suggest me an App or strategy to do this?
Portuguese version
Eu tenho uma dúvida! Pretendo comprar bitcoins como forma de transferência para o exterior, como é uma grande quantidade estou preocupado com a segurança da minha wallet. Não pretendo fazer um backup em papel ou num dispositivo físico pq não confio muito em mim mesmo pra não perder ou queimar alguma coisa.
Pelo que estudei até então a melhor opção é gerar uma carteira num dispositivo seguro e offline e criptografar a chave privada antes de fazer um backup. Alguém me sugere algum App, ou bons jeitos de fazer isso?

Even if you seem worried about losing your coins, the safest way to store bitcoins is probably to acquire a hardware wallet. To mitigate the risk, you should store several copies of your wallet seed words in different locations. This is a form of backup that allows you to regenerate your wallet on another hardware wallet if you lose the first. It is highly recommended that you store the backups in a way that they are not easily accessible to other people that may use the backup to steal your coins.
If you're going to invest significantly more than $1,000, the one-time cost of acquiring a hardware wallet at ~$100 seems a reasonable investment to me.

Setting a password in your electrum wallet will encrypt it. However note that hackers getting to your offline backups is far less likely than you forgetting the password to your wallet and losing your coins that way. this is why it is recommended that you write down the seed words on paper during the wallet creation process.

you can use cold storage provided by many wallets, Methods of cold storage include keeping bitcoins:
1. On a USB drive or other data storage medium in a safe place (e.g. safe deposit box, safe)
2. On a paper wallet. On a bearer item such as a physical bitcoin.
Some Wallets like Armory and Xapo


text:
Bitmain S9 BMMINER does not respond to Stratum set_difficulty command
We use a modified version of this library to implement the first SHA256 multi+merge mining pool.
It works just fine with the S7 which has CGMiner 4.8 ("cgminer/4.8.0").
However, the S9 with BMMINER 2 ("bmminer/2.0.0") is either unable to connect, either connects, and remains on the initial difficulty of shares, and thus all work gets rejected.
We suspect that the BMMINER does not support the set_difficulty method.
The question is, how can this be solved? can we use s7 firmware for s9, or find a CGMiner compatible with S9 anywhere?