How many letter tiles does one need to build any 24 word mnemonic?

Actually the answer is rather simple, Cryptosteel did a letter frequency analysis on the bip39 wordlist and found that you can represent any word in the list using only 4 characters. Therefore, for a 24 word recovery phrase, you take 4x24 or 96 characters.

Edit: Oh oops, I thought the question was that ability to store all combinations instead of the tiles provided. to which my answer is, they probably ran an analysis and decided on that number of tiles based on their data. If it bothers you, you can just use a cold wallet that includes more tiles like simbit that includes 400.


Bitcoin-Qt Command line - adding private key - Mac OSX

Error -4 means that you've already added that private key. It might take a while to import because it's rescanning the whole blockchain for transactions involving that address.


I looked at /www/pages/cgi-bin/minerStatus.cgi, and it parses

cgminer-api -o
cgminer-api -o pools
cgminer-api -o stats


How to import bitcoins from one wallet to another wallet?

Well you want to make a transaction from one wallet to another, and for someone to bother mine that transaction they should get paid that small fee.


Can you send partial amounts of zcash to a zaddress or do you have to send all of it to a zaddress?

z_sendmany can send from either a t or z address to a t or z address, and yes you can send any fraction of the amount from the source t-addr

-@radix42, zcash contributor


If you are using some wallet software and it ceases to function for you, then you can attempt to recover your wallet using different software. This is of course only possible for wallets which you have complete control over (which means you control the private keys, not custodial accounts where some service provider controls your keys). You can attempt recovery by importing your private keys themselves into new software, or more commonly, you can recover the wallet by using your BIP39 mnemonic seed phrase (usually 12 or 24 words). This seed phrase has become an industry standard, so as long as the wallet you currently use utilizes BIP 39, you should have no problem finding some new wallet software you can perform the recovery with.

Note that the wallet will derive your private keys and bitcoin addresses from the mnemonic seed phrase, and there are many possible derivation paths available. BIP 44/49/84 define standard paths, but there is a possibility the wallet you use will use a non-standard path. In that case, you will need to find out what path was used, and then find some software that will allow you to define a custom derivation path.


Can I run Trezor Wallet against my own local node on OSX?

Bitcore fork from SatoshiLabs is indeed available only for 64-bit linux.

You can try to build the necessary binaries yourself and then update the npm install scripts in bitcore, but that is very hard.

I would not recommend you to run bitcore on a personal computer, since it adds additional 200GB data, so you will end up with about half a terabyte of data. Also, because of some performance issues in the bitcore code, the address database synchs for days (around a week), where you cannot use the computer for anything else. (Also the disk SHOULD be SSD, or the syncing is even longer.)

If you want your own backend, I would recommend paying for a Linux server (but it's hard to find a reasonably priced VPS/hosted server with 500GB disk).

All in all, it is not easy to use Trezor with your own full node, unfortunately.

I am actually working for SatoshiLabs, on the backends, right now :) and we don't have plans to make the builds on OS X, since we won't be able to test them anyway.


How does a wallet come to know of Address just by importing Private key?

You can derive the public key from a private key
Though, you can't derive a private key from a public key
You can derive a bitcoin address from a public key
Though, You can't derive a public key from a bitcoin address

Means:

PrivateKey -> PublicKey -> Address


Can I set a zero fee to transaction if there is less transaction volume than space in the blocks?

You can set a zero fee in BTC, it is regarded as a dust. The transaction can confirm in the case you have asked about but, if it will confirm is dependant upon the transaction broadcast by the individual nodes, the node may not accept a transaction with fees below a particular level, particularly if that nodes mempool is rather full, and it depends on if miners will include the transaction in a block.

Even if in the past there have been zero fee transactions included in blocks, I would not risk it.


What is the meaning of the term "full-node"?

Fully validating nodes ("full nodes") are clients that have validated the whole blockchain self-sufficiently and enforce all of the rules of Bitcoin on any data they receive. Therefore, they cannot be cheated by means of invalid blocks or transactions.
Running your own full node is the most secure, most private, and least trusting way to participate in the Bitcoin network. A full node is necessary to prevent invalid blocks when mining.

Common usage of the term does not require that the node keeps all blockchain data at hand. Although many full nodes have a complete copy of the blockchain, full nodes can also run in pruning mode.

Nodes that can serve the complete blockchain are referred to as Archival Nodes.

Sources:

The Bitcoin wiki explicitly describes pruning as an option for full nodes (see Wiki: Full Node).
Bitcoin.org: What is a full node?
Bitcoin Core developer Pieter Wuille announced the pruning feature thusly on Twitter:

  @orionwl just merged pruning support in #Bitcoin Core! Run a (no wallet) full node with 1.3 GB storage. Thanks to all who contributed.


Is there any software available for testing of Bitcoin security?

testnet-in-a-box is a simple way to set up your own testnet network, separate from the main one.  That lets you mine your own blocks easily because the difficulty will stay low.  Then you can play around with double-spending your own coins to yourself without inconveniencing others, and without needing large amounts of hash power.


The first line is normal behaviour:
UNUSUAL plugin-bcli: Could not connect to 'lightning-rpc': Connection refused

Your lightningd cannot start if the underlying bitcoind is not up-to-date:
2020-07-20T02:59:44.730Z UNUSUAL lightningd: Waiting for initial block download (this can take a while!)
2020-07-20T02:59:44.732Z UNUSUAL lightningd: Unable to estimate opening fees
...
2020-07-20T02:59:44.732Z UNUSUAL lightningd: Unable to estimate max_acceptable fees

You just need to wait for bitcoind to finish IBD. lightningd will regularly poll it and launch as soon as it's synced.


Is it safe to share my BTCGuild API key?

BTCGuild doesn't seem to have a public documentation on their api so I may be wrong, but from what google searches are bringing up the API is used to access stats on your account. So unless you don't want people to know how much you've mined, you can safely share it (probably).


Compiling Stellar-core on windows: where does mingw/cygwin come in

I am not sure StackExchange is the place to ask this as it's issue level (which GitHub can take care of - https://github.com/stellar/stellar-core/issues).

Anyways, in the Install-Windows.txt it says to also update your PATH environment variable, did you do this?


but I am going to take a slight guess that this has something to do with miner voting to show what the consensus is for a future change?

No. There are currently no active consensus change proposals.

These version numbers are likely due to a mining optimization known as ASICBOOST. This optimization is due to a quirk of SHA256 and Bitcoin's block header format.

ASICBOOST is a hardware level optimization for mining chips that allows them to be more power efficient. One of the methods for ASICBOOST is to modify the block version number. The other method is to change only the first 4 bytes of the merkle root, but that requires much more computation than just changing the version number.

Even though this is a hardware optimization, the software for ASICBOOST miners also need to be aware of this optimization. This is why only some pools produce these ASICBOOST blocks, and only some machines can be used to produce them.

For more information about how ASICBOOST works, see How does AsicBoost work?


It seems to me that quarkcoin is an experimental protocol. Then again, bitcoin is often looked at as an experimental protocol, and despite its performance, is still considered beta (if you are reading this and questioning that statement, go look at bitcoin-0.8.3, for example, on sourceforge, and look at bitcoin-0.8.6 (same place, most current version), as you can see bitcoin itself is plainly characterized as "beta."
Even if nobody was mining it, a decentralized protocol that is utilized for transactions would still be interesting (if for no other reason than that it would be an example of how anyone can take part in the decentralization process).  It's my sense that part of the incentive to mine quarkcoin is the anticipation that it may gain in value and thus be able to be both used more widely for purchasing, as well as its current presence on certain exchanges.  Another part of the incentive could be the feeling or sense that comes from having accomplished mining something.

This is not a recommendation of any particular cryptocurrency / protocol, just an observation - Suggest looking at main.cpp Quark for observations of difficulty settings.  Also, the, SQL for the blockchain up until Dec. 3, 2013 is here (not my site, but contains useful information): entropyextropy.com -- at entropyextropy.com/abe.sql.zip
(Information in above paragraph taken from twitter and the forum at quark.freeforums.net)
On github, see code associated with MaxGuevara titled quark

Touching on the question of how is the security of quarkcoin increased by adding hashing functions, I'm not certain that this is how security actually works. I'm of the mind that the higher the adoption rate of any particular currency / protocol type, the more it will be able to weather attacks of many varieties.
[Note: See topic=260031.1840 at bitcointalk.org]


Is the concept of paid prioritization in blockchain against net neutrality?

It has nothing to do with net neutrality.
The concept of paying more for faster service isn’t against net neutrality. It’s part of internet providers strategy for years and it’s ok as long as the speed is the same for every website or internet service you want to connect. Problem with net neutrality arises, when your provider differentiate the access to internet websites and services basing on which plan you have. So, for example I can imagine that provider makes only Facebook and YouTube working fast, but GitHub will be a lot slower (but if you buy special “developer” offer for 100$ then the speed is back to normal). This will be against net neutrality.

I would rather look at the fees in crypto currencies from the perspective different bank wire transfers. There may be standard transfers (cheaper) and express transfers (more costly but faster). There is no differentiation between clients and to whom you send money.


Why does Bitcoin RPC load wallet too slowly?

Is it true, that Bitcoin somehow synchronize old wallet with the current state of the network

Yes. If the wallet file is not synced with the current blockchain state, a rescan will occur starting from the block that is recorded in the wallet file. It does not rescan all of history, only the things that it has not yet seen.

  and that's why it takes so much time?

Perhaps. There are other things that can effect wallet loading times. In particular, if you have a lot of keys and transactions, loading the wallet could take a long time too.


Funds from coinbase never showed in my Multibit wallet

Hopefully you understand already that the coins themselves are in no way on your computer -- your wallet is just a key that lets you spend coins that are yours.

Everything you need to verify that you own those funds in question is available in the blockchain (and on your Coinbase account).

Simply look at your Coinbase transaction where it says it sent BTC to your wallet address. Click advanced details if you want the actual bitcoin transaction information. Here you can verify that your wallet address was the recipient of the BTC you sent to it. You should be able to click on the link for that address to see the value being held on it.

If you're feeling paranoid and want to cross-check Coinbase's blockchain data, just head over to http://blockchain.info/ and do a search on either the transaction hash or your wallet's receiving address. You should see the exact same information that you found on Coinbase.

I can't help you figure out how to use Multibit, but needless to say, if you lose the private key stored in your wallet, then you will be permanently unable to access the funds at that wallet's address. I can offer only the following tips based on your question:

Make backups (duh).
Mac OS X is closely related to UNIX (and Linux-style operating systems), where files and directories can be hidden by prefixing them with a dot. Similarly, the ~ character is short for your home directory.
You can view hidden files and folders easily by learning how to use Terminal (really, the ls -a, pwd, and cd commands would be all you need at this point, and are safe to mess around with... but MAKE BACKUPS).
You can view inside hidden directories using the finder by using the Go to Folder command (from the Go menu, or shortcut command-shift-g) and then typing the UNIX-style path of where you want to access. Note that you still won't be able to see any hidden files within this directory.
The ~/Library directory is not prefixed with a dot, but it is hidden by default on new Mac OS X systems. You can still get to it easily by using one of the methods listed above, or by opening the Go menu and then holding option, or if you want it to be visible permanently, navigate to your Home folder and hit command-J (or View menu -> show view options), and then check the box for "Show Library Folder".


How do I know if an output is unspent when looking through the raw transaction data of a transaction?

You don't. To know if an output was spent you must check the blockchain, the information is not encoded in the transaction itself.

In Bitoin, you don't need to scan the entire blockchain, though. There's a database maintained by nodes, wallets and other software called unspent transaction output, or UTXO. Other coins may be different.


Is there a tool that searches for a specific BTC amount in a specific date range?

Blockchair allow you to query the bitcoin blockchain with lots of parameter such as date, BTC output amount, fee amount etc...

Here is your request:
https://blockchair.com/bitcoin/transactions?q=time(2013-07-27..2013-08-03),output_total(44500000000)#

Unfortunately it bring no result but you can change the parameters


Apparently you can only download via the PlayStore for Android 5.0+. However they will have an apk out when they release the 1.0 version and it'll be available on F-Droid.


Why does the hash-rate change so drastically?

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


If no one controls this then how can you be sure it is stable?

There is a bigger discussion around this point - it implies a that a currency controlled by a government is stable.

Stability is not determined by a government, no matter what you may believe. The value of the Euro or the Pound or any other currency is determined by the general consensus in the market that the currency has a certain value. When markets turn against a currency it can be a problem. Note for example how the US dollar collapsed to half its value against the Euro couple of years ago.

It is the same for Bitcoin, except that what you need to consider is that Bitcoin is still very new and early valuations of new technologies are naturally unstable because markets do not know them very well and can get spooked easily - hence the volatility. This will become less and less as time goes on.

  How is it regulated and most importantly how is it valued?

The system is self regulating, but it depends on what you mean by regulation. Regulation is not always necessary for successful technologies. Is facebook regulated? Is amazon? Both have issued their own form of currency, and nobody talks about regulating them.

What sort of legal framework do you think is suitable to "regulate" bitcoin? Even the regulators in most countries are issuing notices stating that they do not have the authority to regulate Bitcoin. Note they are not banning Bitcoin. This means exactly what it says, and doesn't say.

  I'm having a hard time grasping the idea of not being centralized and
  regulated somehow… can someone game the system… blah blah blah etc!?

I'm not surprised you are having a hard time. You probably do not know enough either about the Bitcoin protocol, the technology behind it, how markets work, how markets can be gamed (or not).

I can't answer a vague question on this but I suggest if you think of a specific situation where something might happen, post your question and someone will answer.


For a given network, consensus means achieving a consistent view of the global state between all participants. For Bitcoin, this means that all nodes/wallets should be considering the same utxo set. For Ethereum, it involves all participants having the same state trie. Minor other variations exist for other networks.

Mining and protocol versions are simply means to achieve this consensus - miners are motivated to only select valid transactions (transactions that spend unspent utxos, and meet other validity requirements) as their block will be dropped by other participants in the network if they produce an invalid block.

Protocol versions are a little more forgiving. On one hand, you have the literal Bitcoin Wire protocol which nodes use to exchange block, transaction, and peer data. Changes to this are usually backwards compatible, so you can safely run a slightly older version of bitcoind on the mainnet without facing any issues.

Protocol could also refer to the concept of Bitcoin itself, and encompass things such as what is a valid transaction, whether segwit is enabled or not, etc. These can be backwards incompatible changes which require a hardfork, and thus require all users to update their software, or backwards compatible, which allows certain older versions to continue working.

Thus, in short, I would say that consensus is achieving a consistent world view, and mining and protocol versions are implementation details that help us all agree on that view.

Governance comes down more to social behaviour than literal control of the project - if the Bitcoin Core developers went rogue tomorrow and added code that allocated 50% of all block rewards to them, it would likely result in a quick revolt, and others in the community would fork Bitcoin from a point before that change. Thus, even though a small subset of people currently control what code goes into Bitcoin, they are not an absolute authority, and the community may choose to follow a different idea of Bitcoin.


Single "Multiple Inputs Tx" vs Multiple "Single Input Tx"

With option 2, most analyses will conclude that Alice owned A1, A2 and A3, because the transactions which spent them have no change address. Typically, you assume that the amount you have held in a TXO never exactly matches the amount you're making as a payment, so transactions usually have change outputs too.

I think you have a little misunderstanding about where bitcoins are held. Bitcoins are not stored in addresses. You don't "spend an address." You spend one or more UTXOs. Each transaction in option 2 creates a separate TXO, even though they share the same address for spending. This means, when the coins associated with A4 get spent in full, the individual TXOs are each inputs for the new transaction, which makes it look more like option 1 (multiple inputs, one output) when spent, like this.

+--------------------+
|A4 (txo1)         B1|
|A4 (txo2)   ->      |
|A4 (txo3)           |
+--------------------+

Bob can of course, look at each of these inputs and see which transaction they came from, but he can't necessarily determine whether the addresses actually belonged to Alice, or whether it is just likely that is the case. Without some more evidence from further back in the history of the coins, you cannot prove whether Alice owned them initially or received them from somebody else.


Are Bitcoins destined to forever increase in value?

In theory yes. If demand grows at a steady rate this will certainly be the case, as less coins will be produced making what is available more desirable.

In reality there are other factors which could affect the value of bitcoins.

Alternate chain could supersede bitcoins (unlikely at this time)
Vulnerabilities like what has appeared (with hacking) already in the main markets
Overspeculation of market trends

Think of it more like gold than a fiat currency in the likelihood of behaviour (nb. my opinion, may not be the case)

If the value does keep increasing it can split into eight decimal places to make a very large number of potential units of currency.


Current bitcointalk.org probation period and rules

What are bitcointalk.org current probation rules/period?

Each rank has certain restrictions that are removed as your rank increases. Newbies have the most restrictions. They can only post once every 360 seconds (6 minutes), can only have plain text in their signatures, PMs will have a warning saying that the person is a newbie and potentially a scammer, and a few other things. The restrictions for each rank are listed here: https://bitcointalk.org/index.php?topic=178608.0

Newbies can post in any part of the forum though. The newbie jail has been removed.

  Is it true that you have to pay to participate on that forum?

For the majority of users, no, you do not have to pay to participate on Bitcointalk. The only people who have to pay are those who are registering from "evil" IP addresses. "Evil" IP addresses are IP addresses which many "evil" things have been done from. "Evil" things means that multiple accounts were registered from an IP address and were later banned from the forum. Accounts can be banned for many reasons, usually spamming. In order to register a new account from an IP address with evil points, you will need to pay a small fee. This is an anti-spam and anti-DoS mechanism.

Most evil points end up being assigned to proxies, VPNs, and TOR exit nodes as those are what spammers use to register their accounts to hide their identities. If you are not registering using one of those things, then you likely will not need to pay any fee to register.


How and where to pay in bitcoins into online wallet if I have address and ID

I just found my "old" wallet.dat. Is it possible to "send" it to an online-wallet in order to avoid downloading the whole blockchain again?

NO. In fact, any service that asks you to transmit your wallet.dat file is most certainly a scam.

A wallet.dat file contains a collection of private keys, which are what is required to spend your bitcoins. So if you would like to use a different wallet without syncing the blockchain again, then you will need to dump the private keys out of your current wallet, and find a wallet that lets you import (sweep) private keys into it.

You can use a light-wallet to do this, rather than trust an online-wallet. You may be interested to check out the list of wallets on bitcoin.org, but remember to do your own research to ensure that you are downloading reputable software from a reliable source.


What is an explanation of the P2SH voting in layman's terms?

The answers to your questions, in order:

The fee paid for a transaction is determined by the size of a transaction.  Currently, if you want to do fancy things with bitcoins, you need to put a script in the transaction that sends them -- each output includes a script giving the conditions under which it may be used as an input.  OP_EVAL, p2sh and CHV (check-hash-verify) all provide ways of putting the script in the transaction that receives the coins.
This lets you have coins sent to you and do arbitrarily complicated things with them without imposing a fee burden on the sender.  The coins are yours once they're sent, but you'll have to pay the fee the next time you try to do anything with them (no free lunch here...).  The most important use-case here is to have wallets from which you can spend coins only by using two different devices (for example, both your laptop and your cellphone).  Even if both devices are "virus infested" it's highly unlikely that any single malicious entity has compromised both of your devices.  The hope is that this will put an end to the rash of coin thefts, or at least make it much harder for botnet operators to steal coins from the people who own the machines they've taken over.
The voting takes place during the blocks found during the seven days preceding 01-Feb-2012.  No timezone was specified.
The original vote was "yes/abstain".  Gavin put code into the "master" branch of the bitcoin client that would cause anybody who upgraded to the latest version to automatically vote "yes".  This angered some people, who added a new option for a "no" vote.  However, what really matters is whether or not 50+X% vote "yes" -- an "abstain" counts as a "no" vote for the purposes that matter.  If a minority of the hashpower were to enable p2sh a single malicious user could cause a permanent blockchain split, so it's important that this not be enabled until we are dead certain that a comfortable majority of the hashpower is on board.

Most of the controversy is over how quickly this proposal was put together and rushed through the approval process.  The general idea, and the predecessor (OP_EVAL) have been around for a while, but this latest incarnation is very new.

Also, at the moment the mining code in the bitcoin client has a funny concept of a "standard" transaction which is not part of the bitcoin protocol at all -- it's just a gentleman's convention by which some (but not all) mining pools voluntarily choose to omit transactions that use advanced bitcoin features -- if you want to use those advanced features you have to wait longer since there's only one big pool (and several small ones) that will take them (once mined into the chain, however, all clients respect these transactions -- it's just a question of getting them into the chain).  The p2sh specification forces the "standardness" concept to become part of the protocol -- miners will be forced to use transaction templates whether they want to or not.  Many consider this to be infringing on the miners' jurisdiction.  Others consider it an affront to aesthetics and an invitation to headaches in the future.


Why is my bitcoin node not picking up transactions?

Turns out the issue was that Bitcoin core had not finished downloading all blocks. It was running extremely slow. After allowing more connections everything sorted itself out overnight.


Most mining implementations, solo or pooled, will start from 0 and increment the nonce value. In 2018 (and in recent years) ASIC miners are so fast that all possible nonce values are tried in practically no time. To get around this nonce-space exhaustion, the extraNonce value in the coinbase tx is updated once the nonce space has run out.

A pool can be thought of as multiple solo miners working in parallel.

Since ASICs are so fast, it doesn't make sense to have every worked mining on the same block template with only different nonce ranges (worker one on nonce 0-99, worker 2 on 100-199 etc.), since they will all quickly exhaust their own nonce space and start overlapping.

Instead, mining pools will send different block templates to each (or the majority, at least) of workers. The only difference is usually some transactions, which then change the merkle root. Thus, all workers are effectively mining a unique block, but all at the same height. If any worker solves a block, the pool will win that block.

Lastly, in addition to the nonce, the timestamp value is also updated every second, which allows you to retry the nonce space once again, since the header has changed.


how to embed coin prices of my choice in my website

You can use any exchange api or cryptocurrency market data api such as:

https://coinmarketcap.com/api/

Example:

https://api.coinmarketcap.com/v2/ticker/1/?convert=USD returns the following:

{
    "data": {
        "id": 1,
        "name": "Bitcoin",
        "symbol": "BTC",
        "website_slug": "bitcoin",
        "rank": 1,
        "circulating_supply": 17193862.0,
        "total_supply": 17193862.0,
        "max_supply": 21000000.0,
        "quotes": {
            "USD": {
                "price": 6963.44528122,
                "volume_24h": 3783503583.4896,
                "market_cap": 119728517210.0,
                "percent_change_1h": -0.51,
                "percent_change_24h": -1.1,
                "percent_change_7d": -14.16
            }
        },
        "last_updated": 1533575182
    },
    "metadata": {
        "timestamp": 1533574768,
        "error": null
    }
}

You can then access the price using javascript and calculate how much $20 is worth.


blockchain unconfirmed and unspent output

This thread has general answers about unconfirmed transactions.

In your case, if the tx is confirmed, then you will have to communicate wit the counterparty (the miner) to ensure they fulfill their end of the transaction. If it does not confirm, your coins will become spendable again (see that thread for more info).


Update from Bitcoin core 0.12 to 0.13 requires blockchain re-download?

The reason is not strictly the upgrade from 0.12 to 0.13, but from a version that does not support SegWit to one that does, after SegWit activated on the network.

Bitcoin Core 0.13 comes with the code preparations for SegWit, although they are only enabled for testnet. Several miners have run pre-release code for 0.13 on testnet ahead of time, causing testnet to already switch to SegWit.

The problem is that you don't have the witness data for the blocks since that activates, so 0.13 decided to ignore those blocks on disk, and download them again.


Could someone explain how the TX operation here works?

Multiple outputs are usual, just like e-mail.
If one of your friends has sent you 5 BTC, and another friend has sent you 2 BTC, you should combine and spend them if you need to buy something for less than 7 BTC and greater than 5 BTC.

(By the way, do you know what a change is?)

There is no "This output gets its value from this input" All input values are summed, then spent.


An online wallet service could "lose" my bitcoins?

The loss refers to a few things, all centered around the simple fact that using an online wallet creates a SPOF (single point of failure).

Consider effects on your balance when:

Online wallet operator incompetence enables

Accidental deletion of private keys for addresses in which your balance is stored.
Security vulnerabilities in proprietary code may let someone else send your balance elsewhere or store your keys for theft if and only if your balance gets large.

Online wallet operator dishonesty enables

Operator or its government(s) to seize your balance.
Vendor lock-in if you cannot derive the private keys yourself (e.g. your password simply decrypts client-side private keys stored on the wallet service).
Theft if the Operator decides to close shop, be it a MAD scenario or theft of balance once private key is exposed.

One should only use an online wallet with these features:

Service cannot derive private keys

Private keys are stored encrypted
Keys are decrypted client-side
User is prompted to accept code updates
User is permitted to review client-side code before accepting updates

Service offers portability

Once decrypted, private keys can be shown to the user
User tests import to another wallet client, be it a service or fat client

Service offers two-factor authentication

Password and security token authentication
Security token is decentralized or wholly random (RSA, Google Authenticator, etc.)
Security token is hardware-based and single purpose (YubiKey)


How to determine custom synchronization status?

Bitcoin Core 0.10.0 may provide the solution you need thanks to its headers-first synchronization.  The getblockchaininfo RPC in 0.10.0 provides both a blocks field (the number of verified blocks) and a headers field (the number of partially-validated headers).

Any time the numbers differ, you don't have all the blocks.  During Initial Block Download (IBD), they'll be hundreds of thousands of blocks apart.  (According to a Wireshark sniff I did during IBD a few weeks ago, it took my node less than two minutes to download a complete headers chain; syncing the blocks then took another three hours.)

Bitcoin Core 0.10.0 has two other new fields you might find useful, both in the getpeerinfo RPC.  The fields are synced_headers and synced_blocks.  The headers field is based on the last P2P headers message the remote node sent you.  The blocks field is based on the last P2P block inv message the peer sent you.  In both cases, they let you know the last header or block you have in common with the remote node (as best as can be determined).

I don't know how useful these getpeerinfo fields will be, as your node can't tell you the height of a block until it has the corresponding block header---at which point the getblockchaininfo RPC will already tell you that you're out of sync.  However, they are kinda fun to look at.

  Could I just make multiple getheaders requests and see if the peer returns any headers later than the header I have, or would the peer ban me for requesting the same headers again and again?

As far as I know, there's no ban score there (as long as your packets are valid).  However, the remote peer should send you an inv message as soon as it validates an incoming block---so there's no need to poll it as long as your app handles inv messages with a MSG_BLOCK type.


Create an object of wallet app kit like:

WalletAppKit kit = new WalletAppKit(params, new File("."), "filename");
kit.startAsync();
kit.awaitRunning();
Iterable<WalletTransaction> walletTransactions = kit.wallet().getWalletTransactions();

this walletTransactions will give you all transactions related to the wallet.


yes, it's complicated, you need to run the equivalent of remote desktop to gain access to the user/date file where the wallet.dat file is and the related block chain information.  Even with Linux, you can not set multiple users with the same block chain information and wallet with out some form of ' fake access ' to that particular machine as that particular user.

2.Considered extremely unsafe and bad practice.  Anyone with the right network tools could intercept your contact to the host and copy enough to log in as you and send the whole wallet to their own with no way of reversing the transaction.

no, once you have access on the host machine for what it cares is that user typing in to it, no stopping someone from remotely sending all your coins to their wallet or you sending your transactions from that one wallet if there is the coins for it.  The passwords and such would seem to the host system that the user was at the keyboard typing.
I recently switched to Ubuntu ( Linux ) from XP due to the amount of times remote assistant or remote desktop kept re-re-re-installing itself.  Any operating system that allows remote access will not have an issue with any other operating system connecting to it, passing authentication, then treating the incoming commands ( no mater how self destructive ) as if they were at the keyboard.
Alternatives is to have the ' current ' block chain on the systems, close Bitcoin, replace the wallet.dat from a backup ( each time ), wait for the rescan, do the transaction, close Bitcoin, put back the non-shared wallet.dat file so that it prevents any one else accessing that unit from getting a copy of your wallet to spend hours hacking.  The wallet info is the wallet, the block chain is the copy of ALLLL transactions.  No wallet, no way to send from that address, Bitcoin will create a new ( empty ) one on start up if there isn't already one.

Agreed on the Blockchain wallet option, every online wallet has the cost per transaction issue and you can set so few transactions as a bulk send with it.  The best option is just have one wallet on one system that has remote administration removed, no remote desktop and you physically at the keyboard to send.  The VPN ( Virtual Private Network ) option still would require remote desktop ( SSH connection as ROOT in the Linux world ) to log in and open the Bitcoin Client as a specific user on that system to gain access to that particular copy of the block chain and that particular wallet.  Part of the built in security is where the wallet is stored.  In Windows, it is in the logged in user's application storage directory  ( documents and settings\user\Bitcoin ) and only THAT user can get Bitcoin-QT to access that particular directory.  As an option to look in to, the owner of Slush's Pool ( Bitcoin mining pool ) was working with some people on a portable wallet.


You need a way for an onion service to be created, connected to and advertised. Usually, with Tor running on the same machine, just start bitcoind with the following option should do it depending if your installed versions of Tor and Bitcoin Core are new enough:

>bitcoind -listenonion

You may also need to override -bind=, -discover=, listen= and -externalip= after that to suit your exact configuration.

Of course, the setup in your question is a little different to standard. What you will need to do is:

Bind your bitcoind to the network IP of the machine it is running on. It probably is already but, you can use -bind= if necessary.
Ensure the firewall on your bitcoind machine will allow incoming connections to the bitcoind service from your Tor router. With firewall configuration, it is always best to be specific.
Setup the onion service on your Tor router and point it to your bitcoind machine. Make a note of your onion service name.

Ordinarily, you should be able to add the following lines to the /etc/tor/torrc file:

HiddenServiceDir /var/lib/tor/bitcoin-service/
HiddenServicePort 8333 {machine IP of bitcoind}:{mainnet port}
HiddenServicePort 18333 {machine IP of bitcoind}:{testnet port}

*Note that I have not tested this setup and presume Tor will allow you to specify the IP of your network machine running bitcoind

You may consider adding 8333 to the LongLivedPorts parameter in your permanent Tor config and restart Tor unless you have a live configuration editor like nyx to also change it on the hop.
Configure bitcoind to use and advertise the onion address for incoming connections. You can use -externalip={onion}. I am not sure if you can or if you need to specify this multiple times, for any standard IPv4/IPv6 external incoming addresses also.
You may also consider using -discover=1 since you are not trying to hide your standard external IP addresses I presume.

In bitcoin-qt, you can see the command line options and their descriptions in the help menu.


First time user. How can I recover my BTC?

Encrypt your addon password here https://myeasywww.appspot.com/utility/free/online/Crypt_Decrypt-MD5-AES-HMAC-SHA-DES-RABBIT/en?command=UTILITY&ID=2

Copy the result from sha256result.

On this site https://www.browserling.com/tools/aes-decrypt

enter the encrypted key from the "download" file in the top box, your encrypted password in the bottom

The result should be your private key, you can create a new wallet https://blockchain.info/wallet/#/signup and import via settings, addresses, import bitcoin address


Lightning network: Are decrementing timelocks used in bi-directional channels?

The paper Towards Bitcoin Payment Networks (thanks this answer for the link) gave me a clearer understanding of the topic. Here is a very simplified summary of what I've learned.

There are multiple approaches to payment channels, including:

A simple uni-directional channel (replace-by-incentive);
A simple bi-directional channel (with decrementing timelocks, i.e., replace-by-timelock);
Duplex micropayment channels (see also: my related question);
Lightning network.

In Lightning, a single bi-directional channel is constructed using a breach remedy transactions (BRT), the idea being: before updating the channel state, both parties commit that if they broadcast an earlier state, the counterparty will be able to claim all funds. This is achieved with relative timelocks.

Furthermore, Lightning channels are connected into a network, where payments can be routed through non-custodial parties. This construction is based on hash time locked contracts (HTLC). The receiver generates a random value R, sends H(R) to the sender, and the sender specifies in the output script that R is requires to claim it. After the transaction propagates through nodes, the ultimate receiver discloses R and claims their funds; knowledge of R, in turn, allows all parties along the route to claim their funds from the previous node. In order to give each party time to do so, decrementing absolute timelocks are used.

Summary: the Lightning network does not use decrementing timelocks in a single channel, but uses them in multi-hop channel networks.


Why does pay to pubkey hash contain OP_CHECKSIG at the end instead of beginning?

Couldn't we check the signature even before doing the hash?

We certainly could, but that would be silly. The hash is about 1000x faster than checking a signature. Doing the signature check when the hash fails would be a waste of time

  More precisely, couldn't it instead do:

  scriptPubKey: OP_CHECKSIGVERIFY OP_DUP OP_HASH160  OP_EQUAL

No, that certainly wouldn't work. The OP_CHECKSIGVERIFY would remove the public key from the stack, so there is nothing to compare it with. The OP_DUP would always fail, as there is nothing to duplicate anymore.


How many transaction can I broadcast simultaneously?

You need to wait for the transactions to be confirmed in a block. The limit is on the number of unconfirmed transactions that can be chained together and is completely unrelated to how quickly the transactions were received.

The chain can only be extended once the unconfirmed transaction chain shrinks, and that can only happen as transactions are confirmed. It is important to note that the entire chain may not be confirmed in the same block and that the next block may not include any transactions in the chain of unconfirmed transactions.


How do I import my 12 Breadwallet seed words into Electrum?

Breadwallet uses BIP 39, but Electrum no longer does. However, Electrum does have a compatibility option for BIP 39 seeds. Just click the "Options" button and check the box labeled "BIP 39 Seed".


is there a way to run bitcoin-qt and point it to a local testnet?

Use the -testnet option. This will run the daemon in testnet.


How to send bitcoin to a multisig address

You send bitcoin to a multisig address in the same way as a normal address. Multisig addresses are just a type of P2SH address which start with a 3, and have been supported by every major wallet and exchange for years.

If your address doesn't start with a 3, it's probably not an address at all. (Unless it starts with bc1 which is a very new address format and not widely supported yet)


What your screenshot is showing: You have set the amount of USDT to 30 in each case, so at the higher price, you will need to sell less BTC in order to get 30 USDT. This is different than setting the amount to a constant amount of BTC in both cases, and seeing the difference in USDT.

The math in your example:

(1 BTC/6180 USDT)(30 USDT) = (0.004854.. BTC)

(1 BTC/6154 USDT)(30 USDT) = (0.004875.. BTC)

The math, assuming you're buying/selling 0.005 BTC at the prices listed:

(6180 USDT/1 BTC)(0.005 BTC) = (30.90 USDT)

(6154 USDT/1 BTC)(0.005 BTC) = (30.77 USDT)


How to get address type(format). Need to calculate vsize and fee

P2PKH: Starts with "1". Commonly known as "Legacy Address". They have a known vbyte size. Size to spend is predictable.
P2SH: Starts with "3". You would know if you made a P2SH address, since they're almost always involved with n-of-m multisig. Vary in size depending on how many parties are involved in the multisig. Size to spend is unknown unless the wallet you're spending from knows how to spend it or you created the transaction manually.
P2WPKH in P2SH: Starts with "3". Commonly known as "Segwit Address". Quickly becoming, if not already, the most common address type. They have a known vbyte size. Size to spend is predictable.
P2WSH in P2SH: Starts with "3". Likewise with P2SH, you'd know if you made this type of address as it's involved in n-of-m multisig. Vary in size depending on how many parties are involved in the multisig. Size to spend is known unless the wallet you're spending from knows how to spend it or you created the transaction mnually.
P2WPKH: Starts with "bc1q". Commonly known as "Native Segwit Address". They have a known vbyte size. Size to spend is predictable.
P2WSH: Just like P2SH but starting with "bc1q" and much longer than a P2WPKH address.
P2TR: No idea what this is unfortunately. Looks like it stands for "Pay 2 Taproot". But I admit that I don't know much about Taproot, and I don't think this has been implemented on mainnet yet.

Please tell me how to get the address type by API for implementing this formula?

I don't know what API you're referring to, but if you are running a Bitcoin Node you can run the command bitcoin-cli getaddressinfo "YOUR_ADDRESS_HERE" to get information about a particular address. Note that for addresses starting with "3", you will not be able to determine if it is P2WPKH in P2SH vs. P2SH, as they are indistinguishable from each other until spent. They will both have "isscript": true. For "bc1q" addresses, they will both have "iswitness": true and P2WSH will also have "isscript": true.


What forums or websites have an active bitcoin section?

Bitcoin Talk is currently the most active.

The bitcoin reddit also has a fair amount of traffic and discussion.

After that, it falls off pretty significantly.

Talk Gold has some discussion, so does bitcoin.org.uk.

bitcoinforums.net and other forums are sparse. (See link to wiki in Chris Acheson's post for a list of all current forums)

There are of course often discussions about blog posts or news items on tech related blogs like Slashdot, Ars Technica, Wired, etc. The same is true of some sites dedicated to online gambling, and some Tor forums dedicated to the Silk Road and similar projects.

There have also been some longer threads that are especially useful for miners at the Overclockers Forum


Where is bitcoin-qt's blockchain stored in Windows 7?

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

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


Running a command line bitcoin CPU miner on ubuntu for slush's pool

I suggest to use one of the updated cpuminer versions which support more than one algorithm. This way you are also set up to mine different coins which use other PoW functions. The most versatile one is tpruvot's fork:cpuminer-multi. For me this one worked out of the box on a recent Ubuntu 14.04 installation.

The syntax is similar to all other cpuminer versions:
cpuminer -a sha256d -o stratum+tcp://pool.com:port -O username.workername -p password


Bitcoin testnet: "Bitcoin is downloading blocks..." and other problem

For your first question, the message "Bitcoin is downloading blocks" is produced if the client hasn't yet downloaded all the checkpoint blocks.  For testnet, there is exactly one checkpoint block, at height 546.  So until your client has mined 546 blocks, you will continue to get this message.

Unfortunately, when you do mine block number 546, it will be rejected since its hash won't match the hardcoded checkpoint, and you will still get this message anyway.  So you will have to remove the checkpoint from the code and replace it with a zero-height checkpoint matching your genesis block.


how much profit can I expect if I start mining today on my Gaming laptop?

Nothing to a few penny per year, even without paying for electricity or internet it's way too slow as of end of 2016. If you want to do mining you will need to do that on alt-coin that don't rely on SHA256.


How are Namecoins managed by the system?

First, I'd like to note that Namecoin and Bitcoin are separate - they share a lot of code, but they have different blockchains and networks.

Let me talk about the problem that Bitcoin solves: double spending. It solves this by having nodes vote with their hashpower on what they think the most accurate picture of the network is. This creates an ordered list of transactions.

  How does Namecoin basically work?

It turns out that having an ordered list of transactions is exactly the sort of thing you need to create a naming system that provides all three elements of Zooko's triangle

  Secure
  Memorable
  Decentralized

Registering a domain looks like this:

You publish a transaction that says, "You can find mysite.bit at 23.12.34.67"
Other nodes include that into a block.

It's about as difficult to steal your domain name when it has X confirmations as it is to double spend a transaction which has X confirmations.

  Doesn't it mean that we will eventually run out of the supply of Namecoins?

That's true, but the supply of nice sounding memorable domain names is so small that it makes sense for there to be a cost to registering domain names en masse.


Use several PC to generate vanity addresses

Technically, you can simply run the software on all 7 machines and it will have the same expected completion time.

You will have the same mathematical probability of finding an address that matches what you're looking for in both cases.


How can I regain coins on a device with insufficient memory to fully synchronize?

You can always save the private key and import it to another wallet, or in a web wallet for more convenience.


How do the people who work on Bitcoin Core get paid?

The majority of Bitcoin Core developers are volunteers or started as volunteers. They worked on Bitcoin Core in their free time and contributed without anyone paying them.

Later, when a developer becomes more prominent and devotes more time to the project, they may seek out someone (a person or company) to sponsor them to continue to work on the project. Alternatively a person or company may wish to sponsor or hire an active and prominent Bitcoin Core developer so that they may contribute to Bitcoin Core's development and help to keep the software maintained and growing. Some are paid to work on Bitcoin Core full time, others to work on it part time.

Currently many of the most active contributors are either sponsored or employed to work on Bitcoin Core specifically. However many others contribute as volunteers in their free time and are not paid to work on Bitcoin Core.


Do I need 145GB disk space to validate and relay transactions with Bitcoin Core?

Yes, it will not work unless it is fully synced. This means the entire blockchain needs to be downloaded from the genesis block. Not only you that you need the required space but the sync can also take some time depending on the speed of your computer (RAM/CPU/HDD) and the connection speed (blocks need to be downloaded from other nodes).

Checking the available free disk space on your computer is dependent on your operating system, but it should be something very simple (most operating system show the available disk space near partition letters).

You could use pruning if you use a recent enough version of Bitcoin Core but this still requires download and verifying all blocks.

If you look for a solution that does not require disk space and syncs very fast, look for a SPV wallet like Electrum but be advised that SPV (Simplified Payment Verification) does not provide the same level of security as a full node. Use with caution and you should be safe.


can i update my bitcoin qt 0.7 to 0.11 if my wallet has never synchronised and i'm still waiting to receive my bitcoins

Yes, you can update from 0.7.* straight to 0.11.0 without problem. 0.7 is actually incapable of synchronizing with the network due to its age, so the upgrade is mandatory. When you open the new software it will rebuild the files on disk, and then resume synchronization (significantly faster than it was before). There is near zero chance of you losing your BTC by doing this, but make a backup of your wallet.dat file regardless just to be as safe as possible.


This website allows you to select your GPU / ASIC / etc, and it will tell you the expected hashrate of that hardware for different algorithms.

I can offer no guarantees about the validity of the data they provide though, in general the best way to figure out your hashrate would be to actually run the hardware and see what happens.


What exactly does the "For each input, if the referenced output exists in any other tx in the pool, reject this transaction." tx validation rule mean?

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

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

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

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


Is the idea of color coins/open assets still alive? Are there any interesting projects ahead on this way?

There are at least 5 different colored coins implementations on bitcoin that I'm aware of. The ones in active development include:

Colu - They recently showed how their implementation can be used with the lightning network. https://www.colu.com/
Chromaway - They've been running a lot of pilots with various banks and whatnot. http://chromaway.com/

There's also a slack channel for colored coins as well, which you can see here: http://coloredcoins.org/

So no, it's not dead and there's still plenty of development going on.


While I agree with chytrik I would want to suggest a concrete method of approaching this.

Have a look at the combined order book https://data.bitcoinity.org/markets/books/USD you can see that you currently would move the price by 10 % if you baught roughly 10k BTC. Usually after such moves people get alerted and are willing to sell at higher prices so you could wait a little until the order book fills and repeat the process.

Assuming there are always 10k fresh floating BTC available with leads to a 10% price increase. (With regular trading many of the btc on the order books are going to free float afterwards so that assumption is pretty strong) you would have 10 = 100000/10000 price increases of 10 % each resulting at a price of 8250*1.1^10 = 21398 per btc.

You would have to pay roughly 1.4 bn usd which is 8250*10000*(1.1^1+1.1^2+....+1.1^10)

Obviously this is just a simple model build on strong assumptions. Also you would try to buy that much btc otc because you would not want to move the price but obviously you would have to convince holders to sell


Does bitcoin-core software/client connects with only same version number nodes?

You can see from the Debug Window ("Peers" tab) that the Bitcoin Core client connects with multiple clients not only with different versions but different implementations.

So to answer your question: No.


TorBrowser + HTTPSEverywhere Blockchain.info wallet safe?

With Blockchain.info, only encrypted private keys are stored on their server. Decryption of private keys and signing is done in the browser. You don't even need to worry about sending your data over HTTPS, let alone TOR because any data that leaves your browser is securely encrypted before it even leaves your computer.

There's one caveat, however; it's difficult to determine whether or not Blockchain.info (or any site, really) is doing exactly what they claim unless you constantly monitor traffic between them and your browser. Ultimately, the most dangerous attack vector would be for Blockchain.info to behave dishonestly, or for a website to impersonate them and do the same.


What is stopping someone from creating their own "chain" in Proof-of-Stake systems?

This problem is generally known as "nothing at stake" or "costless simulation", where there is indeed nothing preventing anybody from making arbitrarily long chains where they are the only participants in the network. If you were an early majority holder of the altcoin, emulating a massive network with thousands of users and then presenting that to peers valid would be trivial and effectively costless. Compromised private keys or "empty" private keys purchased from early participants in the network would also be a viable choice for bootstrapping an attack like this.

The proposed solution in NXT is that nodes will refuse to reorganize very deeply (more than a day or two), making a weak assumption that the first chain you have seen is probably going to be the one the rest of the network is on. Ethereum has proposed for their move to Proof of Stake that they will use a "phone a friend" cryptosystem, essentially requiring users to confirm that they are on the same root proof of stake block chain using real world out of band communication (like a phone call or Royal Mail).

Neither has particularly strong assurances of validity, and is simply one of the realities of a Proof of Stake system that has the cost and reward internalized. In Proof of Work there is a significant real world cost to attempting competing chains, and given the choice of two there are clear rules for nodes to distinguish them.


Nano Ledger s shows BTC when sending BCH

I was having this problem too.  I realized where I was making an error, was when the google bitcoin app asks to open using the ledger, make sure you select the bitcoin cash icon on your ledger and not the bitcoin one.  That solved it for me.


How does a perpetual futures contract affects the actual price?

The majority of volume is traded via perpetual swaps, hence the majority of belief of the commodity price must lie in those perpetual swaps.  For this to be true, it would mean that the perpetual swap affects the spot price in the first place.
As the perpetual swap is a derivative of the actual commodity they share the price changes with each other by the no-arbitrage constraint as per answer here.
https://qr.ae/pNaIuG


Is there a way to change Bitcoin Open Source code to be more Environmentally friendly?

Yes, there is a way, by creating a BIP, but an alternative to PoW would very likely not get consensus in the community, and thus its supporters would be forced (and are free to) to create a hard fork, creating a new coin altogether. It is then to be seen which coin the market will choose, but my sense is that the majority of bitcoin investors will still favour the coin with the original PoW mechanism.
Many coins have been created to set out to find a replacement for PoW, yet none of the coins have gained significant market share.
The monetary property that PoW provides for bitcoin is unforgeability, conceptually very similar to the unforgeability of gold. Other proof mechanisms of other coins are believed to be easier to forge/corrupt and more prone to centralisation of a coin. Buyers of bitcoin likely value the monetary property of unforgeability that PoW provides and this is likely the reason why bitcoin remains the most valued coin, despite its reliance on energy.
While bitcoins reliance on energy on the surface does not seem ideal, a currency that can be forged or centralised also has no (long term) value. Users will subjectively value whether the energy spent that safeguards their investments is ‘worth it’, by investing in it, or not. Some journalists or celebrities, like Elon Musk, may consider it ‘not worth it’ or ‘morally unjust’ from their vantage point, or still believe that PoW can be replaced, despite many failed altcoins and a large body of research on PoW. However, if you have suffered through many currency devaluations or disagree with how the ‘petro’-dollar is upheld and the effects it has on the world politics, the energy spent to safeguard the value of bitcoin may -subjectively!- be ‘worth it’ to you.


Once all the nodes agree on the candidate

If you already have a way to achieve that, you don't need a blockchain at all. Just run the same algorithm to get all nodes to agree on which of two conflicting but otherwise valid transactions to accept.

If you don't, then perhaps you haven't solved anything.


what is preventing me from changing difficulty every submit when pool mining?

The work you were given is associated with a difficulty that the server decided upon before giving you that work.

Any work results you send in must be associated with work data known by the server.

When you submit work results, the work is looked up, and voila, there is the difficulty.

You may be given new work that has a different difficulty associated with it at a later time, but the old work still has the old difficulty.


Ho do I generate the output script of a bitcoin transaction?

This is a P2PKH (Pay-to-public-key-hash) address which means a2fd2e039a86dbcf0e1a664729e09e8007f89510 is the hash of your public key. Here is a step by step guide on how to go from public key to address


Bitcoin and Ripple's past 90 days prices somewhat correlated

Using price charts of the last 90 days in XRP/USD and BTC/USD, the daily prices of Ripple and Bitcoin appear to be somewhat correlated: Their correlation coefficient comes out as 0.741.

Correlations in Coingecko's Top Ten

I've proceeded to check the past 90 days correlations of the top ten cryptocurrencies as listed on Coingecko.com:

In the past ninety days:

Litecoin and Bitshares had a correlation of 0.93, as had Litecoin and NXT.
Bitcoin appears to be most correlated with Ripple and Litecoin, both 0.74.
Bitcoin appears to be least correlated with Stellar, at -0.19
The least correlation appears to be between Dogecoin and Monero at -0.05.

Procedure

All data was taken from Coingecko's last 90 days pricecharts on 2015-06-08. Therafter, I plugged them into LibreOffice, and ran Correl(A;B) on each pair.


Is it safe not to record private keys for paper wallets?

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.


I know this question is old, but I stumbled upon it looking how to teach myself how multisig addresses work, and I imagine others will to. So I’m going to try to explain the typical flow for creating, adding bitcoins to, and eventually spending a multisig address. This explanation is aimed at beginners, so please excuse my lack of brevity. First off, some terminology we should get out of the way.

Bitcoin Address: A bitcoin address is a string of (usually) 33 or 34 digits which we give to people when we want them to send us bitcoins. Here is an example of public address

19evXeJDDLNeRS4st4bGUJNGk8eBgVCCg4

Public Key: A public key is used to derive a bitcoin address, although knowing a bitcoin address WILL NOT allow you to find that address’s corresponding public key. For more information on the public key / bitcoin address relationship go to https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses. Here’s what the public key for the bitcoin address pasted above looks like

035739f07de25c205525d81b126ed87bc30377e688705072d186e4f5c88908ce3a

Note that I only know that public key because it’s stored along with my private key in my wallet, I’m posting this usually confidential information here because it is easier to understand bitcoin when you have examples.

Multisig transaction/address: A multisig transaction is just a transaction that has as one of its inputs a multisig address. Multisig addresses are used to make it so multiple keys owned by separate entities are needed to move the bitcoins in an address.

OK great! Now, here are the steps and background for making a multisig address. I’m going to explain things in plain English first, and then follow up with the bash/Terminal commands you will use to create/add money to/spend the multisig address. I’m using the standard bash delimiter “$>” to indicate that whatever comes after the “$>” is what you should enter into your terminal. Lines that come after the line containing “$>” are the output of that command. If you ever have any questions about a command your entering, you can type the following into the Terminal to show what arguments should be passed to the command

$> bitcoind help <nameofcommandhere>

This explanation assumes you have an update to date and functioning bitcoind server running that can accept RPC commands.

i. Create the public keys that will comprise the multisig address. You are going to use these public keys and one other piece of information to create your multisig address.  The most common distribution of the addresses in a 3-address multisig address (it’s possible to have a multisig address comprised of more than three addresses, but they’re not supported by all miners so for this explanation we’ll deal with the most common 3-address multisig address) are as follows. PubKey#1 is typically owned by you and stored on a device you have easy access to (like your mobile phone). PubKey#2 is typically also owned by you but stored somewhere secure (like cold storage or in a paper wallet). PubKey#3 is often the public key of some third party, like your brother or a company offering bitcoin-related services like Coinbase. Let’s call each of these owners of a public key an entity. Recall that Bitcoin uses private/public key cryptography, so whomever creates a public key also keeps the corresponding private key to themselves. This private key will be important later in the explanation. So let’s create 3 new public addresses which we’ll end up using to create a multisig address! Note that as I explained above, if you were using a multisig address in a real world situation you’d probably get one of the three public keys from some third party, but for this explanation here we’re just going to create all three ourselves. Here are the relevant RPC commands for creating public keys:

Enter this command to see all your accounts. Assuming you’re starting fresh, you’ll only have the account with the name empty string and no bitcoins in it

$> bitcoind listaccounts
{
    "" : 0.00000000
}

Enter the following command three times to create three new addresses in this account

$> bitcoind getnewaddress “"

Enter this command to view your newly created addresses

$> bitcoind getaddressesbyaccount “”
[
    "1CtfcziAhqx83CtSPdufgZDGmL8ohTFTdd",
    "1JeK7TZR85BL8WvtHgCiTSYtPJupdYYXgR",
    "1MP3BzdhzoBmGoBiVfLmhv7B4Czxm3MbrU"
]

You’re not done though. So far you’ve only seen the public addresses. You need to get the public keys of these addresses. Luckily you can do that simply by typing the following command three times, each time substituting  for one of the addresses you created

$> bitcoind validateaddress <btcaddress>
{
    "isvalid" : true,
    "address" : "19evXeJDDLNeRS4st4bGUJNGk8eBgVCCg4",
    "ismine" : true,
    "isscript" : false,
    "pubkey" : "035739f07de25c205525d81b126ed87bc30377e688705072d186e4f5c88908ce3a",
    "iscompressed" : true,
    "account" : ""
}

The value to the right of “pubkey” is that address’s public key.

ii. You then use these three keys to create the multisig address. In the previous paragraph I mentioned how you needed the public keys plus one other piece of information to create the multisig wallet. That piece of information is the number of signatures needed to spend the bitcoins in a multisig address. One of the useful things about a multisig address is that, in order to send the money in the address, it takes multiple private keys (I told you we’d come back to these!) signing the transaction to make it valid. So for this example we’re going to use the number 2; two out of the three entities will need to sign the transaction in order for bitcoins to move anywhere. When we create the multisig address, bitcoind will return the multisig 34 digit address, as well as a bunch of hex data called the “redeemScript”. Note that the first digit in the address is a “3”. Most addresses your used to probably begin with a “1”, but all multisig begin with “3”. Copy, paste, and save the address and redeemScript values somewhere as we’ll need them in a bit. So, we create the multisig address by entering the following command. Be sure to type the apostrophes and quotes exactly as I have, and substitute  for the public keys you got from validateaddress.

$> bitcoind createmultisig 2 ‘[“<pubkey>", "<pubkey>", "<pubkey>”]'

{
    "address" : "3DS7Y6bdePdnFCoXqddkevovh4s5M8NhgM",
    "redeemScript" :     "5221027ca87e1aa2595ec7771afee8fdc6efdbc301b8370c4386731b4bd82247dc74a321022cc9874ba092095dd    a47a4e4edb1781c43c35b3ec0429ac005df37b9d6eec94b21035739f07de25c205525d81b126ed87bc30377e6887    05072d186e4f5c88908ce3a53ae"
}

Copy the output that you get somewhere, we will need it soon.

iii. Send some bitcoins from one of your wallets to the multisig address. I was surprised to learn Coinbase doesn’t think that multisig addresses are valid, so if you’re using Coinbase you can’t send directly from your Coinbase wallet to the multisig address. As a workaround, you can use Coinbase to send a small amount of bitcoins (I sent 1 dollar’s worth) to one of the three addresses you originally created, wait for that transaction to get confirmed, and then use the following command to send bitcoins from that regular address to the multisig address. Replace  with the multisig address and  with some amount of bitcoins worth less than the amount you sent to the regular address. Remember that you’ll have to pay transaction fees! If the command works it will return the transaction’s transaction hash. You can look at this transaction by entering the transaction hash into the search field at blockchain.info.

$> bitcoind sendtoaddress <bitcoindaddress> <amount>
0ac29fc675909eb565a0984fe13a47dae16ca53fb477b9e03446c898b925ab6b

iv. Finally, we’re going to spend the bitcoins we just received in the multisig address. We will use the private keys of the first two addresses we created in step 1. In order to obtain the private keys, we enter the following command twice into the Terminal, each time replacing  with one of the bitcoin addresses you created:

$> bitcoind dumpprivkey <btcaddress>
KyiRjmZYPH7cfyKf1WNb3BZFz1ySurWEYKxLngkH6VmTcSCirBPG

(As a side note, the worst possible thing you can do in the bitcoin community is to paste the private key of one of your addresses onto a public forum. NEVER DO THIS! I am only doing this because I want to make sure readers can follow along with my explanation, and there's only a couple dollars in these addresses)

v. Now that you have two public/private key pairs, we can finally spend the bitcoins we sent to the multisig address. To do so, we first need to gather some information about that transaction where we sent bitcoins to the multisig address, because we need to choose the correct output from that transaction to use as the input in the raw transaction we’re about to create. Type the following into the terminal, replacing  with the transaction hash that was returned earlier.

$> bitcoind getrawtransaction <txid> 1
{
    "hex" : "010000000175783b2ca3381efb15ee7f5f44632a2c699171a924185386460b91d0f211d3bb000000006a47304402207707875d5c29ed0d97cd72087c67c17c57e2ef34d0b6208a054fffece8704477022045aec0ea57830f53fa0e52094400dd4fb654d7712f2ac3341a762d0f46c02d370121027ca87e1aa2595ec7771afee8fdc6efdbc301b8370c4386731b4bd82247dc74a3ffffffff0210270000000000001976a91431e71089318d7b1ea51a1add0dd6525423f713c488ac702402000000000017a91480cff499983050ec4268d749a1f898bec53e9fc28700000000",
    "txid" : "0ac29fc675909eb565a0984fe13a47dae16ca53fb477b9e03446c898b925ab6b",
    "version" : 1,
    "locktime" : 0,
    "vin" : [
        {
            "txid" : "bbd311f2d0910b4686531824a97191692c2a63445f7fee15fb1e38a32c3b7875",
            "vout" : 0,
            "scriptSig" : {
                "asm" : "304402207707875d5c29ed0d97cd72087c67c17c57e2ef34d0b6208a054fffece8704477022045aec0ea57830f53fa0e52094400dd4fb654d7712f2ac3341a762d0f46c02d3701 027ca87e1aa2595ec7771afee8fdc6efdbc301b8370c4386731b4bd82247dc74a3",
                "hex" : "47304402207707875d5c29ed0d97cd72087c67c17c57e2ef34d0b6208a054fffece8704477022045aec0ea57830f53fa0e52094400dd4fb654d7712f2ac3341a762d0f46c02d370121027ca87e1aa2595ec7771afee8fdc6efdbc301b8370c4386731b4bd82247dc74a3"
            },
            "sequence" : 4294967295
        }
    ],
    "vout" : [
        {
            "value" : 0.00010000,
            "n" : 0,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 31e71089318d7b1ea51a1add0dd6525423f713c4 OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a91431e71089318d7b1ea51a1add0dd6525423f713c488ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "15Yrv3rAVxYTTGePM3ZZwumSnMfS9St9uD"
                ]
            }
        },
        {
            "value" : 0.00140400,
            "n" : 1,
            "scriptPubKey" : {
                "asm" : "OP_HASH160 80cff499983050ec4268d749a1f898bec53e9fc2 OP_EQUAL",
                "hex" : "a91480cff499983050ec4268d749a1f898bec53e9fc287",
                "reqSigs" : 1,
                "type" : "scripthash",
                "addresses" : [
                    "3DS7Y6bdePdnFCoXqddkevovh4s5M8NhgM"
                ]
            }
        }
    ],
    "blockhash" : "00000000000000002ab5cb0ee400200b8575fe393fef57d41b41a5d533a414a3",
    "confirmations" : 5,
    "time" : 1404775273,
    "blocktime" : 1404775273
}

Look for the key “vout”, which should have a JSON array as its value. We need two values here; the index of the output in vout which has the largest value, and the value of the “hex” key within that same output. When I originally sent this transaction I had sent 0.00160400 bitcoins. 0.0001 of that went to paying miner fees, and the remaining 0.0010000 went to a change address that my client software created for me. We’ll want to use the output with the largest value (here 0.00140400) as the input in our transaction when we create our raw transaction. So here the index is equal to 1. In this same transaction we’ll need the value for the key “hex” within “scriptPubKey. It’s too much to go into detail here as to what this value represents, if you’re interested in learning about one of the more fascinating parts of the bitcoin protocol start reading here https://bitcointalk.org/index.php?topic=377604.0. At a high level, the scriptPubKey “hex” value is a hexadecimal encoding of the script that gets run as part of a transaction input in order to verify that the transaction is valid. Anyways, the value for “hex” we want is thus a91480cff499983050ec4268d749a1f898bec53e9fc287

Remember when we created the multisig address one of the values that was returned was something called the “redeemScript”? Hopefully you copied and pasted that somewhere because we’ll need that to create our raw transaction as well. This also is used to verify that the transaction is valid and can thus be passed around by nodes when it is broadcasted to the network.

OK, here comes the most confusing part coding-wise; we’re going to do some relatively low-level bitcoin operations that are what is actually going on when you send coins from one address to another, though with the added complication of using a multisig address. We’re going to use the transaction hash, the index in the vout array we just found, the scriptPubKey, the redeemScript, as well as a bitcoin address which will receive a certain amount of coins we specify. Enter the following into the Terminal exactly as I have written, replacing  with the transaction hash,  with 1,  with the scriptPubKey,  with the redeemScript,  with the address you want to send these bitcoins to (I used one of the three I created at the start), and (you guessed it)  with the amount you want to send. Don't forget to account for a roughly 0.0001 transaction fee. Be warned that the warnings you’ll get are not very descriptive, so make sure you follow this layout exactly.

$> bitcoind createrawtransaction '[{"txid”:”<txid>","vout”:<vindex>,"scriptPubKey”:”<scriptPubKey","redeemScript”:”<redeemScript>"}]' ‘{“<sentToAddress”:<amount>}'’

01000000016bab25b998c84634e0b977b43fa56ce1da473ae14f98a065b59e9075c69fc20a0100000000ffffffff0160fd0100000000001976a9145eed147e77af70c64c31c056c3b3474c79c65da088ac00000000

That command just returned a raw hex-encoded transaction, this is the collection of bytes that bitcoin clients broadcast to the network, and which contain the information necessary to verify that the outputs being used as input in the transaction are valid. But right now this transaction is NOT valid, because it has not been signed by at least two of the private keys that are associated with this multisig address. Let’s do that now. We’re going to take this raw hex transaction, most of the information we just entered in the previous command, and the private key of the first address we created and sign the transaction. The command looks like this, where you’ll replace  with the output of the previous command, and  with the private key of the first address we created (remember, the one we obtained by running “bitcoind dumprivkey ”?)

$> bitcoind signrawtransaction ‘<rawhextransaction>' '[{"txid”:”<txid>","vout”:<vindex>,"scriptPubKey”:”<scriptPubKey","redeemScript”:”<redeemScript>"}]' ‘[“<privkeyone>”]'

{
    "hex" :     "01000000016bab25b998c84634e0b977b43fa56ce1da473ae14f98a065b59e9075c69fc20a01000000b500483045022100f98068a026e2fc75cfeffe84bbac4223ed172df42bca01fd748a14bd960b1695022062c61a7f4f2a63a65d96b0feaf2a048bc2ca93e5de13013978a187395f880b6d014c695221027ca87e1aa2595ec7771afee8fdc6efdbc301b8370c4386731b4bd82247dc74a321022cc9874ba092095dda47a4e4edb1781c43c35b3ec0429ac005df37b9d6eec94b21035739f07de25c205525d81b126ed87bc30377e688705072d186e4f5c88908ce3a53aeffffffff0160fd0100000000001976a9145eed147e77af70c64c31c056c3b3474c79c65da088ac00000000",
    "complete" : false
}

You’ll note that the “complete” key is false. That’s because we’ve only provided one of the two signatures we need to make this a valid transaction. The value for “hex” is hexadecimal representation of the raw transaction we created, but with one signature included. Next we’re going to take the transaction with one signature and sign it with the private key of the second address we created. The Terminal command is very similar:

$> bitcoind signrawtransaction ‘<onesigrawtransaction>' '[{"txid”:”<txid>","vout”:<vindex>,"scriptPubKey”:”<scriptPubKey","redeemScript”:”<redeemScript>"}]' ‘[“<privkeytwo>”]'

{
    "hex" : "01000000016bab25b998c84634e0b977b43fa56ce1da473ae14f98a065b59e9075c69fc20a01000000fdfd0000483045022100f98068a026e2fc75cfeffe84bbac4223ed172df42bca01fd748a14bd960b1695022062c61a7f4f2a63a65d96b0feaf2a048bc2ca93e5de13013978a187395f880b6d0147304402201ce986e3fd780f4fe81f40ceb271a8ff34c3845e385b8424f8b20d1b91f1282102205dc71831baf5606f59d06b1d115bda3ec28817cdb4bf9df06643d550c30ef193014c695221027ca87e1aa2595ec7771afee8fdc6efdbc301b8370c4386731b4bd82247dc74a321022cc9874ba092095dda47a4e4edb1781c43c35b3ec0429ac005df37b9d6eec94b21035739f07de25c205525d81b126ed87bc30377e688705072d186e4f5c88908ce3a53aeffffffff0160fd0100000000001976a9145eed147e77af70c64c31c056c3b3474c79c65da088ac00000000",
    "complete" : true
}

You’re probably happy to note that “complete” is now true. We now have only one more step! We’re going to take the output of this last command, which is a valid and fully signed transaction sending bitcoins from a multisig address to an address you specifying, and send it off using the “sendrawtransaction” command, like this

$> bitcoind sendrawtransaction <fullysignedtransaction>

bc26380619a36e0ecbb5bae4eebf78d8fdef24ba5ed5fd040e7bff37311e180d

And finally, this will return the transaction hash for the transaction you just sent out.

That’s it! You can use blockchain.info to see that transaction on the network. Now you know how multisig addresses are created, how to send money to multisig addresses, and most importantly how to spend those bitcoins. Now please, go out and help make wallet software that implements multisig transactions in a user friendly way.


Regtest is a network designed solely to be private and for testing only. You can create a private regtest network and do testing and experimentation with it. It is not a public network and has no peers for you to connect to.


In Bitcoin, what happens if there is no viable nonce?

It's important to note that the block hash is over the entire block header, which contains:

Block Version
Nonce
Previous block hash
Timestamp
Merkle Root
nBits

Of these, only the nBits and previous block hash are fixed - all of the others can be manipulated to alter the hashed data at will.
Once all 32 bits of the nonce value have been exhausted (which happens extremely fast on ASICs), miners will simply alter the timestamp, block version, or merkle root (by altering the coinbase transaction or changing their list of selected transactions/their ordering), allowing them to try a new block header with the entire nonce space again.
These alterations are repeated until some combination of the above produces a valid block hash.


Litecoin uses exactly the same procedure to generate addresses, the only difference is the network prefix.

On step 4 (Add version byte in front of RIPEMD-160 hash) instead of 0x00 for bitcoin use

0x30 for Litecoin main-net or

0x6F for Litecoin test-net.

Your address should start with L then and will be a valid Litecoin address.

Full sequence:

0 - Having a private ECDSA key

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

1 - Take the corresponding public key generated with it (65 bytes, 1 byte 0x04, 32 bytes corresponding to X coordinate, 32 bytes corresponding to Y coordinate)

0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

2 - Perform SHA-256 hashing on the public key

600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

3 - Perform RIPEMD-160 hashing on the result of SHA-256

010966776006953D5567439E5E39F86A0D273BEE

4 - Add version byte in front of RIPEMD-160 hash (0x30 for Litecoin Main Network)

30010966776006953D5567439E5E39F86A0D273BEE

(note that below steps are the Base58Check encoding, which has multiple library options available implementing it)

5 - Perform SHA-256 hash on the extended RIPEMD-160 result

27872C1C5DF98F26A09EEBE7A048A52CCFFD647098EACDB6D5D48563B0DBE7B4

6 - Perform SHA-256 hash on the result of the previous SHA-256 hash

713B731B0E30DDD0B6E1F73E2EA2A1E298A35BBDB37FF13C593028515C3B2B50

7 - Take the first 4 bytes of the second SHA-256 hash. This is the address checksum

713B731B

8 - Add the 4 checksum bytes from stage 7 at the end of extended RIPEMD-160 hash from stage 4. This is the 25-byte binary Litecoin Address.

30010966776006953D5567439E5E39F86A0D273BEE713B731B

9 - Convert the result from a byte string into a base58 string using Base58Check encoding. This is the most commonly used Litecoin Address format

LKKSCYdyWP7fJDMZ1KUDbpj3yPmQ22MQrv


Figured out I had placed an order to sell half of my bit coins a while back and forgot about it... the order was still in effect thus rendering half of my stock unusable hahaha! All is well now!


New version of Bitcoin Wallet is signed with a different key

I don't have an account, but just popping in to clear this up. F-Droid repos sign all of the published apps with a separate, private key. For obvious reasons, that key is not the same as the one used by upstream.

Why don't we use the same key as upstream? Because we compile the apps ourselves, and because we can't expect upstream devs to always sign our built apks.

Long story short, this has nothing to do with upstream. You should either stick with his builds or with F-Droid's, but mixing them will result in signing key conflicts.


I've forgotten my Electrum 12 word pass phrase, I have full access to the wallet - can I recover or generate new one?

The passphrase can be viewed from Wallet > Seed option


Can collective mining pools refuse to recognize a mining block mined by a specific miner?

What you are describing is essentially a majority attack. A miner (or group of colluding miners) with a majority of hashpower can censor arbitrary transactions, and blocks that include them. This question has more info about what an attacker can do.

Crucially: a majority of hashpower can create blocks at a faster rate (on average) than the minority. So if the majority decides to not build upon a block that the minority found, they can reliably outrun the minority, by simply mining their own chain, and ignoring blocks found by the minority.

  Essentially the other mining pools are calling a "fork" where they don't recognize the block where Satoshi did a transaction. Would it be against bitcoin protocol?

I wouldn't say it is "against the Bitcoin protocol", but it would be against the financial incentives which keep miners 'honest' (ie, not attacking the chain to censor transactions / blocks). Ultimately, the protocol does specify that the most-work chain is valid, so this becomes a tricky question about what the social understanding of the consensus rules really is.

  If they somehow get away with it, considering they have the hashing power, what would happen to the other miners? Would they accept the fork or just go along with it?

A majority-attacker can ignore any blocks created by the minority, and if they do so, there isn't anything the minority can really do about it. Enacting the attack is extremely costly though, the financial incentive to attack would have to be unbelievably large in order to outweigh the cost. So I think that simply censoring one of Satoshi's transactions would not be worth the cost of the attack.


Is it possible to make a paper wallet out of a bitcoin-qt wallet?

Right now, that's not supported. You can try (see user2194702's answer), but if you don't know the exact workings of the wallet, you're very likely to shoot yourself in the foot.

For example, Bitcoin-Qt will send change to a new address every time you create a transaction, and in general does not follow the "balance per address" concept but a "balance per wallet". This improves the privacy of the system (for you, but also for others), but complicates backups. In particular, you cannot backup a wallet by just making a backup of a single key.

HD Wallets (hierarchical deterministic wallets, see BIP32) are intended to overcome this problem, by making sure you can backup a wallet by only making a backup of a single seed that is used to derive all keys. This is planned to be implemented in Bitcoin-Qt, but not yet available.


A schnorr signature, without key prefixing, is a tuple {pubkey (P), message (m), R, s} where the equation R == sG +  H(R||m)P holds.

Now, assume you have pubkeys P and P2 who's discrete logs differ by c which is known to me, as is the case for non-hardened BIP 32 when I know the extended pubkey (P2 == P + cG). If I know a signature by pubkey P of message m, I can use it to forge a signature of m by pubkey P2: {P2, m, R, s - H(R||m)c} because if you write out the relation for P2 and then express it in terms of the relation for the first signature, that's what you get.

For batching: The task there is we have two to n equations of the form R_n = s_nG + h_nP_n, we could naively batch verify by first rewrite them as  0 = sum(s_n)G + sum(h_nP_n) - sum(R_n) and then using an efficient multiexp to compute the big product-sum. E.g. if we want to make {P1, m1, R1, s1} hold we can add to the batch {-P1, m1, R1, -s1} so now the errors cancel.

To resolve this, the verifier should delinearize the equations by multiplying each one by an attacker unknown value which makes them unable to cancel with odds better than chance. This can be done without hurting efficiency much by substituting it into the scalars in the multiexp.

For an even simpler example: consider the batch verification where the attacker knows  all valid signatures. The attacker can simply shuffle the s values between signatures in the batch. Without delinearization the batch would obviously still pass (as the naive sum doesn't care about the order of s values), yet the signatures would all be invalid.


blockchain.info API is not related to Bitcoin-core, you can send commands to Bitcoin-core without the need to blockchain.info

for example to get full details about non-wallet transaction enable txindex and call getrawtransaction for wallet transactions call gettransaction and so on.

You can find all RPC calls here and you can send RPC commands from PHP, Nodejs etc..

if you want to have the full blockchain synced locally you can use bitpay insight (open source blockchain explorer).

or simply as you suggested you can use blockchain.info API without installing Bitcoin-core.


The countermeasure is built in the system. All non malicious nodes would instantly discard the fake transactions.
I don't understand the problem statement though, like why would any one want to broadcast fake transactions without any motive that it gets mined.


How can I check where my bitcoins have gone to in my app?

That looks like the unimaginatively named "bitcoin wallet"

I would review the transaction details provided by the sender of the Bitcoins. If you have a transaction-id or receiving-address you can look it up on a blockchain explorer to see what is happening.

A few obvious possibilities to bear in mind

insufficient mining fee
incorrect recipient address
problems with wallet configuration

not syncing with bitcoin network
private key not imported?


You should only transfer the .wallet file. This already includes the private key and therefor should NEVER be saved unencrypted in a server you do not control, or in a place which is not safe. You can import the .wallet file on your other computer and do your bitcoin thingies from there. Make sure to not run both wallets at the same time.

In the main folder of Multibit this .wallet file is stored. There is also an Wallet-data folder. In there there are several backups of the wallet, and the private key. You can also export this private key, and import it on the other computer. In that way, the wallet will be generated (and will hold exactly the same amount of BTC after synchronising) and you can also do everything you want. Maybe that is what confused you.


This was created specifically to resolve a problem Bitstamp was having. Though there is absolutely no reason to send XRP to Bitstamp, people were constantly doing that. Bitsamp had to either steal the XRP or refund it. Obviously, they wanted to refund it. But this would drain their hot wallet of XRP.

To resolve this, we're in the process of adding the flag you mentioned, "lsfDisallowXRP". If the flag is set, the client will not let you send XRP to the account that has set it. Bitstamp would then set this flag.

Bitstamp can still put XRP in the account to fund its transactions by simply ignoring the flag. We may also add a way to override the flag in the client, possibly by putting a special marker at the end of the address or possibly with a button.


Setting up the bitcoind to run at startup Ubuntu 17.04

I happen to run across this, and I don't know if you ever got this working.  Try using the correct executable in the bitcoind.service file for the ExecStart line (11 of your gist).  My bitcoind is installed in /usr/bin/bitcoind.

I also commented on your gist above with an example.


Genenerate address offline, but blockchain knows about my address

It only knows anything about the address because you asked about it.

Since the address has never appeared in the blockchain, all it knows is what can be seen from the address: its hash160 value. This is the hexadecimal version of what is encoded in your address, which is a hash of your public key via the algorithm explained here.


Why do two miners get different hashes for the same list of transactions?

The first transaction in a block is called the "generation" or "coinbase" transaction. It has no real inputs, and spends no coins. Instead, it pays out the subsidy and fees to the miner that generated the block.

As any two miners will have a different address they want their payout to, their coinbase transactions will be different. If the coinbase transactions are different, the Merkle trees will be different too.

  Why would we have a different set of transactions if the point is to validate the same set of transactions?

The purpose of mining is not validation - every node in the network validates all transactions. The purpose of mining is ordering transactions, so as to choose one of multiple valid transactions that spend the same coins. However, miners are incentivized to only include valid transactions, because if they didn't, the network wouldn't accept their blocks (and their subsidy).

However, there is no guarantee that even ignoring the coinbase transaction, two miners are going to be working on the exact same set of transactions. In fact, if we had technology to guarantee that, we wouldn't need a blockchain or mining at all.

Specifically, it is possible that someone creates two conflicting transactions A and B, which are both valid, but spend the same coin. Clearly only one of the two can be accepted by the network. I connect to a node in Australia and to one in Brazil, and simultaneously send A to Japan, and B to Brazil. Nodes in Asia will likely see A first, and nodes in the Americas will likely see B first. Because of the finite speed of light, you cannot guarantee that any two nodes will see it at the same time. Someone needs to make a call about whether A or B will be accepted. Bitcoin's solution is to let miners choose - whatever the first miner who creates a block that includes A or B picks, wins.


What is the difference between Exchange & Offer in the Monetary System for NXT / Ardor Platform?

Please refer to the official monetary system documentation https://bitbucket.org/JeanLucPicard/nxt/issues/205/monetary-system-documenation section "Currency Exchange".
The NXT wiki also has an excellent walk-through of the process in https://nxtwiki.org/wiki/Monetary_System#Exchange_an_Exchangeable_Currency


Bitcoin Core 0.15 reindexing blockchain looks like its hanging?

bitcoin-cli getinfo

The getinfo RPC has been removed in the master branch (which is what you are using). Try using a different RPC like getblockchaininfo or getnetworkinfo. The fact that you are getting a response with Method not found indicates that the RPC server is up and running, so the node should be working.

I don't think -daemon and -printtoconsole interact well so you may not actually see the debug lines.


Why is the address 1MAdS7aPszWG4EYgBpbF9mnGUi5ChbMu8d sending me Bitcoins?

This is spam. Point                          .


Just had this problem today. You need to close Electrum, delete the Electrum folder, and start Electrum again. This will "reset" the installation.

The Electrum folder is ~/.electrum on Linux and Mac. On Windows it should be Users\<YourUserName>\AppData\Roaming\Electrum\wallets (it's shown without slashes on the official Electrum website but this should probably be where it is). You might need to show hidden files in order to see it on Windows.

Note that this folder contains your wallets so if you have existing ones, you'll want to back them up first.


What are some other uses for blockchain instead of money?

Colored coins have used the blockchain to record the creation, ownership, and transfer of extrinsic assets other than bitcoin. Here's an excerpt from Mastering Bitcoin

  Colored coins are used to track digital assets as well as physical assets held by third parties and traded through colored coins certificates of ownership. Digital asset colored coins can represent intangible assets such as a stock certificate, license, virtual property (game items), or most any form of licensed intellectual property (trademarks, copyrights, etc.). Tangible asset colored coins can represent certificates of ownership of commodities (gold, silver, oil), land title, automobiles, boats, aircraft, etc.

This chapter mentions other use cases like Proof-of-Existence (Digital Notary), Kickstarter (Lighthouse), and Payment Channels (The Lightning Network). But I guess the later two still involve money.

Source: https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch12.asciidoc