Bitcoin transaction has been unconfirmed for over 24 hours... What should I do?

It will be dropt from the mempool if it stays unconfirmed for a long time. If the fee is low, it takes more time to get confirmed. And just now the Bitcoin network is getting spamed by Bcashers. I would wait until the spam is over, and then put a fee in acordance to the time you are willig to wait until the confirmation.


Is there a fixed order for all transactions in the block chain?

Yes, you are correct. There is a fixed order, as ensured by the merkle root and the proof of work. Both the blocks and the transactions within each block are strictly ordered.

This order is actually necessary for validation of the transactions within. For example, you could have a transaction Y that depends on the output of transaction X in the same block. If Y came before X in the list of transactions in the block, then the block would be an invalid block.

With that said, although the order of transactions within a particular chain snapshot cannot change, the chain itself can change from time time. This happens when there is a fork in the network. Look at this image below:

Let's say you knew about block A and you thought it was the tip of the best chain. Then all of the sudden the other chain comes out, and block A is replaced by block B. The order of transactions in A might not be the same as the order in B.

It may also interest you to know that to enable Gavin's O(1) block propagation proposal, there is a canonical ordering for transactions in a block.


The file you'll need to back up is wallet.dat which can be found in %appdata%\roaming\bitcoin on Windows or ~/.bitcoin on Linux/MacOSX.

By default a pool of 100 pre-generated, unused addresses is maintained in your wallet, and so it is safe to use 100 new addresses without backing up your wallet.  New addresses are used most times you send bitcoins and used as a "change" address, and also when you request a new receiving address. As you use new addresses, more are generated and added to the end of the pool.  Once you've used 100 since backing up, you'll start using addresses which aren't in the backup. To this end, the frequency of your backups is largely determined by the frequency of your transactions and this is largely a personal decision. If you absolutely cannot manage a backup every 100 transactions (why?) or are comfortable with a more aggressive schedule (and smaller wallet) there is a -keypool option to change the number of addresses pre-generated.

Best practices for storing wallet backups almost always include encryption. Most folks in the community swear by tools like TrueCrypt for such purposes, though there are countless alternatives. Storage of the backup depends largely on how long-term the storage is intended to be and the security levels necessary. For small amounts of coin and short-term backups, online services like DropBox or Mozy might be adequate, assuming the wallet is encrypted before uploading. For longer-term or higher security backup, coins might be sent to an offline wallet stored in paper form at a physically secured location or any variation between.

Regardless of your wallet backup methodology and schedule, it is ALWAYS a good idea to take some basic measures to secure your wallet.


My question is: Say I know that the message b 'added' with the number a gets mapped to my desired output. Why is it not possible for me, given a different block (b2) to find a corresponding number (a2), such that the hash of the result will map to the same number c?

It's not possible because there are 2^256 (approximately 1 followed by 77 zeroes) possible hash results. You would have to try an awful lot of possible values for a2 to find one that happened to produce precisely the same hash output. The stars would burn out first.

What is the operation that combines the block b with the number a that makes this impossible? Is it simple appending?

No, it is not simple appending. That would produce very, very long numbers. It's an operation that has three important characteristics:

It produces an output smaller than its input. This makes it irreversible because information is lost. You cannot reverse the hashing operation just as you cannot reverse addition. If I add two numbers and get 10, you cannot tell me which two numbers I added because that information has been lost.

A small change in the input produces large changes in the output. That is, changing a single bit of the input changes roughly half of the bits of the output, and it is not easily predictable which bits that will be. It mixes the input quite thoroughly to produce its output.

The output is long, 256 bits. As a result, brute force trial and error to get particular outputs is not practical.

You can read more on the SHA-2 family of functions (which includes SHA-256) here.


autogen.sh not working on Ubuntu on Windows

This means your file has DOS newlines thus, hidden CR characters at the end.
Thus, set -e becomes set -e$'\r' (using bash-specific syntax to represent the CR character), which isn't a valid option.

To fix this, if you have dos2unix installed, you can run:
    dos2unix autogen.sh


I believe what you are looking for is and address based index for txout. Have a look here https://bitcointalk.org/index.php?topic=1395749.msg14194272#msg14194272

Your basic idea of keeping a map of address -> txout is ok. You might want to rethink about storing in memory. Current bitcoind chainstate is around 1.2G (compressed state).


The only difference is the last part of your question : "Next time how can I check what fee will be set and possibly adjust?" that depends which implementation you have installed.
For example in c-lightning from the docs at https://lightning.readthedocs.io/lightning-fundchannel.7.html we can Learn that you can use the optional feerate argument in the fund channel command:
feerate is an optional feerate used for the opening transaction and as initial feerate for commitment and HTLC transactions. It can be one of the strings urgent (aim for next block), normal (next 4 blocks or so) or slow (next 100 blocks or so) to use lightningd’s internal estimates: normal is the default.

Otherwise, feerate is a number, with an optional suffix: perkw means the number is interpreted as satoshi-per-kilosipa (weight), and perkb means it is interpreted bitcoind-style as satoshi-per-kilobyte. Omitting the suffix is equivalent to perkb.

For lnd the documentation at https://api.lightning.community/#newaddress says
# One can manually set the fee to be used for the funding transaction via either
# the --conf_target or --sat_per_byte arguments. This is optional.

$ lncli openchannel [command options] node-key local-amt push-amt


Can I find the address of my Bitcoin in the debug.log file?

Any addresses will be in the wallet.dat file and can be viewed or extracted without any need to download (synchronise with) the whole blockchain.
You can check the balance of an address by using several different public blockchain explorers and checking the results are consistent.
See also

dumpwallet output documentation & explanation?
What do the different .dat files contain?


osx - bitcoin-qt v0.8.6 doesn't starts at osx 10.9 non-developer machine

Well, I have a bad Executable file value in Info.plist file located in .app/Contents. I've changed it to Bitcoin-Qt and solved my problem.


Can a block have multiple coinbase transactions? Also is there a limit to the number of signatures a multi-sig transaction has or requires?

A block can only have one coinbase transaction. You could however send the reward+fees of the coinbase transaction to multiple addresses (of any type) just like any other transaction.

  is there a limit to the number of signatures that a multi-sig wallet can require?

https://bitcoin.stackexchange.com/a/28092/87716


Can't understand specific problem of Bitcoin anonymity

I (as attacker) already know the owner of address B, don't I? why I
  need trap site?

You're right, if you sold the bitcoin and sent it to an address, and you know the identity of the person to whom it was sold (from KYC, for example), then you can associate that person that address. Since it is publicly verifiable on the blockchain, you don't need a trap site in order to see when that bitcoin is spent, but if you run a trap site, you can determine what they spent the Bitcoin on.


Why is Bitcoin address encoded in base58?

Why base-58 instead of standard base-64 encoding?

Don't want 0OIl characters that look the same in some fonts and
 could be used to create visually identical looking account numbers.
A string with non-alphanumeric characters is not as easily accepted as an account number.
E-mail usually won't line-break if there's no punctuation to break at.
Double-clicking selects the whole number as one word if it's all alphanumeric.

Features of Base58Check

An arbitrarily sized payload
A  set of 58 alphanumeric symbols consisting of easily distinguished uppercase and lowercase letters (0OIl are not used)
One byte of version/application information. Bitcoin addresses use 0x00 for this byte (future ones may use 0x05).
Four bytes (32 bits) of SHA256-based error checking code. This code can be used to automatically detect and possibly correct typographical errors.
An extra step for preservation of leading zeroes in the data


After the purchase, you've most likely sent the coins to some address. If an address was from BitcoinQT, only thing it needs to do is synchronize, and coins will be in there.

However, you mention that "I have now downloaded bitcoin core" . If you use new BitcoinQT client, and especially on a new device, it has no idea of your previous keys, and it generates new ones.

To conclude, what you need are private keys that correspond to the address you've sent the coins to. Maybe try to import them in another wallet, like Electrum

https://en.bitcoin.it/wiki/Transferring_coins_from_Bitcoin-Qt_to_Electrum


Can you include a signature in a bitcoin payment?

No. This is not possible, although, technically it could be possible by adding n child transaction each formed as a tx out of you original transaction. The child transaction then could each have a OP_RETURN (data only) output. With a OP_RETURN output you can store up to 80 bytes (mind 5286). A DER signature will be around 72 Bytes (71.5 in avg)

... so not much to left besides the signature (~8 bytes per OP_RETURN tx as tx out of the original tx). So maybe use OP_RETURN txout 0 to n-1 for the text/data and n for the signature. Obviously this will increase your transaction fee a little because you need at least 2 additional transactions.

Conclusion:
Not possible unless your are happy to experiment with forging your own custom transactions.


Is it possible to get rid of mining pools and therefore get a truly decentralized bitcoin?

There's a group of us working on a new iteration of p2pool based on braids (a DAG-chain) and mining into payment (Lightning) channels.  Like p2pool, each miner would construct his own block, and provide commitments/proof that payouts from the share-chain will be made to the appropriate Lightning channels (probably using "channel factories").  Braids solve incentive problems due to latency, and payment channels allow for small payments to a large number of miners without having those payouts compete for block space. p2pool is all but dead for a number of unfortunate reasons...among them is that it actually punishes latency more harshly than the underlying blockchain, and a widespread (incorrect) perception that people were making less money on p2pool.

To answer your question, yes it's most definitely possible to get rid of centralized mining pools, but there's lots of work to be done.  Such a pool could in principle execute the selfish mining strategy for pool members if it had enough hashpower (without reducing the security of the chain).  This would cause centralized pools to be less profitable than the decentralized pool, and economically encourage everyone to join the decentralized pool.

There's also a concept of pooled-solo mining which as far as I know has never been implemented, though the idea is from 2013.

Join us on irc.freenode.net in the channel #braidpool if you're interested in working on this.


How can I generate thousands of receiving addresses from a Bitcoin wallet?

Yes, once you have an HD wallet which is free you can generate an unlimited amount of receiving addresses.

There is lots of services offering HD wallet, hardware, mobile or desktop, electrum is a common one, you just have to download and install it, choose and save your secret phrase then you can begin generating your addresses from your seed: https://electrum.org/#download


Litecoin - Is better use a good CPU or good GPU?

Any CPU can still be used to mine Litecoin, although much less effectively as a modern AMD GPU could.

Mining with a CPU gives you very bad hashrate therefore I wouldn't recommend it.
Even a high end CPU will not give you the hashrate of a mid range GPU.

You should use a graphics card (GPU) to mine litecoins or switch to another coin

Additional Information: If you decide to buy a GPU specifically for mining go for an ATI GPU as its much more effective than its nVidia counterpart.


What % of bitcoin transactions involve addresses of known charitable organizations

Are we at the point where we can identify what percentage of transactions related to certain industries?

Not really! The percentage of addresses that are tied to known organizations is quite small. You also have to consider that many transfers occur without any change in ownership, that is, a person sends bitcoin from one address they control to another.

Consider the mining industry: we know the address of every mining pool that finds blocks, because their address becomes known at the time of the block being minted. Even then, if the coins are transferred to other addresses within the mining organization, we lose clarity on whether these coins are still being held 'within' that industry, and are left to IP analysis, which is far from conclusive in many situations.

If you made a list of known addresses tied to charitable organizations, you could easily come up with a percentage of total transactions associated with those organizations, but it wouldn't be that meaningful of a statistic.


Can people associate one blockchain address with another?

Edit: I have reorganised this post, but it has mostly the same information.

Leakage falls roughly into the following categories:

hacking of the server that stores your data,
transfer patterns
currency patterns
weak random numbers
well known addresses
voluntary disclosure

If there has never been a transaction on a particular address, and the server has no been hacked, there is no information at all about that address. It is not even possible to verify if someone has that account or not. The only thing you can do is verify is if it is a valid address or not. In fact, it is possible to generate an address on a computer that is not on the internet at all.

Once an address RECEIVES bitcoin, it is possible to see (from the blockchain) where (the address, not physical location) the money came from, directly and indirectly and all other transactions relating to those addresses.

Some addresses are well known, so if you get your money from mtgox, or a gambling site, this will show.

If the transaction is a round number it may be possible to determine the currency with a reasonable amount of confidence. For example if I see a transaction for 350.877193mc right now, I would expect that someone paid US$100 for it at the mtgox exchange rate, rather than Canadian $119.

If the account was generated with weak random numbers, it may be possible (though difficult) to determine information about the computer used to generate it (it would be equally possible to determine the private key and steal the funds).

If money gets moved through several accounts very quickly, then I can deduce with pretty high reliability that all the transactions are under the control of the same person, or that there is an automated system involved.

Usually, if money gets sent in one transaction to more than 2 destination accounts, it's pretty likely that all destination accounts (and probably the source account) are controlled by the same person. The same applies (a little less reliably) if ALL the funds of a particular account are sent to the same place.

Regular "purchase" transactions consist of money from one (or possibly 2) accounts going to exactly 2 destinations - one of the destinations being the "change" (which may or may not go to the account that it came from).

if a third party that keeps your account gets hacked or the like.

voluntary disclosure is just you publish the address on your blog or the like.


Bitcoind does not like ECDSA (r, s) pair produced by OpenSSL

A possible reason is that Bitcoin Core expects a low S value. Try changing s with N-s if s > N/2 (N is the curve order).

Source here


Separate wallets sharing the same blockchain?

The most straightforward way to do this with Bitcoin-Qt/bitcoind (at this moment) is to swap the wallet.dat in your bitcoin data directory when the client is not running.

Another method (if you're on a UNIX-ish OS) is to create multiple data directories, then symbolic link (ln -s) the blocks and chainstate directories (not database) inside your datadirs to a common data dir.

mkdir ~/.bitcoin-alt  # new wallet directory
cd ~/.bitcoin-alt
ln -s ~/.bitcoin/blocks ~/.bitcoin/chainstate .
# launch new wallet
bitcoin-qt -datadir=$HOME/.bitcoin-alt

Then you can leave the wallet.dat alone. When launching you can specify a -datadir based on the wallet that you want to use, and it will share the blockchain dirs.

However even with this solution cannot run two bitcoind/bitcoin-qt instances at the same time sharing the block chain! This is currently not possible and will result in corruption if you try.


Can an unconfirmed transaction fall under the radar?

It's not a rare event. It's the nature of the network that not all transactions will reach all nodes. There's also the possibility that some nodes have heard of the transaction but then dropped it from their mempool when they encountered higher fee transactions. They do this to prevent DDoS attacks because memory is a scarce resource and they can only hold so many unconfirmed transactions in their mempool.

Once the transaction confirms everyone will hear about it because it'll have been incorporated in a block. So I wouldn't worry about it.


1) Yes. See this question for more detail.

2) The from address will be an array of address that hold the unspent outputs. If you want to select which outputs are sent and from what address, you can use coin control in the QT wallet, or you can create a raw transaction using createrawtransaction, signrawtransaction, and sendrawtransaction.

3) Fee is computed by the number of bytes your transaction has, not necessarily the amount of the bitcoins you send. If you have a lot of small unspent outputs that go into your transaction it will make the transaction larger and thus a larger fee.

The code for the fee calculations

https://github.com/bitcoin/bitcoin/blob/0.9/src/main.cpp#L53
https://github.com/bitcoin/bitcoin/blob/0.9/src/main.cpp#L811

As of right now it looks like the tx fee per 1,000 bytes is 10,000 satoshis (0.00010000) to create a transaction.


Does Bitcoin no longer fulfill its original purpose?

It does. Original purpose included decentralization and censorship resistance which still exists. I did not start researching about Bitcoin because I found a new way to transact online which is quicker and cheaper than my bank transactions, I started using Bitcoin for different reasons. So I assume things can be different for everyone and one whitepaper cannot include them all. Whitepaper is not a Bible and Bitcoin is not a religion. Bitcoin is a software (protocol for decentralized network in which you don't trust anyone) that is evolving every day.

The Bitcoin whitepaper details "a purely peer-to-peer version of electronic cash", usable for "small casual transactions".

It's still peer to peer if you run full node, it's still electronic. Small casual transactions work better using layer 2 and it's not difficult to understand that things can scale in layers.
There are layers in almost everything we use in computers and this approach is not limited to Bitcoin scaling.
If everything has to be done on-chain and every full node needs to sync it, do you think everyone will be able to run a full node? Did the whitepaper mention that full nodes do not matter and they can be run by few companies in some data centers?
What will you achieve by spending $10 on a coffee with low fees if you can't run your own full node and trust someone else?

Is Bitcoin no longer usable for its original purpose of being a peer-to-peer version of electronic cash?

It is usable and people who have been following Bitcoin development are using layer 2 solutions like Lightning Network.
Recent example: Okex supporting LN for bitcoin deposit/withdrawal


Maximum number of block erupters raspberry pi can handle?

You can probably go up to the maximum of 127 devices if you really wanted (the USB2 limit), remembering though that the Ethernet adaptor is one, and each hub also counts in one. Word on the street also indicates a 49 Eruptor limit, though that's probably just a software limitation.

The transfer speed will never be an issue.

The CPU speed will never be an issue.


How to convert xpub ypub and zpub in Ruby

I'm not sure about ruby, but here's what's happening in practice.
Take any xpub:
xpub6DBfkACRRWo6B9Fo31Ko6P7M92Yb3rdbuXb81Ls7aDCaZsMr1tyvZWHAHz1exRZuTBspafkPTynwoWL5o3i4WiJX4P3SyGQxNpxQLaUnB2c

Decoded to hex:
0488b21e03d0888900800000002a2c58c384bf2904e3b251fe5367e21f8acd97f94481709207c7487b9aec159a022ff4a6a6d463c3aadc35366346580f5f95085912d0910c178d2c3d33774ff700a10d285d

Notice the first 8 characters in the above hex version 0488b21e. What you need to do is replace those 8 characters with the version bytes you want and then re-encode back to base58.
For example, if we want to do zpub04b24746 we'd change the hex string to:
04b2474603d0888900800000002a2c58c384bf2904e3b251fe5367e21f8acd97f94481709207c7487b9aec159a022ff4a6a6d463c3aadc35366346580f5f95085912d0910c178d2c3d33774ff700a10d285d

Re-encode to b58:
zpub6rrCMVYFist3sje2hiu3WZJMUxqUw6cbjkdZa8etLDxLg4zJXDK3odbSLPvpxEskGU7S5cwWPJW3a5ZDESY67Bfio4SJ963vvH5h7jFyqw2

That's it! Regarding the checksum issue see answer: https://bitcoin.stackexchange.com/a/98816/26873
IT IS IMPORTANT to note the account derivation path is already baked into your original extended public key. So let's say you have an ypub that uses BIP49 derivation path, BIP49 will remain even if you change it to xpub, or a zpub. If you're looking to change to BIP84 you need to start from the seed, then derive the path m/84'/0'/0'/0, then change it to a zpub. Simply changing from xpub to ypub or zpub does not change the derivation path.


What exactly is the definition of a Bitcoin node?

A node is a computer that has a copy of the blockchain (or at least a part of it), and broadcasts and receives transactions and blocks from other nodes according to the bitcoin protocol.

The blockchain is more than 100GB, so most people use a lightweight client that connects to a service that connects to a node on the network. Clients are not considered nodes on the network.

A couple of specific examples of each type:

Bitcoin Core or Armory run full nodes on the network.
Mycelium or the Trezor Wallet are clients that connect to a server, not directly to the bitcoin network, and aren't included in the count.

The computers in a mining pool do not need to connect to the network so do not count as nodes (they are only solving a cryptographic problem and don't care about the transaction data). The mining pool will have at least one node that connects to the network to download and broadcast the transaction data, so the number of nodes in a pool depends on how many the maintainers of a specific pool decide to activate.


Is bitcoin-qt using bitcoind? or bitcoind is already built in the bitcoin-qt wallet?

Bitcoin-qt does not run bitcoind as a daemon. If you check the running processes after you launch bitcoin-qt, you will  not see bitcoind being launched.

They both utilize the same "Bitcoin Core" source code obviously, but bitcoind and bitcoin-qt are separate programs and one does not need the other to function. You can think of bitcoind as a GUI-less implementation of "Bitcoin Core" and bitcoin-qt as the GUI implementation of "Bitcoin Core".


How much bitcoin is being sent to someone else in this transaction?

Generally, there is no information in a bitcoin transaction which indicates the amount being transacted between two parties. An outside observer can view the value of inputs and outputs, but the ownership of each output will be unknown to them. More specifically, the change output is often indistinguishable from the other outputs, so an outside observer may not know which output is the change, and which is the actual amount transacted. This is important, because it helps preserve privacy!

Consider this simple example: User A sends a bitcoin transaction to User B, which looks like this on the blockchain (ignoring fees for simplicity):

Inputs:

Address 1: 5 BTC

Outputs:

Address 2: 2 BTC
Address 3: 3 BTC

As an outside observer, we cannot tell whether User B was sent 2 BTC, or 3 BTC. By design, there is no data to tell us this.

However, in the case of both transactions you linked, the input address has been re-used as the change address, which is not best practices, as it significantly degrades privacy. This allows us to know how much BTC was transacted, because the transaction now looks like this:

Inputs:

Address 1: 5 BTC

Outputs:

Address 2: 2 BTC
Address 1: 3 BTC

And so we can see that User A sent 3 BTC back to themselves, and thus 2 BTC were sent to User B.

NOTE: some block explorers will make a guess at "how many bitcoins were transacted" (sent from one user to another) in a given transaction, according to some logic written by the developers that built that explorer. But this is just a guess, there is fundamentally no way to be certain about this information.

When best practises are followed, it becomes impossible to tell how much BTC was 'transacted': this is by design, and it is important for privacy and fungibility.


Is there a time limit how long a signed transaction is valid?

Bitcoin is not an account based currency like Ethereum, which track the balance in addresses. Instead it is a UTXO based currency. In a UTXO-based currency, funds are tracked in portions called "Unspent Transaction Outputs", these are uniquely identified through their history, specifically through the transaction id that created them. Any new money moved to the same address would have a different history and thus would not be replayable.


At what time will the payment be taken when buying bitcoin on an exchange?

Conceptually, orders arrive at the exchange and are processed one at a time.  The fate of your order depends on the previous orders which are on the books when yours is processed.  So what matters is the state of the market at the instant when your order "arrives" at the exchange.  There will of course be some delay between the instant at which you place the order and the instant when it arrives at the exchange.  The length of this delay would depend on internet latency, the speed of the exchange's computers, etc.

If you place a limit order, then the price will be whatever you wanted it to be.  The order will be filled if there is a matching order already on the books at the instant of arrival; otherwise your order will be placed on the books and may or may not be filled by some later order.

If you place a market buy (/ sell) order, the price will be whatever the lowest ask (/ highest bid) is on the books at the instant of arrival.  Of course, this could be a different price than what you saw when you placed the order.  That's an inherent risk of market orders.


How to protect the early stages of a proof-of-work application?

... insert fraudulent transactions ...

No, fraudulent transactions and blocks containing them are rejected when nodes follow the consensus rules.

There is a greater risk of chain reorganisation, meaning miners who successfully mined a block may not eventually have the reward for that when their block is no longer part of the longest chain.

The great risk of a 51% attack is that the attacker could outpace the rest of the network to assert that the attacker's version of the blockchain is longer, re-writing history with valid transactions and claiming block rewards, or undoing their own transactions when re-writing history by spending the utxo's back to themselves first, making their previously valid transaction seem like a double spend, for example, and stealing from a merchant.

To protect a new proof-of-work application it is only necessary that the work is reasonably distributed. For example, in the case of a Bitcoin full clone the same ASIC miners would be valid, however, the cost-for-benefit would be very low initially and so an attacker must ask, what benefit do I derive?


At a technical level, this is possible. You can retrieve BTC from a BCH address by importing the private key into a BCH wallet.

However, for many exchanges, security systems do not allow the removal of private keys (for instance, they may be locked in an HSM, or tied down through other security controls). They would also not allow for the signing of arbitrary transactions in some cases, preventing manual recovery.

Your only option is to reach out to Kraken and request them to access the private keys in some manner and sign a transaction for you that sends the BTC back to an address you control. It may not be possible with their setup, but it is your best (and only) course of action.


BitMinter is an attempt at making just this sort of thing easier and a more pleasant experience.

Install Java if you don't have it, e.g. on Ubuntu sudo apt-get install openjdk-6-jre icedtea-netx (the icedtea-netx is for Java WebStart)

If you will mine in GPUs, install the latest drivers (e.g. from amd.com)

If you will mine on FPGA/ASIC, give yourself access to serial ports. On Ubuntu sudo usermod -a -G dialout USERNAME then log out and back in.

Start the miner from bitminter.com website or commandline:
javaws http://bitminter.com/client/bitminter.jnlp


Altcoin: Send/receive transactions between nodes have high failure rate

The issue has nothing to do with node density. You are getting the error can't broadcast immediately, no witness yet which means that segwit is not active on your coin yet so the spends of segwit outputs will not be broadcast. You must activate segwit by mining enough blocks which signal for Segwit. Having the NODE_WITNESS service bit set does not matter; segwit is a consensus rule and the service bit is meaningless without the consensus rule being active.


How does bitcoin conversion (to/from $) handle round off error?

The Bitcoin protocol doesn't recognize the concept of a dollar. Conversions of the kind you mention do not exist in the Bitcoin protocol.

Conversions might exist with services that recognize dollars (and bitcoins), but how they handle it is entirely up to them, there is no general answer.

But I expect that most will simply round down to an amount of satoshis. So in your example it would be rounded to 0.33333333 (8 places).


Will Confidential Transactions allow us to reuse addresses safely?

My understanding of confidential transactions is that it only hides the amounts, not the addresses involved (someone please let me know if this is not the case).

Since only the amount is hidden, reusing the same address would still connect your various transactions together, linking them as likely involving the same user.


Can a non-miner third party help other people's transactions to confirm faster?

No, in general non-miner third parties cannot influence the priority of transactions except by outbidding them.

Unconfirmed transactions can only be reprioritized by either the sender or one of the recipients:

Any recipient (including the sender if there is a change output) can craft a child-pays-for-parent transaction that will incentivize the inclusion of the stuck parent.
The sender could publish a new version of the transaction, if it was flagged as replaceable (via BIP125) upon creation, or if they attempt an outright doublespend.

The service you describe was offered by mining pools. These mining pools would promise to include the transaction in the next block they'd mine in exchange for an out-of-band payment.


how to find p2sh/p2wsh in utxo set after wallet recovery

It depends on what your scripts are. If you are for example talking about a single-sig wrapped segwit address, the redeemscript can be recalculated from the corresponding public key. The wallet would derive some number of keys from the backup, then derive the corresponding redeemscripts and addresses. As the wallet is scanning the blockchain, whenever it gets a hit for any of the addresses, it will backfill the wallet with more "unused addresses" beyond the used address. The count of the unused addresses to scan for is defined by something usually called the "gap limit".

To regenerate redeemscripts of multisig addresses, the backup needs to include the full set and order of the involved public keys! Even if you have a sufficient quorum of the keys to spend, you cannot craft a valid transaction without the remaining keys due to the missing redeemscript. Most wallets today are set up using hierarchical deterministic key derivation, so again, the wallet would be able to regenerate as many addresses as needed from the original tuple of extended pubkeys. Of course that also requires the backup to store which derivation path was used.

If you are talking about arbitrary scripts, the backup better have the full redeemscript, otherwise you'll likely be out of luck.


Hashrate required for Finney attack on SatoshiDICE

There is no magic barrier above which you will make a profit, it's a tradeoff. The larger your hashrate the higher your chances of successfully completing the finney attack. The odds at SatoshiDice are a bit at your disadvantage, but in a system where you'd get back what you wagered in expectation you'd always make a profit.


Bit unclear, but sounds like nonsense. Put your address into a bitcoin explorer (like blocktrail.com) and have a look at all the transacions (hopefully 1 or none). Make sure there are a few confirmations before assuming it's your money. If you're being scammed they might be sending you something with a too low fee, which might never confirm.


Judging from the docs I understand that pruning, in laymen terms, only allows to get rid of information that cannot have any follow up transaction.

That's incorrect.

The process for block validation (simplified) is:

Receive a block
Find all the block's inputs in the database of unspent outputs (the "UTXO set"), and verify them (signature checking etc)
Remove all the block's inputs from the UTXO set (as those outputs now become spent)
Add all the block's outputs to the UTXO set.

Once a block has been validated, and its effects been applied to the UTXO set, we don't generally need the contents of the block anymore, at all. Except for:

Giving it to other nodes on the network that are trying to figure out what happened in the past (which you can't do yet when in pruning mode)
Rescanning to find historical transactions in the wallet (e.g. after importing an address or a key), which is a feature you give up when pruning.
Reorganizations. Sometimes a block is found that is not a successor of the previous block we saw, but one that branches off further back. In this case we need to be able to roll back the effects of the last block(s) before validating the new block(s). In order to roll back, we do need the contents of the blocks again. This is the reason why the client forces you to keep at least 550 MB of block data, so that you can always rewind the last few days.

So TL;DR: It's technically possible to create a client that prunes to an arbitrarily small value, but to prevent clients from tripping over when a reorganization happens, the code forces you to keep a few days worth of data regardless.


SegWit witness commitment merkle root location

The witness commitment is in an OP_RETURN output of the coinbase transaction. This means that the coinbase transaction will likely have more than 1 output (although not necessarily as a miner could send the block reward to the OP_RETURN output, but they would be stupid to do so). Here is a testnet block with a witness commitment: https://live.blockcypher.com/btc-testnet/block/00000000000007972a6f786179cb42dbc59f167aafd757b203e6c2eb80d49455/. All testnet blocks should have one as segwit has activated on testnet.


--zapwalletxes

You're missing a 't'. It's -zapwallettxes.

Also, you may need to adapt the path to the actual installation directory of the program on your computer.


How do exchanges manage their bitcoin/crypto? It only takes 1 employee with private keys to steal it all

Nice question. I assume the following:

Most of the funds are stored in "Cold wallets".
All the transactions are made from "Hot Wallets"
There is an automatic system that detects that the hot wallets need to be recharged.

I don't think such operations are made by a human. Maybe there is a human who checks such transactions. But everything is done automatically.
We can also assume that the CEO has access to the keys and funds. But we will never be 100% sure. It's crypto. That's why different decentralized platforms like UniSwap are popular right now.


The amount of coins in the wallet is too small for sweeping

Sweeping is just sending all bitcoins to another address. As such, there is a network fee involved.

Network fees will come out of the value of the paper wallet.

Depending on what you are using for sweeping, you can vary the fees. Though
a lower fee will take longer to complete:

https://bitcoinfees.21.co/

At the risk of dating this answer, I would currently allow 0.001 BTC in your friend's gift for fees for fast transactions, about 5 USD, (yes fees are pretty high right now.)


No, your wallet ID is only used for logging in, keep it to yourself. Your backup phrase is used to generate your private keys, but it is not the private key itself. It uses the phrase as a seed to generating a Heirarchical Deterministic wallet as per BIP 32, 39 and 44. So backing it up is equivalent to backing up all private keys in your wallet.

People send BTC to a bitcoin address, which you can generate when you log in.


Does Eltoo eliminate the need to watch the blockchain/implement Watchtowers

With eltoo you can publish old state and the Bitcoin network will accept it. (As every state is a valid and signed transaction.)

Let me recall the key idea of eltoo in short (if it's too short read the full paper it is well described there. Also I hope I remember the details correctly) :
You can imagine states in eltoo encoded as a linked list of time locked update transactions. Each comes together with a settlement transaction which spends the update transaction  and encods the current state. any state can be forked with a later state (within the time lock). This happens by Sorenson the update transaction with a larger update transaction preventing the precis settlement transaction to be mined. these states are known to both parties. If the state is not forked the update transaction can be settled by the settlement transactions (which are child's of the update transaction and part of the protocol)

That being said there is no need for a penalty as the tricked party can just enforce the newest state on chain if the fraudulent party tried to publish an older state.

The party still needs to monitor what happens on chain as the forking is only possible within a time lock and afterwards if the settlement tx is not published. So watchtower services might also be useful in eltoo.

One side note on the ability to omit the punishment. Peter Todd criticized the missing penalty as the game theory now encourages one to publish old state. Either the other side catches it and corrects it or you win. This would basically lead to ask stats eventually being written on chain. So even though eltoo works without penalty it might very well include one. This would however make the protocol asymmetrical again as I believe it is currently unknown how toascribe blame. This in turn would mitigate many of the advantages of eltoo


Where can I find the current fee level for LTC?

Looking at Litecoin coming from Bitcoin, most blocks have plenty of space: right now most are between 2 and 30 transactions only. It turns out, that most transactions appear to only pay the default minRelayTxFee, which is currently set to 100,000 litoshi per kilobyte in the master branch of Litecoin.

Update: There are some changes in the Litecoin fee structures outlined in this blog post: Understanding Default Minimum Fees. In summary, the recent Litecoin Core 0.15.1 release lowers the minRelayTxFee to 1,000 litoshi per kilobyte and the minFeeRate to 10,000. Eventually, the latter is supposed to be dropped to 1,000 litoshi per kilobyte as well.


attack bitcoin through writing data directly into output's scriptPubKeys

No. This is very fast way to spend your money for nothing. You can not put arbitrary data into to scriptPubKey because there is limited number of standard scripts.

The best thing you can do nowadays is sending 550 satoshi (0.00000550 btc) for bare-multisig outputs m-of-3 created from uncompressed public keys. This will enlarge the UTxO database ( look at https://statoshi.info/dashboard/db/unspent-transaction-output-set ) but will not slow down network itself


resetting blockchain and transactions won't clear stuck transaction

Not sure if this is the real solution, but I exported my MultiBit Classic private keys and imported my address to blockchain.info wallet service.

Once I did that my transaction was confirmed within 24hrs.


Would miners have an advantage by proceeding randomly?

Essentially, everyone is already proceeding randomly, and there is no common search space.

When miners are trying to find a block, everyone works on a different set of candidates: The block reward is paid out through the coinbase transaction. The coinbase transaction's output is specific to the miner because it includes the miner's address as recipient. The coinbase is part of the transaction set that is used to derive the Merkle root. The Merkle root is included in the blockheader. Ergo every mining entity works on different block candidates.
SHA-256 is a cryptographic hash function. One of their properties is that any change in the inputs will cause a completely different output. There is no predictable relation between the change in the input and the change in the output. Therefore, you cannot predict where you will find a block – any new candidate whatsoever could be a valid block. This means that there is no progress towards finding a block, there is no stack of work to power through – it's just random chance. The only way to predict whether a candidate will resolve to a valid block is by actually testing it.

Hence, the only thing that matters to every miner is to check as many unique candidate as possible, meaning that (beside faster hardware or quicker calculation of the hashing) it can only be sped up by making it as fast as possible to iterate through candidates. That's why miners prepare a blockheader and then for the most part only increment the nonce, extranonce, and the timestamp.


Transaction deserialization test vectors for Elements sidechain?

https://github.com/ElementsProject/elements/blob/elements-0.14.1/qa/rpc-tests/confidential_transactions.py generates various tranactions. I think I will be able to dump the txs and use them in my tests.


The issue was with how the transactions are sorted. The balance was being calculated with 9c8f1b918e6a6a2 being sorted before 46d529d722d1 (which is incorrect) despite them being ordered correctly in the json. Regardless it should be fixed now.


Why is my blockchain.com not receiving bitcoin?

Your bitcoins are not lost.

What you observed is completely normal behavior which one would experience across most wallets. The wallet generates a new address once it detects that you have received coins on the previous address. This is done to minimize address-reuse which improves the privacy of the sender and the receiver.

This has nothing to do with your laptop restarting.


Bitcoin Core provides the gettxoutsetinfo RPC that has exactly the information you want.  Note, it takes that call up to a minute or two to run (and maybe longer as the UTXO set keeps growing).

Here's what my node says right now:

{
  "height": 442313,
  "transactions": 15237948,
  "txouts": 43194647,
  "bytes_serialized": 1635888675,
  "total_amount": 16028761.10201779
}

Current and historical data may be found on Statoshi.info's UTXO page.


Can different clients have different transaction fees?

The Bitcoin protocol does not require any fee to be paid.

However, the standard client will require varying fees to be paid before the transaction is included in a block or relayed, all depending on the current load (up to 27kB transactions are free unless they are considered spammy, then fees get higher and higher).

Some pools (like Eligius) don't include transactions without fees into their blocks, so that's another incentive to pay something.


Why is mining an important part of a digital coin?

Why mine?

Money supply

It's a way of limiting the money supply in a decentralised system. You don't want anybody to easily create new money - no-one would trust a currency where anyone can make themselves a millionaire at whim.

Most of the conventional ways of limiting money supply require a central authority who manage the printing of banknotes and their destruction and a regulatory system that prevents banks declaring that they hold more money than they actually do.

Paying for transactions

An electronic payment system consumes processing resources to validate the transactions and to make the appropriate records available to anyone who needs them. There has to be some ways to pay for this.

In a decentralised system, both transaction fees and mining are ways in which this work gets paid for.


I am just wondering what are the methods which can hide all the transactions and also able to validate transactions in an block chain?

So what are ways to hide all transactions

In the blockchain used by Bitcoin it is not ever possible to hide transaction details because the integrity of the whole system depends on those being public.

However the sensitive parts of those details are mostly Bitcoin-addresses and amounts. There is a privacy issue if observers can infer information by comparing use of the same address across multiple transactions.

This is why Bitcoin (for example) is often described as not anonymous but as psedonymous. You can't see people's names in transaction data but you can see the Bitcoin-addresses.

Generally people hide their identity by

never re-using Bitcoin-addresses and by
using coin tumblers.

This makes it very very difficult for third-party observers to associate a transaction with a specific person.


How can I export the private key for an address from the satoshi client?

To export a private key from your Satoshi bitcoin-qt client:

launch your bitcoin client as usual and wait for it to load the blockchain and start up
click on 'help' in the menu bar (top right)
click on 'debug window'
select the 'console' tab
type: walletpassphrase "your walletpassphrase here" 600
type: dumpprivkey [your Bitcoin address here]
this will return the private key, you can copy it now; ensure you clear your clipboard/history afterwards
type: walletlock


Can we make Sybil attacks virtually impossible?

Proof of work is what makes Sybil attacks very difficult. Put simply, you trust the chain with the most proof-of-work on it. This cannot easily be faked (at least without significant mining power). It is possible that all the peers you happen to connect to give you false information, but at any time, if you have even one peer that tells the truth, this can be determined cheaply and easily by seeing that the chain has more proof-of-work than the others.

Flooding the bitcoin network with nodes that don't tell the truth is possible, but as long as there are some nodes that tell the truth, it's easy enough to know which ones are telling the truth and therefore easy enough to thwart such Sybil attacks.


How does storing the witness outside of the block prevent malleability?

The data of the scriptSig is mooved from TransactionInput to RawTransaction, so the Raw transaction doesn't is malleability? maybe I can't imagine what really happened to non-witness transactions during malleability, can you give me an example?

The transaction ID is a hash of the entire transaction data structure (the version, inputs, outputs, signatures, number of inputs and outputs, locktime, everything). Elliptic Curve signatures, such as the ones used by Bitcoin, contain a random number as part of the signature. Using another random number will also lead to a valid, but different signature. If the signature changes, the hash of the entire transaction object would also change.

In segregated witness transactions, this signature data is not part of the base transaction data structure - this means that changing the signature will no longer change the txid, since the rest of the transaction has not been altered.

  Why the witness data is stored outside the block? what do you mean? I think I don't understand the sense of this space-saving because the witness data is present inside the blk file

Moving the witness data outside the block allows Bitcoin to effectively pack more transactions into a block - The space previously used by all the signatures is now available to add more transactions.

  How (If I understand correctly) bitcoin core use the Merkle-tree for verifying the signature? (this question is related to the first, I don't think I understood the phenomenon of malleability as it happens)

Merkle trees having nothing to do with signature verification. Merkle trees are used to build a commitment to which transactions are included in a block, which is then placed in the block header and locked in using the proof of work system. Transaction malleability affected this, since altering a transaction ID within the transactions selected for the block would alter the merkle tree - this is no longer possible for the reasons stated above.


"BitCoin-QT" Core Upgrade - PRIOR Steps?

bitcoin-qt 0.8 changed the database structure. Bitcoin Core 0.15 changed the database structure again. There is no direct database structure upgrade path from bitcoin-qt 0.7.x to Bitcoin Core 0.15. You will have to upgrade to a version between 0.8 and 0.14 first before you can upgrade to Bitcoin Core 0.15. I recommend first updating to Bitcoin Core 0.14.2, letting it build the databases and sync, then upgrading to Bitcoin Core 0.15.0.1.

See also: https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.15.0.md#how-to-upgrade


Did Bitcoin Core relay blocks sequentially or in parallel to peers before Compact Blocks?

It isn't as simple as "sending sequentially" or "sending in parallel".  Each connection is its own socket and the kernel performs packet scheduling. The Bitcoin protocol doesn't have any acknowledgement. When a node sends a message it hands it to the TCP stack which often will just immediately accept the whole message. It's then up to the kernel to send it out.

So in one sense it's not even really possible to send it out 'sequentially' without some kind of massive redesign,  but it also wouldn't be generally desirable to do so: TCP won't send more than the current receive window without getting an acknowledgement. So if you were to wait until TCP has sent all the data to one peer before starting to send the next, you would find yourself waiting around sending nothing part of the time.  You would also increase exposure to tarpit attacks, where a malicious peer intentionally slows down reception in order to delay propagation to everyone else.

So Bitcoin has always gone through the peer list and handed whatever it had to send to each peer, leaving it up to the kernel to schedule the packets.   It has been proposed in the past to hand it to just a few and then wait for them to get it before hitting the rest, but it's not obvious how to robustly prevent tarpits,  and BIP152 largely moots the question.


Your timing is perfect. Yesterday Flattr announced that they were going to implement Bitcoin.


Why does won't my bitcoin transaction complete? It has thousands of confirmations

The transaction is indeed confirmed. You should double check to make sure you sent to the correct deposit address. If yes, then you will need to contact the Coinbase customer service to have your account balance updated properly.


How to set the exchange for MultiBit Wallet Currency Ticker?


What roles of WIF(Wallet Import Format)?

Are there any good points of WIF

It is shorter than decimal/hex representation. And, yes, there is checksum.

  Can I sign on a transaction by using WIF without the private key?

WIF is a representation of private key.


How can I send a bank wire from X to buy bitcoins?

If you can send an International (USD) bank wire then you can buy bitcoins at exchanges that accept that method.  This includes Mt. Gox, BITSPEND, Bitcoin-Central, and others.  The fees for sending International wire are generally considered too high to justify when sending smaller amounts of funds (e.g., $1K range or less).

http://en.bitcoin.it/wiki/Buying_bitcoins

If you can send a SEPA (EUR) bank transfer then you can buy bitcoins from the exchanges that accept that method instead.  SEPA transfers are generally fairly inexpensive to send.   These market exchanges include Mt. Gox, BITSPEND, Bitcoin-Central, BTC-e as well as many other fixed-rate exchanges including Bitcoins In Berlin. Bitcoin.de, Bitcoin Nordic, Instawire, and more.

If there is an exchange in your country that accepts domestic bank transfers then that may be the least expensive method of moving funds to an exchange.  For instance, Canadian users have the option of using bill payment from a bank to add funds to their exchange account at the Canadian exchange VirWoX at a low cost relative to International bank wire costs.


Do I need to wait for Bitcoin-Qt to sync with the network before using GUIMiner?

The answer depends on whether you're using a pool to mine.

If you use a pool to mine, you don't need Bitcoin-Qt to mine, so you can mine straight away.
If you don't use a pool, you need Bitcoin-Qt to be at the most recent block.


How to monitor Bitcoin address for new transactions?

It's possible to do this externally, but it's tricky to get right and a cause of loss of funds if you do.

You need to correctly identify transactions you can spend. This is relatively trivial with P2PKH addresses, but a little more involved if using more exotic script types. You need to understand rules like transaction maturity before considering a UTXO to be spendable.
You need to correctly handle reorganizations if a transaction changes its confirmation state or is invalidated by a change in its confirmation state and an alternative is included.
You need to manually walk every single block to find old transactions, or use the UTXO scanning feature to find ones which may be unspent. This is very time consuming and requires full retention of all blocks since genesis (or at the very least, the birthdate of the wallet). Repeating this if you want to monitor a new address with potentially old entries.
You need confidence that your code is correctly accounting, which is only something you can ensure.

It's easier to use the built in wallet which handles all of this correctly, really.


What is learned from listening for inventory messages?

The inventory message only contains the transaction hashes or block hashes and an enum that specifies which type a given hash is. In the paper, when they talk about addresses, they mean IP addresses. What they are describing here is that the attacker takes note of the first couple of IP addresses (in this case, 10) that sent out inventory messages for a transaction hash.

Edit to answer your follow ups:

  Step: This runs parallel to Step 1-3. In this step I'm listening to all INVENTORY-Messages. So you said the INVENTORY-Message contains the transaction hash and an enum. How will be one  INVENTORY-Message generated? Will this message generated for every transaction and distributed by broadcast to every known node in the bitcoin network? Who creates this INVENTORY-Message?

The inventory message is just a message sent to a nodes peers. It is not forwarded to other nodes as it is not a message like transaction and block messages.

If you (as a node) receive an inventory message from me (as a node), that means that I am announcing to you that I have a transaction or a block which you might be interested in. If you want that transaction or block, you will respond with a a getdata message and I will respond to that with the transaction or block itself.

  Did I correctly understand the first three steps?

Yes, I think you did.


How do custodial lightning wallets work?

I am sorry to say but your understanding is wrong.

When you send x btc to Bluewallet you don't open a channel. You just give them your Bitcoin. Bluewallet and other custodial wallets run one (or possibly several) lightning nodes and allow you to use it with up to the amount of btc you have sent to them before.

So as long as Bluewallet users send each other payments no channel is needed as everything can just happen virtually in their accounting software. Also in a custodial wallet you can receive btc via lightning without providing liquidity first (as with your non custodial fullnode)


No it is not possible to find the passphrase with a hex editor.
Bitcoin core encrypts your private keys with a random key. This random key is encrypted (AES-256-CBC) with a key derived from your passphrase.
If you remember something from the key (parts of it, letters, even length) you need a program that permutates what you know. If not you can try brute force starting with 1 character and up. Unfortunately when you chose a good key (length>15 characters) this is a near impossible task.


A cryptocoin is a piece of information, like a text in some language.

What a cryptocoin says depends on conventions set by the cryptocurrency system, much like what a given text says depends on the language.

A cryptocoin is made by some piece of computer code, which has output it. It usually is not made of some piece of computer code, in the sense that a computer, interpreter, Turing machine.. could run it directly. It is fed as input to some computer code (e.g for validity verification, spending..).

How a cryptocoin is made, and what makes it valid, also depends on the cryptocurrency system. In decentralized ones, the making typically involves doing a large amount of arbitrary cryptographic computations.


What does Bitcoin Core's "Coin Control Features" do and how do I use it?

From the "Yet another Coin Control Release [CLOSED]" BitcoinTalk thread:

  What is coin control?
  When you send bitcoins to someone else, the bitcoin client chooses kinda randomly which of your addresses will send the coins. With coin control you can exactly choose, which of your addresses will be the sending addresses. And even more specific which of your unspent outputs will be the sending inputs.


Bitcoin TX decode failed while sending to a the network(regtest)

Your input txid output index is 5 bytes, when it should be 4 bytes. Just remove the extra 00 byte and the transaction will not pop an error. However, you might need to sign this transaction again as signature involves signing the entire serialized transaction as a message and by changing the txid outpoint you will change the message that is signed.


Is it time to move data storage (of things like music, images, virus definitions) out of the block chain?

It certainly isn't "necessary" for proper functioning of the Bitcoin currency, it's just something that people noticed they could do.  But there isn't any obvious way to stop it, short of a complete overhaul of the Bitcoin protocol.  There are lots of ways to insert small pieces of arbitrary data in a Bitcoin transaction (including even the addresses themselves).  So I don't know how we would go about "moving data storage out of the block chain" even if we wanted to.  We certainly can't do anything about the data that is already there.

The current standard way to achieve this is with the OP_RETURN opcode in a transaction script.  I understand the Bitcoin developers actually took steps to make this feature easier to use: not particularly because they wanted to encourage people adding data to the block chain (as you say it takes up space), but because OP_RETURN is less disruptive than some alternative methods (for one thing, it is limited to fairly small payloads).


Bitcoin Core Old Wallet.dat Vulnerability

The vulnerability affects the encryption of the wallet file, weakening the encryption by lowering the resources needed to brute force attack it.

Practically, this means if an attacker were to get a copy of your wallet.dat file, they would have an easier time brute force attacking it (ie. guessing your password would become a little easier), compared to an attack against a wallet.dat file using the same password, that is not affected by the vulnerability.

Any attack that exploits this vulnerability would have to be highly targeted, so for affected users the threat of attack is probably quite low. Perhaps ironically, by asking for help, you may draw attention to yourself as an affected user,  so I would be very wary of anyone offering a 'tool' to help you fix the issue!

I assume that your goal here is simply to ensure your bitcoins are secure. If you are concerned that someone may steal (of have already stolen) your encrypted wallet.dat file, a simple fix would be to create a new wallet using software of your choice, and then send the entire balance of the old wallet to the new one. This way, your new wallet file will not be affected by the vulnerability.


Wondering about the viability of a Hardware Wallet

I want to roll my own hardware wallet using a USB stick.

An ordinary USB stick cannot be made into a hardware wallet.

Hardware wallet incorporates cryptographic hardware designed for cryptocurrencies and has firmware to interact with software on another device (PC, phone, etc)

No and Yes.

Normal wallet software has some utility while it is synchronising, but until it has synchronised it can't show the amount you control and therefore may not be able to create transactions using those amounts.

An  SPV wallet doesn't need to download the blockchain but is less secure.
A full-node wallet cannot create transactions involving unspent transaction amounts it does not know about.
A wallet must be online to send transactions.
A wallet need not be online for money to be transferred to your control but the wallet won't know about it until it is made online or is able to communicate with other software that is online.


Just for fun, here is some code I threw together that will try substituting up to n characters to try to make a valid address.

As a disclaimer, there's no guarantee that any address it finds is actually the "right" one; it could be a different address that is valid but doesn't belong to anyone, in which case any coins sent there would be lost forever.  Use at your own risk.

Running it with n=3 found the address

  1a8LDh3qtCdMFAgRXzMrdvB8w1EG4h1Xi

which has a balance of BTC 29658.80268195.  It appears to be the current resting place of the Bitcoins seized from Silk Road that were auctioned today.

To compile (on Linux):

gcc -O3 -o subst subst.c -lssl -lcrypto

You will need the OpenSSL headers and libraries installed.

To run:

 ./subst 2 1a8LDh3qtCdMSAgRXzMr4zB8w1EG4h1Xi

Will try to replace up to any 2 characters to make a valid address.  You can replace 2 by 1 if you are impatient, or by a larger number if you are very patient.

Here is subst.c.  There is an unused function to try transposing characters from the address, but it is redundant with n >= 2.  The validation code is from Rosetta Code.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/sha.h>

const char *coin_err;
#define bail(s) { coin_err = s; return 0; }

static const char *tmpl = "123456789"
        "ABCDEFGHJKLMNPQRSTUVWXYZ"
        "abcdefghijkmnopqrstuvwxyz";

char *xstrdup(const char *s) {
    char *p;
    p = strdup(s);
    if (!p) {
        fprintf(stderr, "How can you be out of memory?\n");
        exit(1);
    }
    return p;
}

int unbase58(const char *s, unsigned char *out) {
    int i, j, c;
    const char *p;

    memset(out, 0, 25);
    for (i = 0; s[i]; i++) {
        if (!(p = strchr(tmpl, s[i])))
            bail("bad char");

        c = p - tmpl;
        for (j = 25; j--; ) {
            c += 58 * out[j];
            out[j] = c % 256;
            c /= 256;
        }

        if (c) bail("address too long");
    }

    return 1;
}

int valid(const char *s) {
    unsigned char dec[32], d1[SHA256_DIGEST_LENGTH],
        d2[SHA256_DIGEST_LENGTH];

    coin_err = "";
    if (!unbase58(s, dec)) return 0;

    SHA256(SHA256(dec, 21, d1), SHA256_DIGEST_LENGTH, d2);

    if (memcmp(dec + 21, d2, 4))
        bail("bad digest");

    return 1;
}

inline void try(const char *s) {
    if (valid(s)) {
        printf("Valid:\t%s\n", s);
    }
}

void subst_int(char *s, char *p0, int n) {
    if (n == 0)
        return;
    char *p;
    for (p = p0; *p; p++) {
        char orig = *p;
        const char *q;
        for (q = tmpl; *q; q++) {
            if (*q != orig) {
                *p = *q;
                try(s);
                subst_int(s, p+1, n-1);
            }
        }
        *p = orig;
    }
}

void subst(const char *s, int n) {
    char *buf = xstrdup(s);
    subst_int(buf, buf, n);
    free(buf);
}

inline void swap(char *p, char *q) {
    char tmp;
    tmp = *p;
    *p = *q;
    *q = tmp;
}

void transposition(const char *s) {
    char *buf = xstrdup(s);
    char *p, *q;
    for (p = buf; *p; p++) {
        for (q = p + 1; *q; q++) {
            if (*p != *q) {
                swap(p, q);
                try(buf);
                swap(p, q);
            }
        }
    }
}

int main(int argc, char *argv[]) {
    int i;
    int n;

    if (argc < 3 || (n = atoi(argv[1])) <= 0) {
        fprintf(stderr, "Usage: %s n addr...\n", argv[0]);
        fprintf(stderr, "Substitute up to n characters\n");
        exit(2);
    }

    for (i = 2; i < argc; i++) {
        char *s = argv[i];
        printf("%s:\t%s\n", valid(s) ? "Valid" : "Orig", s);
        subst(s, n);
#if 0 /* redundant with n >= 2 */
        transposition(s);
#endif
        if (i+1 < argc)
            printf("\n");
    }
    return 0;
}


Why does segwit save space on the blockchain?

It doesn't save space, as it still stores the witness data somewhere, but it allows the blocks (according to some canonical definition of "block") to increase in a subtle manner while being a soft-fork instead of a hard-fork (this basically means it doesn't break compatibility with previous Bitcoin clients).


Multibit transaction is not being confirmed

Move your private keys to Electrum. I had this issue with Multibit HD since last summer. I sent my bitcoin from Hive (which had just become unsupported) to multibit hd. For over a year the transaction showed up on multibit as unconfirmed. The steps I took were:

Recover the wallet words from the multibit hd wallet file
Use a tool online that converted the multibit wallet words to private keys
Added the private keys to Electrum wallet

As soon as I created the electrum wallet with the private keys it showed up as confirmed in electrum. I would completely move to another wallet altogether as multibit is deprecated, and I’ve seen this unconfirmed bug happen quite often, don’t use multibit anymore.


Why do we need two transactions for CommitCoin scheme

We wrote this paper before Bitcoin supported OP_RETURN. Now you would just use OP_RETURN.

In CommitCoin, you can reveal the private key off-blockchain. It might indeed be simpler. Our thinking is having it self-contained on the blockchain, without having to reference anything else or having to have a connection to the publisher was the simpler model.


I've read through a few pages and it looks like Bter Points are used to be an incentive for trading.  Bter states that you can only obtain these by trading in CNY, however, I've never traded in CNY and my balance always changes.

I also know that they deduct points from your balance when you withdraw funds, however, reaching 0 Bter Points doesn't seem to stop your ability to withdraw.  It just diminishes your point balance.  After a bit of experimentation today, I did find a use for them and I'm glad that I did "poke" around the site.

From the menu, click on Bonus->My Dividend.  Apparently Bter pays out site dividends if you request them.  From the My Dividend site, you can request a dividend payment in CNY or BTQ.  I'm not fully sure what BTQ is, so I clicked CNY.  When you request CNY, Bter will deduct half of your points and payout a certain rate of points-to-CNY.

After obtaining about 9 CNY, I bought some BTC and used them to purchase another currency.  So... you can use your points to manually cash out a little Chinese fiat.  It's not much but it's nice if you know it's there.


How to get compressed public key with ECKey

Address address = new Address(params, dk.decompress().getPubKeyHash());

where dk is the DeterministicKey

or

key.decompress().getPubKey();

where key is the ECKey


Yes.

You can only spend bitcoins from the Address they were sent to. Think of it like cheques - only the person they are written out to can authorise them - not their spouse or child. Bitcoin transactions operate similarly.


What are the network requirements of running a bitcoin node?

To operate, Bitcoin Core needs to:

make DNS queries to a number of public domains in order to find peers to connect to, a full list of these is in chainparams.cpp
make arbitrary outgoing connections on TCP port 8333 on IPv4, IPv6, or both
optionally accept incoming connections on TCP port 8333


Can I transfer money from my Deferred Compensation Plan to buy Bitcoin?

You can, but maybe you shouldn't.

Don't buy Bitcoin using money that you can't afford to lose.


Has the nonce used in mining been sized?

First of all, when 1 second has passed, the miner can just increment the timestamp in the header. This already gives us 4 Ghash/s rather than 4 GHash/block.

When this is not enough, and the nonce range is exhausted before a second has passed, the miner builds a new proposed block with a hash to search through. Specifically, the very first transaction in the block (the coinbase, which also receives the subsidy and fees) has a 100-byte area that essentially contains arbitrary data. So miners use this area as an 'extra nonce'.


How do you make bitcoins bought from a exchange anonymous?

You should do some mixing transactions in between, I would recommend Wasabi Wallet or JoinMarket. They are both decentralized solutions, where you don't risk loosing your funds, like it is with centralized tumbling services.


Bitcoin Daemon Syncing Crashing Server. CPU through the roof

The bitcoin daemon takes around 24 hours on a good server to sync to the network. During this time CPU usage is very high as it is verifying the blockchain from scratch.

Once synced, bitcoind is a far lighter program.


Bitcoincharts.com has the "market depth" for Bitstamp, which is just what you are asking for. It is presented both as a graph and a table with actual bid and ask volumes. There is a free API for much of their data, but (added in edit) to my surprise, the orderbook data does not seem available that way. If it will help you will depend on your application: There is a 15 minute delay.

There are many other sites presenting visualizations of the orderbooks of exchanges; one example is Bitcoinity.org's Bitstamp page. But I   am not aware of any other than Bitcoincharts.com that provides a public API.

UPDATE:

The question has been changed from asking if this data is available "at a third party" to whether it is available at all. Yes, it is available, from the first party (Bitstamp), via the API link provided in the question itself.


Transfer Bitcoins from Coinbase to an Offline Wallet

Yes, coinbase allows you to create a paper wallet.

http://blog.coinbase.com/post/51573799308/use-coinbase-to-export-your-bitcoins-to-a-paper-wallet


Transaction 30MB+ from the tip for days, new message when I logged in today. Please explain

Your wallet will broadcast your transaction to other nodes on the network, and those nodes will (most likely) add your transaction to their mempools as it awaits confirmation. If the transaction does not confirm after an extended period of time, nodes may drop the transaction from their mempools - when and what transactions are dropped is a policy that is configurable by each individual node, so ultimately there is no saying exactly when a transaction that is unconfirmed will be dropped from the network (if at all).
I believe the default setting for bitcoin-core nodes is to drop a transaction after two weeks, or once the mempool hits 300 Mb (starting with the lowest fee-rate transactions).
So if you transaction is quite old, or has a fee-rate that leaves it far below the top fee-rate transactions in the mempool, then it may be dropped by a large number of nodes in the network. At that point, your wallet software may prompt you to re-broadcast it, so that it can be confirmed.
Ideally, you would be using a wallet with RBF enabled, so that you can simply increase the fee as necessary to help gain transaction confirmation according to your needs.


You should use TX_VERSION = 1 and TX_LOCK = 0xFFFFFFFF for mainnet and testnet


Does Lightning Network has concept of continuous stream of value?

Streaming payments is not part of the lightning network protocol yet.

However you can build a lightning app that simulates exactly this. There was a demo by alekos Filini on lädt years lightning residency. Check out https://youtu.be/IlSVTir_9Ns

When AMP is coming streaming payments could be stimulated with AMP by setting up more and more routes. But that would be rather fancy.

So I guess you create an app on top of lightning to solve streaming payments


Bip 70 This BIP describes a protocol for communication between a merchant and their customer, enabling both a better customer experience and better security against man-in-the-middle attacks on the payment process.

On of the key features of this proposal is:

  PaymentRequests include a user-friendly description of what the
  payment is for

Will hopefully be released with Bitcoin-Qt 0.9


I'm not sure what you mean that they've been "blocked" ?

That screenshot shows the "block" number that the transaction was mined in, which means that it has been confirmed on the Bitcoin network and is available for you to spend.

Have you tried to use that wallet to pay for something and you're getting an error? Because as far as I can see it seems fine:)


Can't decrypt bitcoin core wallet, did I made a backup at the wrong time?

Bitcoin Core 0.18.0 is compatible with any wallet version from 2017, if you want to check you can download any Bitcoin Core release. Bust most probably you are misspelling your password.

You could try also from the console. Use this command to decrypt it for 60 seconds:
In Bitcoin-Qt click Window -> Console.
walletpassphrase your-wallet-passphrase 60


(I'm trying to close some old questions.)

Litecoin has a Linux download button on it's homepage now.

As Nick Odell pointed out, you can also find the downloads on GitHub.


How can I connect to the Lightning Network on Litecoin's testnet?

If you go onto IRC #litecoin-dev and ask for pwkad, I believe he is running one.


What scenario could a lack of bitcoin full-node cause problems in the network?

By running a full node, you ensure that your bitcoin transactions are valid and received by the network, and that your bitcoins are 'playing by the rules you want' (you implicitly agree to the rules of the code by running the node).

So if you are not running a node, you are depending on other nodes in the network to relay this information to you.

The less nodes that exist, the easier it would be for a majority of nodes to coordinate and change some rules, and so users that are not running their own nodes may then unknowingly have the rules changed on them.


What I am not getting is how the operation are done.

The address encodes the hash160 of the redeemScript. That address was given to the sender, who used it to construct an output scriptPubKey of the form OP_HASH160 <scripthash> OP_EQUAL. The scripthash is really hash160(redeemScript), but the sender does not know that, as they aren't given the actual redeemScript, just its hash160. The <...> notation here means "script opcode that pushes ... onto the stack".
The redeemscript is OP_2 <pubkey1> <pubkey2> <pubkey3> OP_3 OP_CHECKMULTISIG. This script was created by the receiver, encoding their policy for spending, and then its hash160 was given in the form of a P2SH address (3...) to the sender.
The scriptSig is what is created by the receiver when they want to spend the coins. In this case it consists of OP_0 <sig1> <sig2> <redeemScript>.
During validation, what happens is:

First the scriptSig is executed, which pushes 4 items onto the stack (0, sig1, sig2, and redeemScript).
Then the scriptPubKey is executed, starting with the previous execution's final stack as initial state. It contains 3 opcodes, each modifying that stack:

OP_HASH160: takes the final element of the stack (the redeemScript) and replaces it with hash160(redeemScript).
<scripthash>: pushes the scripthash onto the stack, so now the stack is (0, sig1, sig2, hash160(redeemScript), scripthash).
OP_EQUALVERIFY: removes the top two items on the stack and compares them. If they are equal, a 1 is pushed onto the stack, otherwise a zero. In our case, the scripthash is equal to hash160(redeemScript) (because the spender revealed the correct redeemScript) and thus a 1 is pushed. The stack is now (0, sig1, sig2, 1).

The final stack is examined: validity rules require that the stack is not empty, and that its top element is nonzero. That is the case here: the top element is 1. If that wasn't the case, the spend would be marked invalid and execution would stop here.

That's it for the ordinary execution. However, because the scriptSig is exactly of the form OP_HASH160 <20-byte scripthash> OP_EQUAL, the BIP16 P2SH validation rules trigger for a secondary round of processing. This time:

It is verified that the scriptSig contains only push opcodes, and no other opcodes. If this is not true, the P2SH validation marks the transaction as invalid.
The stack we had just after executing the scriptSig is restored (0, sig1, sig2, redeemScript).
Its top element (the redeemScript) is removed from the stack, and reinterpreted as a script, and executed, with all the other stack elements as input. It consists of 6 opcodes:

OP_2: pushes a 2 onto the stack, which now becomes (0, sig1, sig2, 2).
<pubkey1>: pushes pubkey1 onto the stack, which becomes (0, sig1, sig2, 2, pubkey1).
<pubkey2>: pushes pubkey2 onto the stack, which becomes (0, sig1, sig2, 2, pubkey1, pubkey2).
<pubkey3>: pushes pubkey3 onto the stack, which becomes (0, sig1, sig2, 2, pubkey1, pubkey2, pubkey3).
OP_3: pushes a 2 onto the stack, which now becomes (0, sig1, sig2, 2, pubkey1, pubkey2, pubkey3, 3).
OP_CHECKMULTISIG inspects the stack, sees a 3 on top, removes it, as well as the 3 pubkeys that precede it. Then it encounters a 2 on top, removes, as well as the 2 signatures that precede it. Then it removes one more element (a historical bug that is very hard to fix). Then it checks those signatures against every subset of 2 of those 3 pubkeys. If matches are found, it puts a 1 on the stack, otherwise a 0. In this case, the signatures are valid for some subset of the public keys, and the stack becomes (1).

The final stack is inspected, requiring that it is not empty, and its top element is nonzero. As it is a 1 here, that is the case.


I had bitcoin stored on my phone, but then lost my phone, please help

Sorry to hear that you have had your device stolen. When using Coinomi all you need to be able to restore your funds on a new device is the 24word recovery phrase which you were given when you set up your wallet. You can learn more about this here

Since Coinomi is an HD wallet, all you need as a backup is your Recovery Phrase

...

If you ever lose or change phones, or want to use multiple devices at the same time, simply install Coinomi and choose the option "restore a wallet" and input all words in order. Make sure all characters are typed in lowercase and that there is a single space between each word. Type the first 3 or 4 letters of each word and select the suggestion that pops up to avoid misspellings.

Please open a ticket on that site if you require further support. Thank you


If you alter the consensus rules in the software running your node, there are two options:

You apply rules less restrict than before, accepting some transactions that were previously invalid: every block you mine will be displaced by blocks from longer chains mined by the miners that didn't change anything and have more hashpower than you. Because they'll never accept your blocks but you're still accepting theirs.
You apply rules more restrict than before, rejecting some transactions that were previously valid: you are on your own, and will have to mine every single block. Depending on your current hashpower, it could take weeks until the next one. Unless you also change the rules concerning minimum difficulty. But the blocks you mine still will be accepted only by your node.


Is there a way currently where an SPV client can send a TxID to a full node which is present in the UTXO set of the full node and have the full node not scan its entire blockchain to fetch the transaction data? Or under all the circumstances, the full node would always scan the entire blockchain to fetch the data?

A full node never scans the entire blockchain for a particular transaction to send to a SPV client. No client (SPV or not) can just request transactions that are in the blockchain; a node will not respond to such a request because it is computationally expensive (requires scanning the blockchain).

A SPV client can set a bloom filter which will filter for specific outputs and txids, and then request blocks from a full node. The node will send a filtered block to the SPV client then.

So no, a SPV client can't send a txid to a full node and get the transaction if it is already confirmed.

For SPV clients that use a client server model like electrum, the server is a full node which has indexed every single transaction in the blockchain (it maintains a database which maps txids to locations on disk). Those servers will respond to requests for specific txids, but they are not your typical full node and speak a different protocol.

  Also, do the full nodes along with the transaction data also return the merkle proof to prove the validity of the data returned? I mean, how can an SPV node be convinced that the correct data has been returned?

Merkle proofs are provided by the nodes to prove that the transaction is in the block.


Why would a transaction take 90 minutes to get confirmed?

Bitcoin has longer confirmation times than many altcoins like Litecoin or Dogecoin, and different services make their own choices about how many confirmations to require before a deposit is made available for use.

While you can see a new transaction on the network almost instantly, many services require six confirmations to prevent double-spending.  With Bitcoin, six confirmations will commonly require an hour and perhaps more if no transaction fee was added.

Given the description, it leads me to believe that Cryptsy wanted to see six confirmations before making your deposit available to you on the Cryptsy site. It's not really unusual to see that take the 90 minute wait you experienced.


What is the approximate hashrate of a human?

The user C121 on r/bitcoin explored this topic in the thread Mining Bitcoin by hand.

He states that it takes 3385 integer operations to calculate one double SHA-256 hash.

His conclusion was that you would reach about 0.00003 H/s, or in other terms, it would take about 9.4 hours for one hash, assuming the human in question could do a 32-bit operation in 10 seconds.

He also estimates that you would fill about seventy pages of paper with the calculations per hash.

Update:
As Mathias711 pointed out in the comments, Ken Shirriff actually calculated some SHA-256 operations manually and wrote an article about mining bitcoin with pencil and paper. He arrives at an estimate of 0.67 hashes per day, at a vastly uncompetitive energy consumption. ;)


Is it theoretically possible to have an inverted nLockTime?

This is intentionally not possible.
If a transaction would be valid in block X, we want it (absent double spend) to remain valid in any successor of X. This guarantees that (temporary, otherwise harmless) forks that result in small reorgs will never invalidate unrelated transactions - and they will just be able to be mined again in the new branch.
It also simplifies wallet assessment of incoming transactions. Imagine a transaction that was just confirmed in the last block where it would be valid. 1-block reorgs are infrequent, but not rare. You'd need special logic to detect this and factor the risk of a reorg that permanently invalidates the transaction into the decision of when to accept it. It's even worse for unconfirmed transactions, though there are other issues with those as well.


There are a number of known issues on the compile side of things (under CentOS) which could be related: https://github.com/bitcoin/bitcoin/issues/6432.


How do I configure Bitcoin Core to connect always to a particular node?

Your private node would still be a fully validating node (i.e. full node). That's a good thing.

As for having the private node connect to your public node, you have two choices:

-addnode=<ip> Add a node to connect to and attempt to keep the connection open
-connect=<ip> Connect only to the specified node(s)

What you were asking for is nr 2, but you might want to consider nr 1 instead because that gives your private node a bit more redundancy in case there's a problem with your public node (hardware problem, disk full, router misconfiguration...). But it will make a few outgoing connections to random internet nodes (slight security problem if you don't trust the bitcoin p2p protocol and it will cause a bit more bandwidth usage).

You might also consider these options:

-listen=0  Don't accept connections from outside (implied by -connect). (although if you don't port forward in your firewall, it doesn't matter.)
-whitebind=<addr>
   Bind to given address and whitelist peers connecting to it. Use
   [host]:port notation for IPv6
-whitelist=<netmask>
   Whitelist peers connecting from the given netmask or IP address. Can be
   specified multiple times. Whitelisted peers cannot be DoS banned and
   their transactions are always relayed, even if they are already in the
   mempool, useful e.g. for a gateway
upnp=0 to disable UPnP. If you're capable of doing your own firewall configuration, you don't want this increased attack surface. (This has/will become the default in recent versions.)

The whitelisting (4 and 5) will prevent your private node from accidentally banning your public node if something weird happens.

Public node configuration

You probably also want to have e.g. -whitelist=192.168.1.0/24 on your public node as well to never ban your private node.

If it's not running a wallet, use the option -disablewallet [Do not load the wallet and disable wallet RPC calls]. Saves some resources and lowers the attack surface.


History behind the scripting language in Bitcoin?

Script was in the first version of Bitcoin. Satoshi developed Bitcoin in private before releasing the fully-usable Bitcoin 0.1, and he said very little about his thought-process, so we'll probably never know exactly why many things were done the way they were.

Script had several serious bugs when Bitcoin was first released, and some bugs still exist. It's clear that Satoshi didn't thoroughly test Script before releasing Bitcoin.  And while it contains a lot of complexity, it is still too incomplete for most opcodes to be of any real use. In light of this, it's often speculated that Script was something of an afterthought. Perhaps Satoshi's design originally sent bitcoins only directly to public keys, but when adding support for Bitcoin addresses and thinking about future transaction types, he realized that a scripting language would be useful for forward-compatibility.

A stack-based language is the natural choice here. Script processing is dead simple and very fast: just keep reading opcodes from the script and evaluating them until the script is complete. Each opcode is pretty much self-contained. It's also easy to analyze scripts due to the fact that everything to the right of a certain point in a script can be considered a function. You can know for sure that any scriptPubKey that starts with OP_RETURN will always fail validation, and that any script which ends with <pubKey> OP_CHECKSIG will always require the signature of that public key, regardless of what the rest of the script contains.

This functional aspect of Script was especially important when scripts were still evaluated by directly concatenating the scriptSig and scriptPubKey instead of evaluating them separately as is done today. In theory, you could put anything in the scriptPubKey and be sure that no matter what was in the scriptSig, your scriptPubKey would behave as a function taking an appropriate number of arguments from the stack. However, the opcode OP_RETURN originally just caused the script to end early instead of fail, so you could steal anyone's bitcoins by simply using the scriptSig OP_TRUE OP_RETURN. It was also possible to put a pushdata opcode right at the end of a scriptSig to turn the entire scriptPubKey into a constant (which evaluates to true). Satoshi fixed these bugs by changing the behavior of OP_RETURN to cause the transaction to immediately fail and making it so that scriptSig and scriptPubKey are evaluated in two separate steps.


What prevent a smartphone wallet from downloading my keys

Nothing.

A Bitcoin wallet that is online and connected in some way to the Internet is referred to as hot wallet.

That is why it is recommended to keep as much money as you would put in your pocket in a hot wallet.


which indicates the correct total received bitcoins, blockchan.info or bitcoind

In general, I would trust my own local node over a block explorer website. If you’re running an exchange you should be running a node, or more likely several nodes on isolated machines, this will allow you to interact with the network without trusting any other person or service to provide you with honest information. You will need to build a system to resolve deposits, based on the info supplied by your node(s).

Relevant point: bitcoin does not keep track of ‘account balances’, rather the system tracked ‘unspent outputs (UTXOs). To find the balance for an address, a block explorer would need to sum all current UTXOs associated with that address.

So the source of error may come from how a particular block explorer performs this operation. Blockchain.info, for example, will report the sum of all inputs that have ever paid to a certain address. So if you had 0.1 btc, and you repeatedly spent it back to the same address 30 times, blockchain.info would probably report it as 3btc received (lifetime). This may be an interesting stat, but it isn’t necessarily relevant to your issue of resolving customer deposits.


Today's threshold difficulty at 3,9 what would a miner need to go solo

There is no minimum power needed to mine solo. You should note, however, that if you mine solo, your rewards will be much more inconsistent than if you mine in a pool. This is the major reason why pooled mining exists.

With 5 TH/s at the current difficulty, the average time for you to find a block is 38 days; with 1 TH/s, 189 days. But this is a random process that would average to 38 (or 189) days, and that time period is only likely to grow larger as time goes on. You have a real chance, then, of never getting any reward for your work (the reverse is also true, of course: you have a chance of finding more than expected...but I wouldn't stake thousands of dollars on it). Personally, I'd want an expected period of no more than 10 days/block (~20 TH/s currently) to consider solo mining a good option.

Also of note: your intuition of how any random process will work out is very probably very wrong. I'd go for mining in a pool so that I don't have to deal with any large amount of randomness in this process.


Which mobile apps allow me to redeem a private key from a QR code?

Mt. Gox mobile, available from Google Play and on jailbroken iPhones using Cydia allows you to redeem private key QR codes into your Mt. Gox account.

As a bonus, if any payments are made to that address in the future, Mt. Gox will automatically sweep those funds as well.


The issue that you are experiencing is not really an issue. Rather it is a fundamental misunderstanding of how the accounts system works. Because it is so unintuitive and behaves in an unexpected way, the accounts system has been removed from Bitcoin Core.

The behavior that you see is completely expected. Accounts are not involved in the sending of Bitcoin except for the internal account values are decreased. The association of addresses to accounts is a receiving only thing. Account balances are only updated when addresses for the account receive money. Sending money "from" those addresses will not update the balance. The account balance will be decreased only if you use the send* RPC commands which allow you to specify an account to decrement the amounts from.

It is also important to note that "sending from" an account does not mean that coins associated with the addresses in that account will be the only ones chosen for the transaction. Any coins can be chosen, and then the account's balance will be decremented. Because of this, it is also possible to have accounts with a negative balance.

In general, you should stop using the accounts system. Not only is it being removed, but it also has strange and unexpected behavior.


HELP: recover my btc funds though all odds against me. someone with Xtra knowledge?

i have found filenames "key.class(keypar.clas etc

Those are Java class files, they are software not data. They are no help in recovering BTC.

See https://multibit.org/help/hd0.1/files.html - you should look for mbhd.wallet.aes or mbhd-YYYYMMDDHHMMSS.wallet.aes etc.

That .aes filename extension implies the file is encrypted. If so, to decrypt it you must have either the password or the "wallet words".

Note Multibit support says:

  If you have really, truly lost or forgotten both your password and your wallet words then it is likely that you have lost access to your bitcoin.

  is there any out there that can help me?

I doubt it. I expect many tricksters will offer to do so.

  Is there any key file or something I can use for in some way export my private key?

No.

  some way to get my tranwqctions recovered if "transaction file" is recovered?

No.

Your transaction are not lost, theye are recorded in the public blockchain - every full-node has a copy of all transactions.

What you have lost is the private-key that gives control over the bitcoins in those transactions. Only you had the private key.


Looking for whitepapers on pool-resistence mining

ASIC resistance is a buzzword thrown around by scammers trying to sell you what is actually impossible as well as a bad thing. Pool resistance doesn't sound much better.

https://download.wpsoftware.net/bitcoin/asic-faq.pdf


At this time I would think that they are. They have no concept of customer support and they are very unprofessional. If you need support and need them to fix something, they will delay and delay until you are desperate and then they come up to you for paid support.

I contacted support for days and days and when i finally got response, it was that I had to pay them ETH for service or say bye to my money.

I deal with many crypto exchanges and this was a new for me. After I agreed, I was then told it would take a month for me to access my own coins because dev team is supposedly tired from working.

So yeah if you mess up anywhere expect either to pay for support or never see your funds.


How to estimate the optimal fee for transaction(Segwit addresses)?

Legacy input size: 148 bytes (compressed)
Legacy output size: 34 bytes (compressed)
Segwit input size: 104 bytes
Segwit output size: 32 bytes

so if your transaction has two inputs and one output total size is ~ 246 Bytes, Don't forget about some more additional bytes for transaction header.