Based on this question, it seems like you did not research bitcoin mining enough.

At this point, mining bitcoin is not profitable for the average user unless you have close to zero electricity fees and a pretty powerful computer to start with.

The bitcoin difficulty is always going up, making any investment into hardware obsolete. Most mining farms are in China due to these reasons.

You yourself do not solve math problems when mining, instead you computer will solve mathematical puzzles that the bitcoin network gives it. The faster you find the key to the puzzle (you need a fast computer) the more coins you may mine. At this point, the profitability for bitcoin mining is close to zero for the average user.


Since you mention a server, you'll probably want to run the daemon, bitcoind.

The size of the blockchain has eclipsed 20 GiB a long time ago, so you'll want to run with the flag -prune=<n> which gives a limit for the storage used for the blockchain data. The blockchain data will still be downloaded and verified, but old parts will be discarded once the limit is reached. n is given in MiB. There are some other data requirements, so you should leave some space, e.g. -prune=5000 would leave you with approximately the last five weeks of blockchain data. If you want to access all transaction data, you would need to invest in more hard disk space to be able to run without pruning.

Unless you want to actively use it for transacting, you should run it with -disablewallet to save some resources.


If there a formula to decide when more decimal places will be added to Bitcoin?

To the best of my knowledge this has not yet been codified and it is hard to imagine there being a need to smaller Bitcoin increments anytime soon.

At this point smaller increments would suffer transaction relay problems without the addition of a miners fee far in excess of the Bitcoin being sent.

This could be settled now by scheduling the change based on Bitcoin valuation. However to do that we would need to agree what to measure BTC valuation against?

Gold perhaps?
World GDP?
International wire transfer volume?

Setting the benchmark to trigger the change to adding more decimals may lead to more debate.


Is there a flag or specific message in a bitcoin pcap to show us our bitcoin transaction is confirmed or not?

A transaction is confirmed when it is included in a block, so you will need to watch for a message that alerts your node (or whatever software you are using to watch the P2P gossip traffic) to a new block, that includes the transaction in question. It doesn't matter if a node run by a miner relays your transaction to other nodes on the network, it only matters that the transaction is included in a block that is included in the longest (most work) valid chain.

Note that the relaying of this information has been optimized through various BIPs, so that the network is not naïvely using more bandwidth than required. This means that a message explicitly listing your transaction as confirmed may never be encountered, instead a node can gain this information implicitly, through the use of their mempool, and computational filters included with the new block message. You should take some time to learn about these optimizations if you're working to understand the network's P2P traffic, there are some questions on here that have more info. This one may be a good starting point.


How run c-lightning with the local node bitcoin

It is complaining about not being able to find the bitcoin-cli binary of the Bitcoin Core installation (which is normal since you are running it from a location that is not on the $PATH hence it can't find it).

To fix this issue you can tell lightningd explicitly which binary to use as bitcoin-cli by doing this:

./clightning-v0.7.2.1/bin/lightningd \
      --bitcoin-cli=$(pwd)/bitcoin-0.18.0/bin/bitcoin-cli \
      --lightning-dir=/media/vincenzo/Maxtor/C-lightning/node/ \
      --network=testnet \
      --log-level=debug

This will tell lightningd to use the bitcoin-cli located at $(pwd)/bitcoin-0.18.0/bin/bitcoin-cli. The $(pwd) is there to make the path absolute since lightningd will change directory internally after starting, so that relative paths might not match anymore.


How can I get my LND node to make connections over Tor, IPv4, and IPv6?

The guide you linked is a good start.

The next step is to broadcast these IPs using the externalip flag in the lnd.conf file. A sample lnd.conf file that enables connections (using default port 9735) via Tor, IPv4, and IPv6 should include the following:

(replace the 3 fake addresses with your own):

tor.active=1
tor.v3=1
tor.privatekeypath=~/.lnd/v3_onion_private_key
externalip=32.260.201.72
externalip=2001:0db8:85a3:0000:0000:8a2e:0370:7334
externalip=rvaslfkj2blahblahbalhdfsfjdflxcmnvxcvxvkfdsxcvxcvxcv.onion


Transaction verification process in full nodes

A bit late, but for the audience eventually searching for this response:

  point toward some technical resource where I could find that
  description ?

https://en.bitcoin.it/wiki/Transaction#Verification

https://en.bitcoin.it/wiki/Protocol_rules#.22tx.22_messages

Short cut&paste (march 2018):

These messages hold a single transaction.
Check syntactic correctness
Make sure neither in or out lists are empty
Size in bytes <= MAX_BLOCK_SIZE
Each output value, as well as the total, must be in legal money range
Make sure none of the inputs have hash=0, n=-1 (coinbase transactions)
Check that nLockTime <= INT_MAX[1], size in bytes >= 100[2], and sig opcount <= 2[3]
Reject "nonstandard" transactions: scriptSig doing anything other than pushing numbers on the stack, or scriptPubkey not matching the two usual forms[4]
Reject if we already have matching tx in the pool, or in a block in the main branch
For each input, if the referenced output exists in any other tx in the pool, reject this transaction.[5]
For each input, look in the main branch and the transaction pool to find the referenced output transaction. If the output transaction is missing for any input, this will be an orphan transaction. Add to the orphan transactions, if a matching transaction is not in there already.
For each input, if the referenced output transaction is coinbase (i.e. only 1 input, with hash=0, n=-1), it must have at least COINBASE_MATURITY (100) confirmations; else reject this transaction
For each input, if the referenced output does not exist (e.g. never existed or has already been spent), reject this transaction[6]
Using the referenced output transactions to get input values, check that each input value, as well as the sum, are in legal money range
Reject if the sum of input values < sum of output values
Reject if transaction fee (defined as sum of input values minus sum of output values) would be too low to get into an empty block
Verify the scriptPubKey accepts for each input; reject if any are bad
Add to transaction pool[7]
"Add to wallet if mine"
Relay transaction to peers
For each orphan transaction that uses this one as one of its inputs, run all these steps (including this one) recursively on that orphan


Block Validation Process, in Terms of adding Block to the Chain

It is easy and instant to confirm that a hashes proposed by a miner is the correct one, so once it is received by a node, miner, he will immediately stop trying to find a correct hashes for the previous block and began searching the new one without transition.


you should try asking this question at bitcointalk.org. If there is a bug in the client then perhaps it will help if you try copying your wallet.dat somewhere and loading it into a new version of client or fresh install? It is a good idea to have your private key for each address you plan to store bitcoins in written down somewhere before you send bitcoins to them. You can then load that private key into any wallet in order to spend the bitcoins.


The chainstate is generated as a side effect of validating the blockchain.


How will Lightning Network nodes secure their hot wallets?

The signing requirements for nodes in the Lightning Network are limited to the ability to sign that transactions that make up the smart contracts of the open channels.  So first off, only the money in the channels is "hot", which by its very nature it has to be.  It would be wise to not keep more money in a lightning node than is required for the channels.  For example, keeping your savings on a lightning node would be foolish.

However, lightning nodes also will also earn fees (although how much is unclear), meaning that profit will be generated as the nodes run.  This profit, too, is initially locked up in the channels, but will eventually be settled by means of an on-chain transaction.  Nodes will likely have a mechanism to send funds from the closing of a channel to a more secure wallet for safe keeping.  Either that, or they will take those funds, and use them to fund new channels.

  What can a Lightning Network node operator do to secure their nodes hot wallet and protect their private keys?

There is nothing special that lightning nodes will have to do.  All the advice is basic information security practices.  Don't open ports on your node that you don't have to.  Use a strong password to access your node. Disable remote logins if you have physical access.  Keep the software that is running patched and up to date.  Decrease your attack surface, and reduce the amount of liability (money) you have on any single node to a reasonable amount.

Remember that you put money into a node so that it can make more money.  Making money does not come without risks.  Mitigate those risks to an acceptable level.


How would I prove that I own X amount of Bitcoin to somebody without violating my privacy or sending/risking any coins?

The way that this is done is to sign messages using the private keys which correspond to your UTXOs. Your UTXOs are what make up your Bitcoin balance, and by signing a message with the keys associated with them, you are proving that you have the ability to spend those UTXOs.
To verify, someone can verify the signed message, compute the addresses for the keys you used, and then lookup the addresses and see how much Bitcoin are associated with all of those addresses.
For the average person, there is software that can verify the message for you and they will return what address was used in signing that message. Then they can just take this address and look it up on a block explorer.


What is the largest password/passphrase size for a wallet.dat file?

So just like Nick said, If the encryption is done using 256 bits then creating a passphrase which is 512 bits long would be the same as creating a passphrase which is 256 bits long (as long as its random).

You should look into brainwallets as they provide a way to create strong passwords which are also easily memorable since all you have to memorize is a 3 line poem.


In other words, a system where coins that have not been spent recently are worth more? I suppose you could do such a thing, but it doesn't seem useful; typically friction in economies is a bad thing.

But I imagine you'd price things just like in any other market: supply and demand.


P2WSH addresses have no deriving path since a P2WSH output does not send to a public key and P2WSH encodes a script, not a single public key.

Thanks to @Pieter Wuille for clearing up things.


In Lightning Network, what are the proposals for solutions to transfers to offline end users?

Payments are handled by means of an established bi-directional payment channel.  While this may seem like a payment could travel in one direction to an offline participant in an open channel, in practice this would be difficult if not impossible.

The problem is that a channel exists as a protocol between two active participants.  There are no other computers involved.  If one of the two computers is not online, who does the sender send the transaction to?  Where is the transaction stored after the sender goes offline, but before the recipient comes back online?  In Bitcoin, these problems are solved by relay nodes and miners.  Once a transaction is in the mempools of enough nodes, the sender does not have to worry about retransmitting a transaction.  The point-to-point nature of the lightning network does not allow for this.

A work around could be a payment service, which is always online to receive and send payments on behalf of a user (for a fee, of course).  Another option is simply sending a regular Bitcoin transaction to an offline recipient.


Can I remove the passphrase from my Bitcoin Wallet?

You can dump your old wallet to a backup file, restart the program to generate a new wallet and import your old wallet into it.

Assuming you are in the directory where your wallet file is located, using the command line that would look like this:

bitcoind walletpassphrase "xxx" 60
bitcoind dumpwallet "wallet.dat.backup"
bitcoind stop
mv wallet.dat wallet.dat.old
bitcoind -daemon
bitcoind importwallet wallet.dat.backup

I would be interested in a less dirty way, if anybody knows one.


Why Block351543 is older than Block351542?

Because blocks are created on different computers. The clock may be slightly different on them. This is not a problem for bitcoin protocol


Thanks, that was helpful.

Now, I have never had a problem with that computer. Can't remember it blue screening a single time. So the question was, why was Bitcoin Core synchronization causing hardware failures?

From experience, I know unexpected hardware problems are usually a result of a system stretched to the limit, but neither CPU usage nor hard disk access was operating around 100%. So I downloaded Open Hardware Monitor (No plug here. I have no stake in this application) and started snooping around. Among other things, it provides current temperature information about the CPU and some other components. I noticed even though CPU wasn't running anywhere close to 100% capacity its operating temperature was hovering around its limit with synchronization running.

I realized I needed to figure out a way to keep the temperature under control. I am running Bitcoin Core on an Intel NUC, which is tiny and I figured the internal cooling wasn't up to snuff. So I blasted away a table fan on the computer and let it rip. Sure enough, operating temperature started staying reasonably below the limit. I also shut off the Bitcoin Core for 3-4 minutes every few hours to let the CPU cool down (I don't think that was necessary, but I wasn't taking any chances). In the end, it took some extra effort and monitoring, but block synchronization is now completed. My Bitcoin Core Wallet is up-to-date.

Thanks for your help again MeshCollider.


Other than relying on "side-chains", is there any way that Bitcoin could solve "micro transactions"?

The main challenge is that any transaction that is transacted on the main chain will have to be stored on the blockchain in perpetuity, and processed by all full validating Bitcoin nodes. To my knowledge, all cryptocurrencies have the same property... they just aren't large enough where this is a real problem yet.
The other thing you should consider is that the actual value of a transaction to the Bitcoin network as a whole is irrelevant. A 1 satoshi transaction takes up the same blockspace as a 1 BTC transaction.
Hopefully this explains why small transactions must take place off-chain to achieve the cheap and quick settlement you mention.
The goal of a project like Lightning Network is to have microtransactions take place so they aren't taking up block space and needing to be stored and processed by all Bitcoin nodes forever. It will hopefully become easier to use as time goes on.


When should an individual or business file a SAR with FinCen?

While bitcoin may seem to be useful as an offshore bank account, it likely won't be subject to the FBAR reporting requirements.

Now if you have fiat (e.g., USD) funds at an exchange that is not in your own country (e.g., Mt. Gox) and those funds exceed $10,000 worth then possibly that could be something where an FBAR filing might be required.

So having $10K or more at an exchange might be reportable but having $10K worth of bitcoins may or may not.

An excerpt from someone who studies this topic:

  The critical issue is whether a wallet constitutes a financial account
  and if a wallet constitutes a financial account then what constitutes
  signature authority?


If the transactions is shown in your Bitcoin-Qt client as having confirmations, then the transaction went through and is confirmed. Most systems consider a transaction as confirmed when it has one confirmation, some require up to 6 confirmations, but when a transaction has 957 confirmations, it is practically irreversible.

If your transaction has that amount of confirmations and the receiver did not get it yet, then he has a problem with its client, not you.

There exists no such thing as e-mail confirmations in Bitcoin. It's possible that some clients offer it as a feature, but it is certainly nothing standard to Bitcoin.

(I don't know who the recipient is and I don't want to accuse anyone, but it seems like he is trying to have you send the transaction again.)


Does the `blocksonly` setting prevent other nodes from sending my node unconfirmed transaction, or does it simply cause my node to ignore them?

This allows the bitcoin node to operate similar to a SPV client.  These nodes advertise their capabilities to other nodes as they peer with them.  A node running in blocksonly mode will indicate that it does not want to receive inv messages from any other peers.  Nodes can supply a bloom filter if they are interested in messages for specific address(es), this is also using the same mechanisms that were designed for SPV nodes.


How do I register a .bit domain name with Namecoin?

The algorithm of registering .bit domain is described, for example, on dot-bit wiki.

In short:

Create new domain name with name_new command: ./namecoind name_new d/<name>
Wait 12 or more blocks
Actually register the domain with name_firstupdate, where <rand> is the second (shorter) hexadecimal string returned by name_new, and <json-value> is the domain configuration (similar to DNS record):

./namecoind name_firstupdate d/<name> <rand> '<json-value>'

The basic json-string, mapping the domain to the some IP looks like that:

'{"ip":"1.2.3.4", "tor":"123456.onion"}'

More on domain configuration


There's an extensive discussion on long chains here.

A "long chain", as defined by bc.i, appears to be a transaction chain whose growth rate exceeds a target value in 24-hour period. Note that transaction chains are destined to become long over time. That's how chain of ownership works. It seems the thing bc.i wants to separate out is rapid velocity transactions.

A long chain requires that a coin is given to a payee, who quickly passes it on, and so on. It's a sign of either highly coordinated effort between multiple users (unlikely) or a single user shaving a coin by making rapid-succession payments.

There are many possible causes beyond the ones you cite. For example, the game SauruTobi supposedly used high-velocity transactions, and from what I understand, so does ChangeTip. Essentially, any direct-payout service can cause long change, which covers a lot of ground.


Why do all addresses begin with "1"? Why can't we just delete it?

If an address begin with "1" then it's a hash of a public key, "3" for a script hash, "5" for a private uncompressed key, etc

You can find a list of all prefixes here: https://en.bitcoin.it/wiki/List_of_address_prefixes


Warning: Unknown block versions are being mined! Unknown rules may be active

This warning is currently benign and has been fixed for Bitcoin Core 0.18. You see it because miners are using the block version number for a mining optimization called ASICBOOST. However soft forks in the past have used the version number for readiness signalling. Bitcoin Core is seeing version numbers it is not expecting (due to ASICBOOST) and thus triggering the warning.


How does the Bitcoin p2p network work? Does it need port forwarding?

Nodes that participate in the Bitcoin network run a computer program such as this one: https://github.com/bitcoin/bitcoin, which dictates how everything works.

To answer your more specific questions:

Yes, bitcoin once used UPnP, here are some more details: https://dirkmittler.homeip.net/blog/archives/3340 but in modern versions it does not (thanks for specifying this the comment section).
Bitcoin uses TCP, and hole punching over it is not reliable.. Here's another place where this is briefly touched upon Can exist bitcoin network with all nodes behind NAT?


What if is there is no solution to a block?

Since I expect mining pool members to all agree what transactions to include and which timestamp to use, it can be possible that for the given block no solution exists.

That is usually not the case. With the stratum protocol which is most widely used, miners have no say as to what goes into a block except for the nonce and extranonce (extranonce is part of the coinbase transaction). So if a given block and all of its nonces result in no solution, the mining pool just constructs a new block with either new transactions, a different transaction ordering, or just a different timestamp and tells the miners to work on that.

As for the timestamp, it does not need to match real time at all. The timestamp just needs to be greater than the previous block's Median Time Past (median timestamp of the last 11 blocks), so the timestamp can be off of real time.

  What if all 'big' miners choose blocks which do not have any solution? Could the network stall?

A miner is not locked into only working on the block that they chose. They can construct another block and work on that. The network does not know nor does it care if a miner had to construct a different block to mine.


How can I avoid transaction malleability consequences?

This is the new issue, the one that's causing all the trouble. You basically have two choices:

Don't spend any of your own outputs until you're quite confident they're fully confirmed. For example, you could wait for three confirmations.
Be prepared to deal with this problem by monitoring your outstanding transaction chains and re-issuing any orphaned transactions with new input transaction IDs.


How many blocks are there in blockchain as of today?

There's a generic answer to this question that anyone can use, and an answer specific to users of Bitcoin Core (versions 0.10.0 or higher).

Generic version

Rather than directly answer your question with an answer that would become outdated within a few minutes as the next block was discovered, here's a general way you can look up the current number of blocks in the blockchain:

Go to this list of blockchain explorers.
Choose one (or choose several) and visit its website.
Almost all of them on their main page display the heights of recent blocks.
The height of a block is how many blocks there are before that block on the blockchain, so take the height of the highest block and add one—that's how many blocks there are on the blockchain.

Please note that it's not uncommon for blockchain explorers to be wrong about various facts, including the height of the highest valid block.  Visiting several sites decreases your risk of getting bad information without realizing it—if different sites disagree about the height by more than a single block, you'll know something is wrong.

For Bitcoin Core users

The getblockchaininfo RPC includes both the height of the highest downloaded block and the height of the highest valid-looking downloaded header.  On a fast connection, Bitcoin Core will typically download all the headers within two minutes of the time it is first started, so this number of headers is usually the total number of blocks on the best blockchain (minus one, since counting starts from zero).

{
  "chain": "main",
  "blocks": 381466,
  "headers": 381466,

The first few lines of getblockchaininfo on a fully-synced node

It's important to node that the headers count can conceivably go down if Bitcoin Core discovers the blocks that are supposed to be attached to those headers are invalid.  This most recently happened during the 4 July 2015 fork (although 0.10.0 and later Bitcoin Core nodes were unaffected) and it could also happen if there's a hard fork attempt that has the support of the majority of the network hash rate.

In Bitcoin Core GUI (Bitcoin-Qt), you can run the getblockchaininfo RPC by going to Help menu -> Debug item -> Console tab, and then typing in:

getblockchaininfo


What is the correct algorithm to calculate worker & pool hashrate

hashesPerSecond = math.pow(2, 32) * proofsOfWork / secondsElapsed

where proofsOfWork is the number of difficulty 1 proofs of work (aka shares) that the user or pool has found during secondsElapsed seconds.

If you use variable difficulty, then you can count a proof of work from someone mining at difficulty X the same as X proofs of work at difficulty 1.

For mhps divide by 1e6. For ghps divide by 1e9. And so on..

math.pow(2, 32) == 4294967296


Here is the full list of casascius coins.

According to that your addresses are:

134xRg9xsjvmyGxA2ndDbfEw3keqizwzWG
1359wf1p4wvw7SLa8Fktsg6eJMkbUaXp5y
1348FHtvGk6Cwv9PkFw52BKSQnm1Ujf9zb


If I've lost my wallet, but know my bitcoin receiving address, can I get my bitcoins back?

You can't get your bitcoins with just the receiving address (if that could be done, they could easily be stolen), so your only chances of retrieving them are:

If they're stored in the wallet file you have backed up, then you can use that
Somehow recovering the original wallet file, which is a data recovery exercise. This might be possible in the case of a failure or deletion of a hard disk, or a deletion from an SD card/memory stick


Mt. Gox operates a hosted (shared) EWallet.   They claim to have cold storage and perform other backup practices, but there is nothing that you as a Mt. Gox accountholder can do to "back up" those funds.  And if there is a problem restricting you from accessing your Mt. Gox account, there is nothing you can do to recover those funds.

If you have your own wallet, perhaps running the Bitcoin.org client, you then do have the ability (and responsibility) to back it up.


Why don't people buy at one exchange and sell at another?

Many people already do this with bitcoin. In finance, this is called arbitrage trading, or simply arbitrage, sometimes even abbreviated arb.

The reason for the price differences are fees for transferring between the bitcoin exchanges (you have to transfer both, bitcoins and fiat currency for a complete cycle) and fees for trading bitcoins against fiat currencies.

Because of the arbitrage traders, who make profits as long as the price difference is big enough, the prices on different exchanges quickly adjust to be right at the border between where the fees eat up the earning and where you make profits.

There is an excellent page, http://bitcoin-analytics.com , which can tell you where there currently are arbitrage oppurtunities. Simply go to the website and click on "Arbitrage".


51% attack and rewriting to the latest checkpoint

As long as both competing chain-tips are adhering to the same rules, the chain with the most aggregate difficulty ("heavier") will win, regardless of height. Nodes performing the initial sync would automatically end up on the heavier chain by comparing the aggregate difficulty of the chain-tips offered by their peers due to headers-first synchronization.
However, pruned Bitcoin Core nodes already in sync with the "lighter" chain would not be able to reorganize to the heavier if they no longer keep all blocks up to the common ancestor of the two chains. Instead, such a pruned node would have to resync from scratch.

If an attacker controlled hashrate equivalent to 100% of the SHA-256d hashpower they would today be able to rebuild a blockchain of the same aggregate difficulty as Bitcoin's in approximately 186 days.

The checkpoint system is deprecated (see e.g. this GitHub-discussion), instead new releases of Bitcoin Core since 0.14.0 by default use an assumed valid block. The performance of the initial synchronisation is hereby improved by the same mechanism as checkpointing used: Up to the height of the assumevalid block the verifying of scripts/signatures is skipped, only block validity is checked, the UTXO Set is populated, and any data on transactions that concern the node's wallet is collected.

The advantage of assumevalid over checkpoints is that it doesn't force the node onto a predefined chain. The user can pick another block or turn the feature off completely in the configuration of their node. Bitcoin Core by default uses a blockheight that predates the release by multiple weeks.

As such, the defense against such an attack could be to collectively agree to resync with assumevalid set to any block after the attacker's chain has forked off.


Why is Python popular in Bitcoin projects?

In comparison to languages like Java or C++, Python has several advantages for coding bitcoin projects:

Simplified rules of coding allows beginners and experienced alike to code and get results without getting bogged down in formatting etc
Shell allows on the fly calculations
Python code is easily read and as such can be edited to suit
Python can be compiled into an executable or run uncompiled

I suppose in essence, Python is great for small scripts/applications and these small applications often align with difficult Bitcoin protocol mechanisms which are greatly simplified.

The caveat of course is that most Bitcoin Python utilities (Pybitcointools, Pycoin, sx/libitcoin require Python version 2, whereas Python 3 is the current release and, mind-bogglingly, 3.x is not backwards compatible with Python 2

If you want to get a feel for what Python can offer check out either:

RICHARD KISS blog
RICHARD KISS YouTube class
KEN SHERIFF blog


How to retrive private key from MultiBit HD 0.5.1

Good day and thanks for replying.
In my first message I made an error. It was BTC and not BCH as I wrote. I needed the private key from my the BTC (December 2016 to October 2017) in the Multibit HD wallet to retrieve the BCH (split 1st of August 2017) and the BSV (from the split 15th November 2018), also in the future to claim my BCHABC (another split on the 15th November 2020)
Multibit HD is unfortunately not so easy to handle. It was the successor of Multibit Classic and in Classic it was easy to retrieve the private key, as it is in Bitcoin Core or other similar softwares. Multibit HD not so. There is not any way you can get your private key from within the software.
I have been in contact with the owners of Multibit, Shapeshift/Keepkey. They will not assist as they claim the software is deprecated. My personal feeling is not something I would like to share, but if a company buys another company and then makes it impossible to use the software and thereby making people lose money... Well I ain't buying anything from Shapeshift/Keepkey. Ever.
However after a lot of work and some great assistance I have been able to retrieve the private key from my Multibit HD wallet and then able to claim my BCH and BSV. Will also be able claim the BCH/ABC.
The main credit is to Joseph Dushesne. His "MultiBit-HD extract private keys modification fork" really worked. It really does. I followed it to the letter and even though his suggested version of java is not available anymore the version available right now did the job. The one thing I do not recommend is the last part about using an Electron Cash wallet. I used Coinomi instead and got excellent help from Brendon Spencer at Coinomi HelpDesk.
I did send something of value of the BCH to Joseph for his work. Maybe I should have sent more.. As my private key would have been gone forever without his help.
Here is Josephs solution:
https://github.com/josephduchesne/multibit-hd/blob/develop/README.md
Follow it. It works!
Also check Coinomis:
https://coinomi.freshdesk.com/support/solutions/articles/29000026274-bch-abc-bsv-fork-information-splitting
That will work perfectly and now I am awaiting the Coinomis solution to claim BCHABC.


How can I forecast the date Bitcoin will hit a certain blockheight?

Take the difference (in days) between the current date and the date you are trying to estimate the block height for.

Then multiple that difference by 24 hours and by 6 (6 blocks per hour)

Current block height + (difference in days) (144) = new estimated block height

Difficulty changes upon release of new ASICs or halving are temporary (average block time will eventually revert to 10 minutes) and hard to predict. Therefore they cannot be accurately modeled in any equation.


Coinbase to Coinbase off-chain transaction fees?

Does Coinbase pay miner or network fees when sending digital currency? is stated clearly here "Any transactions sent between Coinbase customers by email address take place off-chain (not on the blockchain) at no cost".
 Maybe Coinbase have a system that charges network fee as long as "addresses" are used.


Is there an open source (free) client or code for bitcoin transactions

In the past, I've implemented this just by asking the standard Bitcoin client to generate a few thousand addresses and then just have the web site give them out one by one. It's a bit slow generating the addresses, but if you let it run overnight, you'll have a virtually unlimited supply.

Don't forget to backup the wallet immediately after doing this!


You paid around $15 USD for the fees, the current average transaction fee today is 41 USD. Your transaction will either take quite some time or it will need a higher fee.


Is there any way to see the transaction code to find out what exchange my BTC is sitting on?

You cannot identify an exchange from a transaction-ID.


You provided the receiving address but not the sending address or the txid.

Is this your transaction sending 0.05277 BTC to that address?

https://blockchain.info/tx/1bd7d272d7c63984608089a31e66b05c873fd7b9d50021129b87584202438a55

If that is not your transaction then has not yet been transmitted to the network. The above transaction is the only transaction involving the address you specified: 1MJW5uSqvsdey6DnAsMo21WZ6bhehaVtKq

Where did you send the payment from? Some online exchanges say they "sent" the transaction and deduct btc from your balance before they actually transmit it. Until you see a transaction ID on the blockchain I would continue to assume it has not been sent.

How you can receive your "bitcoin back or cancel" is dependent on who controls the wallet the transaction is intended to be sent from.


What are the equations to convert between bits and difficulty?

Answer shamelessly stolen from stackexchange:

  Difficulty encoding is thoroughly described
  here.

  Hexadecimal representation like 0x182815ee consists of two parts:

  0x18 -- number of bytes in a target
  0x2815ee -- target prefix

  This means that valid hash should be less than
  0x2815ee000000000000000000000000000000000000000000 (it is exactly
  0x18 = 24 bytes long).

  Floating point representation of difficulty shows how much current
  target is harder than the one used in the genesis block.

  Satoshi decided to use 0x1d00ffff as a difficulty for the genesis
  block, so the target was
  0x00ffff0000000000000000000000000000000000000000000000000000.

  And 50810339.04827648 is how much current target is greater than the
  initial one.

How the Bitcoin client converts from bits -> difficulty:

uint256& uint256::SetCompact(uint32_t nCompact, bool *pfNegative, bool *pfOverflow)
{
    int nSize = nCompact >> 24;
    uint32_t nWord = nCompact & 0x007fffff;
    if (nSize <= 3) {
        nWord >>= 8*(3-nSize);
        *this = nWord;
    } else {
        *this = nWord;
        *this <<= 8*(nSize-3);
    }
    if (pfNegative)
        *pfNegative = nWord != 0 && (nCompact & 0x00800000) != 0;
    if (pfOverflow)
        *pfOverflow = nWord != 0 && ((nSize > 34) ||
                                     (nWord > 0xff && nSize > 33) ||
                                     (nWord > 0xffff && nSize > 32));
    return *this;
}

How the Bitcoin client converts from difficulty -> bits:

uint32_t uint256::GetCompact(bool fNegative) const
{
    int nSize = (bits() + 7) / 8;
    uint32_t nCompact = 0;
    if (nSize <= 3) {
        nCompact = GetLow64() << 8*(3-nSize);
    } else {
        uint256 bn = *this >> 8*(nSize-3);
        nCompact = bn.GetLow64();
    }
    // The 0x00800000 bit denotes the sign.
    // Thus, if it is already set, divide the mantissa by 256 and increase the exponent.
    if (nCompact & 0x00800000) {
        nCompact >>= 8;
        nSize++;
    }
    assert((nCompact & ~0x007fffff) == 0);
    assert(nSize < 256);
    nCompact |= nSize << 24;
    nCompact |= (fNegative && (nCompact & 0x007fffff) ? 0x00800000 : 0);
    return nCompact;
}

Converting from target to difficulty, in shell. Create file target-to-difficulty.sh:

#!/bin/bash
echo "ibase=16;FFFF0000000000000000000000000000000000000000000000000000 / $1" | bc -l

Usage:

$ ./target-to-difficulty.sh 000000000000000024DBE9000000000000000000000000000000000000000000
29829733124.04041574884510759883


Does sending from a green address improve my anonymity?

No, your theory is incorrect. If anything, the green address makes it easier to trace.

If I see a transaction from an Instawallet green address, I subpoena Instawallet and ask them who commanded them to make that transaction. Boom, they found me.

If I don't use a green address, how can they tell the coins came from Instalwallet at all? How would they even know who to subpoena?

  If I send the coins directly from my wallet, the merchant could likely trace the coins back to the exchange where I originally purchased them, and possibly issue a subpoena to the exchange (which likely knows my identity).

So what? If some dollar bills were used to buy drugs that I withdrew from an ATM machine, what does that tell you? And how would they trace the coins to the exchange exactly?

  Whereas, if I send the coins via a Green Address, the merchant could not trace the coins upstream at all - even if they issued a subpoena to InstaWallet, there should be no way to determine the original source of the coins.

I don't follow your reasoning. They subpoena Instawallet and ask them which user commanded that transaction through their green address. They identify you. They're just saved the hard work of trying to trace the coins to an exchange.

It's pretty much academic anyway. There's no good way to tell a sham transaction (where the sender and recipient accounts are controlled by the same party) from a real one.


How to migrate wallet from namecoin to namecore?

Meanwhile I've answered this question at reddit.

You have already taken the first 2 out of 3 steps necessary for your wallet migration: (1) cleaned up the data directory that contained old incompatible files, (2) dumped and imported the private keys from the old wallet (alternatively, depending on how old the wallet is, one could try starting the new namecore client with the -upgradewallet parameter).
The internal bookkeeping hasn't had a chance to detect the old transactions that belong to the newly imported private keys, yet. This is the missing third step: (3) Restart namecore (i.e. namecoind) with the -rescan parameter.

In short: Now you need to restart the new client with the -rescan parameter.
EDIT: Generally I recommend using namecore's new -upgradewallet parameter:
namecoind -upgradewallet -rescan -reindex
as the dumpprivkey/importprivkey approach always bears the risk of confusing the relevant name_update transactions and addresses with older ones. If you do not know how to use the (deprecated) name_debug1 command in Namecoin-Qt then you most likely get it wrong.


Does the Taproot update benefit all bitcoin users? or is it for a selective amount of people

Bitcoin transactions require a certain size and with taproot and tapscript we can decrease that size.
This means that effectively we will be able to store more transactions in one block allowing overall a slightly higher throughput of bitcoin transactions in the network.
So even if you continue to use legacy transaction formats you might still benefit from the fact that the blockchain might be less congested as it can fulfill a higher demand with the same space.
Of course if you want to use it you will need a wallet / software that supports the new format but as it seems it will be merged to bitcoin so modern wallets should be compatible and also implement it.
The only direct benefit that you get from switching to taproot is that your tx will be smaller in size allowing you to either save on fees or if you want to pay the same fees allow you to have a higher feerate. Though miners are not forced to mine transactions with highest fee rates first they are certainly economically incentivized to do so. Thus besides doing something good for the network your tx might also be confirmed faster.


If someone bought an old computer and found Bitcoins in it, could they use it (legally)?

This is going to depend a lot on many surrounding facts. Including where this happens. How you acquired the computer and whether you know who the owner is.

I'm most familiar with the law in Australia (Victoria) where stealing is defined as follows: "A person steals if he dishonestly appropriates property belonging to another with the intention of permanently depriving the other of it." I imagine many common law countries have relatively similar definitions (with important differences for edge cases, of which this is one).

If you see bitcoins as property then your example involves theft. I think most jurisdictions will define bitcoins as a form of property, if they don't there would be all sorts of tax issues. This would be the case in Australia and it would be theft.

To me I don't think this is analogous to finding a pile of cash inside a used bag. I think it is closer to find someone's internet banking username and password inside a bag you purchased. Bitcoins are not physical and the private keys (which is what you would find) merely grant you access to them. Most people would agree that doing anything with the internet banking details would be dishonest.

The difference in my example would be whether destroying the keys would be a crime. It is unlikely to be a problem with internet banking details as there is no expectation this would permanently deprive the person of their property. With bitcoin you don't know if there is a backup so you would at least be recklessly dealing with someone's property.


Is the threat of computer malware to steal Bitcoin exaggerated?

Currently attacks against Bitcoin users can be categorized as

"Normal" keylogging malware which stoles credentials to Bitcoin sites and steals Bitcoins from your online wallet (unless you have two-factor authentication). These kind of malware infections generally steal all your passwords, including Facebook, PayPal, and they do not especially target Bitcoin users.
Password reuse attacks - if you have used the same password on some other sites, your username and password are stolen or taken from the site and then tried on all popular Bitcoin sites. This may especially happen with shady services like faucets which promise "free bitcoins" if you sign up.
Phishing attacks, both via email and Google advertisements. E.g. if you search BlockChain or LocalBitcoins on Google, the first "result" is an advertisement leading to a phishing site. The user gives his username and password on the phishing site, then the site will empty the wallet on the actual Bitcoin site the user thought he/she was logging in.
Malware and computer viruses targetting locally installed Bitcoin software. These steal wallet.dat or unencrypted copy of it from the memory when you unlock it.
Malicious browser addons (Chrome) targetting popular Bitcoin sites. These may modify Bitcoin receiving address on the page in-fly, so that they can get around two-factor authentication protections set up by Bitcoin sites.
Malicious Tor exit node attacks - if you want to hide your tracks using Tor network, there are malicious exit nodes which will do HTTPS man-in-the-middle attack using fake security credentials. The web browser warns about this, but an ordinary user may ignore the warning.
Social engineering attacks. If you are a "known Bitcoin celebrity" criminals might to attack your personally, by phone calling you and posing as a service operator, police etc. They might go after your ISP, email provider, etc. and try to social engineer access to your email.
Very difficult to pull attacks, like rerouting all Internet traffic just to gain access to Bitcoin mining pool IP addresses

There are already 100+ strains of malware targeting Bitcoin users. Because Bitcoins are easy to steal from careless users, it seems to be profitable to include Bitcoin-stealing capabilities in all malware kits. In the light of this, malware threat against Bitcoin users is not exaggerated.

Of course, to get your Bitcoins stolen by malware, you need to get your computer infected. The ways to protect yourself include

Do not install applications or browser extensions on your computer from non-trusted sources, especially pirated applications or random download sites which offer Microsoft Windows application downloads. Always download all Windows software from the webpage of the software author. For OSX or Linux use App Store or the Linux distribution package manager.
Always keep the software on your computer up-to-date. Nearly every vulnerability widely exploited by cyber criminals has already been patched by the software manufacturer.
Use safer operating systems like Ubuntu Linux and OSX instead of Microsoft Windows, to lower the risk to get infection on your computer
Use password management software, like KeePassX, and random password on every website
Keep most of your Bitcoin holdings offline, on a separate device not connected to Internet


base58 cannot get 34 chars results (as Bitcoin address does) but 68 chars

When you use that site, you are encoding the hex as a hex string, not of the actual bytes that they should be. The base58 encoding for addresses operates on the bytes themselves which are represented in the hex string. However that website is just encoding the hex string (which, as bytes, is double the length and is entirely other data).


You have the first part right. REDD and RDD use the same pub/priv encoding scheme. Therefore we can simply export the privkey of his RED deposit address and import it into the REDD wallet. Then rescan. This does take time and we are working on ways to automate this. (It happens quite often ) -Mullick "Technical Support Manager"


bitcoind uses a ton of memory while it's downloading the blockchain. Check out these steps on how to set up your swap space correctly on Ubuntu:

https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

Additionally, you can check out the torrent download of the blockchain. As long as you trust the file, this can help speed up the time to download the blockchain.

http://sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain/bootstrap.dat.torrent/download


Does Proof of Stake Lead to a Positive Feedback Loop?

Even if the dynamics are interpreted in the most basic way, it does not lead to this positive feedback, rather it maintains the status quo. If there are miners with stake of 40%, 30% and 30%, they will get 40%, 30% and 30% of the rewards respectively, so the ratios will remain at 40%, 30%, 30%.

For example, if they start with 40, 30, 30 BTC, and 10 new coins are generated, they will be distributed 4, 3, 3, so the new wealth will be 44, 33, 33, which is still a ratio of 40%, 30%, 30%.


Hierarchical Deterministic (HD) Importing Funds

Is there a neat way to pull in all funds that derive from a "master key". Or, have I misunderstood deterministic benefits - am I trying achieve a non existent feature?

If you import your master key (which may be in the form of a mnemonic or an xprv...), any BIP44 compliant wallet should be able to locate all the funds, provided you followed BIP44 when generating and using addresses.

If not, then you will have to import each key individually.


Seems like you are on testnet... INPUTS minus OUTPUTS = TX FEE.
So better to create a return adress. If there is only one UTXO in your wallet, and it has let's say 0.005 in it, by your line it would give 0.004 to the miners. So better to add a return address. You would have to add an address of your wallet.
I haven't worked out the params field, but there should be an option to add a second param for output address?


Is there a simple reference implementation of ECDSA algorithms?

I wrote the Ruby ECDSA gem and I would say the code is pretty simple.  That was one of my main goals.

https://github.com/DavidEGrayson/ruby_ecdsa


A closer look at their API page, you will find LakeBTC has provided a simple code for Python: https://github.com/LakeBTC/lakebtc_python

And others Sample Code you can find here: https://www.lakebtc.com/s/api include PHP, Node.JS, Ruby and Python, maybe will more Code in the future :)


How can I convert Bitcoins for withdrawal to PLN

Intersango trades BTC/PLN and offers free domestic withdrawal as PLN.

https://intersango.com/fees.php
https://intersango.com/orderbook.php?currency_pair_id=4


Bitcoins with several laptops with no electricity cost. Is it profitable?

Well instead of several laptops, and setting so many PC's that are not designed for this kind of work, and be set on fire after a day working. Why not consider taking some
 Acalon or Antminer R4, or something that is worth it.
 However using electricity is never a good idea, it is not cost efficient to mine on electricity.
 You can buy a bike instead :) and produce it yourself. Just a joke, there are different cheaper ways to make it work.


How instantaneous is a Bitcoin transaction?

Bitcoin transactions are saved in a ledger. There needs to be a way for everyone to agree on the same ledger. In bitcoin this is done by making sure that the only valid ledger is the one where more computing power was put into it to "generate it". There's a lot of other details, where the ledger is actually a block chain, but overall the idea is that of "the most computing power" is the rule behind how nodes accept the main ledger.

With this in mind, it still could happen that someone with a large amount of computing power may create a ledger that replaces the one that is currently accepted by the network. Because of how the block chain works, this is exponentially harder to do for every block in the ledger that is generated/found.

So to answer your question to "why is it that we need to wait for 5-6 confirmations", it's because a malicious party with lots of computing power could hypothetically replace the latest 2 blocks or so. But, to replace the latest 5 or 6 blocks it becomes so hard that it's virtually impossible for it to happen. Therefore, a transaction without any confirmations is "less secure" than a transaction with 5 confirmations. The more the confirmations, the more secure a transaction is.


GUI Miner no responses to getwork, and Verification failed

An answer can be found on bitcoin talk

https://bitcointalk.org/index.php?topic=177855.msg1852355#msg1852355

Quote from deepceleron on bitcoin talk

  This is your GPU returning invalid hashes from it's kernel. This is
  because new drivers are crap for older cards.

  Uninstall AMD APP SDK
  Uninstall AMD Catalyst Install manager: choose "uninstall all software", make sure you have only a VGA driver after restart.
  Manually remove these files not removed by the installer; any other obvious ATI files with the same file date:
  C:\Windows\System32\amdocl64.dll   C:\Windows\System32\amdoclcl64.dll
  C:\Windows\System32\OpenCL.dll   C:\Windows\SysWOW64\amdocl.dll
  C:\Windows\SysWOW64\amdoclcl.dll   C:\Windows\SysWOW64\OpenCL.dll
  Install just the Catalyst 11.11 driver package (no SDK is needed; the AMD APP runtime is included with driver)
  Mine just a bit slower on your 6870 than a 5830 would.

  Better:
  - use cgminer
  - set phatk worksize to 256 and underclock GPU RAM to 300MHz for best power efficiency and higher hashrate

The big thing to take away from this:
set phatk worksize to 256 and underclock GPU RAM to 300MHz for best power efficiency and higher hashrate

A suggestion i can give you is that bitcointalk can be a great place to find the answer to a lot of off the wall questions related to bitcoin or any alt-coin.


What would happen to the Bitcoin network if all ISP's collectively block port 8333 at once?

The core developers could decide on a new port then get the word out that everyone should start using that port.  It's a very easy change in the bitcoin.conf file.  Mining pools, online wallets like blockchain.info and Coinbase, and "light" wallet providers like Electrum could lead the way.  (For example, once blockchain.info made the port change on their server, all their users would automatically have service again).  I think it would recover quite quickly.

The new port could also be shut down but it would turn into a game of "whack-a-mole".  The developers would probably come out with a new release that used some kind of strategy to dynamically search for a port to use to solve the whack-a-mole problem.

Alternatively, there is no reason they could not just switch to using port 80 for bitcoin.  The main disadvantage is it would make it a bit more complicated to run a web server and bitcoin node on the same machine.


What is the significance of the version byte in front of RIPEMD-160 hash?

The version byte is used to differentiate between MainNet and TestNet addresses as well as between P2PKH and P2SH addresses.


datadir compatible between 0.14.0 and 0.14.1

Switching between different computers/platforms should work. Don't try to use a NAS (network attached storage).

Always make sure you did a clean shutdown before switching the computer(platform.

Make sure you either use the binaries from bitcoin.org or compile with the same berkleyDB version (to ensure to not break the wallet.dat database).


How to import Multibit HD Wallet in bcoin?

MultiBit HD uses a BIP 32 derivation path that is different from basically all other wallet implementations. MultiBit HD's derivation path is m/0'/0/i whereas most wallets use derivation paths set by BIP 44 which is m/44'/0'/0'/0/i. So when getting addresses from a MultiBit HD seed, you will need to use MultiBit HD's derivation path instead of the default BIP 44 one used by most wallet software.


Transaction fees are voluntary but the client application is forcing the minimum transaction amount of .005.  It's been a long time since I've used the standard client.  .005 sounds correct.


The following offer sales of bitcoins in larger quantities:

Tangible Cryptography sells coins received for its bitcoin cash-out service FastCash4Bitcoins.com
Bit-Pay Merchant Services, a merchant processor (minimum $10K transaction)


How does bitcoin's price volatility compare to commodities/stocks with comparable market capitalizations?

You wrote: "Price volatility of individual commodities/stocks is inversely correlated with their market cap". There is just a coincidental correlation between the two. Instead, I would say that there will be price volatility when investors are unsure about the value of an asset. You can see this with the value of for example Facebook. It is just very hard to judge the value of their assets, regardless of their huge market capitalization. Similarly, the value of Profit Points (which I invest heavily in at the moment) will heavily depend on the expectation of future profits of Open-org.com. On the other hand, one has government bonds, which have a very stable value, because it is relatively easy to calculate their value and there is usually not large risks involved.

Just to be clear about the value of Bitcoins...
If you buy Bitcoins you get a share of the future output of the Bitcoin economy.
You can see the master himself (Warren Buffet) explain this here. I believe that it is hard to judge what the future output of the Bitcoin economy will be, but it will be easier and easier the bigger the market capitalization of the Bitcoin economy, so for Bitcoins there will be a correlation between the two, but other factors like risk of government crackdown will also affect the volatility.


Why different coins have different number of confirmations?

It's not actually confirmations that are important, but the amount of work that has been done on top of a block.  With this in mind, coins that have a target time that is different than Bitcoin's (10 minutes) will have a different amount of work going into a single block.  For example, if the target time for a coin is 1/4 of what Bitcoin uses, than you'd need 4 times as many blocks to consider it just as safe.

There are also other factors that go into how safe a block is from being orphaned after it is initially accepted, but they mostly have to do with mining centralization and the availability of mining power that is not currently on the network.  The main factor is the target time.


How to distribute UTXOs in hard fork while preserving privacy?

At the point of the fork, both chains are identical, and thus all UTXOs are identical. All spends of those outputs are completely public as always, in the blockchain. So your question really comes down to whether you can hide which UTXOs you are spending in a given transaction, with or without the fork. The only way I know how to do that is via mixing. If you send your transactions in each chain to a mixing service, you'll end up with different outputs on each chain. The untraceability of the mixing is then dependent on things like how many other transactions are being mixed at the same time (on a new fork, there may be fewer people sending coins), or whether the value of the output you're spending is identifiable coming in and out of the mixing.


How to upgrade Bitcoin Core Version on Raspberry PI?

They are referring to executable binary files, either the bitcoind daemon or the bitcoin-qt GUI app.

The page with download links is https://bitcoincore.org/bin/bitcoin-core-0.16.1/

The only link for ARM (Raspberry Pi processor) is https://bitcoincore.org/bin/bitcoin-core-0.16.1/bitcoin-0.16.1-arm-linux-gnueabihf.tar.gz and expanding it

$ tar -xf bitcoin-0.16.1-arm-linux-gnueabihf.tar.gz

I find these directories:

~/bitcoin-0.16.1$ ll
bin/
include/
lib/
share/

~/bitcoin-0.16.1$ cd bin
~/bitcoin-0.16.1/bin$ ll

bitcoin-cli*
bitcoind*
bitcoin-tx*
test_bitcoin*

I don't find a bitcoin-qt GUI version; perhaps they have not compiled one yet. But you can certainly use the command-line versions, bitcoind, bitcoin-cli and bitcoin-tx.

The place to put them is where they will be found from anywhere, for example, /usr/local/bin   or /usr/bin.


How can I track all trades at an exchange such as GDAX

"Can I track all trades on an exchange, not just my own" yes. visit https://docs.gdax.com/#get-trades for additional information. this trades are afaik anonymous so you can not track who did which trade.


Can a 'free' Bitcoin 'marketing' ad be checked in any way

Yes, this is very obviously a scam.

For some reason, some people seem to lose common sense when Bitcoin (or cryptocurrency in general) is involved. So here is a really quick way to check if an offer sounds legit: Consider the same situation, but using $USD (or your local currency of choice).

For example:

It advertised free dollars if you send in dollars, eg they will send you back 10x what you send in from $500 to $100,000!

Does this sound believable? What about:

It advertised free bitcoin if you send in bitcoin, eg they will send you back 10x what you send in from 0.1 to 20 Bitcoins.

(At the time of writing, 1 BTC is worth approximately $5K USD).

Ask yourself: what business would do well to give away $100K USD worth of anything to random people on the internet?

If it sounds too good to be true it probably is.


Get transaction fees per transaction via gettransaction

If you want to get the gettransaction command running, you would need to enable the txindex via bitcoind -reindex -txindex. Note this takes a few hours.

Alternatively, you can do the following:

run bitcoin-cli getblockhash <block number>
run bitcoin-cli getblock <result from 1>

This will give you the block time and all the transactions within the block in a nice JSON format. Iterate through all the txid's via:

bitcoin-cli getrawtransaction

Unfortunately, you'll have to look up all the inputs and see how much is in them in order to calculate the transaction fee using this method.


Bitcoin Performance: What does Hashes/Second Mean?

SHA256 uses a compression function that maps a 64 byte input block and a 32 byte chaining state to the next chaining state. It divides the message into 64 byte blocks and hashes those sequentially.

The bitcoin proof of work uses SHA256(SHA256(block_header)). Between each hashing attempt only 4 bytes in the last block of the header change, so for each hashing attempt you only need to compress that last block of the message and then one compression for the outer hash.

So one bitcoin hash corresponds to two SHA-256 compressions. In definition of "Hash/s" says how many nonces can be evaluated per second which is a meaningful definition in this context.

The header contains the (root of a tree)hash of the actual block. But since the actual block only changes every 4 billion nonces, the cost up updating it is small compared to the cost of hashing the header. That's why it's neglected in those performance claims.

To compare different hardware you need to use miners specialized for that hardware. There are CPU, GPU, FPGA and ASIC based miners. Mining hardware comparison on the bitcoin wiki lists the performance of many different kinds of hardware. Nowadays only ASIC is competitive, for other kinds of hardware the cost of buying and electricity exceeds the earned bitcoins.


The block reward for successfully mining a block is currently 12.5 BTC.

By participating in a mining pool the group has a significantly higher chance as a whole of solving a block. Rewards are then shared based on a formula. It can be suggested, though it is not always the only factor in the formula for a mining pool, that your individual hash rate as a share of the pool total hash rate determines your share percentage.


Within an exchange's ledger system, value may be moved between accounts without creating actual transactions in the public Bitcoin ledger, the blockchain. Exchanges that use this method keep all of their reserves in one set of accounts and simply debit and credit user accounts as necessary. Only when a Bitcoin transaction is necessary to move value from one account to another outside of the system will a Bitcoin transaction be created and broadcast.

In other systems, an exchange or other entity may actually create a new Bitcoin transaction for every trade. This method is more inline with the ideals of Bitcoin, but costs more because of the transaction fees necessary to expedite/facilitate processing.


Why do I get `bitcoind: command not found` in Ubuntu?

Go to the directory with the bitcoind binary.

Make sure it's executable:
chmod +x bitcoind

Now run it:
./bitcoind -daemon


Can synchronization be interrupted and continued later?

It takes a long time (maybe a couple of days) to download the entire blockchain. You can interrupt it at any time and it will continue where it left off when you restart the Bitcoin client.

The blockchain (which is the public transaction ledger) is independent from your wallet (which is your private keys). You can load your old wallet into the Bitcoin client at any time.


In Getwork, how does one calculate the value of Hash1?


What has the nonaggression principle to do with bitcoin trading?

Book author here! It's because Ulbricht subscribed to the tenets of Anarcho-Capitalism, and founded his drug market as an exercise in ideology. As it happened, the FBI didn't find this a compelling excuse.


Can wallet created from Bitcoin core be transferred to an Android device?

Even if it is NOT recommended (especially if you want to store a considerably amount of funds), it is possible to share a "wallet", or more specifically a Private Key, from one wallet app to the other. Bitcoin wallets are just keychains, they only contain keys, you can have the same private key in both apps.

It is not recommended because it's more likely that you can get your phone stolen than your computer, especially if it's not a laptop but a desktop computer, also mobile wallet code and mode (light wallet or SPV vs full-node) can be weaker. Sharing private keys means that who first gets the access to the wallet or the key directly can spend the funds.

Here's how to share it anyway:

You can easily export your private key using the dumpprivatekey command from Bitcoin Core (here's how to export it on Bitcoin Core GUI, or bitcoin-qt, if you don't have the qt version you need to launch the command via bitcoin-cli and enter the same commands)

Then you can take any Mobile wallet with import private key capability like Mycelium (Android) or BreadWallet (iOS) and import it via their "import private key" feature.

In Mycelium, to import a private key, you have to click the hamburger button, then select "Cold storage" and then Clipboard (you need to securely send your private key from your computer to your phone, this usually means no email and no standard IMs, the safest way is to transcribe it manually). Also note that you need to password protect your wallet (preferably with a strong password) or users that can access your phone will be able to spend your funds, Mycelium will warn you if you don't do it.

Also note that bitcoin-qt and Bitcoin Core don't use HD or BIP32, this means that you get less anonymity if you reuse the same address or if you don't import a large number of keys, to have multiple "change" addresses available in both wallets.


Installing insight blockchain explorer - is bitcore mandatory?

Bitcore is a javascript library for interacting with Bitcoin. Bitcore is built on top of bitcoind and doesn't replace it.

Insight is probably the simplest way to run explorer-style queries if you've already got bitcoind set up.

Alternatively: I believe btcd and Toshi offer similar functionality, but with different implementations than bitcoind.


balance of sub-wallet not in main wallet address (blockchain.com)

A wallet service or application will not be watching all possible derivation paths.  Yours at 0/77 is definitely not a standard derivation and you should not expect any wallet to pick up on transactions sent to addresses under that path.


What block space savings would we get for coinjoins (and payjoins) if we had cross input signature aggregation?

Cross-input signature aggregation (CISA) refers to an idea to produce one shared signature that covers multiple inputs in one transaction. The aggregation is made possible by the linearity of the Schnorr signature algorithm. Note that CISA seems to be mostly interesting for key path spending and this answer will not look at script path spending at all. Further, CISA is a feature in the idea/draft stage and a potential implementation could significantly differ from my current understanding.
Assuming that Taproot activates as it currently is proposed, signature aggregation (for key path spends) would likely require a new output type. Let's assume that Taproot activates as currently proposed and the new output type that supports signature aggregation is otherwise equivalent to Pay to Taproot (P2TR) in all regards.
In P2TR, signatures are part of the witness section of the transaction, and thus they are subject to the witness discount. As proposed by BIP340, Schnorr signatures are 65 bytes (32 bytes for the r value, 32 bytes for the s values, 1 byte for the sighash value). Each input covered by the aggregated signature would see its signature replaced by a one byte placeholder, except for the last input whose witness would contain the aggregated signature. Given a transaction with n aggregated inputs, the savings would be (n-1)×64 WU (weightunit) assuming no additional overhead is necessary for the cross-input signature.
In a P2TR transaction, a key path input weighs 230 WU (57.5 vB), the transaction header weighs 42 WU (10.5 vB), and a P2TR output is 172 WU (43 vB).
Let's assume that a coinjoin transaction is created by multiple participants where each participant contributes two inputs, one recipient output, and one change output. If each user performed this transaction separately without CISA, each user would incur a transaction weight of:
42 WU + 2×230 WU + 2×172 WU = 846 WU.
With CISA, the cost for a single participant just aggregating the signatures of their two inputs, this cost would reduce to:
42 WU + 2×230 WU - 64 WU + 2×172 WU = 782 WU.
When two participants throw in together, the cost per participant would go down to:
(42 WU + 4×230 WU - 3×64 WU + 4×172 WU) / 2 = 1458 WU / 2 = 729 WU.
For five participants the cost per user would become:
(42 WU + 10×230 WU - 9×64 WU + 10×172 WU) / 5 = 3486 WU / 5 = 697.2 WU
For ten participants, the cost per user is:
(42 WU + 20×230 WU - 19×64 WU + 20×172 WU) / 10 = 6866 WU / 10 = 686.6 WU
As you can see, the cost per user decreases with the number of inputs/participants, and thus there is an economic incentive for multiple users to create a transaction together. However, the savings are limited in that they asymptotically approach 64 WU per input as the input count increases. The greatest savings are achieved by the first two participants joining up, with each additional user bringing diminishing returns. If a user already has a lot of inputs by themselves, coinjoining provides them only with marginal savings since the savings by joining with others are fixed to splitting the header and last remaining signature by the number of participants.


Pay with BTC in online stores accepting only CCs

so depends on what you are looking to buy. I know someone that used XCH4NGE lifestyle to buy a car recently. you can find them on twitter. @xch4ngelifestyle.


How does lending / leasing in NXT work? What are some use case scenarios?

Leasing gives the other account your forging power, without giving them the ability to spend your coins. The two main use cases are:

To lease to a forging pool run by someone else. This avoids the need for you to run a server 24/7, and the pool should forge more often, smoothing out the peaks and troughs in forging income.
To lease to a forging node run by yourself, but on a machine you don't trust; for example a cloud service. You keep your balance on a secure machine and lease it to the insecure one.


how to import private key without scaning QR code

Your QR code contains your private key, but yes you can recover with the private key directly if the QR code is now physically damaged.

I do not see that option for blockchain.info (which you stated you are trying to use in your comment):

https://blockchain.info/wallet/import-wallet supports QR codes Bitcoin-Qt (wallet.dat) and blockchain.info (wallet.aes.json) files.

Try one these methods instead (or choose another wallet which you prefer):

http://themerkle.com/how-to-recover-your-bitcoins-from-blockchain-info-using-electrum/

https://multibit.org/en/help/v0.5/help_importingPrivateKeys.html

https://en.bitcoin.it/wiki/Help:How_to_import_private_keys_in_Bitcoin_Core_0.7%2B


Can I use walletnotify or blocknotify remotely with a NodeJS application?

In your example you are telling it to place the transaction id as a GET request in the URI under the tx parameter.

walletnotify=curl http://My.IP.Address:PortAppUses/walletnotify.js?tx=%s

All you would need to do inside of walletnotify.js is pull the tx GET, in nodejs express that would be something like:

const express = require("express");
const app = express();
const request = require("request");

app.get("/", function(req, res){

    let transactionId = req.query.tx;

    //do whatever with transactionId

});


Why does a larger block size infer a bigger attack vector

Usually Denial Of Service(DoS) attack may take place on larger sized blocks.So to avoid this condition initially block size Bitcoin was chosen to be 1Mb. Because attacker sends a lot of data in the network to make it busy so that the actual transactions are not able to take place.
Along with reducing block size other methodology which is adopted in Bitcoin are:

No forwarding of orphaned blocks
No forwarding of double-spend transactions
No forwarding of same block or transactions
Disconnect a peer that sends too many messages
Restrict the block size to 1 MB
Limit the size of each script up to 10000 bytes


Why aren't block hashes used directly as scores for difficulty purposes?

Background info:

The block hash must be less than a certain value (as defined by the difficulty function) in order for the block to be valid.

Generally, as time has progressed, network difficulty has increased. So as the blockheight has increased, the cutoff value for a valid blockhash has decreased.

—————

  Why not just e.g. add together all block hashes (as bigints) and consider the longest chain to be the one with the biggest or smallest sum?

I think it may be easiest to explain why this sort of implementation is broken by giving an example. Let’s consider a system following the ‘smallest sum for a given blockheight’ rule:

—————

For simplicity, let’s imagine a pow function that has an output value range of 1-100. Let’s say the network difficulty is currently set so that any output of 10 or less is valid.

Now, miner A finds a block at height X, with blockhash 10. This is valid, and so it is added to the chain.

Miner B sees this, but continues to mine blockheight X, because if they can find a block with hash 9 or less, then their new chain will replace the previously accepted one. By forcing a reorganization this way, they may be able to successfully commit a double spend attack, etc.

—————

This example shows how a miner could game the algorithm to rewrite the blockchain. The same is true for a ‘largest sum for a given blockheight’ rule: if a miner finds a small blockhash (eg. Blockhash = 5 in the example above), another miner could profit by continuing to mine on the older block, forcing a reorganization if they find a block with a larger, but still valid, blockhash.

For the bitcoin network to function properly, the game theory needs to incentivize miners to always mine at the chain tip. Using a difficulty function instead of the explicit blockhash value helps ‘level the playing field’, so to speak. This is because any valid blockhash is no better or worse than any other valid blockhash.


How to move sync's data to another partition after run Bitcoind for a while?

I have try to ran the bitcoind -data-dir=/data/db -daemon , but it's not write the data to the path where I specify. Actually, The right way to do that with :

bitcoind -datadir=/data/db -daemon

Attention

   -data-dir --> -datadir


How does Transaction Remote Release work?

TRR is like Tor in that it chooses random routes, and uses public key cryptography to secure communications. The major difference is that where Tor creates long-lasting bidirectional channels, TRR would use low-latency single-use one-direction transaction forwarding. At time of writing, there doesn't seem to be a public TRR implementation, so I'm basing this off of this paper.

There is one missing part, though.

Tor uses something called "perfect forward secrecy." In Tor, the private key of a node is useful for pretending to be that node, but it can't be used to decrypt communications after the connection has closed.

To see why this is useful, imagine the following scenario: Your ISP captures a TRR encrypted communication. They see that the first encrypted portion was sent to A. They find A, and get their private key. They decrypt the first layer of the message, and see that the second node is B. Repeat until they see what transaction was hidden within.

This works even though A, B, and C never kept any logs of where they sent the transaction. The way to fix this is either:

use the node's private key to establish an intermediate key, and throw the intermediate key away after the connection closes, or
rotate the node's key very frequently, at least every hour.


What is the current Status of major proposed BTC upgrades like Taproot, MAST, Submarine Swaps?

1) MAST: Essentially folded into Taproot

2) Taproot: Planned to be part of the upcoming SegWit V1 softfork. A formal proposal for that has been about two weeks away for half a year, so could appear any day now. ;)

3) Schnorr: All SegWit V1 transactions will only allow Schnorr signatures and no ECDSA signatures. I am not sure whether the first release of Schnorr signatures will include any form of signature aggregation beyond the one used in correspondence with public key aggregation, i.e. making multisig look like singlesig.

4) AFAIU, Submarine Swaps have been implemented in both directions. The variant from chain to Lightning has been live for a while and Lightning Lab's Lightning Loop has greatly simplified offering Lightning to on-chain transition.

5) Lightning Network is mostly for masochists, enthusiasts, and experts still. If you're attempting to dive-in at this time, I would suggest to bring a good amount of frustration tolerance. ;)

6) I talked to Paul about that a bit a few weeks ago. He's making progress. There are some disagreements on whether or not he has been able to solve the challenges that caused other sidechain projects to be severely delayed. I am not sure whether deployment requires a softfork, but the drivechain doesn't appear to have achieved broad interest at this time.

7) I know nothing about Lightning over NFC.

All of the above from the top of my head and probably in dire need of corrections and/or substantiation. Will edit as people tell me where I'm wrong. :)


Can the change address be in a different account after using sendfrom ?

You misunderstand how accounts work.

All coins in a wallet are always shared between all accounts. When creating a new transaction, the coins are taken from the entire set a wallet has access to - independent from how these were obtained.

Accounts are just bean counters - virtual balances. When a transaction is received that spends to address X, and address X has label L in your wallet, account L is credited with this receive. If you use sendmany or sendfrom and specify a from account, that accounts' balance is decreased by the amount of value that leaves your wallet through that transaction.

Change does not exist in this high level view. It is not money that is entering or leaving your wallet, and thus cannot affect any balance.

Accounts are a confusing feature, its use cases are limited, and have several implementation problem. In many cases, people assume they behave as independent wallets, which is not the case. They may be removed in some later version.


What different options are there to start bitcoin on command line?

On command line bitcoin can be started in several ways

bitcoind starts a process with the current user. This way the home directory of this user will be searched for a config file and will be used as data directory as default.

service bitcoin start will use the startup script /etc/systemd/system/bitcoind.service. This might contain a link to a configuration file. In my case this config file did not contain of a data directory which I found troubling. But the solution is that it contains a user. This user's home directory is then automatically referred to.

So, in my case I was using the terminal as user pi and had to start the process as user bitcoin instead. This can be done by

sudo runuser -l bitcoin -c 'bitcoind'


You need to have a bitcoin address in order to send and receive bitcoins. To do this, choose a bitcoin exchanger to set up one.


How is a NXT account address generated? Why do we need to send out a transaction in NXT to secure the address?

It is confusing, especially since the Whitepaper:Nxt is misleading when it states:

When an account is accessed by a secret passphrase for the very first time, it is not secured by a public key. When the first outgoing transaction from an account is made, the 256-bit public key derived from the passphrase is stored on the blockchain, and this secures the account.

It is not possible to send a transaction from a brand new account since it has a zero NXT balance and the minimum transaction fee is 1 NXT. Therefore, the only way to secure a new account is to fund it from some other account using the account ID together with the public key, which is then recorded in the blockchain.

The forms used for sending NXT, even on the major exchanges, now provide a field for the public key, in case it is the first transaction to a brand new account. Otherwise, the public key field can be left empty.

The reason why this one-time extra step is necessary is because the 8-byte account ID is much shorter than the 32-byte public key it is derived from. There are many secret passphrase/public key pairs that reduce to the same account ID. But once a particular public key is associated with an account ID by storing it in the blockchain, no other secret passphrase that generates a different public key can access that account.

The developers of NXT initially chose to use an 8-byte account ID, thinking that it is more convenient than a 25-byte bitcoin address. But the trade-off is that collisions are much more likely. It was later decided that the risk of a collision was too great, but by then it was too late to increase the account ID length without a major disruption. So, the above solution was devised, which preserves the convenience factor while solving the collision problem, all at the cost of a one-time but awkward additional step.

Unfortunately, this extra step raises the entry barrier for NXT, lowering its adoption rate.


When I use InstaWallet.org, do I get my own Bitcoin address?

That address only receives deposits to your account. Otherwise, they'd have no idea what account to credit when funds wound up in that address.

But you can't use blockexplorer to monitor your balance, only to monitor the total amount of deposits you've made. InstaWallet will remove funds from that account as they wish to aggregate your funds with other deposits and service withdrawals.

Also, when you make a payment, even if InstaWallet uses your coins to make the payment, the "change" will be sent to a different address. For example, if you deposit 20 bitcoins and then withdraw 10, even if InstaWallet did use your 20 bitcoins to fund the withdrawal, the remaining 10 bitcoins would go to a different bitcoin address even though it's still in your InstaWallet account.

If, say, you're expecting someone to send you some Bitcoins, you could use blockexplorer to see if they've made that payment. But the balance you see won't really mean anything, it's just some number equal to or less than the total amount you've ever deposited through that address.


How can i send bitcoin using c# and the nbitcoin library?

You can find an example here.

Specifically, see the first example where Alice sends bitcoins to Satoshi:

Transaction aliceFunding = new Transaction()
{
   Outputs =
   {
       new TxOut("0.45", alice.GetAddress()),
       new TxOut("0.8", alice.Key.PubKey)
   }
};
Coin[] aliceCoins = aliceFunding
                    .Outputs
                    .Select((o, i) => new Coin(new OutPoint(aliceFunding.GetHash(), i), o))
                    .ToArray();

Notice the outputs (Alice's initial coins). The first uses GetAddress() to get the bitcoin address corresponding to Alice's private key (i.e. P2PKH) while the second uses Alice's public key (i.e. P2PK).

And the transaction is constructed here:

var txBuilder = new TransactionBuilder();
var tx = txBuilder
    .AddCoins(aliceCoins)
    .AddKeys(alice.Key)
    .Send(satoshi.GetAddress(), "1.00")
    .SendFees("0.001")
    .SetChange(alice.GetAddress())
    .BuildTransaction(true);
Assert(txBuilder.Verify(tx)); //check fully signed


What was the number of the block in which SegWit got activated? And first transaction?

This is a very old question but probably someone else needs to know the same:

SegWit was activated in block 481824 and that block has two p2wpkh txs:

dfcec48bb8491856c353306ab5febeb7e99e4d783eedf3de98f3ee0812b92bad in block 0000000000000000001c8018d9cb3b742ef25114f27563e3fc4a1902167f9893
f91d0a8a78462bc59398f2c5d7a84fcff491c26ba54c4833478b202796c8aafd in block 0000000000000000001c8018d9cb3b742ef25114f27563e3fc4a1902167f9893

I have to run my script against testnet in order to find the best p2wpk tx.


How do I recover bitcoin sent to a wrong wallet address

Unfortunately it is not possible to reverse a transaction based on the design of Bitcoin.

You may be able to contact the receiver of your bitcoin by googling the address (some mining pool addresses are publicly known), but also by sending a message to the address through the use of the OP_RETURN opcode. This will allow you to embed a message in the blockchain via including it in a transaction to the address you mistakenly sent your Bitcoin to. It is possible the owner of private key that corresponds to that address (if there is one) will notice your message and decide to return your funds.

Best of luck!


What would be the consequence of a constant network difficulty?

You would eventually be up against network propagation speed, since miners would get powerful enough to mine faster that the blocks can propagate across the network. The nodes with the lowest latency between each other would always be ahead with the longest chain, penalizing those with higher latency.

You're correct that the 21 million will be reached much sooner.

You can observe this on the testnet when the block times are high enough, after it resets to the initial difficulty and blocks come flying in multiple times a second (basically as fast as the network can handle it). For more info see Testnet difficulty change


Does every node has a whole copy of the blockchain?

To join the network, a Bitcoin full node will work its way through the network history, independently verifying the state of the network through time. So yes, each node will have downloaded and validated the entire transaction history, but a node can choose to use 'pruning mode', where it will discard unneeded transaction history after validation is complete.

The ever-increasing size of the blockchain is a heavy consideration when considering network and protocol updates. Bitcoin requires a distributed network in order to maintain its function, so it is important that the software can be run on inexpensive hardware, so that more people can participate.

  ps: if i have to pay for a service using bitcoins, do i become a node of the blockchain ?

There are other ways to interact with the network. Many wallets are lite-wallets, which validate the chain via headers instead of the entire block. This is a less robust security model, but it works well for many people.

You generally do not need to pay a service in order to interact with the network (as a full node, a lite-wallet, etc).


Can you use Electrum wallets for storing Ethereum?

No, you cannot use Electrum wallets to store Ether. Unfortunately, Electrum only supports Bitcoin.


Invest 100USD in BTC and BTC went down by more than 100USD. How much I lose? Can I hold? how long?

You have 100 USD. The current BTC price is 40000 USD/BTC.
You buy 0.0025 BTC. This costs you 0.0025 BTC * 40000 USD/BTC = 100 USD. You now have 0 USD and 0.0025 BTC. You don't owe anybody anything.
Time passes, as long as you want. You can stop here, and just hold on to your BTC for eternity. You don't owe anybody anything.
The BTC price changes to 39900 USD/BTC. You still have 0 USD and 0.0025 BTC. You don't owe anyone anything. In fact, you didn't even lose anything - you have exactly the same as what you had before, only it is now worth a bit less when expressed in USD.
Now you decide to sell your 0.0025 BTC. This earns you 39900 USD/BTC * 0.0025 BTC = 99.75 USD. You now have 99.75 USD and 0 BTC. You still don't owe anyone anything. You lost 0.25 USD compared to what you had before buying, but no matter what the USD/BTC exchange rate does, it won't go negative.
As long as you don't borrow anything for anyone, you never owe anyone anything.
PS: Nothing here is specific to BTC. It applies to anything you could buy and resell later for a different price. If the price goes up and you sell, you win. If it goes down and you sell, you lose. Under no circumstances (*) will you ever owe somebody something because the price goes down; you'll just end up with less.
(*) This isn't true in some financial constructions (margin trading). Don't worry, if you were using these, you'd know.


If you are happy to buy in dollars then you can do exactly this through irc channel #bitcoin-otc.


By brainwallet do you mean a secure 12-or-24 word phrase? Or actually the incredibly risky and insecure method of deriving a Bitcoin private key from a short memorable string? Many brainwallets (like movie quotes, song lyrics, even complete sections of the US Constitution) have already been swept by attackers, and even more brainwallet addresses are being constantly monitored by bots that will sweep funds as soon as the address is used.

How did you generate your bitcoin address a few years ago? Is that software still available? You might be able to use it to sweep the funds to an address generated securely by your Trezor.

I have a brainwallet sweeper tool I use for fun low-value demonstrations, with lots of warnings about security:

http://dotshift.space/starservice/bitcoin/

You should audit the code before using if you can, but this webpage will search the blockchain for any brainwallet and if there are UTXO available, allow you to sign a new TX and sweep the funds to an address you provide.

As for the fork-coins, you may need to seek out resources in those communities separately, maybe someone can fork the code I used above and reconfigure it for other blockchains.


Label and description visibility in transaction history


Why is a blockchain often compared to a linked list?

I assume the linked list analogy just arises because of the reference to the previous block as you say. It's less about how to find that block, and more just about identifying it. The actual data structure used to store the Blockchain isn't what is being described.


Why does ONLY some connections have 'addrlocal' in getpeerinfo output

I would guess addrlocal shows you your endpoint of the connection, that is your IP address and port number. For all incoming connections that would be the same as the IP address and port you are listening on, so that's why it's not displayed. In your case most likely: 137.122.81.217:8333

I'm not sure what would happen if the server is multihomed.


Digital signature why it can't be used by other public key

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

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

A simplified example:

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

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


Get transaction after certain (tx, block, time or other) using insight-api Bitcoin CASH

We can cheat and use the query for Multiple Addresses, where search is available in a certain range of transactions, specifying the parameters from and to.

https://github.com/bitpay/insight-api#transactions-for-multiple-addresses

https://test-bch-insight.bitpay.com/api/addrs/qptaxxrqcz7qunclcvlcza9an6qlqqhzlya2d4e4fn/txs?from=2

If I want last tx:

https://test-bch-insight.bitpay.com/api/addrs/qptaxxrqcz7qunclcvlcza9an6qlqqhzlya2d4e4fn/txs?to=1


The traditional answer for Bitcoin to this question is "pseudonymity, not anonymity".

All the data published on the blockchain is necessary for the world to validate that transactions are valid, no theft occurs, no money is being printed, ... but not more. In particular, there are no identities on the chain, and reuse of (otherwise visible) addresses is discouraged.

Of course, this is a very brittle and delicate balance. It turns out that it is in fact very hard to publish enough to let the world validate, but simultaneously not reveal enough to leak substantial portions of information.

Systems like Monero and Zcash go a step further. They "encrypt" certain portions of the transaction data, but include a complicated mathematical proof that the encrypted data is still valid. This lets them hide amounts, and the links between transactions. However, such techniques come with their own tradeoffs in performance, bandwidth, and scalability in general.


How can I buy bitcoins using Western Union (October 2012)?

Western Union is a hassle and is expensive.   Bitcoins Direct was accepting WU payments until just a couple days ago.  In the U.S., about the last exchange to accept WU (USD) for bitcoins is:

http://www.QuickBitcoins.net

In the EU there is an exchange that accepts WU (EUR):

http://bitcoinsinberlin.com

There are also some others.  For instance:

http://www.ecurrencyzone.net/buy.php
http://www.coinmama.com

As far as other options, the factors relevant to providing the right advice include:

Where are you located (country)?
How much are you looking to buy?
What payment methods do you have available?
How soon do you need access to the proceeds?
Is privacy important?

Quite simply, depositing cash at a bank or 7-11, Walmart, CVS is going to be the fastest and easiest way.

Options:

http://www.BitInstant.com (Deposit at major banks, 7-11, Walmart, CVS, Moneygram, etc.,)
http://www.BitMe.com (Deposit cash at Chase)
http://www.BitFloor.com (Deposit cash at Chase or Wells Fargo)
http://www.bitinnovate.com (Deposit cash at a bank in Australia & New Zealand)
http://www.CAVirtEx.com (Deposit cash at several banks)
http://www.Spendbitcoins.com (Deposit cash at a bank in Australia)
http://BitcoinNordic.com (Purchase CashU or UKash in dozens of countries)
http://www.BTC-E.com (Deposit cash (USD) at bank locations in Russia)
http://www.BitNZ.om (Deposit cash (NZD) at back locations in New Zealand)
http://www.BitInstant.com (In Brazil using Boleto or Banco Recomendito, or in Russia, using Qiwi or Cyberplat.)

Also, Bitcoins Direct will accept cash, but they have a $500 minimum order size:

http://bitcointalk.org/index.php?topic=87094.0 (Deposit cash at Bank of America, Wells Fargo or PNC, minimum $500)

Or you might find a local trade (paying cash):

http://www.localbitcoins.com

The fees aren't trivial but you can use a credit card to purchase by using VirWoX where you can buy SLL using your credit card, then trade SLL for BTC:

http://www.VirWoX.com

Or if you are considering a bank transfer, there all kinds of options are available:

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

There is also #bitcoin-otc where you can connect with sellers via IRC:

http://bitcoin-otc.com/

Buying  bitcoin with western union westernuniontobitcoins.com  is very easy, being one of the few that allows you to transfer money online directly to  bank account or to a person authorized to raise money from an office W.U

http://westernuniontobitcoins.com


Yes, there is just such a paper, it is:

The Bitcoin Backbone Protocol: Analysis and Applications

by Aggelos Kiayias, Juan A. Garay, and Nikos Leonardos.

From the abstract:

Bitcoin is the first and most popular decentralized cryptocurrency to date. In this work, we extract and analyze the core of the Bitcoin protocol, which we term the Bitcoin backbone, and prove two of its fundamental properties which we call common prefix and chain quality in the static setting where the number of players remains fixed. Our proofs hinge on appropriate and novel assumptions on the “hashing power” of the adversary relative to network synchronicity; we show our results to be tight under high synchronization. Next, we propose and analyze applications that can be built “on top” of the backbone protocol, specifically focusing on Byzantine agreement (BA) and on the notion of a public transaction ledger. Regarding BA, we observe that Nakamoto’s suggestion falls short of solving it, and present a simple alternative which works assuming that the adversary’s hashing power is bounded by 1/3. The public transaction ledger captures the essence of Bitcoin’s operation as a cryptocurrency, in the sense that it guarantees the liveness and persistence of committed transactions. Based on this notion we describe and analyze the Bitcoin system as well as a more elaborate BA protocol, proving them secure assuming high network synchronicity and that the adversary’s hashing power is strictly less than 1/2, while the adversarial bound needed for security decreases as the network desynchronizes.


What you can do it traverse back from the chain tip via RPC:

call getbestblockhash (RPC)
Use blockhash to call getblock (RPC)
Read size -> store it somewhere (CSV file, etc.)
Read previousblockhash and use it as blockhash for getblock
Goto step 2


What is the size limit in namecoin transaction?

520 bytes for name_update to work

http://dot-bit.org/forum/viewtopic.php?f=2&t=503

It should be twice that amount but there is some bug.

As you can read in the forum thread some planning is going on to increase it to 9kb.


If what you are saying is true it sounds like the company you are working with is at fault. They provided you with a deposit address, then implemented a change to the site, and now having issues with deposits. It will be hard to prove, but it sounds like they misplaced your funds. Your only option is working with them to offer you a refund as there is no way to reverse a Bitcoin transaction.