In theory, this attacker owns enough computing power that they could execute a "double spend" attack. They could spend coins in one place, allow the coins to enter the block chain as normal until the required confirmations are met, then fire up their 51% of the miners to craft a fraudulent fork of the block chain in which those coins were never spent, allowing them to re-spend the coins. This could theoretically be repeated for as long as the attacker maintained control of 51% or more of the hashrate.

Realistically, 51% is only the point at which this becomes possible not the point at which it becomes likely or easy. An attacker would probably need something like 65% to actually execute such an attack.

What can an attacker with 51% of hash power do?


If a node X receives first the blockchain from A, and it approves it, when it receives the blockchain from B, it simply reject it ?

It will keep the block locally as an alternate chain, but not immediately discard it.

  If a node X receives first then blockchain from A, and then the B's blockchain in which also a node C has put another correct block (so is longer then A's blockchain), does the node X reject A's blockchain (applying the longest chain rule) and use the other blockchain as the correct one ?

Correct, once any one chain has accumulated more difficulty, the minor chain is discarded.

Note that here accumulated difficulty is a measure of how much hashpower was spent to produce the amount of work required for that chain. This is generally in sync with the chain being longer (a chain with more blocks will have more difficult in most cases), but it is not a guarantee.

  Due to latency a miner node may not have the complete list of transactions, so it may start to build an incorrect block (for example some transaction misses). If the miner recognize is building an incorrect block (because for example, it received other transactions while it was building the block) it simply throws away the block and start building another one?

This is really a separate question, but the answer is mostly "ASICs are fast, it doesn't matter". Miners are constantly producing update block templates with altered timestamps, secondary nonces in the coinbase transaction, and transaction lists. These are then passed to the actual machines doing the mining, which can burn through the nonce space in the header in a matter of seconds. A miner will simply wait for the old block template to be non-viable and create a new one with the better transactions.

Of course, if a miner does find a valid block on a slightly out of date template, they will broadcast that block - it makes no sense to give up a guaranteed 12.5 BTC for the possibility of slightly higher fees in a block you might not find before another miner.


As can be read in BOLT 11 of the lightning protocol spec

  the f field allows on-chain fallback; however, this may not make sense for tiny or time-sensitive payments

it is one of the fields encoded into a BOLT 11 invoice

  f (9): data_length variable, depending on version. Fallback on-chain address: for Bitcoin, this starts with a 5-bit version and contains a witness program or P2PKH or P2SH address.

In case a payment can't be routed it is possible to pay this invoice with an onchain bitcoin transaction instead of opening a new channel. This obviously can't be done for sub dust payments and even for tiny payments above the dust limit this might not be economically viable.


To have a useful payment system, if I have some asset the system supports, I have to be able to send it to Alice if she is a user of that system. And I also have to be able to send it to Bob if he is a user of that system. But if I can do both of these things, the system stops being useful. So, for bitcoin, somehow sending bitcoins to Alice must prevent me from sending them to Bob and vice versa.

Traditionally, this would be accomplished by a central authority. For example, my bank can process checks in the order it receives them, approving them if I have a sufficient balance and deducting that amount from my balance. The bank can prevent me from sending the same money in two places. But bitcoin has no central authority.

Bitcoin's solution has several pieces.

First, it groups transactions into blocks. Second, it chains blocks into a blockchain.

Third, it has rules for what is or is not a valid blockchain. For example, a chain that includes two conflicting transactions is not valid. So, in my example, either a blockchain can include my payment to Alice or my payment to Bob, but not both. This works because all transaction and state information is public, so nobody would ever accept any blockchain with conflicting transactions unless they chose to foolishly harm themselves.

But we still have one problem left -- how do we ever get everyone to agree on which blockchain is valid if there's one that includes the payment to Alice and one that includes the payment to Bob? That's where proof of work (mining) comes in.

It consists of two steps:

1) To add a block to the blockchain, you must do a very large amount of computational work.

2) You will be rewarded with bitcoins for doing this large amount of work, but only if the blockchain that contains the block you added becomes the one everyone agrees on.

And lastly, one more rule: We agree on that valid blockchain that has required the most computing power to generate.

Under reasonable conditions, this assures that everyone will eventually agree which of the two transactions is valid. Miners are incentivized to build on the longest, valid block chain they know of, because that gives them the best chance of being rewarded. Thus longer chains will tend to get longer and shorter chains will tend to be ignored. Eventually, one chain will be so much longer than every other chain that we everyone is mining on top of it and nobody is mining on top of the other and there is no chance the shorter chain will ever be longer.

Once that happens, and the longer chain contains one of my two transactions sufficiently deep in the chain, we can all agree which way my bitcoins go. And no central authority is needed.


Is it possible to add a transaction input to a transaction in the mempool?

Short answer: no, this is impossible.

Longer answer: some transactions allow changing the inputs used (ANYONECANPAY inputs). It is also possible to have inputs which do not sign the outputs being created (SIGHASH_NONE). However, a transaction where all inputs are of this type, are worthless, as anyone could change the outputs to credit themselves instead.

Typically, when normal SIGHaSH_ALL signatures are used, pretty much everything of a transaction is signed (which input coins are used (and in which order), what output scripts are created, what value to assign to them, ... Everything except the signatures themselves really (which is what causes involuntary malleability).

If an input signature is marked ANYONECANPAY, it does not sign the other input coins being used. This means you can create a transaction meaning "i want x and y to be paid, but i don't care who provides the funds to do so". If all signatures in a transactioon are ANYONECANPAY, you could add extra inputs (or remove existing inputs. Just increasing the input funds would just burn them as fee, though.

On the other side, there is SIGHASH_NONE, which makes a signature not sign the transaction's outputs. This may seem to allow what you want to, but in case every signature is SIGHASH_NONE, the treansaction is completely unsafe, as anyone could replace where the outputs go.

So, even if a combination of those would in theory allow what you suggest, it is not true for typical tramsactions, amd would in fact be completely unsafe.


What is the safest way to rename my altcoin from "bitcoin" to "myaltcoin" in the source code?

To find string with in the files (including binary files), issue the command:

grep -rnw '/home/user/' -e 'bitcoin'

It will return every single entry for the word bitcoin in your code.

But I do not think that's the best way to get what you have in mind, what about "if" you have a CONST or a variable in the code called const BITCOIN or bitcoin ?

Your approach would be catastrophic for the base code and probably it will not compile. Just do not do that, instead try to find all the points with the command above, once you find all the entries, change it manually (read the code before you do that) and not using find and replace option from your code editor.


What's "non HD split wallet"? What's "pre split keypool"?

Bitcoin Core uses something called HD chain split for generating private keys. This means that it derives private keys using two different derivation paths to distinguish between addresses that the wallet gives out and change addresses (also known as internal addresses). This split also means that there are two different keypools.

However the initial implementation of HD wallets in Bitcoin Core did not use HD chain split hence such wallets are non HD split wallets.

Furthermore, non HD split wallets and non-HD wallets had only one keypool from which all addresses (including change) were retrieved from. When upgrading such wallets, they need to be upgraded to a specific version that allows upgrading the unified keypool to the split keypool. This results in those wallets having a third keypool called the pre-split keypool. This keypool contains all of the keys from the original unified keypool and lets that run out of keys before the split keypool is used.

  What's "disabled private key"?

Wallets can be created such that they will not have any private keys and are not allowed to contain private keys. Such wallets thus have private keys disabled. (this string should really say "with private keys disabled" not "with disabled private keys").


Bitcoin block maturity and block reward rules

Split chains can be seen as separate coins, except that a transaction with inputs valid in both chains (maybe a coinbase before the fork) would be valid in both. In that miner's chain, the miner can spend his coinbase. The rest of the nodes will see the transaction as invalid and ignore it, as his block isn't part of the main chain. If the miner wants, the miner can advertise his chain as a "new coin", referencing the first block that is not common, and nodes who would be built to recognize his chain would allow the miner to spend the coinbase transaction.

In the second scenario, the same thing happens. What he does is well-received in his chain, but ignored in the main chain (the chain with the largest proof-of-work)


Is it possible to find additional key pairs resulting in the same address that I already control?

It's not possible, practically speaking.
A P2PKH Bitcoin address is computed as RIPEMD160(SHA256(publickey)). Since public keys are unique, to find another keypair that results in the same address, you're essentially trying to find a hash collision on SHA256 or RIPEMD160, which is extremely difficult.
The most "efficient" way to find such a collision would be to iterate over the entire private key space.


My Niece is turning 4 and would like to give her BTC. What is the best way to give/store long-term?

As a gift to a child, I'd recommend something more tangible than paper, such as a Casascius coin or gold-plated bar. Yeah, it's more than a fraction of a bitcoin, but the load-it-yourself option might be more affordable.


is there any viable rust implementation of Bitcoin

Andrew Poelstra has a rust Bitcoin library: https://github.com/apoelstra/rust-bitcoin. I don't know how complete it is though, so use at your own risk.

There's also the parity bitcoin wallet: https://github.com/paritytech/parity-bitcoin which is also written in rust.


169.69 days you will get solo reward (keep in mind that it is not guranted, so it could take more days), I`m not sure how much it is now, e.g. in bitcoins now you get 25BTC for success solo mining. Earning table, that you see, definitly talking about mining pool.


If I have made a BTC transaction after the fork and haven't claimed my BCH before, have I lost them?

Bitcoin Cash is an altcoin; things that you do on Bitcoin Cash will not effect your Bitcoin and vice versa.

With Bitcoin Core, you can install it's Bitcoin Cash analogue, Bitcoin ABC. From there you import your Bitcoin Core wallet into Bitcoin ABC by copying it to the Bitcoin ABC datadir. Then you can spend your Bitcoin Cash normally.


Does the alternative stack make Script Turing complete?

You may be interested in a post I wrote. I wrote a Turing Machine (by utilizing the two stacks) and made a test transaction.

Basically if we assume that our program will halt, then it requires only a finite number of instructions, which is supported by the Bitcoin script. Unfortunately the Bitcoin script VM only allows a limited number of operations to be executed so only very short programs can be written in practice.


Bitcoin is not sending to correct 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.


What is the mathematics behind the maximum number of 21 million bitcoins that can be generated?

every detail of bitcoin can be changed by the developer by editing the source code. 21million was satoshi nakamotos design decision. afaik this number is not directly contained in the source-code. every ~10minutes a new block will be created. every 210000 (~every 4 years) blocks will the block reward be halved. so in many years (after many halvings) miner will not anymore really earn blockrewards because the blockrewards are approximately 0btc. => then virtually no new bitcoins will be created. that is why the entire amount of bitcoin is limited. (but the miner still earn the transaction-fees).


I changed the .Net Framework 4.5.1 to 4.5.2 and I updated again the NBitcoin after that the problem solved.


Unconfirmed bitcoin transaction for more than 3 days

There is no chance you can stop transaction which already sent. You can only wait and yes.. your bitcoin will return into your wallet if transaction failed.

Failed can cause many things, one of that things is take too long to confirm and you can't send or asking people to help you without cost nothing :)


Its mostly the heat...if it is running quite hot, which most laptops tend to do, it IS damaging the CPU. Try a good cooling mat if you really want to do it.
Also, using 2 of 4 cores WILL run cooler than using all 4. But I guess I could repeat everyone else' advice: "Mining is no longer profitable on the CPU, don't do it." (Even though I do a little bit.)


Well, that post is quite old. Variable-difficulty shares weren't a thing then.

That said, I'm pretty sure the fix is as follows: When a share is submitted, the post says you should assign to it a score of 1/D. Instead, assign to it a score of d/D, where d is the share's difficulty. That's it.

Also, you should have a look at https://bitcoil.co.il/pool_analysis.pdf, specifically the "unit-PPLNS" part of section 3.3. It's slightly more complicated, but IIRC it has the advantage that it is still hopping-proof when the block reward can change (which is much more relevant now than it was back then).

As for changes in the network difficulty - the score is based on the historical difficulty, and the current difficulty is not used at all in the calculation.

If this seems odd, consider that if the current network difficulty is higher, than each new share has less chance to become a block and reward historical shares, but on the other hand, have a lower score and thus more shares are needed until the historical share is out of the window. So it evens out.


I solved this issue,

Actually it was issue related confliction because I have setup more than one currency in single server Like (Bitcoin, litecoin & zcash)

For that, I have taken care rpcport & change port for "zmq" in config file and then it is working fine.

Config:

server=1
whitelist=127.0.0.1
txindex=1
addressindex=1
timestampindex=1
spentindex=1
zmqpubrawtx=tcp://127.0.0.1:28334
zmqpubhashblock=tcp://127.0.0.1:28334
rpcport=8334
rpcallowip=127.0.0.1
rpcuser=YANNISCOOLUSER
rpcpassword=YANNPASSISCOOL
uacomment=bitcore
listen=0


What happens to the blockchain after the miner wins the puzzle?

My problem is, I don't understand the process after this. I want to know what miners will do after solving the puzzle?

After miner A found the nonce, he broadcasts his "solution" to the network (miner B and miner C for example) and starts to build a new block and try to find the new nonce.

Miner B and miner C both validate the "solution". If it's a correct block, they add it to their local blockchain and broadcast it to others (Miner D, E, F...) and right after that, they do also build a new block and try to find the new nonce for that one.


I can see that you are talking about the mining process and the SHA hashing algorithm. From what I understand that function needs to be:

Scalable - one needs to be able to precisely adjust how much work needs to be put in for a desired amount. This is done through the use of Target/Difficulty and uniformity of the output of the SHA function (it produces more or less a smooth distribution of random numbers).
The function needs to be quick to verify and always verify the same way. Moreover, the function needs to be always verifiable and not rely on third party - generally, you need to process a lot of blocks in order to catch up to the network, so there is no point in it taking too long. Also, there is no ambiguity in determining whether a given hash fulfils the preconditions as would happen with some functions ("is this protean optimally folded?"). Morever, floating point calculations are not too good as different computers could have different rounding errors. As for being always verifiable and not relying on third party - Bitcoin is a decentralised currency and thus it cannot remain that way should it be dependant on some company or website operating it. Every peer needs to be able to independently verify the solution with minimal amount of software and hardware. Scientific simulations can rarely fulfil this goal.
The function needs to work one way and have no cryptographic weaknesses - generally, you don't want people to reach the result quicker than is fair. Hashing functions are the types of functions where one needs to perform the calculations in order to receive the results and can't get anywhere knowing the solution. SHA-256 is secure and for now doesn't have any weaknesses.
The output of the function should depend on every part of the input. Moreover, changing even one byte in the input should change the output completely. - Generally, the function needs to be very sensitive to tempering. Any change on the input must change the output so as to prevent malicious manipulation of data. Similarly to ensure that the function is scalable and nobody can "tinker" with the data a bit to produce another valid result from a previous solution, the output must appear to be pseudo random and any change of the input must change the entire output.


What happens if an exchange's order book has only Market Orders

This situation would not exist. True market orders (buy or sell) cannot just "hang" around. If they are not executed immediately against existing limit orders, then they should be cancelled. The case in which they would not be executed would be if there are no orders on the other side. In which case it depends on how the system handles the orders but it should either say it can't fill it and never place the order to begin with.


How can I turn a private key into a wallet?

A bitcoin address is not the same as a wallet.  If you have the private key for the address, you can import the key into either Bitcoin-Qt or a lightweight wallet such as MultiBit.  You will then be able to send and receive coins using this address.

To import a private key into Bitcoin-Qt, read this

To import a private key into MultiBit, read this


https://blockchain.info/pools

You can browse bitcoin wiki:

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

As Egor notice, here a litecoin.info:

http://litecoin.info/Mining_Pool_Comparison

Partially outdated, http://pastehtml.com/view/awb1vg03r.html

Also, there is thousand of sites, like this:

http://www.coinindex.org
http://howtobitcoin.info
http://www.tblob.org
etc...

Probably, nowhere you can find a full list of alt-coins pools, because this part of net changes so fast.

See,

https://www.google.com/search?q=BOTPOOL
https://www.google.com/search?q=MPOS+by+TheSerapher <-- from the second page start pools, 6 pages, about 20 pools.


How come a company partners with Bitcoin?

I was checking out the Bitcoin website

There is no such thing. There are various communities and privately-run sites, but they are all distinct, and none are authoritative.

  I believe that Bitcoin is not a private company

That's correct.

  it's owned by its community

That's a matter of perspective. I would say it's not owned by anyone - not even any specific community.

  How is it possible for a company to partner with Bitcoin ?

They're not partnering with Bitcoin. They're partnering with bitcoin.com, a privately-owned and controversial website.


The randomness of vanitygen is secure enough?

If two people running vanitygen 1abcdefg What is the chance that both of the person will get the same public key & private key?

If a billion supercomputers each tried a billion keys per second for a billion years, the odds of a key collision would still be less than one in a billion.

  I hope that the answer is less than 0.0000001.

Yes, much less.

  But for this vanigygen need to use random algorithm (not simple while(true){ i++; test()}).

It just needs a random starting place. You can increment from there if you want to. The number of possible starting places has 77 digits when expressed in decimal notation.


Any documentation available that would help developing a Bitcoin Client?

The bitcoin.it wiki contains a Protocol documentation section with information about network messages mostly. You can also use other pages of this wiki, but be sure to check it's up to date.

Ultimately, the documentation you are looking for, as mentionned by the commenters, is Bitcoin Core's source code (unfortunately) ; if you want to create a full node implementation, you'll have to be bug for bug compatible.

Finally, to test your progress, you can use https://github.com/TheBlueMatt/test-scripts to see how your implementation handles some edge cases, as well as run it on testnet.


Bitcoin Core recovery with Just Passphrase and Wallet ID

I assume that you mean a Bitcoin address with "wallet ID". Bitcoin addresses are public information and do not give any special access. The actual keys of a Bitcoin Core wallet are stored in the wallet.dat. The password is only used to decrypt the keys from the wallet.dat. Knowing an address and the password is not enough. Without a copy of the actual keys, your wallet is not recoverable.


Can government agencies trace if I mine bitcoin?

Data linking is the only way there is any question of privacy. When you transact with Bitcoin, the goods or service you order will need to have a delivery address. Also, if you send your BTC to any merchant, service or, an exchange that has your personal data there will be a presumption that the sender was the owner of the inputs used and is the person that they have records for. There is no known way around this.

Apart from that question which exists for all cryptocurrencies, you may wish to consider implementing some of the configuration for privacy from here for your mining setup. Sound advice is, do not break the law.


How to answer to whether Bitcoin is a Ponzi scheme?

The Scenario is confused, because it assumes that there is only one side to a trade.
The scenario assumes that the money goes "into the Bitcoin economy" when people buy bitcoins. This is confusing, because it sounds as if there were only one side to the trade. You will find that the scenario doesn’t imply Bitcoin to be a Ponzi scheme, once you take a closer look at how trades happen.
People own bitcoins:
When Alice pays Bob $100 to buy one bitcoin, Bob is the new owner of the $100 and Alice is the new owner of one bitcoin. The money didn’t "go into the Bitcoin economy" – it went to Bob.
What changed was the Total Dollar Value or Purchasing Power of Bitcoin: People see that someone was willing to pay $100 for one bitcoin.
So, in your scenario that should rather be: There are currently 10 bitcoins in the system, and the spot price is $100. This gives Bitcoin a Total Dollar Value, or Total Purchasing Power of $1000.
There is no problem the next day either: When the spot-price increases to $200 per bitcoin, that means that one person, say Alice, was willing to sell for $200, while another, say Carol, was willing to pay $200 for a bitcoin. Apparently, Carol thought that bitcoin was undervalued at $100 and was willing to go higher with her bid. And who would blame Alice for selling her coin for a 100% markup in one day?
Now as described in your scenario, the other nine owners of bitcoins offer their bitcoins as well for $200 each. The question then is, whether there are enough buyers to support the price at $200. This boils down to a balancing of supply and demand: Perhaps, Carol wanted only one bitcoin. Then there will be nine offers to sell a bitcoin each at $200, but no buyers. In order to cash out, the sellers have to find someone that wants to buy though. There is no "bitcoin economy" that stores the value and pays them out when they want to exit their positions.
What's a Ponzi scheme?
In a Ponzi scheme, investors are enticed by promise of fixed returns. The operator manages all funds and uses investments by later investors to pay off earlier investors. As no value is generated, the operator must constantly attract more investors to keep the scheme running.
In contrast, Bitcoin doesn’t pay any returns or dividends, nor is there a central operator that could make any such promises. Each individual manages their own funds. Bitcoin's exchange rate is established by supply and demand. Much like a commodity, its current spot-price is that of the last trade between individuals.

Related reading:

Is Bitcoin a scam? further elaborates on the differences between various fraud schemes, high-risk investments, commodities, and currencies.
How do buy and sell orders work? explores how Bitcoin's exchange rate is established.
What happens to cash used to buy bitcoins? looks at the role of Bitcoin exchanges in people's buying and selling of Bitcoin.


What does the RPC call "getmemoryinfo" show?

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


Yes, there exist two possibilities to release your stuck transactions using Fee Bumping:

This page gives exact instructions on how to increase the fee on a transaction that is currently stuck in order to make it unstuck. This is always done by creating a new transaction that will either spend the coins sent by the stuck transaction (called child-pays-for-parent, or CPFP) or replace the stuck transaction (called replace-by-fee, or RBF).

Edit: I recommend consulting Johoe's Mempool Statistics next time before you broadcast a new transaction.


Set fee limit for Lightning Close Channel

As pointed out the funder of the channel is currently responsible for paying the fees and deciding them. BOLT 02 specifies the update_fee message to be used to signal the fee rate. There it says:

The node responsible for paying the Bitcoin fee SHOULD send update_fee to ensure the current fee rate is sufficient (by a significant margin) for timely processing of the commitment transaction. The node not responsible for paying the Bitcoin fee: MUST NOT send update_fee. A receiving node: if the update_fee is too low for timely processing, OR is unreasonably large: SHOULD fail the channel.

In the case of a collaborative close there is a an algorithm that is part of the closing negotiations:
The closing_signed message contains the follwoing fields
type: 39 (closing_signed)
data:
[channel_id:channel_id]
[u64:fee_satoshis]
[signature:signature]

I quote again:

The sending node: MUST set fee_satoshis less than or equal to the base fee of the final commitment transaction, as calculated in BOLT #3. [...] if the receiver agrees with the fee: SHOULD reply with a closing_signed with the same fee_satoshis value. otherwise: MUST propose a value "strictly between" the received fee_satoshis and its previously-sent fee_satoshis. [...]
The "strictly between" requirement ensures that forward progress is made, even if only by a single satoshi at a time.


What are transactions from and to exchanges wallets?

Its not really possible to tell for sure, but if somehow you found a list of some deposit addresses for an exchange, then yes its likely that transactions sent TO the exchange were sent so that those users could exchange the bitcoin for another currency. And likewise, transactions FROM an exchange might be withdrawals from users' accounts. But each exchange might manage the funds sent differently, some might be transfers to cold wallets, or payments to service providers / employees for example, there could be many things you haven't considered.


How long for Bitcoin core to initially synchronise?

how long will [Bitcoin core] take to sync?

How long it takes to sync depends on your computer and your network connection.

It may take a week.

Bitcoin core will give you an estimate - but that assumes the computer is never turned off, never sleeps, hibernates or drops into a low-power mode and never runs other CPU-intensive tasks while core is syncing.

  is there a way to get the bitcoin out incase

in case of what?

You can export the private key and then import it into a lightweight (SPV) wallet which will allow you to spend your BTC without needing to download and verify the whole blockchain first.

See

https://bitcoin.stackexchange.com/a/78758/13866 which covers debug console commands

listreceivedbyaddress 0 true
dumpprivkey <address>

How can I export the private key for an address from the satoshi client?
List of wallets showing which support SPV


Are virus signatures a serious threat to the bitcoin network?

The pastebin you linked describes the harm caused as follows:

  What'll happen is that that will trigger the anti-virus program for
  every bitcoin client user that has an anti-virus program installed
  (and this won't go away ever.. you can't clean the database). Those
  virus signatures are harmless in their own, but they are something
  that anti-virus program use to recognize viruses. The anti-virus
  programs will think that the local bitcoin database is infected.

If a transaction manages to trigger an anti-virus alert for someone, I'd blame it on the anti-virus program being badly designed.

Yes it will probably be annoying for a bunch of users but Bitcoin already has a strict enough rule set to make this hard to happen. 20 bytes isn't a lot, for most computers, a single standard word character is 1 byte. If a virus program goes around looking for suspicious data that is 20 bytes long they will run into a lot of false positives. And I doubt that there is any seriously dangerous virus that is under 20 bytes in size.

TL;DR

It's very hard to pull off anything harmful, you will need to develop a virus that only takes up <20 bytes and can destroy a system. Otherwise anti-virus programs would show you a warning that you can possibly close/ignore, it's up to the anti-virus programs to be smart enough to discern.


Problems accessing BTCE api after certificate change?

I have got two JREs in my windows 7 machine. I have executed both below listed commands and I am able to connect it btce.

keytool -import -keystore "C:/Program Files/Java/jdk1.8.0_05/jre/lib/security/cacerts" -storepass "changeit" -noprompt -alias "BTCE" -file C:/Users/Dell/Downloads/btceSERVER.cert

keytool -import -keystore "C:/Program Files/Java/jre8/lib/security/cacerts" -storepass "changeit" -noprompt -alias "BTCE" -file C:/Users/Dell/Downloads/btceSERVER.cert

Points to note:

I have mentioned full path for the keystore
I have not used trustcacerts

Awaiting response

Two ways I can think of to download certificate.
First(using linux):
echo -n | openssl s_client -connect btc-e.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/btceSERVERNAME.cert

Second(using firefox):
1. Visit h t t p s:/ / btc-e.com/
2. Click on the small Lock icon present in front of https in the url section. This will bring up a small popup
3. Click "More information" button, this will bring up a popup window titled as "Page info",
4. Click "View certificate", this will bring up certificate viewer
5. In certificate viewer, select "Details" tab
6. Click export button, which will bring up file save dialogue to save the cert.


How to confirm that a bitcoin transaction is confirmed and success?

Bitcoin transactions do not have a failure state, unlike ethereum. They are either mined, or they are not.

In general, a transaction should be considered final when:

It is included in a block, let's say with block number n
There are 5 blocks after this (current height >= n+5)

You don't really even need to loop every second. You can use the zmq feature of Bitcoin Core, or one of the numerous websocket APIs, or just poll for new blocks every 10 minutes. Once you see your tx in a block, you have one confirmation. Then, you simply need to check the next blocks to make sure they build upon the block with your tx.


How should I send my bitcoins to my wallet from coinbase

If you only have 10 euros in Bitcoin, it is currently not worth sending to your wallet. The current Bitcoin transaction fees average around $50 USD today. You can see the chart here. This is because there is an enormous amount of Bitcoin transaction, but only a few transactions can fit in the 1mb block.

If you had much more money, you should definitely send them in a wallet you own the private keys. Some exchanges like Mt. Gox closed and millions worth of Bitcoins were lost. There's a lot of fire right now in the Bitcoin community, so owning your coins is a good start.


Any of a kind Bitcoin wallet need to share private key on the internet-connected machine.

This is false. You can keep private keys on a completely offline computer, but still submit transactions to the network. To do this:

Create a wallet that will store your private keys on an offline computer. This wallet will be used to sign txs
Create a wallet on an internet-connected computer. This wallet will be used to generate (unsigned) txs, and submit (signed) txs to the network
Generate an unsigned transaction on the internet-connected computer
Transfer the unsigned transaction to the offline computer (eg. via a fresh USB drive).
Sign the tx using your offline wallet
Transfer the signed transaction back to your internet connected device, and broadcast the transaction to the network.

This way, your private keys are kept offline, so an attacker would need physical access to the machine in order to steal your funds.

Note that hardware wallets follow a similar scheme: the private keys are isolated within the device so that the computer you plug your hardware wallet into cannot access them directly.

A less secure but still good solution is mobile wallets, seeing as a mobile OS will generally have a smaller attack surface than a desktop OS (eg compare iOS to Windows). Generally, there is a smaller chance of having a phone infected with malware than your desktop machine. For best practises, you could run a full node and point your mobile wallet at it, but I would generally not advise storing large amounts of cryptocurrency on a phone.


Help please recovering a wallet from a 17 word mnemonic phrase and other info

Do you remember where you created the wallet?
I assume it was a legacy wallet on blockchain.info, if so you can recover your ID and password here https://blockchain.info/wallet/forgot-password .


I know people tend to get obsessed about the confirmation time, but the important factors are the number of nodes and the speed at which any given transaction is seen by the network as a whole.

I believe this is under three seconds for a transaction to be seen by the entire bitcoin network.

Why is this measure important? Because this is the so-called "window of opportunity" for a double-spend. In fact as soon as the transaction hits the network, the race is on, so we are actually talking about milliseconds.

Satoshi provided an answer to this somewhere (I can't find it right now) which explains what the real issue is.

A large number of nodes means that any double spend attack, has to work harder to get the transaction seen first, and hence included in a block first. But again this is totally arbitrary because nobody can predict the winner of the block (who gets to choose which transactions to include).

So this "fastest confirmation" metric is a red herring.


What is the order in which UTXOs are sorted in a block?

Addition to Bolton's answer: Transactions in a block can be in any order, given that if a transaction spends another's output, the parent transaction must come before the child tx and the coinbase transaction (collecting the block reward) comes first.


When miners are working on their block, does everybody's block have the same transactions in them?

Miners will naturally be inclined to include those transactions in their blocks that give them high transaction fees (though exceptions exist), because apart from the block reward from coinbase transaction, those are the only incentives for miners. So, whatever transactions have reached a miner through the network, her choices will be restricted among those transactions. At a particular time instance, different miners most likely have different snapshots of transactions available to them. So, the answer is no (with very very high probability).


Is it safe to run bitcoind on another server

If you have SSH access on both machines you can simply create an SSH tunnel from machine B to A and forward port 8332 through it. That way the behavior is just like it would be if bitcoind were installed on both machines, the traffic between the two machines is encrypted with SSH and bitcoind does only have to listen to the loopback interface and would not be accessible from the network.


Litecoin-cli validates segwit bitcoin address as valid litecoin address

No, this is working as intended. When litecoin first introduced segwit, they also used 3.... adresses. They were (are) generated the same way ( Using the same P2SH as bitcoin.).

These now start with an M.., but because of backwards compatibility these 3... adresses are still valid. (but no longer used.)

I guess this issue covers what you are facing pretty well - https://github.com/litecoin-project/litecoin/issues/433


Where can I find statistics on average feerates at different times of day and days of the week?

As someone keenly interested in that sort of stuff, I'm not aware of a website that shows the weekly and daily patterns in feerates.
The closest thing I could find was this chart that compares the feerate ranges of blocks on Bitcoin Optech Dashboard.
I was unable to find a graph that matches your description more closely across dashboard.bitcoinops.org, statoshi.info, transactionfee.info, bitinfocharts.com, blockchair.com, and txstats.com. You could perhaps build something like that on Coinmetrics.io, but the feerate is not one of the metrics they share publicly. Some of these projects may welcome your suggestion.
If you do build it, please add an answer here to point it out when you have! I would definitely want to see it!


First of all, let me clarify that this website just collects the sentiment of miners—it is in no way binding for the actual activation for which code isn't even proposed.
Assuming that Taproot will use BIP8 as its activation mechanism, there is only one state in which miners are required to signal. Mining is mandatory in the last difficulty epoch of the signaling period, but only if the activation proposal is using lockinontimeout: true.
In any other circumstances, all miners can freely choose whether to signal readiness. Also, it is not expected that the block version will get updated with Taproot, blocks would only be different in that they include transactions using taproot.
Once the proposal is active, miners are free to include transactions that spend v1 segwit outputs, but they are not required to do so. As always, miners may freely select which valid transactions to include in their blocks. A miner may decide not to include Taproot transactions without any repercussions. Presumably, the next miner that supports Taproot would include such transactions if they are among the transactions with the highest feerates.
For example, a miner that didn't update their fullnode since the Taproot code got added would consider Taproot transactions non-standard. Since nodes don't include non-standard transactions in block templates, the miner would still be able to build blocks that are valid to the network, simply by not including Taproot transactions.


running live and test node simultaneously

You can run both at the same time:

$ bitcoind -daemon
$ bitcoind -testnet -daemon

Then you can issue commands on either using:

$ bitcoin-cli <commmand>

or

$ bitcoin-cli -testnet <command>

The blockchains are stored in ./bitcoin/blocks for mainnet and /bitcoin/testnet3/blocks for testnet.

Update: With the bitcoin.conf updated in the question remove rpcport=8332, so it doesn't try to use the same port for mainnet and testnet RPC.

Update 2: With 0.17 release, it is now possible for a single configuration file to set different options for different networks in bitcoin.conf:

main.uacomment=bitcoin
test.uacomment=bitcoin-testnet
regtest.uacomment=regtest

For more information, see the 0.17.0 Release Notes


Are multibit HD (or other no web wallet) and Blockchain.info wallet words compatible?

The wallet Blockchain.info offers to users is not an deterministic wallet, as such the mnemonic they present is not compatible with any other piece of software other than their own. If you have your wallet.aes.json file downloaded it can be opened with a very old version of MultiBit Classic, other than that you will have to wait for the centralized wallet to be available again before you can send money.


How do i get max and circulating supply of a Blockchain?

Well, you need to download your desired blockchain and find all of the UTXOs and their value, add all of them together find the total circulating supply. I would personally do it using python.


Why is the data format for block height in coinbase scriptSigs inconsistent for heights 1-16?

The actual encodings of the numbers 1-16 are 0x51, 0x52, etc. This is because the numbers 1-16 are special in Bitcoin script and have their own explicit opcodes. OP_1 is 0x51, OP_2 is 0x52, etc. The correct way to write numbers with their own opcodes is to use those opcodes instead of using a pushdata opcode followed by the number.


Will ripple automagically use the ordebook when finding a path?

There is a missing piece in your picture, the trade offers selling BTC/Bitstamp for XRP. The values you give won't work currently since the best offers in the order book are in the range of 8300 XRP/BTC or 830 XRP for the 0.1 BTC you mention.

If the values you give were adjusted or if we assumed an alternate reality where 10 XRP could buy 0.1 BTC/Bitstamp then the following should (see note at bottom*) be what a user would see if they were to go to the client's "send" page (sorry no picture):

Recipient: C
Recipient will receive: 0.1 BTC
You can send:
    10.000 XRP  <Send XRP button>
    1.00 USD    <Send USD button>

Since User B has no BTC there is no BTC option given. If the user selects "Send XRP" then a payment path such as the following would be used:

User B 10.000 XRP
   --> trade offer for 10XRP to 0.1 BTC/Bitstamp
   --> Bitstamp
   --> User C

User B's balance goes down by 10.000 XRP. The unknown person making the trade offer has their balance go up by 10 XRP and down by 0.1 BTC/Bitstamp. Bitstamp's balances are adjusted so that 0.1 BTC less is "owed" to the trader and 0.1 BTC more is "owed" to User C. User C's balance goes up by 0.1 BTC/Bitstamp.

If instead User A selects "Send USD" then a payment path such as the following would be used:

User B 1.00 USD/A
    --> User A's offer giving 10.000 XRP for 1.00 USD
    [then as above]
   --> trade offer for 10XRP to 0.1 BTC/Bitstamp
   --> Bitstamp
   --> User C

User B's balance goes down by 1.00 USD/A. User A's balance goes up by 1.00 USD/A (they owe one less USD to User B) and User A's balance goes down by 10.000 XRP. Then it's as in the previous case: The unknown person making the trade offer has their balance go up by 10 XRP and down by 0.1 BTC/Bitstamp. Bitstamp's balances are adjusted so that 0.1 BTC less is "owed" to the trader and 0.1 BTC more is "owed" to User C. User C's balance goes up by 0.1 BTC/Bitstamp.

In both cases User C considers the payment from User A complete by ending up with a larger balance with Bitstamp. All of these balance changes happen atomically within a single transaction, either all the balances change or none of them do (e.g. if the transaction fails because a required trade offer is consumed or canceled before this transaction can be processed). User B never ends up holding something they didn't want to hold (e.g. BTC/Bitstamp).

Note that path finding in Ripple is not exhaustive, not all valid paths are found. As David Schwartz says above, pathfinding is an area they are constantly improving. If the option to pay with USD as shown above is not presented currently then it's likely it will be as the pathfinding is improved.


Urgently need advise for unconfirmed transaction


If you just want to check if your wallet/password is working, you can do so using the bigcoin-qt debug window. To open the window, select "Help" from the menu bar, and then "Debug Window". Once you open the debug window, you can type this:

walletpassphrase "your walletpassphrase here" 600

to unlock your wallet. If the command completes without an error, you wallet has been decrypted successfully. If you get an error, your wallet couldn't be decrypted. From that same console, you can type this:

listaddressgroupings

to see the addresses stored in the wallet. When you are finished, type this:

walletlock

to lock the wallet. You do not need to be on the internet to do this, so you could do it from your live cd. I also believe you can do this without having downloaded the block chain, but I haven't tested it so I'm not 100% sure. Additionally, the commands available from the debug window are listed here if there are other things you would like to check.


How should I do if I want to run a full node in GUI?

Yes. Bitcoin Core is always a full node software and does not have any SPV components within it. Running any part of Bitcoin Core (bitcoind or bitcoin-qt) means that you are running a full node.


Meaning of confirmation within n blocks?

Not sure where you are quoting that statement from. Seems to be a promise on something that is probabilistic.

1.) From that statement yes the first confirmation with happen within 48 blocks.

In practice, it depends on the current mempool size (how many transactions are waiting to be confirmed) and the transaction fee (miners are incentivised to choose the transactions with the highest fee) relative to the other transactions in the mempool. I would not go as far as to say with fee of x you will receive a confirmation in y time because at the time of adding the transaction to the mempool you might see that your transaction should be in the mempool (due to your fee) but every 10 minutes there are a block load of new transaction that are added to the mempool with higher fees.

2.) Yes, after the first confirmation the next confirmations will tick at an average of 10 minutes each (slight correction from your statement, not every 10 minutes but rather 10 minutes on average).

To elaborate, if there is x hash power in the network AND the network sets the difficulty to find a block then probability dictates 1 block every 10 minutes. However, if there is additional computing power that joins the next then the time (on average) to find the next block will be <10 minutes... at least until the network readjusts the mining difficulty.


Lightning network: Open a channel with a peer that is not a full node?

Whether you run a full node or a lightweight node is a first layer question. It is a question about how you keep track about what happens on the blockchain. And even though this is important for you, the Lightning nodes that are communicating with your Lightning node do actually not care about it and in fact they don't even (have to) know about your Bitcoin node.

So do not confuse Layer 1 (Bitcoin / Blockchain) with Layer 2 (off-chain payments / Lightning). On Layer 2 there are no "full nodes".

What we do have on Layer 2 however, are channels that you announce to the network and private channels (that you don't announce).
So if Alice and Bob have a private channel, they can use it to pay each other, but they will not route any third party payments through it.

Yes, the channels that you will see on any Lightning network graph are only announced ones, they private cannot be seen. This is also the reason for why it is difficult to estimate the real size of the Lightning Network.


Why doesn't changing MAX_MONEY change the maximum number of coins?

Despite the name, the MAX_MONEY constant is not used in determining the total maximum number of coins.  Rather, it is used only for a sanity check: any transaction output larger than MAX_MONEY is automatically rejected as invalid.  They simply set this new constant equal to the eventual maximum number of Bitcoins, since that is a value that certainly should never be exceeded by any output.  This was part of the fix to an early bug where only the sum of all outputs for a transaction was checked, leading to the possibility that the addition might overflow.

The block subsidy (aka reward) is computed in the
GetBlockSubsidy function in validation.cpp.

CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
    int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
    // Force block reward to zero when right shift is undefined.
    if (halvings >= 64)
        return 0;

    CAmount nSubsidy = 50 * COIN;
    // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
    nSubsidy >>= halvings;
    return nSubsidy;
}

Here you can see the initial block reward of 50 coins is hard coded.  The halving interval consensusParams.nSubsidyHalvingInterval is set in chainparams.cpp in the constructors for CMainParams, CTestNetParams and CRegTestParams respectively (the respective default values are 210000, 210000, 150).  Note that MAX_MONEY does not appear.

So in order to change your coin's total money supply, you'll need to do a little math to decide what the initial block reward and halving interval should be, and modify them accordingly.  If you want the reward adjusted by any other mechanism than "continue halving until the reward reaches zero", then you'll have to rewrite the
GetBlockSubsidy function.  (And you should also change MAX_MONEY to an appropriate value that should never be exceeded by any transaction output.)


Trying to import a private key into bitcoind

Without anything in the log, it's difficult to day. But here are a few suggestions what could try to find out the cause of the error:

Do you have write permission on the wallet.dat file in your .bitcoin directory?
Is the wallet locked with a passphrase? Then you need to unlock it (would probably give another error message but worth asking).
Did you set the disablewallet option either in command line or configuration file?
Is your wallet possibly locked due to a -reindex operation?


What actually happens in a basic DAO in ethereum?

That's a pretty general contract: As long as more than two thirds of the shareholders agree, you can change every single storage entry. This enables to add or remove shareholders, change the program itself (as it's part of the storage as well), and store arbitrary additional data.

To extend the description in the white paper a little, here's how a voting could look like:

1) One shareholder proposes a change of some storage bytes using the second transaction type ([1,k,L,v0,v1...vn]). k is a kind of ID to refer to this suggestion later, L is the first storage address that will be changed and v0, v1, ... is the data to store. As you can see, arbitrary changes of storage entries are allowed.

2) Now, the other shareholders can vote to implement the change with the first transaction type ([0,k], where k refers to the previously registered proposal). The number of votes in favor of this proposal is stored at a storage location given by the hash of k.

3) As soon as enough votes have been received, a shareholder can send the third transaction type to apply proposal k, i.e. write the data to the storage.


Why does my implementation of hex to Base58check produce different results than the example?

Each hexadecimal character has four bits of information. Two hex characters contains eight bits of information, so they form a byte.

For each byte in front of the address, a 1 should be put. Since two characters form a byte:

int i=0;
while(concat.charAt(i) == '0' && concat.charAt(i + 1) == '0'){
    i += 2;
    output.append(code_string.charAt(0));
}

BTW, it would look better if it was a for loop:

for (int i = 0; concat.charAt(i++) == '0' && concat.charAt(i++) == '0';) {
    output.append(code_string.charAt(0));
}

Also, probably you've made a mistake while copying the code: You haven't declared a variable named concat. It's input.

Last note: If you're going to use this encoding for things other than Bitcoin addresses (which have checksum), make sure that i will always be smaller than concat.length()


Collecting some of the publicly available information that I found.

Martti Malmi (aka Sirius), a student of Aalto University in Finland, was one of the core developers early on in the project. Satoshi attributed some of the new features of version 0.2 to him here and he was the one making the first commits to the Sourceforge repository back in August 2009. He was removed from the list of project developers on bitcoin.org in June 2011.

As Andrew points out in his answer, both bitcoin.org and bitcointalk.org is owned by Martti. He is the administrator of the bitcointalk.org forums, still active there, and could most likely be contacted using the PM feature on the forums. Both Martti and Gavin Andresen (lead developer) have access to the bitcoin.org website.

Edit September 25th, 2011: The code for the bitcoin.org website is now hosted under the Bitcoin project on GitHub. This means that you can post issues/suggestions there or make a pull request if you wanna add or change something.


Closed wallet on MultiBit, found it in AppData, but when I click "open" nothing happens

There is a bug in v0.5.15 where if you close a wallet and then reopen it straight away the screen does not refresh. If you shut down multibit and then start it up again you should see it.


How to withdraw cash from blockchain wallet

Is exchanging bitcoins with money from other people the only way I can withdraw my money into my bank account??

Yes, it's the only way.  You can't "withdraw" bitcoins into your bank account, any more than you could "withdraw" a car into your bank account.  You have to sell them in exchange for money, and then you can deposit the money in your bank account.

See How can I sell bitcoins and transfer the funds to my bank account?


How to share the blockchain across local network residing on 1 PC, not copy?

I wouldn't try to have both bitcoinds attached to the same storage, that sounds like a recipe for disaster, if it'll start at all.

You can either tunnel the 8332 port on your personal computer to the remote server like this:

ssh -L 8332:localhost:8332 <remoteip>

This'll basically say "whenever I connect on the local port 8332, open a connection on the remote end to localhost:8332, i.e., your server's 8332 port, and tunnel all traffic through it". So this mimicks a local bitcoind but transparently passes everything over to the server. No need to share at all.

The other option is to add the following line to your bitcoin.conf file:

rpcconnect=<remoteip>

This will make bitcoin-cli connect to the remote bitcoind instead. You also need to make sure you actually allow incoming connections on the server, so this may be a bit less secure than the SSH variant above.


Bitcoin security/vulnerability on computer backed up by cloud?

first you have a misconception, BTCs are only stored in the blockchain, wallet.dat stores public/private keypairs of your addresses, addresses can have or not BTCs to spent but that's irrelevant for the storage.

Bitcoin has nothing like a API for backups, but it does have encrypted wallets so you can encrypt your wallet file and you only will be able to use it if you remember the passphrase.
Having your wallet.dat file in several computers and actively using it in several pcs can cause address loss (and BTC in those addresses) see: If I backup my wallet.dat once, am I forever safe?
If the wallet.dat file stored in external sites is not ciphered and someone has access to it, yes that entity wil be able to "steal" all current and future coins on that addresses.


Can't send raw transaction Bitcoin Core 0.19.1 - non-mandatory-script-verify-flag (Signature must be zero for failed CHECK(MULTI)SIG operation)

That error message is irrelevant.
SegWit introduced a new way of producing the hash digest for signing which requires the "amount" being spent to be included during hashing. This "amount" is the value of the output that is being spent not the amount of the new output you create. In your it is 0.02641617 or the actual value 2641617 in satoshi.
Your step 4 should become:

signrawtransactionwithkey '0200000001ffab477941a9eba13b89bd815947a4c1daccc3a42dfb090c1006479eee1fe78e0000000000ffffffff0180841e000000000017a914d0c3f50336b5f109207d722c692191ff86263e968700000000' '[" $privKey "]' '[{"txid":"8ee71fee9e4706100c09fb2da4c3ccdac1a4475981bd893ba1eba9417947abff","vout":0,"scriptPubKey":"a91429c3d920cd18e34db9035c4322474aae4465792187","redeemScript":"00143b88811e01b3efaa0bcd9da16ef85ef3a1583349","amount":0.02641617}]'


how to run multiple bitcoind node on one server?

We can run 2 bitcoind nodes on a single server without installing it multiple times.
 We just have to create 2 data directory with a different configuration file (bitcoin.conf) for the 2 nodes. This configuration file should have different port numbers, user name and password specified.

Node1:

bitcoind -regtest -datadir=./bitcoinNode1/ -conf=./bitcoinNode1/bitcoin.conf -rpcport=19001 -port=19000

Node2:

bitcoind -regtest -datadir=./bitcoinNode2/ -conf=./bitcoinNode2/bitcoin.conf -rpcport=19011 -port=19010

You can also make the 2 nodes to connect each other by specifying the connect command while starting node2 as mentioned below.

bitcoind -regtest -datadir=./bitcoinNode2/ -conf=./bitcoinNode2/bitcoin.conf -rpcport=19011 -port=19010 -listen=0 -connect=127.0.0.1:19000


Error while sending transaction with script OP_TRUE (Script evaluated without error but finished with a false/empty top stack element)

Input script is very simple which returns 1.

You can not spend from 2Muf8gJV81wa93smDeiy7X777BJcppBR5uP with this scriptSig. Do not pay attention on the error message. Your transaction IS invalid

https://testnet.smartbit.com.au/address/2Muf8gJV81wa93smDeiy7X777BJcppBR5uP


Changing these 2 lines gets what you want.  Note that it's quick and dirty and will break non-testnet, so don't use this for anything but testnet:

diff --git a/src/main.cpp b/src/main.cpp
index a9311e2..b3496a1 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -780,7 +780,7 @@ int64 static GetBlockValue(int nHeight, int64 nFees)
 }

 static const int64 nTargetTimespan = 14 * 24 * 60 * 60; // two weeks
-static const int64 nTargetSpacing = 10 * 60;
+static const int64 nTargetSpacing = 10;
 static const int64 nInterval = nTargetTimespan / nTargetSpacing;

 //
@@ -1784,7 +1784,7 @@ bool LoadBlockIndex(bool fAllowNew)
     if (fTestNet)
     {
         hashGenesisBlock = uint256("0x00000007199508e34a9ff81e6ec0c477a4cccff2a4767a8eee39c11db367b008");
-        bnProofOfWorkLimit = CBigNum(~uint256(0) >> 28);
+        bnProofOfWorkLimit = CBigNum(~uint256(0) >> 15);
         pchMessageStart[0] = 0xfa;
         pchMessageStart[1] = 0xbf;
         pchMessageStart[2] = 0xb5;

Here's some debug.log output with those changes.  I'm generating a block every 2 seconds or so.  If that's too fast, increase the ">> 15" accordingly.  Each increment there doubles the time between blocks.

03/05/12 07:21:54 Flushing wallet.dat
Flushed wallet.dat 132ms
askfor block 000000935f454d1641e5   0
sending getdata: block 000000935f454d1641e5
received block 000000935f454d1641e5
SetBestChain: new best=000000935f454d1641e5  height=23  work=559980566
ProcessBlock: ACCEPTED
askfor block 00000c4d375ce8f92166   0
sending getdata: block 00000c4d375ce8f92166
received block 00000c4d375ce8f92166
SetBestChain: new best=00000c4d375ce8f92166  height=24  work=561029143
ProcessBlock: ACCEPTED
askfor block 000007e863a6d86bfb1d   0
sending getdata: block 000007e863a6d86bfb1d
received block 000007e863a6d86bfb1d
SetBestChain: new best=000007e863a6d86bfb1d  height=25  work=562077720
ProcessBlock: ACCEPTED
03/05/12 07:21:59 Flushing wallet.dat


Do you need to be connected to the internet to send someone bitcoin?

Currently: yes, you pretty much need an Internet connection.

In the future: the relatively-new payment protocol BIP70 can be combined with Bluetooth, near-field communications (NFC), or possibly large QR codes to allow a merchant to send their address to your mobile device and your mobile device to send back a signed payment.  Then the merchant will use their Internet connection to broadcast the payment.

There are a fair number of developers from organizations like BitPay currently working to make this as easy and seamless as possible, so you probably won't have to wait very long for beta-quality no-Internet-required in-store payment solutions.


Trade Execution v.s. Trade Execution Update

The documentation of the authenticated side of the API from where these orders are created states the following:

  After a te message you receive shortly a tu message that contains
  the real trade id (TRD_ID) and additional/updated fields.

These updated fields are for example fees that are charged afterwards.

Although from the public side of the API this real trade ID is already known and fees are irrelevant. Therefore, the data of the te-message is identical to the tu-message.

So, it seems tu-messages can be ignored.

+

Bitfinex now has it explained at their Bitfinex API module for Node.JS.
https://github.com/bitfinexcom/bitfinex-api-node

How do te and tu messages differ?

A te packet is sent first to the client immediately after a trade has been matched & executed, followed by a tu message once it has completed processing. During times of high load, the tu message may be noticably delayed, and as such only the te message should be used for a realtime feed.


How Lightning channels will helps with scaling in practice

You would not open and close a channel for each transaction.  Instead, you would have one or more open channels at all times and find routes to the places yours want to send money.

  doesn't that encourage a very high degree of centralization due to the prohibitively large capital requirements for main hub nodes?

No.  If you make a transaction of about 50 USD, any route from Bob to Alice where all channels are greater than or equal to 50 USD (in the right direction) will do.  It does not have to go through a central hub.  50 USD is not a "prohibitively large capital requirement".  If you make a 50,000 USD transaction, it's a different story.  With lightning, the network is more centralized with larger transactions because you have fewer routes to choose from.  However, the vast majority of transactions aren't going to be very large, and therefore will have a very low degree of centralization.  They can use more routes.

Because small transactions will no longer require space in blocks, this will take significant load off the main chain.


If your transaction doesn't confirm, and the sender (blockchain.info/wallet, in this instance) doesn't re-broadcast the transaction then the transaction should disappear from your wallet, as if it had never been made.

This may take a day or so.

If the transaction is being re-broadcast by the sender then it can stay there as long as the re-broadcasts are occurring.


Can't generate same addresses as bitcoincore using xprv from bitcoin-core

looks like address from dump is multisig?

It is not multisig. Bitcoin Core does not generate multisig addresses.

That address is a P2SH wrapped Segwit address. The same private key can be associated with multiple addresses since there are different types of addresses. The type of address you that you are generating with bitcoinjs-lib are P2PKH addresses. However Bitcoin Core is making P2SH-P2WPKH addresses.

You should be able to get the same address if you do something like

bitcoin.payments.p2sh({
      redeem: bitcoin.payments.p2wpkh({ pubkey: key.derivePath("m/0'/0'/0'").publicKey })
})


Using BitcoinJS - How do you verify a message using a segwit bech32 (bc1…) / P2SH (3…) addresses?

A Trezor signed message with a 3 address can be verified here:

https://jhoenicke.github.io/brainwallet.github.io/#verify

Or your can verify it with another Trezor wallet.


Bitcoin's cryptographic protocol allows for leakage of information about one's Private Key, making recalculation of the private key possible?

Yes, this happens when the same key is used perform multiple signatures with the same R value - simply using the same key for multiple, sanely produced signatures with a different R value will not result in leakage, no matter how many such signatures you make.
Modern wallets use a deterministic nonce via RFC 6979.


How can you operate a fractional reserve e-wallet?

It is pretty simple. Persons A, B, and C store 10 BTC each with you, so you have 30BTC. You figure on any day you need 10BTC handy for all of the transactions of ABC. That leaves you with 20BTC to spend, and assuming they all don't come asking for it at the same time, you are fine.

When doing this, you need them to send you the BTC, and you keep a record of their account in a database. Transactions between them just update their db records (not the blockchain). Only when they withdraw or pay out to someone not in your system do you need to spend the money in your reserves.

Looking at mtgox, they could easily do this; the record of the coins that are yours is not what is in some address, but just what is in their db. Since they hold a huge amount of coins for a huge amount of users, it is unlikely that all of their coins will ever be withdrawn. In fact, many users may be dead or no longer interested in bitcoin or simply forgot their login. All of the bitcoins belonging to those users in essence will never be withdrawn, and mtgox can get away with spending them without worry. Using login statistics (which I am sure they have) they can probably make a guesstimate about the amount of their reserves will never be collected, and so they can spend at will.

I am not saying that mtgox is engaging in this (heck they probably make more money off of fees), but it would be so simple and totally invisible to anyone who cares.

Frational reserve banking is super easy and it just relies on a lack of transparency in addresses assigned to users with actual btc in them.

Interestingly this can make it so there are in some ways more bitcoins in circulation than in existence, as trading with db bitcoins is basically equivalent to real ones.


Can you Send Coins back from a Receive Address?

This is not recommended.

If the customer uses a fully controlled wallet he will get the coins, but will be confused about their source because the address would carry the label of some other provider.

If the customer is using a shared eWallet, he might not get the coins at all because the address isn't his.


How to recover a deterministic wallet offline?

Let's assume a BIP-32 compliant HD wallet is also BIP-39 and BIP-44 compliant.

Let's next assume that when you first configured your BIP-39 compliant HD wallet it provided you the following set of words to be used to reconstitute your master seed: small cereal crazy ahead move never galaxy draft draw plunge sort identify embark clerk hard wagon clever torch cruel income episode any debris puppy.  Additionally, let's also assume the wallet requested that you enter an additional BIP-39 related salted password that will be set to I'mAbadASS for discussion purposes.

A 512 bit root seed m could be obtained for the situation above by issuing the following bitcoin-explorer (bx) command:

% echo "small cereal crazy ahead move never galaxy draft draw plunge sort identify embark clerk hard wagon clever torch cruel income episode any debris puppy" | bx mnemonic-to-seed -l en -p "I'mAbadASS"
c64364d5a4175ff506620c3b788633063a2b3808579cd0f074503a365d283fc3a0bfb50d98f1293828e868e865054eff94261c206d35138689ce97efef9ada9c

BIP-44 compliant HD trees use the m/purpose'/coin_type'/ account'/change/address_index convention to derive private keys and associated addresses.  Let's then assume the wallet only has one account 0.  For the Bitcoin the coin_type the private key tree would look like m/44'/0'/0'/c/i where c can be 0 or 1 and i is an index used to synthesize the i-th extended private key, i-th extended public key or address.

m/44'/0'/0'/1/0 could then be synthesized as follows:

% echo $root_seed | bx hd-new | bx hd-private -i 44 -d | bx hd-private -i 0 -d | bx hd-private -i 0 -d | bx hd-private -i 1 | bx hd-private -i 0
xprvA3zHj8cyzFJiKAXiqdLqrdjUvMqdxUbrpSpDGfxHA15uk2j3fUknu2GN6rSYpPc3QDhALvLBNtKfNGQTLYLNFJD5FKnuFbDPRoBp5TAHFba

From the resulting extended private key (ext_prv_key) above, the corresponding public address and private key can be found.

% echo $ext_prv_key | bx hd-to-address
1BLQ28VdYxJ4Y89fjpbNP5ihUvy2hMkGgq

Then determine if any funds have been sent to the address above by issuing % bx fetch-balance 1BLQ28VdYxJ4Y89fjpbNP5ihUvy2hMkGgq on a computer attached to the Internet or have a very fresh bitcoin-server full node server available for your bx on your private computer that is offline.

If funds are present, to obtain the private keys to import into another wallet try:

% echo $ext_prv_key | bx hd-to-wif
L3KsdTwat69cMtLTJE4W2G77SgazLGqhzfvMkYQsuwMC96tr3Tj8

The qrencode command can receive the piped text output immediately above to synthesize a QR image for a smart cell phone or tablet based wallet to easily import from an offline key synthesis computer that retains a network air-gap.

% echo $ext_prv_key | bx hd-to-wif | qrencode -o QRwif.png

See how-to-import-a-hd-wallet-from-an-extended-private-key for more Electrum specific details.


Converting a bitcoin miner for other use

A bit of googleing landed me here: https://rya.nc/asic-cracking.html

Basically he says there are two main differences between mining and cracking.

knowing when your done
moving onto the next try

If just one of these things are implemented in the hardware, then there wont be much of a performance gain. But if they're both implemented in the firmware, you could potentially re-write it to suit your needs. So you'd really have to ask the manufacturer of the hardware.


Check txout against the circulating supply instread of MAX_MONEY

There is no point. It would just be slower and more complex for no gain.

Despite what the name may imply, that test is not there to enforce the inflation schedule. It's there to prevent exploiting integer overflow (something which happened in Bitcoin's early history).

The test could be replaced with > 1000000000000000000 instead and be equally effective.


How much is ripple decentralised and p2p

Ripple is an internet protocol. It's ledger is kept on servers all over. In fact, I am in the process of installing RippleD and connecting my server to the broader network.

Watch these short youtube videos:

Here's an overview of Ripple ...

Here is an explanation of Ripple in 60 seconds ...

Here are two more videos:

Here is a video to help you understand how a Gateway works ...  http://www.youtube.com/watch?v=M16ZatXbmLg

Here is a video to help you understand how the consensus ledger works ... http://www.youtube.com/watch?v=pj1QVb1vlC0

Then you should do a search on the Ripple Wiki and give it a read. (I'd send a link, but again, they're limiting me to two :-S )

Cheers!


You may enable pruned mode on your blockchain storage by setting the following line in your bitcoin.conf

# Reduce storage requirements by only storing most recent N MiB of block. This mode is incompatible with -txindex and -rescan. WARNING: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, 1 = allow manual pruning via RPC, greater than 550 = automatically prune blocks to stay under target size in MiB).
prune=10237

Bitcoin Core will automatically prune the blockchain storage back to the amount specified.

Regardless, always keep a secure up-to-date backup of your wallet.dat


Paper backup from Armory that requires a password?

As the paper backup consists of two simple string you can use any encryption scheme you'd like to implement this.

This can be as simple as manually applying rot13-like encryption, to one-time-pads. Just make sure you keep the ciphertext short in order to still be able to print and, more importantly, type it in eventually.


Why can't they use super computers to mine all the bitcoins?

A supercomputer is way slower than mining with ASICs. A supercomputer only has much CPU power, not even GPU power and ASICs are way more powerfull than GPUs. ASICs represent the hashing algorithm as hardware which means they can't do anything else, that's why they are so fast.

At http://bitcoinwatch.com/ you can see the current network hashrate in PetaFLOPS, which is 1534782.24 at the moment. Currently the fastes Supercomputer Tianhe-2 has 33.86 petaFLOPS.

  but for a govt agency all that money comes from taxes so ...

If they would use all the money to buy ASICs and start mining bitcoins, it still would not be enough because of the difficulty factor. But they would be able to get a lot of blocks because the difficulty only changes every 2016 blocks.


What is the early history of the BTC exchange rate?

According to https://en.bitcoin.it/wiki/History:

  2009
  October 5 Exchange rates published by New Liberty Standard. $1 = 1,309.03 BTC (and theymos thought NLS was overcharging[3])

It cites http://newlibertystandard.wetpaint.com/page/2009+Exchange+Rate
and
https://en.bitcoin.it/wiki/History#cite_note-2

That first citation seems to have a decent list of pre-May 2010 exchange rates.


Do new SIGHASH types need a hard fork or a soft fork?

It is in fact a hard fork, if it is done natively. However, it can be done through a soft fork if the sighash types are only included in serialized redeemScripts for P3SH (P2SH but with OP_EQUALVERIFY instead of OP_EQUAL), or via re-purposing one of the OP_NOPs to be a new op with similar functionality to OP_CHECKSIGVERIFY.

Source: http://lightning.network/lightning-network-paper-DRAFT-0.5.pdf

  To mitigate malleability, it requires changing which contents are signed by the participants. This is achieved by creating new Sighash types. In order to accommodate this new behavior, a new P2SH type or new OP_CHECKSIG is necessary to make it a soft-fork rather than a hard-fork.


How to reissue a currency you own in NXT Monetary System (Sidechains)?

If you have not distributed any coins, you can reissue the currency the same way you issued it by following this guide.


Does mining a block force others to restart their work?

Yes and no.

When a new block is created, everyone on the network must discard old work and use the new information provided (assuming they don't want to create forks). It does lead to some small performance loss.

On the other hand, creating a block is more or less like playing a lottery - there is no real "progress" per se, you are just trying more and more tickets until you win something. When a new block is created you don't have a situation of "10% left, I lost so much work", as there is no telling whether there actually IS a solution to the particular configuration of a block you were creating.

All in all, yes, everyone must start over when a new block is created, but they don't lose much (aside from some small performance drop due to stale shares).


Increase maximum number of outgoing connections for full node

Issue resolved. I was able to get 16 outgoing full relay connections that are stable using the below changes in code:
Adding below lines in src/init.cpp
argsman.AddArg("-maxoutfullrelay=<n>", strprintf("Maintain at most <n> outbound full relay connections to peers (default: %u)", MAX_OUTBOUND_FULL_RELAY_CONNECTIONS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);

int nMaxOutboundFullRelay;

nMaxOutboundFullRelay = args.GetArg("-maxoutfullrelay", MAX_OUTBOUND_FULL_RELAY_CONNECTIONS);
nMaxOutboundFullRelay = std::max(nMaxOutboundFullRelay, 0);

connOptions.m_max_outbound_full_relay = std::min(nMaxOutboundFullRelay, connOptions.nMaxConnections);

And maxoutfullrelay=16 in bitcoin.conf. Tried with 20 as well and it works fine.


With the btc price changing every second, how can you accurately display conversion to fiat currency?

There is not a way around this unless you are using an exchange. But, even exchanges have a disclaimer:

  Market orders may be partially filled at several prices. Each part of
  your order will be shown in the fills panel. See Coinbase Pro - overview of order types

The way exchanges work is sellers place limit orders, which show up on the order book. When a buyer does a market order, it will buy up the lowest priced volume that is already on the order book. Basically, you have to remember there is a seller for every buyer, and everyone is choosing their price. Things happen fast, if your order is placed right after someone else buys all the volume at the price you wanted, you might get a different price.

Your best option is probably to use an exchange api, and get a feed of the order book, so it is as real-time as possible. E.g. see Coinbase Pro API and their Level 2 channel in Websocket Feed.


The income you earn will vary from what you would expect to earn on a given day.  In order to earn income a block must be found and until a block is found you will earn nothing.  For example, let's assume your pool on average founds a block every 2.5 hours and each block you earn 11.25 doge.  You would have earned about 22.50 doge in the timeframe of 6 hours.  In the first 24 hours,  you would earn about 101.25 doge.  The next day you would earn about 112.50 and the next day would be 101.25 doge, but your daily average over 5 days is 108 doge.

Of course, in reality you would never see blocks found with such regularity.  Instead, you might find only 7 blocks on day one and then 13 blocks on day 2 and so on.  Blocks are found randomly and so you can expect your income to be all over the place.  Overtime, you will see your average income reflect your expected income with a lower variance depending how many days you factor in.

So far, you have no basis to be concerned and it seems your low income is just example of bad luck, but over time luck becomes a lesser factor.  You should get to 108 a day and on some days you will earn more.  Happy mining :).


error durring the bitcoincore installation

Your on debian the bitcoin PPA only works on ubuntu.
See this guide to build it on debian.
https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md


LCC-core is not asking for your Trezor passphrase (25-word) which, as you said, you didn't set up.  LCC-core is asking for your wallet.dat passphrase which is the passphrase used to encrypt the contents of the LCC-core wallet.dat file.  This was a passphrase you set when you originally installed and set up the LCC-core software.

Just a point of advice.  You might be better served using the Electrum-LCC software since it can talk directly to Trezor.  No need to extract private keys (which is inherently risky)


Can I use http command to place order in GDAX?

Yes you can.

https://docs.gdax.com/

There are examples there in various languages.


What are the chances that a nonce for one block is a nonce for another?

Assuming that nonces are randomly distributed (which they should be) and after 1 million blocks that no blocks have the same nonce, the probability of the next block having the same nonce as a block that has already been mined is 1000000/4294967296 = 0.000233, so very low. However as more blocks are being mined, the probability increases. Once there are 4294967296 blocks, the probability of a block sharing a nonce with a different block is guaranteed.

The reasoning for 4294967296 is because the nonce is a 32-bit integer so there are 2^32 possible nonces which is 4294967296.

However, the probability of any 2 blocks having the same nonce is 1/65536 due to the birthday paradox.

There currently have been multiple pairs of blocks that have the same nonce. Some are listed below:

Nnoce: 68229731, blocks [9459, 35238]
Nnoce: 3147243286, blocks [19411, 71181]
Nnoce: 2811235843, blocks [42202, 110904]
Nnoce: 61366272, blocks [100255, 171713]
Nnoce: 74571595, blocks [37187, 176000]
Nnoce: 22876413, blocks [22460, 188416]
Nnoce: 131829089, blocks [40784, 203153]
Nnoce: 2962306894, blocks [136018, 216500]
Nnoce: 3947837747, blocks [222990, 227103]
Nnoce: 194800186, blocks [36506, 243089]
Nnoce: 1388988687, blocks [108366, 251694]
Nnoce: 922984712, blocks [245295, 260005]
Nnoce: 4133916719, blocks [176525, 276110]
Nnoce: 3890141599, blocks [213608, 292419]
Nnoce: 876374308, blocks [18857, 317190]
Nnoce: 70651752, blocks [238831, 322634]
Nnoce: 2359983768, blocks [112651, 325309]
Nnoce: 3421780225, blocks [95525, 328515]
Nnoce: 3787474772, blocks [187117, 346581]
Nnoce: 3956410682, blocks [10506, 350632]
Nnoce: 2756846708, blocks [117891, 355889]
Nnoce: 158953652, blocks [305592, 368094]
Nnoce: 2660238194, blocks [257198, 371219]
Nnoce: 2774929041, blocks [112737, 413142]
Nnoce: 2335903164, blocks [379609, 436786]
Nnoce: 64632759, blocks [60105, 443347]
Nnoce: 2469851573, blocks [225526, 448132]
Nnoce: 84018796, blocks [78009, 453373]
Nnoce: 1935967937, blocks [436055, 454540]
Nnoce: 2900822784, blocks [144802, 457849]
Nnoce: 2434589573, blocks [102268, 467087]
Nnoce: 2965485942, blocks [366411, 481531]
Nnoce: 18390814, blocks [68360, 506618]
Nnoce: 433452460, blocks [157144, 513320]


Normal hashrate but no accepted shares in

200Mh/s is impossibly high for an HD6850 mining scrypt. My bet is that you're mining SHA256d, not scrypt. I don't see a -scrypt in your configuration file.


Why don't the timestamps in the block chain always increase?

From the wiki:

  A timestamp is accepted as valid if it is greater than the median
  timestamp of previous 11 blocks, and less than the network-adjusted
  time + 2 hours. "Network-adjusted time" is the median of the
  timestamps returned by all nodes connected to you.

  Whenever a node connects to another node, it gets a UTC timestamp from
  it, and stores its offset from node-local UTC. The network-adjusted
  time is then the node-local UTC plus the median offset from all
  connected nodes. Network time is never adjusted more than 70 minutes
  from local system time, however.

It's not obvious that there aren't any problems with this way of timestamping. See the blog post Timejacking & Bitcoin and the discussion about it here.


Even better than pseudocode: here's some python code for message signing and verification, largely pilfered from the electrum client:

https://github.com/nanotube/supybot-bitcoin-marketmonitor/blob/master/GPG/local/bitcoinsig.py


sent btc to bcc address. what can i do to stop swearing?

Check out this answer to know what happens if you send BTC to BCC.

As of your case, if you were holding the private keys of both the wallets, then you could simply retrieve it except the transaction fees.

But in your case, you have send the BTC to an unknown BCC address. You cannot tell who owns that address. The person who owns the private key of that address gets the BTC.

If by any chance, that address is of Wirex, then you have a good chance to get that in your account, as if they hold the private key of that address, they have access to both BTC and BCC in that address.


I am new to Bitcoin, how can I get started?

We get a lot of questions revolving around the questions and problems faced by
new users of Bitcoin. While some of this is beyond your question, this answer might work as a potential lightning rod for some of the questions that get asked anew here almost daily. In the following you find a few hand-picked questions that are likely of interest for new users.

What is Bitcoin?

What is a good way to concisely explain Bitcoin?
What are some good resources for understanding Bitcoin?
What's the difference between a wallet and an address?
The Bitcoin.it wiki says addresses do not carry balances...but all info suggests otherwise

Where to get a wallet?

In order to receive and send Bitcoin you need a wallet.

What is a good resource to help newbies choose their first wallet/s?
How many addresses does my wallet.dat contain? Do I need to make a new backup every time I make a transaction?

How do I get Bitcoin?

How do you obtain bitcoins?
What's a good resource explaining the best ways to buy Bitcoin (noob friendly)?

What gives Bitcoins value?

Where do bitcoins come from and what gives them their value?
How is the exchange rate for Bitcoin established?

Where can I spend Bitcoin?

Where can I go to find a list of merchants who accept bitcoins?

What skills are necessary to use Bitcoin?

What's the minimum age to join or use Bitcoin?
What software and skills do I need?

What is mining? How does it work?

What exactly is Mining?
What is the rationale behind Bitcoin mining?
Can someone explain how the Bitcoin Blockchain works?

Is Mining profitable? How can I get started?

How much Bitcoin will I mine right now with hardware X?
How can I start mining Bitcoin?
Why does mining profitability tend towards zero?
In the ASIC-age, is it worth starting mining Bitcoin at home?

How do I get started with Bitcoin.Stackexchange?

Check out our Tour for a quick overview.
Some pointers on asking questions: How to Ask
More helpful info can be found in the Help Center
If you are looking for some interesting reads, check out the most frequently asked questions
Swing by our chat: Bitcoin Lounge


Can the Bitcoin script make a Google search?

Bitcoin scripts are intentionally very limited, and can only access data inherent to the transaction (not even the blockchain it is in), in order to guarantee consistency (a script's validity cannot change over time).

However, there do exist ways to integrate external state into Bitcoin, through the use of oracles. See this wiki page for more information about those.


Can side chains or "pegged" chains negatively affect the security of Bitcoin?

This particular proposal only requires one change to Bitcoin: Simplified Payment Verification (SPV) proving.

SPV proving is required when you want to move Bitcoins from the sidechain to the mainchain. The idea is that rather than putting all of the rules to validate transactions on the other chain into the original Bitcoin client, Bitcoin clients would look at how much hashpower was used to secure the transaction. It's pretty clever, actually.

The sidechain proposal described in that paper glosses over the changes to make SPV proofs work:

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

It would be more than an extension to script. Script currently has no way of looping or signaling to other scripts, which you would need. I'm pretty sure this would require a hard-fork. (Could someone more familiar with Bitcoin's internals chime in here? Could adding looping/signalling be done without a hardfork?)

I think it would make a lot more sense to not track the UTXO's of the coins moved to the sidechain at all, and just keep a running total. Then, have a hardcoded validator for each sidechain.

One issue that I see is that I don't think there would be enough hashpower to secure the network from double spending; merged mining could probably fix that though.


Shapeshift + bitcoin cash question. The deposit link expired before the deposit reached it

See also Why is my transaction not getting confirmed and what can I do about it?

  the blockexplorer says it has 247 (?) confirmations, but the wallet still says it has two and is pending.

Sounds like an issue with the wallet not an issue with the transaction. Indeed, the transaction has many confirmations now, contact the support for the wallet you are using to see what the issue is (or ensure your wallet is fully synced if you are using a local wallet).

  I figured that when the amount will reach Shapeshift, they will issue an automatic refund although the blockchair says that the main part of the deposit is already sent and spent.

Why would you get a refund if you are just depositing the funds?

  I tried to use CPFP while it was still unconfirmed to draft the funds back, but it seems like I misunderstood the function.

If you sent the funds to an address shapeshift owns, only they can spend that transaction, so only they can use CPFP. But CPFP is unnecessary here because the transaction is confirmed now, as you mentioned.

  Can anybody tell me what's the problem, if it's stuck for centuries or how to speed it up? And it is actually a second time in a row I get into this situation. Anyway, would anybody just sort out my confusion?

What makes you think it is stuck? The transaction was successful, if your account hasn't been credited in shapeshift then you will need to contact their support.


You're pretty close, with the deviations being I think primarily in terminology.

Client A listens for connections on port 8333. Listening is a server activity.

Client A chooses an ephemeral port and opens a connection to the address of Client B on port 8333, on which Client B is listening. At the TCP level, there is a three-way handshake to establish the connection. Imagine this connection as a bi-directional pipe to and from which both clients can read and write.

Once established, Client A sends Version and Client B receives it. Client B sends Version and Client A receives it. Client A sends Verack and I think Client B also sends Verack, which is an acknowledgement of the version compatibility or receipt.

This is my understanding.


ValueError: need more than 1 value to unpack

I was getting this error. Like the above answer states, I checked my password, saw that it was longer than it should have been and changed it, then quit getting the error. At least for me, it was a wrong username/password.


Does a bitcoin exchange transfers my bitcoins to a "temporary address" when an order is placed (and not yet executed)?

I don't have any specific knowledge about Bitfinex, but I doubt that it works that way.

The most straighforward way to run an exchange is to pool all customer deposits.  When you make a deposit (to a "t-addr"), the exchange credits your account (in their internal books), and the coins in that address are considered part of the "pool" and no longer have anything to do with you specifically.  They're not "escrowed" in any way; they literally belong to the exchange now, and you have to trust that the corresponding credit in your account will be paid out by the exchange upon your demand.  And there's no need to move coins gratuitously to avoid double spending; it wouldn't help.

Any external transfers that have to be made from the pool (customer withdrawals, moves to cold storage, Bitfinex extracting their earned fees, etc) are made from arbitrarily selected pool addresses.  Trades that take place on the exchange can be done just by crediting and debiting the internal accounts of the customers involved, and typically would not provoke any external transactions, neither in cryptocurrencies (on the blockchains) nor in fiat (in actual bank accounts), until one of the customers wants to make a withdrawal.  That would just be a needless expense in (external) transaction fees.

I suspect the blockchain transaction you saw around the time of your trade was just a coincidence, meaning only that the exchange needed to move funds for some reason (as described above) and happened to choose "your" address for that purpose.


Are there immediate plans to make Bitcoin more accessible to Forex traders?

As far as I'm aware most bitcoin exchanges don't adopt fiat currency as it requires them to be licenced with the money markets.

The same goes for the forex markets which exist such as IG Index or Capital Markets. The situation which would allow them to trade bitcoins for money is not suitable as it's not recognised as legal tender and organisations such as the IMF would not accept trading on licenced exchanges.

It's rather safe to assume for major players in the money markets would be unable to adopt bitcoins due to the red tape involved.

A small quote from the best exchange I am on

"Financial Regulation

Our business and services are buying, selling and trading virtual goods and commodities. We are not currently regulated as a financial institution."


Recover Wallet password (MultiBit Classic Version : 0.5.14) MAC

The mbexport app will help with the wallet file in the unenc-backup folder - but that might not contain the main wallet key. If you try to open an encrypted wallet using mbexport, it will ask you for the password.

Sorry I can't be much more help. Without an unencrypted copy of the key, the password is the only way to get the key.

https://github.com/Multibit-Legacy/read-multibit-wallet-file
https://www.npmjs.com/package/mbexport


What is the correct use of the term "validating"?

A bitcoin transaction is valid if it conforms to all of the bitcoin protocol rules. Likewise, a block is valid if it conforms to all of the bitcoin protocol rules (including: all of the transactions it contains are valid).

‘Validation’ of a block or transaction happens at the level of each individual node (miners and regular nodes alike). Validating a transaction or block is not that computationally expensive, in fact the protocol is designed so that fairly inexpensive hardware is capable of being a node (ie, your average computer can validate hundreds, or thousands of transactions per second).

Upon hearing about a new transaction or block, each node will quickly validate that it conforms to the network’s rules. If it is valid, that node may relay the transaction/block to its peers. If it is not valid, the node will reject that transaction/block, and not add it to the node’s mempool/blockchain.

  the average time it takes to validate a block by the network is 10 minutes.

This is not quite technically correct, I would rewrite it to say:

  the average time it takes for miners to find a new block on the network is ten minutes. Each block ‘confirms’ all transactions it contains. As the new block is transmitted across the network, each node will check it (and all of its transactions) to ensure they are valid according to the protocol’s rules.


Blocks are orphaned once in a while, roughly every few hundred blocks:

http://blockchain.info/orphaned-blocks

There used to be a blockexplorer-provided list of chain reorganizations which can occur upon such events (might become available again someday):

http://blockexplorer.com/q/reorglog

These chain reorgs used to happen a few times per month.


Technically the appropriate term is "pseudonymous" - imagine that your bitcoin address is like an email address or an online alias: how hard it is to trace to your actions depend largely on what you do with it.

There is, for example, a bitcoin address in my forum signature that would obviously be VERY traceable back to me. On the other hand if I install the client on a separate system which only connects to the internet through TOR and obtain my bitcoins by mining them from a pool like Eligius (no accounts/email necessary, they only ask for a bitcoin address) then it would be very difficult indeed to trace those funds to me.

And of course there are shades of gray in-between. As I said, think of it as being an email address and then consider how your actions with that bitcoin address can be tied to you. It's difficult but possible to make truly anonymous bitcoin transactions.


All the nodes in the Bitcoin Network have agreed on a certain set of rules. These rules are coded into the client and everything that changes the state of the ledger is checked against those rules.

Hardforks happen when a change in those rules (for example the reward halving rule or the difficulty adjustment rule) causes the new clients to make different decisions about the validity of transactions and blocks. This basically means that over time the state of the ledger on older clients would diverge from the state at new clients, creating two incompatible networks, as transactions would be valid in one but not in the other.

As transactions and blocks are chained together, even a single disagreement about the validity of a transaction or block can cause large parts of the state to become inconsistent over time, it is therefore crucial that the network as a whole agrees on the rules.

The developers keep a wishlist of changes for hardforks, because hardforks should be a rare event, breaking changes be bundled into on hardfork. The changes decided in hardforks have a trigger height after which they are applied, which is usually several months in the future in order to let developers of alternative clients and the users update their nodes before the switch, minimizing the number of incompatible nodes left behind.


how can i track a bitcoin sent to someone claiming not to have seen it

There's no evidence of any such transfer. Check this page and you'll see.