See if you have a multibit.exe or java.exe task running in the background using TaskManager. If so kill it and try opening multibit again. There is code in multibit to stop two instances running simultaneously so it might be that


How do I reverse an unconfirmed transaction to the original wallet

Is there an easy to understand step by step guide

No. There is no easy to understand guide if you do not understand the underlying  processes.

  I can execute to create a double spend and get the unconfirmed
  transaction reversed back into the original wallet

The transactions can not be "reversed back" and are not going "to/from the wallet".

  so I can resend it with a higher fee and get it delivered?

The doublespending transaction is the transaction which uses the same input set, but has another outputs/fees. You do not need to do two steps (a) reverse original transaction (b) send another transaction with higher fees, because this is one step.

As far as I know, some wallets contain Replace-By-Fee features, but I use my own program. It is not "easy-to-understand", but it works


Why is the exchange rate of Bitcoins the same for everyone?

When exchange 'A' sells bitcoins for 200 dollars and exchange 'B' buys bitcoins for 300 dollars, there will be people who buy at 'A' and sell at 'B' as long as they can make money on it. This is called 'arbitrage'.

Because of the open markets, people are free to do as they please, so there are people who buy and sell solely to make mere cents on the dollar. Because of this, there is usually not a lot of difference between the exchanges. The only difference in price between the exchanges as we can see them right now, is because of trading and/or withdrawal fees. (Exchange 'A' is 1 dollar cheaper than exchange 'B', because exchange A requires 1 dollar per withdrawal, meaning in the end you end up paying the same amount for 1 bitcoin at both exchanges.)

Because of arbitrage, Google can pretty safely say the price of bitcoin is about XXX dollars / euros because if one exchange would go up or down with the price, they all would. (Exceptions sometimes occur, when one 'big fish' / whale dumps a lot of bitcoins on 1 exchange only, crashing the price on exchange 'A', but not immediately on exchange 'B'. Of course, because of arbitrage, this difference will become smaller with time.) Therefor there is no need to let a user know which exchange offers the lowest price, because they will most likely offer bitcoins for about the same price anyway.

Also, exchanges do not 'set' an exchange rate, they merely offer people with bitcoins the opportunity to sell them to people looking to buy bitcoins. If everyone would suddenly start asking 1000 dollars per bitcoin (even though right now they're worth $245 each), there would be no other choice than to buy bitcoins at 1000 dollars each. Other than that, there is no way of 'setting' the price. (This price is never set by the exchange, only by the sellers.)

Technically speaking; Google gets the number by using the API (Application Programming Interface) of an exchange. Exchanges such as Kraken offer API's from which software can request the latest exchange rates. This way Google can let its users know what the latest exchange rate is.


Trying to sync a new node and keep getting hashMerkleRoot mismatch

This error means that you have a corrupted block. The only surefire way to fix this is to redownload the entire blockchain. You can do that by going to the Bitcoin Core datadir (get the path by going to Help > Debug Window in Core and there will be a field labeled datadir) and deleting the blocks folder, after first shutting down Core. Then start Core and let it sync from scratch.


The currently lightning specification means that one party must fund the channel. So if A opens a channel with B and A is funding with, e.g. 1 BTC, then the channel initial state will be A:1 BTC, B:0 BTC. So A can't receive anything because B is the only person that can send money to A, but B has no money. However B can receive money from A because A has the funds. Once A has sent something to B, A can then receive funds from B. So it isn't that no one can receive funds, but rather that initially only one party can receive funds until an initial send is made.


The puzzle is to find ordering and choice of pending transactions with certain restriction of hash and put the into a block. Therefore the puzzle is part of system. The verification is done by everyone - every time you connect to bitcoin you verify that block chain you have received is valid. If it is not you just reject it.
No one awards them. Simply the person who puts a block is allowed to add note that he put it at the end. (S)he is awarded the benefits of putting it (transactions costs and the mining award)
Bitcoin mining as activity can be viewed in this way but it is not the only way of viewing it. In gold standard when you gold mine you are playing 'a game' however it is not the main purpose of money in such system.
Yes. However there is limit of how many bitcoins will ever be produced and you know exactly the schedule. The increase of money supply can be offset by money demand. In the end the only award for minings will be voluntary transactions costs (on the other hand as miner picks the transactions it is presumed that the highier the donation the faster the transaction will be processed).
I won't answer it but technically you can image say a country adopting bitcoin as official currency. This is for you to decide.

I believe there are several in-depth answers you can find on the web. I belive there is episode of Security Now, Linux Outlaws as well as bitcoin wiki which can answer further questions. My guess is that bitcoins per se were not design as scheme and mining in principle can be seen similar to gold one (assuming gold had no other purposes then currency) with possibility of gold fevers. If it will survive I don't know.

In any case please do NOT consider this answer as investment advice (or any other advice).

EDIT Simple explanation of terms as I understand them

Transaction: Any sending from one bitcoin address to others is transaction - it is not revertable. The transaction is verified by the sender private key but all transactions are public (bitcoin is not anonymous - even the amount of money on the account is visible). Once it is done the transaction is pending. You may set a transaction cost to ensure quicker processing of it.
Block: Block is a set of transactions that have been confirmed. They are verified by hash which, in addition, needs to fulfil certain requirements like number of 0-s at the beginning (the proof-of-work). Person who created a block is awarded all of the transactions costs and up to the point a bonus (currently 25 bitcoins). Currently the latter is main benefit of mining. However in future the award will be 0.
Block chain: Block chain is chain of blocks. As this is distributed systems the histories might diverge - as general rule the longest wins (first in case of ties).


How is a side-chain merging back to Bitcoin chain protected against double-spend? Where are the side-chain mining fees?

As Mikka explains, sidechains don't need to create their own currency, using bitcoins in the sidechain is precisely the point of two-way peg (there's no reason why an altchain with its own currency, like say litecoin or ethereum, couldn't support 2-way peg and also become a sidechain though).
Also, take into account there's several possible ways to implement sidechains. I will talk about the most basic one.

First some bitcoins are moved to a "pegging pool" for each sidechain and get locked there on a script until someone provides a scriptsig that satisfies some of them.
The user uses that "proof of suspension" to get the same quantity of btc in the sidechain. To prevent reorg risks, there must be a quieting period of X blocks in btc before the coins are accepted in the sidechain, say 100 bitcoin blocks.
After that, the coins can be send normally (or with the special rules the sidechain may have).
At some point, a new owner wants to move the bitcoins back to the main chain.
To do that he produces a "proof of burn/resumption" transaction (that needs to have a legacy format the bitcoin chain can understand). Then again there's a quieting period of X blocks in the sidechain before the coins can be claimed in the main chain.

To claim the coins back on the main chain, the user needs to provide the all the headers of the sidechain from the last time coins were withdrawn from the pegging pool to the block containing the resumption transaction (since this could easily become too long, even bigger than a whole bitcoin block, a compression mechanism is needed; I won't describe this but I'll just say that relies on "lucky blocks" and once implemented would be generally good for headers-first synchronization), the merkle path to that transaction, plus the additional X quieting blocks on top of it. This way we know how much work this chain has and that the transaction is included in that chain and buried with X blocks.
The bitcoin network doesn't need to know about the validity of the chain provided, only about the work. In that sense 2-way peg has a level of security equivalent to SPV because the chain with more work is trusted without fully validating it.

But as you say, how does the bitcoin network knows there's no other longer chain somewhere else?
It doesn't, so something else must be done to prevent sidechain miners from stealing the coins by just providing an invalid chain with enough work.
So, yes, we need yet another quieting period during which anybody can submit a "proof of reorg" with a chain longer (more work) than yours which doesn't contain your resumption transaction, invalidating your claim and making you start again.
So to steal coins an attacker must to control 51% or more of the sidechain's hashing power for the last quieting two quieting periods, the last of which could be set to days.

On the reward question, again, there's several possibilities. The simplest approach would be for the sidechain to live on transaction fees like bitcoin itself will have to do in the future. Another possibility is to distribute the fees between several future blocks to have a more predictable and constant reward. Another probably less popular approach is to have a demurrage fee on the bitcoins on the sidechain. I'm sure there will be more proposals.

You can read the original thread on 2-way peg here:

http://sourceforge.net/p/bitcoin/mailman/message/32108143/

There have also been many discussions on #bitcoin-wizards :

http://download.wpsoftware.net/bitcoin/wizards/


Since there is no dispute about the address, you can check whether the transaction has confirmed on any of the blockchain explorers freely available, such as blockexplorer.com or the aforementioned blockchain.info.

If the transaction shows up as confirmed there, and the receiving address matches the address that he told you, the money has been successfully signed over to his control. That's sufficient to prove that you paid.

If the payment is still not showing up in his wallet, the problem is on his side, and he should either look into what's wrong with his wallet or check in with the customer support to fix his access to his funds.


This is what is reported in the thales documentation:
Private Key Import/Export Private keys can be imported and exported with existing PKCS#11 functions.
They can be imported and exported only if the HSM uses the key wrap model instead of cloning.
Import a key by calling C_Encrypt*() on the serialized key followed by C_UnwrapKey(). Exporting keys by calling C_WrapKey() followed by C_Decrypt*().
Use C_WrapKey() and C_UnwrapKey() to store keys off the HSM, or to move them between HSMs.

I don't know the use of PKCS11;

which key is used for the wrap?


Armory wallet and bitcoin - newbie questions

A wallet stores private keys, not bitcoins (and a watching-only wallet just stores addresses, without their private keys). Your bitcoins are “stored”, for want of a better word, on the global distributed ledger. You can verify this by looking up your address/addresses (not your private keys!!!) on a blockexplorer web site such as blockchain.info — this will show you that your bitcoins are at whatever address/addresses you sent them to. You can do this even if Armory hasn't downloaded the blockchain.

In order to construct a transaction, Armory needs a local copy of the blockchain and it needs the [public] address/addresses from which you're spending. But the transaction will not be valid until you have signed it, and for that, you need the private keys. In a secure set-up (cold storage), you construct transactions in a watching-only wallet (connected to the internet), and you sign them in a full wallet (on an air-gapped computer); such that your private keys are never exposed to the internet.


Locating Server-Grade PSU-to-PCIe Power Cables for Bitmain Antminers?

A solution, but still not optimal for me, is on a Bitcoin Forum posting.

The server grade HP DPS-800GBA connectors are completely incompatible with FCI PWRLOPRO connector that my existing server-grade PFE1100-12-054RA PSUs connect to.

Wound up canabalizing the Coolmax ATX cables.  Only needed to solder the ends of the cables to prep them for crimping into a 4 AWG lug.  Tested the fashioned cables to make sure the voltage being delivered was indeed 12 volts DC. For now, the PCIe voltage sensing pins are floating, no PSU feedback being supplied. The server PSU is much noisier, but takes up significantly less space, and is about 15% more power efficient than the older ATX PSUs. Will see if everything still works in another month. See the picture below.


There is no way to reverse a transaction once it has been confirmed. Do you control the address that you sent the bitcoin to? If not, then you will need to contact the person (or business) that controls that address, and ask them to return your funds.


How do Bitcoin and Litecoin compare in scalability?

Litecoin is using largely the same consensus rules as Bitcoin with a few exceptions:

its blockchain derives from a distinct Genesis block
it targets a block interval of 2.5 minutes (10 minutes on Bitcoin)
halvings happen every 840,000 blocks (210,000 on Bitcoin)
block hashes are calculated with Scrypt instead of SHA-256d

Since the more costly Scrypt hashing algorithm needs to be only performed once per block in block validation, the effect on the IBD should be negligible compared to other steps in the validation. H/T @Nate Eldredge.

Since Litecoin has also activated segwit, its transaction capacity is roughly four times that of Bitcoin. Theoretically, this could cause Litecoin's blockchain footprint to increase at up to four times Bitcoin's rate, presumably increasing the IBD at least at the same rate. I surmise that the IBD might increase superlinearly to the blockchain footprint as it would likely correspond to a higher UTXO count as well. In practice, Litecoin is only using a fraction of its blockspace and should have a significantly faster IBD.


Created an HTML5 Game, best way to integrate Bitcoin?

You're going to need a fairly intense system to support something like that. You won't be able to send Bitcoins securely in your game, so you will need a server handling requests to send. Check out the Bitcoind api commands and the various libraries you can use to access Bitcoind. Node.js has an interesting and simple library.

The main trouble you are going to have is people who are trying to game your system. You will need to verify (somehow) that a player did actually beat your game. What is stopping me from sending thousands of requests, stating that I won? People will figure out the server you send the requests to quickly.


Can I send bitcoin from paper wallet directly to hardware wallet?

Paper wallets give you direct control of your funds and a single private key.
Some wallets have an import private key feature. Check if your Hardware wallet allows importing or sweeping.
What you want to do is sign a transaction for all of the unspent outputs that sends funds to one of the addresses on your Hardware wallet. This is often known as "sweeping", when you take all available funds under an address and send them to a different address.
Most wallets will sweep funds to itself, as opposed to letting you enter any address to sweep to. Creating a sweep transaction on your own is an advanced technique for programmers and command-line junkies. You should be comfortable creating these types of transactions in a test environment before ever attempting to do so with real sums of money.
There are also tools and libraries available that will help you with this, just be very careful to only use a reputable source -- there are many scams that want to steal your private key(s).
Recommendations on this site are strongly discouraged, so here are three (3) external examples that can help you sweep your funds.

Samourai Wallet can sweep funds from private keys and QR codes.

Electrum can sweep keys to any destination address. To sweep private keys, go to the Wallet menu -> Private Keys -> Sweep. Enter the private key in the appropriate field. By default the “Address” field is populated with an address from your existing electrum wallet. Change this to your one of your Hardware wallet addresses.

Sweepkey is an open-source tool I created using the bitcoin-js library for my own usage that sweeps funds from a private key to any specified address (again not a recommendation just an example).

I cannot stress enough, be very careful when interacting with private keys in a hot(online) environment. It is best to never expose them to an online environment, but if you have to, please practice on testnet or with small amounts until you feel comfortable you know what you are doing.


How did Silk Road work when it came to delivering product anonymously?

Regarding bitcoins, all the funds were mixed using various techniques to prevent coin tracking. It is propably better to not use a web wallet in this case. Using the Tor network allowed to prevent being tracked by IP. Although you might think bitcoin is not 100% anonymous, it is anonymous enough so that no scammer/hacker/thief has ever been caught using only the blockchain.

To my knowledge products were compressed and sent to the customers' home address in letters. Apparently that's not a problem for small orders.


List of all currencies which can be mined by a SHA256-based ASIC miner

You should try to touch this
https://coinmarketcap.com/currencies/views/all/
Need to filter out those which aren't sha256d though.


Whats the public key required for in a transaction?

The public key belongs to, and identifies, the recipient of the funds. Without it, the network doesn't know who the money goes to, and the rightful owner can't use it.


How long does it take for Mt Gox withdrawal to Dwolla?

When I've used Mt. Gox, it's taken anywhere from two to seven days for the Dwolla payment to hit my account.


What client to use for an alternative special purpose blockchain?

This answer presumes that you need to retain the resilience of a P2P network where there is not a single point of failure.  It also presumes that you need an authoritative source that has the ability to maintain control so that the network is not vulnerable to a 51% attack.

I suppose you could fork the stock bitcoin client without too much effort to create an alt-chain that accomplishes this.

On the fork, add to the block verification a step to also check that each mined block includes a transaction from one of the authorized miners.  The way to tell if the block came from an authorized miner is to have the miner include a spend transaction that comes from a private key assigned to that miner.  (Miners would never broadcast these transactions, so if the transaction appears in a block it would mean only an authorized miner solved that block.)

There are a number of ways the client could learn the list of public addresses for the "authorized miners" list.  This list could be hard-coded into the client even, initially, if needed.

There's the risk of how to handle the situation where an authorized miner ends up compromised or otherwise needs to be removed from the list.

Maybe there's an approach here that kills two birds with one stone.

Have the master node broadcast a heartbeat transaction periodically.  This could be done by having the master mine a block that inserts a chunk of data, similar to how an altcoin that does merged mining works -- it has an exception as to what it considers as a valid proof of work.  In this case, any block that is from the master node is considered as a valid proof of work.  The method to use as proof that the block truly is from the master node is for the block to include a spend transaction from the public address owned by the master node.

That heartbeat from the master could also include a checkpoint hash (e.g., "confirmed by the master authority") -- to limit the damage a compromised miner could do.

Thus the end result is:

Normal nodes cannot mine but will exist as P2P nodes that store blocks and relay transactions.
Miners that are authorized do compete, on a proof-of-work basis.
A master node has power of authority and can intervene (i.e, always has 50%+1 majority) if needed.
Frequent checkpoints from the master can limit the risk from compromized miner nodes.

Only miners who are trusted would mine but even if one of them goes bad, the master can clean up by rewriting all the way back to the last checkpoint.

So it doesn't seem to be too much effort to fork the bitcoin trunk to work in this manner.  Centralized systems are always much easier than decentralized.


Error getting bitcoin block to process from DB

I had problems like this too and through hours of trial and error, I got it working, Check out my bitcoin and bifrost settings found in repositories here

https://github.com/StellarKit

I can't remember the exact problem, I think I remember I had my rpc urls wrong.

BIFROST_BITCOIN_RPC_SERVER:         "bitcoind:18332"

bitcoind refers to the bitcoin docker image and uses dockers networking.

But look at the docker-compose.yml files for a working example.

You can install everything I have to get bifrost working on testnet.


I got it to work by simply copying the file over.

An important point to notice if you intend to follow this suggestion:

My mac wallet had 0 coins

If your mac wallet has coins, then don't follow this solution.

First I shut down the bitcoin-qt client. Not sure if this step is necessary but I think it's safer.

Then I copied the wallet.dat file over to

~/Library/Application Support/Bitcoin/wallet.dat

Then start the bitcoint-qt client again. It might take a bit longer to startup than usual. Don't panic and let it take its time.

Then you will see your coins in the client!


bitcoinpaperwallet.com scam lost 14.5 BTC

I am really sorry for your loss, unfortunately, there is no way to get those Bitcoins again.
I have seen other people who got scammed by this website like this one: https://www.reddit.com/r/CryptoCurrency/comments/cyd6uj/bitcoinpaperwalletcom_scam_or_not_4_btc_stolen/
The best way to make the private key offline is using trustworthy software and when the computer will never connect to the internet again, otherwise, it will be possible to send the private key created to someone else when the computer is online again.


1) No, I wouldn't. Alot of bitcoin users use adresses from exchanges such as bittrex/poloniex, where you do not have control of the adress from which the coins are spent from.

2) I'm not really sure what you mean by this, I don't see why you would use the same adress multiple times in the first place, but as you previously stated this is not an issue for you, so why would it be after a refund?

3) Not sure about different wallets, but in electrum for example you will be able to sent the changeback to an adress you choose, or, completely disable it. So yes, this should be possible.

On bitcoin core -> to remove change adresses or set custom ones, Follow:

  It is highly recommended that you do not do this as address reuse is not recommended.
  If you are sure that you want to reuse change addresses, go to Settings > Options and then the Wallet tab. Check the box for "Enable coin control features". Then click OK. When you go to send, you will now see a box for Coin Control. Check the box for "Custom Change address" and then enter the address that you want to use as your change address. Then send your Bitcoin and the change will go to wherever you specified.


Verifying Bitcoin Core Integrity using PGP

GnuPG is telling you that the signature corresponds to that public key (your file has a valid signature and wasn't tampered with in transit), but that it doesn't know if that public key is trustworthy.

If you trust your friendly neighborhood CA, then do the following:

gpg --lsign-key 01EA5486DE18A882D4C2684590C8019E36C2E964

then enter your private key password to locally certify the key.

If you don't trust the CA (good on you for being suspicious), ask someone you know who you do trust for the key fingerprint. If that key fingerprint matches what you imported, then you can run that command. If it doesn't, then something is up.


I've been reading the source code of Electrum, and it turns out that the reason why you can't find anything about this is that it's not an Electrum error-it's an error generated by the Bitcoin client, and Electrum is just passing it along.

Now, what causes the error?

There are a bunch of ways it can happen (like trying to send a coinbase transaction), but the number one way that this can happen is if you send the same transaction twice. Unfortunatly, the current implementation of sendrawtransaction doesn't really give you any information about why.

(For those that are interested, the relevant error is on line 555 of rpcrawtransaction.cpp.


Is there a maximum amount of money a transaction can handle?

There is no limit on the per-input, per-output, fee, or total amount transacted, apart from the fact that all numbers need to be valid BTC amounts (which means not less than 0 and not more than 21M BTC).


Problem making multisig PSBT on walletcreatefundedpsbt

Create a multisig with bitcoin-cli createmultisig 2 "["pubkey1", "pubkey2"]"

Here is your problem. createmultisig is a utility function that only computes the multisig address. It doesn't store or otherwise add that address to your wallet. As a result, when you invoke walletprocesspsbt to update/sign, the wallet has no idea what that address is, or how to sign for it.
You want to use addmultisigaddress instead.

To add the redeemscript it says is missing, can I use walletcreatefundedpsbt?

walletcreatefundedpsbt is an RPC to construct a PSBT from scratch; it's an alternative to the more manual createpsbt call, not a way to update an existing PSBT. You need to use walletprocesspsbt PSBT for that, but as I said, you first need to teach the wallet about the address you're using.


Is it possible to give a public read only access to a Bitcoin account?

If you want the person to see the balance of each address, give them an encrypted wallet used by you. This way they can see any transaction coming in, but they won't be able to spend anything. However, this requires them to run a Bitcoin client themselves, which can be a pain at times.
Use the Block Explorer and search for the single address you will be using. Case in point - all donations made to Wikileaks - http://blockexplorer.com/address/1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v (warning, this page can load for awhile).


How could block propagation time be reduced?

Gavin Andresen wrote a bit on the topic here: O(1) Block Propagation.

Essentially, he is implementing the conclusion from your answer, a way to get around resending all transactions when propagating a new block. He is working on implementing Invertible Bloom Lookup Tables to use for set reconciliation. IBLT excel at comparing sets of significant overlap, and therefore are very efficient at relaying the differences between included transactions and Mempool of recipient.


How to test my Bitcoin QR code without giving my bank account

Use another wallet like green wallet or Mycelium and scan the QR code.

Also, you can even verify the content of the QR with Google Lens, or another QR reading app.


What are the parts of and how is a raw coin generation transaction made?


Can I create my own 24 word system using JavaScript or Ruby?

You have reduced the level of security by making it so that an adversary only needs to figure out your three-word phrase rather than your 24-word phrase. Assuming 170,000 English words from which you derive your phrase, your three-word phrase only has 52 bits of entropy. In practice, it will probably be less than this because your set of words may not be sufficiently diverse or your choices may not be sufficiently random.
Of course, the adversary also needs to find the encrypted seed which you have sent to your friends, but that's a different matter, and socially engineering one person is still easier than brute forcing a 128-/256-bit key space, let alone socially engineering 1 of 20. Assuming the probability of the adversary successfully attacking a particular friend and getting the encrypted seed is 0.1%, the probability of them succeeding when you have given 20 friends the encrypted seed is 1.98%.
You're better off just using a BIP-39 seed phrase, writing it down somewhere (not sharing it with your friends) and using "apple pisces steve" or whatever as the BIP-39 optional passphrase, which you either remember or also record somewhere (not as important where, as long as the actual 24-word seed is stored in a safe, offline location). This would effectively result in a 27-word seed.
Consult this video by Andreas Antonopoulous for other reasons why you shouldn't devise your own schemes, and what you should do instead: https://youtu.be/jP7pEgBpaO0


It's likely that your account has "units of evil" which require you to pay money to remove them. Bitcoin, the program used to accept these payments, is down. See also https://bitcointalk.org/index.php?topic=953005.msg10434122#msg10434122

You also have restrictions on your account due to being a new user. See Why can't I participate on bitcointalk.org?


Is there any wallet that that sets fee based on input amounts (not tx size)?

Most wallets that allow you to specify a custom fee would support this, technically. The fee is simply totalInput , totalOutput, so you can easily adjust it a fair bit.

However, miner's select txs based on sat/byte. In the system you described, some txs will end up severely underprices, while others will be massively overpriced.

Wallets currently just take the size of your tx, multiply it by a fee rate, and deduct that from the change outputs. This ensures that you are paying a fair fee for the tx size.


How do I recover from a disk read error (fread failed)?

I have seen a related question here: When should I use -reindex-chainstate and when -reindex <-- Read this for more info.

You could try

  -reindex-chainstate

If that doesn't work then try

  -reindex

Quoted from the linked question:

  You should use -reindex only when you were running in pruning mode, or if you suspect the blocks on disk are actually corrupted. Otherwise, when you only suspect corruption of the chainstate (which is far more likely), use -reindex-chainstate.


You are about 10 generations of mining hardware too late to mine bitcoin with CPUs, mining pool or not.
2009: Bitcoin launched with CPU mining. I've been told that some people mined 50 or 100 bitcoins per day with an old laptop.
2010: GPU (graphics card) mining made CPU mining hard, so mining pools were invented. This way people could still mine with CPUs.
2011: GPUs had to get on mining pools, and CPUs were next to useless. Some hardcore CPU miners kept going but earned little. Gaming PCs made a good profit.
2011-2012: The first specialized bitcoin mining hardware based on FPGA chips. FPGAs gave GPUs a hard time. Some GPU miners kept going, but in 2012 earnings were slim.
2013: The earliest ASIC miners shipped to customers in january. ASIC mining completely destroyed CPUs, GPUs and FPGAs for mining.
Since 2013 there have been many generations of ASIC miners, each making the older ones obsolete.


Is there a public repository/api of coin/token logos

I was looking for the same thing and I found - https://www.cryptocompare.com/api


Sent bitcoins to cake address, then it pops into account for half an hour then gets sent to another address, even before the confirmations

It looks like your money was stolen. Either the app is fake or broken or someone had access to your wallet at sometime (maybe they helped you set it up).
A blockchain explorer shows (most recent at top)
Transactions involving address

Hash: c423c3d9d4e72b16cbfb3a3c1a47c578a56f51bf00be4ecb07c588d957f7cf46

2021-05-21 01:01  55 confirmations  Privacy score: 55

Senders
  0.05796927 BTC    bc1qs69asfc0c0we5ynauzsfjtm7hwp6du6vs40srf

Recipients
   bc1q8tdu705hjqxlzar2mretdrcesuezkzphad2amc  0.05784046 BTC Unspent

Hash: cf5471592253c04cf12a6aba559a7aec531df42cee4a87f85968ce4187dddc16

2021-05-21 01:01 55 confirmations  Privacy score: 49

Senders
  0.01025588 BTC        35KKBAGr5ch6dwMYzrxW1oVdCvMHHoCuKn
  0.04729191 BTC        3QEUGgo3LsLFFqAV38q5bCxP3nH1phbyPi
  0.00069646 BTC        3JervgE4EoMhjbAYH11pQnsxTDQBeK7FKu

Recipients
  bc1qs69asfc0c0we5ynauzsfjtm7hwp6du6vs40srf

So money was sent in and a second transaction immediately removed it.
Just because both addresses start bc1 doesn't mean they are both Cakewallet addresses. Thats not how addresses work. Apart from the bc1 or 3 prefix, they are visually random.


How can I recover BCH sent to a Trezor BTC address?

Following the steps from "How to claim your Bitcoin Cash (Bcash)" by Trezor Blog should do the trick.

https://blog.trezor.io/claim-bcash-bitcoin-cash-bch-bcc-trezor-wallet-f0a810d5864a

Steps:

1) Make sure Trezor uses latest firmware

2) Connect your Trezor

3) Go to Coin splitting tool


As far as the port number, the outgoing port will usually be random but on each PC it is connecting to it should be static.


Why do people mine bitcoins when they are losing 20% a month?

Most miners are speculating that the future value of a bitcoin will be greater than the present value. No profit-oriented miner is happy about the current rate of increase in difficulty. Also, the current rate of difficulty is not a one-way phenomenon. Many factors could cause the difficulty to decrease, such as a flaw that was perceived to be un-fixable. If confidence in bitcoin in general were to drop, mining difficulty would drop as well as mining power and money fled to other virtual currencies.

Other people genuinely want to create an alternate payment network and/or currency and see their contribution in those terms, and not in monetary terms. For those people the price of bitcoins is not their primary motivation.


Can I receive detailed tx data via command line using only a lightclient?

No. Lightweight wallets are designed specifically only for the wallet user. It only stores transactions and UTXOs relevant to the wallet. It will not store any historical data or data that does not pertain to the wallet, so it is useless for trying to retrieve any arbitrary transaction.


Can a live feed of blockchain transactions be obtained from using bitcoin core wallet?

is there a way I could get a live feed of transactions directly from bitcoin core (cutting out the need for the BlockChain.com websocket API)

Certainly. Bitcoin Core supports the ZeroMQ messaging protocol. It publishes a stream of blocks, block hashes, transactions, and transaction hashes to whatever port you specify. You can specify which of those you want to, they have to be explicitly enabled. This stream is always a reflection of what it is currently receiving over the network. Once it has validated a block or transaction, it will then push that out to the ZMQ stream.

You can then connect to the ZMQ stream with whatever software and parse the messages into their respective types.


How are P and ((z1*s2 - z2*s1)/(r*(s1-s2))) calculated?

How is "P" calculated?

P is one of the parameters for the secp256k1 curve as defined in http://www.secg.org/sec2-v2.pdf.

  Which calculator/script is used to calculate z1*s2, in here ((z1*s2 - z2*s1)/(r*(s1-s2))) and so on????

Any calculator you want. They are just integers (albeit large integers) so you can use anything that can do large integer computations.


Why do pools give rewards to miners who solve problems at a lower difficulty than the network?

It's not that solving a problem at a lower difficulty helps the pool, it's that trying to solve the problem helps the pool cause you can 'accidentally' mine a block on the actual difficulty. Pool members share the lower difficulty blocks to prove they tried.

A pool member can find a block on the actual difficulty and don't share it with the pool on purpose, but won't get any reward by doing that.


What makes cross input signature aggregation complicated to implement?

Pieter Wuille answered this on Twitter.
The most important complication of cross input aggregation is explained in this Bitcoin dev mailing list post by AJ Towns.

TL;DR: if softforks change which signatures are checked, they mustn't
change what is aggregated together. This is especially complicated when they interact with BIP341's OP_SUCCESSx upgrade mechanism, which could easily let future softforks change script semantics entirely. There is nothing fundamentally hard here - it's just engineering complexity to make sure everything works well together.

Pieter added at a London BitDevs Socratic Seminar on BIP-Taproot:

Graftroot and cross input aggregation are such deeply conceptual changes. You can’t permit building them later. It is such a structural change to how scripts work. These things are not something that can be just added later on top of Taproot. You need a successor. Cross input aggregation, the concept of script verification is no longer a per input thing but it is a per transaction thing. You can’t do it with optimal efficiency, I guess you can invent things. The type of extensibility that is built in is new opcodes, new types of public keys, new sighash types, all these things are made fairly easy and come with almost no downsides compared to not doing them immediately. Real structural changes to script execution, they need something else.


Why does Bitcoin no longer have checkpoints?

The issue is that you assume a majority attack is an attack that can be prevented. It is not. It is a fundamental breakdown of the security assumptions.

Proof of work (PoW)'s assumption is that the majority of the hashrate will cooperate and converge on a single chain, because it is most financially advantageous thing to do. When that is no longer the case, PoW is broken and we should just move to something else - not to try to fix it up.

You might think that adding checkpoints helps to improve this situation, but consider this:

Either the checkpoints are created for old blocks (weeks or months old), in which case there is clearly nothing being prevented. A week-deep reorganization would utterly destroy the currency and the trust in it, and not be prevented by this.
Or the checkpoints are created for recent blocks (days or hours perhaps), in which case they may indeed affect what chain is accepted on the network during certain circumstances, but at the same time it is effectively replacing PoW based consensus with "developers-decide" consensus... something that doesn't need a complex peer to peer protocol at all, as effectively developers need to run systems to keep the system in check.

So, either checkpoints have an effect - and change the security assumptions into an uninteresting one, or they don't - and they don't matter.

To answer your question: the primary reason for removing checkpoints is due to the confusion they create. They make people think they're part of the system's security model (like your question shows). It does not. It was introduced as a necessity for implementing an optimization (skipping script validation) and an unrelated denial-of-service attack (the disk of a new node being filled with low-difficulty blocks during synchronization). Since some changes in the P2P protocol (headers based synchronization) we no longer need checkpoints to do these things safely.


What Opcodes are used to store a file within Bitcoin?

For details of the specific byte structure of a block, see resources like the Bitcoin Wiki article on blocks. For a transaction, see the article on transactions.

The actual data storage happens within the transactions, within their intput and/or output scripts. Theoretically, any script could be made including arbitrary data, but due to network standards, only certain types of scripts are allowed.

For an in-depth look at data storage techniques, see this paper. (Full disclosure: I am one of the authors.)

Note, when I talk about pushing data to the stack:

PUSHDATA(N) (where 0 <= N <= 75): Push the next N bytes onto the stack. The byte value for this is dec: N
PUSHDATA1: The next byte indicates the number of bytes after that to be pushed onto the stack. The byte value for this is dec: 76, hex: 0x4c
PUSHDATA2: The next two bytes indicate the number of bytes after that to be pushed onto the stack. The byte value for this is dec: 77, hex: 0x4d

Also, each chunk of data pushed with a PUSHDATA element cannot exceed 520 bytes, so bear in mind that any file will necessarily be broken up into chunks of 520 bytes or fewer.

Some ways of storing data include:

Using the coinbase (or generation) transaction (if you're a miner) to store a small amount of arbitrary data in each block you mine. This data takes the place of the inputs that would normally appear in a transaction. The coinbase transaction allows up to 100 bytes of data; however, some of this must be used for special uses, such as the block height and extra nonce.
In outputs with OP_RETURN. Each transaction may have one OP_RETURN output. Such an output may have a value of zero (since otherwise you're burning money that can never be recovered). The script looks like OP_RETURN <up to 80 bytes of data>. OP_RETURN is byte value dec: 106, hex: 0x6a, and the data must begin with a PUSHDATA element.
In outputs that pay to an address, etc. that recipient address/key/etc. may be replaced with arbitrary data. In that case, take the regular script and replace the address/key/etc. with your data. This creates an output which you cannot spend but which must be tracked in the UTXO set, so it is not advisable to do. An example of this would be to take the P2PKH script OP_DUP OP_HASH160 <Public Key Hash> OP_EQUALVERIFY OP_CHECKSIG and replace the 20-byte public key hash with 20 bytes of other data. (Note that the hash is pushed onto the stack with a PUSHDATA(20) element. As bytes, this looks like: 0x 76 a9 14 [your 20 bytes of data] 88 ac.) If you're replacing e.g., a public key, it may be detected that you're not using a real public key (if it doesn't start with 0x02, 0x03, or 0x04, for instance), but a hash should be indistinguishable from arbitrary data.
In inputs, using P2SH scripts. Then the data may be stored in the redeem script itself or in the inputs to the redeem script. There are multiple ways to do this, but generally the arbitrary data will be included in a PUSHDATA element, which the redeem script will somehow operate on. One notable method involves the redeem script including OP_HASH160 <hash of the data to be included> OP_EQUALVERIFY, and the inputs to that script including the data to be stored. This method ensures that the data must be included for the script to return true. Another method is pushing data to the stack, then using OP_DROP or OP_2DROP to remove it from the stack. This is efficient, but it would be possible for an attacker to tamper with the data in a transaction malleability attack.
You could also store data in e.g., the value field of your outputs, but this is highly inefficient.


Bitcoins lose their value over time.. or do they?

In total there will be only 21 milions of Bitcoins floating around the world. That means that the more people are interested in it, the higher value of 1 Bitcoin. Also it is worth mentioning that this will happen in more than a 100 years! Currently only 12 milions were produced and the growth will continue slowly for years. Interest in Bitcoin is much faster than it's production so no - it will not loose any value because it is more bitcoins. It will only loose value if people loose their faith and stop accepting it as a currency which is not the case at this moment :)


Need a cold wallet. Segwit, Lightning, Fees?

Fees are not based on the value that is being transferred but rather the size of the transaction in bytes. The fee is to pay the cost of storing the data that makes up the transaction itself, not for the amount that is being transacted. Thus giving the fee as a percentage of a value will be completely inaccurate and giving a fee estimate for the cost of spending a given value will also be completely inaccurate.

When you are sending from an exchange, the exchange will usually pay the fee for you or they will tell you how much the fee will be when you send.

When you use a desktop wallet, the wallet will also tell you how much you are paying in fees. You can choose to also set your fee manually. Keep in mind that setting the fee to something very low can result in your transaction taking a long time to confirm.

To reduce fees when spending, you will want to use Segwit. Segwit effectively reduces the size of your transaction when you spend from segwit outputs. Segwit is completely backwards compatible (except for the new address format) and you can send to and receive from non-segwit addresses when you use segwit.

To use segwit, you must use a wallet that is capable of creating segwit outputs and addresses. There are two types of addresses, bech32 (begin with bc1) and p2sh nested (begin with 3) addresses. Bech32 addresses are new and not all wallets support sending to them, so it is better for you to use the p2sh nested addresses.

I recommend that you use Electrum. However Electrum does not support creating a new wallet with p2sh nested addresses. You can still use Electrum to do so by following these instructions: https://www.reddit.com/r/Bitcoin/comments/7mvw0m/psa_contrary_to_popular_belief_you_can_create/.

You should not use a paper wallet (like the ones created by walletgenerator.net) unless you aren't planning on moving your Bitcoin for a very long time. Paper wallets are, in general, more difficult to use and easy to get lost or damaged thus resulting in coin loss.

Lightning is unrelated to this.


Like Banks, are there better service providers from Bitcoins banks? Can I Find a rating?

Looks like you need a honest seller with low risks involved. Go for Coinbase.com if you are in the US. You could check their gov issued licenses for buying and selling bitcoins here: https://www.coinbase.com/legal/licenses


How scalable is a Blockchain-based system?

Blockchains are not really scalable. For the most security, blockchains need to be replicated on as many devices as possible. Those devices are full nodes and must download and verify every single block and transaction. In order to increase the number of transactions, transactions have to become smaller and blocks have to become bigger. Unfortunately increasing block size and transaction capacity will result in more resources required to verify and store them all.


Is it possible to definitely lose bitcoins?

Yes it's possible to lose bitcoins forever.  There are even ways to "provably destroy" them by sending them to an address that can't possibly have a private key.


Ripple: what’s the difference between “block” and “ledger”

Bitcoin

In bitcoin, there is no concept of accounts, users, balances and payments. The bitcoin blockchain just stores the history of all the transactions that have happened. Each block contains transactions that were mined in that block. A particular block does not contain any details of the transactions included in the previous blocks (just the previous block header hash which links it to the previous block). When someone says that his wallet has a balance of 1 BTC, it only means that his wallet contains private keys that satisfies the unlocking condition (signature) to spend that 1 BTC. For example, to get your balance related to the private key, you will need to scan across all the blocks that have been mined and find out the transactions that can be unlocked with your private key signature (SPV nodes do this by connecting to a full node and use bloom filters, but that is a matter of discussion for other day).

Ripple

Ripple follows a ledger mechanism. By this we mean that unlike bitcoin blockchain which stores only the transactions, Ripple store account info such as the balances. So the ledger is a point in time snapshot of all the balances held by all the addresses. Each ledger has a version which is progressed by 1 as the ledger gets updated. If you want to get say your account balance, you can just download the latest ledger and need not download the previous versions of it. (You might only want to download the previous versions of the ledger in case you want to audit the ledger)


How do pools get the needed transaction information?

The Bitcoin client tracks transactions that can validly be included in a block. Mining pool controllers issue a getwork command to the client to get work units to give to their miners. The client includes as many valid, normal transactions as will fit in the block, preferring transactions with higher fees and priorities and ignoring transactions that are non-standard or look spammy and have too low a fee.


Why is it not possible to replay transactions?

Transaction inputs use Unspent Transaction Outputs (UTXO).
UTXO are created by transactions. They are uniquely identified by the transaction id and the output position in the transaction that created them.
Once UTXO are used as inputs in another transaction, and that transaction is included in a block, nodes that parse the block will mark them as spent.

So any node evaluating the replay attack will realize that the UTXO are no longer in their UTXO set and therefore the funding for the transaction is invalid.


BitInstant seems like a nice Tor-friendly option (they even accept deposits in cash): https://www.bitinstant.com/


I do not really understand any of given solutions. Can someone please explain in plain English

I also find this stuff difficult to understand however I'm a little skeptical of the idea that complex issues can always be simply explained. There is a reason why people spend decades studying a subject in order to understand something. Selfish mining isn't one one of these, it isn't quantum mechanics or some esoteric branch of mathematics, however it probably isn't simple.
I find this website works best when you ask one, specific question rather than bundling a bunch of questions together. So far as I can tell, this isn't a place where you can routinely expect volunteers to write substantially long multi-page essays.
A google search finds Majority is not Enough: Bitcoin Mining is Vulnerable; Ittay Eyal and Emin Gun Sirer; Department of Computer Science, Cornell University which, looking at the first few pages, seems to be readable. I would start there and ask here about any single specific points that I needed clarification for.
Cornell is a reputable institution and a peer-reviewed paper with substantial citations ought to be a reasonable starting point.


Starting point for listening to bitcoin network transactions in Python

If you just listen to transactions on the network without having a validating node of your own you will have absolutely no way of knowing if they are legitimate or not. You must have a fully validating node locally, otherwise transactions can be cost-lessly fabricated to spend any amount of money anywhere. There is no recourse if you get this wrong, this is primarily why nobody has implemented any sort of validation in Python, there's various bits of the p2p protocol on Github, but it does exactly zero consensus validation on the data it receives.

The current master of Bitcoin Core (and the up coming 0.12 release at the end of the year) both contain a ZMQ interface which gives you a real time supply of validated transactions. A full node (pruned) can be run in as little as 2GB of space, and isn't very resource intensive for somebody running a business. There's example code for that available on github as zmq_sub.py which should get you started, just be aware that ZMQ has no guarantee of deliverability, some messages may be silently dropped if there are connectivity issues.

It's important to keep in mind that an unconfirmed transaction has no guarantee of being confirmed, and may be invalidated at any point in time. Accepting zero confirmations is extremely risky, though updating a user interface with a list of unconfirmed transactions is perfectly reasonable behaviour.


Bitcoin Core telling me transaction is not "trusted"

A transaction will be distrusted if

it conflicts with a transaction already in the blockchain, or
it is from someone else, and it is not confirmed.

A transaction will be trusted if

it has confirmations.

If a transaction is not trusted, the client won't create transactions that spend it. (You wouldn't want a transaction you created to be in limbo because one of its inputs wasn't confirmed.)

Once that transaction is confirmed, the trusted field in listtransactions will be true.


is there a litecoin wallet website that does NOT store your private key serverside?

Not at the moment. The quickest way to set one up would probably be to work with coinpunk or fork their code and get it working for Litecoin.


What is the chance of transactions being processed in different order that they are broadcast

The clients receiving B->C first will keep it in the memory (transaction pool) and denote is as an orphaned transaction, until they find A->B. So unless network propagation is terribly slow: no, it will not be rendered invalid.


Can anyone explain why this website has missing data?

bitcoinchain.com is currently under maintenance, Please consider changing the website until they're back.


Using importmulti with internal set to true does not add any change keys. What am I doing wrong?

I then set keypool to false and internal to true:

This is what you are doing wrong.

Bitcoin Core has a separate change keypool. By not setting keypool to true, the imported pubkeys won't be added to the change keypool.


Changed HDD, New Windows Installation, Can't recover old wallet

There is no command line argument -resync, you might want -rescan instead.

However, if you're faced with a brand new wallet I don't think that's the problem. More likely the data directory that Bitcoin-qt looks for is in a different location than where you placed your old copy.

Does the shortcut you use include the -datadir argument to redirect to your desired location, and was wallet.dat copied to that location?

You should try searching your filesystem for wallet.dat, if you find the new created wallet you'll know where Bitcoin-qt looks for the data directory.


Litecoin Block Explorer: http://explorer.litecoin.net/

Feathercoin Block Explorer: http://ftc.cryptocoinexplorer.com/

You can find all the "lesser" Altcoins on http://cryptocoinexplorer.com


this work
./minerd --url=stratum+tcp://uk1.ghash.io:3333 -u username.workername -p xxx


What sort of tasks can an ASIC be developed to do?

Taken from ASICs and Decentralization FAQ by Andrew Poelstra:

Are ASIC’s evil?
No, dedicated hardware brings us closer to the thermodynamic limit,
and is therefore eventu- ally a good thing for mining
decentralization. Also, because ASIC’s produce more hashes for the
same amount of energy, they produce stronger proofs-of-work with
proportionally less environmental impact.
However, ASIC’s bring with them a risk of manufacturer centralization,
such as what we saw with Bitcoin in the early days of ASIC mining.
Market forces eventually broke this monopoly and one thing which sped
up the process is that Bitcoin uses the SHA2 hasing algorithm, which
was designed for easy development of dedicated hardware.
Therefore, relatively little startup capital is needed to develop
Bitcoin ASIC’s. Further, regardless of one’s personal feeling toward
ASIC’s, they are inevitable. Dedicated hardware will always be more
efficient than general-purpose hardware (exactly because it is closer
to the thermodynamic limit) and Bitcoin’s incentives are aligned for
ever-increasing efficiency.
Is ASIC resistance desirable?
No. ASIC resistance typically involves increasing algorithmic
complexity to discourage ASIC developers. However, ASIC’s are still
inevitable; all ASIC resistance does is increase the startup capital
required and therefore increase centralization of manufacturing.
Further, increasing the complexity of proof generation often means
also increasing the com- plexity of proof validation, often
disproportionately slow. This discourages (unpaid) non- mining
validators, which also increases centralization.
Is ASIC resistance possible?
ASIC resistance, in the sense of making life difficult for ASIC
manufacturers (and therefore reducing the number of distinct
manufacturers) is possible. But it is impossible to create an
algorithm which runs at the same speed on general-purpose and
dedicated hardware (since general-purpose hardware contains many
extraneous features, e.g. communication buses for peripherals), and so
ultimately ASIC resistance is futile.
(Schemes such as “the developers will just change the proof-of-work
algorithm if ASIC’s appear” do not even make sense — in a
decentralized currency the developers have no such power, while in a
centralized currency proof-of-work is a completely unnecessary waste
of power.)
Is memory hardness desirable?
No. Memory hardness has the effect of increasing ASIC board footprint,
weakening the heat- dissipation decentralization provided by the
thermodynamic limit. Further, it increases the capital costs of mining
equipment relative to the energy costs, which also encourages cen-
tralization (since established miners have amortized their equipment
more than new miners). These effects are amplified by the fact that
SRAM is both several times faster and several times more expensive
than DRAM.
Also, memory hard proofs-of-work often require lots of memory on the
part of the verifiers which is bad for decentralization as already
discussed.
As an aside, since memory is far away and expensive to access on
general purpose computers, memory hardness actually increases the
benefit provided by ASIC’s! This is contrary to the goals of most
memory-hard advocates, and as we have seen above, memory-hardness
worsens the centralizing effects of ASIC’s while weakening the
decentralizing effects.
One more thing worth mentioning is time-memory tradeoff (TMTO). This
is a property of an algorithm which allows higher memory usage to be
traded for a heavier computational load. An algorithm which is highly
susceptible to TMTO has poorly defined memory hardness, which at the
very least complicates analysis. It may also cause an algorithm to
fail to be optimization free.


As others have mentioned, those are mining pools, not miners.

Large mining pools provide the benefit of allowing small miners to earn more regular income, which encourages participation in bitcoin mining and strengthens the bitcoin network.

They are also a threat because they can be hijacked or DDOSed by a party wishing to do a >50% attack.

A temporary >50% attacking from a large pool being taken over by a hacker or DDOSed is a much smaller threat to bitcoin than a party acquiring more than 50% of the network hash-rate through their own hardware and being able to conduct a permanent/long-term >50% attack, so mining pools, by increasing the contribution of honest miners to the network hashing rate, benefit bitcoin more than they threaten it.

Features could theoretically be incorporated into mining software to reduce the threat of hijacking and DDOS attacks too, like automatically switching a mining machine to a different pool if the mining software detects previously confirmed blocks becoming unconfirmed or the mining pool becomes unavailable, respectively.


Is transaction validation in Ripple trust-based or trust-less?

(1) Each validating server maintains a list of trusted servers known as Unique Node List (UNL).

This is correct for the XRP Ledger. Non-validating servers do this too.

  (2) Servers only trust the votes issued by other servers which are contained in their UNL.

These are votes for whether to delay a valid transaction or process it immediately. This is needed to ensure that honest participants agree on the ordering of valid transactions received at about the same time.

  (3) Ripple enables different institutions (e.g. banks which run their own servers) to reach a consensus with respect to the fate of financial transactions.

Right. So if Alice has some XRP, she can send it to Bob or she can send it to Charlie. And every honest participant can tell which transactions are valid and which aren't. The problem is that they need to agree on the order in which the transactions are executed or they may not agree on the results. This is what the XPR Ledger does.

Please don't call it Ripple though. Ripple is a company (with a Trademark on "Ripple") that, among other things, built a payment network (RippleNet) that has different properties and the use of the term"Ripple" to refer to the XRP Ledger risks confusing people.

  (a) Can we conclude a a bank which runs its own server will reach a consensus on its transactions via only servers trusted by that bank ?

No. At least not unless something is horribly wrong. Say there are 100 people in a room trying to agree on a number between 1 and 100 and you can only hear 5 people in that room. If those 5 people can hear everyone in the room, you'll still wind up reaching a consensus with everyone in the room.

  (b) And if so, can we say transaction validation in Ripple is trust-based and not trust-less?

No. First, every server independently determines the validity of every transaction by itself. It doesn't need anyone else to tell it whether a transaction is valid or invalid. The only thing you need really consensus for is to ensure a consistent ordering of transactions across the network. If some people thing Alice's payment to Bob comes first and some think her payment to Charlie comes first, they'll disagree over which is funded and which is unfunded.

The only reason you need a UNL is that malicious people could create millions of apparent network participants that just refuse to agree on which of two valid transactions received at about the same time should be executed first. To prevent this, you need something scarce associated with each participant you wish to listen to.

PoW uses computing power for this. Consensus just has humans decide who they think is unlikely to collude to halt the network. With PoW, if you get it wrong and there's collusion, you get double spends and can't easily fix it. With consensus, you get a stalled network and can fix it just by ignoring the bad actors. You can easily do that because validators provide signed statements to facilitate the consensus process, so you can tell which keys are signing the nonsense and just stop listening to them.

If you want to argue that the XRP Ledger uses a trust-based method to order valid transactions received at about the same time, I guess I won't agree with you. But the advantages are huge:

1) It's millions of dollars a day cheaper than PoW.

2) It doesn't have the problems caused by conflicting interests. If you and I are mining, I'd prefer you not mine because you're getting a cut of the rewards that reduces my cut. That's why selfish mining is a thing. However, if you and I are validating and you are way better at it than me, I'd be perfectly happy just to stop mining.

3) It's much more fair because miners get to choose which transactions to include and nobody gets to choose which transactions go in consensus because it's done by consensus.

4) While incentives may prevent a double spend attack on PoW chains (so there have been some spectacular failures), it's not clear what to do if there is one. Changing the PoW algorithm screws over all the honest miners, and you didn't have enough of those.

5) Irrevocable confirmation is possible very quickly, typically in under ten seconds compared to many minutes with PoW.

So even if you think it's trust based, it's a minimal amount of trust (trust not to halt the network by refusing to agree, revocable at any time) the advantages are huge (much better censorship resistance, lower cost, higher speed, and so on). And, of course, PoW requires you to trust that a majority of computing power isn't in the hands of bad actors.


Who can change the code governing how much of BTC is released?

It's a bit complicated. Anyone can do it and nobody can...

Let's assume that you want to increase the total number of bitcoins to 42M. To do so you need to:

implement it in code
convince the community that it is a good thing
make a hard fork and hope that miners and users will support you

Something similar but in a smaller scale was happening for the last few years. It was about bitcoin block size, not the amount, but the principle was similar: people were suggesting 2MB blocks, 8MB blocks, variable size blocks and many other things and were trying to convince people that it is necessary, making there own forks and hoping they will become a real bitcoin (Bitcoin Cash, Bitcon ABC, Bitcoin Insert Your Fork Name Here)

As you can see, the block size is still 1MB. The same is with the total amount of bitcoins - you need to convince the majority of the community, then it can become true. But I doubt that anyone could ever do it.


The binary encoding of the signature cannot be used to determine if you've performed the steps correctly - it will differ for each signature (even with the same private key).

So the signature of a hash signed with the same private key will be different every time. A random number is included in the formula that calculates the signature, so the resulting signature will be different each time. If a random number was not used in the formula, signing two different hashes with the same private key would make it possible to calculate the private key from the two signatures (which is the reason the security of the Sony PlayStation 3 was breached). You can read more about that here: http://www.johannes-bauer.com/compsci/ecc/

If you want to test whether you've made a valid transaction, then feed it to bitcoind using the sendrawtransaction command. It will spit out an error if the transaction is invalid, and if it's valid you will see the transaction going through.


Not directly. The gateway would have to create a transaction for each user, to award them their interest. It would not be built into the protocols as demurrage is. So it would really be up to each gateway to decide who would get interest and how much (and if this process breaks down, no interest gets paid)


Not able to install coinpunk on centos and ubuntu server

If you want a detailed tutorial on how to install coinpunk on centos from scratch then please refer here:

themerkle - how to install coinpunk on centos 6.5


How long do miner collect transactions to include in a block?

There is hardly any performance penalty for updating the block with a new hash (including new transactions) for the miners. In fact, even if they do not get any new transactions, they change the hash (using an extra nounce), at the very latest when they have exhausted all possible 32-bit nonce value in the block they were currently working on.

You likely have a misunderstanding of the mining process. It does not work such that you have to invest a large fixed amount of work. Instead, you do something fairly fast, calculating a double SHA256 hash, to see if the result is just right (for the current level of difficulty). Then you repeat the process until you get lucky.


Why are brain wallets not secure? People keep saying it, but explain to me why?

It's not to do with length, but entropy. Humans are terrible at creating randomness, even what you think is hard to guess could in all probability be guessed with enough iteration.

Family names for example are easy to guess, there's a finite number of them and a vast portion of names are from a set of only a few hundred.

What's the chance of you remembering what names are, the spelling, punctuation and ordering? Fairly low I suspect, humans are also terrible at remembering explicit data like that.

As soon as people start trying to be clever, the probably shifts from theft to irrecoverable loss. Just use the cryptographic keys the way they are supposed to be used, 256 bits of entropy created with a CSRNG.


Why "Open Transactions cannot lie on your receipt"?

It is not possible for the OT server to forge your signature because you retain the private key. Sure, it could issue fakes but anyone actually checking the signature would immediately see that it is incorrect and reject the transaction.


Automating service with income from VISA and expenses in Bitcoins

Visa and Mastercard have been pressuring any merchant transaction processors to not support Bitcoin.

However, there is already at least one service that allows you to deposit Bitcoins and withdraw USD through a Visa debit card: OKPAY recently announced their support of Bitcoin, although I don't know how long they will last.


Is there a difference between relaying a transaction and relaying a block?

The wiki is terribly outdated, check out the Bitcoin developer guide instead:

  The response to a getdata message can be a tx message, block message, merkleblock message, or notfound message.

Source: https://bitcoin.org/en/developer-reference#getdata


How to generate mycelium addresses from the 12 words in python

The difficulty is with the poorly named BIP32Key.fromEntropy.

Typically to create a new wallet, you:

Get some entropy from a cryptographically secure random source, at least 128 bits and must be a multiple of 32 bits.
Convert the entropy to a mnemonic (this conversion is not a one-way function, it's bijective).
Convert the mnemonic to a 512-bit seed (this conversion is one way).
Convert the seed to an extended private key (also one way).
Do the BIP-32 derivation and all the rest....

BIP32Key.fromEntropy really should have been named BIP32Key.fromSeed.

Here's an example:

from bip32utils import BIP32Key
from bip32utils import BIP32_HARDEN
import os, bip39

strength_bits = 128
entropy = os.urandom(strength_bits // 8)
wallet_generator = bip39.Mnemonic('english')
mnemonic = wallet_generator.to_mnemonic(entropy)
assert wallet_generator.to_entropy(mnemonic) == entropy  # see, bijective!

# Or specify the mnemonic directly if you prefer:
mnemonic = 'aware report movie exile buyer drum poverty supreme gym oppose float elegant'

print mnemonic
seed = bip39.Mnemonic.to_seed(mnemonic)
key = BIP32Key.fromEntropy(seed)
account_number = 0
i = 0
print key.ChildKey(44 + BIP32_HARDEN) \
         .ChildKey(0 + BIP32_HARDEN) \
         .ChildKey(account_number + BIP32_HARDEN) \
         .ChildKey(0) \
         .ChildKey(i) \
         .Address()


What do Bitcoin Core options "maxreceivebuffer" and "maxsendbuffer" do?

Buffers are areas of memory where data waits before it gets processed. So a receive buffer holds some data coming from the network until the process (bitcoind) is ready to actually handle it. The send buffer holds data put there by bitcoind until your operating system is ready to actually dump it on the network wire.

They need to be a decent size not to cripple smooth communication. Too large would just be a waste and not help anything. In 99.9% of the cases the defaults should be fine.

They're not a method of affecting the bandwidth use though.

I'm fairly sure the upcoming version will have options for rudimentary bandwidth throttling. Until then you could try lowering maxconnections (default 125) if you want a lower bandwidth on average (over a month for example). But peak usage will still be high.

Depending on your operating system you could try some QOS scripts/settings or QOS settings on your router.


worker is analogous to the number of connections.

username is just a way of identifying specific miners in the list of connections and
to which account on the pool they belong to. They don't have any
impact on the work given.


Parameters in UpdateTip - calculation of log2_work

FYI the code under discussion is available here on GitHub.

-> is a member access operator in C++, just as . is. They both expect the name of an object's member on the right (e.g. a member function or variable). The difference is that . expects an object on the left, whereas -> expects a pointer to an object which it first dereferences.

So chainActive.Tip()->nChainWork.getdouble() starts with the active chain, gets a pointer to a CBlockIndex object which represents the current tip, dereferences that pointer and gets the total chain work of the tip (which is a 256 bit integer), and converts it to a double.

Next it calculates natural_log(total_chain_work) / natural_log(2), which is the same as calculating log_base_2(total_chain_work). I presume this is simply to make the output smaller, as opposed to having to output the entire (much longer) total_chain_work.

If you'd like to get it back into the total_chain_work format used in older versions, just calculate 2log2_work, e.g. pow(2.0, log2_work).


Reliability of Auroracoin distribution model based on Kennitala (Iceland National Id)

Good questions!

If I understood the site's content correctly the answer to 2nd question is yes: At each distribution, each Icelander citizen will be given coins only once, so I guess one AUR-address per Kennitala ID is enforced somehow.

The part I'd like to know is how they're going to track which citizen has applied for which distribution: Should a lot of coins remain unclaimed from 1st airdrop, the total will be distributed again, and again, and finally (in case a lot of coins are still unclaimed) a bunch will be destroyed and the rest donated to a charity.

So a crypto-currency savvy Icelander could potentially apply for all 3 distributions, a less savvy might apply for just the last 2 or even just for the last one. And they'd all be using the same address each time. Unless they're using a centralized database, how to know which citizen has not applied for current distribution round?

A theoretically perfect airdrop should concern only with a citizen with a valid Kennitala, not on whence in the world they're connecting from, hope organizers are not using geolocation.

POST EDIT

Some people have tried to hack the airdrop system. So far, it seems the Facebook algorithm is not so naïf as could be expected: as the activation via SMS to the citizen's registered cell-phone seemed much unlikelier to succeed, the blog's author grabbed a kennitölur number, located the full name and created a Facebook account ex-professo. It failed!

It must be indeed possible to game the system as some Icelanders have complained in the forums of someone else receiving their coins. But then some others complain of the system rejecting them (false negative). Too bad most of the recipients are cashing right away, provoking the drop in prices currently seen. In the future, other national-economy-savior coins should take this into account and do something to void it.


A complete bitcoin implementation in Python?

That strongly depends on your definition of complete. There are a number of implementations that implement parts of the Bitcoin node functionality. For example cdecker/pycoin has a solid network implementation, but does not include wallet management code and validation logic. richardkiss/pycoin on the other hand has some of the wallet logic, but lacks networking. Other libraries include:

vbuterin/pybitcointools
petertodd/python-bitcoinlib

But as far as I know there is no standalone client that includes a wallet as well as the networking code.


Where can I find the raw stats data of the current bitcoin network?

There's APIs like https://blockexplorer.com/q/ which provide the information, or you can just collect it yourself from your own bitcoind. Most of it is fairly straightforward, but there's a few which you need to do some analysis on if you generate it yourself (like difficulty estimation).


What other currencies have same malleability vulnerability as Bitcoin?

This is a quite hard analysis to make. In general all alt-coins that are based on the concept of dynamic input-scripts and output-scripts are subject to transaction malleability. This is because anybody could change the input scripts of a transaction, by adding commands that wouldn't alter the validity of the script, but would alter its hash. For example adding OP_DROP will leave the stack exactly as before prior to scriptPubKey execution.


Why can't a longer key combat quantum computers?

Quantum computing isn't simply faster. It is entirely different. Some computations are massively faster on a quantum computer, and other are not faster at all.

What has been demonstrated is meaningless: the "program" that was executed was in fact a randomly generated one, designed to be specifically hard on traditional computers, but easy on that specific type of quantum computer. It doesn't correspond to any real world application.

The real threat for Bitcoin from quantum computers comes from Shor's algorithm for discrete logarithms. While computing the discrete logarithm (private key) for a given 256-bit elliptic curve point (public key) on a traditional computer takes on average 2^128 EC multiplications (over 2^140 cpu cycles, all computers in the world couldn't do this given a time equal to the age of the universe), a sufficiently powerful quantum computer would be able to break it instantaneously.

The key point here is "sufficiently powerful" however. A practical quantum computer able to do this would need 1000s of logical qbits (which likely corresponds to 100000s of physical qbits; the machine Google demonstrated has 53), and billions of gates. A quantum computer with fewer gates or qbits is effectively useless for this task, and would reduce to traditional speeds. This is important: it's effectively an all or nothing; not something that gradually improves with increasing computing strength. At this point I don't think if it's even known whether such a machine is feasible to build, let alone at what cost.

As far as increasing key sizes goes, yes, that helps. It makes the speed of solving slower, even on a quantum computer, but not exponentially like on traditional systems. I believe that given an arbitrarily many qbits/gates quantum computer, doubling the size of the curve only makes breaking it 4 times slower - where on a traditional computer it would make it 2^128 times slower. However, it does increase the number of qbits needed from the machine (linearly) and the number of gates. Even if a particular key size at some point becomes vulnerable, it is very likely that a not very much bigger key size would in fact not be.


retrieve all the transaction between two addresses

I don't believe you can do this with just a single API call. I'd return all the transactions from one of the addresses, and cycle through all the inputs and outputs and if they match the other address then show the tx data.

Not sure which language you're using but the logic should be the same.

<?php
$addr1 = "1EipJdYVJbqsTSQhj1icK424AkMbyjvgBm";
$addr2 = "1LWwLvKWbcpiZYqCcwfuQ3gjjNJkxftmEJ";

$url = "https://blockchain.info/address/".$addr1."?format=json";
$fgc = json_decode(file_get_contents($url), true);

//num of txs
$txs = count($fgc["txs"]);

//loop through all txs
for($i=0;$i<$txs;$i++){
    //check all inputs & outputs for the other address
    //inputs
    $numinputs = count($fgc["txs"][$i]["inputs"]);
    for($ii=0;$ii<$numinputs;$ii++){
        if($fgc["txs"][$i]["inputs"][$ii]["prev_out"]["addr"] == $addr2){
            //found a corresponding tx
            print_r($fgc["txs"][$i]);
        }
    }//end inputs loop

    $numoutputs = count($fgc["txs"][$i]["out"]);
    for($iii=0;$iii<$numoutputs;$iii++){
        if($fgc["txs"][$i]["out"][$iii]["addr"] == $addr2){
            //found a corresponding tx
            print_r($fgc["txs"][$i]);
        }
    }//end outputs loop
}

?>

http://phpfiddle.org/main/code/8imw-ardy


How to sweep private extended key from mycellium for bitcoin cash coins?

How to transfer unspent Bitcoin Cash from Mycelium to Coinomi?
or: How to identify the internal and external addresses which hold unspent output and transfer/sweep the funds to another wallet?
or: How can i get hold of my Bitcoin Cash?

Be sure you know what you are doing with your private keys ;)

Recommendation: Transfer your BTC funds from Mycelium to another wallet you have control of (e.g. Coinomi) and wait for the confirmations before starting to move your Bitcoin Cash

Go to https://iancoleman.github.io/bip39/
Enter your 12 BIP39 Mnemonic words (or enter the extended private key)
(Default: Selected Derivation Path BIP44)
Use "External / Internal" Default which is: 0 (0=External) and scroll down to the first address of "Derived Addresses"
Hover over the private key to the right so the QR code shows up
Optional: Open second browser tab at http://blockdozer.com/insight/address/YOUR_ADDRESS where YOUR_ADDRESS is the address shown in the second column and display the BCC funds available - or enter the copied address in the search field
In your Coinomi BitcoinCash Wallet select .../Sweep wallet (... = upper right menu)
Scan private key QR code shown in 5)
Click "Next" to the lower right and wait for the funds to be retrieved (if there are some left at that address)
Continue with 5.) until your addresses have not been used (as seen in the blockdozer browser)
Scroll up on the BIP39 page and enter "External / Internal": 1 (internal - internal to Mycellium); If value = 1 in second loop go to 13.)
Continue with 5.) going back to first address shown
Wait for the transactions to be confirmed and the price to raise or sell or ShapeShift your new Bitcoin Cash to e.g. BTC

Please note: Presently Aug 14th, 2017 there is a bug in Coinomi related to scanning a Bitcoin Cash QR code. You should only copy/paste the Bitcoin Cash address into Coinomi and then you can select if it is a BTC or BCC address.

Additional background: coinomi.freshdesk.com/support/solutions/articles/29000013719-how-to-get-bitcoin-cash-from-many-wallet-software-services-with-coinomi


Understanding private keys, public keys, adresses and transactions

Private Key (SK) -> Public Key (PK) -> Address (A). Some say that SK -> PK == A. Which one is correct?

The first one. An address is not a public key. It is some encoding (Base 58 Check encoding or Bech32, depending on the address type) of the RIPEMD160 hash of the SHA256 hash of the public key. The address comes from the public key, but it is not the public key itself. A public key can have multiple addresses.

  Now, in a transaction when X to Y of "n" bitcoins happens this: X signs (digitally) the transaction "t" with its SK and this the part that I don't get it. How "Y" does to open and verify that the transaction was send from X? or besides that X signs the transaction he encrypts? the transaction again with the PK/A of Y for Y can open it? There's something that I missing?

Signing is not the same thing as encrypting. Transactions are not encrypted, no data in a transaction is secret. It can all be read by everyone.

A digital signature can be verified by knowing the message that was signed and the public key corresponding to the private key that signed the message. In the case of Bitcoin, the message is defined by the consensus rules (it is the hash of certain parts of the transaction), and the public key is provided in the transaction itself. Those three things (the public key, signature, and message) can then be used to verify that the signature is valid.


How to put pool name in a Bitcoin Block?

Mining pools self-identify blocks they've created by putting an identifier into the freely choosable input space of the Coinbase transaction.


Here:

var bitcoin = require('bitcoinjs-lib')

data = new Buffer("Melons.")

var tx = new bitcoin.TransactionBuilder()
tx.addInput("aa94ab02c182214f090e99a0d57021caffd0f195a81c24602b1028b130b63e31", 0)
tx.addOutput("some address", 15000)
ret = bitcoin.script.compile(
  [
    bitcoin.opcodes.OP_RETURN,
    data
  ])
tx.addOutput(ret, 0)
key = bitcoin.ECPair.fromWIF("L1uyy5qTuGrVXrmrsvHWHgVzW9kKdrp27wBC7Vs6nZDTF2BRUVwy")
tx.sign(0, key)
console.log(tx.build().toHex())

That should do it.

Also, if you have more than 40 bytes of data, your transaction will be non-standard.


Here is bash script that auto transfers from hot to cold wallet upon threshhold met. Do you see issues?

My thoughts, in no particular order:

Consider if you need a hot wallet at all. If you don't need to send funds, just accept them, you could probably use BIP32 to generate addresses. Downside is that this way is more complicated.
You should probably bail out of your script if bitcoin-cli produces any errors at all. If your Bitcoin node can't figure out its balance, then it won't be able to send a transaction.
It seems like you detect whether bitcoin-cli failed by 1) checking if it produced output, then 2) checking to make sure that it produced no errors. Why not just use its return codes? bitcoin-cli passes on any error codes.
Your script will tell Bitcoin to send to your cold wallet if you have any amount of extra Bitcoin, even a single satoshi. So, if some miscreant sent you an extra satoshi every time your script ran, it would generate a transaction and pay a fee. You should have a higher threshold, like

THRESHOLD=$(echo "$MINIMUM_TO_KEEP 0.01 * p" | dc)

I don't think that Bash can compare non-integers.

if [ "$sendamount" > 0 ]; then

I'm not sure what this will do.

https://stackoverflow.com/questions/11237794/how-to-compare-two-decimal-numbers-in-bash-awk
Include this line before the rest of your script:

"$BITCOINCLI" getblocktemplate || exit

This will cause your script to bail out if your node is still synchronizing.
What's with this whitespace?

sendamount=$(echo "            $balance


Applying blockchain in telemedicine app involving 'video sessions with doctors' for more transparency

I think this topic is a bit off, as this is a developer oriented forum.
A better forum might be bitcointalk.org.

But sometimes we have to think outside the box :-) To re-create the link to dev and crypto: it might make sense to think about a "colored" coin (medcoin ?), that allows to pay for medical services. Thinking about the insurance in the background, using (Bitcoin's) smart contracts, one could really innovate the extremely expensive medical system (can only speak for Europe). And lightning would allow us to pay per pill! Or per minutes of consultancy.

If I get it right, you are trying to put a reputation system up and running, by bringing everything into blockchain, to be fraud proof. Sounds a bit like an overkill, as Pieter already mentioned.

I can see the benefits for transparency, and some disadvantages (from a socio-political point of view). There is the point of data protection, which plays a vital role in Europe. And certainly you don't want everyone to know, that the doctor gave you medicaments, which may have bad reputation for you (aka Viagra or similar).
And then, the link between a doctor and a patient is - a bit delicate. On the one hand side you need to have trust, and on the other hand side you pay... Introducing a control instance, I don't know what will it do to doctors. Would they be willing to support?

The idea is a bit too fresh and new, challenges us, needs to get some more thoughts spent on, and then be developed into the proper direction. My two cents...


Where can I look up the best ASICS under certain conditions

http://www.bitcoinx.com/bitcoin-mining-hardware/

But you probably don't want to mine...


How can I convert my Bitcoin to Western Union urgently?

There are many Bitcoin buyers on LocalBitcoin who are willing to pay via Western Union. Look for someone with a very high feedback rating and do not release the Bitcoins from escrow until you are sure the payment you have received is final.

https://localbitcoins.com/sell-bitcoins-online/western-union/


New to BitCoin - Purchased Coins but they haven't shown up in my wallet yet - Wallet still syncing

Just wait for your wallet to synchronize.  It won't show up in your wallet until you have the block that contains the transaction, which would be a very recent block.


Try the DiabloMiner app. It uses an older version of Diablo Miner that should work. The developers behind bitcoin mining software usually do not put much effort into Mac compatibility mainly because of two aspects:

Most Macs (iMac/Macbook/Macbook Pro) are not suited for mining because they have poor ventilation, which causes overheating issues.
Apple's OpenCL implementation is not very good. There are constant complaints about its inefficiency and incompatibility with mining software.


How do transactions leave the memory pool?

As of Bitcoin Core 0.14.0, these are the ways a transaction can leave the mempool:

The transaction was included in a block.
The transaction or one of its unconfirmed ancestors conflicts with a transaction that was included in a block.
The transaction was replaced by a newer version (see BIP 125).
The transaction was at the bottom of the mempool (when sorted by fee per size), the mempool had reached its size limit (see the -maxmempool option), and a new higher-fee transaction was accepted, evicting the bottom.
The transaction expired by timeout (by default 14 days after entering).

Also, transactions that have left the mempool can always enter them again. For example, when they're part of the local wallet and get rebroadcast, or when they're received again over the network. Eviction does not imply a transaction is cancelled.

Since Bitcoin Core 0.14.0, the mempool is saved to disk, so it persists across restarts. In earlier versions a restart would also result in a wiped mempool.


Once spent, the wallet removes the UTXO from its cache of unspent transactions. The transaction is not removed from the general database (the blockchain or block index). Full nodes running with txindex=1 keep every transaction forever. Some wallets though optimize the database to recover disk space - but this is a wallet-specific optimization and not part of how Bitcoin works.

For instance, Bitcoin Core has many caches and optimizations. One of them is the UTXO cache. The reason to have this cache is kind of obvious: if you had to search the entire blockchain for your own unspent coins before every transaction, that could potentially take hours. So Bitcoin Core keeps track of your UTXO's. Your UTXO's output amounts add up and become the balance you see on the wallet software.

The UTXO cache never points to previous transactions - it's just an optimization cache that makes it easy for Bitcoin Core to find TX's. The algorithm which builds the UTXO cache knows which transaction the UTXO came from, but the cache never points anywhere except to the TX index where the unspent output is located.

The pointer to a previous transaction only exists when you spend a UTXO and then a new input TX is created on that transaction. That input will point to the previously unspent transaction and that former UTXO will become spent. A new UTXO is then created after this transaction is mined. This UTXO becomes part of the Bitcoin balance of the recipient, just like the UTXO was part of your balance before you spent it.

This image (courtesy of bitcoin.org) might help illustrate how it works:

See those UTXO's dangling without a new TX ahead of them? Until they're spent, they remain as UTXO.

The arrows in that illustration show the money flow direction, but technically the arrows point the other way around : the inputs point back at some previous UTXO output. Once an input points at an output that output is no longer a UTXO, it is a committed TX. The input links the previous TX to a new UTXO and the previous one is marked spent. Bitcoin Core then removes this previous UTXO from the cache.


An App for Crypto Currency Tax Declaration

This could have been a question that could be ignored easily until last year. But after the case of IRS and Coinbase, after so many people getting tax notice from Coinbase that their information could be shared after meeting certain threshold - it's a topic and question that can't be ignored.

I had faced a similar problem of calculating my tax liability on cryptocurrency trades done on various exchanges. A couple of prominent software either ran into negative balances or they were too pricey for the profits I made.

This helped me to build one and launch it to the public. We've called it BearTax - a comprehensive suite for cryptocurrency traders and accounting professionals. You can connect with unlimited exchanges and can process unlimited transactions without any payment needed. You can consolidate, review and calculate gain loss for free.

Processing power needs some fuel and we charge only those who would like to download tax forms and auditable CSV files. Give it a try and let me know your feedback. Appreciate the response from the whole community here


ASICMINER Blade Erupter Backplane Dimensions

The dimensions are as follows:

Hasher size: 233mm x 116mm with a 227mm x 100mm x 19mm heat sink attached to its back

Power module size: 192mm x 89mm

Ethernet controller size: 86mm x 40mm

Source:

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


Transaction do not need to be signed. They are if the locking script requires so, which is the most usual thing, but scripts redeemable without a signature can also be valid.

That being said, a transaction redeeming from a script that does not requires a signature could be highly insecure, since a peer (or a miner) that receives so can easily change the output.


What is the difference between these two "instruments" ICBIT charts

The number after the BTC/USD is the settlement date of that particular futures contract.

You can find a list of all ICBIT futures in this page, and clicking on one will show you all the details, for example: BTC/USD-12.13

As for why the prices are different, it's somewhat outside the scope of a Bitcoin discussion. I really suggest you read up on Futures Contracts. Make sure to fully understand the nature of Futures trading before investing in it.


Can arbitrary transactions be aggregated?

Yes and no.

This can be done for all types of Bitcoin transactions, but only collaboratively by the senders controlling A, B and C. There is even a protocol available to find partners which is called "CoinJoin". The idea is to increase privacy, although this is not necessarily achieved by CoinJoin, as it is often easy to calculate which inputs would correspond to what outputs.

Transaction aggregation cannot be done by third parties or only a subset of the participants, as a signature in Bitcoin needs to cover the complete transaction data. Therefore, to update a transaction with another input and more outputs, all the original signatories need to add their signature again as well.

If you're interested in the topic, you should look into the following keywords:

Transaction cut through
CoinJoin
Mimblewimble
"Schnorr Signature Aggregation"
RingCT or Ring confidential transactions on Monero


Insight-api: Websocket "tx" event - which variables?

What you are looking for is in the lib\transactions.js file. Line 210 to 215.

  var transformed = {
    txid: transaction.txid(),
    valueOut: valueOut / 1e8,
    vout: vout,
    isRBF: isRBF,
  };

I took a quick glimpse, vout is an array and isRBS is a boolean.

Honestly, I don't know why "processed" is in the documentation example. I might possibly have overlooked it, or maybe it could be a local produced string.


is there any way to get derivative path from public key and xpub?

No, you can't, apart from trying various paths and re-deriving it.


Correct Approach for Payments on Multiple Addresses

Short answer: check out BTCPay, it does what you ask. You don't have to create your own server to use it, you can just create an account on an existing instance, for example this one should be fine to being with.
Long answer: you're right when you say that one private key generates one address, but Hierarchical Deterministic (HD) wallets are made to solve that.
Basically they allow to generate a virtually unlimited number of private and public key pairs from one piece of data. Deterministic means that if you know this piece of data, the "seed", you will always generate the same keys in the same order.
But it gets better than that, as you can derive only the public keys, meaning that you can use an unsecured server to generate addresses and receive bitcoin payments without ever exposing your private keys! That's the way BTCPay server work, and that's why you can use another person server to receive payments without trusting him. Worst case he will only know all your addresses, but can never steal your bitcoins.
I'm simplifying a bit, but that's the general idea.
As for your last question, you could have the private keys on another wallet like Electrum, or a Ledger, and then just use that to spend the bitcoins you received on your BTCPay server. I won't go into more details here, you can have a look at the BTCPay documentation or get in touch with their community.
NB: I recommend BTCPay because as far as I can understand your need I think it is the best option, but if you're not confortable with it you could as well use Electrum or a Ledger and send new addresses to your client in email or a secret pastebin for example.
That's great if your customers are okay to pay you in bitcoins. Stay safe, and remember never ever give your seed, or private keys to anyone or any service on the internet.