Can you transfer Bitcoins from one address to another address directly without going through the web? If you and a recipient both have a wallet on a flash drive, is it then possible to transfer bitcoins from one wallet to the other using a computer without going through the web?

Example in life: "Here you go nephew, I'll give you 5 bitcoins for your birthday." Then we go to the computer with our wallets and transfer the funds, without waiting for people to decrypt bits and pieces of it across the web, just relying on the local computer.

Yes, the simplest example is that you could create a paper wallet, send coins to that wallet, and give the paper wallet to your nephew.

In this sense, the paper wallet act similar to a bearer bond. Whomever holds it, has access to the coins. The caveat is that your nephew has to trust that you don't spend the coins (since you have seen the private key).


Rejected transaction What means this: "Transaction rejected by our node. Reason: Non-canonical signature: High S Value". It came after trying to send BTC to my new Qt-wallet from old synchronised wallet (version 0.8), which was restored to status about 1 month ago by copying backup wallet.dat file.

There are two ways to create signatures for transactions. One uses a High S Value and the other a Low S Value.  Since the signature can be malleated by third parties (also see transaction-malleability) to switch the High S to Low S and vice versa, and that changes the transaction id, High S Values have been deprecated for several versions.

You could either malleate the transaction's signature to Low S and republish it, or you could just import the wallet.dat into the new Bitcoin-Qt that you're trying to send the funds to anyway.

Be sure to create a backup of the new wallet.dat before you import the old.


I had someone offer to mine bitcoin for me, I am a beginner I had someone offer to mine bitcoin for me. I pay for the bitcoin on cash app and he mines it for me. With messaging him I started to feel like he didn't really know what he was talking about when telling me to sign up for cash app and coinbase. I followed what he said but during signing up on the 2 sites but it was like he didn't know what he was talking about during the time I had to wait for both account to be verified with 2 small cents deposits into my bank account. But he was telling me miss information on what to do an it didn't make any sense. Cause the sites were basically saying I can't move forward until i enter in the 2 amounts. But had to screenshot the pages to show what they said and had to write it all out for him exactly how it showed on the sight. and after a few minutes he finally understood me. But it feel like he didn't even know how to sign up process went which is suspicious to me an I don't want to get caught in a scam

Sadly there are a lot of scammers around. Don't pay to anyone you don't know (and before you sign up on an exchange, make sure it's a reputable one).

There are also some services which allow you to buy "a miner" which mines for you, but generally, you would be better off just directly buying whatever coin you want yourself.

Be careful, don't trust strangers.


How to split into BTC and BTG I have bitcoin in blockchain.info (where i control the private keys) before 25 Oct.

Which exchange/wallet can i use to split the bitcoin into BTC and BTG so that i can sell them separately before 1 Nov 2017?

At the time of the snapshot, the coins which you controlled in your wallet would exist in both the original BTC blockchain, and the newly split BTG blockchain.

You can redeem these BTG coins for BTC (or another Cryptocurrency) via an exchange which supports these tokens (eg Bitfinex, Yobit,  etc) once the BTG blockchain is being publicly mined, and transactions can begin.

Selling before this time would have to be done via a futures contract, although I do not believe there are any major platforms trading BTG futures at this time.


What Pools operate on port 80 or 443? My firewall blocks all ports except 80 and 443.  Are there any pools that accept inbound connections on these ports?

We ( https://wwww.bitlc.net ) primarily, and strongly recommend, use of port 80 mining. With 8080 and 8332 fallbacks, but only over IPv4...

The regular pool.bitlc.net:80 is fully accessible over both IPv4 and IPv6.
pool.bitlc.net:8080 and :8332 works to, both there is no reason to use them...


Convert 33-byte public key with no parity prefix to address I'm writing a blockchain parser and I keep running into this type of scriptPubKey in the Litecoin blockchain:

20a75ca72ffd994d2004d67b0e89015913f7352455d0111ede590430037c9fe2ac
20e664c3f6909687499d9bf13108e35306477a8d71b20655a75cbc64270416a9f2
20651b85139631645bfd68327d85af913a7e33e74433848c5facfe48368c7d1504
20604f5ced8c595af687a0e8718098c4818b7d51f2ba79cca931dc74d6cdb8c021

The length suggests they might be compressed public keys but there is no parity byte. I can look at a few dozens of these and all bytes vary, except for the prefix 20 which is the length.

Blockchair seems to parse these as 's-something' addresses, like this:

https://blockchair.com/litecoin/address/s-31fa6bd469e97be4fe639911ca60bddf

https://blockchair.com/litecoin/address/s-4e7d283f055044b547f571bfdbbdb291

What are these addresses, and how is it doing that? I assume they artificially add the s- because dash in not in base58, but I can't get anything to match the address to the right of it either.

I've tried the regular way of compressing other formats like this:

temp = prefix + hash160(scriptPubKey)
address = base58Check(temp + checksum(temp))

With and without checksum, with and without hash160.
Even scanning for all possible prefix bytes I can't get the address to the right of the dash.

I've discovered that I have to base58 something with 23 bytes to get the target length, but that's about it.

Other parsers can't seem to decode this address (see links on blockchair page itself), only blockchair.

These are not public keys. Not everything that is 33 bytes is a public key. In this case, it is a 32 byte hash. The first byte indicates that the next 32 bytes are to be pushed to the stack. So the result is that the actual data in this scriptPubKey is a 32 byte string.

In this case, this particular transaction is a coinbase transaction in a block mined by p2pool. This particular script is some p2pool specific data and is a hash, not a public key.


Question on Coin Trading and valuation If I wanted to create a digital coin (asset) and wanted to keep the value of that coin steady (Think a dollar. It's worth a dollar today and a dollar tomorrow and a dollar every day.) What would be the best way to go about trading that coin? I am not looking to increase or decrease the value of the coin, I am looking more for a way that the coin could be cashed in by the holder. I figured I would come here because you all are way smarter than I am. :)

TIA

You would need to create some guarantee that someone would be willing to exchange this token for exactly a dollar.  This means that the value of the token would in no way be market driven, except that it is pegged to an existing currency and its value fluctuations.  I don't believe there is a way to do this in a decentralized manner, but since that's not what you asked, I'll assume that's okay.

You would need to create a company/organization that issues the token, and guarantees that they will buy it back for the price you peg it to.  For example, you would always exchange one token for one dollar.  This would have to be a legally binding agreement, so that if your organization ever refused to exchange at that rate, holders of the token would have legal recourse against you.  You would also need to be able to prove your solvency, and thus hold enough assets in dollars that holders of the token can be assured that you have the dollars to exchange if there was ever a run.  If a question of your solvency ever arose, your token would drop in value, so you'd have to allow regular audits of your organization's asset holdings.

Likely, much of this probably negates many of the advantages you are attempting to seek by creating a digital currency in the first place.  The trust in your system would be based on the legal system and the government that enforces that system...just like government issued fiat currencies.  Your organization would more or less be a bank, but a bank that issues its own token, and therefore is locked out of the existing financial infrastructure.  You would be subject to regulation, and therefore won't be able to offer anything more than a bank does.

In the modern age, nearly all money is digital.  You've basically just asked how to start a bank.


Bitcoin core How do I get the transaction fee while using sendtoaddress I have a bitcoin core running on testnet, so for suppose I have a wallet balance of 1BTC and I have to send it to an addressx, so how can I know the amount of transaction fee so that I can subtract it from the sending amount.

bitcoin-cli sendtoaddress x 1

This will return an error stating that

error code: -4
error message:
Error: This transaction requires a transaction fee of at least 0.00000488

How can I know it beforehand the fee required for a transaction?

I think you want estimatesmartfee or estimatefee it takes one argument which is the confirmation target in blocks.  You can also select from Economical or Conservative fee modes which may affect the suggested fee rate.


Ripple JSON API - Can I use more than one destination while transaction? In Ripple API,

Is there any apis available to split payment which I can pass more than one destination address in single transaction.

Let me share code:

const RippleAPI = require('ripple-lib').RippleAPI;

const api = new RippleAPI({
    server: 'wss://s.altnet.rippletest.net:51233' // Public rippled server
});

//Payment API:
const address = 'r4Ct32uDZvL9e5GRbPftAnu8rpCg7aXXXX';
const secret = 'shvtBfNDJ3yf9sqGoc7XUgSTnXXXX';
const instructions = {maxLedgerVersionOffset: 5};
const payment = {
    source: {
        address: address,
        maxAmount: {
            value: '1.01',
            currency: 'XRP'
        }
    },
    destination: [{
        address: 'rn8KqzsH7b8fGZYmbaDXinLb8XffneXXXX',
        amount: {
            value: '1.01',
            currency: 'XRP'
        }
    },
    {
        address: 'rn8KqzsH7b8fGZYmbaDXinLb8XffneXXXX',
        amount: {
            value: '2.01',
            currency: 'XRP'
        }
    }]
};
function quit(message) {
    console.log(message);
    process.exit(0);
}
function fail(message) {
    console.error(message);
    process.exit(1);
}
api.connect().then(() => {
    console.log('Connected...');
    return api.preparePayment(address, payment, instructions).then(prepared => {
        console.log('Payment transaction prepared...');
        const {signedTransaction} = api.sign(prepared.txJSON, secret);
        console.log('Payment transaction signed...');
        api.submit(signedTransaction).then(quit, fail);
    });
}).catch(fail);

Currently, I am getting error I am passing designation address in array. But If i will as object then it will work fine. But I need to pass more than one address in single transaction.

Can you please give solution ASAP about it?

for now there is none... you can only use single destination address


What is the most cost effective GPU mining rig? I'm looking for specific part numbers for CPU, GPUs, motherboards, cases, etc.

Assume power doesn't matter.

Also, what sort of hash rate does it get?

Here are some guidelines to choosing hardware for an effective GPU rig.

CPU: The cheapest you can find. Low-end AMD CPUs are good for this.

RAM: The cheapest you can find.

ODD: Unnecessary, install the OS from a USB flash drive.

HDD: Unnecessary, use a USB flash drive, the cheapest you can find which can hold the OS.

GPU: Basically any ATI series 5XXX+ is suitable. https://en.bitcoin.it/wiki/Mining_hardware_comparison has a list of the hashrate to expect from each. You need to choose one based on the price in which you can get it, the hashrate, and the power (which has implications for electricity costs, and the need for proper PSU and cooling). You need to consider the whole system - using multiple cheap cards can increase the cost of the peripherals.

PSU: Needs to be a good brand and have sufficient power for all the hardware, with some to spare. A 80+ gold PSU is more expensive but could be a good idea, especially if you pay for power. If you're using many graphics cards you can even use multiple PSUs.

Case: If you're using a standard case, it can be cheap but it should have sufficient room and cooling for the cards. Bottom and side fans can help. But the most effective is to use a custom case or no case at all and just custom mounting for the cards.

Motherboard: Needs to be compatible with the CPU and RAM, and depends on the number of cards and the case. If you use a standard case you need PCIe x16 slots with enough spacing between them, and a motherboard with more than 2 suitable slots can be expensive. With a custom case you can use every PCIe slot, including x1, with extender cables - even cheap motherboards have about 5. The available bandwidth for the slots doesn't matter. Other than that there are no special requirements.


Why do my transactions show I received 1 satoshi? My Multi-Bit client shows 1 satoshi sent to me in my receiving transactions, with 1 confirmation only. The receiving address is quite old too. Why is that showing up when I didn't send myself anything and no one would have any reason to send me anything?

  fc973596838c5d001efd77060c775cd85f0ac3821ae813e64116d9eb66ead30a: Seen by 1 peer. Pending/unconfirmed.
     from 1Enjoy1C4bYBr3tN4sMKxvvJDqG8NkdR4Z / 3d96dee6b4aaeeed1d5a95446c6fba4ab3ff0664aaf76773428c485d86f697fb:1
       to 1Pfe9cYYQYGbKdSddLxuFyYRmvNoFPgVWu 0.00000001 BTC
       to 1Meshuse4ZU16HjLmnUCYt3DFEHvp1qscw 0.00000001 BTC
       to 1PKE81BAg8RHYLGqLCsVcnWCspcfekokwG 0.00000001 BTC
       to 18omoJATGraMgghRrocCoSnR2gz6mx8DkW 0.00000001 BTC
       to 19qn25QVqn3ZH6UT63PbgtSBsyAgyaWxAA 0.00000001 BTC
       to 1HNyt3qg3qgL2XhhcsjMD6d9zpDB98Kqqw 0.00000001 BTC
       to 1CrRqLtF766WTAx1VEzJr9rwFWjV5xpqAX 0.00000001 BTC
       to 1D6JBqA5ixpvNS4RjthapT4c5zkut4yNf1 0.00000001 BTC
... body is limited to 30,000 characters ....
       to 17jVF27wAV9bhneRFsnLTySMUjtPWHZVwB 0.00000001 BTC
       to 1MoVuJTG4DV1r37Ew11ePWefn3uFb8vDmm 0.00000001 BTC
       to 1GBE3BrqzfevPDsSzJaJpTa1VyKMWTt5MZ 0.00000001 BTC
       to 1BMR6fDvuqPan3QA9iNUJxXeHtvLKmRaeq 0.00000001 BTC
       to 1Enjoy1C4bYBr3tN4sMKxvvJDqG8NkdR4Z 0.0000225 BTC

That particular transaction is an attempt at something that has become known as "dust spam". The idea is that the sender sends a very small amount of bitcoin to many different addresses, hoping that people will notice and investigate further. It's possible to find out who sent this if you look hard enough, but most people won't bother. The effectiveness of this kind of spam is clearly limited.

For more information, see the Reddit thread PSA: Did you receive a "dust" amount of BTC from "Enjoy" and "Sochi"? Here's why.


Do transactions affect the discovery of a block? When a miner creates blocks, do transactions in that block affect the result? For example, if a miner creates a block, but now a new transaction is broadcast on the network, will the miner stop current work, then add the new transaction as one of the inputs, then recreate the block?

There's no such thing as 'aborting'. It's all random anyway. The chance of solving a block on the first try is equal to the chance of solving one on the 1000th try.

It's like the difference between picking the same lottery numbers all your life or picking different ones each week. There is no difference.


Proof for "Is an immutable, decentralized blockchain possible without economical incentives?" Bitcoin is immutable because of economical incentives. Those who are able to 51% the network can't do it, because it'll result in the value of the currency to drop tremendously, which causes waste of a lot of money as there's a 100-block limit to spend coinbase transactions. Those who aren't miners having large capital to attack the network can't turn on a considerable amount of miners at once as it's not a PoS coin.

What I'm asking is "Is there any proof that a decentralized consensual blockchain can't be immutable without economical incentives?"

Bitcoin is immutable because of economical incentives.

Behind every full-node and miner is a human operator making a decision or choice to carry the cost of running such an operation.

Security from decentralisation can only exist if users wish to use and validate Bitcoin, because it cannot be easily censored as centralised systems. Security (Immutability) from confirmation (PoW) can only exist, if it is paid for (by fees).

Individuals will make choices which improve their situation. The system can only work if it supports this and is reflected in the incentives for all participants.

  Those who are able to 51% the network can't do it, because it'll
  result in the value of the currency to drop tremendously, which causes
  waste of a lot of money as there's a 100-block limit to spend coinbase
  transactions.

There is no clear incentives that prevent a 51% miner from double-spending or censorship. A double-spend may reduce the value of Bitcoin, but whether it is profitable for the miner (in let's say USD terms) will also depend on the double-spent amount. A 51% selfish miner who censors blocks, may benefit financially from doing so by diverting Bitcoin transactions to another domain which can be taxed by the miner.

However, user's can offer higher fees if their transactions are being censored, thus incentivising new mining hash rate to join the network and dilute the previous 51% miner.

  Those who aren't miners having large capital to attack the network
  can't turn on a considerable amount of miners at once as it's not a
  PoS coin.

Capital can always be reallocated to mining, but they need an incentive to do so. If users pay higher fees, this can incentivise new hash-power to come online, and dilute the former 51% miner. Users will only pay higher fee's if their transactions are not being confirmed (being censored by 51% miner).


How does miner voting work? I always here people talk about miners being able to "vote" on certain things using the block chain. So here are my questions:

1) who gets to ask the questions?

2) what type of questions are being asked?

3) do they "vote" by selectively solving one block?

4) how is it even possible for even the biggest miners to selectively solve a block when the hash rate is so high?

5) does question #4 propose a vulnerability in the network?

Thanks. I never really understood this aspect of mining regarding big time mining farms

I'll try to answer your questions specifically, but here's a good read on how Bitcoin votes on upgrades.

1) The questions are really all the same question:  which BIPs do you support?  These proposals make their way through the Bitcoin development community, and once implemented, can be voted on by miners.  So basically, anyone can make a proposal.

2) See the answer to question 1

3) No

4) Since the answer to question 3 is "No", this question makes no sense.

5) See questions 3 and 4

EDIT:  I changed the link explaining BIP voting to one with less bias and opinion, and is much more concise an explanation.


How important is the fee for speed of confirmation? I am developing a Bitcoin application, so I am sending a lot of "toy" transactions for testing, with 0 fees.

But it seems that those take forever to get confirmed. (Right now I am waiting 45 minutes for one transaction to get confirmed. Previously it was about 30 minutes.)

Is my suspicion right, or am I doing something wrong? How important is the fee for miners? Do they preferentiate?

Or am I doing something wrong (not broadcasting to enough nodes, maybe?)?

And do nodes, that aren't miners (with official client I presume), preferentiate to send around transactions with fees?

(edit: note that the question was written in 2012, when the blocks were still empty.)

It seems like there is some policy against free transactions in official client.

There are some anti-spam protections, which my toy transactions exactly meet (low transactions, recently accepted coins, etc)

https://bitcointalk.org/index.php?topic=63553.0

https://en.bitcoin.it/wiki/Free_transaction_relay_policy


Is there anyway to check if someone has a bitcoin wallet? My son passed away years ago and it has been brought to my attention he may have bought a sum of bitcoin years ago.
Can someone please tell me how I can check to see if his wallet is still active?

You will have to look through his computers for Bitcoin software or files generally called wallet.dat.

In his papers, you're looking for anything labeled "Paper Wallet", or with QR Codes or long hex-numbers.

Good luck.


CPUMiner - Do I also need to download Bitcoin client and 15gb chain? Just out of curiosity, I downloaded cpuminer, signed up at a mining pool site and started the miner.  It seems to be doing something.

[2014-01-22 22:51:09] 1 miner threads started, using 'sha256d' algorithm.
[2014-01-22 22:51:09] Starting Stratum on stratum+tcp://stratum.bitcoin.cz:3333
[2014-01-22 22:51:10] Stratum detected new block
[2014-01-22 22:51:12] thread 0: 2097152 hashes, 1600 khash/s
[2014-01-22 22:51:42] Stratum detected new block
[2014-01-22 22:51:46] thread 0: 56289640 hashes, 1652 khash/s
[2014-01-22 22:52:47] thread 0: 99121136 hashes, 1624 khash/s
[2014-01-22 22:53:48] thread 0: 97418224 hashes, 1599 khash/s
[2014-01-22 22:54:40] thread 0: 95913336 hashes, 1821 khash/s

I was under the impression that mining could not be done without first downloading the whole chain (that takes about 3 days to download).  Is cpuminer really doing something or just showing me some fake data?

Mining by yourself requires that you have the whole blockchain. However, when you choose to mine as part of a pool, the pool operator maintains the full blockchain and just sends parcels of work out to the miners. (Of course, in this arrangement you have to trust the pool operator.)


Error: Keypool ran out, please call keypoolrefill first After setting the dash-client in regtest mode, I am trying to generate coins.

No matter what I do, I get the above error.

When I run:

dash-cli -regtest getmininginfo

I get the below output:

{
   "blocks": 0,
   "currentblocksize": 0,
   "currentblocktx": 0,
   "difficulty": 4.656542373906925e-10,
   "errors": "",
   "genproclimit": 1,
   "networkhashps": 0,
   "pooledtx": 0,
   "testnet": false,
   "chain": "regtest",
   "generate": false
}

How do I set the generate to true.

If I run

enter preformatted text heresetgenerate true,

I get the message that setgenerate is deprecated, on this network I need to use generate which doesn't run.

Unlock your wallet (using walletpassphrase) and run keypoolrefill as the error message says. generate and setgenerate requires keys from the wallet, and if the keypool is empty, they won't work.


How can I recover last word of BIP-32/39 mnemonic copay second signature multisig wallet I've got a multisig 2of2 wallet in copay.

I've one wallet correct but have lost second wallet and only have 11 of the 12 words of the seed.I'm pretty sure I miss the last one.
I've got some of the first created adresses and trying to recover using btcrecover but throws an error:

  The entered address is invalid (not a Bitcoin P2PKH address; verson byte is 0x05)

Copay uses P2SH addresses for multisig addresses and I don't know hot to proceed.

Any hints?

last word only have 128 possibilities
you can calculated by the first 11 words


Is the nonce in Bitcoin the answer to the puzzle from the previous block? If, in Bitcoin, the nonce is included in the header of the proposed block, is it the answer to the puzzle from the previous block?

Nonce of a header is the answer to that block.

Recall the mining process:

Create a template block header
Choose a nonce
Hash the block header
If the hash is lower than network difficulty, broadcast it. Else, choose a different nonce.

To sum up, nonces are for individual blocks, and a different nonce is chosen until the template becomes a valid block.


I've forgotten the password to my wallet but can still access it, can I get my Bitcoins out? I have forgotten the password that I created for my wallet. I can, however, open my bitcoin-qt software successfully and see my transactions etc.

I know I can't recover or brute-force my password. Can I move my Bitcoins from this wallet to a new wallet (where I'll take better care of my password)? How?

Sorry but there is no way to spend the coins without the password.  However if your password was of poor quality you may be able to use hacking tools to brute-force it.

Importing the coins to another wallet won't help... it would have the same password.


How two transactions with the same hash can cause double-spending Let's consider following situation:

Vendor owns address X.
Adversary sends transaction T1 to X with hash Y and receives product from vendor.
Adversary sends transaction T2 to address which he owns with the same hash Y to other nodes.
Vendor receives transaction T2 with same hash as T1, so from his point of view this is the same transaction. He ignores it.
Other nodes receives transaction T1 after T2 so they ignores T1.
Transaction T2 was sent to majority, so probability that T2 will be included in next block is higher than probability of inlcuding T1.
According to probabilty, the transaction T2 was included in next block.

Is this scenario of double-spend correct?

The scenario your tried to imagine is almost correct.

The point is that the "attacker" will generate two identical transaction coming from the same unspent outputs of his address X to "Vendor" address Y. He will generate T1 and T2 at the same time, taking funds to send from the same source but he will attach to each transaction a different fee. Of course one of the two transactions will have an higher fee.

The transaction with the higher fee (i.e. the tx which the "attacker" sends back to his owned address, as you called T2) will be the one ACCEPTED by the network. T1 will be rejected because it comes from the same unspent outputs than T2 but it has a lower fee, so after a while it gets pruned by mempool of Bitcoin network.

In conclusion, pseudo double spending, it's a matter of fees and not tx timestamps.

Hope this helped.


What does volume mean? When we talk about OHLCV bars for say LTC-BTC, what does volume mean ?

Is it the quantity of LTC transacted during the bar or the quantity of BTC transacted during the bar?

An LTC-BTC Trading pair is the buying of LTC for bitcoins, so the volume of this market will indicate how much LTC has been bought for bitcoins.

The total amount of this trading volume can be shown in different value, if you want you can simply divide this amount by its adjusted price of LTC to know how much LTC has been transacted on this pair.

Usually the volume will be shown in dollar, so if we have a BTC at 10000 dollar, an LTC at 100 and the volume LTC-BTC show 1000 dollar we do:
1000/100 = 10

10 LTC has been exchanged for bitcoins.


How were miners supposed to signal support for BIP148? Under BIP141 (SegWit), you could signal support by setting nVersion bit 1 equal to 1. BIP9 counted:

20000002 100000000000000000000000000010
20000012 100000000000000000000000010010
30000007 110000000000000000000000000111

Under BIP148 (Mandatory SegWit), it says "all blocks must set the nVersion header top 3 bits to 001 together with bit field (1<<1) (according to the existing segwit deployment."

What exactly should the nVersion have looked like? Which of these would be counted towards BIP148?

001000000000000000000000000010 ?
100000000000000000000000000010 ?

BIP148 was not a soft fork deployment on its own, so it did not have a BIP9 version bits signal associated with it.

The actual softfork deployment was SegWit itself, defined in BIP141 and signalled by bit 1 in the version field.

Any block signaling soft fork readiness with BIP9 must have the top three bits set to 001:

https://github.com/bitcoin/bitcoin/blob/a79bca2f1fb25f433d6e100a31a3acfde2656ce1/src/versionbits.h#L14

/** What bits to set in version for versionbits blocks */
static const int32_t VERSIONBITS_TOP_BITS = 0x20000000UL;

Readiness for SegWit was signaled by bit 1 or 1 << 1 in 32-bit hexadecimal: 0x00000002

Therefore all blocks signaling SegWit during the BIP9 STARTED phase had the version 0x20000002

In Bitcoin the block version number is serialized as little-endian, meaning on the wire and on disk the first few bytes of a SegWit signaling block look like this:

bitcoin-cli getblock 000000000000000000f288b3ff879d0ef11d3197f88dcdc1e29c3933b9c0e5af 0

0200002038493522351788...

Note the expected version bits in the first four bytes, little-endian.

To address your question specifically about the version in binary, all SegWit-signaling blocks would have a version field like this (shown here as big-endian to match your example)

00100000 00000000 00000000 00000010

Miners do crazy things and some miners during this time signaled extra bits for various other reasons, but the two bits shown here must be set to signal SegWit.

On to the question of BIP148: It had no extra signals except for ASCII strings encoded in the coinbase scriptSig. In block 469345 the coinbase scriptSig is:

03612907236808005fe905fcc10000bf33092f736c7573682f4249503134382f

Which, decoded to ASCII:

a)#_i|A?3       /slush/BIP148/

BIP148 nodes also included a similar string in their user-agents. Otherwise they provided no signal to the network that they would reject non-SegWit-signaling blocks after the flag date. They required no network majority to enforce their rules.


Finding the purchase values of all currently held bitcoin Since the full Bitcoin transaction history is public, is it possible to calculate the values that all currently held Bitcoins were acquired at (in USD). For example, if a Bitcoin has been held since Jan 11, 2011, then it was acquired when the exchange rate was $0.32. But if a bitcoin was acquired today, then its acquisition price was ~$7000 (today is a bad example because it was so volatile).

If so, I was wondering if anyone could point me in the right direction? I know I would need to parse the full transaction log, but I'm not sure:

1) Are there timestamps on the individual transactions? If not, what is the best way to infer the transaction date? Just using the block number?

2) Is it easy to identify transactions for the various exchanges (Coinbase, etc)? How would I do this?

3) I am assuming I can find the historical exchange rates somewhere, but if anyone can point me to this, it would also be helpful!

Any other advice? Thanks! I am new to Bitcoin, but very interested in learning more.

You cannot do this for a number of reasons.

Bitcoin is mined - There are many bitcoin around that have never passed through an exchange (all of Satoshi's, for instance). Since they've never been traded, you can't find any trade data for them
Exchanges operate offchain - You cannot link an onchain transaction to an offchain trade and its price easily. Many people only withdraw when moving between exchanges, or to cold storage. This could mean that they traded BTC months/years ago, but an onchain transaction only appeared yesterday
Onchain transactions don't have to be from exchanges - Transactions could simply be moving money between the user's own wallets, or exchanging for other goods/coins. Once again, you can't look at a transaction and know what it's for.

Exchange wallets are usually identifiable for most major exchanges. However, it's going to be nearly impossible to link individual transactions on the chain to individual trades without extensive raw data from the exchanges itself. Even after that, you will be missing data on OTC and other non-exchange trades.


Decrypt Blockchain.info wallet export Blockchain.info's encrypted wallet format is described as:

  AES encrypting the entire JSON payload with the users password which
  is then encoded as base64. No salt is used for single pass encryption.
  The exact AES specifications are 10 rounds of PBKDF2, Block Mode CBC
  ISO10126 padding.

However, in trying to verify my own encrypted exports, it seems thats not all the information (or correct). I think part of the issue is in how the user's password is expanded to an input key for the AES/Rijndael cipher.

The input key for AES can be 128, 192, or 256 bits; which is being used?
AES has its own key schedule, but it seems Blockchain is using something separate, as "PBKDF2" is another key expansion function.
PBKDF2 is a methodology that can be used with many types of hashes; which hash is being used?

Okay, so after investigating the provided restore tool (thanks Lohoris for pointing it out!), I arrived at the following answers to my questions:

The input key for the AES decryption is 32 bytes (256 bits)
The block size used is 16 bytes (MCRYPT_RIJNDAEL_128 for PHP mcrypt functions)
The initialization vector (IV) for the AES decryption is the first 16 bytes (one block size) of the encrypted string. The remaining encrypted string is the encrypted message.
The user's password is expanded by using 10 rounds of PBKDF2 hashing, using SHA1 hashing, and the IV as salt (the "No salt is used for single pass encryption" note seems to just mean no salt for the AES encryption. For the PBKDF2 hashing, there is a salt).

Note, if using PHP mcrypt extension functions (like I was trying to), you need to use the mdecrypt_generic() method rather than mcrypt_decrypt(), since Blockchain using ISO10126 padding, and the mcrypt extension will only use "zero padding". You then have to un-pad the result separately.


Moved Bitcoin-Qt wallet to blockchain - can see my funds but can't send them? It all started the other day when I sent some coins to Bitcoin-Qt, a 'safer' wallet ... was so slow to sync and was crashing et cetera.

Anyway, I imported the wallet.dat to blockchain.info opening up a mywallet(blockchain) there. I can see the coins in the wallet now, but I can't send them (no access to send option), which is what I have to do.

How to resolve this?

i have blockchain.info "My Wallet" wallet on iphone. i didn't pay any attention to it for about a month until a couple of days ago. when i opened the app it showed a balance of 0.00 BTC. A momentary shock. Then i noticed that the "identifier" i.e., the string of letters and numbers in the top field. This is your public key for that block. For some reason in its wisdom blockchain created a new identifier that now by default fills the identifier field, whereas my old correct identifier used to show in that field, and a positive BTC balance associated with that idedentifier showed as well. Now when I hand enter the old correct identifier, it shows my correct BTC balance.

I do not appreciate having the functionality of the app change like that without notice to me first.
Contacting support from blockchain is impossible if there is any support from blockchain.

To answer your question: hand enter your original identifier and your correct account will show. I have no idea why they change one's identifier.


Why is my Electron Cash not detecting any servers? I am using Elecron Cash 2.9.4, and I opened the wallet by using the seed of my old (BTC) Electrum Wallet. I intended to get BCH.

I had a similar issue. The solution is easy.

Choose the "Server" tab, then randomly right click on a server and choose "Use this as server"

To make sure it works properly, please choose one of these: https://github.com/fyookball/electrum/blob/b32f10a/lib/network.py#L54-L58

I've reported the bug to Electron Cash' developer. Thank you for noticing it!


What factors determine how long confirmation takes? Simple question...

What are all the factors (all of them!) that determine how much time X number of confirmations of a transaction takes?

How many miners are currently mining, how fast they are mining, how much of a fee you paid, and whether you're a well connected node or not (only matters for first confirmation).


How to withdraw dollars to Dwolla from Mt Gox I have been trying to withdraw $7000 US dollars from Mt Gox to Dwolla for over a week.  I am currently level 1 verified at Mt Gox, so my strategy has been to withdraw $1000 every 24 hours for 7 days until I am able to withdraw $7000.  The total of my withdraws from Mt Gox has been $2000 over the past 2 months.

I was able to withdraw $1000 twice last week using two separate $1000 transactions 24 hours apart.  But after these two initial $1000 withdraws occurred, subsequent my withdraws have not been successful.  During these unsuccessful withdraw attempts, the Mt Gox web interface says the transactions are being processed with a pleasant green-colored background to the message, and my USD balance decrements by $1000 each time I initiate the $1000 withdraw request.

This is the Mt Gox message I receive for unsuccessful withdraw attemps:

However, several minutes after submitting the request, my balance returns to the previous amount from before the request by going back to the original balance.  No transaction ever occurs, and there is no message or notification the request has been canceled.

I submitted a ticket to Mt Gox for technical support, but their answers are not satisfactory.  Mt Gox tech support reps told me the system canceled my withdraw requests and told me "I should try it again."  But when I try again I have the same result - transfer does not go through.  Mt Gox tech support has not been clear about what I should do to resolve this.

I now have this message on my account, even though my balance of USD is approximatly $5000 USD:

What can I do to successfully transfer USD from Mt Gox to Dwolla in my current situation?  I have no reason to believe my sitaution is different from anyone else who is Level 1 verified at Mt Gox, so perhaps Mt Gox and Dwolla are having difficulties.  If transferring USD from Mt Gox to Dwolla is not possible in my situation, can I somehow move USD from Mt Gox to a bank account using another method?  I prefer to avoid wire transfers as they are expensive and tedious.

Apparently there is no way to know if a person has a pending Dwolla transfer for funds exiting Mt Gox.  The most confusing part about this is the pending status remains pending in Mt Gox for at least a day after Dwolla shows the transaction as having completed.

So I recommend waiting an extra day after Dwolla says the funds have transferred.  Otherwise the transfer will be canceled with no notification from Mt Gox or anyone else, and no reason is given for the transfer cancellation.  In fact, the only indication that the transfer is canceled when this happens is that the balance returns to the pre-transfer balance, and the funds never show up in Dwolla.

To Mt Gox's credit, Mt Gox did respond to my support requests.  However, getting a satisfactory response took almost two weeks of asking combined with plenty of trial and error with the Mt Gox withdraw system.


Are my BTC now BCH?! What happened?! Is my money lost? i don't know if i made a big mistake. I start from the beginning:

I wanted to transfer my BTC (worth 350$) to kraken. Accidently i sent them to a BCH address. You can see it here:
https://blockchain.info/tx/45c843c767b5ff8543adacb900c13fc03289639216c9de0862cb5ee8b41a863b
It got enough confirmations and so I wrote the kraken support whether they could help me to get my btc back. but then i realized that blockchain.info now showed that i would have the amount i sent to kraken now as BCH which was of course much less (50$) . I couldn't find out on which address i got the money because blockchain.info wasn't able to show on which address i got the money, it only showed that i have 50$ in total as BCH.
I read about how to get my money back to BTC, so I transfered my money to my wallet in EXODUS as BCH (blockchain.info only offered this transfer method) to a BCH address. It again got confirmations:
https://blockdozer.com/insight/tx/63be7ff8d38e648c19a1d0a9dc66a87ee64ae1359888ac8404b017d82c607dc4
I now have the 50$ on my BCH address in exodus, but this tool wasn't able to get my money back to BTC. I used this tutorial:
http://support.exodus.io/article/189-ive-sent-bitcoin-cash-to-my-bitcoin-address

is it possible to get the money back to BTC or is my money now forever BCH? Please help me. The one to help me get my money in BTC back, gets a little donation.

If what you're saying is true, this sounds like a big problem.

BTC and BCH are two completely separate blockchains.  It's impossible to send bitcoin from one to the other.

If you send BTC to an address, then it's always going to be an address on the BTC blockchain, not the BCH blockchain.

So if you sent your BTC's to address X, then you sent them to address X on the BTC blockchain.  If you don't own address X on the BTC blockchain, then you no longer have access to those funds.


Why does the hash-rate change so drastically? I've been watching the global estimated hash-rate, as estimated by blockchain.info.

While it is clearly increasing, it also varies around 20% day-to-day.
Yesterday, it was around 4,325,000 TH/s.
Today, it is 5,688,000 TH/s.

Wouldn't miners want to keep their equipment running 24/7?

That is a lot of hashing-power to go on and offline so frequently.
What is causing this?

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


Bitcoin is not sending to correct address While trying to send bitcoin I keep putting the correct address in the 'pay to' section but it keeps sending the bitcoins to the wrong address. While clicking the preview section on electrum the 'output' says a different address, is this why it isn't sending to the right address?

You have a malware version of electrum. Did you update it recently because you were prompted to do so by in app popups? Check your browser history for the download URL. electrum.org or download.electrum.org are the only legit places to get electrum.


How long for an ASIC cluster to generate most private keys So if I understand correctly Bitcoin is based on private keys. These private keys can be generated programmaticaly at a rate of billions per hour (or per ms perhaps with a clever ASIC cluster).  Once a private key has been generated, the Public Key and Address can likewise be generated.

privK = f(x)
pubK  = g(privK)
addr  = h(pubK)

where:

f: Private Key Generator
g: Generates the unique public key from the given private key
h: Generates the unique address from the given public key

So if some clever ASIC designer ran an address generator for the next 140 years, how much of the total address pool would he generate.  I ask, because if an ASIC cracker ever "randomly" generated any address that is already in the block chain, he could claim any of those unspent funds.

At what difficultly level with ASIC key-mining be more profitable then ASIC block-mining?  I think this would be the point at which the bitcoin economy falls apart.

Am I missing something?  Has this been discussed before.  It isn't in any of the "double-spend" studies I've found.

The private key space is really, really big.  Assume your ASIC cluster can do a billion keys per millisecond, and we'll give you your 140 years.  That will result in around 4.5*10^21 keys, or 4*2^70.

Private keys are 256-bit, so at the end of your 140 years you will have covered about 1/1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 of the keyspace.


how to get Received Time of Transaction in validation.cpp bitcoin core for research purpose i needed Transaction hash,size, fee and received time. i have already managed to get hash, size and fee but unable to get time. what to do?

Transactions do not have a time. There is a time that your node received the transaction, but that is not necessarily the time that the transaction was originally broadcast.

To get the time of a transaction being accepted to your node's mempool, you can add debug=mempool to your bitcoin.conf file and then restart Core. Then grep through the debug.log file for any lines of the form "AcceptToMemoryPool: peer=%d: accepted %s (poolsz %u txn, %u kB). Since all lines have a time logged with them, you can get the time that a transaction was accepted to your node's mempool. However this will not include any transactions that are first received in a block.


help problem to synchronize bitcoin wallet core I have about 20 usd trapped in an old version, it is version 0.9.3 of the bitcoin kernel.
I urgently need them to pay a significant debt.
Every time I want to pass them to a stock exchange, the wallet freezes my PC and an error appears to synchronize first someone knows or someone who keeps his wallet synchronized. please, help or any other user that exists in this version, where I can get the bootstrap of utorrent
I try to synchronize it normally it stays stuck a week probe adding nodes and it does not work anymore I do not know what to do
Please help. Bitcoin is all I have left to pay my debts. I lost all my assets.
help I believe in the future with bitcoin I believe in satoshi nakamoto help please

Install the latest version of Bitcoin Core, Bitcoin Core 0.17.0. The wallet format has not changed significantly and the software always maintains compatibility with older wallets, so your wallet should work in 0.17.0. You will still need to wait as there will be a database upgrade that takes place and it will need to finish syncing the blockchain.

0.17.0 can be installed on top of your existing installation. It will not delete any of your data. Your wallet does not need to be moved. However, as always, you should always have a backup of your wallet on hand.

If you cannot wait for that, then you can export the private keys for your addresses and import them into another wallet such as Electrum. You can do this by using the dumpprivkey <address> command in the Debug Console. <address> is the address that you want the private key for.


Is it possible to determine the index of a bip32 address? Let's assume that we only have the bip32 derived btc address, no private or public key. Is it possible to find out its index used for the bip32 generation?

One of the privacy properties of BIP32 is that given two public keys (or even private keys), you cannot even tell whether they were generated from the same xpub or two distinct xpubs. This implies you certainly can't tell their index.


What's the purpose of a maximum block size? Bitcoin has a maximum of 1 MB of transaction data in each block.

Why is this limit present?
When was it added?
Was it intended to be temporary?

Why is this limit present?

1. To Maintain Consensus

There has to be clearly defined rules about which blocks are valid and which are not for the network to agree. Obviously no node will accept a block that is 10 million terabytes, it would be near impossible to download even if it were valid. So where do you set the limit? And what if one node sets their limit differently than other nodes on the network? If this were to happen, the network would no longer be in consensus about which blocks were valid when a block was broadcasted that met some nodes' size limits and did not meet others.

Setting a network limit on the maximum block size ensures that everyone is in agreement about which blocks are valid and which are not, so that consensus is achieved.

2. To Avoid (further) Centralization of Pools

Suppose we remove the 1 MB cap entirely. A large pool says to itself, "I wish I had a larger percentage of the network hashrate so I could make more profit."

Then they realize that since there's no block size limit, they can make a block that is 4 GB large by filling it with nonsense. They and a few other pools have bandwidth large enough to download a block of this size in a reasonable time, but a smaller pool does not. The tiny pool is then stuck trying to download a block that is too large, and continuing to mine on their previous block until they finish downloading the new block. This means the small pool is now wasting their time mining blocks that are likely never to be accepted even if they were solved, since they wouldn't be in the 'longest' chain. Since their hash power is wasted, the original pool operator now has effectively forced smaller pools out of the network, and simultaneously increased their percentage of the network hashrate.

3. To Make Full Nodes Feasible

Essentially, larger blocks means fewer people that can download and verify the chain, which results fewer people willing to run full nodes and store all of the blockchain data.

If there were no block size limit, malicious persons could artificially bloat the block with nonsense and increase the server costs for everyone running a full node, in addition to making it infeasible for people with just home computers to even keep up with the network.

The goal is to find a block size limit with the right tradeoff between resource restrictions (so that someone on their home computer can still run a full node), and functional requirements (being able to process X number of transactions per second). Eventually, transactions will likely be done off-chain using micropayment channels, but no such solution currently exists.

  When was it added?

This commit, from July 2010, shows the actual commit that added the MAX_BLOCK_SIZE parameter. The commit doesn't actually even mention that the max block size was added, strangely enough. I suspect that it was done as part of a release that fixed a critical bug, so Satoshi could be sure that everyone would upgrade.


Is FPGA more cost effective than GPU? Actually is there a list of hardware we could use and their bitcoins/hardware price ratio so I can compute return of investment?

Here is a very detailed list of known mining hardware and it's mining-specific specifications:

https://en.bitcoin.it/wiki/Mining_hardware_comparison


LogPrint() output location? Where can I check the output logs generated from LogPrint() statements in the bitcoind source code.

PS: Please do not confuse this with the LogPrintf() statement, which logs the output into debug.log file.

LogPrint and LogPrintf are very similar.

Mind the definiton: #define LogPrintf(...) LogPrint(NULL, __VA_ARGS__)

LogPrint's will only end up in your debug.log when enabling the corresponding category. Enabling works over the -debug arg.

-debug=mempool,net would output all LogPrint("mempool",...) or LogPrint("net",...) to the debug log, or to stdout if -printtoconsole has been enabled.


Is there a way to predict somehow the required storage for a specific blockchain? I'd like to store a blockchain or two in my computer. Blockchains are pretty heavy (I took over 3hs to download GameCredits blockchain, and is one of the smallest blockchains, I guess). My main fear is to not be able to keep using my pc to store the blockchain (e.g. this applies for others like Litecoin).

Is there a way to track current blockchain storage sizes and predict how much space will I need the next one or two years?

This depends on a number of factors,

1) The amount of transactions

2) How the blockchain will be compressed in the near future.

Now as i'm not quite familiar with the altcoins you stated, I can't go in depth about their compression development, but it would be fairly easy to find out what the MAXIMUM size of the blockchain could be.

Simply calculate every block as if it would be filled up with transactions ( maximum size), and multiply that by the amount of blocks  for/until the next year.


Are received BTCs really mine? when somebody send me BTCs I recognize that by seeing a transaction output is equal to my address. But how can I be sure that it's really me and only me who can spend the output?

I can check, I can unlock the output.
But consider I'm an evil, I sell BTCs to somebody. But I create a multisign-script wich unblocks the transaction output also by my private key and when I receive $ I take my BTCs back.

Is there a protection against this? Do wallets check the output scripts somehow before claiming the balance?

Wallets will only consider outputs to be theirs if it is something that it can spend from. This usually entails checking the output script against the set of scripts that your addresses will be used to generate. So even if you can sign for something, if the script does not match any of the scripts stored in your wallet, then it will not consider that output to be yours.

If the output was a P2SH output, then you would need to have the redeemScript in order to spend from it, so unless the sender shared that with you (and if they did, you could check for any nastiness), your wallet won't even know that you could spend that P2SH output.

Also, there is no "claiming the balance" or claiming of any sort except when you spend an output.


how is litecoin different from bitcoin So far, i only know that litecoin is using another mining algorithm called Scrypt which has some ASIC resistance. Is there any more difference? Or they are completely the same except the mining algorithm

Another key difference is the rate at which new blocks are generated. Bitcoin blocks are created every 10 minutes or so. Litecoin blocks are produced every 2.5 minutes. This has implications in terms of security of the coins against double spending.


How to delete a Copay wallet How to delete a Copay wallet when there is nothing showing on my device to do so. I clicked the plus (+) sign next to Bitcoinc on the home page and got many ways to create wallets, but no way to delete a wallet.

open the wallet which youd like to delete so that you see the balance and transactions
click the settings icon in the top right corner

scroll down to the bottom
last config option is called „delete wallet“


Best options for stabilizing cryptocurrency asset value If I accepted bitcoin as a payment method for my goods or services, what are my options for stabilizing my cryptocurrency assets without instantly converting into fiat currency?

Are fiat currency pegged cryptocurrencies a viable and practical option? Are there better ways to attain such value stability while sticking to decentralized digital methods/assets?

Are fiat currency pegged cryptocurrencies a viable and practical option?

Absolutely not. That kind of pegging means you have to trust the people behind it (who are unregulated), meaning those people are guaranteeing a certain price by buying or selling at that price. Meaning they are easy victims to market manipulation, meaning they are guaranteed to lose money, meaning they will stop guaranteeing the peg, meaning you will be stuck with worthless fake-dollars.

Something like that would only be trustworthy if done by a large bank or central bank where they control the issuance and keep a 1-to-1 backing with "real" Dollars or Euros. And even then insofar you trust that (central) bank to not go bankrupt.

  Are there better ways to attain such value stability while sticking to decentralized digital methods/assets?

I guess you could go short or use options to cover your exchange rate risk, but that means you'd have to put the Bitcoins on some exchange and exchanges are a risk of their own as they often get hacked or go bankrupt etc.

Maybe once the ETF trading kicks off, you could hedge your BTC position by shorting some ETFs. There you're trusting the ETF provider and exchange/regulators I guess, but if they screw up you probably have bigger problems anyway.


Bitcoinj: How to get notified when coins are received I need to know when my local wallet receives coins... but onCoinsReceived is invoked as soon as a transaction on my wallet is visible. How do I get notified when coins have been received and are spendable?

Technically speaking, the coins are spendable immediately; they'll just take longer to spend and cost more in transaction fees. But to know when the coins are confirmed, in onCoinsRecieved:

  If you want to know when such a transaction receives its first confirmation, register a TransactionConfidence event listener using the object retrieved via Transaction.getConfidence(). It's safe to modify the wallet in this callback, for example, by spending the transaction just received.

(Source.)

Use something like this:

public void onCoinsReceived(Wallet wallet,
                            Transaction tx,
                            Coin prevBalance,
                            Coin newBalance) {
    TransactionConfidence confidence = Transaction.getConfidence();
    confidence.addEventListener(new TransactionConfidence.Listener() {
        public void onConfidenceChanged(Transaction tx,
                         TransactionConfidence.Listener.ChangeReason reason) {
            DefaultCoinSelector.isSelectable(transaction) {
                // do something here
            }
        }
    });
}


What do miners do to deserve bitcoin? I know that you get bitcoins by mining, but mining is just lottery, right? What I want to know is what miners do to deserve bitcoins, or the money is just randomly given without requiring someone to work for it?

Miners keep the bitcoin network running

Miners create new bitcoins, but
Bitcoin network adjusts its own mining difficult so that more there are miners less bitcoins each miner receives. This keeps the money supply steady (not inflatory - you simply cannot "print more bitcoins" like you do with fiat currencies as USD).
Mining requires a lot of power, so miners face the rising cost of electricity and how much you need to invest into mining equipment to have your mining operations profitable.
Miners also confirm bitcoin network transactions. When you send someone bitcoins, miners check that your transaction is genuine and not double-spent attempt.

Here is also related question How does a difficulty increase affect a miner's income?


What is the network topology used at the physical layer of the Bitcoin network? I want to know about the performance of the Bitcoin Network under various network topology and for which it performs the best. Also what is the current topology being used?

the performance of the Bitcoin Network under various network topology and for which it performs the best

Bitcoin must be secure, foremost, and if it isn't the 'performance' would be totally irrelevant.  To given an example, in a world without dishonest parties and failing components a minimal spanning tree rooted at each transaction and block source would be very efficient.. but in reality it would be totally useless since any such topology would be highly vulnerable to any malicious or faulty node.

In practice the Bitcoin P2P network creates a random topology with each peer connecting out to 8 listening nodes and each listening node accepting up to 125 connections. Outbound destinations are randomly selected with the constraint that no two connections will be made to the same /16 (IPv4, /32 for IPv6).  User sometimes overlay additional manually configured connections among their own nodes or to other known parties.

Blocks tend to flow along the fastest paths on top of this random topology.


Arbitrage in Bitcoin exchanges How efficient is the bitcoin market? I am confused after comparing buy prices in exchanges operating in different currencies.

For instance, I see that 1 BTC amounts to 347 USD at the moment at one exchange in the US. In an exchange 'Localbitcoins', the lowest buy price I can find is 437 AUD.

Now, at the current exchange rate, 347 USD ~= 393 AUD. It seems to me even with some exchange fees that might be imposed, one can earn arbitrage profit by simply going long in one market and shorting in another. I am sure this is not the case. Am I missing something?

To answer your question let me give you an example of what some people do in order to try and take advantage of market arbitrage with Bitcoin.

As you know, Bitstamp and BTC-E are two of the biggest exchanges that are trading Bitcoin. If you look at the BTC price on BTC-E you can see it is always lower than that of Bitstamp.

If you were to go to Russia (or know somebody in russia that trades bitcoins locally) they go by the BTC-E price there. So, if you find a guy in Russia that can sell you coins at BTC-E price, if you are located in the US you can sell your coins here at Bitstamp's price. Same goes for Huobi (which is in china).

In order for arbitrage to work you need to know people in different countries who can sell bitcoins locally for you at that market price.

So go out there and make those connections whether it be in the trollboxes, forums (bitcointalk) or other means.

Hope I helped.


Transaction with `OP_RETURN` to a particular address How do I formulate a transaction with OP_RETURN to a particular address using the bitcoinj library?

SendRequest req;
Transaction transaction = new Transaction(Main.getNetWorkParameters());
transaction.addOutput(Coin.ZERO, ScriptBuilder.createOpReturnScript(
    "thanks for the coins".toString().getBytes()));

// add a receiving address for this transaction
req = SendRequest.forTx(transaction);

You can't make an OP_RETURN-based output out to any specific address, since the OP_RETURN opcode marks an output as invalid (thus provably unspendable). In fact, an OP_RETURN-based output will not even enter the UTXO.

A zero amount is okay (and even encouraged) for OP_RETURN.  The OP_RETURN is paid for via the fee; putting a non-zero amount in OP_RETURN would just destroy bitcoins, so the miners do not profit from mining it.

However, you can create a transaction that has multiple output scripts: One can be a standard P2PKH of the form OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG while the other can be an output with OP_RETURN. Just call addOutput twice, once with an address and the amount desired, and a second time with parameters for an OP_RETURN script (and a non-zero output value, I would presume).


How is the transactionId generated? In the blockchain, every transaction has a transactionId where does this come from?

TXID is the double sha256 hash of the signed transaction, used to uniquely identify a particular transaction.
When you create/sign a transaction that hash will be generated with your transaction.


Zerocoin vs. Zerocash ? are they the same ? Or two different protocols? what is the main difference between Zerocoin vs. Zerocash ?  are they the same ? Or two different protocols ? If they are two different protocols, what are similarities ?

Zerocoin is a proposed extension on Bitcoin to make Bitcoin more private. Zerocoin only hides the origin of a payment, the destination and amounts are still public.

Zerocash is a further extension of the zerocoin protocol which hides the destination and amounts. Zerocash transactions are more compact than zerocoin transactions.

Zcash is an implementation of the zerocash protocol onto a new altcoin. Both Zerocoin and Zerocash were intended for extensions to Bitcoin (they would require a fork). However zcash is just an altcoin (it began as a software fork of Bitcoin) with the zerocash protocol on top.


How to create and load new wallet using multi-wallet feature (bitcoin-core v0.15.0) I want to use bitcoin-core for many users and with the new version it became possible. I have no idea how to use this new feature. Please help me!

Multiwallet are currently only available through the RPC interface for programmers and command-line users.ref

Multi-wallet is enabled by using more than one -wallet argument when starting Bitcoin, either on the command line or in the Bitcoin config file.

Multi-wallet support


I need help on how to change the disk to run my bitcoin core wallet Long time ago I transferred my wallet on My Passport an external hard disk. I have not opened bitcoin core for over 8 months. I opened it 2 days ago, the dialog box opened, which normally doesn’t and I was asked to choose where to open bitcoin core. I chose the external disk.Something went wrong. Finally I understood that there was a problem with the disk and it was not mounting on my macbook pro. I fixed that problem. However bitcoin core continues to open at the default file on my mac which is empty.  My wallet shows no transactions and it is updating since 11 years back.
I need to be able to open the dialog box at start of bitcoin core to choose again the correct disk but I don’t know how to do that. My knowledge is very limited

Close core, find your bitcoin.conf file, and change the datadir setting. e.g.

# [core]
# Specify a non-default location to store blockchain and other data.
datadir=/opt/yourdisk

Then re-open core. It should pick up where your wallet last synced to on the external drive.


In Elliptic Curve Addition, where does the second point come from? I have a limited understanding of elliptic curve terminology, but if you can bear with me I'd like to ask this question anyway. I'll start with what I understand...

You do EC multiplication with the private key to get the public key.
EC Multiplication is just EC Addition (done over and over again).
EC Multiplication can be achieved through a combination of EC Addition and EC Double (for speed).

From the perspective of the graph:

EC Double = draw a tangent on your current point, take the intersect, invert it.
EC Addition = draw a line through your current point and a second point, take the intersect, invert it.

EC Double I understand -- you have your current point and you draw a tangent -- no need for any extra points on the curve to get the intersect.

But in EC Addition, if I have my current point, where does the second point on the curve come from when attempting to draw a line across the graph to find the next intersect?

In elliptic curve cryptography, participants need to agree on certain parameters. For example, you need to agree on which curve to use.

One of those parameters is called the base point generator, it is a point on the curve.

  You do EC multiplication with the private key to get the public key

Correct, PubKey = PrivKey*G = G+G+G+... PrivKey times where G is the agreed-upon generator. Does this clarify things?

You can see its definition in SEC 2 in section 2.7.1.


How does ImportPrivateKey get the Address if I don't explicitly send it? Suppose I just used vanitygen to create this key:

Pattern: 1a
Address: e1aMGYXuGpUwDGH9gz3ZBs8UH746nRdEk6
Privkey: 5KhCszBi22hEZZixPEQkLAMtUVkxbGaxBFsH7a9iefqrxHmSXgH

All I had to do to import this key was import the Privkey. Nothing with "Address' was needed with ImportPrivKey.

I'd like to know the technical details on how the Address can be extracted when all that is known is the private key.

I've read this and this question, but still haven't found the secret sauce on how an Address is calculated or found in binary format given only a private key. How is the Address extracted from the private key alone?

My intent is to learn this process and implement it in C#. Note that I already know the Base58Check format, and there is no mention of the private key in any wiki I've seen regarding that.

You ought to ask this question on CryptoSE, as the problem is not Bitcoin-specific. I've even done that for you.

In short:

  The public key is QA=dAG where G is the base point on the curve defined in the publicly agreed upon parameters.

And you can find the Bitcoin curve (secp256k1) parameters in the wiki.


How to set TXID in rawtransaction? My question is if I can set the TXID in a raw transaction and send it after it with 'sendrawtransaction' (from the qt console)?

If not, is there a way to do it? And if there is a way, does it means I can send to the bitcoin network the same transaction id over and over again even if the transaction itself is different each time (different inputs or outputs).

You cannot choose the TXID of your transaction, really. It is calculated by SHA256d hashing the serialized transaction bytes. If you did happen to get miraculously lucky enough to get a transaction with the same hash as a different transaction, then it would be refused by the network for attempting to overwrite a transaction.

There used to be a bug in bitcoin that coinbase transactions could have the same TXID sometimes. This was fixed by BIP34.


Recovering a wallet from a lost device onto newly bought device Please, in case my device get lost, broken, or abundoned, what can I do to recover my lost wallet address with my bitcoins onto my new device?

If you are using a wallet, based upon hierarchical deterministic (HD) standards (e.g. BIPs: 32/39/44/49), be sure you have already saved your BIP 39 seed words (typically 12, 18 or 24 words from a list of 2048 words that must be in saved in a specific order and spelled correctly) and any associated passphrase(s) in one or more secure locations. The passphrases are of your choosing and and can include special characters.

The BIP 39 seed words are needed to reconfigure your replacement software or hardware.  A BIP 39 passphrase provides and additional level of security if someone gains unauthorized visual access to your seed words. However, don't store your BIP 39 seed words and BIP 39 passphrases in the same location.

Not of aware of any software-based HD wallet GUIs that are supporting BIP 39 passphrases, seems to be mostly a feature the hardware vendors are supporting.

If you did not take these precautions in advance before your device was lost/stolen/broken, you are SOL.


How do I explore the current commitment transaction for a channel? I would like to see how a commitment transaction for a given payment channel looks like (without actually closing the channels and transmitting the transaction to the network :)
I assume that all of the building blocks (such as balances) are somewhere in channel.db. Is there a way to quickly get this information out and construct the commitment transaction out of it without much coding?

Answer by Oliver Gugger (guggero):

You can use the dumpchannels command of chantools:
https://github.com/guggero/chantools#dumpchannels That will show you
the commitment transaction inputs and outputs for both parties.
Remember to shut down lnd first, otherwise chantools will block on
trying to open the channel DB.


Tax implications of bitcoin income I have a friend in the USA who can send me bitcoins. The idea is to sell the bitcoins in India and wire him back the money from the sales proceeds in India.

What are the tax implications on the sale of bitcoins in India?
What reason for remittance should be stated on the wire transfer?

I believe I can sell the bitcoins through Indian bitcoin companies like unicoin, which transfer the money into your account once the bitcoin is sold.

The idea is to sell the bitcoins in India and wire him back the money from the
  sales proceeds in India.

Translate: The idea is that he commits tax fraud because he will not report the sale as income. Which is about the only way this makes sense, given that instead of selling them in an Exchange anywhere worldwide he goes through the trouble of sending them to SOMEONE who will sell them (manually?) and then change the funds to USD and send those over (because somehow I doubt he will have an account in whatever currency the use in India in his US bank).

Result: Possibly jail time if they find out. Like all tax fraud. At least it gets ugly. And unless the amounts are small - I am not sure you or he are aware, but "wiring the funds" leaves a bit trace for the government to ask where the money comes from.

Simple like that.

If he gets income from the sale of bitcoin, that is income. Which is taxable or not as any other income. From which he can deduct the cost of getting the bitcoin (if he mined them for example).


Bitcoins never showed up in wallet. Yet sender says transfer complete I've used a site called bit trade australia to buy and send bitcoins to a wallet on blockchain.info. Successfully three times this month, trusted too.

Yet this time (after receiving an email from BTA, "your coins have been transferred" like normal) there is zero proof on blockchain.info of this happening. My wallet hasn't changed. No bitcoins. It's been 13 hours since that email. And I assure you, this has never happend to me before.

Any ideas? Thank you, Regards.

This should be easy to prove or disprove using any block chain explorer.  Ask the sender to send you the transaction hash for the transaction where the coins were supposedly sent to you.  Then, do a search for this transaction hash using any block chain explorer (such as blockchain.info).  If a transaction is found for the hash, with your bitcoin address and the amount that you expected as one of the outputs, then this confirms that the sender did indeed make the payment to you.  Otherwise, the sender can't support their claim.


Is transaction malleability an issue when receiving payments? Assume I'm using the original client to receive payments. Is the following scenario possible?

My wallet gets notified of unconfirmed transaction with id 12 in which one of the outputs is an address that belongs to me.

Someone changes the id of the transaction to 13 and relays it to the miner who finds the next block.

My wallet gets notified of block that contains transaction with id 13 in which one of the outputs is an address that belongs to me.

Transaction with id 13 gets 6 confirmations but transaction with 12 gets stuck in my wallet as an unconfirmed transaction.

If I'm showing my customers their unconfirmed transactions, then the customer will see a confirmed transaction with id 13 and an unconfirmed transaction with id 12. Is that correct? Or will QT automatically delete the first transaction?

What can I do to prevent this?

If you wait for a confirmed transaction you will be fine. The common mistake people/large exchanges make is when they constructed "withdraw" transactions from unconfirmed "deposit" transactions. Those invalidate quickly due to double spend rules. The Satoshi client does this as a last resort when picking unspent outputs.

The code that deals with it is here, removeConflicts is defined here.


Why doesn't the block time influence time the amount of time needed for a transaction to be confirmed? Litecoin has faster blocks, but needs more confirms.

I understand this is because of possible reorgs, but how come it also needs 10 minutes for confirms even though the blocks are faster?

If a block is found super fast, like 1 minute, then you have your first confirmation in 1 minute. The 10 minutes is average of time between block confirmation. In fact, since the network in increasing in speed, we are more or less confirming block at 9 minutes each.

In some case, we are out of luck and a single block can take 30 minutes.

That said, the number of confirmation required to accept a payment is totally as the discretion of the merchant. You can accept with 0 confirmation, 1 or 2. Some go more than that but that should be for very big amount (like 100,000$ +).

Another alt coin can confirmed in 10 sec, that's irrelevant because 10 confirmations in that blockchain is still less secure than a single confirmation from the bitcoin network because finding a block in the bitcoin network is harder than finding 10 block in an alt-coin.


Version field in transactions, blocks, etc A field labelled "version" appears in many contexts regarding the Bitcoin protocol. Sometimes one uses the current version of the Bitcoin client (version message), sometimes 1 is used (block, tx), why is that? What are the rules in numbering those versions? For the context that uses 1s, would other values validate, or would they be rejected by the client?

The format of messages occasionally needs to change. This is done in a backward-compatible way by exchanging versions in version messages and communicating in the "language" of the client with the lowest version. Through this mechanism, clients running version 0.1 should still be able to talk to the latest clients.

Blocks and transactions are special. When these formats are updated, nodes can't modify old messages to use the new format because this breaks the crypto. So version 2 nodes have to store and communicate both version 1 and version 2 blocks, and special version numbers are necessary to distinguish them.

Block/transaction versions other than 1 are not accepted.

In version messages, use the same version as the client version that you're trying to be compatible with.


What is the difference between transactioninput.getFromAddress() and transactioninput.getConnectedOutput().getAddressFromP2SH(networkparameter))? I was expecting that, in the case when getFromAddress() returns an address,
transactioninput.getConnectedOutput().getAddressFromP2SH(networkparameter)) should return the same address. But, sometimes  transactioninput.getConnectedOutput() returns a null value, despite getFromAddress() returning a proper address. What is the reason?

If these two methods are different, how could I return the value of field "addr" of the object "prev_out" of the items in the array "input" in the JSON object returned without the use of blockchain.info-api? (for example, for this https://blockchain.info/address/1LoD9DeUeCfnZueSVPzFaFkfFcx8mG1Add?format=json).

After going through bitcoinj API documentation regarding the methods you have asked about, the way you make the second method work, you are supposed to connect the input transaction to get the output from that particular tx. You can go through the link I have given above and report back if required.


Claiming BTG from Electrum wallet issue I had some BTC in my electrum wallet prior to the BTG fork - sent it there approx 7 days before it happened. I am trying on a MAC using Bluestacks emulator to run coinomi wallet - all works fine but when I try to sweep my keys into coinomi I get 'There are no funds in that private key' message.

I have found the address that def contains the funds in electrum and exported that private key into coinomi.I have tried bit address.org to try all the different key formats and all give the same message - NO FUNDS

Whats weirding me out is when I check on block explorer it puts the transaction of when I originally sent my btc to electrum in a higher block number than when the fork happened - even tho I sent it at least 7 days before the fork happened?! How can this be? Obviously that may account for the zero funds problem but the thing is the funds were def there way before the fork date - I have transaction details to prove this. Any help gratefully received ...

May be your transaction was stuck in the mempool and only got confirmed after the fork happened .
There is nothing you can do now


Valid block on top of invalid block I have been researching a little on the concept of blockchain for some time now. If there is any corrupted block then others won't try to build blocks on top of it. But suppose for some time if it remains as the longest chain and if someone adds a block on top of it, and after a while it becomes shorter.. then what happens to the block added on top of the corrupted block?

Thanks in advance. Please also suggest relevant websites or material from which I can learn more about it.
Thanks again!

Any blocks built on top of an invalid block are also invalid. If a chain with more work overtakes the one with the invalid block on it, the block on top is still invalid and is ignored by all other nodes.


Can someone outline the full pros/cons of the various Replace-By-Fee proposals? I've done some research myself, but I find that I'm either biased myself, or my sources themselves are biased. Does anyone have an objective analysis of the various proposals and their advantages/disadvantages? First-seen-safe, child-pays-for-parent, full-RBF are the ones I know about, but would happily read more proposals if they're out there.

All three proposals attempt to solve the same problem, the issue of stuck transactions.

Due to the behavior of Bitcoin Core with respect to double spends (they are silently dropped, and not relayed), it is impossible to spend outputs that you've used in an existing transaction. Typically this is a good thing, but there are a few cases where a user may have created a malformed transaction (for example, accidentally setting 0 fees) that isn't acceptable or mine-able for various reasons, and it's desirable for them to be able to reissue a fixed transaction.

This is exacerbated by the undefined memory pool behavior of nodes with respect to expiring out old transactions, and not having a clear rule as to when it's safe to attempt another spend.

Child-Pays-For-Parent

The Child-Pays-For-Parent approach allows the fees of a transaction's child (the transaction that spends the outputs of the stuck transaction) to also pay for the parent transaction. This allows a merchant to spend the "broken" transaction they received like any other transaction, and the system should return to a consistent state.

The benefit of Child-Pays-For-Parent is that it solves the problem in a way that doesn't fundamentally change the mechanics for how a transaction is selected and kept (most notably, the first-seen memory pool behavior). In my opinion, this makes this solution the most intuitive.

However, the difficulty with Child-Pays-For-Parent is in the implementation. There are some required changes to the propagation of transactions that are required to make this work properly (since just broadcasting a valid child will cause other nodes to consider the transaction as orphaned, without the context of the parent).

Replace-By-Fee

Replace-by-fee attempts to address the problem by changing the fundamental rule for accepting and keeping transactions, the "first-seen" rule.

In this system, a transaction with higher fees can spend already spent inputs (that have not yet been confirmed in a block), and will replace that transaction in the memory pool.

The benefit of this system is that it changes the fundamental transaction selection rule but does not require changes to the way fees are calculated.

The downside is that this represents a significant shift in terms of expected memory pool behavior. In my opinion, this makes transactions less predictable; the first-seen rule is straightforward, predictable, and easy to understand and implement. Additionally, it breaks any functionality that relies on the predictability of unconfirmed transactions by making it trivial to issue double spends. (Double spending a first seen transaction requires a combination of moderate network and computing resources, some decent know-how, and some luck. Double spending in a replace-by-fee world requires none of the above.)

First-Seen-Safe Replace-By-Fee

FSS RBF attempts to make RBF compatible with first-seen memory pool implementations by requiring that the outputs from the original transaction be maintained by subsequent respends.

The benefits are that in some situations, first-seen behavior can be relied upon. A transaction sending x BTC to a merchant cannot revoke that.

In practice, however, this protection is pretty weak. It trivially breaks transactions that spend other unconfirmed transactions by allowing the first transaction in the chain to be replaced, invalidating future outputs. This means that the burden for double spending an unconfirmed transaction becomes only slightly higher than in standard replace-by-fee.

It does, theoretically, allow one to accept an unconfirmed transaction that spends a confirmed output with similar protections as the typical first-seen behavior.

It is impossible to talk about this without touching on the politics, though. The reason this is so contentious is that it involves a political change that breaks many systems that rely on first-seen memory pool behavior. The proponents of the change believe that since unconfirmed transactions are not subject to the same cryptographic protections as confirmed transactions, they should be pushed out of the ecosystem and tools that facilitate this should be adopted. The people who oppose this change believe that unconfirmed transactions represent an acceptable risk as with everything in Bitcoin (remember, Bitcoin requires a majority of honest miners, for example), and that breaking something many people rely on unnecessarily is a net negative.


My lnd node hasn't routed any payments (1 week + since initial setup) So I finally setup a lightning node (lnd) and according to "feereport" I haven't routed any payments (no fees collected).  I have used my node to send payments (yalls, satoshis.place, blockstream...) and also received payments (from my own Eclair wallet) and that works fine (multi hop routes).  I also tried lowering the fees my node charges, still no luck.  I also (gave away) pushed some remote balance to some channels to make sure I had some out going routes.  Any ideas?  What is the expected average number of routed payments over some time interval (I know this depends but I no idea what other people are seeing)?

$ lncli listchannels | grep balance
            "local_balance": "99082",
            "remote_balance": "100000",
            "unsettled_balance": "0",
            "local_balance": "299082",
            "remote_balance": "0",
            "unsettled_balance": "0",
            "local_balance": "295312",
            "remote_balance": "34",
            "unsettled_balance": "0",
            "local_balance": "149082",
            "remote_balance": "150000",
            "unsettled_balance": "0",
            "local_balance": "145347",
            "remote_balance": "150000",
            "unsettled_balance": "0",
            "local_balance": "83940",
            "remote_balance": "261405",
            "unsettled_balance": "0",
            "local_balance": "99180",
            "remote_balance": "0",
            "unsettled_balance": "0",

$ lncli feereport | grep sum
    "day_fee_sum": "0",
    "week_fee_sum": "0",
    "month_fee_sum": "0"

$ lncli getnetworkinfo
{
    "graph_diameter": 0,
    "avg_out_degree": 5.5954773869346734,
    "max_out_degree": 509,
    "num_nodes": 1592,
    "num_channels": 8908,
    "total_network_capacity": "9685778073",
    "avg_channel_size": 1087312.311742254,
    "min_channel_size": "1050",
    "max_channel_size": "16777216"
}

I haven't received any fee payments. (...) Any ideas? Or is this expected?

Running a LN node does not guarantee you will collect fees. Fees are collected iff you route a payment for another user, so at this time it appears that no users have routed a payment through your node.

Factors that could affect this: which nodes you are connected to, the liquidity of your channels, the online availability of your node, etc.

Routing fees offer an interesting incentive, but remember the network is still young and not widely utilized. Right now, payments for routing transactions may be rare, but in the future... ?

  I also pushed some remote balance to some channels

Worth noting, this is equivalent to making a payment to the node you are connecting to. When the channel is closed, that remote node will be the recipient of the remote balance. So I hope you have made those payments for a reason, otherwise you have given away some of your BTC.


How is a node selected to run Smart Contract in Ethereum A node that runs a smart contract will be paid with GAS. How is this node selected? I guess this node should be trustworthy. Or multiple nodes are running the same smart contract just to make sure somehow?

A node that runs a smart contract will be paid with GAS.

This is incorrect. The miner who mines the block containing the transaction interacting with a contract is the one who is paid with ETH, which is gas consumed * gas price.

  How is this node selected?

Through the mining process.

  Or multiple nodes are running the same smart contract just to make sure somehow?

Even after the block is mined, every node on the network that receives it will independently validate the contract execution. If the miner lies about the outcome of the execution, the block will be deemed invalid.


Can I restore a blockchain.info wallet into a electrum wallet? If I have a blockchain.info wallet, I got the 12 words. Can I use these 12 words to restore into a new Electrum wallet?

After that, will the blockchain wallet still operational? Say, can it still receive funds or spend fund? If fund is received/spent, will it appear in the new Electrum wallet?

On the other hand, if I send fund / receive fund in the new Electrum wallet, will those transaction appear in the blockchain.info wallet?

In Electrum:

Click File > New/Restore, enter a name and click Next.
Select Standard Wallet and then Next.
Select I already have a seed and then Next.
Enter the 12 words seed you got from blockchain.info (from Settings > Security > Backup phrase.
Click the "Options" button and enable BIP39.
Accept the default derivation key and click Next.
In the next step, set a wallet password and enable encryption.

Now you have your wallet imported.

  if I send fund / receive fund in the new Electrum wallet, will those transaction appear in the blockchain.info wallet?

Yes, they will.


How can I use the USB block erupters to mine Namecoin? Since the block erupter is useless to mine for Bitcoin now. From what I understand the only other two options would be is to mine Namecoin or Devcoin since they use SHA256 encryption. But how can I mine these? Would cgminer work? or is there another app that i need to use?

Also are Namecoin and Devcoin the only ones that use SHA256?

In theory, you can mine any altcoin that uses double-SHA256 hashing algorithm as a proof of work with any ASIC device. The process should be similar to mining Bitcoin - you would most likely want to connect to a mining pool or solo mine in a configuration analogous to mining Bitcoin.

Also note that Namecoin supports merged mining, meaning that if you mine for a Bitcoin block through a pool that supports merged mining, your proof of work can still be used to create Namecoin blocks. This effectively makes you mine for both currencies with the same amount of hashing power, increasing your expected return rate by the amount of other coin mined (so instead of mining just Namecoin, you would be getting some extra BTC kickback as well for your submitted shares).


Can more transactions be processed within a centralized bitcoin exchanges than in the rest of the bitcoin network? I've heard that centralized exchanges are more efficient, and that a centralized bitcoin system as a whole would allow for more transactions to be processed. Does that mean that within centralized bitcoin exchanges more transactions can be processed per second?

I have heard this point being made in discussion before, and I think you're missing a part of it:

The Bitcoin blockchain processes transactions in a trustless decentralized manner. This is due to the ledger of the payment system not being under control of any sole entity. This is an extremely inefficient and expensive process.

A centralized service can perform Bitcoin denominated payments much quicker, because they control their ledger: They update their own records to reduce their liability to one user and increase their liability to another. Nothing goes on the blockchain, it is all just in their own books. Since there is no other party directly involved, they can do millions of transactions between users on their own system without breaking in sweat. The disadvantage is obviously that the user has to trust the centralized service to pay back the liability at a future date.


Who are the owner of bitfunder.com and btc trading corp? Do we know who he is? How do we knows he won't run away with our money?

Currently, you can buy their shares both on BitFunder and BTC Trading Corp.

Okay cool. But can I trust those 2 companies? Bitfunder and BTC Trading Corp? What about if they run with my money. Who are they? Do we know their real name?

This is not distributed stock exchange. Some guys control it and that some guys may be assholes.

With BTCT.CO each asset issuer receives a full list of all shareholders holdings every twelve hours.  So if the site did go down the damage would be limited.  Also you should only keep just enough coins for your orders on the site and not use it to store coins long term.


How to correctly sign a transaction? Error: 64: scriptsig-not-pushonly I sent a transaction with far too low fee and it's stuck in mempool.

I'm trying to do a double-spend with a higher fee without any luck.

My wallet: 15Zz2KP5iA7oVarmtmBvb9ZHUmQaSFL9M8

Unconfirmed transaction: 0b0177688485922027b336c24e765fdea8dc03d2ad79f87019705f2ca9fb970a

I'm using coinb.in to create, sign and broadcast transaction but I get Error: 64: scriptsig-not-pushonly.

The transaction seems to be valid when I verify it.

Can anyone point my in the right direction for this?

You are building an incorrect scriptSig.

Notice that, if you check the scriptSig of every input from the transaction you provided, it looks like:

76a914321d6a0077ddadfcce3d68d302d866ce81405eba88ac

Which has the following structure:

OP_DUP OP_HASH160 <20-byte-hash> OP_EQUALVERIFY OP_CHECKSIG

However, this is not what is expected to be found in a scriptSig, but what will be expected in the scriptPubKey field.

What you have to do is provide the correct script in the scriptSig field of each input of the transaction, that would correspond to the signature of the transaction if you are creating a P2PKH transaction, or the script that matches with the script-hash from the UTXO you are spending, in case you are building a P2SH transaction.


Digital signature why it can't be used by other public key Digital signature is made from private key of sender A.if only public key of B can use it then public key is available to everybody then why can anyone catch that digital signature and use it to his own public key ? Sorry for my bad english my native language is not english

To spend bitcoin, you must know the private key of the address it sits in. The private key signs the transaction itself, so if someone else attempted to 'copy this signature onto a new transaction', it would not be a valid signature on that new transaction.

Importantly, there is a difference between a private key and a digital signature made by that private key. Knowing the digital signature does not allow you to figure out the private key.

A simplified example:

PrivKey A signs transaction B, which makes a digital signature B*. This transaction is broadcast to the network.
Someone takes digital signature B*, and adds it to transaction C (stealing the bitcoin).
The network can tell that transaction C has an invalid signature, and reject it. This happens because the signature was made for transaction B. If PrivKey A signed transaction C, it would make digital signature C*. So in order to steal the coins, the attacker must know PrivKey A, and use it to create digital signature C*; knowing B* will not help them do this.

For more info, read more about public-key cryptography.


Offline payments with Android wallet This Android application for Bitcoin wallet, claims offline payment as a feature. It says,

  When you're offline, you can still pay via Bluetooth.

A payment is concluded only when the transaction is broadcast to the network and confirmations are made for the transaction in a certain block as mined. So, how does one "pay" via Bluetooth?

You can simply send the signed transaction to the other entity (e.g. via Bluetooth) who then can send it to the Bitcoin network. The transaction doesn't need to be sent to the Bitcoin network by you, it just needs to somehow get to a miner to be included in a block. Even if you print it out, send someone a letter via snail mail, they type it in, and send it to the Bitcoin network, it'll still work.


What incentive do miners have to respect the Replace-By-Fee flag? Couldn't a miner treat all transactions in their mempool as if they had Replace-By-Fee enabled? After all they could always claim that they hadn't seen the original transaction.

Disrespecting it would require them modifying their software, which has ongoing administrative costs.

Otherwise, there any incentive within the system to behave otherwise. Willfully not taking income maximizing transactions isn't an incentive compatible behavior.


How to buy everything with bitcoins Is there a place, where i can buy everything in other countries and pay with bitcoins?

I know there is a place somewhere.

Snapcard is a buying service that uses a bookmarklet to populate a shopping cart on Snapcard's site using product details from the e-commerce site you want to buy from.   Coindesk's writeup on the service gives more info.

[Edited: This comment originally was for BitSpend.net which is now defunct.]


Unexpected coinbasevalue in regtest mode Running a simple local setup with 3 nodes in regtest mode.  Getblocktemplate tells me the coinbasevalue = 25 bitcoins but the block height is only 202.  Shouldn't the coinbasevalue = 50 bitcoins?

In regtest mode, the block reward halves every 150 blocks instead of every 210000 blocks. See the consensus.nSubsidyHalvingInterval settings in chainparams.cpp.


Definition of blockchain height What is the definition of blockchain height and how is it found/calculated.

I get the idea it is related to the SO answer by Gary Rowe, but the word "height" is not mentioned. Yet I see references to "blockchain height" in many places.

The height of a block is the number of blocks in the chain between it and the genesis block.  (So the genesis block has height 0.)

The height of the block chain is usually taken to be the height of the highest block, in the chain with greatest total difficulty; i.e. the length of the chain minus one.


Why was 21 million picked as the number of bitcoins to be created? Why did Satoshi pick 21 million as the number of bitcoins to be created? What is the significance of that number?

Here's a mathematical explanation:

Calculate the number of blocks per 4 year cycle:

6 blocks per hour
* 24 hours per day
* 365 days per year
* 4 years per cycle
= 210,240
~= 210,000

Sum all the block reward sizes:

50 + 25 + 12.5 + 6.25 + 3.125 + ... = 100

Multiply the two:

210,000 * 100 = 21 million.

Economically, because the currency is effectively infinitely divisible, then the precise amount doesn't matter, as long as the limit remains fixed.


How to buy and sell ARK coin? I can see ARK is the only coin in top 20 list (except USDT) of coinmarketcap which is positive. How can I buy this coin?

You can buy ARK for example on bittrex.com in exchange for bitcoins.
That means that to buy it, you'll have to purchase Bitcoin first and deposit it there.