How can one gauge the reliability, customer service, and transparency of bitcoin exchanges? There are several exchanges for Bitcoin with a few highly respected ones like Mt.Gox, Bitstamp, bter, bit-e etc. I understand the reason why they require verification of users by supplying their bank information along with government ID and address proof. However, most of these exchanges decide to keep themselves anonymous to an extent. They don't mention the founding/management team on their website. I'm sure it's possible to find out for some by googling. I don't feel comfortable that they want all the information from me without disclosing anything about themselves.

This also raises the question about what level of security practices and audit do they have in place. I have read several stories about hacking of exchanges, stolen databases/wallets, nightmare to withdraw money etc.

Is there a source of information that compares these exchanges in terms of real world incidents, fee structure, and the backing team behind them? Basically looking for a reliability and customer service rating.

Edit : After Mt Gox's supposed failure, this question feels more relevant. I find myself fortunate that I avoided them. Especially since there were news about a large scale customer data loss.

How can one gauge the reliability, customer service, and transparency of bitcoin exchanges?

I totally agree that Bitcoin feels like the wild west, with people selling snake oil left and right.  It is early days, and that's how it works. If you want to be a pioneer, you will get arrows in your back. Right now, it's gambling, even more risky than gambling on the Stock Market.

If you're not comfortable with that, then wait. Down the road, there will be an influx of reputable exchanges. Right now, a "good" exchange won't make any more money than a fly-by-night exchange. But over time, the average reputation will increase.

The Internet worked the same way. Every Newspaper had an article on "Is the Internet a fad?" and warned "never use your credit card on the Internet". (Of course, kids these days don't even know what a newspaper is.)

  How can one gauge the reliability, customer service, and transparency of Banks or Retailers?

Think of how many reputable retailers had their credit card database stolen in the last 6 months. Think of how many banks went out of business without warning in 2008.

People are reporting on bitcoin exchanges that loose a few million, but nobody reports when a grocery store goes under and looses a few million.


double spending , you can create money out of thinner air I am a little confused about how  doublespending is done. The basic case is basically creating transactions to the seller and yourself and simultaneously broadcasting those. This is the very classic scenario, would I be correct ?

How does sending money to yourself exactly work? How would a typical transaction look like?

My question is could you hypothetically triple spend or spend x times the original amount. Equally, could you send yourself the money back many hundreds of times? So, if you had 3 bitcoins could you send yourself 3 bitcoins back ?

[update after answer was provided]

how does attacker need to modify transaction so that transaction appears valid when he is sending himself money back ? he has to create block where he is just sending himself money back as transaction. How is btc tracked in transaction then to make this possible ?

To double spend BTC, you need to make one transaction to the person meant to receive the money, and one transaction to an address you control yourself. This would typically be another address in your wallet. The two transactions would spend the same bitcoins, but send them to different addresses. Those transactions would look like completely normal transactions.

Now, you will not be able to create any new bitcoins. Because the same money is spent twice, only one of the transactions can be accepted into the blockchain. That's why one should wait for confirmations before accepting BTC as payment, as there's no guarantee for which transactions will be accepted in the next block and which transactions won't.


Why is the bitcoin client still in beta As of today the official bitcoin core version is 0.19.1 why has it not go to 1.0 version yet ?
Is there a timeline from the developer team ?

I have seen this similar question from 8 years ago:
Why hasn't the Bitcoin client advanced to version 1.0? but there doesnt seem to be a proper answer/concensus, or maybe it has evolved from this date ?

Bitcoin Core probably will never have a "1.0". 1.0 is a socially significant number which indicates some kind of finality or completeness (at least initially). This itself is holding back developers from declaring that there may even be a 1.0 or creating some timeline for a 1.0. Bitcoin Core is being continuously developed and there is no point at which many developers foresee it becoming this kind of "final" or "complete" that 1.0 implies.
There is no timeline nor a roadmap for 1.0. There isn't consensus that there should even be a 1.0. There isn't consensus on what features would be required for a 1.0. It is highly unlikely that there will ever be a 1.0. What is more likely to happen is that versioning stays as it is. Maybe in the future the leading 0 will be dropped, or perhaps some other continuous versioning scheme will be used (such as a date based one). But because of the social implications of 1.0, that will probably never happen.
A big part of this has to do with the release cycle of Bitcoin Core. Releases are done in a time based fashion - every 6 or so months, a new release is made. The primary version number just keeps getting bumped for every release. If Bitcoin had started with a 1.0 instead of a 0.1, we'd probably see the same pattern happening today, it would just be 19.1 instead of 0.19.1. But going to a 1.0 is changing the versioning scheme, and there is simply no reason to do that with the given versioning scheme. It would imply some kind of feature change or a major shift in development direction.

From 22.0 onwards, the leading 0 has been dropped from the version number. This was implemented in PR 20223. The last version to contain the leading 0 is 0.21.


How to find if two transactions in mempool are conflicting? There are lots of transactions over the mempool of the bitoin. However, there might be double spends. How can we verify whether two transactions are conflicting, i.e. they are double spends of a bitcoin?
P.S. Given two transactions are conflicting, then they both have at least one common input transactions. So, what else should be checked to verify that two transactions are conflicting (double spend).
Thanks

Firstly, there is no "the mempool". There is no global mempool. Rather each node maintains its own mempool and accepts and rejects transaction to that mempool using their own internal policies. Most nodes have the same policies, but due to different start times, relay delays, and other factors, not every node has the same mempool, although they may be very similar.
When it comes to doublespends, the typical node policy is that if a transaction conflicts with another transaction, it will not be accepted by that node, thus the conflicting transaction doesn't enter that node's mempool. So unless you modify your node to accept conflicts, your node's mempool will never contain conflicting transactions.


Scalability of namecoin It seems that an idea to store all information inside a blockchain would lead to its bloating.

There are about 250MM of domains in the web, namecoin allows to store 1Kb of data per record, it leads to 250Gb of data to store in the blockchain, but namecoin is far more general key/value storage than DNS, so the real size of blockchain is expected to be larger.

Am I right? What is the strategy to avoid or to deal with this bloating?

Clients only need to track the currently valid information (there is an expiry date for domains, for example) and not all applications need all of the data stored in the chain.  So, much like Bitcoin itself, application specific versions of the information stored in the blockchain will be used by most applications and they can use SCIP or distributed trust models to check the validity of information instead of storing the entire blockchain locally.

For shits and giggles, I downloaded the top 1 million domains and some IP blacklists, resulting in a 4MB CSV file containing 142,202 IP <-> domain pairs. Simple Zip compression yielded 2:1 - 3:1 compression rates while PAQ8 delivered rates >4:1. A custom data-structure would likely yield even higher compression ratios.

Simple extrapolation of these numbers shows that 5megs can easily handle half a million such pairings. If traffic is distributed in a Zipf-like distribution, the .bit namespace can grow to 2.5 million domains (the size the .bi*z* domain space) and clients could still store the top 20% of sites which receive 80% of all traffic in a 5 meg cache. With even .INFO carrying 6 million domains, we have room to grow :)

And, finally, storage tends to get cheaper over time and the chain could be setup to dynamically set prices.


Title Agencies that Accept Bitcoin? Are there any title agencies that explicitly accept bitcoin, such as for buying houses, land, cars, etc.?

This depends on the country you are in. In Brazil there is a company that does accept bitcoin. http://www.tecnisa.com.br/bitcoin


Bitcoins lost due to outdated address I sent a bitcoin to temporary address. So seller did not get it because address was outdated before I sent bitcoins via bitcoins-qt. Is there chance to return my bitcoins?

If the seller, or their payment processor, saved the private key for that address, then they have access  to the coins, and would be able to refund them or accept them as your payment. (If you ever see that your transaction has been spent, you will know that this was the case). But only they can claim the coins; you have no way to get them back yourself, and if they don't want to give them back or credit them as payment, your only recourse is probably to sue them in court.

If the seller or processor discarded the private key when the timeout expired, then the coins are permanently lost to everyone.

Either way, you will have to get in touch with the seller to learn anything further.


How long does it take on average to receive one confirmation? Is it still reversible? Hi! Based on your experience, how long does it take to receive one confirmation for any given transaction which has payed the standard miner's fee? Is it still reversible?

Thanks!

A Bitcoin transaction, by design, will get one confirmation after an average of 10 minutes. Even before a confirmation has been received, a transaction is generally irreversible.

If you were to send a second (double-spend) transaction, using the same inputs as a transaction you've previously sent, I suppose there might be some custom-developed nodes that would give it priority if the transaction fee was higher than the first transaction. However, I believe most nodes would reject the second transaction.

If one of these (corrupt?) custom-developed nodes was to solve a block including the second transaction, my understanding is that the network would accept the block and thus accept the second transaction. This question has been asked separately, here: Does any pool accept higher-fee transactions of a double spend, instead of the earlier one?

However, it's worth mentioning that standard nodes will not relay the second transaction.


What does the nBits value represent? When a miner hashes a blocksheader and it produces a hash that is lower than the value represented by nBits then the PoW is considered solved.

What exactly does this mean? For example a SHA256 hash has the following structure: c45bc3de9bff9ee27fc7303a3aa4fa8022ab6608d42bbea4d72bbee9b719703b how do you determine whether this is below an nBits value?

nBits refers to the target. The target is inversely proportional to the difficulty, and is encoded as a compact representation of a 256-bit number. The first byte of the 32-bit field represents an exponent and the remaining 3 bytes encode a mantissa.

Image via btcinformation.org
E.g. the first (and maximum) target was 0x1d00ffff, which is the compact representation of 0x00000000ffff0000000000000000000000000000000000000000000000000000, a 256-bit number with the leading 32 bits set to zero, followed by sixteen bits set to one, followed by the remaining bits not defined by the mantissa also being set to zero.
The block hash is usually represented as a hexadecimal number (which include the letters from A–F for the numbers 10-15), but block hashes result from SHA256d hashing and the output of SHA256 is a 256-bit number (hence the name). When miners are searching for a valid block, they create a multitude of block candidates. When one of these candidates' hash digests (interpreted as a 256-bit number) is smaller than or equal than the target, the miner has found a valid block.

You can calculate the difficulty from the target with the following formula:
difficulty = max_target / current_target

where max_target stands for the above mention initial target and corresponds to the minimum difficulty. Alternatively, the formula works out to:
difficulty = 2^208 * 65535 / current_target.


Is it doable to supplant the current Bitcoin Core implementation with another rewritten in a different language? Can Bitcoin Core be rewritten in another language, let's say Rust, and could such an implementation supplant the current one in C++ without the users of Bitcoin experiencing some sort of reset/lost of funds?
Languages come and go and I was thinking that decades ahead the world may be in the similar situation with respect to C++ as it is today with respect to Fortran.

There are many implementations of the Bitcoin protocol written in other languages, e.g., Bcoin in JavaScript, btcd in Go, bitcoin-s in Scala, etc.
Bitcoin Core is widely considered as the "reference implementation" and it is certainly the most widely used implementation on the network. Without a written specification, the authoritative resource, if consensus diverges between implementations, would generally be considered the Bitcoin Core codebase.
In terms of Rust, there is a Bitcoin library called rust-bitcoin, but as it says in the rust-bitcoin README:

This library must not be used for consensus code (i.e. fully validating blockchain data). It technically supports doing this, but doing so is very ill-advised because there are many deviations, known and unknown, between this library and the Bitcoin Core reference implementation. In a consensus based cryptocurrency such as Bitcoin it is critical that all parties are using the same rules to validate data, and this library is simply unable to implement the same rules as Core.

Given the complexity of both C++ and Rust, it is unlikely that this will ever be fixed, and there are no plans to do so. Of course, patches to fix specific consensus incompatibilities are welcome.

There would be two possible ways a Rust implementation could "supplant" the C++ Bitcoin Core implementation (assuming supplanting is a healthy goal which is disputed).
One would be more and more users running a full node written in Rust, perhaps based on rust-bitcoin, until it became the most widely run implementation on the network. Arguably this would be a path to supplanting Bitcoin Core as the "reference implementation." (Some would argue that Bitcoin Core is the reference implementation because it is based on Satoshi's original client and a new implementation should never be considered the "reference implementation.")
The alternative would be Rust code is introduced into Bitcoin Core, gradually replacing the C++ code in Bitcoin Core. The latter has been discussed to a greater extent than the former although if this was to ever happen it would be a long term project.
There are arguments against introducing Rust code to the Bitcoin Core codebase and they were discussed in this Sydney Socratic Seminar in May 2020. With permission I include this quote from Rusty Russell:

I really like Rust. It is going from strength to strength and it has got definite merit. But you have got an existing expertise who have tooled up in a certain language. Some of that is self selected but whether that is true or not they exist. Now you are asking people to learn two languages. If you want to broadly read the codebase you have to know two languages and that is a significant burden. Perhaps in five years time when Rust is perhaps an obvious successor to C++ then that intersection… Arguing that we will get more contributors for Rust is probably not true. You might get some different contributors but C++ is pretty well known now. There is the sexy argument. “Work on this, it is in Rust” Unfortunately that will become less compelling too over time. As Rust gets bigger and more projects are using it and there are other cool things you could be doing with Rust anyway. It would be better to do stuff in Rust as far as security. I am cautiously hopeful that the size of bitcoind is going down not up. Stuff should be farmed out to the wallet etc with better RPCs and better library calls so it is not this monolithic project anymore. The argument that we are going to be introducing all these security holes if we don’t use Rust is probably weaker. As you said the last thing that will change is the consensus code. That said I like projects that stick to two languages. It is really common to have projects where you have to know multiple languages to deal with them. Working around the edges and reworking some of the tooling in Rust, building up those skills slowly is definitely the way forward. It will take longer than you want and you hope but it is a pretty clear direction to head in. But head in in terms of a decade we will be talking about finally rewriting the core in Rust. It is not going to happen overnight.

As Prayank says in an above comment, Bitcoin Core functional tests (not unit tests; they are in C++) are written in Python. So you already need to know C++ and Python to contribute to and review the entire Core codebase. If Rust was introduced that would be introducing a third language.


How should you backup your wallet? How often? Is backing it up once enough?
Any best practices to storing the backup?

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.


Why the total number of bitcoin is limited? Why the total number of bitcoin is limited? Is there a protocol in the block or somewhere so that the participants can't violate the rule?

The first one who find the block can receive the bitcoin for award. But if the total number of bitcoin is limited, does it means that the total number of block is limited? However, it seems that the total number of block is unlimited, or the transaction will be stopped.

I don't know where I was wrong?

The limitation in the number of bitcoins is by design and determined in the protocol code. It is a desirable feature because it makes the money supply predictable and independent of human decisions like it happens with fiat money.

You are right about the block finder being awarded the reward, but that reward halves every two years. At this moment it is 25 bitcoins per block, but in July it will go down to 12.5 bitcoins per block. And two years after that, it will be 6.25. Then, when the total supply gets to 21 million, there will be no more rewards. Blocks will keep happening, but the fees of the transactions in the block will be only reward the miner will get.

From bitcoin.org FAQ:

  Bitcoins are created at a decreasing and predictable rate. The number of new bitcoins created each year is automatically halved over time until bitcoin issuance halts completely with a total of 21 million bitcoins in existence. At this point, Bitcoin miners will probably be supported exclusively by numerous small transaction fees.
  https://bitcoin.org/en/faq#how-are-bitcoins-created


Why do transactions need to be spend fully? If I want to send you 75 and I have 100, a transaction of 100 will be made, in which I get 25 back as change. Why is this?

See also Change

  When the output of a transaction is used as the input of another
  transaction, it must be spent in its entirety

All bitcoins that you hold in a wallet are received direct from generated coin (issued as the block subsidy) or value assigned to you by the previous holder.   That assignment does not have a value field, only authorization for the value to be spent by you.

Many other accounting systems use the approach where account balances are used, rather than aggregating all transactions like how Bitcoin works.  Bank account systems work like this.

Work is underway to bring this capability to Bitcoin.


How can I tell what input address sent me coin? Rather - how does SatoshiDice do it? I know it's not proper format and people advise against it, but how is it technically possible?

You don't.  Bitcoin doesn't work that way.  To identify the sender, you can provide a new Bitcoin address for each payment request and then you'll know from which party the funds were sent as only that party would have that Bitcoin address.

Some services, such as SatoshiDICE, return funds to one of the inputs in a transaction.  This frequently causes losses however as those sending from a hosted (shared) E-Wallet don't own the Bitcoin address that their payment was sent from.  So returning funds to one of those inputs benefits some party other than the intended user.

Other parties use unique payment amounts to uniquely identify the sender.  For instance, a payment of 1.23 could be suffixed as 1.23000001 to differentiate that from another party that was asked to pay 1.23000002.  However doing that is no less work than simply providing a unique Bitcoin address for the two payment requests.

Planned for a forthcoming version of the Bitcoin-Qt/bitcoind client is a Payment Protocol which might be useful to you as well.


How can i create an Anyone can spend output? How can i create an Anyone can spend transaction using p2pkh outputs?

Also how would such a transaction in hex look like?

If it's a P2PKH output, it's not anyone-can-spend. P2PKH implies there is a public key that needs to sign for spending.

You can use a P2SH or P2WSH output which sends to an OP_TRUE script, though.

You can also manually craft a transaction with a scriptPubKey that is literally OP_TRUE. No address corresponds to such an output, so you couldn't use off the shelf wallet software for it.


Searching through the blockchain When a miner includes a transaction in a block, according to the integrity rules the miner should search for a previous transaction which output the coins being used in the current transaction. Now, the previous transaction is a record stored somewhere deep inside the blockchain.

What is the time taken to search and validate the previous txn output in the blockchain data structure?

If the block is released by mining pool or miner, each peer running bitcoin wallet such as bitcoin-qt or bitcoind will verify the transactions in the block before relaying the block.

The steps are following:

Verify SHA256 block hash which is structured from version, pref_block,merkle_root,timestamp, bits, nonce and standard SHA256 padding. When the block hash is invalid or minimum difficulty level it is rejected.

The pools or miners are supposed to release blocks according to these protocol rules

One of them:

  For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions, if a matching transaction is not in there already.

So there are multiple rules that must be followed for a block to get accepted and then relayed.


Does Halving cause inflation? Why does halving won't make inflation on bitcoin? and does this halving (2020) have difference affect?

Inflation is "a general increase in prices and fall in the purchasing value of money."

One cause of inflation is printing more money.

By halving the rate of production of new money you halve its inflationary effect.


What's so special about six blocks for confirming transactions? I read that when your transaction is part of a block that has five other blocks on top of it, you can feel safe that your transaction is not in danger of being orphaned because someone else would come along and confirm a series of blocks longer than the one of which your transaction belongs. My question is what's so special about six?  It seems like an arbitrary number. Why not five or seven?

There is nothing particularly special about six. Five blocks would take less time but provide a slightly lower level of assurance. Seven blocks would take longer but would provide a slightly higher level of assurance. Lots of services use fewer than six blocks.


Can a bitcoin transaction be reversed? If I sent bitcoins to someone, but then want to cancel this transaction after it was already made (like a chargeback on a credit card), is this possible with Bitcoin?

No, a bitcoin transaction which has already been included in a block on the longest chain cannot be reversed.  This is by design as Bitcoin is intended to behave much like cash, with recipients being assured that the money is now permanently in their possession after a transaction has been included in a block.


Procedure to restore Bitcoin Core backup I am looking for the procedure necessary to restore a backup of Bitcoin Core v0.15.1 official release version.

Assuming I safely exit Bitcoin Core, take a backup of the ~/.bitcoin folder and put it away safely. I use my wallet for possibly many years making many transactions and eventually, my computer dies.

I get my new computer, install (let's assume the same version of) Bitcoin Core and copy my backup back to the correct location. Obviously, it will need to sync with the network once I start it up and, I may need to upgrade to a newer version of Bitcoin Core but; surely the restored backup will not know of my many new addresses used for transactions since the backup when checking for transactions during synchronisation?

Does anybody have the actual steps necessary for this procedure?

If you are using bitcoin 0.15.1, it will be using a HD (hierarchical deterministic) wallet by default. This means that all addresses it uses are generated from a single master key in a deterministic way. That means that even addresses you generate after the backup will still be recoverable, as will any transactions sent to them. The exception would be if you upgraded to a new wallet version which supported address types that 0.15.1 didn't (at some point in the future), in which case if you send funds to those address types 0.15.1 might not recognize them (although the private keys can probably still be recovered from your HD wallet


What's partial spending? What does avoidpartialspend do? Group outputs by address, selecting all or none, instead of selecting on a per-output basis. Privacy is improved as an address is only used once (unless someone sends to it after spending from it), but may result in slightly higher fees as suboptimal coin selection may result due to the added limitation (default: 0)

I don't understand. Isn't address reuse already avoided, if receiving/change address is used only once? Does this option mean that each receiving address would be tracked by the wallet internally, so that spending from multiple "sources" is generally avoided? Aren't there still some scenarios that "spending from multiple sources" is still unavoidable? How could this improve privacy? Won't this create a tracable "chain" of transactions?

Currently, best practices are to receive coins to an address only once - Any reasonably new wallet will generate a new receiving address for you if the previously displayed one has already received coins.

However, there are scenarios where an address might receive coins multiple times, such as being a saved address on an exchange, stored with an automatic payout system (mining pools etc), or just intentionally giving the same address to multiple people who send you coins.

In such cases, an address has multiple utxos, possibly of varying sizes, associated with it.

Additionally, if you also use your wallet normally have have many other addresses with just a single transaction, this one address with many transactions could result in coin selection algorithms spending this address' coins along with coins sent to other, single-use addresses, thereby linking them as belonging to the same wallet.

avoidpartialspend is a configuration option that tells the coinselection system to spend all utxos on a single address before attempting to source utxos from other addresses (which may still be necessary depending on the amount being sent). This ensures that, as much as possible, the utxos selected minimize the number of individual addresses that are linked together for a single transaction. However, this comes at the cost of a higher transaction fee due to potentially larger transaction sizes, and sub optimal utxo selection as opposed to selecting the best input(s) for the amount being sent.

This does improve privacy to some extent. However, as notes, it is not a complete solution, as future utxos to that address may be used in other transactions that link them to more wallet addresses, even after this process.


How to extract raw 64 byte EC signature from an ASN1/DER encoded signature (which ranges from 70 - 72 bytes) I see that my ASN1/DER signature contains the individual r and s values, is there a way to derive the generic 64byte signature?

edit:  Ive looked through the DER/ASN1 spec, seems that what Im looking for is simply s appended to r.  BUT both r and s can possibly have lengths of 32 or 33.  so its possible for my raw EC signature to be 66 bytes long, which completely breaks the application I use now.

But Ive noticed that whenever the DER specifies eother r or s to be 33 bytes long, the very first byte is 0x00.  I suppose I can simply throw that out and then have 64 bytes?

You are on the right track. R and S data bytes typically encode 256-bit values (32 bytes). However, integers in DER are signed, which means that if their highest bit is set, they are interpreted as negative. For that reason, if the R or S value being encoded has their first byte >= 0x80, it would mean a negative number, and hence a null byte is appended taking the length to 33 bytes. So to encode the signature to 64 bytes, just take the last 32 bytes each of the R and S values.


Do cryptocurrency exchange sites work and operate like a regular bank? I have come across cryptocurrency exchange sites (for example, coinbase, bittrex, etc) and I was wondering if they operate like banks. What are the (usual) legal requirements in order for a site to operate legally?

Main laws that they do have to comply with are Money Laundering and Terrorist Financing and "Know Your Customer" type rules.

This is why when you open an account you have to send ID etc.. These they are forced to comply with as the banks that serve them (remember you have to wire them the USD EUR etc.. somehow - and that is through a bank with whom they have an account) force them.

What they DO NOT have to comply with are all the other regulations that an exchange/bank would normally have to comply with - hence the reason they go bust so often!

E.g. they are not required to segregate client funds, they do not have to retain capital to protect clients, nor do they have the same requirements for auditors, segregation of duties (making sure the developer is not supporting the site too!), being fair to clients etc..


Where is bitcoin-qt's blockchain stored in Windows 7? I need to manually resync from scratch due to a database corruption caused by windows auto-rebooting.

Where is the blockchain stored so I can delete it (and hopefuly prompt bitcoin qt from creating a new one)?

see Bitcoin QT error. How can I prevent corruption of database?

Start your client with the -reindex command-line option. This will cause the database to be wiped and rebuilt from scratch.

To answer your actual question: see the Data directory entry on the Bitcoin wiki.


Is it possible to send BTC out of an exchange account, in order to bypass the private key management system Inspired by this other question, I wanted to ask a question related to how the private keys are managed by the different exchanges.

The question is: do any of the exchanges allow the sending of bitcoins to external wallet addresses?

(My reason for asking this is that I was thinking it would allow the user to send bitcoins to an address controlled by himself and then get around the enforced private-key management system.)

Yes, all exchanges allow this.  They have to, because this is how you withdraw or spend coins from the account.  It's not any kind of sneaky workaround, just normal behavior.

However, you can only trade using coins (or dollars) that are held on the exchange, so if you do this, you won't be able to sell them on the exchange until you send them back (redeposit).  This incurs another transaction fee and takes time for confirmation, so it's not an option for people who want to be able to trade rapidly or sell their coins quickly when the price moves.

(Decentralized exchanges may be an exception.  I know less about how they work.)


How does forging work? I am looking for a technical answer that explains how are validated the forged block.

I already looked in the NXT wiki and in their white paper and found no detailed explanation.

Below is an explanation how forging works at the current moment, in the future this will be slightly changed.

Every block has two fields - BlockSignature and GenerationSignature.

The former is filled by signing the block data with the private key of an account that generated a block and has almost nothing to do with forging process.

The latter is filled by computing SHA256(GenerationSignatureOfPreviousBlock+PublicKeyOfAccount).

The first 8 bytes of the hash give an unsigned 64-bit number in little-endian format, this number is called "hit".

Every account has a so-called EffectiveBalance which is usually (but not always) higher if the account holds more coins. EffectiveBalance is multiplied by some value that is the same for all the accounts - BaseTarget (it's adjusted every block trying to keep block generation rate at 1 minute) - and by number of seconds that have passed since the previous block. The resulting value is called "target".

If "hit" is less than "target" then peers accept a block and attach it to the blockchain.

This is the essential part of forging. I omitted such obvious things as validation of transaction signatures, checks for double-spending, etc.


How is Liquid monetized? I was reading about how Liquid works. Do Liquid transaction fees work the same way BTC fees do (per transaction)? Is there only Blockstream as a miner or are there other enterprises who collect the fees too?

Fees are collected to a "fee address". Blockstream uses this to fund the BTC fees incurred by "burning" the L-BTC needed to pay fees.
Fees are intended to be anti-spam rather than a revenue source. Monetization of Liquid is based on providing products and services on top of Liquid.


How to convert Satoshi to BTC in Java? I get the value of money in Satoshi and I would like to have it in BTC. I develop the app in Java/Maven/JSP and use BitcoinJ for the framework. I use the code,

    public Coin getBalance() {

        int fac = (int) Math.pow(10, 8);
        return balance.div(fac);
    }

In the JSP, I use,

<%
    DecimalFormat decimalFormat = new DecimalFormat("#0.00");
%>
<div class="fild_value">
                    <%= decimalFormat.format(model.getBalance().getValue()) %>&nbsp; BTC
</div>

In this way, I miss the value after the decimal. For example, I get 1.00 BTC when I suppose to get 1.68 BTC. How to convert Satoshi to BTC in Java properly?

The Coin.valueOf(long) static constructor takes Satoshis as an input. You can use one of the toString/toFriendlyString/toPlainString methods to derive a human readable value string.


Is there a chart of Bitcoin merchants over time? Does there exist a chart documenting the number of bitcoin merchants over time, and if not, would it be possible to create one from any available data source?  (I'm thinking mostly of https://en.bitcoin.it/wiki/Trade for source material)

I went through the last 500 revisions of the wiki page, pulled the byte count into excel and graphed it. Line count would probably be a better metric but I didn't have a readily available data source for that. If someone wants to write a script that wget's each revision and counts the number of  tags that might be more accurate, but here's 500 revisions worth of data as a chart:

500 revisions goes back to Jul 8, 2011.

Also of interest, the earliest revision (Feb 10, 2011) of the Trade page has a scant 117 <li> tags while the current page has a whopping 785! I haven't taken the time to count all the revisions inbetween but that's quite a lot of growth - 668 new entries in 225 days for an average of almost 3 entries per day or about 1,084 per year! While some of these are bound to be non-merchant list items, that's still an impressive rate of growth.


Altcoin: Send/receive transactions between nodes have high failure rate I've noticed that an unusually high number of my attempted send transactions between my nodes (which is currently only 6 at most, but never less than 4) will not broadcast regardless of the amount of time I wait. I end up having to eventually abandon them to return the funds from the wallet I am trying to send them from. I have noticed no specific correlation between sender and recipient  (like a single node always being unable to send or receive) and have noticed that every successful transaction is broadcast and appears in the memory pool pretty much immediately after sending.

Is there any specific cause for this? Maybe the fact that I'm currently limited to such a small # of nodes?

Have used getnewaddress to generate every address that has successfully and unsuccessfully received coins so I find it difficult to believe the actual addresses can be the problem as they should all have been derived from valid keys.

Schwifty

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.


Sending bitcoin unconfirmed, now wallet balance is unconfirmed I am using Multibit HD 0.4.1. I was trying to send 0.5 bitcoin, but it seems to be unconfirmed for an hour.
I tried repairing my wallet, thinking that was the issue, but now my previous balance became unconfirmed! I had about $340 in my balance but now it says $0, with $340 unconfirmed. Will the balance be confirmed once the sending transaction is confirmed? This is time sensitive, so I need to resolve this issue quickly.

The other guy is wrong, I have the same problem as you( http://prntscr.com/cv38x1 - the coins were confirmed in 2015 but it shows transaction status as unknown).
Your issue is most likely the one described below:
https://github.com/keepkey/multibit-hd/issues/862
- this didn't work for me, but I recommend you try it as it did help some other people.

Now if you still have the problem, I figured out how to recover around $100 out of $146 by using the Mnemonic phrase to generate my old private keys, but for some reason it only generated some of them (I suspect that the reason I couldn't recover all of them is due to an issue with BIP32 compatibility Multibit had a year ago).


Should I / And how to update qt client? On windows should I and how to update qt client?

(btw I'm running dogecoin qt client but it's pretty alike)

You should keep Bitcoin-Qt up to date since the developers occasionally make changes to some of the rules (such as the minimum transaction fee).  It is easy to update - just replace everything in the Bitcoin-Qt install directory (don't touch the Bitcoin-Qt data directory).


How do i have a 2011 bch transaction? I was under the impression that BCH did not fork untill 2017.  How was i making transactions in 2011?

The BCH chain shares all of the BTC history up until the point of the fork. If you're using the same address for BCH that you did for BTC in the past, any pre-fork BTC transactions will also appear as BCH transactions.


Betweeness Centrality LND node How can one calculate betweeness centrality of your node as mentioned in this video. I would like to take into consideration

base_fee_msat
fee_rate

Is there a smart way to figure out what suites your lnd node?

Lnd itself does not provide the betweeness centrality of your or any nodes. However you access the network with the graph api call and compute the centrality yourself. You can either implement it yourself by following the instructions from the Wikipedia article or you can use a graph lib like networkx that does it with one api call after you passed the network to such a lib.

Also please keep in mind that of corse one can model the weights of the lightning network differently (for example by just taking channels as edges with weight 1) or by trying to model in the fees. When one does so the problem is how to model in the dynamic fee_rate together with the static base_fee_msat` as the resulting fee that one pays would depend on the amount that is being transferred. this amount could change and thus the network would change.


Verify Mycelium still has private key for spent address I just realized that when I sent BTC from Mycelium, it split the value from a source address into two target addresses, but the BCH of course stayed at the original address. I'm concerned that I can't verify that the private keys Mycelium tracks cover the spent address. If I export my Mycelium keys to a wallet that supports BCH, will it still be able to access the BCH that was at the spent address?
The spent address (public key) is 1FfbdfD6bfwy1HXLTznGnUVsBTxZGMXDod and I can see Mycelium knows about the unspent output address that it still has, but I can't see what addresses it's private keys cover.

Mycelium uses a hierarchical deterministic (HD) wallet, which means all private and public keys follow from an initial master key value. Every time a spend transaction occurs from the wallet, you can see that another private key is generated from the master key and it keeps a count of how many private keys are used. Any application that can sweep such a wallet should be able to acquire all the private keys along with it. If not, other questions answer how to extract private keys from an HD wallet: Derive private keys from a HD key


Transaction has 100 confirmations but it's not being shown in my Exodus wallet I have sent a transaction to my Exodus wallet but it isn't being shown there. The transaction now has more than 100 confirmations. What does mean when it has a lot of confirmations but doesn't show up? What I can do to return it? Is there anything can I do ?

The address 1UyoY... is currently funded, so the transaction did indeed go through.

If Exodus wallet shows you 1UyoY.. as a receiving address but no current balance, then your wallet is not in sync with the network.

If you cannot get Exodus wallet to sync with the network properly, you could try exporting the seed phrase / private key from Exodus and import it into some other wallet software.

Bottom line: the bitcoin are sitting at that address, so if you have the private key to that address, you just need to find some software that will properly sync with the network so that you can spend the coins.


What is the incentive to broadcast the whole blockchain? What is the incentive to broadcast unprocessed transactions? Among the strengths of bitcoin is that it mostly allows all actors to act in their own best interest. There are some actions however of which it is not so clear to me what is the direct incentive other than some kind of idealism.

Obviously it is in a miner's best interest to immediately broadcast a newfound block, or blocks that validate blocks mined by him.

Is there a direct incentive to broadcasting the whole blockchain though (i.e. operating a full node)? Likewise, is there a direct incentive to broadcast all transactions to other nodes immediately? Naively I would think that it could be advantageous to a miner if other miners don't have access to some high-fee transactions.

Of course, for both it is necessary that enough nodes do it for bitcoin to function smoothly, but I am interested in the incentive for an individual miner.

Note that not all full nodes are miners, and that there are significantly more non-mining full nodes than there are miners (as in the vast majority of full nodes are non-miners).

  Is there a direct incentive to broadcasting the whole blockchain though (i.e. operating a full node)?

The incentive for operating an archival node that can serve the blockchain to other peers is that doing so helps maintain the network and thus gives value to the Bitcoin that you are mining.

  Likewise, is there a direct incentive to broadcast all transactions to other nodes immediately?

Yes. If run a full node which is not broadcasting transactions, then when you decide to make a transaction, it becomes immediately obvious to your peers as to where that transaction originated from. The incentive is to preserve your privacy.

Even with a delayed broadcast, you would still be risking privacy as your peers would like hear the transactions first from other peers, so as soon as they see you broadcast a transaction that they hadn't seen from elsewhere, it would be reasonable for them to assume the transaction came from you.


Can lightning transaction participants link the transaction to on-chain funding transaction UTXOs? I'm curious about whether participants in a lightning transaction gain information about the funding UTXOs of other participants.
Let's say Alice pays Bob using Lightning, and Alice's payment is routed through a single intermediary channel, Isidore:
Alice → Isidore → Bob

There are two channels here, Alice's channel with Isidore, and Isidore's channel with Bob. These two channels have corresponding funding UTXOs, which I'll call Uai and Uib.
Due to making this transaction:
1a. Does Alice learn that Bob's channel is Uib?
1b. Does Bob learn that Alice's channel is Uai?
1c. Does Isidore learn that owner of channel Uai is paying the owner of channel Uib?
Also, in the case of a direct payment:
Alice → Bob

With one channel, Uab:
2a. Does Bob learn that the sender of the payment is the counter-party of their channel Uab?
2b. Does Alice learn that the recipient of the payment is the counter-party of their channel Uab?

Let us start with the direct payment via channel Uab. According to BOLT 02, the payment is conducted by adding an HTLC and settling it. From a protocol perspective, Bob does not know if the payment was originated by Alice. Of course, as there was originally an invoice issued by Bob (and potentially presented out-of-band to Alice), he could deduce that Alice was the payer, but Alice might have forwarded the invoice to someone else who later routed through Alice. Thus, Bob cannot tell with certainty who paid him. All he knows is that he got money from Alice.
In that specific setting, Alice can however be sure that Bob is the one receiving the money as Bob issued the invoice. Invoices are signed by the private key corresponding to the node id, so Alice knows that Bob has requested the payment. Of course, Bob might have been a proxy in the sense that he issued an invoice with the same payment hash as someone else. In that case, Bob might have routed the payment before he was able to present the preimage. Such behavior would be impossible to distinguish for Alice.
Similarly, in the Alice-Isidore-Bob setting: Isidore only knows that Alice sent him money and that he was asked to forward to Bob. Isidore does not know if Alice is the originator nor if Bob is the final destination (this of course assumes the protocol is secure and no attacks exist that reveal such information). Like before, Bob only knows that the payment came through the channel Uib, but cannot tell with certainty who paid him.
In the Alice-Isidore-Bob setting, Alice is aware of all funding transactions as she chose the route and the route is encoded with short_channel_ids which point to funding transactions. Alice will most likely have learnt about them via the gossip protocol.


Is it safe to store seed phrases (private keys) in a bank vault? If written on a piece of paper, would the recovery seed phrase or questions for accessing a collection of web wallets and hardware wallets be safe to keep in a mini vault drawer at the bank? Do bank employees have access to vault drawers somehow, i.e. in the event of natural disaster, or are there any procedures for opening vault drawers that might compromise the words on the piece of paper?
Given the above, also how safe is it to additionally store a copy of the same paper at another branch location as a back-up?

The best thing to do is use a secure passphrase in addition to your 12/24 word phrase, and keep the passphrase in a separate location, or even no location at all but your head and maybe share it with one or more family members.
Using BIP-39, the same 24-words with a different passphrase will create completely disjoint wallets which cannot be linked by outside observation. You can keep reusing the same words and have different wallets by using different passphrases. Make sure passphrases are a reasonable length and complexity and not dictionary words or birthdays. However, brute-forcing these is difficult because PBKDF2 is used for hashing, so you don't need to go overboard and use a passphrase you might forget.
It might be a good idea to include a small amount of bitcoin in the wallet using your 24 words, but with no passphrase. This can serve as a 'decoy' wallet, which can be monitored for activity to discover if your 24-words have been compromised. It also serves to allow plausible deniability to the amount of bitcoin you own, because if you are under duress from a person (the State for example) trying to force the information out of you, they cannot possibly know how many wallets are created from the same 24 words. You can plausibly claim that what is in the decoy wallet is all the bitcoin you own.
Since both the 24-word phrase and your passphrase are necessary to access your funds, the security of the 24-word phrase is not as paramount as without the passphrase. You should keep a copy on a steel plate to resist natural disasters, and keep a written paper copy in another location which is more accessible to you, but which can be safely disposed of with fire.


How to restore from backup of Android Bitcoin Wallet Bitcoin Wallet for Android allows you to back up your wallet.  It asks for a password when doing so.

After much faffing, I finally managed to.. dum, dum, dum! .. copy the file to the SD card, and then I removed the SD card and mounted on a Linux system.

According to this question, the way to decrypt it is

$ openssl enc -d -aes-256-cbc -a -in bitcoin-wallet-backup-2016-09-30

but I get:

enter aes-256-cbc decryption password:
error reading input file

when doing so.  This is an extremely poor error message from openssl.  I have confirmed that the file is readable using other utilities.

The best way to restore a backup file is always to use the same app used for creating the backup. In other words, install the app again, then use Options > Safety > Restore wallet.


How to connect a bitcoin node to a complete node through the local network? I currently have a full bitcoin node on my local network and I would like to create another node but only update it by local network.

I have tried with:
./bitcoind -connect<iplocal>
./bitcoind -addnode<iplocal>
but I get the following error
syntax error near unexpected token `newline'
I appreciate your help.

As mentioned above, your command needs to be ./bitcoind -connect=<iplocal>

-connect= will connect ONLY to that specified node. -addnode= will connect to the specified node in addition to attempting to connect to global nodes. If you're bootstrapping a new node either will work


What is the appropriate forum for technical discussions about Ripple? Is there a mailing list where software developers and other interested parties can have technical discussions about the Ripple source code and other aspects of the network?

Bitcoin Stack Exchange is more suitable for Q&A, where questions have definite answers.

There are a number of forums. Ripple Labs has an official forum that the developers read regularly. There's also a Google Ripple Server group.


How miner validates? How miner validates each transaction? Does he have all the information  of the transaction taking place between nodes?

Thank you.

Miners role is not to validate transactions, but to confirm them. Every node validate every transaction every time. A single invalid transaction would invalidate the entire blockchain.

In Bitcoin technology the transaction is collection of bytes. All the information about a transaction is the very transaction itself.


How to revert back several blocks in Bitcoin Core without re-syncing from scratch My node was running on a computer that I accidentally unplugged and it died. When trying to restart Core now it is not working, presumably because the computer dying forced Core to exit non-gracefully.

I'm wondering if there's a way for me to "rewind" back to a state before my computer crashed, so I don't have to resync the entire chain from scratch.

If the state is corrupt, there's no operation that will be able to restore it. A reindex will re-sync using the block files already on disk without having to re-download them where possible, but there's no escaping needing to do the CPU expensive operation of synchronization.


Litecoin Reaper GPU config I have just started GPU mining on my Nvida 560 (Not good cards for mining).
Heres the stats I'm getting, not sure If I have configured the settings correctly as my GPU temp is only 27C, is this right? I know Nvidia cards aren't that good for mining but should the temp be this low?

reaper.conf

kernel reaper.cl
save_binaries yes
enable_graceful_shutdown no
long_polling yes

mine litecoin

Litecoin.conf

host notroll.in
port 6332
user *****
pass *****

protocol litecoin

worksize 256
aggression max
threads_per_gpu 1
sharethreads 18
lookup_gap 2
gpu_thread_concurrency 6144

First, don't even consider mining on nVidia GPUs. Secondly, if you're using nVidia GPU, why do you use AMD APP? You should be using nVidia CUDA instead. Next thing, Reaper is NOT mining on your GPU on the screen given, but on CPU instead - that's clearly stated in the screenshot you provided (using all devices - and only CPU is listed).

@Tom: you don't have to supply any command line options to mine with Reaper, all config can be easily done via .conf files.


Trading bitcoin with paypal? Is it possible to trade bitcoin with paypal and stay anonymous?

How the big trading sites are trading bitcoins and recieve payments with paypal and keep the users anonymous (because there isn't an option of anonymous payment in paypal).

Try LocalBitcoins:

https://localbitcoins.com/buy-bitcoins-online/paypal/

https://localbitcoins.com/sell-bitcoins-online/paypal/

If you are selling Bitcoins make sure the buyer is reputable - pick a Sell Bitcoins online advertisement with green thumb.

Please note that the buy price is higher with PayPal, because the sellers price in the risk of doing business on PayPal.

If you trading with unknown party make sure you follow the risk mitigation procedures. PayPal, by the reports, is very common method for doing fraudulent purchases.

Usually exchanges expose no user information about the trades, so they are very hard to trace. But if you wish to add an extra layer to hide the origin of Bitcoins you can use mixer, which itself might not be a safe procedure.


Why is Enjoy Sochi a malicious spam attack I recently read the following thing on reddit:

  The two transactions for .00000001 BTC are a malicious spam attack.
  They were sent without fees, which means that if you wallet doesn't
  allow you to choose specific outputs your balance is tied up until
  those transactions confirm.

Surely this is a spam (although I can not understand what is advertised), but I can not understand how is it a malicious attack. What exactly can be achieved by this attack?

The transactions will likely never be included in a block, as they do not meet the defacto bitcoin transactions rules for transactions sent without a fee, detailed here:

  A transaction may be safely sent without fees if these conditions are
  met:

  It is smaller than 1,000 bytes.

  All outputs are 0.01 BTC or larger.

  Its priority is large enough (see the Technical Info section below)

  *Copied from https://en.bitcoin.it/wiki/Transaction_fees#Sending*

Since the transactions fail to meet the criteria to be included in a block for free (which is already getting rare), the transaction will likely be rejected on most/all mining pools, though may be rebroadcast by the sender or the receiver. The transactions may remain unconfirmed for a long time, unless the sender double spends his inputs, nullifying the transactions.

The attack is similar to a ddos on the bitcoin network, as the transactions propagate through the nodes which accept and relay the transactions. This does not cause issues with the '7 transactions per second rule' as the transactions will likely not get into a block, but may cause latency if enough of these transactions are broadcast.

It's more of a pester than a malicious attack.


How can I find my bitcoin wallet? I had to update the software on my computer and had to delete everything on my computer. I wasn't aware that my Bitcoin wallet was like a physical wallet. I thought I'd be able to download the wallet and enter my address into it and get everything back. I don't know what to do. I'm freaking out and don't know how and if I can get my Bitcoin wallet back. I know the address of my wallet but I don't have any of the files on my computer.

Unfortunately once you lose your wallet, there is no way of getting it back.

The wallet is so inportant because it contains your private key, this key is used to send money from your wallet to other people. Without it you can't do anything.

Next time consider writing down the private key and keep it locked up, or keep an offline version of your wallet.dat file. however be careful with keeping online versions, since anyone who has your private key can send money anywhere.

Just for clarity, you talk about your 'adress', is this your public or your private key? With other words, did you use it to send money? Or to recieve money?


HTLCs and commitment transactions Why commitment transactions can't simply be HTLCs instead of contracts revocable by having the second half of the Revocable Private Key? I mean, why bother to create a Revocable Public Key from two halves of Alice's and Bob's private keys and when invalidating a transaction sharing the other half, when both Alice and Bob could create two transactions, both revocable with two separate keys known only to Alice and Bob, which later would be exchanged in order to invalidate old transactions?

Edit: My current understanding of how commitment transactions work

Both Alice (A) and Bob (B) create opposite transactions:

TX_A:

5 BTC -> B
if RK_A
  5 BTC -> B
else if 1k blocks later
  5 BTC -> A
(Signed by B)

TX_B:

5 BTC -> A
if RK_B
  5 BTC -> A
else if 1k blocks later
  5 BTC -> B
(Signed by A)

Where RK_A is A's revocation key. Now if TX_A and TX_B are valid, neither B has RK_B, nor A has RK_B. Therefore, both of them can sign their respective transactions and "get out" of this channel after 1k blocks without risk of loosing all their BTC.

However, once both A and B decide to forget about the old balance they have to invalidate TX_A and TX_B. They do this by A revealing RK_A to B and B revealing RK_B to A. This way, if for instance A signs TX_A and broadcasts it to the Bitcoin network, B can provide RK_A and claim additional 5 BTC.

Now the process of creating and revealing RK_X seems to be involved, and my questions therefore is, why not simply have some random numbers in place of RK_A and RK_B that only A and B knows and which are later exchanged when TX_A and TX_B need to be invalidated?

Why not simply have some random numbers in place of RK_A and RK_B that only A and B knows and which are later exchanged when TX_A and TX_B need to be invalidated??

Let us assume, the transaction is structured wherein A and B generates random secrets. For every revocation that happens, the nodes will have to store the secret for each commitment that is signed. Each HTLC offered and redeemed, involve 2 commitment revocations. So, a node will have to store a huge database of all the secrets, ordering them in the way the transaction is signed. With the current method, we have a basepoint from which the secret is generated so that we do not have to store each key individually, but derive it based on the revocation_basepoint and per_commitment_secret which are generated deterministically and saved compactly.

  Why commitment transactions can't simply be HTLCs instead of contracts revocable by having the second half of the Revocable Private Key?

All lightning transactions are constructed in a way that they are completely valid on the  Bitcoin main chain. If you simply create transactions wherein the outputs are unlocked with a pre-image, then it opens itself up to men-in-the-middle attacks. In case of an on-chain settlement, when the transaction is broadcasted containing this input which is spent only with a pre-image, then the the node relaying or the one mining, will know this preimage and just change the outputs of the transaction to the ones paying themselves. That is the reason, we use signature verification, so that the person spending the input signs the entire transaction so none of it can be modified.

If you are wondering, then how HTLCs are offered for lightning payments, it is not that simple as a simple private key. Below is a script that shows the commitment that the other party signs to a transaction I am holding when I am offering the HTLC.

# To remote node with revocation key
OP_DUP OP_HASH160 <RIPEMD160(SHA256(revocationpubkey))> OP_EQUAL
OP_IF
    OP_CHECKSIG
OP_ELSE
    <remote_htlcpubkey> OP_SWAP OP_SIZE 32 OP_EQUAL
    OP_NOTIF
        # To local node via HTLC-timeout transaction (timelocked).
        OP_DROP 2 OP_SWAP <local_htlcpubkey> 2 OP_CHECKMULTISIG
    OP_ELSE
        # To remote node with preimage.
        OP_HASH160 <RIPEMD160(payment_hash)> OP_EQUALVERIFY
        OP_CHECKSIG
    OP_ENDIF
OP_ENDIF

If we have all outputs constructed in this way, then the transaction size will be unnecessarily large, and also will have inefficient key management as I mentioned in the previous section.


I've downloaded Multibit Bitcoin Client, but I don't know how to view what my wallet address is? I am attemting to purchase some bitcoins with a cash deposit to my bank using this site: https://www.canadianbitcoins.com/index.php

The site requires me to validate my wallet address so they know where to deposit the bitcoins. I am very new at this and I don't know what my wallet address is. I don't even know if I have one yet, becuause all I have done is downloaded a bitcoin client (Multibit).

Click 'Receiving', then look for an address.


Why do pools give rewards to miners who solve problems at a lower difficulty than the network? I'm trying to understand why a pool would want to give rewards to miners who mine at low difficulty.  Please tell me where this logic falls apart.  If the network difficulty is a nonce ending in 100 zeroes, but a miner solves a hash (not sure what words I'm supposed to use here) with a nonce ending in only 10 zeroes and submits that to the pool, the pool now knows that this particular nonce ending in 10 zeroes is not valid so other miners don't need to work on it, and as such the miner who just solved that problem has saved others some time, so they are entitled to a reward?

Ultimately what gains the pool any rewards at all is if someone solves the hash matching (or greater than) the network difficulty so I'm trying to understand how solving a problem at a lower difficulty helps the pool (and thus leads to rewards for that miner).

It's not that solving a problem at a lower difficulty helps the pool, it's that trying to solve the problem helps the pool cause you can 'accidentally' mine a block on the actual difficulty. Pool members share the lower difficulty blocks to prove they tried.

A pool member can find a block on the actual difficulty and don't share it with the pool on purpose, but won't get any reward by doing that.


What's causing P2Pool's bad luck? While looking at the current pool luck chart on p2pool.info, I noticed that the pool as a whole seems to slowly deviate from the predicted rate of finding blocks.

From the other chart it appears that it is consistently underperforming as of 3 weeks ago.

Is there a good reason or is it just a fluke in the probabilities of finding a block?

This looks like plain old bad luck.

P2pool is a small pool and 3 weeks is a short time. With current hashpower at pools this is like measuring BTCGuild for less than 12 hours. BTCGuild can have bad luck for 12 hours, and P2pool can have bad luck for 3 weeks.

That said, all pools underperform on average when compared to a simple expected income. That's because of orphaned blocks, typically 1 to 2 percent. And if you count stale/rejected shares in the hashrate, then it will underperform even more. But if income from transaction fees is not included in that expected average, then that may even out the orphans and stale work.


Anonymous transactions with bitcoin core Is there any chance that people will identify me when I have nordvpn running in the background when making transactions with bitcoin core? Already done this

What are you recommendations to stay anonymous with bitcoin core and where to get information to achieve this?

Do I need to setup bitcoin core with tor?(seems advanced)
Read somewhere that bitcoin core automatically uses tor if it is installed. But hard to confirm.

Your VPN provider at least is in a position to deanonymize you. Therefore, I would rather use TOR. It's not infallible, but many people have used it successfully to achieve relative anonymity. Here's a short guide to setting up bitcoin core with TOR

As Saxtheowl has already mentioned, however, both a VPN and TOR can only hide your IP address. There are many other ways to get deanonymized. Fortunately, there is a comprehensive guide about everything you need to know about using Bitcoin in private


Block exploring services What sites for block exploring besides blockchain.info exist?

I try to find some qualities of API for my needs, and ask you to help me to find the list of such services as full as possible.

Thank you!

Try this, they have a very simple API:
https://blockexplorer.com/api-ref


transaction (s) not going through due to low fees selected I'm having a problem with a bitcoin transaction (not through btcpay, but i don't know where else to turn to). I sent 0.06btc from my wallet to my father (20 hours ago), and stupid as i am, decided to be a cheap bastard and chose the smallest fees. The transaction hasn't gone through and i don't know what todo...
https://bitpay.com/insight/#/BTC/mainnet/tx/ea3536f6fc340a722633525eae720f2814da563fd3ca757c2736e2c92158327f
about 4/5 hours ago, my father activated the option from his side saying he would pay the necessary fees (so he says)  but still nothing happens...
Extra info: my wallet is Copay on iPhone and he's using Bitpay on android phone...
Please help me get my mind at ease, what is supposed to happen here? and in what time frame?
much appreciated for any information, even if it's just instruction on where else to go ask this...

Your tx seems okay now (3 confirmations when I wrote this answer): BlockChair explorer
Next time before resorting to paid service, you can try free BTC Accelerator such as BitAccelerate.


the real purpose of mod inverse in bitcoin for creating public key I understand the function of mod inverse, however I really have no idea why this is important with process of creating public key. What does this function do, what value do we get it? Can someone explain it like to a 5 year old please.

Thanks

Basically, when creating a public key from a private key, what you're actually doing is multiplying some number by a point on the curve.
In most cases, you will be multiplying some very large number by what's called a Generator point.  It's just some point everybody knows and agrees upon.

Multiplying a number d mod n by a point G, or sometimes dG is defined intuitively as :

G + G + G + G... and so on d times.

If you remember how to do point addition, the process here is very much the same.
To add two points A and B, with coordinates (A_x, A_y), (B_x, B_y), to a make a third point C with coordinates(C_x, C_y),
point addition is defined as :

Find the slope (we'll call it slp) between the two points A and B
C_x = slp^2 - A_x - B_x        mod p
C_y = slp * (A_x - C_x) - A_y  mod p

And when adding the same point to itself, A + A (or 2*A when d == 2), point doubling is defined as:

Find the tangent (we'll call it tgt) to the curve at point A
C_x = tgt^2 - 2*A_x            mod p
C_y = tgt * (A_x - C_x) - A_y  mod p

Now, we only need to define how to find slp and tgt, and we can start creating public keys.
A slope between two points should look familiar :

B_y - A_y
---------   mod p
B_x - A_x

And a tangent to the curve at a point is :

3 * (A_x)^2 + a
---------------   mod p
    2 * A_y

* the number a is a parameter of the curve.  much like n and p.

You might already see the problem here, it's that division does not make a lot of sense in modular arithmetic.  Instead we sort of multiply the numerator by the modular inverse of the denominator, which makes sense.
To divide two numbers, we use the mod inverse function (which in turn might use the extended euclidean algorithm for example),
so what we would end up calculating would be :

(B_y - A_y) * modinv(B_x - A_x)      mod p  for the slope slp and :

(3 * (A_x)^2 + a) * modinv(2 * A_y)  mod p  for the tangent line tgt.

And this is where we use mod inverse when creating public keys, or really when adding points.


Hypothetical, is it possible to retrieve stolen blockchain currency? It is my understanding that blockchain technology is decentralized meaning there is no middle man in transactions. This seems like it has benefits but it also has downsides. When necessary, middlemen are able to retrieve objects under their control and redistribute. But with blockchain, if a private key is stolen (this will inevitably happen a lot; probably due to social engineering) and funds are transferred, how can they be recovered? Other than getting the culprit to hand over their private key of course. Is there any "police" mechanism within the blockchain technology?

Proof-of-work blockchains offer transaction immutability, meaning transactions can't be undone or modified after the fact without having to redo all the work that was done since the time of the transaction.

In the case of a fraudulent transaction, several problems arise:

How can it be proven the transaction was indeed fraudulent? How can validators and miners determine which of the parties involved is the "rightful" owner? As far as the system is concerned, providing a valid signature is proof of rightful ownership.
If the transaction in question was confirmed, you'd need 50+% of miners to agree to redo all the work they already did in order to create an alternate history where the fraudulent transaction didn't occur. This rewriting has a huge cost on the network (while miners redo the work, they can't build on top of the latest block, grinding the chain to a halt). Getting people to agree to this would be nearly impossible.

Some blockchains (in particular Ethereum) had to deal with this issue (DAO problem) and opted for a custom change to the consensus code, which made that change opt-in and eventually resulted in a chain split between the people that wanted to remove the "fraudulent" transactions and those that didn't. Others (OMNI in the case of a Tether heist) decided to blacklist the addresses containing the stolen funds, requiring yet another custom, opt-in change to the consensus code.

Both cases involved humans making hard decisions and leaving some people unhappy about it, there isn't so far a generalized, on-chain, way to deal with this issue.


How bitcoin wallets connected between I'm thinking, is it dangerous to buy bitcoin, in case if government want to block it?
How bitcoin wallets connected between?
If I'm right - there are support servers, who providing connection between wallets?
At least, when you downloading cold wallet to your computer, it starts the download and syncs blockchain from the servers?
What if some government wants to block the servers?

Stopping the internet would be easier for your government than blocking bitcoin servers IP's.

You have not to download the blockchain to start using bitcoin or receiving bitcoin, download some wallet offline and use it or use blockchian.info since they support tor network so your government will not be able to block it.

Wallets are not connected to each other, simply its just a software doing some math to give you a new address, existing address or creating a new transaction, then they broadcast that transaction to the bitcoin network (blockchain).


What are the implications of BIP 12 vs BIP 16 and OP_CODEHASHCHECK? There is a discussion about two different Bitcoin Improvement Proposals - BIP 12 and BIP 16, and probably only one of them is going to be included in Bitcoin 0.6 (miners will decided which by a majority vote of mining power). LukeJr proposed an alternative to BIP 16 called OP_CODEHASHCHECK.

Can anyone summarize the core differences between the three proposals, and their respective advantages / disadvantages?

BIP 12 creates a new Script opcode which allows scripts to execute more script stored in a string (like eval functions in other languages). There's not much debate about BIP 12: it will not be used. It's very complicated, it allows some looping (which Script should not support), and it makes it difficult to analyze scripts without executing them.

With BIP 16, scripts are allowed to execute scripts stored in a string one time (not recursively), and there are also other restrictions that eliminate all of the BIP 12 drawbacks mentioned above.

CODEHASHCHECK does the same thing as BIP 16, but some technical differences make it arguably more elegant.

All of these proposals are designed to solve the problem of how to allow recipients to choose which restrictions to place on coins they receive at an address (two-factor authentication, etc.). Currently senders always define the restrictions on sent coins, which is inconvenient in many cases.


Coinbase tells me to send from electrum to my private key? A few years ago I sent my BTC from Coinbase to Electrum on windows PC.  That apparently went fine because Electrum showed the correct balance.  Then I received 12 keywords and a hash (starting with 17) which I always thought was my bitcoin key.  I saved these on paper and deleted Electrum, thinking OK I have all I need on paper.
Now  want to transfer my BTC back to Coinbase.  I entered my 12-seeds in Electrum and the balance was right. I hit {Receive] in Coinbase and I get a window giving me the Coinbase(?) address to send my BTC to from Electrum.  But this address is the same as what I thought was my private key (starting with 17).  This is weird especially because 1) How would Coinbase still know this number and 2) Electrum says [Pay it] to (what I thought was) my private key.  What am I missing here.  I don't have many bitcoin but the price is too high for me to make a mistake and get an education.

Tl;dr: what you have is

a seed-phrase for a Bitcoin wallet (where you look after your own cash)
a receiving address associated with a Coinbase account (where you let Coinbase have ownership of your cash in return for an IOU)

You don't have a private key (and you don't need one so long as you keep that seed-phrase written down somewhere safe - not on a computer)

I received 12 keywords

That is almost certainly a seed phrase, also called a recovery-phrase or backup-phrase.
Your master private key is generated from that seed phrase.
In a hierarchical deterministic (HD) wallet, that master private key is used to generate many pairs of private keys and public keys.
For the most common types of Bitcoin transaction, a public key is used to generate a bitcoin address to which money can be sent.

and a hash (starting with 17) which I always thought was my bitcoin key.

A string of around 32, 33 letters and digits starting with a "1" is an old-style of Bitcoin address that is still valid and popular. It is a Bitcoin address, not a private key.
To see some examples look at some reference pages such as

https://en.bitcoin.it/wiki/Invoice_address
https://en.bitcoin.it/wiki/Private_key
https://en.bitcoin.it/wiki/Seed_phrase

Note that the same private key can be shown to you in several different ways (encodings, display-formats).
From the above you should be able to reassure yourself that what you have is a 12-word seed-phrase for your wallet and an  unrelated bitcoin address for your Coinbase account.


How do I convert a private key in hex to a Segwit private key expected by Electrum? I've been following this code to generate SegWit addresses with python. However, I'm confused because this script doesn't output the private key in a usable way for Electrum.
I found this site which told me how to convert the key to a compressed WIF.
Here's one example, I ran the script and got this output:
Private key: ce534f3d1f481f8736c30d866a6b2c5defe5edc36afaafc0e923586791a2462b
Verifiction key: e5ee63efe153ebf1ec537831f2fba227f4b5f80275e750a9d0a8284c9fb4f91fb5427e034ffec25bacc346263f0f6281f951926f924f7c53f771f632ca9e3cbb
Compressed public key: 03e5ee63efe153ebf1ec537831f2fba227f4b5f80275e750a9d0a8284c9fb4f91f
keyhash: 17f022e2c24238760a0a1b070eaa456df4e8b915
Native address: bc1qzlcz9ckzggu8vzs2rvrsa2j9dh6w3wg4atezy6
P2WPKH_V0: 001417f022e2c24238760a0a1b070eaa456df4e8b915
Hashed P2WPKH_VO: b9502db522524782980563a09355fa7052ee7ff1
P2SH_P2WPKH_V0: a9b9502db522524782980563a09355fa7052ee7ff187
Checksum: 7fcb7c1d
Binary address: 05b9502db522524782980563a09355fa7052ee7ff17fcb7c1d
Nested address: 3JarywCp1dbFiykdGNWyo5pdZyvSLEGZ96

I then added my own additional code to convert to WIF.
WIF: 5KP9tSHuzYd1WTCTwr5ewace9eNM8Kv8xjsWYyELHdEkKcQkiUZ
Compressed WIF: L48nE2detzZwEzdbw5dYTuNJy9wDqLVY92DwS7Br8NwgD6S8NiyT

I imported the compressed WIF key into Electrum, but I get 13BaDNdBXkfrGkvJT41HNosBBbbLZRWyZJ as a public key. Everything online confirms that only legacy addresses begin with a '1', but surely it is a SegWit address, no?.
When I view 'details', Electrum gives me the correct compressed public key (03e5ee63efe153ebf1ec537831f2fba227f4b5f80275e750a9d0a8284c9fb4f91f).
Why doesn't Electrum give me a bech32 address or a nested address? Have I done the correct conversion of the private key?
Here's my code just in case there's an obvious mistake somehow.
fullkey = '80' + (private_key.hex())
sha256a = hashlib.sha256(binascii.unhexlify(fullkey)).hexdigest()
sha256b = hashlib.sha256(binascii.unhexlify(sha256a)).hexdigest()
WIF = base58.b58encode(binascii.unhexlify(fullkey+sha256b[:8]))

compressedPubKey = private_key.hex()+'01'
compressed_fullkey = '80' + (compressedPubKey)
compressed_sha256a = hashlib.sha256(binascii.unhexlify(compressed_fullkey)).hexdigest()
compressed_sha256b = hashlib.sha256(binascii.unhexlify(compressed_sha256a)).hexdigest()
compressed_WIF = base58.b58encode(binascii.unhexlify(compressed_fullkey+compressed_sha256b[:8]))

Import it by specifying address type as prefix:
SCRIPT TYPE:COMPRESSED WIF
In this example it will be p2wpkh:L48nE2detzZwEzdbw5dYTuNJy9wDqLVY92DwS7Br8NwgD6S8NiyT

You will see the address: bc1qzlcz9ckzggu8vzs2rvrsa2j9dh6w3wg4atezy6 added in wallet


Do I have to know all my private keys for sending a "big" amount? As I understood it: My client creates a public key (for recieving) and a private key (for accessing) for each transaction.

And the private key is here that I can send the BTCs I recieved (for all transactions only handled by this same public and private key pair where this private key is the private key).

But what if I want to send a big amount of BTCs but I only have recievied many small amounts? Would I then have to mention each private key for each transaction that I can send this big amount?

Private keys are not for using previous transactions, they are for using previous transaction outputs.  A single transaction may have many outputs, and many different people may hold the keys to those outputs.

When you send a transaction, you need to reference one or more unspent transaction outputs (UTXOs) to use as inputs of your new transaction.  The sum total of these UTXOs must be greater than or equal to the amount you wish to send someone (minus network fees, of course).  Any leftover can be specified back to you as "change" in the form of a second output on the transaction that is paid to an address you own.

  But what if I want to send a big amount of BTCs but I only have recievied many small amounts? Would I then have to mention each private key for each transaction that I can send this big amount?

You would have to reference all the transaction outputs that you wish to use.  This is simply how Bitcoin works.  However, you don't "mention each private key", since you should never share your private keys with anyone.  What you need to do is sign the transaction with the private keys, which is what lets the rest of the network know that you are allowed to use those UTXOs.

I know this all sounds complicated, but don't worry; your wallet handles all the complexities for you.


What are the steps to overcome a state in which miners couldn't mine blocks? The difficulty is set according to the total hash rate of the network.

Is there a possibility in which miners just can't validate blocks (will not find hash that will satisfy the POW)?

I understand the probability.

there's a very small percent where they couldn't do it, is that assumption wrong?

If a situation like that is possible, what will be the solution?

As far as I understand, there will be an adjustment of the POW, decrease the difficulty, until somebody will find block?

I'm trying to understand if a potential risk to the blockchain exists at that point.

A hash that can satisfy the PoW can always be found, the only determinant is time. This is identical to coin flipping - you can always flip a head, you just have to keep flipping until you do.

On average it takes ten minutes to find a hash, but let's consider something very dramatic has happened: let's say the Chinese have cut all links to the outside world, the Americans have successfully banned all Bitcoin activity, and the Europeans have a topsekrit piece of code that successfully intercepts and scrambles anything uploaded from one of their miners. Let's say that all of that happened inside the time it takes to mine one block, and let's say that for whatever reason there is now one single, solitary, functional miner anywhere on the planet, it's a Raspberry Pi, and it'll take Eleventy years to mine the next block. And a hundredteen times longer to reach the next difficulty adjustment. I think you'll agree that this is a state in which miners couldn't mine blocks. What then?

The most obvious step is a hard fork that resets the difficulty for that one miner. The miner will obviously agree; those using the blockchain would rather have that fork than wait in hope too.


How do you connect to the Bitcoin Client? So I just started writing a rails app that will be an online wallet. I'm looking over the API code examples for connecting to the bitcoin network at https://en.bitcoin.it/wiki/API_reference_(JSON-RPC).

PHP was the easiest example, seen here

  require_once 'jsonRPCClient.php';

  $bitcoin = new jsonRPCClient('http://user:password@127.0.0.1:8332/');

  echo "<pre>\n";
  print_r($bitcoin->getinfo()); echo "\n";
  echo "Received: ".$bitcoin->getreceivedbylabel("Your Address")."\n";
  echo "</pre>";

So I'm presuming that it connects to the bitcoin network via a username and password. Couple of questions.

What username/password? I bought bitcoin on coinbase, then exported it to a paper wallet. What user/pass is associated with my bitcoin? I thought it was just public/private key?

Why port 8332?

Why 127.0.0.1? Could it be any address?

You need to run either Bitcoin-Qt or bitcoind on your system.  Create a bitcoin.conf file containing the following lines:

rpcuser=your-userid
rpcpassword=your-password
server=1

You can then connect to your bitcoin node by specifying address 127.0.0.1 and port 8332.  Use the userid and password you specified in the bitcoin.conf file.

While it is possible to open port 8332 to allow remote users to connect to the local node, this is not a good idea for security reasons because it allows access to your wallet.  Instead, your users would communicate with your application and your application would then make the necessary RPC calls to the local node.


Why does Bitcoin-Qt use hidden private addresses? As I found out from this question default wallet contains 100 private keys but only makes one visible.

But what I don't understand is why Bitcoin using those "hidden" addresses? I've been using my main address ABCDE and after some point I've noticed that my balance is spread on different private addresses which I can see in "Receive coins" tab. Why couldn't it just use my main address?

This is done so as to ensure you have all of your keys backed up. BitcoinQT uses a new address for each transaction - taking them from the pool of unused addresses. However, as there is a pool of those addresses always kept in the file, even if you back it up every 100 transactions, you can still recover all of your money. If you would only be keeping the addresses you use and geenrate new ones on the fly, you would need to back them up each time you send coins.

The main client does not reuse the same addresses to increase your privacy - one would not be able to tell who you would be sending money to, and which address you would own. It's privacy by default, rather than on demand.


Comparison of different active cryptocurrencies I haven't realized until recently how many different crypto-currencies have emerged the last years; coinmarketcap.com lists around 60 of them* and it seems that it isn't even a complete list (for example allahcoin that I've read about recently at HN is not listed).

I guess most of them are derived from Bitcoin and are somehow different trying to solve a real problem, eg Litecoin being more efficiently mined to reduce energy costs, but some are simply clones with only minor twists if any at all, or trying to appeal only specific audiences (gaming community, sex shoppers etc).

I think it would be interesting for me and others, a simple comparison list that explains in a few words how the concept of each currency is different to Bitcoin and what problems are they trying to solve, and not other details such as market capitalization, initial reward, who created it etc.

Related lists:

http://en.wikipedia.org/wiki/List_of_cryptocurrencies (interesting but doesn't explain the differences of the concept)
https://en.bitcoin.it/wiki/List_of_alternative_cryptocurrencies
https://bitcointalk.org/index.php?topic=134179.0 (by far the most complete list and quite close to what I'm asking, but doesn't explain clearly IMHO in all items what are the differences from Bitcoin)

* Follows the list of currencies found in coinmarketcap.com that I'm interested in; description of additional active ones are of course welcome: Litecoin, MasterCoin, Peercoin, Nxt, Namecoin, Quark, ProtoShares, WorldCoin, Megacoin, Primecoin, Feathercoin, Infinitecoin, DogeCoin, Novacoin, Zetacoin, Devcoin, Anoncoin, Digitalcoin, Freicoin, Copperlark, Terracoin, Ixcoin, Cryptogenic Bullion, NetCoin, GoldCoin, Tickets, BBQCoin, StableCoin, Sexcoin, Fastcoin, Deutsche eMark, Unobtanium, MemoryCoin, Datacoin, GrandCoin, Yacoin, FlorinCoin, Mincoin, I0Coin, Tigercoin, BetaCoin, Luckycoin, TagCoin, Diamond, GlobalCoin, BitBar, CasinoCoin, EZCoin, Philosopher Stones, Phoenixcoin, Orbitcoin, Bytecoin, GameCoin, Argentum, Franko, HoboNickels, Noirbits, Joulecoin, CraftCoin, Elacoin, Junkcoin, Spots.

You probably should start from the source by yourself, look here:

https://github.com/bitcoin/bitcoin/network

2,523 forks of bitcoin. Greatest bump ever.

You should get source of 2 coins that you want to compare, and simply diff it. It is easiest way to understand what's the difference.

# git clone https://github.com/fastcoinproject/fastcoin.git
# git clone https://github.com/asiccoin/asiccoin.git
# diff -Hrin asiccoin fastcoin

92,401 different stings. The more than 70% is a .ts files from /src/qt/locale/. Only names asiccoin and fastcoin are different (:

See,

# rm -fr asiccoin/src/qt/locale
# rm -fr fastcoin/src/qt/locale
# diff -Hrin asiccoin fastcoin

16,955 different strings.

etc.

Look, here you can get algo:
http://www.dustcoin.com/mining

Very good comparison list: http://www.coinwarz.com/cryptocurrency

The third one: http://coinchoose.com/

Also, check this bitcointalk thread:  Cryptsy Survival Guide.

However, nowhere you can get full list. Forks are born every day, not only on github. There are 10-20 forks that I have meet, with hosting on google disk. 20-30 without sources.

Edit1: At the end, read this thread.

Edit2: Look what I've found http://www.poolwarz.com


How to get Bitmain U3 running on Linux? How do I get the Bitmain U3 running on Linux?

I'm using Ubuntu Server 11.

I have downloaded the bitmain branch of cgminer and compiled it to using CFLAGS="-O2 -Wall -march=native" ./configure --enable-bmsc

I have also downlaoded the official 4.9.0 and used CFLAGS="-O2 -Wall -march=native" ./configure --enable-icarus` as described in the text for U3

I do a lsusb and it shows this:

cgminer just does this

Is there anything that I missed? I read that its supposed to pick up the U3 automatically with default settings, then I can over clock it a bit to get the 63ghs stable.

The original USB cable supplied was faulty?? After I plugged it into another USB port just above it started to kick in but went ZOMBIE after a few seconds with USB Communication error??

I took another USB cable from my old 10xErupter Mega hub. Plugged it direct into the motherboard USB slot and U3 (also shorter cable).  cgminer started to do all kinds of weird settings until it settled down on AU3.

Using the official git, I compiled cgminer (This also works for Raspberry Pi)

CFLAGS="-O2 -Wall -march=native" ./configure --enable-icarus

NOTE: Since version 4.9.0 you should not need to use any au3 switches

After that I set cgminer to --au3-freq 238 --au3-volt 780 Allot of people say that when you go higher than 780 with the stock 6A power supply it melts in about 10 hours.

So when I get round to using my computer PSU I will clock these at 250/800 as recomended for best speed stability.


Will Confidential Transactions allow us to reuse addresses safely? It is often said that, due to the natural transparency of the blockchain, one should have a multi-address wallet and try to not reuse addresses, so that the user's transactions are not so easily revealed.

Now, it seems at some point we will have the Confidential Transactions feature implemented in Core. So, when this moment arrives, will we be able to reuse addresses? Will it be safe to use a mono-address wallet?

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.


I want to launch my own simple sidechain pegged to bitcoin for testing purposes. Can it be done? I've been reading about Blockstream and Liquid but I was under the impression that sidechain was something that would require changes to the Bitcoin Core platform. Is that correct? I mean, is the bicoin blockchain already supporting a "peg" to another sidechain? Can I already launch my own sidechain like Blockstream did?

The seminal whitepaper on sidechains, "Enabling Blockchain Innovations with Pegged Sidechains," describes modifying Bitcoin's Script to support simplified payment validation (SPV):

To use Bitcoin as the parent chain, an extension to script which can recognise and validate such SPV proofs would be required. At the very least, such proofs would need to be made compact enough to fit in a Bitcoin transaction. However, this is just a soft-forking change⁹, without effect on transactions which do not use the new features.
⁹A soft-forking change is a change which only imposes further restrictions on what is valid inside the chain.

However, this is for a "two-way peg."
For a so-called "federated peg," which does not require a modification to Bitcoin, see Appendix A of the whitepaper or circa 15 min. into Greg Maxwell's presentation.


How to transfer funds from Bitstamp to a personal wallet? I converted EURs into BTCs at Bitstamp.net with SEPA (I live in the in EU), so now the BTCs are sitting on my Bitstamp account, but what's the next step? How do I use and send these BTCs to an average 34 digit bitcoin address?

Could anyone write or explain step by step in nutshell what do I have to do, what other websites or programs do I have to use to transfer my bitcoins from Bitstamp to a 34 digit bitcoin address?

What are the possible ways of doing it?

Are you asking what option lets you withdraw from BitSTAMP?

Across the top menu is Withdraw, and from there pick Bitcoin as the withdrawal method, which gives this link:

https://www.bitstamp.net/account/withdraw/bitcoin/

Now if you are asking where to withdraw your coins to, then that's a different question.  There is not just one answer because various options regarding security will determine the best way to proceed.

If you are looking to store them for a long time, then a paper wallet, generated from an offline computer using a LiveOS might be the right recommendation.

Armory is another client that can be used offline and be very secure for storing bitcoins.

Or perhaps storing the funds using a hyrbrid EWallet, like the one from Blockchain.info/wallet is a good method because it provides a good tradeoff between convenience and security.

Others feel their coins are safe in a hosted (shared) EWallet provider like Coinbase, Paytunia or prefer to leave funds at an exchange even.  If the exchange has two-factor authentication (done properly) that will help prevent the situation where even if your computer is compromised you EWallet account is not at risk of a replay attack.

Others want to run a full Bitcoin.org client themselves.  This is an undertaking as initial startup can take a day or longer to download the blockchain.  A future release of the Bitcoin.org client will make this initial and ongoing performance issue be much less of a burden.  Other clients, Simplified Payment Verification (SPV) clients, such as Multibit.

http://bitcoinmagazine.net/bitcoin-wallet-options
http://en.bitcoin.it/wiki/Mobile_Payment_Apps


Has SegWit been activated yet? Is SegWit activated and when exactly did that happen? I keep getting conflicting information, any help would be much appreciated!

Segwit has been locked in, but not activated yet. Approximate activation date is August 24th, 2017 around 00:36 UTC.

Edit: according to https://xbt.eu "Activation expected at ≈Tue, 22 Aug 2017 21:49:21 GMT"