How does an exchange cover a "run on the bank"? This is not a duplicate! There are several similar questions, but they concern mining or other specific questions. This is not about mining.

Lets look at a specific situation. Lets say the value of bitcoin surged to something ridiculous. Lets say several billion dollars per coin. Now in this hypothetical situation, if everyone on the exchange (or even just a few individuals) decided, "You know what, that's enough for me" and decided to cash out, how would the exchange cover this? There is no way they could handle the surge. So where does the money come from? Of course, if you just keep it and spend your new riches using bitcoin then it doesn't matter, but I fail to understand how the idea of digital currency doesn't break down in this case. Perhaps this is a conceptual flaw of understanding on how the market works. Perhaps the money would have to be there in the first place to have driven the price up so high. Can anyone help explain please?

An exchange isn't a bank, and, in theory, isn't subject to a "run".

Banks are typically "fractional reserve" institutions.  The money deposited by the customers doesn't all reside within the bank; some fraction of it is loaned out or otherwise invested, so that the bank can earn profits and pass some of it back to depositors as interest.  So if all the depositors want to withdraw their money, it isn't there, and some will be left out in the cold (unless there is deposit insurance to make them whole).

Exchanges don't work like that.  Conceptually, all funds deposited by customers, both fiat and cryptocurrency, stays within the exchange.  The exchange doesn't attempt to make profits by investing or loaning out those funds, and they don't pay interest on their customers' deposits.    Instead, they make money by charging commissions on the trades which their customers make with each other.  So in principle, if all the customers of an exchange want to withdraw simultaneously, there's no problem; the money is right there and they can all have what is theirs.

Of course, the exchange might encounter some technical issues processing such a high volume of transactions in a timely manner.  Also, in practice the exchange probably doesn't keep all the fiat money on site; they deposit it in their own bank account, where it stays (although their bank may in turn lend out some portion, as banks normally do).  So if the bank doesn't have many customers other than the exchange, then when the exchange tries to withdraw all their funds to pay out to their customers, it may effectively be a run on the exchange's bank.  But this is unlikely if the exchange chooses a large enough bank to work with, or has insurance.

It's also possible that any given exchange is cheating and not actually behaving like a theoretical exchange should; there aren't too many laws that would ensure that they are doing so.  But conceptually, there is a fundamental difference in the ways that exchanges and banks operate, and the former aren't subject to this kind of problem if they operate as they should.

You might be conflating this with a different issue.  "The price" of a coin is usually understood to be the price at which people are trading the coin right now.  It doesn't imply that an unlimited amount of coin can be bought or sold at that price, and nobody should assume that it does.  If "the price" hits one billion dollars and "everyone" tries to sell, there probably won't be buyers for all of the coin at that price.  The price will fall, probably a lot, until it reaches a level where there actually are buyers and sellers.  This is normal supply and demand stuff, same as for any other asset.


Does a logical mining pool assign harder and harder difficulty to the same miner? Although every mining pool can do things differently, I wanted to get a handle on how a logical pool would behave.  If a miner joins the pool and solves a hash at a low difficult, submits the result back to the pool, which then accepts it, would the next logical thing for the pool to be to assign that miner a slightly harder bit of work to do?  In other words, would the "set_difficulty" level be higher the next time around (assuming the difficulty solved by the miner is less than the network difficulty)?

If the pool does not assign harder work and lets the miner continue to solve problems at the same difficulty (which is less than the network difficulty), how does the overall pool benefit?

[Edit: my previous answer was incorrect in it's explanation, I've updated it since]

  would the next logical thing for the pool to be to assign that miner a slightly harder bit of work to do?

No. In a simple sense, consider this: if the difficulty is increased every time a miner submits their share, then it will increase endlessly over time, which is obviously undesirable.

  If the pool does not assign harder work and lets the miner continue to solve problems at the same difficulty (which is less than the network difficulty), how does the overall pool benefit?

Miners in the pool will split the rewards for valid blocks amongst themselves, according to the share of hashpower each miner is contributing. The pool difficulty is a way to track each miner's share, while also dividing up the work load amongst pool participants.

Each miner has a certain amount of hashpower available, and will set their difficulty to an appropriate level so that they can submit their work and claim their share of the rewards. Setting the difficulty too low is not a way for a miner to claim an unfair share of the rewards, it just means they'll likely find a valid hash sooner, but that valid hash will be worth a smaller share, which balances things out.


Ethereum vs NXT Comparison Chart? Where can I find a comparison chart between these crypto 2.0 currencies like NXT and ethereum? What are some of the major advantages of each of these coins in relation to one another?

I have composed one of the more comprehensive comparison charts of the various Crypto 2.0 platforms over at http://tiny.cc/Crypto (or a more direct link).

It currently has pretty comprehensive comparison between Ripple, Ethereum, Mastercoin, NXT, Counterparty and BitShares, with information on other platforms also available although in smaller quantity.


Can I mine Quark on Linux? Are there any Linux applications for mining Quark coin? I am running CPU Coin Miner and I have the Quark Wallet, both on Windows, but I would like to install these on Ubuntu or some Linux distro. Is this possible?

Yes, there are multiple open source mining clients stated in the Quarkcoin thread. See "standalone miners".


Is it possible to delete received or sent transaction in your mobile btc wallet Please help me to delete transactions from my wallet. I looked everywhere and cant find any help

The Bitcoin Wallet App doesn't have the option to delete or hide transactions from the list.


Offline Wallets: Electrum vs Armory? I'd like to secure my bitcoin with an offline wallet. A lot of security conscious people seem to use Armory. I am trying to get a better understanding of the differences between these two clients.

I plan on having a cheap netbook, never touched the internet, and using it as an air gapped offline wallet. If I need to make transfers then use a USB to sign transactions for the online wallet.

Electrum is easier. Armory is harder. Electrum lean towards minimalism. Armory is aimed at power users.

Even though you asked about offline wallets you will likely want to maintain a watch only version of your wallet on your online system to be able to see the current balance, create unsigned transactions and give out addresses to people who want to send you money. So let's compare the online wallet experiences as well.

Armory's online wallet requires a copy of bitcoin-qt running and that means you need to download the whole blockchain. Armory's online wallet is also known for being a memory hog. The advantage is that you have a local copy of the blockchain and don't have to trust anybody else with that.

Electrum relies on third party servers so it runs pretty lean. The downside is that you loose out on privacy to those servers and if they are compromised they could send you fake transaction data and not broadcast your send transactions. They can't steal your coins though - your private key is never shared with them.

BTW if your netbook has wifi then make sure you turn that off in the BIOS.


ERROR: ReadBlockFromDisk: Errors in block header at CBlockDiskPos(nFile=0, nPos=8) in altcoin I am trying to create altcoin(Abccoin) from bitcoin and change parameters in chainparams.cpp and also generated the genesis block hash and hashMerkleRoot but when I start the daemon with
abccoind -daemon

I get the error in debug.log :

ERROR: ReadBlockFromDisk: Errors in block header at CBlockDiskPos(nFile=0, nPos=8)

Using -reindex also doesn't solve the problem, then I got another error :

ERROR: AcceptBlock: high-hash, proof of work failed (code 16)

Does anybody know how to solve this problem?

The error means that your genesis block has an invalid Proof of Work.


Where can I safely sell a Casascius version 1 physical bitcoin (with hologram error) for cash? I have one of the Casascius coins (this one, to be exact) that contains an error: the small lettering on the hologram reads "Casacius", without the second 's'. I'm a inexperienced when it comes to all things bitcoin, as well as all things collectable.

I understand that one can sell these coins for a premium over their BTC value. Where can I put the coin up for sale relatively safely? I'm willing to sacrifice getting the highest possible price in order not to get scammed.

There is a fairly robust market for these on ebay.  One sells every few days.  I have bought several from ebay with no problems (except for my underperforming post office).

PayPal is a little frustrating but you get used to it.

Be sure to post a good quality photo of the hologram and clearly describe the that it is a V1 error coin.


Bitcoin and Company Launching I'm quite new to anything related to Bitcoin, but let's say that I want to launch a website (in France), where people could buy some items with Bitcoin or could do some bets with Bitcoin. Do I need to register a company to the Chamber of Commerce or could it be a business without any registration?

Thanks

Bitcoin is generally accepted in France however the government seems to be very willing to prosecute anybody who is in breach of reporting or other laws. Somewhat recent proof: http://www.reuters.com/article/2014/07/07/us-france-bitcoin-idUSKBN0FC19220140707

There is not much legislation on Bitcoin, however it is clear that you can not use new technology to break old laws.  Accepting bitcoin as a form of payment for legal products/services is generally agreed to be the same as if you accepted USD or any other currency (for reporting requirements). You can pretty safely assume that accepting bitcoin in lieu of Euros is safe so long as Bitcoin is not illegal in your jurisdiction.

As for the legality of operating a casino/gambling site, there are much more considerations to be had. Of course operating such a casino/gambling site would have to be legal in your jurisdiction, also you should speak with a finance lawyer to determine if you need to register as a Money Transmitter or Money Services Business (since you may be taking money from one to give to another, as opposed to a store which simply takes money and might give a refund to the same client but never transfers money ON BEHALF of said client). You also need to consider which countries/regions you can serve and which you can not. For example, online gambling very illegal in the US, and simply having a US customer can be a breach of American law with hefty penalties. Most sites block US IPs for this reason.


Why do most trading platforms require ID Verification? The vast majority of the Bitcoin trading platforms both in the US and the UK require some sort of ID verification in order to make Deposits/Withdrawals.

Is this because of these two countries current legislation? does this obey to some sort of policy?

Thanks.

In the US, these are called "Know your Customer", and "Anti Money Laundering" (KYC/AML) laws and is enforced by FINCEN (financial crimes enforcement network) in the US for any businesses that qualifies as a "Money Service Business" or "Money Transmitter".

This guidance published on March 2013, http://fincen.gov/statutes_regs/guidance/html/FIN-2013-G001.html , makes it clear that Bitcoin exchanges must comply with existing regulation for KYC/AML.


Is it safe not to record private keys for paper wallets? That may sound like a silly question, but if I have created my keys using a passphrase in “brain wallet” at bitaddress.org, why do I need to record the private key, if I can recreate it at any time by using my downloaded version of bitaddress.org?

To be sure that I can do that safely, I need to know whether the algorithm to generate a private key from a passphrase with a downloaded copy of bitaddress.org is deterministic.

To answer your question: bitaddress.org uses the SHA-256 hash of the password you provided as the private key. Therefore, you can always derive that private key from your password. If you can write a few lines of code, you can test this yourself (I just did).

However, if you generated your passphrase using dice then you are unlikely to memorize it. Therefore, it's not really a brain wallet. The SHA-256 step is really unnecessary, you might as well use the numbers from the dice rolls as a private key (you'd have to convert it to binary, encode it as 32 bytes and then convert it into the wallet import format).

The only reason to do what you just did is if you don't trust the random number generator in your browser. Now that you have a private key, you might as well write that down and forget the input to the SHA-256 hash.


Why do I see a 'Yay' with a 70% match, and a 'Booo' with a 75% match? Just what the title states.
I'm just a couple of days into this idle CPU utilization thing; I run a CPU miner (x-coin-minerd on a Windows 7 box).
Scrolling through the command line output I see several lines that say 'accepted' - some show a 'Yay', whilst others show a 'Booo'. Yet some 'Yay' show a lower match (70%), and some 'Boo' show a higher match (>75%).
(The previous entries were lost, but the most recent Yay/Boo visible on the command line are posted below for reference)

[2014-06-24 08:37:25] accepted: 14/15 (93.33%), 89.76 khash/s (booooo)
[2014-06-24 08:37:45] accepted: 15/16 (93.75%), 89.75 khash/s (yay!!!)

Why do I see a 'Yay' with a 70% match, and a 'Booo' with a 75% match?

I think that it shows "booooo" when a share is rejected, and "yay!!!" when a share is accepted.

In x/y (z%)

x is the number of accepted shares
y is the number of total shares submitted (accepted+rejected)
z is x/y as a percentage (the percent that are accepted)

  Why do I see a 'Yay' with a 70% match, and a 'Booo' with a 75% match?

Because you had a success which raised you to a 70% success rate, and later (after a few more successes) had a rejection which lowered you to a 75% success rate.

(BTW, I hope you know that mining any SHA256 or Scrypt coin on a CPU is almost certain to cost you more than it can earn you)


What are taker and maker fees? Please see the attached pictures as a reference
If I sell my 0.9 Litecoin at 39.18 (assume that I can sell at this price), do I need to pay any fee?
What if I sell my 0.9 Litecoin at 39.15 (assume that I can sell at this price), do I need to pay any fee?

When a market charges taker and maker fees, they differentiate whether you're increasing the size of the order book or decreasing the size of the order book.
When you create an order that is immediately matched with already existing orders, you're a taker because you take liquidity from the market. When you add an order that doesn't match existing offers, you add liquidity to the market and are charged a maker fee.
For example given the following orderbook:

Alice sell 1 BTC at $1000

Bob  sell 1 BTC at $995

Charlie buy 1 BTC at $990

Dave buy 1 BTC at $985

If you add a buy order at $1000 for 2 BTC, you will immediately match the offers of Alice and Bob. You're a taker.
If you add a buy order at $993 it doesn't get matched and you're a maker.

In your case, both suggested prices for your sell order are higher than any buy offers, so you'd only pay the maker fee of 0%.


Is it possible to sign a transaction (to spend) from a multisig address using only one private key? Let's assume there's a segwit address created with 3 different private keys.

Is there a chance that exist 1 (just one) other private key (in the universe of valid private keys) that can sign a transaction from that multisig address (that requires 3 keys to spend)?

If the bitcoin is locked with three private keys using a simple script that involves signing by all three private keys (3 of 3), then there is no way to spend it without providing all three private keys for the signature.

However, bitcoin being a programmable money, it allows you to create a locking script that is decided by time. By that I mean, you can include conditions within your script such that, after x amount of days, you need only 2 keys and after y amount of days you need just one key to spend the bitcoin. Thus, within the broad spectrum of your question, yes the bitcoin can be spent by only one private key that generally requires three private keys, only if the necessary condition is justified in the locking script. Below is the locking script that you will follow to meet the above condition.

IF
    IF
        3
    ELSE
        <x days> CHECKSEQUENCEVERIFY DROP
        2
    ENDIF
    <Pub key 1><Pub Key 2><Pub Key 3> 3 CHECKMULTISIG
ELSE
    <y days> CHECKSEQUENCEVERIFY DROP
    1 <Pub key 1><Pub Key 2><Pub Key 3> 3 CHECKMULTISIG
ENDIF

The unlocking script for evaluation of

3 of 3 will be < Sig 1>< Sig 2>< Sig 3> 1 1. The 1 and 1 at the end indicates evaluating both the first and second IF
2 of 3 will be < Sig 1>< Sig 2> 1 0. 1 will trigger the first IF and then the ELSE in the second loop
1 of 3 will be < Sig 1> 0 0. It will trigger the first loop ELSE


how long do i have to keep Bitcoin-Qt open after sending coins Can I close Bitcoin-QT client and power off my computer just after sending coins to someone or do I need to wait until 1, 2...6 confirmations?

Since there is nothing that shows you that peers have received and are relaying your transaction you might want to leave your client open until there is one confirmation.

In addition to the initial broadcast to peers, there are subsequent re-broadcasts performed by your client if the transaction has not received a confirmation.  This re-broadcast generally will happen in under an hour and will continue indefinitely at about that pace until the transaction gets a confirmation.

Without leaving your client open, these re-broadcasts will not occur.

If other nodes have just started up (i.e., a clean memory pool) or have flushed your transaction due to it not having gotten a confirmation after an extended period of time, only the re-broadcast will get the transaction back into that node's memory pool.

Once a transaction has a confirmation though, there is no further need to keep your client open.  There are some corner cases where that's not true (e.g., a block reorg occurs and that transaction confirmation no longer is valid, etc.) but in almost every instance once a transaction has a confirmation it then no longer needs to be re-broadcast.


RTX 2070 and GTX 1660 super in same rig with 1000W Corsair power supply - rig shuts down I just got my computer back from the shop. I have an MSI RTX 2070 and a GTX 1660 Super in my machine. I swapped out the power supply for a 1000W PSU. Whenever I run ethminer for more than 10 minutes my machine shuts down. I had a technician install the parts because my physical handicap makes me susceptible to damaging the hardware.

I set both of the cards fans to 100% in Afterburner, as well as giving both cards maximum power (electricity is free for me so I don't care how much power I use). Still, regardless of my afterburner settings, my machine shuts down.

I'm pretty sure I have the correct drivers. I didn't give the shop my Windows 10 password so I had to download nVidia's drivers myself. What I don't get is I am maxing out the fan and power settings, so I honestly have no idea why my machine shuts down.

When I just browse the web and do basic computer stuff, everything's fine. However, whenever I run ethminer that's where my problem arises. I'm not a gamer, but I have a few installed whenever I do feel like playing computer games, However, I'm too scared to run ethminer or games because I don't want to damage my computer.

I'm still fairly new to crypto mining so forgive me if this sounds stupid. Thanks a bunch!

I think I figured it out guys.

I removed the Plexiglas off my case because I suspected my rig was overheating. No shutdowns so far, looks like I have to investigate water cooling


Is it safe to show the QR code to his friends? I was opening my Jaxx wallet this morning and some of my friend made a pun saying they would take a phoyo of tmy QR code to buy some tickets with it. I was therefore wondering if it was safe to show the QR code ? What does it stands for ? Here is an example from the ETH forum.

It is your wallet QR code, so no, there are no problems that they have seen it..

Only thing they can do with this QR code is they can scan it and send you money :)

This QR code works like copy/paste on computer, so that user don't have to type in that long wallet address characters he can scan your QR code and the scan will return your wallet address code :)


Linking a transaction to a Bitcoin user Has anyone tried and perhaps succeeded at linking a transaction to a possibly controversial site (such as Wikileaks) to a Bitcoin forum user by their forum signatures? I know a lot of people disclose their Addresses, and since the WikiLeaks address is well known, one would probably just need some webcrawler and be able to make a connection. Has anything like this ever been done?

This article was written regarding the alleged theft of 25,000 BTC in July 2011. A similar analysis could be done using known addresses and identities, I would imagine.


Accepting 0-confirmation transactions and detecting double-spends with open source solution I would like to accept 0-confirmation bitcoin for very small amounts. I am happy to accept zero-confirmation spends and am aware of the risks. However, the tool needs the ability to "flag" the accepted transaction/s if a double-spend is detected. I can then decide what action to take.

I do not want to use a centralized third-party tool. I would like to use something locally on the server. It would simply display pre-generated public addresses. No need for private keys and/or seeds to be on the server.

Does such a tool exist?

Thank you.

You should not interact with bitcoind, because it (current versions at least) filteres double-spend transactions

You should have your own network-sniffer solutution - the program which connects to the network nodes (as many as possible) and listens for all transactions, checking do they have conflicts with particular ones.

(How much would you pay for such program? Just interesting :) )

This is also not 100% safe solution - a miner can place double-spending transaction in block and mine it himself. Look here: https://bitcointalk.org/index.php?topic=327767.0


Doubt regarding hashing function in Merkle trees From what I read, say in a block, there are 4 transactions. The hash value of transactions A and B are combined together to get the hash AB. Same goes for transactions C and D to get hash CD. Later AB and CD are combined together to get the penultimate hash which together with the nonce gives the final hash. This merkle tree structure is provided so that one can go back retracing to the roots (i.e to the initial transactions) to verify them, right?

But what I understand is that hash functions are one way, so it shouldn't be possible for one to go back to the input value by reverse hashing the hash. If that be the case, how does the merkle tree allow one to retrace back and verify transactions?

combined together to get the penultimate hash which together with the nonce

That's not correct. The "penultimate hash" is the merkle root. The nonce is not part of the merkle root at all. That is part of the block header and is hashed along with the merkle root and several other things in order to get the block hash.

  This merkle tree structure is provided so that one can go back retracing to the roots (i.e to the initial transactions) to verify them, right?

No. It is provided to commit all of the transactions to the block and to allow someone to prove that a particular transaction is in that block.

  If that be the case, how does the merkle tree allow one to retrace back and verify transactions?

It doesn't. Given a transaction, you cannot determine whether it is part of the merkle tree without knowing the hashes of other branches in the tree. The goal isn't to determine whether a transaction is in the merkle tree yourself, rather it is to allow for someone else to prove that a transaction is in the merkle tree by having them provide the hashes of all of the other branches in the tree in the path to the root.

In your example of 4 transactions, if you wanted to prove that C is part of the merkle tree, you would provide C, the hash of D, and the hash AB. The verifier would hash C, hash it with the hash of D to get CD, and hash that with AB in order to get the root. Then they would check whether the root that they calculated matches the root in the block header. In this way, a node can prove to a SPV client that a transaction was included in the blockchain.


How bitcoin node server establishes outbound connections to other full nodes I installed bitcoin-core (https://bitcoin.org) on my server and run it as testnet. After that I tried to create a new testnet address "miYAFfw8xFEj2VCKKsMCu5L4uCEvC73xh5" at this page:
http://tpfaucet.appspot.com.
The problem is I don't see the address "miYAFfw8xFEj2VCKKsMCu5L4uCEvC73xh5" on my bitcoin server. I tried with RPC command:
bitcoin-cli getaddressesbyaccount "ngoc_wallet1"
But the result is empty object.

this my bitcoin.conf:

 rpcuser=bitcoinrpc
 rpcpassword=TMPP4iDWrcGMsyhZC2byTW6pb4rHcz4xK17gkKFQ4wnY

 # server=1 tells Bitcoin to accept JSON-RPC commands.
 server=1

 # Run on the test network instead of the real bitcoin network.
 testnet=1

I'm not sure what settings should I need to do more.

I would like to have synchronize bitcoin data from bitcoin network continuously. Please help me to know how the bitcoin server can accept inbound connection bitcoin data from others full node?

Sounds like you created an account/wallet on that website. Just forget about that.

Instead open your own bitcoin-qt, click Receive and copy/paste the address specified there to the faucet website.

In general you always want to be the owner of Bitcoins yourself, not create accounts on websites.


What is the dummy_address when creating an OP_RETURN in this example? Here we see:

mainnet = 0
if mainnet:
    dummy_address = "1111111111111111111114oLvT2"
else:
    dummy_address = "mfWxJ45yp2SFn7UciZyNpvDKrzbhyfKrY8"

What is this? No explanation is given. Can I create my own dummy address? What is this doing exactly, with some detail?

1111111111111111111114oLvT2 is the P2PKH address derived from a HASH160 consisting of all 0s.

mfWxJ45yp2SFn7UciZyNpvDKrzbhyfKrY8 is the same P2PKH address, but in its testnet encoding.

These are well known burn addresses, and any coins sent to either of them will be permanently lost. The example you linked uses them as they are easy to search for (which I don't really follow - any known address is easy to search for). You should replace them with an address for which you have the private key in your own code.


BTC - Mining Vulnerability and Future Consesus In order for changes to the Bitcoin protocol to be made, 95% consensus must be achieved, otherwise a hard fork would need to occur? Is this the primary reason why changes to the core protocol are so difficult to make?
With regards to consensus mechanism, moving aside whether PoW/PoS/Other is the proper solution, since the vast majority of voting belongs to large mining pools why would they ever vote for PoS or another non-mining solution? It seems even if a superior consensus mechanism exists it is highly doubtful BTC would ever deviate without a hard fork?
I've seen charts online breaking down the mining pool ownership percentage of BTC. I also know some pools have committed to cap their hash power and operations so as not to gain 51%. However, is it possible that a 51% attack could already be occurring and we have no idea? How do we know the mining operations aren't in collusion already and have not already been double spending, etc? If fraudulent activity occurs would we actually ever know?
Thanks!

In order for changes to the Bitcoin protocol to be made, 95% consensus must be achieved, otherwise a hard fork would need to occur? Is this the primary reason why changes to the core protocol are so difficult to make?

No. Changes are made regularly and you can subscribe to https://bitcoinops.org/en/newsletters/ for updates. Hard forks are not preferred to avoid chain split and other issues but can be used if it's really necessary. Some soft forks are contentious so consensus is a problem which can be solved each time with different solutions. BIP 9 was used for segwit so miners, voting and drama was involved: https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki
Taproot activation and consensus related discussion: https://www.reddit.com/r/Bitcoin/comments/hqzp14/technical_the_path_to_taproot_activation/

I've seen charts online breaking down the mining pool ownership percentage of BTC

I dont see anything wrong with this mining pool distriibution: https://i.ibb.co/pwxjvtc/image.png

However, is it possible that a 51% attack could already be occurring and we have no idea? How do we know the mining operations aren't in collusion already and have not already been double spending, etc? If fraudulent activity occurs would we actually ever know?

As Raghav mentioned there are lot of users keeping an eye on network activity. You should run your own full node and wait for more confirmations to finalize transactions if you think there is a possibility of miners trying to reorder history. Please refer to Greg Maxwell's thoughts on 51% attacks: https://www.reddit.com/r/Bitcoin/comments/ddddfl/question_on_the_vulnerability_of_bitcoin/f2g9e7b/
And also read about game theory involved in 51% attacks or any attacks on Bitcoin network:
Few things and one case mentioned by Jimmy Song - https://medium.com/@jimmysong/reorg-scenarios-binance-hack-edition-849fc7e7df07
Stratum V2: https://braiins.com/news/stratum-v2-bitcoin-decentralization
Jameson Lopp's thoughts about mining and decentralization: https://blog.lopp.net/are-chinese-miners-threat-bitcoin/


What are the downsides of proof of stake? I am very skeptical about the security of the proof of stake system. Is it really that secure? Are there no disadvantages?

Vanilla proof-of-stake doesn't achieve consensus, unfortunately. People staking their coin can vote for both forks of the blockchain, and can even mine effortlessly in secret. In PoW this is impossible, as you are literally wasting energy by mining both sides of a fork.

To mitigate this, most modern PoS schemes use a mixture of PoS and PoW to ensure that someone will finally decide the chain.

http://www.reddit.com/r/Bitcoin/comments/1oi7su/criticisms_of_proofofstake/ for more discussion.


Coinbase purchase bitcoin transaction pending, why is it painfully slow to purchase I have purchased bitcoin using coinbase app 3 hours ago and the transaction is still pending. Is it usually this painfully slow to transact on coinbase?

Coinbase is a service, your transaction is happening on their internal servers, not the bitcoin network. If you choose to withdraw your bitcoins to an external wallet, that would involve a transaction on the bitcoin network.

So the delay depends entirely on Coinbase, during high volume times I would guess their order fulfilment is slightly slower. Your order will come through though!


Address not valid when withdrawing money from Binance I want to withdraw the Vibrate crypto from binance. When I enter the BTC wallet address which I took from my account from coinbase, binance says invalid address. Am I missing something here?

Note: You cannot withdraw to a bitcoin wallet as it is an entirely different network.

You would need to install a wallet that supports the so called "Vibrate" cryptocurrency, then use that to generate an address to withdraw to. I have no idea what "Vibrate" is to be honest, the closet I could find was something called "Viberate" which seems to be an Ethereum ERC20 token.  So, if you want to withdraw those, you need an Ethereum wallet that handles tokens.  One popular wallet is MyEtherWallet.


Is there a way to store and share a private key through blockchain? This is more a blockchain than a bitcoin question:

I would like to use a blockchain (potentially a permissioned one) to manage ownership of a device. But linked to the device there is a private key.

Is there a way for the owner of a device to access to this private key, ideally only using blockchain?

A blockchain, in whatever form, is ultimately a shared transaction log that multiple nodes eventually agree on.

All information in the chain is public (to all participants of the system, not necessarily the whole world). Sharing secret information using a public log makes no sense: everyone would see the key.


Deposits to an Offline Wallet What happens when I put a deposit into my wallet, while my computer is offline?

Lets say for example, I automatically deposit btc from a pool to the wallet on my computer, but I shut my computer down for a week/month/ or whatever.
Will the Bitcoins be in some kind of "cloud" until my computer/wallet is online again?
How does this work?

Thanks!

-Kevin

Bitcoins are stored in a decentralized ledger called the blockchain.  When your computer is shutdown the blockchain stores the balance in your associated public key also known as an address.  If you are using the reference client (Bitcoin-qt) you will be able to spend your Bitcoins once the computer is turned back on and the blockchain has downloaded all of the transactions that have occurred since it was turned off.   So while your PC is off yes you can still receive Bitcoins because the rest of the network has seen the transaction that is incoming to your address and they will continue to store that information indefinitely.


Does Electrum provides any API? Does Electrum provides any API? If yes, please let me know if there's any dedicated documentation available.

Also, does Electrum support Bitcoin Cash?

Purpose:
I want to integrate Electrum into my application for wallet service and seeding capabilities. I'm planning to run full node for BCH and BTC.

Yes for sure, You can send requests to electrum servers or your server (recommended) by sending JSON-RPC requests.

Take a look on Electrum documentation

https://electrumx.readthedocs.io/en/latest/protocol-methods.html

for bitcoin cash use Electroncash  same commands work.

For example, to broadcast a hex transaction you can call

{"id": 1, "method": "blockchain.transaction.broadcast", "params": ["YOUR_HEX_TRANSACTION"]}

There are no wallet commands available, but blockchain commands.


Mining Difference with Multiple Rigs between Bitcoin and Zcash I try to understand how the mining hardware environment is different between Bitcoin when centralized mining ecosystem is more encouraged compare to Zcash or Ethereum where pooling is more encouraged.

So is it true that when you have 2 separate rigs mining bitcoins, each individually not joining a pool, they could compete with each other, as oppose to mining Zcash or Ethereum, the 2 rigs join forces to mine together
in the same pool?
regards

There is no difference between bitcoin and zcash here, mining with multiple machines work the same way.

If you have 2 machines they can mine in the same mining pool or separate pools. You choose.

Your machines are never competing against each other. You are the one that get paid for the work of both machines.

If you are solo mining instead of using a pool, the machines are still not competing against each other. They are both trying to find a block for you, the owner.

The bad thing you want to avoid is having both machines do the exact same work. That would be a waste. The second machine wouldn't be doing anything useful. Handing out duplicate work would be a serious fault in the mining pool software.


How to create hex of raw transaction Below is my response after creating the transaction. How do I create the hex encoded string of raw transaction in PHP. Is there package for it in PHP ?

{
      "tx": {
        "block_height": -1,
        "block_index": -1,
        "hash": "e489b823ac92e0f6f254f40ffca90aa026536c0a969302c0dbf27cc746613283",
        "addresses": [
          "C4TBnUyFj5kX9CPp4im8LDWa8d9kgJZMP8",
          "CCLA1wbxJEKLugrPvfpbzo9ApFVPg54asv"
        ],
        "total": 954600,
        "fees": 45400,
        "size": 119,
        "preference": "high",
        "relayed_by": "182.72.122.170",
        "received": "2018-02-06T08:47:01.900244013Z",
        "ver": 1,
        "double_spend": false,
        "vin_sz": 1,
        "vout_sz": 2,
        "confirmations": 0,
        "inputs": [
          {
            "prev_hash": "48e09cbf4701230038783a8ea3ef8c6b46b79aef897f54ed7af9ffc130f2072b",
            "output_index": 0,
            "output_value": 1000000,
            "sequence": 4294967295,
            "addresses": [
              "C4TBnUyFj5kX9CPp4im8LDWa8d9kgJZMP8"
            ],
            "script_type": "pay-to-pubkey-hash",
            "age": 1695612
          }
        ],
        "outputs": [
          {
            "value": 10,
            "script": "76a914d2a9103585799178a88be5cc9c6e7fcb4813e29788ac",
            "addresses": [
              "CCLA1wbxJEKLugrPvfpbzo9ApFVPg54asv"
            ],
            "script_type": "pay-to-pubkey-hash"
          },
          {
            "value": 954590,
            "script": "76a9147c3c71d0560de62cbfcb70d7f753aa487191646988ac",
            "addresses": [
              "C4TBnUyFj5kX9CPp4im8LDWa8d9kgJZMP8"
            ],
            "script_type": "pay-to-pubkey-hash"
          }
        ]
      },
      "tosign": [
        "3fad63985892f8e3ddb36f926503b6873bd91c456a24e12771d47a0cb5dc730f"
      ]
}

Bitwasp-PHP can do it. with much more features.


What is differences of bitcoin mempool anchestor and descendant? is there a specific explanation about the differences between mempool anchestor dan descendants?

there are RPC commmand for "getmempoolanchestors" and "getmempooldescendents". What is mempool anchestor and decendents it self?

each node may have a different mempool size, but what are the differences of the mempool anchestor dan descendants?

Given a transaction, there are inputs to that transaction which are spent to new outputs. The inputs themselves are outputs from a previous transaction. E.g. in tx 1, person A sends BTC to person B. Then, in tx 2, person B uses those outputs to create another transaction to person C.

A -> B
B -> C

Transaction 1 is an ancestor of transaction 2, because without transaction 1, #2 is not valid (the outputs do not exist). Likewise, transaction 2 is a descendant of transaction 1.
The RPC commands let you list ancestors/descendants of any given transaction, which are in the mempool (have not been mined and included in a block yet).

getmempooldescendants "txid" ( verbose )
If txid is in the mempool, returns all in-mempool descendants.

See getmempooldescendants

getmempoolancestors "txid" ( verbose )

If txid is in the mempool, returns all in-mempool ancestors.
See getmempoolancestors


How are blocks verified? I see in the bitcoin wiki there is something called "script" which compiles down to some bytecode to be run by a very very basic virtual machine.
Does this mean that each block is actually just a string/array of bytes when it comes in and is processed by a node?
so a block in its "true" format would look something like [0x01, 0x04, 0x0f, 0xa1.... etc. ?

and then the node that recieves the block just puts the bytes into the interpreter to be run by the bitcoin VM?

which is correct? a block is pure bytecode or JSON? what would a bitcoincore node understand when receiving a new block?

A block consists of a header, and then a number of serialised transactions. The block header contains no script, it only contains data such as the merkle root of the transactions in the block (so the header commits to the list of transactions), nonce, version number, etc. Note that a block isn't encoded with JSON, it has its own serialisation format which you can find in most developer documentation (e.g. here)

The script is contained only inside transactions themselves, specifically to dictate the spending condition of an output. An output will have a scriptPubKey which holds the outputs script (usually of a specific form like P2PKH, P2SH) and the input when it's spent will contain a scriptSig which contains the spending script. In segregated witness transactions, the scriptSig will be empty and the script will instead be in the witness section of the transaction, but it's still the same principle.

Block verification takes a number of steps such as validation of the proof of work, validation that the timestamp is ok, that the coinbase transaction is ok, that all the other transactions are ok, etc etc.


Relation between bitcoin price and other cryptocurrencies prices If bitcoin price goes up, Will that increase the value of the other cryptocurrencies?

Edit: If yes, then WHY? Seems a mystery for me since I guess every coin has its independent price.

Thank you

It depends, obviously. Short answer, yes.

Bitcoin used to make up a huge percentage of the value of all Cryptocurrencies, so obviously since Bitcoin was the largest and most used, if it were to crash or change in price drastically, obviously most of, if not all other cryptocurrencies would be affected.

Bitcoin still makes up a large percentage of the Cryptocurrency Market Cap, over 34% on January 25, 2018, followed by Ethereum with 18%.

This is important not to be mistaken though. Perception is what controls the price of Cryptocurrencies.

since bitcoin is the leader of all cryptos, if news were to come out that someone figured out how to exploit it's "proof of work" algorithm, or something giving Bitcoin a negative perception, it would loose value.

Because Bitcoin is so prominent in the crypto world, all other coins would be impacted too, because its literally the "leader".

of course if news comes out that a very small and unknown cryptocurrency would grant you super powers if you owned enough, just that cryptocurrency would go up, not really impacting others because it doesn't have a large market cap.

So in short, the larger market cap, the larger the impact on other currencies


Effect of Mining on Hardware I've installed a mining client on My Macbook pro, which was giving almost 1 MHash/s at full capicity. I found on some reddit thread that Mining may affect the hardware i.e. mother board or graphic card and their lifespan.

So my question is what will the mining work do to my laptop's(or pc's) hardware? Will it burn it out? How can I optimize the machine to be Mining friendly?

I have a 2012 Macbook Pro mining Litecoins (CPU&GPU at a combined 80kHash/s) and a 2011 iMac (71MHash/s on its HD5670) mining BTC. They both run overnight and on weekends, I turn the mining software off over the weekday. Doing this for months now.

So far, there were no overheating problems, but i have an extra cooling stand for the Macbook, which i would recommend.

Still, I expect the hardware to die sooner. The heat management in Apple machines is very delicate because of the case design, and I heard of people waking up to a dead iMac.


Looking to start mining litecoin/altcoin I'm new to all of this... want some help with definitions such as GPU/CPU, etc..

Also, I understand BTC is no longer relevant in terms of individually mining... what would I purchase for under $200 that I could use to mine litecoin or altcoin or anything like that?

I recommend you try mining with your current hardware first for Litecoin and a less popular altcoin like Yacoin, then look to invest in hardware.  Litecoin is popular enough that it will take you multiple weeks before you earn enough in a Litecoin pool to withdraw.

You can compare Litecoin hardware output here:
https://litecoin.info/Mining_hardware_comparison

Yacoin is up and coming but is still low in difficulty enough that you can earn enough in a day or two and while using your CPU.

http://www.yacoin.org/

For an example to put it in perspective, on one of my machines, I mine for Litecoin using my GPU and I also mine for Yacoin using my CPU.  I am getting close to 5 Litecoins mined but I have already mined over 700 Yacoins.


Standardized symbol for "pay with bitcoin" What symbol do I use to tell customers that our business accepts Bitcoin? For example many businesses use the visa symbol to show that they accept visa, But i want to know what is Bitcoin's equivalent? Should I use the "coin" symbol?

Although there is no official "Bitcoin Accepted Here" sign, the most popular graphics for this purpose seem to be these:

Source: https://bitcointalk.org/index.php?topic=1631.0


How explicitly can the blockchain be pruned? How can the blockchain be pruned?

If the blockchain is tamper-proof thus cannot be changed, how can the data be removed?

Please be as explicit as possible.

The blockchain itself cannot be pruned.

Each block is verified through hashing all its data and a random nonce to find a hash that has a certain number of leading zeroes. If you even removed a single little bit of data from a block, the resulting hash would be changed. As most likely the new hash would not fulfill the difficulty requirement, the proof of work would have been destroyed. You'd have to create a new block to take its place. Then however, you would also have to recreate all subsequent block, as the parent's hash (think of it as a fingerprint) is included in its children block, i.e. if you change the parent, the whole blockchain succeeding from it becomes invalid as well.

What can happen is that the database of verified transactions that Bitcoin-Qt clients store is pruned. So far, after verifying each block, full clients keep every transaction that has ever happened locally. Instead, you could only keep the transactions in your database of which the outputs have not been spent yet.


Will SegWit allow for m of n multisig with very large n and m? By reading this answer, I understand that in m-of-n multisig addresses, m and n are limited by the maximum size allowed by the P2SH redeemScript (i.e. 520 bytes).

However, in this section of BIP141, it is stated that the witnessScript can be as long as 10,000 bytes. As far as I understand, this implies that with SegWit adoption it should be possible to create and use m-of-n multisig addresses with very large m and n that will be considered valid.

By my calculations we will be able to have ns as big as around 300. Am I understanding this correctly?

For instance, would the following witnessScript, which should represent a 50 out of 100 multisig address, be considered valid and spendable under SegWit?

0x01 0x32 <100 public keys> 0x01 0x64 OP_CHECKMULTISIG

By reading this answer, I understand that in m-of-n multisig addresses, m and n are limited by the maximum size allowed by the P2SH redeemScript (i.e. 520 bytes).

That's correct. Even though the OP_CHECKMULTISIG script opcode supports more keys, more than 15 public keys simply don't fit in a P2SH redeemscript, so that becomes the limiting factor.

  However, in this section of BIP141, it is stated that the witnessScript can be as long as 10,000 bytes. As far as I understand, this implies that with SegWit adoption it should be possible to create and use m-of-n multisig addresses with very large m and n that will be considered valid.

BIP141 only describes the consensus rules - i.e. what transactions are valid inside blocks. There are a number of standardness rules that apply for transactions to be relayed and accepted into memory pools, to avoid potential avenues of abuse before they're understood. Bitcoin Core 0.13.1 and up limit witness scripts to 3600 bytes for that purpose.

  For instance, would the following witnessScript, which should represent a 50 out of 100 multisig address, be considered valid and spendable under SegWit?

  0x01 0x32 <100 signatures> 0x01 0x64 OP_CHECKMULTISIG

I assume you mean public keys there instead of signatures?

No. OP_CHECKMULTISIG itself only supports up to 20-of-20, so if you want to use that opcode, you can't go above 20. However, you can construct others scripts that go above those limits.

In particular:

<pubkey1> OP_CHECKSIG
OP_SWAP <pubkey2> OP_CHECKSIG OP_ADD
OP_SWAP <pubkey3> OP_CHECKSIG OP_ADD
...
OP_SWAP <pubkey67> OP_CHECKSIG OP_ADD
<m> OP_NUMEQUALVERIFY

would implement an m-of-67 policy, with less than 3600 bytes.


How can I start bitcoind without blockchain synchronization? Suppose I make a locked wallet with 50000 pre-generated addresses.

As long as I researched, only way I can collect those 50000 addresses using RPC and "getnewaddress". Feel free to correct me.

I understand this will took several hours or days, so I can set this up on some VPS and let it run.

For this I do not need blockchain to be synchronized.

How can I start bitcoind without blockchain synchronization?

I am thinking about "connect" option or testnet, but both looks like a hack.

The recommended way is to use the -connect option. You can do -connect=0 or -noconnect (they mean the same thing) and Bitcoin Core will not try to automatically connect to any other node.


Locking litecoin wallet with JSON-RPC There is this very helpful post detailing how to lock and unlock your bitcoin wallet using walletlock and walletpassphrase api calls. Unfortunately the litecoin api does not boast these features.

I was wondering if there is a similar strategy in place for securing a litecoin wallet perhaps using the lockunspent command?

Actually, Litecoin-Qt/litecoind v0.8.5.2 and probably several v0.8 releases before do support these api calls.

The --help doesn't seem to have any entries on these commands but this is true of Bitcoin-Qt/bitcoind as well so if you want to submit a bug report or code it and submit a pull request, please do so at https://github.com/bitcoin/bitcoin.


How to check status of an order on BTC-e API? It would appear there is no way of obtaining fill notifications for active orders.

If I am mistaken, please enlighten me!

When orders are submitted to a BTC-e account, either via API or their website, and they are NOT instantly filled, they get assigned an OrderID integer. I can query the authenticated API for account info, which will give me back a list of all Active Orders and associated OIDs, but aside from having my program maintain a list of what it "thinks" are Active, versus what actually is active on the account by sending a query every X seconds, I do not know of a simpler/faster way to determine what orders got filled or when.

I also would like some clarification on the status field of the order response from API. it would appear 0 is active and 1 is filled. What are the values for partial fill and cancelled?

There is also a way to see All orders on the website by going to Finances->Orders History and then the drop down for Show All, is there a corresponding API call for that?

I need to be able to monitor for partial and complete fills.

It appears you are looking at "active orders" if you are seeing this status. As per BTC-e API documentation (found at: https://btc-e.com/api/documentation), you should be looking at trade history, which will show completed orders. Partial orders would show as individual trades on as the result e.g. if you place a sell/ask order 1 BTC @ $1000 and I were to place a buy/bid order of 0.1 BTC @ $1000 then you would see a trade of 0.1 BTC @ $1000 in your trade history, if I were to place the same order again against your 0.9 BTC remaining you would see two trades for 0.1 BTC @ $1000. This data is shown here for partial trades even if the order is still active.

Since the standard output is limited to the 1000 most recent transactions, I would recommend making use of the 'from' parameter when scraping trade data. You can increase the number of results but BTC-e will likely place a limit on how much data can be returned at some point in the future. You can also stagger API calls to get 1000 transactions at a time, however I would recommend putting this data in a table for better access.


Re-index/Re-download from specific height? I seem to have discovered corrupt blocks on one of my nodes. The node is on all the time to keep up to sync and the rest of my nodes connect to it to retrieve block data when they need to sync. The node that's on all the time seems to be running fine, but when syncing my other nodes using data served from it, they report these five repeating errors after a certain block height:

2020-02-16T05:08:34Z ERROR: AcceptBlock: bad-witness-merkle-match, ContextualCheckBlock : witness merkle commitment mismatch (code 16)
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-witness-merkle-match, ContextualCheckBlock : witness merkle commitment mismatch (code 16))
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-txnmrklroot, hashMerkleRoot mismatch (code 16))
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-txnmrklroot, hashMerkleRoot mismatch (code 16))
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-txnmrklroot, hashMerkleRoot mismatch (code 16))

I suppose this means the data being served from the head node is corrupt. My question: Is there a way to redownload and reindex from a specific block height instead of reindexing the whole thing? Would reindex even fix this problem? It seems like the block data is what's wrong, but the node doesn't know it.

A reindex will not redownload the block. However, after safely shutting down Bitcoin Core, you can delete the block file containing that block. When you start it again, you will need to reindex, but once it gets to the blocks that you deleted, it will redownload them.


g++ problem compiling litecoind on Ubuntu Server i386 I am trying to compile litecoind on Ubuntu 11.10 i386 server.

I used this recipe I found:

git clone https://github.com/coblee/litecoin.git
cd ~/litecoin/src/
make -f makefile.unix litecoind
mkdir ~/.litecoin/

But I am stuck there:

make -f makefile.unix litecoind

I get:

# make -f makefile.unix litecoind
makefile.unix:138: warning: overriding commands for target `obj/nogui/scrypt.o'
makefile.unix:135: warning: ignoring old commands for target `obj/nogui/scrypt.o'
g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH  -DUSE_UPNP=0 -DUSE_SSL -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/checkpoints.o checkpoints.cpp
checkpoints.cpp:5:59: fatal error: boost/assign/list_of.hpp: No such file or directory
compilation terminated.
make: *** [obj/nogui/checkpoints.o] Error 1

Anyone know what is going wrong? Seem like a file missing or a problem with the compiler. Also failed on Ubuntu server 11.10 x64...

In that case the solution is:

sudo apt-get install libboost-all-dev

Thank's to David Schwartz for his help.

The file ~/litecoin/doc/build-unix.txt contains build instructions.  The one you're missing is on line 61:

sudo apt-get install libboost-all-dev


Bitcoin cli asks to use estimatesmartfee with new syntax that is not described in docs In previous versions of bitcoin-cli I've successfully used estimatesmartfee 2 syntax. But now cli answers {'errors': ['Insufficient data or no feerate found'], 'blocks': 0}. How should I estimate fee now?

estimatesmartfee requires that bitcoind have been running long enough to gather data about the current fee rates on the network. This can take some time. Try running it again after a few hours, or a day or so, once it has collected data.


Why are Bitcoin prices so different between different markets? Sorry if this is a basic question, I'm new to this stuff.

Currently, according to cryptocoincharts.info, Bitcoins are trading at $1050 on BTC-E but $1228 on Mt. Gox. How is this possible? What would cause such a large price discrepancy? Shouldn't it be possible to capitalize on this difference by buying at BTC-E and selling at Mt. Gox, and if so shouldn't that tend to equalize the trading prices?

Mtgox has dollar withdrawal problems. So a dollar within Mt. Gox is worth (valued) less. So you pay more dollars and take your bitcoins out, hence the higher exchange rate.


How do I transfer bitcoins into a United Kingdom bank account? Does anyone know the best way to change bitcoins into pounds (GBP), then do a bank transfer or paypal transfer? I've found some, but they take a week.

The factors that matter for any cash-out decision are:

Where are you located (country)? (you mention UK)
How much are you looking to trade?
What type of cash are you looking to receive? (you mention bank transfer or PayPal)
How soon do you need access to the proceeds?
Is privacy important?

Specifically for cash-out to PayPal, options include:

http://www.FastCash4Bitcoins.com (among the lowest fees, funds not always available though)
http://www.VirWoX.com (BTC --> SLL, SLL --> USD)

BitBargain is probably your best method:

https://bitbargain.co.uk

Or, of course, you have many local cash out methods:

https://localbitcoins.com/postal_code/uk/london/

And there are local traders who will buy your coins:

http://bitcointalk.org/index.php?action=profile;u=65105
http://bitcointalk.org/index.php?topic=130949.0

You might be able to find someone willing to trade over-the-counter (OTC) but you only want to do this with a trusted counterparty.  The #bitcoin-otc marketplace's Web of Trust (WoT) will help as it has a trust history.

http://www.Bitcoin-OTC.com
http://webchat.freenode.net/?channels=#bitcoin-otc-foyer
http://webchat.freenode.net/?channels=#bitcoin-otc-uk  <-- Specific to UK

Here are more cash-out options:

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


What should I do to increase bitcoind sync speed? My VPS has 2gb RAM and CPU core is 1 and 1 TB HDD storage. The sync speed is very slow. Currently it has about 700 MB free RAM. bitcoind is taking about 66% of the 2GB ram.
Should I add 1GB more RAM or is there any way to get similar improvement using any configuration?

First, make sure you have listen=1 in your bitcoin.conf file, and that the P2P port is open on your VPS so that it can make more than 8 connections.

Then you'll want to make sure you have a high disk speed or IO specified (definitely not HDD - I have a feeling you meant SSD). The faster the SSD the better. 2GB RAM should be fine, but you may want to up it to 4GB and 4 CPUs, at least while syncing. bitcoind will use the most resources while syncing, then you can downgrade once it's synced.


Difference between scrypt and sha-256 mining? So in detail my question is:

are both these two algorithms different from each other?.
I read somewhere that this two algorithm is used for the different cryptocurrency. if that's true. then why?
which one is efficient as compared to another one.

that would be much appreciated if you give me answer with some example.

are both these two algorithms different from each other?

Yes. Different algorithms with different (invention) purposes: SHA256's goal was to be extremely hard to be collided, while Scrypt aimed to be a RAM and CPU heavy algorithm.

  I read somewhere that this two algorithm is used for the different cryptocurrency. if that's true. then why?

Consider Bitcoin and Bitcoin Cash. Bitcoin Cash's hashrate is ~90% lower than Bitcoin's. However, profit maximizing miners switch to Bitcoin Cash when it's more profitable, and then jump back to Bitcoin. This causes Bitcoin Cash block times to be unstable, between 3 minutes and 60 minutes. If your coin uses a different kind of PoW, then that's not possible. Of course, you can improve the coin's difficulty algorithm to overcome these issues (DogeCoin is a little SHA256 coin, but its difficulty algorithm "DigiShield" is pretty great), however Litecoin prefers to use a different solution: to have a different PoW.

  which one is efficient as compared to another one.

SHA256 in terms of energy and Hash / unit time.


Regtest setup to analyze the protocol I'm currently working on my bachelor thesis in which I have to analyze which are the scalability issues the bitcoin protocol has and try to see how it react changing different parameters ( for example the block size ecc... ).
I have downloaded the entire blockchain and I'm currently setuping a private regtest network. I also have been asked to try to use the real transactions up to next week, "load" them in my regtest mode and start testing on this environment. Is this possible? I mean, is there a way to import the real bitcoin transactions on the blockchain into a private blockchain? Do you know any other solution/advice that could help me perform this task?
Moreover, if you know any interesting article/paper about scalability and blockchain would be really useful.
Thanks everyone! :)

I mean, is there a way to import the real bitcoin transactions on the blockchain into a private blockchain?

no


At what rate are new addresses appearing in the blockchain? How many new addresses are the recipient of transactions hourly? daily? weekly? monthly?

I understand that this is always changing, so bonus points if you can provide code to calculate it!

Blockchain has a chart of new addresses per day:

http://blockchain.info/charts/n-unique-addresses


how to get realtime new transaction data in nodejs from bitcore I want to run a private node, and use it to receive realtime unconfirmed transactions data into my nodejs script.

How do I go about this?

Either you use some nodejs library which would give you a high level wrapper for the bitcoin core api getrawmempool, or make your script hit your local bitcoin instance in the json-rpc format to get the memorypool data your node has.
The memory pool is basically where the transactions stay before getting confirmed in a block. So your script needs to run in regular intervals of time to keep track of the changes too.

url: http://<username>:<password>@localhost:18332/
post data:{"jsonrpc":1,"id":"curltext", "method":"getrawmempool", "payload":[]}

The username and password is checked from the bitcoin.conf file in the .bitcoin folder. Change the port number to 8332 in case you are running the mainnet daemon.


How to power the Bitmain Antminer C1? Bitmain has a new miner out that is pretty cool (water cool to be exact) called the Antminer C1.

I have an S1 so I am familiar with the basic operation of the Antminers. However, I'm a bit baffled that it has eight PCI-e connectors for power. I've never seen a PSU with eight PCI-e connectors. I'm not sure how I would power this thing effectively if I got one.

I found a great setup guide, but it doesn't go into detail with the power setup.

Here's a picture of how the connectors are set up:

Here's my questions:

The C1 requires that at least four of the PCI-e connectors are used. Which ones then are the important ones?
It is recommended that your PSU be at least 800 watts. Is that correct? Is it different if you only power it through four connectors?
Is it possible to use two or more PSU's to power the miner? For example, I have tons of 300 to 500 watt PSU's that have at least one PCI-e connector. How might those be useful to me?
Do they even make PSU's with eight PCI-e connectors? What is the best solution for a single PSU to power all eight connectors?

AntMiner C1 Manual:

  You must prepare your own ATX Power Supply. There are 4 PCI-e connectors for +12V DC
  input and all are required.

That either means:

The manual is right, and some of these are not 12V connectors. This seems unlikely.
The manual is wrong, and you need eight 6-pin PCI-e connectors.

  Is it possible to use two or more PSU's to power the miner?

It depends on how they designed the miner. Those connectors might join together inside the miner, which would mean that you'd want one power supply, or they might be two separate circuits, which would mean it would be more or less safe. Generally, you don't want to use two power supplies to power the same part, though. Can you take a picture of those connectors with the case off?

As for the power supply recommendation - power supplies with eight PCI-e are very expensive, primarily because nobody needs that many. I mean, a typical desktop computer is probably going to need one PCI-e connector. They do exist, though.

However, I would recommend getting two power supplies with four PCIe connectors. I suggest the Cooler Master G650M.

Oh, and the manual says this, which suggests that it's not water-cooled out of the box:

  Cooling kit is not included in C1, please read the instruction at www.bitmaintech.com to
  buy them.


What good is to store all the transactions in the history Bitcoin stores all the transactions that happened
in the blockchain.

Are really all the transactions needed? What good is it
to have transactions ten years old stored. Isn't it a waste
of discspace?

The bitcoin blockchain is a record of all transactions. This allows the user to independently validate transactions, and thus verify the authenticity of coins. However, you don't need to store all of the transactions for all time, by running a 'pruned node' you can keep disk-space usage low, while still verifying all transactions.

Background: bitcoins exist as 'Unspent Transaction Outputs' (UTXOs). Each individual transaction will consume some number of UTXOs as inputs*, and create new UTXO(s) as output(s).

Under this model, you can trace a UTXO back in time in order to validate it as being an authentic bitcoin transaction. For example, consider some bitcoin you receive today, lets call it 'UTXO-3'. In a simplified manner, you could trace the history of this UTXO-3 (to it's input 'UTXO-2', and so forth), until you find the coinbase transaction that mined the coins.

So ,going back in time, from your UTXO-3:

UTXO-3 <- UTXO-2 <- UTXO-1 <- Newly mined coins

This allows a bitcoin (UTXO) to be traced back to it's origin on the blockchain, which means you can validate it as an authentic bitcoin. Without this feature, you would be unable to verify for yourself that the bitcoin in question was created in a way which follows the network's rules. As mentioned above, bitcoin's design allows you to perform this verification without explicitly storing all transactions for all time (by running a pruned node).

Additionally, as Pieter mentioned in a comment, a user has the option to use a light-client, which does not require the user to store a copy of the blockchain locally (although this employs a slightly different trust model than running a full-node yourself).

.* (the exception to this rule is a coinbase transaction, which follows special rules to generate coins, without having any inputs)


How Mining Reward Goes to Our Wallet? Let us consider, if someone found a bitcoin block using his pc, then how he can get reward BTC to his bitcoin wallet?
I really don't know how a miner get reward of 12.5BTC to their bitcoin address. Does bitcoin header address contains miner address? if any one know please tell me.

Miner's address is in the coinbase tx that is included in the block. See Whats the process of Creating a Block on the BlockChain


PHP: is there a way to convert a private ECDSA key to its corresponding public key? As described here (https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses) I am trying to convert a private ECDSA key to its corresponding public key. (See step1 and step2).

I think I need some code which multiplies some coordinates on the elliptic curve. But I dont know how. Can someone help me, please?

// Unfortunately, this answer doesn't help me enough since I don't understand how to use the code. Can someone clearify that or give alternative solutions? Thanks

Yeah, you do "need some code which multiplies some coordinates on the elliptic curve" :). If you don't have extensive cryptography experience I would recommend you use library rather than trying to implement details yourself.

Googling I've found Bitcoin-lib-php. Looking at  the code it seems it seems this function does exactly what you are looking for.


Where in the world is bitcoin mining the most profitiable? This is a question for Bitcoin miners. High cost of electricity can really cut down on the profitability of Bitcoin mining. I want to know what geographic location has the cheapest electricity and thus most profitable Bitcoin mining in the world?

According to the EIA:
http://www.eia.gov/emeu/international/elecprih.html

The cheapest electricity prices from their available data would be Kazakhstan at .052USD/kWh.

Although electricity cost itself would not be the only determining factor of profitability, it would be a major part.

Currently FPGA's seem to be the answer for best performance/kWh.  Some other factors to think about would be(not 100% inclusive of all the factors):

Difficulty in sourcing equipment to the country of choice.
Governmental taxes
Employee Cost
Weather Conditions(HVAC)
Government stability (Politics in General)
Ability of the power distribution network to handle your load.


What is wallet.dat.gpg? I'm trying to convince myself that I'm backing up my wallet correctly. I am told my private keys are in the wallet.dat file, but what is wallet.dat.gpg? It's not listed here.

The .gpg file extension is often used to indicate a GnuPG encrypted file. Somebody, or something, at some time, probably made an encrypted copy of your wallet.dat file and named it wallet.dat.gpg.


What database tables structure do bitcoin uses? What databases do bitcoin core (nodes) uses? And how looks tables structure? I can't find it anywhere...

There simply is none. There's a key value store in LevelDB for the UTXO, and for miscellaneous things like the locations of block files on disk. Relational databses are far too slow for the task, and unnecessary given the type of information being stored.


Blockchain sizes, and external devices This question is rather technical.

Blockchains tend to grow. Specially well-known blockchains like Bitcoin. I would like to store a certain blockchain on an external device (e.g. 1TB disk space), but some day the chain will grow enough to use all the space.

How do you manage this? Is there a way to partition the blockchain storage (to use many devices) or stuff like that instead of buying a larger device and moving 1TB of data there?

This is an interesting question from a blockchain perspective. Will the transaction block data ever outstrip the ability to store it ?  Or at least put it beyond all but the largest corporation's budget? It seems like storage capacities are still growing at a very fast pace, so I don't think this is an immediate problem.

But from a device standpoint, there are many schemes to create meta-volumes to the which physical devices may be added without affecting the ongoing operation of the system. Linux's Logical Volume Manager (LVM) is just one of these.

There are also any number of disk-array schemes and commercial network attached storage (NAS) units. The Drobo name is just one that comes to mind.

To specifically answer your question: if the external 1TB storage unit you are using is approaching its capacity, it would be time to upgrade. Acquire a larger unit, or move to a different system (perhaps one with the ability to add hardware storage on-the-fly, such as server able to operate an array of multiple storage units.)

Briefly stop your coinservers, attach the new, larger storage, copy the original blockchain data to the new storage unit, reconfigure the coinserver to operate from the new unit, and voilà.
You would add a line similar to this in your ~/.bitcoin/bitcoin.conf file:

datadir=/new_array/bitcoin-data

Multiple disks can be arrayed in different ways depending on the competing priorities of redundancy vs. data access speed. SSD's are plenty fast, and even rotational hard disks with enough cache memory are sufficiently fast. I would suggest a mirrored array (RAID-1) of rotational HD's as the best option.


How do I "Verify my wallet" I'm completely new to the BitCoin world and I've purchased a couple of coins through eBay. The seller has messaged me saying this:

"Donation sent to 1Nf9iW******Yx4cPKB ...Please verify wallet and your 3.00 bitcoin will be released. Thank you for your business!"

What exactly does this mean? I've navigated through the wallet application and can't seem to find anything.. Any help is more than appreciated, thanks for reading.

Do you own the address specified by the seller (as in, did you provide them the address)? If so, the seller probably wants you to confirm "yes, the address is correct" or something like that. If you don't own the address, I think you should ask the seller what exactly does he mean by that.

Generally, you don't verify a wallet. All the Bitcoin addresses verify their integrity by themselves (they have a checksum). Someone might ask you to verify that you are an owner of an address by making you sign some message with it, but that is quite rare.

I did a bit of search on the address you provided in part. Generally, unless you want to really hide that you own the address, there is no need to obscure any information about the addresses. In that case you wouldn't give any information. As it stands, I think you meant this address: 1Nf9iWh318w45Q1BY6cebPFp6YnYx4cPKB. From what I can see, you received a donation of 0.103BTC, so I'm guessing the seller sent you a bit of Bitcoins so you can check if the transaction went through and you received it correctly before sending you the full amount. If you can see the transaction in your wallet, you should go ahead and tell the seller that the address is correct and they can send the full amount.


What would happen if miners refused halving In may 2020 the supply of bitcoin per block is supposed to be reduced by half https://www.bitcoinblockhalf.com/

What if after this phase the first miner or more than 51% of them decide to keep the current production rate ? Do their block will be refused like if they had produced a wrong block ?

What if after this phase the first miner or more than 51% of them decide to keep the current production rate ? Do their block will be refused like if they had produced a wrong block ?

Exactly. This is no different than if a miner (or a majority of miners) created blocks which paid out anything more that 12.5 BTC today: the network would simply ignore the new blocks, and the miners will have wasted their resources, working on an invalid block.

@JBaczuk's answer is technically correct that this would create a hard fork, but it ignores the bigger picture that even if a majority of miners make the switch, that doesn't mean users will follow. So while the miners could create a new, hardforked chain, this would be rather uninteresting, as there would be no users on it. As we've seen with past events (ie, blocksize debates, Segwit2x, etc), miners will follow users, not the other way around.

If this were not the case, then users (and the network's rules) would be at the whim of the miners. This would create a broken system of incentives, as miners could just change the rules to benefit themselves (eg, changing the issuance of new coins).


How is the probability of winning a block calculated from the difficulty? I have problem finding this. The Bitcoin wiki mentions the probability here, but only with a link to the current value on BlockExplorer.

The wiki page on difficulty doesn't mention the formula for the probability either.

If the current difficulty is D, then the target hash (the value below which block hashes must go) is:

  0x00000000FFFF0000000000000000000000000000000000000000000000000000 / D

(by definition of difficulty, which is a fraction of the maximum target), or otherwise put, the number of valid hashes is:

  65535 * 2208 / D

Which means that the ratio of all hashes over valid hashes would be:

  2256 / (65535 * 2208 / D) =
  D * 248 / 65535 =
  D * 4295032833

Which, at the current (January 2017) difficulty of D =  392963262344.3704 means that one hash in

  392963262344.3704 * 4295032833 = 1687790113931869416948

results in a valid block, or each attempt has a chance of

  1 / 1687790113931869416948 = 0.000000000000000000059 %


Profit possibility for colluding with 51% attacker The Bitcoin Wiki states "A profit-seeking person will always gain more by just following the rules, and even someone trying to destroy the system will probably find other attacks more attractive."

I'm always (!) wary when people claim "always" or "never". Similarly I challenge the above statement, that seems quicker to try to reassure than to really analyze the validity of "always" in the context of being a good/bad actor.

What about the situation whereby some entity builds up a hugely leveraged short BTC position. e.g. say two nations took a HUGE bet each on opposite sides of the bitcoin price. Then the nation on the short side could secretly collude with a 51% miner to destroy the network and profit from the resulting BTC crash, kicking back to the miner a slice of the winnings.

Possible? Impossible?

The Bitcoin Wiki states "A profit-seeking person will always gain more by just following the rules, and even someone trying to destroy the system will probably find other attacks more attractive."

The statement from the wiki has since been proven false. If a pool has a large enough percentage of the mining power, then it can follow 'selfish mining' procedures to earn more than it's fair share of the block rewards. This was introduced in this paper: http://arxiv.org/abs/1311.0243.

That is one reason your doubt in the wiki's claim is justified. The reason you cite, the two nations taking a bet on the price of a BTC, may be another possible case, but it doesn't seem very realistic to me. I'm not sure why any nation would take part in such a bet, and I think there would probably be more cost effective ways to lower the price of a BTC rather than engaging in a 51% attack.


Is there a future-proof method of encoding messages in the blockchain? There are several "reasonable" modifications to the Bitcoin protocol that would make some methods of encoding messages break (e.g. pruning).

Are any of the existing encoding methods future proof, in the sense that they are likely to continue functioning even after "reasonable" changes to the Bitcoin protocol?

With pruning as envisioned today, only spent outputs are pruned. By making a small transaction and never spending it, you can keep the encoded data intact.

In the future it may be that unspent outputs will still be pruned if they're old and low-value, for example as suggested here, in which case you can still extend the life of your message by putting it in an unspent transaction with a high enough value.

If the encoding is in the receiving address itself, this will also resist modifications such as forced consolidation of outputs - but if you want to also be able to salvage the committed coins, the message should be short and the address should be generated with a vanity address generator.


Is there a way I can reach the owner of the wallet address I mistakenly sent some bitcoins to a wrong address. The mistake was from the wallet address I was given. An extra letter was added, making the address 35 digits. Is there a way I can reach the owner of the wallet address I mistakenly sent it to? Please help me.

This is the wrong address that bitcoin was sent to
114dW3JX2sPPLVDnX4H8u2vsMc4CEJ3rVYf
It's a blockchain wallet.

Is there a way I can reach the owner of the wallet address

No, There is no general way to find the contact details of an owner of a mistyped address. At least none that are likely to succeed for any arbitrary address.

You can check an address at any Blockchain Explorer - this will tell you if any bitcoins were really sent there - but will not identify the identity of any person.

There are many possible valid addresses, only a very tiny few of them are in use.

If you send bitcoin to a valid address that no-one is using, those bitcoin are lost forever unless you can re-spend the inputs using a much higher fee (or miner cooperation) before your transaction is confirmed.

  An extra letter was added, making the address 35 digits.

Most wallets make it impossible or difficult to mistype an address by using a checksum.

  The probability that a mistyped address is accepted as being valid is 1 in 232, that is, approximately 1 in 4.29 billion.

(from Bitcoin Wiki)

114dW3JX2sPPLVDnX4H8u2vsMc4CEJ3rVY is a valid address but has a balance of zero and no transactions.

114dW3JX2sPPLVDnX4H8u2vsMc4CEJ3rVYf is not a valid address. I don't see how any Bitcoin can possibly have been sent to it.

  It's a blockchain wallet.

If your wallet shows an amount has been "spent" to that invalid address and deducted from your "balance", you should contact the company that call themselves "Blockchain Luxemburg S.A.R.L." and who presumably provide your wallet.

I recommend not using custodial wallets. See types of Wallet

See also

Can a bitcoin transaction be reversed?
Is it possible to cancel an unconfirmed transaction?
What happens if I mistype the address when making a payment?
Possibly sent Bitcoin to wrong address
Is there any way for me to recover or reclaim a confirmed but unspent transaction that was sent to the wrong address?


Bitcoin Armory Difference in GPG Output The section "Verifying Downloaded Files' at http://bitcoinarmory.com/download/ says that I should see the following output after running GPG:

$ gpg --recv-keys --keyserver keyserver.ubuntu.com 98832223
gpg: requesting key 98832223 from hkp server keyserver.ubuntu.com
gpg: key 98832223: public key "Alan C. Reiner (Armory Signing Key) <alan.reiner@gmail.com>"

However when I ran it, I got:

gpg: key 98832223: public key "Alan C. Reiner (Offline Signing Key) <alan@bitcoinarmory.com>" imported

instead. A link I found on btcarmory.org (http://pgp.mit.edu:11371/pks/lookup?search=Armory+Signing) has a result that implies that these two outputs are acceptable, but can someone please confirm that this is true?

Is the difference in the GPG output a concern? I only ask because of how intensely it is suggested to do this stuff! Thanks.

The output is fine. The key fingerprint is the same. Alan merely has several uid records in this key.

See for yourself:

$ gpg --list-key 98832223
pub   4096R/98832223 2012-02-28
uid                  Alan C. Reiner (Offline Signing Key) <alan@bitcoinarmory.com>
uid                  Alan C. Reiner (Armory Signing Key) <etotheipi@gmail.com>
uid                  Alan C. Reiner (Armory Signing Key) <alan.reiner@gmail.com>
sub   4096R/DE6B2D74 2012-02-28

GnuPG simply chose to show you one of the other, completely valid uids for this key.


Where can I find examples of Node JS code for P2SH transactions (funding and spending) I have the following example, on which I admit I am stuck:

Bob sends 0.5 BTC to Carla, who is the owner of a P2SH address of the form 3xxxxxx.

For Carla to spend the 0.5 BTC and pay Josh, who also has a 3xxxxxx P2SH address, she needs the redeemScript from Bob.

Let's say she has that from Bob and Carla sends to Josh the 0.5 BTC. Now we have a TRXO of 0.5 which can be seen on blockchain explorer under Josh's address.

To spend the TRXO, Josh also needs the redeemScript, right? Is it the same one as Bob's redeemScript?

According to Andreas's book, the redeemScript required for spending from a P2SH address is revealed after the first Output spent from the funding address.

So simply by looking at the scriptSig: under Bob's INPUT (e.g. PUSHDATA(66)[xxxxxxxxxxxxxxxxxxxxx], and taking the redeemScript from there anyone can hash that and spend the 0.5 BTC? If so, how?

The TRXO is not based on publickey as in the case of addresses of the form 1xxxx so it's not associated with Josh's address but rather with anyone who can produce a hash of the redeemScript.

This below explains a lot in previous chapters but the practical side of the article is still in draft.

https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line/blob/master/08_5_Spending_a_P2SH_Transaction.md

The [draft] side is what I want to understand. I think this is very important because many addresses are P2SH these days. Most are multisig, yes, very secure. But if it's not multisig, isn't it a vulnerability to access the redeemScript just by looking at a previous TRX INPUT?

I use Node JS and can access libs, on Windows + Bitcoin core.I want to test these on testnet and maybe with a small amount on Livenet.

Thanks!

bitcoinjs-lib has examples for multisig P2SH, single-key Segwit wrapped in P2SH, and multisig Segwit wrapped in P2SH.


Growth Dependent Block Size Limit Could the 1MB block size limit be replaced with a growth-dependent limit? From what I have read (here, for example) the 1MB limit is to prevent spamming of the blockchain. And if/when Bitcoin becomes more widely adopted we will have to increase the limit so that the network can handle more transactions per second.

Instead, could we have a rule like "blocks can be no larger than 1.5 times the average of the last 100 blocks"? The hope is that we could automate this spam prevention measure while still allowing for growth. Has this idea been considered anywhere else at all?

Maybe this be too large of a protocol change. Would we be able to get everyone to update their nodes to follow the slightly altered protocol?

Thanks!

Technically, this is possible. However, it would be a hardfork, so all users would have to upgrade. In such a large ecosystem that exists around Bitcoin today, this would be rather disrupting.

Such change would also have unclear security implications. Miners would be naturally eager to accept as many transactions as possible, so a spammer may gradually push block size limit up to increase the time it takes the network to process new blocks. This would lead to an increase in orphan rate, which would make it easier to mount a 51% attack, especially with the help of selfish mining.

This idea was discussed many times on Bitcointalk. While most of the developers agree that a change would be necessary eventually, any specific plans have yet to be announced.

By the way, some altcoins, such as Monero and Cryptonite, have variable block size limit using rules similar to the ones you propose.


Converted Segwit address (YPUB) to Legacy (XPUB), but balances differ I'm trying to convert a Segwit YPUB address I got from a Ledger Wallet to a Legacy XPUB address in order to query the transactions from the wallet. I've yet to find a reliable API that supports YPUB and I'm using Blockchain.info to fetch the information for Bitcoin.

While I've tried multiple methods to convert a YPUB to XPUB (getting the same addresses with every method I've found - changing the header with the network specific magic key), I don't see the balance on the resulted XPUB address. It shows 0 balance.

Is it possible that a converted address would display the balance of the original address?

Thanks,
Rares

It's not possible access funds in SegWit addresses (actually UTXOs) as if they were in legacy addresses. A SegWit address and a legacy address with the same public key map to different addresses, hence they don't share the same funds.


Getting statistics on bitcoin >transactions< - breakdown by size Now that bitcoin is going more mainstream, particularly with the futures listings and so on,

https://www.cnbc.com/quotes/?symbol=%40XBT.1&tab=news

it's quite easy to get statistics on price performance for bitcoin.

However what I want to see is this - quite simply, stats on bitcoin "spends" and that trend over the last weeks, months.

So, ideally you'd really want this broken down as a histogram.

Imagine yourself trying to sell investors on bitcoin: what they want to know is transaction flow:

how many transactions in the last 24 hrs
a graph of that for a few months
breakdown by size .. under a buck's worth, 1-10, over 10

This straightforward information is in my experience the first thing investors look for, when I try to pitch old money on investing in one Bitcoin scheme or another.

How do I get this information? Maybe I'm missing something obvious - it seems to be the first sort of site one would set up to promote bitcoin.

How many transactions in the last 24 hrs ?

Yeah what your saying makes a lot of sense. Blockchain info graphs offers allot of charts to show the data that you are referring to. Do you want something in more detail, if so there are probably some api's around that you can use to your hearts desire.


Is it possible for the miners to collude to blackmail a single wealthy address? Imagine if a few miners who together control more than 50% of the network hash power decided to charge higher transaction fees just for addresses containing really large sums.

For example, this address here has 69,471.08443061 BTC:

http://blockchain.info/address/1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx

Now the miners could decide to reject any transaction going out of that particular address (no matter how small the amount) unless it included a 25% transaction fee. You could call it extortion.

Question:

Is it "illegal" (see below) under the rules of Bitcoin?
How would the rest of the network detect such a problem (given it involves only one particular address)?
How would such a problem be resolved?

By "illegal" I don't mean the network would reject such behavior, because that it wouldn't, but that it would be rejected by most participants in the Bitcoin economy based on an implied understanding of what's fair and what isn't.

[UPDATE]

OK, let's say the mining cartel publishes their new policy on their website and word goes around.

Also, as an incentive to the rest of the participants in the economy, it is announced that part of the higher transactions fees will be distributed to everyone. This is achieved by setting up a single address (a la SatoshiDice) where you can send any amount and in return you'll receive the same amount plus the bonus. You can only do this once per address, because the program checks that the funds don't cross the same address twice.

You could call this a wealth tax or a "Robin Hood tax."

I think your update changes the question significantly (probably too much for a SE question), but the answer is still essentially the same. In order for a miner to prevent a specific address from moving their BTC, they must not only decide not to mine the transaction but they must also convince at least 51% (most likely more) of the hashing power to not only not mine the transaction but also to ignore any block that does include that transaction.

First of all, I think that this is highly unlikely. Because:

Any combination of entities with >51% of the hashpower also has a very vested interest in Bitcoin. And deliberately allowing extortion would be against the interests of Bitcoin.
Any combination of entities with >51% of the hashpower has other potential ways of exploiting the network, which are arguably a lot more profitable.
The bribery incentive you list wouldn't really work. There's too much anonymity in the system. If you had an address that would give me back 110% of what I sent it, I would send it some money, launder the results into a new address, send it some more money from that untainted address, send it some more money, rinse and repeat.
Even if the "cartel" has 55% hashpower, there is a 1.8% chance that the minority miners could get six consecutive blocks mined. This may not sound like a lot, but if the extorted party just kept pushing trasactions out there it would only be a matter of a few hours before one of the transactions got six confirmations. So, the cartel would either have to be willing to break long strings of blocks (completely putting the network in jeopardy) or they would have an overwhelming supermajority of the hashpower (>90%).

So, in answer to your subquestions:

Is it illegal? Well Bitcoin doesn't have laws. If you mean, "would the protocol allow it?" Sure. A known weakness of the protocol is that if any entity controls a majority of the hashpower then there are some attacks they can make. Luckily there are some checks on this, notably the above comment: that anyone with a majority of the hashpower also has a lot invested into the health of the network. The deliberate limiting BTC Guild did on itself a few weeks ago shows this in action: the very entities that could obtain 51% hashpower are the ones most interested in making sure that no one obtains 51% hash power.
How would it be detected? In your modified scenario, it would be public knowledge. But even if someone tried to build a silent conspiracy, it would be pretty easy to detect if they went through with their threats: there would be orphaned blocks. And all of the orphaned blocks would share two things in common: they would all contain the extorted address and they would all be mined by minority miners. It would be pretty easy to figure out what is going on. Of course, you couldn't stop someone from secretly making threats, but detecting someone carrying out the threat would be easy.
How could it be resolved? Fundamentally the network is controlled by a majority of the hash power. If a supermajority of the miners decided to block an address, then there is no resolution: the majority rules. In a way, this is a feature. No one with the majority of the hash power would do this indiscriminately: it would jeopardize the network. But if the network determined that a particular address or addresses was a threat to the network, then the miners could band together and defend the network from that threat.

To expand on #3 with an example, say that a child pornographer publicly advertised some kind of service and accepted Bitcoin as payment. If, either out of altruism or media pressure, the majority of the hashpower decided to forbid payments to or from that address it would certainly be possible. (Of course, it would then become address "wack a mole", but there are some ways around that if the network could agree.)

TL;DR: The point being that if the miners collectively agree on something, yes, it is possible to effectively control the network. By design. That includes rolling back to a previous version (such as in the fork of March), preventing a theoretical exploit, or even executing a theoretical ban. But it's unlikely that a coalition would be willing to use that power for extortion. The miners have too much at stake in the health of the network.

Update:
I discovered something to add while researching something else. Satoshi made the commment that if transactions are deliberately being dropped that it could be addressed client side by coding the standard client to ignore blocks that they know are ignoring transactions. It was in a slightly different context in that thread, but the gist remains the same. If a majority of the miners colluded to exclude an address, there are some client side ways of giving favor to the "honest" miners, assuming that a majority of the client nodes were willing to upgrade to a version that protected again this.


I want to buy some xrp and hold them offline I want to buy some ripples (xrp) and hold them offline ( I want to keep the secret key with myself rather than trusting some hosted websites). Are there any steps to do this? Is ripple trade account mandatory to hold xrp? Can I simply buy xrp in cryptsy.com using btc and transfer them to an address managed offline in my computer?

Download "ripple-paper-wallet" https://github.com/OctillionSA/ripple-paper-wallet
Open index.html (HTML/javascript) in a browser (on a PC without Internet, better a fresh new OS).
Write down or Print out your paper wallet.
The public key starts with "r" is your Ripple address.
The private key starts with "s" is your "Secret", keep it safe! You can also use it in case you want to migrate your wallet to online GateHub or to any other wallets. (but it won't be a cold storage after that)
Activate this wallet by sending small amount 20XRP (or more) to the address. (You can activate it here: https://bithomp.com/activation/)
Make sure you address is visible in the explorer: (https://bithomp.com/explorer/).
You can "erase" PC which you used, or just turn it off together with the printer to clean memory.

Congrats: Now you can send big amounts to this address.

P.S: You can also buy a Hard Wallet. like "Ledger wallet" for example. - also a secure way to keep your XRP.


Share private data and prevent data forwarding Let's say A has some private medical records of patients and B is a pharmaceutical company who wants to view medical records from A to find out the effect of a particular drug on the patients (run a drug evaluation logic to get performance statistics of a particular drug). A wants to share the private data to B but wants to prevent B to forward (leak) the data to other third party organizations. How can this problem be solved with blockchain?

Nothing can prevent B from exposing or forwarding the data once he has access to it.