bundler configuration to accept 1 ms currency to 1 account (Ardor) I want to make a token that would be used as "gift card". So, when one person send it back to my account, I want to pay the transaction fees (in order to let people who haven't got ignis claim their gift).
So I need to set a bundler that only bundle, for free, transactions of this token to my account.
In testnet,
this is the token: 8633185858724739856 (the ms currency GIFTZ@IGNIS)
this is my account: ARDOR-JHA7-XH2W-HMF4-CYQ7W
How should I configure the bundler?

With Ardor 2.1.0e you can start a bundler which bundles only transactions with certain currency. Use CurrencyBundler filter with parameter the currency ID.

If you want to additionally filter only transactions sent to your account, you'll have to either write a new filter for that like

public class RecipientBundler implements Bundler.Filter {

    @Override
    public boolean ok(Bundler bundler, ChildTransaction childTransaction) {
        return bundler.getAccountId() == childTransaction.getRecipientId();
    }

    @Override
    public String getName() {
        return "RecipientBundler";
    }

    @Override
    public String getDescription() {
        return "Only bundle the transactions sent to the bundler account";
    }

}

...or alternatively you can create the currency as controllable.

With 2.0.14 you'll have to write a filter like the one from above which checks both conditions - that the transaction is transferring your currency and that the transaction is transferring it to your account.

EDIT:
More details about the bundling in Ardor 2.1 can be found in nxtwiki


what is the point of the maths puzzle? Instead of a maths puzzle, why can't we have miners collect transactions, then just make them wait 10 minutes before accepting the first block broadcasted?

Proof of Work (the proof that "maths puzzle" was solved) serves a variety of purposes.  The primary purpose being to determine the "first" miner whose block should rightfully be accepted as the next block in the chain.  If there was no cost to proposing the next block, there would be far too many candidate blocks and the network would split too often.

With Proof of Work, the network can determine which miner has earned the right to mine the next block by having expended the electricity to produce the hash that meets the difficulty level.


Can funds from a LN channel be recovered if both participants suffer data loss? Is there a way to recover funds if both channel partners suffer loss of the latest channel state? Would both having their static-channel-backups be sufficient to recover the channel?

I don't know exactly how static channel backups are implemented in lnd and what is being saved there but I can give you some general thoughts and at least a partial answer.

If A and B both lost their channel state but still have their master key / mnemonic seed they can probably derive the key that was used in the 2-2 multisig wallet that is used to encode the payment channel.

Generally if two parties agree on how to spend the funding tx of that multisig wallet (e.g. 50/50 or in a different ratio as someone might have a screenshot of the channel state and both parties consent) they can do so.


Http Requests Bitcoin Mining Pool? Is there any pool where I can complete mining work for a mining pool via and http requests? Some sort of API?

I have access to a lot of computational power that I want to route to a mining pool using php..

Something like this:

1) visit url (including login details)

2) response includes mining work/problem

3) visit different url to submit completed work and have tiny payout from pool

One of the key aspects of a mining protocol is that the miners should be informed immediately when a new block is confirmed on the network. Otherwise, they will continue working on the old block which would then be useless work.

This is why there is not a simple GET/POST protocol for mining. The miners keep a connection open to the pool servers, so that there can be immediate two-way communication between them (from the miner for the case of a share completed, or from the server in the case of a new block).


Open source updated blockchain explorer for altcoin Is there updated blockchain explorer available to work with altcoin?

I configured the most popular blockhain explorer: iquidus explorer but the transactions display table are limited on display, can't show or paginate all transactions.

you can use
insite api. You can customize the code for any altcoins. They provide UI and API for explorer services


An online wallet service could "lose" my bitcoins? At bitcoin.org, there's a prominent notice that an online wallet service could "lose your bitcoins."  As I understand it, all bitcoin transactions, and therefore wallet balances, are stored in the block chain, on the peer-to-peer network, so they would not be lost in the event of a service failure.  I suppose that the notice is meant to warn against loss of bitcoin addresses/keys, right?  As long as I back up my keys locally, I can always recover my bitcoins, right?  (Nevermind the case of an untrustworthy wallet service that doesn't protect my keys, or uses them to rob from me.)

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)


Why is the ledger public? To me, banking is not a public thing. I don't want people to know what's in my bank account at what time, or who I sent money to.

I know that I can make a new address for each transaction, as addresses are 'free'. But this isn't the case for say, a coffee shop, which would want only a single address for people to send money to (usually in the form of a QR code printout hanging on the wall). I can effectively track the incoming and outgoing cash flow of a coffee shop by just tracing the blockchain, can't I? If I were a rival shop, this would be very useful to me.

When Bitcoin was invented, Blockchain analysis was not as advanced as it was today and pseudonymous transactions were believed to be closer to anonymous than they are with Bitcoin today. Under the current Bitcoin system, privacy can be greatly improved by avoiding fiat entry/exit ramps connected to your identity and by avoiding reusing BTC addresses.

Yes Bitcoin transactions for the coffee shop you describe can easily be tracked. As you mentioned, stealth addresses can bring privacy improvements but not ideal for every situation. Once Confidential Transactions are added to Bitcoin (https://bitcoinmagazine.com/articles/bitcoin-privacy-confidential-transactions-feature-can-fix-some-of-coinjoin-s-problems-1457703275), privacy will improve but still not meet the level of the top 2 decentralized solutions solutions described below:

Ring signatures exist already with Monero and Ring Confidential Transaction (RingCT) is one of the most promising areas of privacy development: https://eprint.iacr.org/2015/1098.pdf
ZCash is another leading alternative if the market is satisfied with its trusted setup solution and developer mining reward share: https://blog.okturtles.com/2016/03/the-zcash-catch/


What does the RPC call "getmemoryinfo" show? What does the output of the RPC call getmemoryinfo actually mean? For example, this is from my node running in Docker. Does that mean the bitcoind process inside the container is only using 64272 bytes of memory? That's only 64k, that can't be correct, right?
{
  "result": {
    "locked": {
      "used": 64272,
      "free": 1264,
      "total": 65536,
      "locked": 65536,
      "chunks_used": 2002,
      "chunks_free": 2
    }
  },
  "error": null,
  "id": "curltest"
}

These are the processes inside the container.
/ $ ps -a
PID   USER     TIME  COMMAND
    1 bitcoind 12:52 bitcoind -zmqpubrawblock=tcp://0.0.0.0:28332 -zmqpubrawtx=tcp://0.0.0.0:28333
   43 bitcoind  0:00 /bin/sh
   51 bitcoind  0:00 ps -a

It is reporting the memory statistics of the locked memory pool, not all memory used in general.
The locked pool is used to store private keys and other security-sensitive material. Bitcoin Core requests from the OS that the memory used by this locked pool is not swapped out, to prevent it from ending up on a swapfile/swap partition on disk.


Has anyone used CoinSwitch.co? I was looking for options to buy NEO and got to know about CoinSwitch. Has anyone used this exchange?

I used CoinSwitch.co for a couple of altcoin conversions. They provide best rates, as we can compare the rates first then only we can create orders. Their live chat support is also good.


Why were private keys made unrecoverable? Why were lost bitcoin private keys made unrecoverable?

Is there a way to do this and if not shouldn't a way be created since people will lose their money.

By the definition.

Crypto is "unrecoverable money". If you dont like it - just dont use it. Point.


Is there data available on physical goods and services traded in BTC? There seems to be plenty of data on the BTC financial market, exchange rates and the like, as well as on the technical aspects (network hash rate, difficulty etc).

I guess I'm not the only one interested in what amount of BTC is spent on actual goods and services, but all I can find is the occasional number by some specific trading platform, for some specific timeframe, nothing more systematic.

There is no way to know this with a 100% accuracy. Because when you look from outside, a trader moving Bitcoins between exchanges is no different from someone paying for a services/goods with Bitcoins. Both are Bitcoin transactions. The same goes for people moving money internationally, sending their parents Bitcoins, a company paying it's employees etc. You really can't separate these from purchases of actual goods and services. Because like I said, they're all transactions.

However, if you want to measure speculative interest in Bitcoin vs. interest in Bitcoin as a currency(i.e for practical things) then you can look at this graph:

http://blockchain.info/charts/tx-trade-ratio

And the discussion about it:

http://codinginmysleep.com/measuring-bitcoin-speculation/

Both the discussion and the data is quite far from conclusive though.


MMCFE Not Reporting Stats from pushpool/wallet I spent the last two days setting up a Litecoin Mining Pool and from what I can tell, absolutely everything is setup and working correctly. However, after creating a new worker and connecting to it, I have noticed that the stats on the website never update.

I have included my pushpool configuration below, but I am at a loss as to where the issue might be?

[root@test sbin]# vi server.json
{
        # network ports
        "listen" : [
                # binary protocol (default), port 8336
                { "port" : 8336 },

                # HTTP JSON-RPC protocol, port 8337
                { "port" : 8337, "protocol" : "http-json" },

                # HTTP JSON-RPC protocol, port 8339,
                # with trusted proxy appserver.example.com forwarding
                # requests to us
                #{ "port" : 8339, "protocol" : "http-json",
                #  "proxy" : "appserver.example.com" },

                # binary protocol, localhost-only port 8338
                { "host" : "127.0.0.1", "port" : 8338, "protocol" : "binary" }
        ],

        # database settings
        "database" : {
                "engine" : "mysql",

                # 'host' defaults to localhost, if not specified
                "host" : "localhost",

                # 'port' uses proper default port for the DB engine,
                # if not specified
                "port" : 3306,

                "name" : "mmcfe",
                "username" : "user",
                "password" : "pass",

                "stmt.pwdb" :
                  "SELECT password FROM pool_worker WHERE username = ?"
        },

        # cache settings
        #"memcached" : {
        #       "servers" : [
        #               { "host" : "127.0.0.1", "port" : 11211 }
        #       ]
        #},

        "pid" : "/tmp/pushpoold.pid",

        # overrides local hostname detection
        #"forcehost" : "localhost.localdomain",

        "log.requests" : "/tmp/request.log",
        "log.shares" : "/tmp/shares.log",

        # the server assumes longpolling (w/ SIGUSR1 called for each blk)
        "longpoll.disable" : false,

        # length of time to cache username/password credentials, in seconds
        "auth.cred_cache.expire" : 75,

        # RPC settings
        "rpc.url" : "http://127.0.0.1:9332/",
        "rpc.user" : "user",
        "rpc.pass" : "pass",

        # rewrite returned 'target' to difficulty-1?
        "rpc.target.rewrite" : true,

        # allow clients to update the ntime field of their work
        "roll.ntime.disable" : false
}

add after stmt.pwd this line

"stmt.sharelog" :"INSERT INTO shares (rem_host, username, our_result, upstream_result, reason, solution) VALUES (?, ?, ?, ?, ?, ?)"

and it should do the trick ;)

for litecoin you should remove the rewrite  into
"rpc.target.bits" : 18,


Cant click send on Multibit When I try to send coin on multibit, the send button is greyed out and I cant click it.  What gives?  My coins are confirmed.

Like all the Bitcoin clients, MultiBit is like a duck paddling on a lake. On the surface everything is calm but the legs underwater are kicking continuously. There is a lot of activity under the surface talking to the network, updating and saving the wallet etc.

The Send bitcoin button is greyed out when the client is either busy, or waiting for something else to complete. If you hover over the button with your mouse the tooltip normally gives you more information.

The possible reasons are:

1) If you are performing an operation that affects the structure of the wallet, various options (including Send bitcoin) are temporarily disabled. This is: add/ change/ remove password, add receiving addresses, import/ export private keys, reset blockchain.

2) MultiBit transmits the signed transactions on one bitcoind connection and listens on its other bitcoind connections to hear the transaction coming back. (It then knows the transaction is in the Bitcoin network and propagating). For this reason, it waits until it has two bitcoind connections before enabling the Send button. You should see a message on the Send window to this effect if this is happening. If you did something fancy with your network connections, for instance only opened port 8333 to a single node, you might have inadvertently prevented MultiBit from making multiple bitcoind connections and would see this.


Accidentally sent BCH to BTC address... I tried to use the private keys in a BCH wallet to recover, and there's no coins showing I've read many other threads like this and it seems to be the common consensus that to recover BCH sent to a BTC address, just use the private key inside a BCH compatible wallet. Well, I did that, and there are no coins showing, nor the address that I originally sent the BCH to (which has 100+ confirmations already).

Not really sure what to do in this case. The wallet which I originally sent the BCH to was a Bitcoin wallet in the Copay app.

To recover Bitcoin Cash (BCH) from a Bitpay/Copay BTC wallet, please follow the steps below:
1. Within the Bitpay/Copay app, navigate to Settings
2. Select the desired Bitcoin wallet then tap on More Options
3. Tap on the Duplicate ( Bitcoin Cash ) option

Duplicating the BTC wallet will create a BCH wallet in your BitPay or Copay app with the BCH balance.

The option above to duplicate is not available for multi-sig BTC wallets, and you will need to use the recovery tool to recover BCH funds sent to a multi-sig BTC wallet.

Then, please clear your history cache. To do so, please open up your BitPay app and do the following steps:

Settings > Wallet > More Options > Transaction History > Clear cache

And finally, scan for addresses.

Settings > Wallet > More Options > Wallet Addresses > Scan addresses for funds


bitcoind getmininginfo says hashespersec is 0 I started mining yesterday on a low-end system, trying to figure out how it works.
I used the bincoind build from Debian. When I try
bitcoind getmininginfo today, I get the following output.

{
    "blocks" : 208085,
    "currentblocksize" : 0,
    "currentblocktx" : 0,
    "difficulty" : 3368767.14053294,
    "errors" : "",
    "generate" : true,
    "genproclimit" : -1,
    "hashespersec" : 0,
    "pooledtx" : 69,
    "testnet" : false
}

It looks like hashes per sec is 0. Shouldn't that be some positive number?
Am I doing something wrong?

The hashespersec field reports the speed of the built-in miner. It does not (and can't accurately) report the hashing power connected to it via the getwork or getblocktemplate interfaces.


Using blockchain to publish downloadable software verification codes What is the point of comparing sha256 of downloaded file with published on the same website code?

Why can't developers of currencies publish file version and sha256 hash on blockchain as alias or message ?

Why don't other software vendors use blockchain as reliable way to distribute verification codes ?

Software vendors could send sha256 code published on their website for a small fee as a reply transaction to each interested account.

This is one real way to raise wide practical interest in cryptocurrencies and blockchain isn't it ?

How about scanning all downloadable online software and putting all types of hashcodes on blockchain, making it useful not just for coin transfers ?

How about setting up auto-reply account as currency feature where software vendor could put hash code and get some coins for it ?

Okay, I will bite.

No, I don't think it would be useful to publish software hashes in the blockchain.

As you recognize, a hash of a software package is useless unless it is somehow authenticated.  Currently, the most popular way to do this is to make the hash available on a "well-known" website which uses HTTPS, and provides an X.509 certificate signed by a recognized authority.  This provides some level of confidence that the hash is claimed as authentic by the owners of the website, who are hopefully the same people as the authors of the software.

If you want to distribute the hash from any site that can't itself be authenticated, the hash will need to be self-authenticating; it should carry a signature that the user can have some confidence was made by the right people.  One way to do that would be with X.509 certificates again, but packaged explicitly with the hash rather than being provided implicitly by an HTTPS server.

Your proposal to use a NXT alias would have a similar effect, though I think as things stand it would provide rather less confidence.  As problematic as the current certificate authority system is, I think most people today would place more trust in a certificate for "Initech Corporation" signed by Verisign than in the owner of "nxt:initech".

Either way, the point is that if you're not going to distribute the hash from some "well-known" location, it has to have a self-contained signature, and at that point you can distribute it any way you want.  You certainly could put it in the blockchain, but what's the point?  It's of no use without the software package that it's supposed to authenticate.  (And you can't put the software itself in the blockchain, it's too big.)  Why not cut out the middleman and just distribute the signed hash together with the software?  In fact, why not just distribute a single signed file?

In fact, in many ways, distributing the hash in the blockchain is less secure than just putting it on a website.  Even if I just stick it on the plain old HTTP server for initech.com, an attacker still has to either compromise that server or intercept a user's traffic somehow, which is nontrivial to achieve.  If I put it in the blockchain, anyone with BTC 0.0001 to spare can post another hash that looks similar (perhaps signed by "inittech" instead), making it fairly likely that some confused user will pick the wrong one by mistake.


How does the bitcoin network disallow people generating a key pair already generated? Is it possible to generate a key pair that has already been generated? Wouldn't it collide with an existing value?

I assume it is mathematically very unlikely, but odds higher than 0 are still possible.

Yes, it is possible to create an already generated and in use address. The chances of that is indeed larger then 0, but minimalistic. But really small. And if I say really small, I mean extremely small. And if I say extremely small, I mean very extremely ultra low super duper close to zero. It is definitely NOT something to be considered as a weakness, never ever (because it will cost more energy before you have 50% to hit a duplicate address then the whole sun provides in its whole life time then). source


How does Bitcoin prevent replay-attacks? How does Bitcoin prevent replay-attacks for P2PKH transactions?

As far as I understand, when a transaction is made to pay bitcoins to another account, the P2PKH script is used.

scriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
scriptSig: <sig> <pubKey>

Now, even though I may not know what the private key of the person who sends the scriptSig is, I still know how a valid signature from him looks for this very transaction.

So, if I simply copy the transaction with the same data, the check for the signature should still be all valid. So, if someone pays me coins, what prevents me sending the same transaction over and over again, effectively draining all his coins?

A transaction contains a reference to the output that it is spending from. So all you would be doing is just rebroadcasting the same transaction over and over again. Since transactions are identified by the hash of the transaction, the transaction you are rebroadcasting is exactly the same thing as the one already broadcast, and all nodes will treat it as the same transaction, one that they have already seen.


How can I convert my private key from bitaddress.org to WIF without putting the key into a website or a programme? Rule number 1 says: don't put your private key into any website or programme, unless you're performing a transfer. This way you won't be robbed.
Then, I want to "sweep" my money off a paper wallet from bitaddress.org, but Electrum wants me to put the private key in WIF format ( https://bitcoinelectrum.com/sweeping-your-private-keys-into-electrum/ ). How can I convert my key to WIF without breaking the rule number 1?
By the way, what's the name of the format bitaddress.org returns private keys in? It is base58?

bitaddress.org already provides your private key in Wallet Import Format, which is encoded in base58check format.
In the example screenshot below, the base58check-encoded WIF private key is KzNKqwBPaVehsA2F94n9UJ5mrkM9NazBjqBBwsb2U9pAGLdc4md3
To address your "rule 1", the most secure way to handle this data is load Electrum onto an airgapped machine, enter the private key into that secure computer, and then use it to sign a transaction you build with an "online" machine that has access to the UTXO set and your wallet address.

Warning: Do not use the key or address in this example for any reason at all besides looking at it and learning! Pasting private keys on websites is always a terrible idea.


Create Output with a bunch of input I want to spend 1 bitcoin, And I can reach this amount with 3 inputs.

for example:

1 input = 0.5 btc
PB mypubkey_1
PK mypkkey_1

2 input = 0.4 btc
PB mypubkey_2
PK mypkkey_2

3 input = 0.15 btc
PB mypubkey_3
PK mypkkey_3

which private key use to Sign this transaction?

I will use mypkkey_1,mypkkey_2,mypkkey_3 or parent private key or something like that?

which private key use to Sign this transaction?

When you have a transaction with multiple inputs, each input must be signed. The general format for a transaction is:

Transaction

{version} {flag (optional)} {input counter} {inputs} {output counter} {outputs} {witnesses (optional)} {lock time}

version (4 Bytes) - Transaction format version
flag (2 Byte Array) - Optional flag, if present, must be 0001, which indicates there is witness data in this transaction
input counter (Variable Length) - Number of inputs in the transaction represented by a Variable Length Integer.
inputs (based on Input Counter) - List of all transaction inputs which will be spent and which reference unspent transaction outputs from previous transactions.
output counter (Variable Length) - Number of outputs in the transaction represented by a Variable Length Integer.
outputs (based on Output Counter) - List of all transaction outputs where the coins will be sent and which will become unspent transaction outputs to be spent in future transactions.
witnesses (variable) - Optional list of all witnesses only if Flag is present, which are used in transaction validation according to specifications for Segregated Witness.
locktime (4 Bytes) - If non-zero and sequence numbers are < ffffffff: it represents either the block height or timestamp when transaction is final.

Inputs

And the general format for each input is:

{previous tx hash} {previous utxo index} {scriptSig length} {scriptSig} {sequence number}

previous tx hash (32 Bytes) - Hash of the previous transaction. This is used to lookup the transaction in order to validate that this input can be spent.
previous utxo index (4 Bytes) - Previous Unspent Transaction Output (UTXO) index. Since transactions can have multiple outputs, in order to specify which output, you can provide a zero-based index.
scriptSig length (Variable Length) - Length in bytes of the scriptSig.
scriptSig (based on scriptSig length)- The first part of the script that is executed before the scriptPubKey from the UTXO. When they are both executed in order, the result must be true in order to be considered a valid spend.
sequence number (4 Bytes) - Used as a relative lock time if transaction version is >= 2. See BIP68.

You can see that each input requires a scriptSig, which is where the signature is (unless it is a segwit tx, then it is in the witnesses field in the transaction above)


performance of new wallet address I study bitcoin and don't exactly understand that how new wallet generate?
The documentation write below sentence:
"For generate new wallet, first search that there is no such wallet"
How we can found that the new wallet didn't generate before?
What is complexity of search?

I study bitcoin and don't exactly understand that how new wallet
  generate?

I think you mean address, not wallet. A wallet is a software application that manages your addresses, and let's you view/spend the Bitcoin associated with them.

Address
A Bitcoin Address is a shortened form of Bitcoin script that locks the funds associated to it. In order to spend the funds, you must provide the necessary input to the script so that it equates to true when the script is executed by nodes on the Bitcoin network. This usually includes a signature of the transaction by the private key associated to the address. Here's an example of a Pay-to-Public-Key Hash (P2PKH) address:

P2PKH
16JrGhLx5bcBSA34kew9V6Mufa4aXhFe9X

Steps to generate the address:

Generate a random 32 byte private key. For example (do not use this): a966eb6058f8ec9f47074a2faadd3dab42e2c60ed05bc34d39d6c0e1d32b8bdf
Calculate it's corresponding public key using secp256k1 elliptic curve
023cba1f4d12d1ce0bced725373769b2262c6daa97be6a0588cfec8ce1a5f0bd09
Calculate the hash = RIPEMD160(SHA256(public-key)): 3a38d44d6a0c8d0bb84e0232cc632b7e48c72e0e
Encode Base58Check(hash): 16JrGhLx5bcBSA34kew9V6Mufa4aXhFe9X

See How to Generate a Bitcoin Address

  How we can found that the new wallet didn't generate before? What is
  complexity of search?

You want to make sure you don't use a private key that someone else might have. There is no way to search all the addresses that might be known because only addresses that have received coins are on the blockchain. Also, many addresses can be derived from the same key pair using different scripts, so you can't be sure you don't have a duplicate just by checking the address.

Since a private key can be nearly any 32 byte number, there are on the order of 10^70 possibilities. You will never have a collision with another key as long as you choose a sufficiently random source for key generation. This is the most important thing to remember. For example, don't use a Brainwallet or any other low entropy source to generate a private key because it makes it easier for someone to guess.


What pressure prevents alternate currencies from completely diluting bitcoin? Looking into LiteCoin a bit makes me wonder: if LiteCoin were to gain transaction, what's stopping a 3rd, 4th, and 5th currency from gaining traction as well? Wouldn't this effectively eliminate bitcoin's ability of being a "deflationary currency" because other equivalent currencies can be created without end?

The mere fact that nothing else has approached the same popularity as Bitcoin leads me to believe that there is some sort of pressure preventing an explosion of multiple digital currencies.

I know there already are several alternate currencies, so why don't they have the effect of diluting bitcoin as I expect they would?

That pressure is purely market opinion of each currency as it comes into the public view.

F.A. Hayek argues that competition among currencies is beneficial for the economy and a useful means for fighting inflation of currencies. See Choice in Currencies.

Bitcoin by the very definition of its protocol is, in the long term, a deflationary currency. This is a fundamental quality that the introduction and rise of competing currencies - many of which will be modeled after Bitcoin - cannot change. Bitcoin cannot be diluted, because bitcoins cannot be arbitrarily added to circulation on a whim. Those who may have this power are under tremendous public scrutiny and would have a gargantuan task of persuasion ahead of them, should they choose to attempt to sway Bitcoin users' opinion.

Competition among the various alternative cryptocurrencies remains a topic of considerable debate, but the market cap chart to which you linked in your question comment indicates that someone finds value in these alternative currencies based on their merits.


Where can I buy an xbox live subscription with BTC? I'm looking for the best place to buy an xbox live 3 month subscription for the european region...

Microsoft accepts Bitcoin to fund your account. From the following link: https://commerce.microsoft.com/PaymentHub/Help/Right?helppagename=CSV_BitcoinHowTo.htm

  To add money to your Microsoft account with Bitcoin:

  Sign in to Microsoft account - Billing with your Microsoft account
  Select Payment options > Microsoft account > redeem bitcoin
  Select the amount you want to add, then click Next
  Review the amount of Bitcoin needed and use your digital wallet to complete the transaction within 15 minutes:

  On your computer – select Pay with Bitcoin and then pay from your        Bitcoin wallet on the same device.
  On your smartphone – scan the QR      code displayed on the page to    pay from your mobile wallet app.
  If your wallet is on another device, you can copy the receiving address     and BTC amount to the wallet on your device or the Web and
  then make     your purchase.


Does Electrum store my seed in their server? I am new to Bitcoin. I used Electrum software to create my first wallet. When the software generated 12 words, I had written down that in paper. These word are very important, right? But the software can see these words and stores them somewhere in their server. So how do I know that they don't use my wallet because they have my seed? Sorry if it's a dumb question.

Electrum does not store your seed, the server is run by volunteers, and you can run your own if you wish.

You needn't take my word for it: Both Electrum and electrumx are open source, and you can verify the functionality, and build a version from code you have verified.


Is it possible to query a node for all addresses containing value? For instance, can I run a query on a bitcoin node, that returns all addresses with more than 1 bitcoin on them?

Bitcoin-core (the full node implementation that makes up the majority of the network) does not keep an index of all addresses and balances, so without writing additional code to do the job, it is not possible. Bitcoin-core keeps track of coins via the UTXO model-- the idea of 'an address with a balance' is just an abstraction of this that makes for a more user-friendly interface.
Of course, you could write some code to create an index of addresses and their respective balances, or perhaps find an already-existing open-source block explorer project that accomplishes this.


Are all three Bitcoin address types interoperable (legacy, segwit, native segwit)? is it possible to send transactions back and forth between all 3 address types (legacy, segwit, native segwit-bech32)?

Or is one of them not able to send to another?

At a protocol level, they are all compatible. Transactions can spend any of them, and send to any of them.

Wallet software may of course have restrictions, but these are usually not about combinations. E.g. some wallets may be unable to generate a p2sh-segwit address to receive on, or be unable to send to bech32. However, I have not heard about software that puts restrictions on where it can send to based on what is being spent, for example.


How was transaction a4bfa8ab6435ae5f25dae9d89e4eb67dfa94283ca751f393c1ddc5a837bbc31b mined? The OP_HASH256 puzzle transaction described here was mined in block 211997. But I read that only standard transactions (with outputs one of P2PK, P2PKH, bare multisig, P2SH, OP_RETURN) get relayed. So how did this transaction get relayed and mined?

"Relayed" and "mined" are completely separate processes and should not be conflated.

The transaction is valid, so it was perfectly fine to mine it (i.e. include it in a valid block).

"Standard" is a more restrictive requirement, and as you say, this transaction is not standard.  That means that a default version of Bitcoin Core will not relay it, i.e. will not transmit it to other nodes on the Bitcoin peer-to-peer network.  But if the transaction reaches a miner some other way, they are perfectly free to include it in a block.

We can only speculate as to how that occurred in this case, but here are some possibilities:

Some people were running a modified version of the Bitcoin client (or alternative Bitcoin software) that does relay non-standard transactions.
The creator of the transaction sent it directly to a miner, by some means other than the peer-to-peer network.  Some miners or pools have web sites where anyone can submit a transaction.
The transaction was created by the miner herself.


How do you change rpc password? I'm trying to run bitcoind with a changed conf file, but for some reason the password it thinks is incorrect. Is there a way I can change the rpc username and password?

bitcoin-cli stop
Then edit your bitcoin.conf with nano bitcoin.conf
Then edit or add the entry rpcpassword=yourpassword and rpcusername=yourusername
Save it
Restart bitcoind


Lightweight command-line client? I need to be able to generate addresses and receive bitcoins to them, then send them somewhere else - and do it on a server via some command-line interface. Is it possible to do so without downloading the whole blockchain, as bitcoind requires? That is, is there a lightweight client, but for the command line?

Electrum has a text-only version, although I found I had to set it up first time using the gui. Here's my write-up on running it on a Raspberry Pi via SSH though, which sounds like it might do what you need:

http://bitcoinlife.wordpress.com/2013/05/29/running-electrum-on-a-raspberry-pi/


Java code for Bitcoin Mining? I am a student and doing research on Bitcoin. I wanted to know how mining is done but I wanted it see the some basic java code. Can some one provide me with resources? I would appreciate if some one can suggest me some libraries to look into. I checked BitcoinJ but found out that it does not support mining.

Thanks

One of the very fist GPU miners was in java using OpenCL.  It was called DiabloMiner and you can find the source here;-

https://github.com/Diablo-D3/DiabloMiner

It hasn't been updated the the past two years but it is still fully functional.


wallet.dat inserted into .jpg image I was wondering if anyone ever came across a situation where a wallet.dat file was encoded into an image like a .jpg?
I have this wacky idea of taking a wallet.dat file and somehow encoding it into an image. For example, you would like at a painting, but in the lower right corner, there would be a bunch of encoded jibberish out of which one could reconstruct the wallet.dat file?
Did anyone come across something like this before? How would one do this?
I'm wondering how to translate a wallet.dat into some kind of an image.

This is called steganography. Invented in Greece two and a half thousand years ago.
Usually, to make the embedded data inconspicuous the embedded data is distributed throughout the whole image as small variations in hue or luminance etc.
People viewing an image would notice an ugly and obvious rectangular patch in a corner. Especially as wallet data might result in noticeable patterns within that patch when interpreted as image data.


During transaction getting 'Insufficient funds' message from Bitcoin core I am trying to make sendbtc transaction using bitcoin rpc call but getting failed message "Insufficient Funds" from bitcoin core.

In addition, once I am trying to make transaction for small amount like below .5 BTC, that transaction successfully done. But for higher value, bitcoin is sending a message "Insufficient funds".

Please suggest me what can I do to make higher value transaction.

we are using the following command sendfrom "emdad" "19aVGaNfWdZYMgCpMx7tKDXrxeddysddd"

The account system is deprecated because it has behavior which most people find unexpected, leading to a lot of confusion. Despite the fact that getbalance "emdad" returns 10.44 BTC, you do not actually have that much BTC in the wallet, you only have the 0.2692 BTC which getbalance and/or getwalletinfo showed. That is why you cannot spend more than 0.27 BTC, because you do not have that much.

Note, transactions need to pay a fee too, so you can't send the entire wallet balance as a transaction output, you would only be able to send slightly less than the amount given.


unable to route payment to destination: TemporaryChannelFailure Keep getting this error following attempting to pay an invoice.

root@ubuntu-s-1vcpu-2gb-nyc3-01:~# lncli --network=testnet payinvoice lntb50n1pd65u8fpp5y0dwjcn6uhg05sla3djsa7h483nk07m5fs7v3qmnkcn37fq7n68qdqqcqzys98h745eywzuxcfa6c4avku3xzwxvjmfuvp3qe7r0ejnzt50vz3g565h83k56rz0l2v05575aj8x8738g2nnnm0zm26rgtg209ze2l0qp5gkdlc
Description:
Amount (in satoshis): 5
Destination: 0206b792e8b1bc1642c96d6e0a9abfe8d848355a51de27a035402358998ddb4c68
Confirm payment (yes/no): yes
{
    "payment_error": "unable to route payment to destination: TemporaryChannelFailure(update=(*lnwire.ChannelUpdate)(0xc00056b180)({\n Signature: (lnwire.Sig) (len=64 cap=64) {\n  00000000  af 2d cf db 50 97 e4 df  b4 d2 11 65 09 ba 8e fe  |.-..P......e....|\n  00000010  ad 36 33 c9 73 f2 53 01  25 12 2d 93 45 fd 41 27  |.63.s.S.%.-.E.A'|\n  00000020  76 e3 7d a7 ff 96 ae 6a  64 c7 45 cb d5 a6 0e 52  |v.}....jd.E....R|\n  00000030  78 a3 2d 16 5e 73 cd 3b  4e e2 3d 14 a5 68 fc 41  |x.-.^s.;N.=..h.A|\n },\n ChainHash: (chainhash.Hash) (len=32 cap=32) 000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943,\n ShortChannelID: (lnwire.ShortChannelID) 1414303:221:0,\n Timestamp: (uint32) 1537893401,\n Flags: (lnwire.ChanUpdateFlag) 1,\n TimeLockDelta: (uint16) 144,\n HtlcMinimumMsat: (lnwire.MilliSatoshi) 1000 mSAT,\n BaseFee: (uint32) 1000,\n FeeRate: (uint32) 1,\n ExtraOpaqueData: ([]uint8) \u003cnil\u003e\n})\n)",
    "payment_preimage": "",
    "payment_route": null
}

Both nodes are connected to the same node and should be visible to each other, however payinvoice always seems to fail due to routing.

What is causing this issue and how can I complete a payment correctly?

Figured it out!

This error showed up on node C, but I opened (and thus loaded) the channel from node A. What was happening was this error is returned if an intermediate hop does not have enough balance on their side to forward your payment. In this case all the coin was set in a way where payment was only possible from A -> B -> C but not A <- B <- C.

All I had to do was send money from the node that opened the channel


For the Avalon 741, would a suitable PSU be the Leadex II 1200W? It is remarkably difficult to get the suggested EVGA SuperNOVA 1300 W PSU to the UK. I am wondering if this PSU would be likely a reasonable alternative.

That should work, given that you need 96A and the power supply supplies 99A. It's not a lot of headroom, though. (In contrast, the EVGA power supply has 108A.)


Are there any transaction-related artifacts left in the database? Bitcoin writes to some log files (bitcoin/*.log and bitcoin/database/log.nnnnnn )

Are these (and everything else other than wallet.dat) clear of any information that would allow a forensic investigation to determine which addresses a bitcoin installation had sent or received?

Reworded question from:
 - http://bitcointalk.org/index.php?topic=63488.msg743339#msg743339

Some (one?) of the *.log files are connected to your wallet.dat address database, knowing your bitcoin addresses implies knowing your transactions.

One (debug.log) is free format debugging text and may contain all kinds of identifying info.


What is the most efficient and safest way to handle cold&warm Bitcoin storages? Think of a situation where you receive and send bitcoins on a regular basis, like an exchange or a payments processor.

You want to keep as large a portion of your coins as possible on the cold storage without compromising efficiency.
You can't store all your coins in a cold storage because you need to send payments regularly too.
You need enough bitcoins on the warm storage to be able to cover the daily outgoing transfers you send.
Sometimes you receive a lot, sometimes you send a lot.
You need a secure and efficient way to transfer coins between these storages.

How do you do this?

Keeping paper wallets in a safe and opening and importing/swiping them into the warm storage just doesn't work after a while.

I would personally use a linux/bsd computer, without a desktop-environment. This means, you'd command a bitcoin command-line client without having a graphical interface. Probably something like FreeBSD or Ubuntu. This computer can still be online and used for everyday transactions, but it's much less prone to keylogger attacks and any other sort of attacks since you're not using a Web-browser or Email client or any other malicious type of software that could harm your computer - you just have the command-line.

In my opinion having a minimal setup, with no software installed whatsoever except your bitcoin command-line client, is the best way to go for this type of scenario where you need to send regular payments.

So if you need to do regular transactions daily, using something like this is better than a cold storage in my opinion. You could backup your keys in paper wallets sure, but you'd need something online for everyday transactions. And command-line freebsd system would be your most secure option. Unfortunately if the constant swiping/importing doesn't work for you, this is the next best thing imho.


How are off-chain transactions handled by bitcoind? I'm trying to figure out how transactions are actually handled by bitcoind.

I'm looking at the full list of RPC methods and there are missing documentation for some most interesting methods.

move

I know there are two methods of moving bitcoins between addresses either via direct p2p transaction or via the so-called off-chain transaction. If I believe correctly, the built-in wallet of bitcoind allows us to send off-chain transactions via the move method. Sadly, it's not very well documented, but I want to know exactly how it works.

Here's the documentation for it:

move <fromaccount> <toaccount> <amount> [minconf=1] [comment]

Move from one account in your wallet to another

So, if account A has one BTC and account B has zero. What will happen if I first move one BTC from A to B using off-chain transaction and then issue a direct transaction of 1 BTC from B to C?
Also, what minconf parameter is for? As far as I understand, off-chain transactions doesn't require confirmations.

sendfrom

Here's the documentation for the sendfrom method:

sendfrom <fromaccount> <tobitcoinaddress> <amount> [minconf=1] [comment] [comment-to]

<amount> is a real and is rounded to 8 decimal places. Will send the given amount to the given address, ensuring the account has a valid balance using [minconf] confirmations. Returns the transaction ID if successful (not in JSON object).

It requires an account to send bitcoins from.

What if I have multiple addresses/transactions for the specified account? What strategy bitcoind uses to determine from which addresses to make a transaction and how much bitcoins to use from each?
What minconf parameter is for?

sendtoaddress

sendtoaddress <bitcoinaddress> <amount> [comment] [comment-to]

<amount> is a real and is rounded to 8 decimal places. Returns the transaction ID <txid> if successful.

The account is not specified for this call. What account bitcoind will use? The default one?
Why there is no minconf parameter for this one?

First of all, there are many types of off-chain transactions. Any movement of value in BTC that does not directly correspond to a blockchain transaction can be classified as one. This includes:

giving someone a computer/phone that has a wallet witg BTC on it
giving someone a private key/physical bitcoin.
giving someone access to a shared webwallet account
sending money from one account to another within the same service (which simply decrements one person's balance and increments another's balance)
payment channels, including Lightning, which negotiate a small number of transactions that correspond to the net effect of many more value transfers.

The move command in bitcoind does not result in an off-chain transaction; it simply increments one internal counter and decrements another. It is off-chain for sure, but it's hard to call it a transaction. All you've done is changed how you're counting the money you already have control over.

A service (like #4 above) could potentially use bitcoind's move command to implement a (simple) off-chain transaction system. But it at least requires having a setup where multiple people have accounts on your system, and them treating you as a custodial for their money.

As for the questions you're asking:

Accounts are a completely independent concept from addresses. From bitcoind's perspective, there is no such thing as an address balance. There is the wallet balance (how many coins the wallet has control over in total), and account balances (which are simply internal bean counters, with no relation to anything on the blockchain). When a new transaction sends M money to address A, and address A is associated with account C, the wallet balance goes up M, and the account balance for C goes up. When you send money with sendfrom, the named account is debited. But the actual on-chain transaction created always uses any coins the wallet has control over. Again: there is no relation between on-chain coins (transaction outputs) and account balances.
The move command used to do a balance check on the to-be-debited account, and fail if it did not have enough counting only transactions with at least minconf confirmations. This functionality was removed a long time ago, and the minconf parameter is ignored now.
Bitcoind treats the whole wallet as owning the coins, and it will use any coins available for any transaction it creates. There is no relation between coins and accounts. sendfrom simply allows you to specify which account balance to decrease.
sendfrom does a balance check on the debited account, and will fail if it would make the account balance negative, counting only crediting transactions with at least minconf confirmations. This feature is not very reliable, as fees can make the account go negative despite the balance check before.
sendtoaddress always debits the "" account, and does not do a balance check on it, so the "" account balance can go negative (as long as the wallet balance - the sum of the account balances - is positive). Again: it does in no way restrict which coins are used to construct the transaction.
Because sendtoaddress does not do a balance check, there is no way in which a minconf parameter would have an effect. Normally, all coins with 1 confirmation (if they come from other wallets) or 0 confirmation (if they come from yourself) are spendable, though for example the spendzeroconfchange setting modifies this).

As already pointed out, the account balance system and the move command are deprecated because they are very hard to understand and use correctly. If you need accounting, implement it yourself on top.


Poloniex BTC withdrawal sent with 0 transaction fee, anything I can do? I withdrew 3.6 BTC from Poloniex today, but they made the withdrawal transaction without any transaction fee, basically now God knows when it will get to me (basically total loss in day-trading, will NEVER EVER use them again).

Is there anything I can do about this? What happens if it goes to limbo and never gets confirmed?

Transaction ID

The standard transaction fee rules allow for a transaction with no fee to be confirmed if it has high enough priority.  This depends on how old the transaction's inputs are; basically, how long since Poloniex received or last transferred those coins.

If it doesn't have high priority, it could still be confirmed, but it depends on the goodwill of the miners.  (In principle you could try to convince, or pay, a miner to include it in a block, but I don't know who you might talk to.)

As Tim S. points out in his comment, the priority continues to increase even after the transaction is sent.  You can work out from the formula in the above link how long it might take to reach a high priority level.

If it doesn't confirm in a reasonable amount of time, you should go back to Poloniex and ask them to resend it with a fee.  They can do this in a way that invalidates the original transaction (essentially a benevolent double-spend) so there would be no risk to them of paying twice.  Until you have a confirmed transaction sending you the coins you are owed, Poloniex hasn't fulfilled its obligation to you.


Extended Public Key 's mechanism misinterpreting in 'Mastering Bitcoin' by Andreas I am a newbie and start exploring from the 'Mastering Bitcoin' book. The figure below to me is a little inaccurate, I think the arrow from HMAC-SHA256 should point right to the child public key. Am I right??

I think the arrow from HMAC-SHA256 should point right to the child
  public key. Am I right??

No, there are 3 derivation functions defined in BIP32 - Hierarchical Deterministic Wallets

  Private parent key → private child key
  Public parent key → public child key
  Private parent key → public child key

The diagram above illustrates

1. Private parent key → private child key

Perhaps you're confusing this for 2. Public parent key → public child key. Another potential confusion is that this is not for a hardened child key but a normal child key, which uses the parent public key point(kpar), combined with the parent chain code cpar and the index i. These are combined and hashed to I as follows:

I = HMAC-SHA512(Key = cpar, Data = serP(point(kpar)) || ser32(i))

I is split as shown in the diagram, where the left 256 bits IL are combined with the parent private key kpar to produce the child private key ki:

ki = parse256(IL) + kpar (mod n)

IR is the new child's chain code at that index i, and the child public key is then calculated like normal using elliptic curve secp256k1 from the child private key itself.


Buying a hashrate makes any sense? I want to start mining through one a cloud service and seems that hashflare.io is a good one. So when I go to the "Pricing" section of the website is say's that I can pay USD $1.20 per 10 GH/s.

How does that make any sense? I'll pay to have a rate, which is measured in seconds. But for how long am I going to keep that rate?

It says it is a Lifetime contract, does that mean I'll pay $1.20 and keep earning bitcoins forever? Seems a bit too generous to me.

It says it is a Lifetime contract, does that mean I'll pay $1.20 and keep earning bitcoins forever? Seems a bit too generous to me.

It is too generous. Read the fine print.

  Lifetime contract*
  * as far as mining remains profitable
  Maintenance fee: 0.01 $ / 1 MH/s / 24h

i.e. you pay a fee for the electricity and colocation, and if that fee exceeds the revenue of mining, the contract is over.


Did Satoshi ever acknowledge that his name was a pseudonym? I am curious if Satoshi publicly acknowledged that he was concealing his real name, or if he actually claimed that was his real name.

Like the title says, did Satoshi ever publicly acknowledge that his name was a pseudonym?

This post is the closest to an acknowledgement that is was a pseudonym as can be found:

"I am not Dorian Nakamoto."

http://p2pfoundation.ning.com/xn/detail/2003008:Comment:52186

http://www.forbes.com/sites/kashmirhill/2014/03/06/bitcoin-creator-returns-to-internet-to-say-i-am-not-dorian-nakamoto/#613499a67f43

The above quote was made in response to the Newsweek story falsely outing him as Dorian Nakamoto (birth name Satoshi Nakamota).

http://mag.newsweek.com/2014/03/14/bitcoin-satoshi-nakamoto.html


How does bitcoin impact the real economy? I have a question in my head since a while.
What if Elon Musk sells all his companies (spacex, Tesla, ...) and puts all the money in bitcoin and then loses the keys. What is going to happen to the real economy?

I think bitcoin is like a knife, it can be used for both cooking and killing. If you say I use it for cooking, it does not mean that others do not use it to kill.
Terrorist groups, spy agencies and even criminal groups are all abusing Bitcoin.


Bitcoin API with mixing service I'm looking for an API that can hide where my received money goes, for privacy reasons. I don't want my customers to be able to see how much money I've received.

Blockchain used to have a mixing service with their receiving API, so that no one could see where the bitcoin was forwarded to, but they discontinued it. Are there any API's out there that have a mixing feature like this? If not, what can I do to ensure privacy?

Thank you.

Check out Bitmixer.io, it even has an API.

You could do that, but personally, I think it's a much better idea to generate a new wallet per customer transaction. That way, all your coins aren't grouped together, so the customers won't know how much you make. Just how much they paid. Personally, my app creates addresses through the Coinbase API, all of which are held in a specific account named after my app.


How do i get my Bitcoin Cash from Mycelium wallet? I kept my BTC in a mycelium wallet and am looking for a way to get BCH out of it. I need instructions on how it's possible, please.

I just finished following the instructions at this link
https://steemit.com/btc/@libert/step-by-step-guide-on-claiming-bitcoincash-from-mycellium-wallet-201783t112141477z
and it worked quite easily. Much easier than the previous comment.

On a side note Coinomi has very clear instructions that did not work for me on how to sweep your mycelium wallet into your coinomi wallet by obtaining the private keys from your mycelium addresses butt only the first private key had a tiny bit of funds in it I checked through over 1000 more private keys and could not find any other funds so that's when I went back to Google searching and searching and found the link above.

I think how it works when you're sweeping the funds I think you're actually moving them. As opposed to when you restore your mycelium wallet with the coinomi app using the 12 words You're simply gaining access to funds without actually moving them.


Where to place Bitcoin bootstrap.dat I'm sure this has been asked many times before, but I've recently gotten into the whole cryptocurrency thing starting with Dogecoin, and I now want to use Bitcoin as well. I am on Windows 7. I found out the hard way that downloading the blockchain through bitcoin-qt takes forever, so I went to https://bitcoin.org/bin/blockchain/ and downloaded the torrent rather than waiting ages. I now have bootstrap.dat ready, but I don't know where to put it. I have two storage drives - a 120GB SSD and a 1TB hard drive. Because of the SSDs small size and the amount of small writes that bitcoin will do I opted to store the client and blockchain on my HDD. According to https://en.bitcoin.it/wiki/Data_directory I need to place the file at %appdata%\Bitcoin. Since appdata is located on the C drive, there is no bitcoin directory there. The rest of that article is for other operating systems.

Where should I place the bootstrap.dat file?

From what you said, I'm assuming you're using an option like this when you run Bitcoin Core (bitcoin-qt):

-datadir=D:\BitCoinData

(if not, you should do something like that to specify that the blockchain will be on your 1TB HDD; otherwise, it's only the small client, and not the large and oft-updated blockchain, that resides on your HDD)

In this example, you would move bootstrap.dat to D:\BitCoinData\bootstrap.dat. Move the file there while Bitcoin Core is turned off. Next time you start Bitcoin Core, it will verify and use this file to build its databases before synchronizing the remainder over the network.


What precautions should i do to avoid being scammed for Bitcoins? I am a modest follower of Bitcoins and other Altcoins though recently i was scammed by few fake and fraudulent online buyers in a few days time when trading for Bitcoins.I never been scammed for any other currency ever so far over the internet and i am a very active online user but didn't have good experience with Bitcoins.All suggestions will be highly appreciated about how to escape from BTC scams Online as BTC is the X-Generation currency and i love it too.

Always be alert and take the IP address and other social media details of the buyers before making any trade or exchange.Use middleman services and also trade with trusted buyers on regular basis.Never go first with new buyers.Many more.


What is the algorithm for generating a Ripple address from a ecdsa public key? I know it is some combination of sha256 and ripemd160 that is used on the public key component to obtain the Ripple wallet address, but what is the specific algorithm?

The process of going from a Ripple secret to a specific ECDSA private/public key (which you didn't ask about but I included it here anyway) is documented on the Account Family wiki page.

From a ECDSA public key, {X,Y}, you do ripemd160(sha256(CompressPoint(X,Y)).
That's then encoded in base58 (using the Ripple alphabet/dictionary).

You can also look at the rippled implementation or a Go implementation.


Where in Bitcoin Core does it do X? Note that this is a general question and answer designed to serve as a guide for finding things in Bitcoin Core.

Where in Bitcoin Core's source code does it do X? How can I find that code by myself?

Example questions:

Where does Bitcoin Core determine if a transaction is valid?
Where is the Proof of Work checked?
Where is the code for transaction creation?

Introduction

The key to finding out where a piece of code is without already knowing where it is is to start at the thing that will eventually lead to what you want to find. These can be logically thought through. For example, for relay and validation, these all occur after a node has received a block or transaction, so begin at the point where a block or transaction is received.

There are generally three kinds of actions that Bitcoin Core does: validation and relay of blocks and transactions, the wallet, and startup

Validation and relay

In order for Bitcoin Core to be able to validate and relay a block or transaction, it has to first receive it. So logically the place to begin looking is at the point where a block or transaction has been received and it is beginning to be processed. That is in ProcessMessages function in src/net_processing.cpp. Within this function, there are several if statements for each type of network message that can be received.

For transactions, you want to look at the if block for NetMsgType::TX. By reading through the code in this if block and following the functions that are called, you will eventually reach where a transaction is verified, added to the mempool, and relayed. The most important function within this block is AcceptToMemoryPool and that is where all of the validation for an unconfirmed transaction is done.

For blocks, you want to look at the if block for NetMsgType::BLOCK. Reading through this code will lead you to ProcessNewBlock and later ActivateBestChain and ConnectTip which are the functions that contain the validation of blocks.

The wallet

Almost all of the wallet's functionality is centered around the creation and receiving of transactions. These logically begin when the user wants to send Bitcoin. So a good starting place is the sendtoaddress RPC. Following this function will take you to CreateTransaction and later SelectCoins which are responsible for transaction creation and coin selection.

Some other things that are interesting in the wallet would include wallet creation and loading which occurs in CreateWalletFromFile and wallet encryption and unlocking which have good starting points of the encryptwallet RPC and walletpassphrase RPC

Startup and initialization

Lastly some interesting occur during startup such as DNS seeding, connecting to nodes, loading the blockchain from disk, etc. The obvious and actual starting point is the main function. The main function is the entry point for pretty much every C/C++ program so it's a good place to look at for startup. Following the main function will bring you to AppInitMain which is where the bulk of loading and initialization occurs.


Is there developer documentation for the Bitcoin Core source code? Is there a documentation somewhere to understand the C++ code of Bitcoin Core (available on Github) "from a to z" and being able to recreate it ?

To understand Bitcoin Core, the best resource is probably the source code itself:

https://github.com/bitcoin/bitcoin

To help understand what is going on in the code, try the developer documentation and the Princeton Bitcoin Book.  Keep in mind that the code gets updated faster than the documentation, so the code should be your source of truth.

Some interesting places to start:

https://github.com/bitcoin/bitcoin/blob/master/src/script/interpreter.cpp - this is the source file that contains the code for interpretting script, and therefore checks for transaction validity

https://en.bitcoin.it/wiki/Protocol_documentation - the docs for the network protocol, such as message definitions and data structures

https://bitcoin.org/en/developer-reference#transactions - transaction reference describing the content and construction of transactions

For any clarifications and questions, I highly recommend this very StackExchange site :)


What are the advantages to become a bitcoin node? As far as I understand, the nodes are responsible for verifying the transactions and the blockchain, but also to relay transaction over the bitcoin network.

Being a bitcoin node require a certain infrastructure and thus it costs money.

Who wants to create a new bitcoin node and what are the benefits?

There benefit is that you operate a full node in the Bitcoin network. Yes, this is your premise but it's also the consequence of it. You merely seem to not understand what operating a full node means.

If you don't operate a full node, you put trust in others. How much trust you put in others depends on the specifics.

For example, a person who uses a web wallet puts full trust in the operator of that web service. The operators are not only in control of what blockchain is regarded as the effective one but are also in full charge of the user's funds as they hold their private key.

As another example, if you use an SPV client, you don't put as much trust into other. You don't give the privilege of spending (or not spending as you please) your money to a different entity. However, you can be fooled by someone who puts a lot of work into it. That this is going to happen is very unlikely, but it is possible.

Only if you operate a full node, you don't have to trust other entities. You are in full charge of your money. You cannot be fooled by someone sending you an invalid blockchain because you verify everything. You cannot be told that a transaction to you has been confirmed even though it hasn't because you yourself are the authority you get your information about which transactions have and which have not been confirmed.


Restoring private key from old bitcoin wallet I have old bitcoin wallet with some (not very huge) amount (last transaction was on 2014). It was created in Multibit (Classic, I guess, then I had old computer with old OS). Now I have new device, system and wallet, and want to restore old [wallet] to send bitcoin to the new one. I know, I need a private key, so I imported old wallet (it's watch-only wallet right now) in Bitcoin Core with rescan and next try to do like this guy -> https://www.youtube.com/watch?v=8Ev33XGCH8M, however, after putting "dumpprivkey"-command in console, it says "the private key for this address is not known".
That's what I don't understand (interesting, though), b'cause I remember I've backuped it and hold those files for all those years on my USB stick, but now they're completely unusefull. :(
How can I resolve this problem? Anyone knows?

If you "imported" something from your old Multibit Wallet and ended up with a "watch-only wallet" it means that what you "imported" was a Bitcoin-address and not a private-key. You must find and import the private-key, not the Bitcoin-address if you want your new wallet to be able spend the money.
If your old Multibit Classic software is still working, you should be able to use it to create a transaction that sends money to a receive-address you create in a new wallet (using some different wallet-software such as Bitcoin-core).
I think a lesson for the rest of us is not to trust our money solely to proprietary backup formats. Always have a backup of either the master private key in Wallet Import Format (WIF) or the seed-phrase/recovery-phrase/backup-phrase in BIP-39 format or in some equally well-defined and well-known public format

Related questions with answers that may be useful:

Restore old multibit wallet
Recovering wallet from MultibitHD backup file
How do I get BTC out of my Multibit wallet?
My Multibit wallet is empty
I used multibit years ago - now what? (BTC, BTG, BCC etc...)
Import Multibit multibit.key into Electrum
Other questions about Multibit wallets


BOLT 11 - Why is the description field limited to 639 bytes? Why is the description field in a Lightning Network invoice limited to 639 bytes?

https://github.com/lightningnetwork/lightning-rfc/blob/master/11-payment-encoding.md#tagged-fields

https://github.com/lightningnetwork/lnd/blob/95502da7e87d7f1ae96e9d69fcdb2f1b038d6497/channeldb/invoices.go#L85 (LND limits it to 1024)

I would like to send data over the lightning network using the description field for the anonymizing aspects of onion routing in conjunction with the economic incentive for honest nodes.

Why is the description field limited to 639 bytes?

Every field in lightning invoice is of the form:

type (5 bits)
data_length (10 bits, big-endian)
data (data_length x 5 bits)

The data_length indicates the size of the data that is to be followed. Since data_length itself has a size of 10 bits, it can represent a number up to 1023 (210 -1). Thus the size of data can be at most 1023*5 bits or 639.375 bytes. This puts the upper limit of 639 bytes on the description field.


Is mining necessary for the transaction If someone doesn't want to mine, this means that they don't create coinbase transactions. Coinbase transactions are necessary for every transaction.

Can one spend their bitcoin without having to mine?

Mining is necessary to create bitcoins, which happens with a coinbase transaction.  But they can be transferred from person to person after that without mining.  (Mining is still used to confirm those transactions, to ensure they cannot be reversed later; but the people making the transactions aren't responsible for that part of it.)

Think about the following analogy.  Regular money is created with a printing press.  But you yourself don't need a printing press in order to make transactions; somebody gives you money, and you give it to someone else.  Sure, at some time in the past, someone had to print that money, but that isn't your concern.


How many unconfirmed childs can I have? I don't seem to be able to ask the right question in the title, the way I asked the question is not correct.
What I really want to know is this:

I can spend an unconfirmed output, then I can spend the output that spends that unconfirmed output, and I can spend that output, too, and so on...

My question is: how many times can I do it?

Edit: I just tried it in the testnet, I got this message: 64: too-long-mempool-chain. Is this 64 an universal number?
Edit 2: It turns out 64 is the error code. The actual number is 25.

There is no limit in the consensus rules about that. However nodes have a local policy rule about this. In Bitcoin Core, the limit is 25 unconfirmed transactions. This limit is user configurable.


Bitcore Insight API: I am not able to create and broadcast transaction I have tried to create transaction and broadcast transaction but I am not able to do this stuff.

Let me share with you code.

var transaction = new bitcore.Transaction()
    .from({"address":"msxGdsTJJYu7YrmkV4sbHNK8Z21pHFZ2gX","txid":"0c0d9ad92f07e774a76194823a92bf2521aa57381ad4782becf20fdf385e1922","vout":0,"scriptPubKey":"76a914886b382436985b195d1dfcdb00c722c1f2fcd0ea88ac","amount":0.01})
    .to('mjsVogqLetdUjT9raJY6WgYmy3tifJ3DJz', 20000)    .sign('0497427ad1b6177fe950758f10151ba38a6b38d44577ba45fb06423143bb55a2')
    .change('mhCpGNNHQmu4P9pUZcCmgXkxbYxys5pKBw');

var txSerialized = transaction.serialize(true);
console.log(txSerialized);
var Insight = require('bitcore-explorers');
var client = new Insight.Insight();
client.broadcast(txSerialized, function(err, txId) { console.log('Id:', txId, err);})

Getting below output:

010000000122195e38df0ff2ec2b78d41a3857aa2125bf923a829461a774e7072fd99a0d0c0000000000ffffffff02204e0000000000001976a9142fc320597ba67a66167721bc9c36d987e03c225b88ac806d0d00000000001976a91412820fdb8340e5198b3c31de5688faa7927b0d7188ac00000000
Id: undefined Missing inputs. Code:-25

I have tried many things but I am not able to solve it.

Can you please give me the solution or proper demo for it with a full description?

Your transaction is not signed. You need to call .sign last since changing the transaction after signing will invalidate the signatures and thus bitcore will remove them. You should instead be doing:

var transaction = new bitcore.Transaction()
.from({"address":"msxGdsTJJYu7YrmkV4sbHNK8Z21pHFZ2gX","txid":"0c0d9ad92f07e774a76194823a92bf2521aa57381ad4782becf20fdf385e1922","vout":0,"scriptPubKey":"76a914886b382436985b195d1dfcdb00c722c1f2fcd0ea88ac","amount":0.01})
.to('mjsVogqLetdUjT9raJY6WgYmy3tifJ3DJz', 20000)
.change('mhCpGNNHQmu4P9pUZcCmgXkxbYxys5pKBw');
.sign('0497427ad1b6177fe950758f10151ba38a6b38d44577ba45fb06423143bb55a2')


What are the options available to convert Bitcoin to Paypal USD? I have, recently, started earning some Bitcoins from CoinURL.com. I want to know all the options available for converting these earned Bitcoins to Paypal USD.

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

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

Specifically for cash-out to PayPal, options include:

http://snapswap.us/#/paypal (You'ld need to do BTC -> XRP first though. http://Shapeshift.io lets you do that.)
http://www.VirWoX.com  (BTC --> SLL, SLL --> USD)

Other ones that are not as widely known -- proceed at your own risk:

http://www.btctopp.com
http://www.exchangemycoins.com/pages/sell-bitcoin-paypal
http://order.payexchanger.com/index.php?a=add (You Give="Bitcoin", You Want="PayPal")
http://24pay.me

What might exist is a service that lets you pay for charges with Bitcoin and then the recipient gets to withdraw the proceeds of the sale using PayPal. So you would simply need to sell to yourself.

For example, I see that Fiverr accepts BItcoin for payment: http://blog.fiverr.com/fiverr-now-accepting-bitcoins and I believe they offer withdrawal via PayPal http://www.youtube.com/watch?v=px_eYHCgGZ4. So you simply would create two accounts, list a task, and transact with yourself. Obviously the account for buying (and paying with Bitcoin) would need to be something that you wouldn't want associated with your real identity. Additionally, you probably want to do the listing with one IP address and the buying on another just in case they check for that kind of stuff.

Maybe when PayPal is a cash-out method for Amazon (coming, apparently http://recode.net/2015/04/09/paypals-big-change-it-can-work-with-amazon-after-ebay-split/ ) then maybe you can sell to yourself (buy Amazon gift cards to pay, then cash out to PayPal from the proceeds of the sale to yourself.)

BitLanders is another service that lets you trade with yourself, paying with Bitcoin and withdrawing in PayPal. Also, apparently if your sales aren't enough to cover your withdrawal amount you can make up the difference with Bitcoin.


Could the price drop between July and September 2011 have been caused by a bot? In July 2011, 1 BTC was trading at above $10 USD. By September, the price of 1 BTC had fallen over 50%, and at the time of writing (October 2011) 1 BTC is trading around $2.50 - $3.00 USD.

In a forum thread one of the pool operators for bitcoinpool claims this is due to some bot forcing the prices down:

  Fairuser detected a buy/sell bot on the better portion of exchanges
  (currently, only Bitmarket (EUR) seems unaffected) that is
  consistently keeping the value of BTC low while it's generating tens
  of thousands of dollars worth of transactions across the exchanges at
  a profit of 2 - 40 cents per transaction. We're still unsure if it's
  intentionally dropping the price, or if it's just a side-effect of the
  way the bot is designed.

  Either way, the bot is entirely responsible for the price drop from
  $10 USD to $5 USD.

Is there any evidence of such a phenomenon, and if so, what could be done to stop it?

Since the bot exists, and the people who wrote it presumably wish it to perform every transaction it performs, it reflects real supply and real demand. Why would you want to stop it? There is nothing inherently good about a high price.

Personally, I think the drop in value was due to the bursting of a speculative bubble. The price was previously kept high due to press attention that made people think Bitcoins might be a good investment. As soon as everyone who was going to be brought in by the hype was brought in, the demand started to drop. This caused a small price slide, which induced a lot of panic selling from people who thought the speculative rise would continue forever. Once the price starts dropping at the end of such a bubble, more and more people try to sell out to minimize their losses. Once everyone who expected a short-term profit sells out, the price stabilizes.

We're now back at that relatively stable floor, waiting for the next hype cycle to start another speculative bubble. Until Bitcoin's price is driven by its use as a real medium of exchange, this pattern is likely to repeat over and over.


Blockchain.info Payment API -> Callback gets a 302? I want to integrate the Blockchain.info Payment API and everything works fine so far. The callback works and triggers the code on my server, if a payment comes in. But if I check the callback log of Blockchain.info, it says, it retrieved the status code 302 back from my server when calling the callback url. If I check the callback url in the browser or with curl, I just get a status code 200.

Is that some known problem? Or does anybody know whats the issue is here? Or is everything fine and the blockchain.info service can read the ok from my server? Otherwise my callback will be banned if I read the docs correctly...

normally it has to be 200, the 302 mean that the requested resource resides temporarily under a different URI.

Dont block "GET" requests on your code because blockchain use GET method to send your notifications about the transactions.

Use your full domain name including the leading www example :

http://www.example.com/callback....

In case of https ! make sure you include it in the callback URL.


Running into ELIFECYCLE error while trying to install filebazaar Trying to install filebazaar on Ubuntu 18.04 and getting an error on the canvas module... anyone familiar with this issue? I've been all over node-canvas's github issues (such as this one where I left a comment), but none of the solutions are working for me so far.

Here's the command I'm running:

$ sudo npm install -g filebazaar

And here's the error output:

$ sudo npm install -g canvas@1.6.13

> canvas@1.6.13 install /usr/local/lib/node_modules/canvas
> node-gyp rebuild

gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/canvas/build'
gyp ERR! System Linux 4.15.0-55-generic
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/canvas
gyp ERR! node -v v12.5.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! canvas@1.6.13 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the canvas@1.6.13 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/chris/.npm/_logs/2019-09-17T20_39_13_514Z-debug.log

Any assistance is appreciated :)

Maybe the directory doesnt have the proper rights, try this command sudo chmod 777

If it still  doesnt work try these flag before your install sudo npm install -g --unsafe-perm

or sudo node-gyp rebuild -g --unsafe-perm

then try again


How can a reciever verify that transaction data was not altered by 3rd party? My scenario:

My web server:
- Generates private and public, and a wallet address from the public key for a user website account
- Server can not connect to the outside (Can not connect to the Bitcoin network)
- Has a page that allows anyone to send money to the user account wallet address

What I need to do:
- The server needs to know when bitcoins were sent to the wallet address, and how many total bitcoins are at the wallet address

Because web server can not access outside internet, I am using Javascript on the browser side to get the wallet address info by getting https://api.blockcypher.com/v1/btc/test3/addrs/miedePxMt4SDQHjWJyfhbCWvXcm33vzDa1/full and/or https://api.blockcypher.com/v1/btc/test3/txs/681b16b4de3676a5865a85e0bba3097afcc195d928f3167e4d5591c388c1e474?includeHex=true  ... and sending that data to my webserver using a Ajax call to check for the received bitcoins.

Note: I have sent testnet bitcoins to that wallet.

Everything works except 1 problem: The browser user can easily change the bitcoin amounts and trick the web server into thinking more bitcoin were sent.

My question is: What methods can I use on the webserver to verify that the transaction data was not changed by the browser user. The web server has the pub/priv key of the receiving wallet. The webserver has the "bx" libbitcoin-explorer program available and I could potentially install other software.

Can I use the cammands in this diagram at all? https://github.com/libbitcoin/libbitcoin-explorer/wiki/Transaction-Commands

All sensitive operations must be performed on your side. You cannot perform them on the client side and trust the client to pass you the correct information. If you need to call some API to get wallet information, your server needs to make that call.


Block validation files? Which part of the code is responsible for validating blocks? I'm working on a BIP to modify the structure of block.h, and I think that would definitely affect the validation process. Can anyone point me in the right direction for the files I would need to change to update the validation process?

Conveniently, the file is called validation.cpp.  You probably want to look at the function CheckBlock.


How does TXID gets created and at which point I see TxID in bitcoin transaction input as reference of the UTXO. How does TXID gets created and at which point, wallet or node?

The TXID, the transaction ID, is a hash of the serialized (non-witness) transaction whose UTXO is being spent. It gets created at the same time as the transaction does


Is it possible to use servers to mine bitcoins? I have a vps, it's debian but i can install any os, i don't use it a lot, can i use it to mine bitcoins? Correct me if I'm wrong, bitcoins uses video cards, and as far as i know, vps and dedicated servers don't have video cards.

So therefore I'm asking, is it possible to use servers to mine bitcoins

It is possible, but not profitable.  Even if you consider the server as already paid for you will not generate nearly enough of a hashrate to earn more than a few cents a month.


Order list or trades history Btce via api Im trying to get my orders list or trades list via Btc-e Api but it always return 0 is bugged or what ?

 if (accountKey != null && accountSecret != null)
            {
                btcApi = new BtceApi(accountKey, accountSecret);
                info = btcApi.GetInfo();
                int ceva=info.TransactionCount;
                var transHistory = btcApi.GetTransHistory();
                var tradeHistory = btcApi.GetTradeHistory(count: 20);
                var orderList = btcApi.GetOrderList(count: 20);
                var tList = BtceApiV3.GetTrades(new BtcePair[]{BtcePair.ltc_usd},20);

            }

I know it's an old post, but I stumbled on it while asking myself the same question. The answer is to use the ActiveOrders method (which I don't think is implemented in the  c# BtceAPI)


Can my wallet lose funds because of the gap limit? I want to accept BTC payments but I'm a bit worried about the gap limit.
I've read our wallet could miss the funds beyond the gap limit if that happen.
But I also read that we could fix that easily increasing the gap limit in Electrum for example.
So I'm a bit confused right now, is possible to loose the funds due a gap limit or that problem is just something we can fix easily in our wallet changing the settings?

You won't ever lose funds due to the gap limit; they don't become lost forever. You can still retrieve them.

The gap limit is really only an issue for restoring backups. When restoring a backup, the gap limit is used by the wallet to know how many addresses to lookahead in order to ensure that all funds are seen. If the gap limit is too small, then a long string of unused addresses can cause the wallet to miss funds at higher indexed addresses as it does not generate them when restoring the backup.

The gap limit is not an issue for normal use. It only effects backup restoration and, when doing such restores, it is easy to just increase the gap limit if you find that not all of your funds were seen by the wallet,


Address reuse, cold storage and private keys I was going through some old posts regarding address reuse and came across a few remarks I wasn't aware of, and want to make sure I understood correctly.
I knew address reuse wasn't the best for privacy reasons, but I learned today that apparently it's also not good for security IF you've spend your bitcoins.
Let's consider the following situation: I have a brand new hardware wallet, generated a new seed with it, alongside a new address. I send from an exchange 1 BTC to it, and I decide to use this address as cold storage, meaning I'll regularly send BTC from exchanges to it, this specific address.
First of all, is it considered as address reuse if the address is only for cold storage, there's no transaction out but only UTXO's?
Now, let's say after a year of doing so this address has 50 UTXO's. I know this might cause an issue if the mempool gets full and tx fees rise, so I decide during a calm period to do some UTXO management and I do a "send all" to a new address that I generated from the same seed (so same private key). I effectively have a brand new address with only one UTXO.
My question: since i've used the same private key to both send a transaction (a big one, 50 utxo's) and generate a new address to send that to, does that expose me to security risks? (referring to this). If yes, how bad is it really and does that mean that to achieve full security I would need to generate a brand new seed on my hardware wallet and send once again the full balance to a new address?

Not sure if I got your question right.
If you pay to the same address multiple times that is address reuse. Even if you never spend from that address. But if you don't spend from that address the issue would "only" be privacy related not security related.
When you spend from an address the ECDSA public key becomes publicly known. As far as I know this is only a security issue if ECDSA breaks. So it would not really be a problem as of today but it migth be 10 years from now. Therefore it's not advised to do so.
A bitcoin address is only the hash value of the ecdsa public key. That leads to the fact that you could not sign a transaction from that address even if you could break ECDSA because you don't even know the ECDSA public key.
BUT in the scenario you described you would not reuse the address after sending from it. The way a seed works is that you generate an arbitrary amount of pairs of private keys and  corresponding addresses from it. So in your scenario you would generate privk_1 and address_1. Then you would make multiple payments to address_1. Later you would generate a second pair privk_2 and address_2 from the seed and send all your money from address_1 to address_2.
So if I got you right, I don't see any security problems with this. It's just that everyone would know that all the money belongs to a single entity. That is the afore mentioned privacy issue. I don't see the benefit of reusing that first address for receiving payments because you could simply generate a new address with your hardware wallet every time you want to receive bitcoin. Therefore I would not advice to receive everything on the same address.


In Ethereum, what is an uncle block? In Ethereum, what is an uncle?

Why does Ethereum take this approach, instead of having a single chain of blocks back to the genesis block?

If you mine a block, and it only gets included as an uncle, how much of the original reward do you get?

How long after the uncle is created is it allowed to be included into a block?

An uncle is a block that, in bitcoin, would be considered a stale block because it is not on the longest chain (it's an alternative block at the same height as your parent).
Ethereum incentivizes miners to include a list of uncles when they mine a block.
This has two main effects:

It decreases the incentive to centralize by rewarding miners that produce stale blocks on account of them not being part of a large pool and hence hearing about blocks later (due to network propagation delays)

It increases the security of the chain by augmenting the amount of work on the main chain by the work done in the uncle blocks (so, no work, or at least much less work, is wasted on stale blocks)

That being said, uncles introduce additional economic complexity that I'm not sure is well understood (like incentives to mine empty uncles)
Additionally, consider this paper here
(Grabbed from a Reddit post)


Historical Bitcoin full node counts Is there an online record of historical Bitcoin node counts? If so:

When did the record keeping begin?
Are IP addresses available?
Did Satoshi and most early adopters run Bitcoin nodes over Tor or were their real IP addresses revealed to other Bitcoin nodes?

Everyone that ran a node has/had the ability to record lists of other Bitcoin nodes and their IP address with a "getaddr" request (assuming they allowed incoming connections). I am not aware of a centralized online database of these records dating back more than 1 year: https://bitnodes.21.co/dashboard/?days=365
Yes: https://bitnodes.21.co/nodes/
Some early adopters used real IP addresses and others (including Satoshi) obscured their IPs with Tor, VPNs, or other means.


What happens to wallet.dat if I uninstall and re-install on Windows Bitcoin desktop client? If I uninstall Bitcoin Core desktop client, what happens to the wallet.dat? Is this erased or left in place? If I install Bitcore Core desktop again, does my wallet.dat get overwritten?

Nothing happens to it. None of Bitcoin Core's data (which includes your wallet files, the block files, the block indexes, the chainstate, etc.) is removed when Bitcoin Core is uninstalled. All of this data is stored in a separate location from the installation.


Do i need ~4 years to sync? I just downloaded bootstrap (~21GB) and started bitcoin base. It shows me that time to sync will be 4 year and 17 weeks? Is it going to change, or do i have to wait that much?

My internet downloading speed is only about 220 kb/s.

The synchronization process has two parts: Downloading the data and verifying it's validity. You already took care of the downloading part by acquiring the boostrap file. Now your Bitcoin Core is building the transaction database by verifying the network's whole transaction history.

The value you are asking about doesn't give you a time estimate, but shows you how much of the data in the blockchain still has to be verified.

You are just at the very beginning, so your client still has to verify the transactions of 4 years and 17 weeks. Since you have downloaded all the data already (it's in the bootstrap file), your downloading speed doesn't matter.

Depending on the speed of your computer, the verification process can take a few hours to a few days.

If you don't want to run a full node and don't want to wait that long, you might want to look into thin clients, such as MultiBit.

Also see:
Why is downloading blocks taking longer and longer?


I LOST MY FUND EVEN ALREADY IMPORT WALLET I cannot recover my fund in Copay Wallet. I done import wallet using my back up 12 phrase word but yet still cannot recover. Why?

Check the wallet version, was it copay the wallet you initiated the seed from? If not, the derivation path for your coins may be different, please check: https://walletsrecovery.org/
They've changed multisig derivation few times, I think there is a link to recovery tool for older versions.
Be aware that your mnemonic is dependant on the arrangement of the words, they have to be imported in the direction from 1st to 12th.


Kucoin API buy and sell Why, when I using Kucoin API, get_tick, for market info, I see, that sell is bigger buy?

Example from oficcial  API Documentation:
With a symbol param

{
    "coinType": "KCS",
    "trading": true,
    "lastDealPrice": 5040,
    "buy": 5000,
    "sell": 5040,
    "coinTypePair": "BTC",
    "sort": 0,
    "feeRate": 0.001,
    "volValue": 308140577,
    "high": 6890,
    "datetime": 1506050394000,
    "vol": 5028739175025,
    "low": 5040,
    "changeRate": -0.2642
}

"lastDealPrice": 5040,

"sell": 5040,

This means that the last price exchange happened is at 5040 and sell is at the same price, i.e. a sell order at that price has been executed and registered as "Last Deal Price", shich is acutally higher than the buy orders price.


libudev error while configuring cgminer on fedora 22 I am using Fedora 22, 32bit OS and have Antminer U3 for mining operations

got the cgminer source code from GIT:
git clone https://github.com/bitmaintech/cgminer

while running ./configure --enable-icarus the command ends up in error as below

./configure: line 11972: -pthread: command not found
checking libudev.h usability... no
checking libudev.h presence... no
checking for libudev.h... no
configure: error: "udev support requested but libudev not installed"
configure: error: ./configure failed for compat/libusb-1.0

I tried using system libusb, but no success

./configure --enable-icarus --with-system-libusb

checking for pthread_create in -lpthread... yes
checking for library containing addstr... no
configure: WARNING: Could not find curses library - if you want a TUI, install libncurses-dev or pdcurses-dev
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for LIBUSB... no
configure: error: Could not find usb library - please install libusb-1.0

libusb is part of systemd package and my system has latest installed.
checked from

sudo dnf upgrade systemd

command returned Nothing to do.

Could you please help where i could be going wrong in setting up CGMiner ?

PS: I tried bfgminer, but ended up in errors.

I was able to get cgminer to build the icarus extension on a fresh CentOS system like so:

yum install git
git clone https://github.com/bitmaintech/cgminer
cd cgminer/
yum install -y autoconf make automake gcc gcc-c++ kernel-devel libcurl libcurl-devel
yum install libudev-devel
./autogen.sh
./configure --enable-icarus
make
./cgminer

So I think you're missing the package libudev-devel. (It might be named something different on Fedora 22 - I don't know.)


Why do we need to chain the blocks (creating blockchain) in a permissioned blockchain? The main question is:

What does "chaining block" mean in a permissioned blockchain? OR in any blockchain network in which creating a new block does NOT need consuming resources/energy ? (even in the case of proof-of-stake)

Does "chaining blocks" (creating blockchain) WITHOUT consuming resources (in the case of PoW, this resource is electricity) make sense? where, re-calculating all hash values does NOT have any considerable cost and it takes few seconds.

In other words, Why do we need to chain the blocks (creating blockchain) in a permissioned blockchain network (such as Hyperledger whose consensus mechanism is PBFT)?

What does really mean chaining blocks without consuming resource/energy? where re-calculating all hash values and as a result replacing all blocks can be done EASILY and RAPIDLY.

The thing can make transactions history immutable in Bitcoin, is a PoW with enough difficulty and not only using blockchain data structure. Otherwise, only chaining blocks based on ex. a PBFT consensus (or even based on proof-of-stake) can be interpreted as a fallacy.

What is the role of blockchain (chained blocks) in a permissioned network? where if one is able to change one block, then he could change the whole of chain as well, by re-calculating all previous hash values, since there is NO difficulty to calculate hashes.

Note: I tried to bring up my question in several different forms to be more clear. In the case, you think some additional explanation is needed, please let me know.

I think you might already know the answer, based on your question. The "chain of blocks" has value in Bitcoin because of the proof of work. It is also provides a data structure that can be used in an efficient way to verify the integrity of the chain, but that is not really what makes it interesting.

A permissioned blockchain, obviously, requires permission to join, so a proof of work isn't really necessary. If someone misbehaves, they can be removed by whatever process prevents the whole world from joining. The proof of work provides a consensus mechanism in a distributed permission-less network.

Another problem is the word "blockchain" is very over-hyped term that has different meanings in different contexts. The reason why the "chain of blocks" or "proof of work chain" Bitcoin Whitepaper is interesting is that it solves the problem of distributed consensus. Any other definition isn't nearly as interesting.

Based on that, it appears that many companies are trying to figure out how to make a profit on the "blockchain" hype and one way is by creating their own coin. Unfortunately companies are used to controlling their products and that is why you see premines and closed blockchains because that is how companies have traditionally made money. I look forward to more solutions where companies provide solutions on top of the existing infrastructure (e.g. like building web apps on the existing internet) rather than trying to control it.