What advantages do "alt-coins" have over bitcoin? I'm struggling to see the importance of alt-coins. It seems to me that one of the major selling points of the various alt-coins is their quicker confirmation times. The common argument is: this is good for merchants and the like, because there is less time for them to worry that the customers' payments are legitimate.

But can bitcoin users not have the same "luxury?" Why can't a merchant run his own node? His node will process the transaction, and the rest of the network can play catch-up.

Another argument is that there are too few bitcoin, and that eventually bitcoin will be the gold of digital currency--what the big transactions happen in--and the alt-coins will be the silver, or the copper--for day-to-day use.

Is that really even good in theory though? The price of bitcoin would need to be in the millions for that to even be a decent worry. I can possibly see it being an issue, but do we really need to consider it now, when the exchange rate for bitcoin hasn't seen more than a few months in the 4-digits?

Am I overlooking a hyper-important advantage?

It depends a lot on the specific altcoin you're talking about. For the most part, there aren't a lot of major differences between Bitcoin and the alts. Sadly many of them exist only as the leftovers of pump-and-dump schemes intended to make their creators rich, though there are a few that are interesting in important ways.

One of the primary benefits of a thriving altcoin economy is that they often represent the testing of a theory that may eventually benefit Bitcoin itself. Many altcoins, for example, use scrypt as their mining algorithm instead of SHA256. If SHA256 is discovered to be compromised some day, having a drop-in replacement for that subsystem available would be a major boon.

You specifically mention faster confirmation times as a potential benefit, but the most often overlooked part of that statement is that transaction finality is a result of computational cost, not of time. This means that if an altcoin has one tenth the confirmation time and an equal amount of hashpower relative to Bitcoin it will take ten times as many confirmations to reach the same level of transaction security. Faster confirmations are a psychological benefit, not a technical one.

The "silver to Bitcoin's gold" theory, largely pushed by Litecoin proponents, is also fallacious in that the entire reason gold requires a baser partner metal is that it is not adequately divisible. Paying for a candy bar with gold would be incredibly difficult for both parties involved since the amount of gold needed would be absurdly small. Bitcoin is not subject to such physical limitations and as such can be divided into such tiny portions relatively easily.

Taking all of the above into account, it should be clear that while a handful noteworthy exceptions do exist, the majority of altcoins are intellectual curiosities at best and scams at worst. A few make meaningful changes, but thus far none of those changes has really been a meaningfully large improvement over the base system.

You should look up Warren Buffet's reasons for not investing in Bitcoin.. something better could come along and take over and Bitcoin is still an infant.  Personally, I'm convinced that something better is Nxt.  It's written from the ground up, it's proof of stake which is something like 1000 times more energy efficient and 500 times as cost efficient and more secure, with almost instant transaction confirmations coming soon.  All of which is important.

There are other reasons, such as dogecoin having long term fixed inflation making it better for the long run.

And just in general, it's better to have a few alternative currencies, so that if say the Bitcoin miners decide to gang up, they can't take out the world's economy.  Also, seems very unlikely and Bitcoin has stood the test of time, but let's say a bug was found in the coin itself.. again, it's good to have alternatives.


how to get private key from passpharase in php? i have a passpharase bitcoin, but i don't know how to get private key from my passpharase. I tried using blockchain and electrum and it worked. but here what I need is to find the private key using php.

please help me how to find the private key?

if you have mnemonic seed phrase
use offline
https://iancoleman.io/bip39/


How to debug a long "0/unconfirmed" status in the bitcoin client? When someone gets a status of "0/unconfirmed" on a transaction for a long time - what could he be doing wrong? What should he check to solve this?

Try running bitcoind from the command line with the -rescan option. It may be that your transaction was erroneous or a double-spend attempt and it only exists in your client. You could double-check the receiving address in blockexplorer to see if the transaction ever came through from the rest of the network's perspective. If this is a zero transaction fee transaction (or is just otherwise unlucky) it might still be in-queue to be included in a block. Bitcoin Charts has a list of in-queue transactions you can check as well.

Assuming blockexplorer sees the transaction, your client probably isn't downloading blocks and may not even be connected at all. Check that the block number in your client matches the block number at blockexplorer (or any of a number of other sites), check if your client has 0 connections. If you have no connections, try the troubleshooting steps from this question. Worst case scenario delete everything from the Bitcoin data folder except for wallet.dat and re-launch the client. Several hours later when you've finished downloading a fresh copy of the block chain, your 0/unconfirmed transaction will probably be resolved.

This far the bitcoins are so called send and my btc shows 0.00 in wallet
I did several deletes of the whole thing but the btc is not restored or in being send at all
I left it open about 4 hours after it downloaded but nothing changes the -3.7737 btc keeps showing on the right side
i did 2x bitcoind -rescan before but the download of the chain takes a long time as well
even the given stransaction id i could not find in the list
i redeleted the files now again but untill now nothing has changed


Is Bitcoin given as a gift taxable? Question by someone who is new to Bitcoin. Bitcoin mining is considered taxable income in the US. However, if it's given as a gift, then should it be taxable under US law?

This is probably better for Money.SE as it doesn't really have anything to do with Bitcoin; it would be the same for any sort of  income.

However, my understanding of tax law with respect to gifts is roughly this:

Money, goods or services that you earn from working, business or investing are taxable income to you.
If you decide to give some of that money to someone else, that's your business; but you still earned it, and it's still your taxable income.  Giving it away doesn't change your taxes at all.  The IRS doesn't really care whether you gave it to your friend or used it to buy 300 pounds of jellybeans.
Within certain limits, the gift is not taxable income to your friend (who didn't earn it).  However, above those limits, it can be subject to gift tax.  I think beyond $13,000 per year, you have to start keeping track of such gifts; gift tax does not actually kick in until a larger number, but it counts gifts spread across several years.
The one major exception is if you give the money to a registered charitable organization.  Then you can deduct the gift from your income, again up to certain limits (usually 50% of your income).

Disclaimer: If you want tax advice, talk to a professional who's qualified to give it.  I'm not.

if giving Bitcoin as a gift - it would depend who the recipient is and how they claim it.
Basically if they are reporting it as income, or taxable benefit then there should be taxes.


bitcond and bitcoin-Qt system configuration and bandwidth requirements What is the best operating system configuration for a computer to run (bitcoind or bitcoin-Qt) and (BFGminer or CGMiner) under Linux, assuming that it will be connected to a 3 Terrahash mining rig on one side and the internet on the other side?

What packages, at minimum, must be installed?

How much bandwidth will I need using the Stratum protocol and how much using the GetBlockTemplate protocol?

EDIT TO ADD:

What I mean by "best configuration" is the minimum configuration that provides the necessary functionality.

I'm willing to bet that 90 percent of what's in a desktop Linux distribution is not needed in this application.

Obviously, a kernel and a shell will be needed.  What else?

Would you be mining by yourself, or in a pool? If you are mining in a pool, you won't need bitcoind or bitcoin-QT running, and you can use a Raspberry PI to run CGMiner. Raspberry PI is very easy to set up, fast and requires much less oversight/administration as compared to a consumer grade laptop/computer.

For dependenices the minumum i was able to get away with was

libdb4.8-dev
libdb4.8++-dev
libminiupnpc-dev
libqt4-dev
libprotobuf-dev
protobuf-compiler
apt-get install libqrencode-dev

and make sure you have enough room for validation i had the many errors coming up for not dedicating enough. Personally when it comes to bandwidth I needed way more than 14 Mbps.


What are the regulated exchanges out there? I do not have trust in random exchanges.

I'm looking for regulated exchange so I'm less likely to lose my BTC.

What are the regulated exchanges out there?

Some hints:

https://techcrunch.com/2015/01/25/coinbase-us-bitcoin-exchange/
What changed about coinbase.com to make it a "regulated exchange"?

You are always taking a risk having your BTC on an exchange. By sending BTC to an exchange you pretty much trade your BTC for their tokens that you can later trade back to BTC, assuming they don't get hacked, seized by the FBI or just steal them.

If you are planning exchanging BTC to another currency i would recommend withdrawing the other currency asap from the exchange. The only reason for leaving your money on an exchange is to daytrade. Most people that daytrade will lose money doing it and not even realize it.
You might make a profit if you compare your initial fiat investment to your current fiat value. What you need to consider is if you made a profit compared to just holding BTC. You should also consider the risk of something happening to the exchange and the risk increased with time as long as you have your money on an exchange.


Can rainbow tables be used to find private keys from public keys? I understand that the public key is kept hidden until a bitcoin transaction is made, at which point the public key has to be revealed to prove that you created the transaction with your private key. Until then, only a hash of your public key is ever shared, know as your bitcoin address.

Once my public key is known, would it be possible for someone to lookup my private key in a rainbow table ?

No.

A rainbow table is simply a memory-cpu tradeoff that allows you to find preimages of a function faster by having a precomputed table with some of the entries.

In order to construct a rainbow table for bitcoin private/public keys, you still have to first iterate through all the keys at least once. It doesn't matter that only part of the keypairs will end up in your rainbow table - you still have to go through all them.

That is an impossible task. There are 115,792,089,237,316,195,423,570,985,008,687,907,852,837,564,279,074,904,382,605,163,141,518,161,494,336 valid private keys to go through. To put that in perspective: if you would put a computer on every square micrometer of earth (1/1600th of the cross section of a human hair) that can compute as many public keys per second as the entire Bitcoin mining network does hashes per second at the time of writing (4 exahash/s), it would take you 120000 times the age of the universe to go through all keys.

And, even if somehow you had an oracle that could give you the rainbow table, it would need to be impossibly large to make cracking private keys practical. If your table had a trillion entries, it would only make cracking a trillion times faster. That's still utterly impossible.

indeed that would theoretically be possible. such a table luckily is very large. for more read e.g. on the large bitcoin collider. if an active address means that is spends money, then the pubkey is revealed which makes it easier to attack. as long as an address only received money it is protected better by the 2nd hashing layer.

lbc can be ignored but they walk systematically through the keyspace from small difficulty to large by entropy. easy to find keys are just a bait to have more people involved. @Pieter: of course weak RNG is a problem, but that was not in question; we better get some open hardware standards for TRNG.

interestingly people vote this down. we have to face it: there are problems with the implementation of bitcoin apart from just scalability. the hashing was not well thought through and the ecc algo (Secp256k1: T=(p,a,b,G,n,h); a=0, b=7 … h=1. see slide by ruedi) got the parameter a nulled without any good reason (performace is not a good argument at all in means of crypto). cryptography does not honor weaknesses, small they may be.


What can I do when the blockchain synchronization is stuck at a specific block? I hadn't started/used my Bitcoin client for ages. Now, whenever I start the client, it is downloading block 135407 and does not progress past it.

What can I do?

I had this happen to me once. It was apparently caused by an incompatible peer node.

Delete $HOME/.bitcoin/peers.dat
Restart bitcoind

Afterwards, new compatible peers will be found, and hopefully, you'll start processing blocks as expected again.

You should update your bitcoin software.
Old bitcoin versions are not supported.

Look here:
https://bitcointalk.org/index.php?topic=55852.0


If I send Bitcoin from the USA to a friend in India, do I have to pay capital gain tax on it if he sells it and makes a profit? Let's say I buy $10,000 worth of Bitcoin in the USA, which I transfer to my friend in India. He sells it for $11,000 and keeps that money himself as I have gifted him that Bitcoin. My questions:

Should I pay the tax in the USA because he got profits from the Bitcoin which I sent?
How does the IRS know that particular Bitcoin has been sold?
Even if they know it was sold, how can they tax me as I am not the person who sold it?

If this is a true gift, that is, not part of any larger transaction and given out of the kindness of your heart, then you're probably going to have to consult a tax professional because this will depend on the precise tax treaties between the United States and India.

Generally, when you give a gift to another person in the United States, you do not have to recognize the appreciation in value of that gift as a capital gain and the recipient gets the same basis you had, so they will have to pay capital gains tax when/if they sell it.

But generally, when you give a gift to someone who is not a US citizen, you do have to recognize the appreciation of the value of the gift as a taxable capital gain before you can gift it. However, this can be modified by tax treaties.

If this is not a true gift and is part of some other kind of transaction, then you absolutely must recognize the change in value of the bitcoin as a capital gain before you can give it to someone else, domestic or foreign.

You asked:

  Even if they know it was sold, how can they tax me as I am not the person who sold it?

The tax is not on the sale, it's on the increase in value which is a form of income. Generally, whenever you dispose of an asset, any increase in its value is a taxable gain. There are exceptions, such as a true domestic gift, those made by international treaty, and if it's transferred because of your death.

I am not a lawyer or a tax accountant so you can take my answer FWIW.

Your question equates to, if I gave my friend in India some USD, would I have to pay Capital Gains Tax if the value of the USD went up, or, if I gave my friend in India some peanuts, would I have to pay Capital Gains Tax if the value of the peanuts went up.

So, the answer is no, no CGT on what you gave away (unless if by some strange quirk US law requires you to pay CGT on property you have already given away anyway, if the value of said property increases?)

In Australia generally, CGT is only payable when the profit is taken, i.e. when the property is sold for a higher value than it was acquired for. I do not know that there are specific laws in Australia for CGT to be payable on forex trading, as BTC is seen akin to foreign cash here, although I believe you would still need to declare the income from the profit and pay the appropriate marginal rate of income tax on that.


What is "fed-peg" and "predefined functionaries" with sidechains? I am reading about side-chains, and what I read in this article is:

  The initial sidechain included in Sidechain Elements works on a
  federated security model; while it’s still peer-to-peer and
  consensus-based, security for the blockchain is provided by a set of
  predefined functionaries in an arrangement called a Fed-Peg. A number
  of academic groups and individual contributors have agreed to run the
  Sidechain Elements Fed-Peg, including blockchain groups at Stanford,
  MIT, and Princeton. The sidechain does not include mining or
  proof-of-work at this point.

I have no idea what that means. What is "fed-peg"? Why is that needed? Does it change in any way the security of the main chain? How does it differ from decentralized PoW?

I have no idea what that means. What is "fed-peg"? Why is that needed?

When you're creating a sidechain, you need a way to move Bitcoins from the main network to your sidechain. This is pretty straightforward. Counterparty, Ethereum, and NXT had various ways of doing this. (Admittedly, none of these allowed people to turn Bitcoin into the assets on these networks after they started, but I suspect that's due to economic reasons rather than technical ones.)

The more complicated, and more important issue, is how you move Bitcoins that are on the sidechain back into the main network. I've heard multiple proposals on how to do this, but all of them are either

insecure,
centralized,
or require very complicated changes to the Bitcoin protocol.

This approach is centralized.

The idea with that you have several authorities, each of whom has a private key. Those private keys together control a multisignature account. When you move Bitcoins onto the sidechain, you deposit them into the multisignature account. When you want to move them back to the main chain, you do so on the sidechain; those federated authorities will independently validate that transaction. Then, all of them sign a withdrawal from the multisignature account to the main network address you specified in your sidechain transaction.

The blockstream paper suggests a 3 of 5 multisignature account. The issue with this is that if 3 of those keys are compromised (or if 3 of them collude) then they can take all of the money out of the multisignature account.

  Does it change in any way the security of the main chain?

No. It doesn't modify the main network. Future incarnations might, though. There's not enough detail about those possible future systems to answer that at present.

  How does it differ from decentralized PoW?

The federated authorities have two roles in this system: gating transactions into the system by producing timestamped blocks, (something normally done by miners) and the previously mentioned multisignature account.

A tiny bit of detail on this was added as an "Appendix A" to the sidechains paper at some point:

  By adopting some additional security assumptions at the expense of the
  low trust design objective, it is possible to do an initial
  deployment in a completely permissionless way. The key observation is
  that any enhancement to Bitcoin Script can be implemented externally
  by having a trusted federation of mutually distrusting functionaries
  evaluate the script and accept by signing for an ordinary
  multisignature script. That is, the functionaries act as a protocol
  adaptor by evaluating the same rules we would have wanted Bitcoin to
  evaluate, but cannot for lack of script enhancements. Using this we
  can achieve a federated peg.

Basically it's a cabal of "trusted miners".

Since the main bitcoin chain miners don't understand the sidechain's cool new features they can't validate those blocks.  So the sidechain has to be run Ripple-style where there is a pool of trusted miners and one of them has to sign off on each block.  These trusted miners (which they call "functionaries") hold special private keys, and the corresponding public keys are hardwired into the source code.  These central authorities have the power to block the chain's progress, exclude transactions, or even freeze accounts.


Where can I find a graph of Bitcoin value vs USD for over 60 days? Bitcoin Charts seems to only offer graphs of up to 60 days.

Bitcoin Charts currently have charts of up to a year in length, as well as "all data" charts.

Example 360 days:

http://bitcoincharts.com/charts/mtgoxUSD#rg360zvztgSzm1g10zm2g25

http://bitcoinity.org/markets?theme=light

this is a great site too, but i believe it only goes to 30 days
this is a live graph though


Do I need to pay taxes if I sit on (do not use) bitcoins? I've done some reading on the IRS bitcoin guidelines and I'm a bit confused how the capital gains taxes works. If I buy some bitcoins in Jan, the value of the bitcoins double by the of the year but I still keep them, do I need to pay a tax on those? Or do I only need to pay tax if I buy something with them/convert them to fiat?

I'm in the USA by the way.

No. Assuming you are not a miner or receiving bitcoin in exchange for services, there are no taxes that you need to pay on the bitcoins until you sell or transfer them. When you sell or transfer them, you need to pay taxes on the difference between the value of the bitcoins and your tax basis in the bitcoins.

The value of the bitcoins would be what you sold them for if you sold them. If you traded them or did not get full value for them the value for tax purposes is their fair market value.

Your basis in the bitcoins is what you paid for them. If you mined them, it's probably their value at the time you acquired them assuming you treated them as income. Otherwise, it gets complicated. (In particular, you should either treat your basis as zero or consult a tax professional if you sell or otherwise dispose of bitcoins you received as a gift!)

If you held the bitcoins for more than a year, this is a long term capital gain. If you acquire and sell bitcoins on a regular basis, the rules get tricky for which sells you have to match to which buys.

I am not a lawyer. Please check with your own tax professional if you need advice you can rely on.

you don't need to pay any tax on your bitcoins, simply sell them for cash, and no one can even prove you had any bitcoins in the first place. there are a lot of people willing to buy BTC in exchange for cash.


Why can't Bitcoin switch over to Gridcoin's proof of work system? Gridcoin advertises itself as a "a mandatory competitive reward mechanism based on contributing the most towards BOINC projects on top of existing cryptocurrency technology."

Is there a reason why Bitcoin couldn't use Gridcoin's proof of work system, either to secure the system, or to distribute coins? What consequences would switching to their system have?

Related: What sort of calculations do the miners have your computer do?

Such a switch will never happen. There are three main reasons for this.

It would require the worst kind of hard fork, one where a lot of legacy code would have to remain in the coin, for the sake of validating transactions before the hard fork date.
While the reward system itself has been specifically designed to not be game-able (https://github.com/TheCharlatan/Gridcoin-Research/tree/master/contrib/BoincMonteCarlo), it is nevertheless destroyable by a malicious actor with reasonable funding, since it relies on a centralized service to distribute its data.
There is little to no research towards the specific crypto algorithms used to secure user information in the chain, such as https://github.com/TheCharlatan/Gridcoin-Research/blob/CPID-style/src/cpid.h . In fact the CPID (which is used to identify researchers) is an md-5 hash of some string and the user email, so it definitely does not compare to Bitcoin's standard of security.

Gridcoin is driven by only one buggy developer. It seems not to be truly decentralized cryptocurrency now.

Several of buggy releases and several of blockchain snapshots are published in last few weeks.

Developer is just asking people to remove his coin on Poloniex just because they do not compile his new released code fast enough. (He did not even care about security reviews of his code).

Developer is also trying to move some coin from foundation wallet to his friend.

I do not think Gridcoin is a secure currency to invest now.


Is there an easy way to check out the market cap of the alternative cryptocurrencies? Ideally, I'd like to see a pie chart with the whole pie being "Bitcoin-derived cryptocurrencies", and each major alternative represented as a market cap in Bitcoins and USD.
Currently, from what I gather we have:

Bitcoin - 7,415,750 BTC = $34,854,025 = 99.7%
Namecoin - 959,150 NMC = 25,897 BTC = $121,716 = 0.3%

I don't know where to get data on other cryptocurrencies right now, and if they even have any significant market cap.

Introducing ... Bitcoin Pie.

Supported Coins are Bitcoin, Tenebrix, NameCoin and SolidCoin. If your favorite coin is not supported, point me towards an active exchange (with or without an API), and a block explorer, and I'll integrate it.

It's 2021 and none of the existing answers work.
Behold coinmarketcap.


Is there any way to track an individual bitcoin (or satoshi)? For example, if I wanted to "collect" important bitcoins is there any way to track a coin rather than a series of transactions? If I wanted one of the bitcoins from the infamous "Bitcoin pizza" purchase, for example, is there any way to do so?

Perhaps the question I should be asking is more like "Do bitcoins themselves even exist or just the records of transactions?"

Here is a possible schema describing transactions from two addresses A and B that contain initially 50 BTC each:
     (A) 50 btc --tx1-----------------------> 25 btc (C)
                   \
                    `-> 25 btc (D) --.
                                      \
                                       tx3--> 50 btc (*)
                                      /
                    .-> 25 btc (E) --'
                   /
     (B) 50 btc --tx2-----------------------> 25 btc (F)

There are three transactions here, and they mention only values: those transactions are stored in the block chain like:

tx1: (input on A: 50BTC; output on D: 25BTC, output on C: 25BTC)
tx2: (input on B: 50BTC; output on E: 25BTC, output on F: 25BTC)
tx3: (input on D: 25BTC,  input on E: 25BTC; output on *: 50BTC)

Only global amounts are involved, not individual satoshis. Could you tell where each of the satoshis in * came from? A or B? Just impossible.
Conclusion: There is no such thing as individual satoshis, they don't have identities in the Bitcoin framework.
(And it's the same, or even worse, for bitcoins. An individual bitcoin is not well defined. It might be a grouping of smaller amounts in the same place (wallet), or at the same address, or in the same transaction, but at a given point in time.)
It is however possible to track money flows between addresses, which may “dilute” into other flows, as illustrated in this answer.

A "bitcoin" is an individual output of a transaction. It is a "coin", because it is not possible to spend only a part of it and somehow leave the rest resting in your wallet, hanging off the transaction it came from.

A transaction can be viewes as this: take these "bitcoins", melt them, mint new ones according to the specifications provided by me and distribute them as I am instructing. Each transaction destroys the bitcoins that are its inputs and produces bitcoins that are its outputs. The "transaction fees" are like "unused raw material" which returns back to the "ground" and can only be extracted back as a coin by mining.

This is similar to real physical coins - the cashier can't take a half of your 50 cent coin when your bill says you only owe 25 cents, he only can take the whole 50 cent coin and give you a 25 coin back to get rid of the excess payment of yours. Similarly if you have only 50 BTC coin on your account, and you want to pay 5 BTC, you (or, more specifically, your BTC client) must "melt" the 50 BTC coin to create a 5 BTC and a 45 BTC coin before it can give the 5 BTC to the destination address you specified. And this is also why you have to specify a destination for the 45 BTC coin as well (otherwise the 45 BTC will turn into "raw unmined bitcoin material" which is not directly usable and must be mined).

So the answer is "yes". A bitcoin starts its existence at an output of a transaction and continues its existence until it enters an input of a transaction. When the bitcoin entered another transaction, it no longer exists; the outputs of that another transaction are completely different bitcoins.


I am new to bitcoin, and GUI miner won't work on slush's server I am new to using bitcoin, and I don't have any mining hardware, just my computer. I got GUIminer, and set the server to other, and the host name to http://api.bitcoin.cz, port 8332. I entered my username and worker name, and it's now mining (very slowly, as expected) but still mining, however, it says on slush's server that i don't have any active workers and I'm not mining, anybody know what the problem is? I also have 1 stale share, what is that, and how did i get it?

Your hashpower is magnitudes too low. It is so low, that the pool doesn't accept your work, because it will never amount to any use. You are competing with a teaspoon in a world of Bucket-wheel excavators. You will be expending energy and never gain any revenue. Please check out In the ASIC-age, is it worth starting mining Bitcoin at home? for a more comprehensive overview of the mining situation.

Shares are simpler portions of work at a lower difficulty than blocks. They are used by mining pools to gauge the contribution of miners. You apparently found a single share, but it was found after the pool had started working on a new block. When your guiminer told the pool about it, it was already outdated.

Buenas noches amigos les hablas Carlos Mendoza desde Caracas Venezuela, espero se encuentren bien y obtengan mucho exito en el minado, me encuentro en esta pagina por los siguientes motivos.

Soy un programador y diseñador de websites, un placer.

Hace poco me meti en el minado de Bitcoin, estoy minando por varias paginas web, pero no es muy rentable al menos que inviertas.

Tambien me informe sobre GUIminer un sotware para minar Bitcoin con las GPU, pero tengo unos detalles me gustaria un poco de asesoria. Ok tengo el minero instalado pero no quiere leerme las GPU ¿Tengo que instalar otro programa?

Espero sus respuestas. Gracias.


How does one set up and configure a Butterfly Jalapeño for mining? I just got some awesome new ASIC miners (2 Butterfly Jalapeño 5GH/s) and set them up, started running them, and only one of them was actually working. Yes I have all my cables correctly plugged in to a good power source. Can someone please tell me how to connect them so they can mine together?

I figured this out. A simple computer restart and software re-download fixed the problem.


In a mining pool, can there be any two or more nodes mining a block using the same nonce? Me and my friend decided to try to mine cryptocurrencies using somewhat old (few years old) unused but somewhat decent gaming PC. We decided to create or join a mining pool to double our processing power.
Since, the coin reward in mining pool is gonna be divided by members of a pool.
I wonder, if there is a possibility for two or more nodes in mining pool to mine a block using the same nonce?
I am guessing that this is not an efficient strategy to pool mine. It would create a sub-optimal strategy to pool mine, because if two or more nodes that are supposed to work together, are gonna waste power to calculate a block using a used (calculated) nonce- that is already used (calculated) by your friend in the pool.
This would even decrease the doubling (multiplication) of computing power.
In fact, there would not be any different that non-pooled miners (all competing to calculate the valid hash). Except that pooled-miners need to split the rewarded coins, while the non-pooled miners would keep all their rewarded coins. Am I correct? Or do they (competing miners) even coordinate and mark used (calculated) nonce across the network?
I am sorry, if I haven't completely understood the details yet.
In pool mining softwares, do they prevent this (calculate using same calculated-nonce) from occurring in general, like do they (the mining software) coordinate the nodes to mine using different nonces? Is there a protocol (rules) to prevent this from happening in bitcoin or any other cryptos in general? Or will it be just implementation dependent? If so, how to find mining software that could coordinate pool mining in an efficient way?
I am still quite new in cryptocurrencies in general, I am sorry if there are any mistakes in my understanding, I am greatly thankful if you could correct them.

As I understand this. The nonce is the response to the mining hardware. Nodes process transactions AND this is not mining. The mining produces the nonce the core adds transactions and distributes them (according to block level).
This is an artifact of early bitcoin development from pre-2010 release of "theory technology". You would have a hard time finding any information on this now a days. Good luck @ the onion.


Investing in cryptocurrency in India Question: My friend in India wants to start investing in cryptocurrency such as bitcoin. I have a few questions. What is the current legality of cryptocurrency in India? What exchange should he use? What wallet app should he use (should support main popular coins)?

Crypto was declared legal in India, earlier this year by the Supreme Court. That being said there are no legal frameworks/regulations right now by the government.
WazirX is one popular exchange in India. Haven't used it though.


Are any miners still considering priority in their transaction selection? A new answer on Who gets Bitcoin transaction fees? has spawned discussion on the paradigm shift from selection by priority (= coin age × spent value) to selection by fee rate (= fee / transaction size).
It's clear that Bitcoin Core v0.12.0 has turned selection by priority off by default, but I am wondering whether it follows that all miners have discontinued using it.
Is it known whether any miners are still selecting the transactions to go into their blocks using selection by priority?

Generally, no miners still use the priority system for selecting transactions. You can easily test this by spending a very old UTXO (e.g. 1 BTC that has remained unspent for several years) and paying no transaction fee. If miners still are using priority, your transaction should be confirmed relatively quickly (hint: it won't be). Otherwise, your transaction will not confirm for several weeks.

The answer of this question depends on the setup of the miner who succeeded to solve the block. In general the priority still matters most; only the spare additional resources up to the maximum block size include transactions not paying the recommended amount of network fee(s).

As a miner you can even setup a minimum (or maximum) transaction fee amount needed to get your transaction included into a new block:

  At all times, Bitcoin Core will cap fees at -maxtxfee=<x> (default: 0.10) BTC. Furthermore, Bitcoin Core will never create transactions smaller than the current minimum relay fee. Finally, a user can set the minimum fee rate for all transactions with -mintxfee=<i>, which defaults to 1000 satoshis per kB.


Projects built on the Tendermint platform? The Tendermint project sounds like a very promising  proof-of-stake implementation.  What public projects are being built on this platform?

CyberMiles is using it. They just got on the stage


What are the downsides of proof of stake? I am very skeptical about the security of the proof of stake system. Is it really that secure? Are there no disadvantages?

Vanilla proof-of-stake doesn't achieve consensus, unfortunately. People staking their coin can vote for both forks of the blockchain, and can even mine effortlessly in secret. In PoW this is impossible, as you are literally wasting energy by mining both sides of a fork.

To mitigate this, most modern PoS schemes use a mixture of PoS and PoW to ensure that someone will finally decide the chain.

http://www.reddit.com/r/Bitcoin/comments/1oi7su/criticisms_of_proofofstake/ for more discussion.

There's an argument that certain properties of cryptocurrencies encourage hoarding, but I think this is wrong. If someone ends up rich through 'hoarding their coins, there is then an incentive to spend some of those coins, to buy a car,a house, go on holiday.
I think this has been levelled at POS coins too, that eventually, all the coins end up in a few hands of big holders.
But they are going to spend at least some of their wealth on a luxury lifestyle.
Probably, they will remain super wealthy, but, their wealth will always be being spent and that wealth passed on to others, eg the guy who built the Aston Martin he just bought.


How to recover Bitcoin mistakenly sent to a bch address A few days ago I could not open my btc.com wallet so I went to Google play and downloaded a bch wallet after the search for Bitcoin showed me this. So naturally I thought this to be a btc wallet. It gave me a receive address that I gave to CoinMama for a purchase of Bitcoin. The funds didn't show up in my wallet. How do I access these funds now?

bch and btc use the same type addresses. try importing the private key into the wallet


How can I prune my Bitcoin Core correctly? The other way did not work for me. Have I done any unnoticed mistake? Saving the entire blockchain in my computer is taking mi a lot of space. I looked in this forum for a solution and I saw that there was an option to prune the node and save a lot of space.
I followed the instructions, I went to the Bitcoin data directory, I created a file there and called it "bitcoin.conf" and I wrote "-prune=1100" in it.
Nothing I expected happened, the space it took remained the same, it only started downloading a new blockchain called "testnet".
Have I done something wrong? And how can I fix it in order to save space?
My version of Bitcoin Core is v0.14..2

PS: Latter, I have discovered that, in fact, I have three Bitcoin data directories, and suddenly I have doubts about in which of them shall I place my "bitcoin.conf".
Is having three directory data how it shall be? And in which of them shall I place my "bitcoin.conf".

From your description it sounds to me that you may have edited your configuration file while Bitcoin Core was already running.

prune=1100 is a startup parameter. It will take effect once you restart the program.

If you add a parameter to the startup instructions,  parameters start with a dash (-prune=1100), e.g.:

"C:\Users\<username>\AppData\Roaming\Bitcoin\bitcoin-qt.exe" -prune=1100

Please make sure you use the correct path for the actual directory you installed Bitcoin to.
If you add it to the configuration, the parameter must be listed without a dash in the bitcoin.conf:

prune=1100

If you're unsure how to locate your Bitcoin data directory, please see: Where is the configuration file of Bitcoin-Qt kept?

There is no need to manually delete any files from your Bitcoin directory, or to start over the initial blockchain download to enable pruning.
You merely need to restart Bitcoin Core after you've edited the bitcoin.conf. If you don't know how to restart a program, you may find it simpler to shut down and restart your computer.

I have previously done this.

Go to your blockchain folder.  Delete all blockchain files (blk***.dat and rev***.dat) except the two most recent ones for each file set (blk and rev).  I've done that with no problems in the past.

****WARNING**** Your results may vary!  ****WARNING****

The only risk is that you might have to re-download the whole blockchain again.  Always have a backup of your wallet.dat file too!

The "most recent" files I'm referring to are the ones with the highest numbers.  Mine currently go up to "rev00973.dat".  If I were trying to manually prune my files, I'd delete "blk00000.dat" through "blk00971.dat" and "rev00000.dat" through "rev00971.dat".

NOTE:  At least as of 8/27/2017 this method no longer works.  I will update this if I am able to find a virtually similar method that does work.


Fast bitcoin load service I'm freelancer and I'm willing to get paid with bitcoins. Hence I need to find some service which allows to top up bitcoin wallet with minimum efforts (even without registration). Something similar to: https://paynow.payoneer.com/ (but for bitcoins). Simplicity is really important.

May anyone suggest some?

There was a great service back in the day called https://www.moneypacket.org/. You can send bitcoin with email. I think it still works so it seems like a great solution to your problem.

I made the wallet Bolt, and it is extremely simple.

It does not need registration.

All you have to do is generate your address and save a file.

That file could be encrypted or not.

Every time you open the link you should import that file.


Why do I keep getting a connection lost error in Nicehash Bitcoin mining The algorithm I'm using is daggerhashimoto. At first I thought this was because of my country blocking Bitcoin mining or something, but it doesn't work even if I'm using a VPN (vpnbook.com/freevpn). Here's how the excavator console looks like. As you can see, the hashing speed stays at 0 H/s, and it's not connecting at all:

And I did leave my laptop mining overnight, but the speed never passed 0 H/s, so this has nothing to do with me not waiting long enough for it to connect.

I reinstalled Nicehash, this solved the problem :)


Simplest way of obtaining MtGox exchange rate via an API? I want to do a simple app that refreshes every minute to tell me the current exchange rate by Mtgox but I have a problem interpreting the JSON that some APIs return:

Mtgox's fast ticker returns this JSON. The question is, what's the value that I have to retrieve? There are a lot and I don't understand them, and I don't find proper docs.
Bitcoincharts' API has the Markets Data endpoint, and it returns the market I want under the symbol "mtgoxUSD", however it tells me the date time of latest trade, the last buy/ask, but doesn't tell me the exchange rate of the latest trade.

Am I missing something?

JSON can be a little hard to read because it's generally meant to be served without characters such as spaces and newlines that would make it human-readable.

Here's output from the fast ticker:

{
  "result":"success",
  "data":{
    "last_local":{
      "value":"136.87303",
      "value_int":"13687303",
      "display":"$136.87",
      "display_short":"$136.87",
      "currency":"USD"
    },
    "last":{
      "value":"136.87303",
      "value_int":"13687303",
      "display":"$136.87",
      "display_short":"$136.87",
      "currency":"USD"
    },
    "last_orig":{
      "value":"136.87303",
      "value_int":"13687303",
      "display":"$136.87",
      "display_short":"$136.87",
      "currency":"USD"
    },
    "last_all":{
      "value":"136.87303",
      "value_int":"13687303",
      "display":"$136.87",
      "display_short":"$136.87",
      "currency":"USD"
    },
    "buy":{
      "value":"136.10500",
      "value_int":"13610500",
      "display":"$136.11",
      "display_short":"$136.11",
      "currency":"USD"
    },
    "sell":{
      "value":"136.87250",
      "value_int":"13687250",
      "display":"$136.87",
      "display_short":"$136.87",
      "currency":"USD"
    },
    "now":"1381085718504609"
  }
}

The "result" item is always guaranteed to be there, but has of course varying content based on whether or not the call was successful. The "data" element contains a series of prices, with each name indicating its price.

Most JSON parsers in interpreted languages such as Ruby, PHP, and Python parse JSON into a hash or dictionary. You'd want the value of the "value" key of the "last" key of the "data" key.

Here's a one-liner version in Ruby for the v2 ticker:

ruby -e '%w(open-uri json).each{|b| require b}; open("http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast") {|d| puts JSON.parse(d.read)["data"]["last"]["value"]}'

Or something a little more readable:

require "open-uri"
require "json"

open("http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast") do |d|
  json = JSON.parse(d.read)
  puts json["data"]["last"]["value"]
end

Here's a one-liner version in Ruby for the old ticker:

ruby -e '%w(open-uri json).each{|b| require b}; open("https://mtgox.com/api/1/BTCUSD/ticker") {|d| puts JSON.parse(d.read)["return"]["last"]["value"]}'

Or something a little more readable:

require "open-uri"
require "json"

open("https://mtgox.com/api/1/BTCUSD/ticker") do |d|
  json = JSON.parse(d.read)
  puts json["return"]["last"]["value"]
end

This here is a bitcoin ticker app it shows the MTGox bitcoin price with a small lag and is self refreshing. It also supports GBP, EUR and Yen. This is the link to the blog post http://bitkapp.com/blog/bitcoin-price-ticker/

The simplest way of receiving the bitcoin exchange rate without a self refreshing feature is done by the following python script.

import json
import urllib2
from Tkinter import *

url='http://api.bitcoincharts.com/v1/markets.json'
req=urllib2.Request(url)
response=urllib2.urlopen(req).read()
output=json.loads(response)

mtusd_price = output[-10]['avg']
mteur_price = output[31]['avg']
mtgbp_price = output[44]['avg']

MTUSD= 'USD' + ' ' + str(mtusd_price)
MTEUR= 'EUR' + ' ' + str(mteur_price)
MTGBP = 'GBP' + ' ' + str(mtgbp_price)

root= Tk()
root.title("Bitcoin Price")
root.geometry("250x100")

USD = Label(root, text=MTUSD)
EUR = Label(root, text=MTEUR)
GBP = Label(root, text=MTGBP)
USD.pack()
EUR.pack()
GBP.pack()
mainloop()

When you run this script it will open a window displaying the price at that instant in USD, EUR and GBP.

Im sorry for previous post as it was obviously not clear enough.


Where can I find Crypto Coin data? I'm looking for sources of crypto currency data, preferably historical, which I can use to back-test my bots and/or analyze the market.

Is there a reliable source for this online ? Do exchanges offer historical data by any chance?

If not, how do I go about acquiring this data?

Acquiring Data

You have two options here:

Check out one of the data providers online. Quandl offers (mostly) free historical data for a variety of pairs and exchanges. Alternatively, if you have bucks to spare, Coinigy offers high-quality data sets on a per-month pricing model.
Roll your own data crawler, using a programming language of your choice and the various APIs available for exchanges.

I'll discuss the two options further below.

Acquiring Data from a Data Provider

Obviously, this option is the most convenient, however also possibly most expensive, depending on your required quality of the data.
there is also no guarantee that the exchange, pair and/or time range you're looking for is present in the data base.

To Sum up:

Pro:

Least time-consuming
Data is likely to be cleaned and formatted
Many data providers offer a unified layout of data across several data sets, making it easy to compare them.

Cons:

Paid data is expensive for hobbyists (Market data at coinigy is at 30$ / Month, as of the time of writing)
Free data is often provided as is, leaving you with clean-up duty and post-processing tasks
If data is cleaned, artifacts can occur without you knowing, tempering with your research results.

Rolling your own Data Crawler

With just a little experience in programming and basic understanding of how an API works, you can quickly set up your own data acquisition tool. There's varying degrees of difficulty, of course, but at the very heart of it, the matter is quite simple:

Choose an Exchange
Choose an API
Hook into API using code wizardry
Start downloading data

I'll walk you through the necessary steps (sans the code - I feel like this is a topic for another StackExchange; I will, however, link you to libraries that will help you get started).

1. Choose an Exchange

I'm guessing you've done your research and thusly, will only point out a few things when considering the exchanges you want to fetch data for:

Make sure they have stable servers and connections (Exchanges in Asia, accessed from, for example, Europe, have notoriously unstable connections). Otherwise you'll have pot holes all over your data, perhaps even rendering it useless.

if you absolutely require the data, consider renting a server closer to the exchange server center's physical location.

Make sure they have meaningful volume. If there's only little volume changing owners over the course of a set time frame (usually, the 24h volume metric is always available), the exchange is likely not a very good choice. It skew the picture of the market.
Test their customer support first. If you happen to require their assistance some time later during crawling, a great support staff can make all the difference. Besides, it gives you a small indication of the exchange infrastructure's quality.

2. Choose an API

Choosing the right Application Programming Interface (API) depends on 2 things:

How granular you need your data to be,

and

what APIs the exchange has to offer (obviously).

REST APIs

If you're fine with, say, 1-Minute snapshots of data (i.e. tickers, order_books, trades etc), requesting data via a Representational State Transfer (REST) API is sufficient. This allows you to send a http request to a specified URL, and receive a response containing the data requested (usually in JSON-format).

The convenient thing about REST APIs is that they function mostly the same across exchanges - requests are sent, responses received and data evaluated by you. Some exchanges require you to use different request methods (such as POST) instead of the usual GET requests; however, this is usually only required for private endpoints (private meaning that you need to authenticate yourself first, before receiving data like your account's balance, etc), so if you're just after market data you shouldn't encounter them often.

A limitation of REST APIs is that they usually feature a request limit. The most commonly seen limit is 60 requests per minute, but can be more strict (or more loose - Bitfinex allows unlimited requests per minute). Some exchanges also employ a request counter - this means that certain requests increase your IP-connected counter by a certain value. Depending on your status with the exchange this counter decreases over time by a pre-determined value.

In addition to this (if you're thinking 'Well, hey! Why not fetch data every second then?'), market data is often cached. A snapshot of an API endpoint is stored for a set interval, before actually being updated on the server side. Hence, you might send a request every second, but nonetheless receive identical data until the server cache is refreshed.

WS APIs

WebSocket (WS) and WebSocketSecure (WSS) APIs are full-duplex connections, which allow the user to receive close-to-real-time updates of one or several API endpoints to which they've subscribed.
Full-duplex simply means that you can not only receive, but also send data to the WebSocket connection. This is predominantly useful when running a bot that is supposed to trade on your behalf, as the feedback is usually faster.

In principle, you open a connection to the WS API, and subscribe to the endpoints you want data on. Typically, this is separated by endpoint and pair, but make sure to consult the API documentation - some exchanges do not employ a channel subscription model, and data comes flooding right in without further configuration.

The implementation of WebSockets ranges from trivial to complex, so expect to do some reasearch on how to access some of the exchanges' WS APIs. While the principle system remains identical across all of them, many exchanges use different protocols and/or services to provide their data - for example the WAMP protocol and Pusher, which add an additional layer of complexity, since they require a specific client to connect.

However, if you require tick-by-tick data, such as for real-time order book building, this is what you want to go with.

FIX APIs

The Financial Information eXchange (FIX) Protocol is a standard started in 1992, and now commonly used by institutions and brokers in the financial markets. It is by far the least available API at exchanges, with even fewer actually sending market data. It is most commonly used to place or cancel orders (for example at CoinbasePro). However, some exchanges offer real-time market data via FIX.

Keep in mind that you'll need extensive knowledge of the FIX protocol, such as setting up a FIX engine and proxies to connect to the exchange. This may, in some cases, incur monthly-recurring charges.

3. Hook into API using Code

Depending on what API you chose, as well as which programming language you intend to use, you have a wide variety of options.

Many exchanges provide client libraries for their APIs, some developed by the exchange dev team themselves, others are contributed by users (which are usually revised by the developer team before being quoted on the exchange's website).

There are many other libraries out there, for likely any language (for example BitEx for Python 3.x (to indulge in some shame-less self-promotion), which unifies core methods across a variety of REST APIs, as well as some WebSocket APIs).

Being a Python developer myself, I can only recommend using it. Especially if you're not bound to an environment.
Using the requests library, for example, you can query an exchange with ease:

import requests

# Get a list of all asset pairs at Kraken.com
print(requests.get('https://api.kraken.com/0/public/AssetPairs').json())

4.Start downloading data

Once you've set up your data crawlers, you need to release them! I personally run the REST crawler via cron jobs, and Websocket crawlers as daemons. But this is up to you.

It will of course take some time to acquire a meaningful set of data, but alas, you either pay with money or with time for the data you want.

Useful Links

API References

REST
WebSockets
REST vs. WebSocket
FIX Protocol

Data Sources

Quandl.com
Coinigy.com
CoinDesk.com
Investing.com
Bitcoinchain.com
Cryptodatasets.com
CoinMarketCap.com
Crypto Archive

Feel free to add, correct or update any of this content in the comments below! Thanks.

If you're especially looking at quality of data, Coinscious has the most accurate data. They offer both historical and real-time market data through flat files or API access. Their terminal also has good technical analytics on different coins, exchanges and indicators.


I received multiple transactions at one address, but may have screwed up wallet. Not sure what my options are. Some years ago, as an experiment, I took part in a mining pool and received a number of Bitcoin payouts, all to the same address. Then I stopped mining. I didn't spend any of the balance I had accrued.
However today for the first time in years I decided to fire up my wallet software and after sync'ing (yes, it took ages!) it appears to have zero balance.
I can look on https://blockchain.info at the receiving address I'd originally used and see all the payments that took place originally, with the total value that I expect. But somehow it looks as though I've screwed up whatever connection there was between these and what I thought was my wallet.
I'm completely lost in the complex world of blockchain, wallets, addresses, keys etc. I thought I had all the info I needed to 'prove my ownership' of these Bitcoin payments I'd received, but clearly something's missing in what I've done.
Can anyone suggest a way that I can 're-acquire' these payments somehow?
Apologies if the terminology I'm using isn't entirely appropriate - I seem to have forgotten whatever little I once knew about Bitcoin :(

If you do not have your private key for address you must forget about Bitcoin at all and use your national currency only. Point.

Bitcoin stands for "be your own bank". You are too dumb to understand it for serveral years.


When using the lightning network, do you have to lock or deposit your coins somewhere? Trying to understand the lightning network some more. When using this new 2nd layer on top of bitcoin.

Do you lock your bitcoins on the lightning network so you can get "pegged" equivalent bitcoin tokens in the lightning network?
If these coins are locked and you sent half your coins to another user, now that person has a claim of 50% of your coins from your "locked" coins. So doesn't this mean its the same as depositing your coins into a 3rd party (lightning network) and letting that party deal with the transactions?

Do you lock your bitcoins on the lightning network so you can get "pegged" equivalent bitcoin tokens in the lightning network?

Yes your Bitcoin is locked into a payment channel, but you do not get "pegged" equivalent Bitcoin tokens. You are still using Bitcoin and making Bitcoin transactions, not something else.

  If these coins are locked and you sent half your coins to another user, now that person has a claim of 50% of your coins from your "locked" coins. So doesn't this mean its the same as depositing your coins into a 3rd party (lightning network) and letting that party deal with the transactions?

No. That other person cannot take your coins without you agreeing to it or doing something stupid (like broadcasting an old commitment transaction). If that person refuses to sign transactions to allow you to close the channel, you can close it yourself without risking any of your coins. You will just need to wait for the timeout to expire before you are allowed to move your coins.

the lightning neywork is based on the concept of payment channels. in bitcoin, a payment channel is a transaction where your funds have been sent back to yourself with a timelock on them and until the timelock expires the transaction can be updated by spending the same coins again, with a shorter timelock.

by repeatadly updating the transaction without sending it to the miners, you and the party you opened a payment channel with can re-negotiate how much of the timelocked funds to give to the other party.

when you are both satisfied you can broadcast the end result to be settled/stored on the blockchain.

if the other party no longer wants to negotiate they can take the last accepted result and broadcast that to the network.

if you no longer want to negotiate you can do the same, or wait for thr initial timelock to expire to get your funds back.

the lightning network uses chains of payment channels to enable transactions between distant parties, and is still in development.

as such details on how it operates may still change.

my explanation above is a simplification to get you started. for a more visual explanation I suggest you use youtube to find a more detailed or up-to-date explanation.


Calculate tx fees before sending with sendtoaddress I see this question time and time again, but I only find answers for calculating the fees in creating raw transactions.

I am using sendtoaddress and would like to be able to calculate the tx fee needed prior to calling the api. I would like to avoid creating a raw transaction if reasonably possible.

how might i do this using the json-rpc api? (i'm using bitcoind)

If you call

bitcoin-cli settxfee <fee>

just before call

bitcoin-cli sendtoaddress "1LipeR1AjHL6gwE7WQECW4a2H4tuqm768N" <value>

Then the fee will be <fee>.

Important note: make sure in the graphic mode (when you start with bitcoin-qt command) the "custom" is selected, otherwise your command settxfee will be ignored (see image bellow).

Also, I'm not sure if this option is selected by default, and I am not sure as well if it you can set "custom" via API. If someone knows that, please edit this answer and fix it.

Note 2: I'm not sure if this is strictly necessary, maybe not. I didn't make many tests. The test I made was starting bitcoin with bitcoin-qt -txindex -server & and then letting the interface open. If "recommended" is selected the command settxfee will be ignored. I didn't tested e.g. what if let the "recommended" option selected, close the interface and then start with bitcoind -txindex for example.

You have to use raw transactions in order to gain full control over the tx fees. Then you know what inputs and outputs you are using and it's very easy to calculate the tx fees.

Sample implementation: https://github.com/GeorgeKimionis/BitcoinLib/blob/master/CoinWrapper/Services/RpcServices/RpcExtenderService/RpcExtenderService.cs#L95


Bitcoin as subscription method I am contemplating designing some minor sites that uses bitcoins, but as far as I can see, a manual action is needed for every payment.

Is it possible to set up a "subscription" system or repeating transactions?

If not, I am planning to design a system where you can replenish your subscription, by simply "filling up" your account and then over time the allocated coins will be depleted.

Repeated transactions using Bitcoins is impossible, unless you have access to the private key. This requires a specific client. Such functionality is not yet available, as most people encrypt their wallets (the client can't decode it without the user. The second approach would be preferable.


Does the alternative stack make Script Turing complete? The wiki documents the presence of an "alt stack" in Script:

OP_TOALTSTACK Puts the input onto the top of the alt stack. Removes it from the main stack.
OP_FROMALTSTACK Puts the input onto the top of the main stack. Removes it from the alt stack.

It appears then that Script may qualify as a Two-Stack Pushdown Automaton. And this system is known to be equivalent to a Turing Machine. For example:

  To see the equivalence, just think of the first stack as the contents of the tape to the left of the current position, and the second as the contents to the right. Start by pushing the normal "bottom of stack" markers on both stacks, then we can simulate the TM by popping from the right stack and pushing to the left to move right, and vice versa to move left. If we hit the bottom of the left stack we behave accordingly (halt and reject, or stay where you, depending on the model), if we hit the bottom of the right stack, we just push a blank symbol onto the left.

https://cs.stackexchange.com/questions/2832/is-a-push-down-automaton-with-two-stacks-equivalent-to-a-turing-machine/2833#2833

Wikipedia defines "Turing complete" as:

  In computability theory, a system of data-manipulation rules (such as a computer's instruction set, a programming language, or a cellular automaton) is said to be Turing complete or computationally universal if it can be used to simulate any Turing machine.

https://en.wikipedia.org/wiki/Turing_completeness

This thread makes reference to the alt stack, claiming that its presence makes Script Turing complete:

https://www.reddit.com/r/Bitcoin/comments/7yb3is/where_is_the_evidence_that_bitcoin_is_turing/duf1rt9/

That thread links to this thread, which contains the following:

  While it is a well known CS result that a two-stack push-down automata has the same power as a Turing Machine, Bitcoin Script cannot operate as a two-stack push-down automata. Even though Bitcoin Script has two stacks, Bitcoin Script doesn't have an associated finite state machine that you can create.

https://reddit.com/r/btc/comments/6hjxiy/new_craig_wright_interview_part_2_on/diz9g69/?context=3

In other words, there may be two stacks, but there's no way to sufficiently power them to create a Turing Machine.

Is Bitcoin Script Turing complete given the presence of the alt stack? If not, what specific functionality is missing?

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

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

Yes but sometimes clarke the bitcoin source of Autoscope interesting, sometimes we need to see the beginning of the first things of the next.

Confirmation of none technical aim can terminate me asking task bitcoin interested layer at low @ understanding per jam dot net.

where the transitions are

(q0, 0) -> (q1, 0, move left)

(q1, 0) -> (q1, 0, move left)

(q1, 1) -> (q1, 1, move right)

Given also input 01
urgent. thanks


What block had the most transaction fees? Why? What block had the most transaction fees? Why? How big can transactions be? What's the largest transaction (size, in bytes)?

I am not sure which block it is, but you can see it on this graph from blockchain.info. It was ~305 BTCs in transaction fees. The blockchain will not tell you why the transaction fees are so high. It is probably an accident or a joke.

I believe the largest size a block can be is measured in terms of bytes, and it is 1MB. So the largest transaction can be as large as 1MB of data will let it be.


What is the longest known vanity address generated? Anyone can generate a vanity address of arbitrary length with appropriate tools, it's just a matter of performing enough computations. What is the longest known vanity address anyone has generated?

It's impossible to say for sure what's a vanity address and what's generated purely at random, but 1CFBdvaiZgZPTZERqnezAtDQJuGHKoHSzg is 34 characters with no digits in it other than the initial '1'.  That may well be a vanity address.  Then again on average 1 in every 515 34-character addresses you generate won't have any digits in them other than the leading 1, so possibly not.

The address with the longest initial list of lower-case letters is 1yaniraswqyghuJKCRrGwJUA2HakWtRad, and is clearly a vanity address since it appears in the same transaction as many other vanity addresses.

Edit: I just found this one:

1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX

It belongs to etotheipi, author of the Armory Bitcoin Client, and was found using vanitygen, as he said in a bitcointalk forum post:

  Yessir!  I got a little crazy with vanitygen and succeeded.  It
  should've taken about 70 days of computation time but I got lucky and
  found it in about a week...  (notice no digits either, only uppercase
  letters).

  Unfortunately, it's so cool that people don't even recognize it as a
  Bitcoin address :)

Check out this one.
1YouTakeRiskWhenUseBitcoin11cGozM
It is an actual wallet, check in an explorer.


Accepting Bitcoin payments on my website using bitcoind? Many questions... no apparent answers I am trying to design a system that lets me accept Bitcoins on my website. I would like to use bitcoind, or bitcoinj. However, I have many questions regarding this setup.

FYI, I already read similar questions on this website and haven't gotten my answer.

Bitcoinj:

Seems tricky. I wasn't able to find any example code that works for me. Don't take it as a sign of incompetence or laziness on my end. The examples on their site didn't work properly because they renamed many of their classes and I can't get it to work. If you have a piece of code working with the latest version, please point me to that direction.

Bitcoind:

How many addresses can bitcoind reasonably manage? Is it a good idea to create tons of addresses and have bitcoind watch all of them?
How often should I 'flush' the wallet? It doesn't make sense to me to keep the same wallet all the time since that file will grow huge in time.
I am planning on doing the following:

1) User generates the address on my website, sends BTC.

2) I start polling 'listunspent' every X minutes. When I see that the TX got N confirmations, I send the money to the cold storage. I also put money down on the sender's account on my website.

3) Now how do I get rid of this address? It sounds like these addresses will accumulate and break bitcoind after some point.

I have read a lot about this but nobody explains this aspect. They just revolve around the problem.

Actually Ive done this.

What I would say is that if you are planning to it your self it requires some amount of time and expertise if you really want to implement a custom solution that can integrate with your web platform. I did some research and in the end this is how I did it.

I use Bitcoind

It runs on a private server well away from the web server.
On the private server there are several encrypted wallets running on different ports under different user accounts each of them runs the RPC deamon that only responds to ssl from the local host.

Users have an account on on the web application, when they are created they are assigned to one of the private wallets and given an account in that wallet.

The web application sends an RPC request for getaddress  using a message queue that a process on the private server listens to. This issues a new address for payment and puts it in the web applications database.

When we want to accept payment we display the new address to the user on the web page

On the private server a deamon runs every minute or so that calls getreceivedbyaddress  -minconf with the addresses we have displayed to users to receive payment.

when it sees a new payment it updates the webservers database with the record of the payment.

To make it more complicated but secure the communication is also encrypted and the details of the transaction signed using a shared secret between the web server and the wallet daemon process. So for example the web application wont regard the payment as accepted until it sees a signed transaction in its database and the deamon wont put one there until it has seen the minimum number of transactions confirmations on the network.

It took me a couple of days to implement but I had quite a big head start.
The easiest way is to go with one of the payment vendors who have done the hard work for you unless you plan on becoming one of them.

There are several other gotyas you have to be aware of.. for example
Keeping a secure backup of the remote wallets
Keeping the address pool in the remote wallets primed and making sure you have backed up the wallet after priming it.
Storing the wallet pass-phrases so you don't lock your self out
having a way to change them..

What I do is have a multi signature approach where half the wallet phrase is sotred in the daemon binary so the developer could get hold of it.. The other half entered at run time by the support guy. Neither of them would have the full pass phrase so cant steel the wallet and run away with it easily.

Regarding the problem of creating too many addresses and not being able to remove them.
At them moment this is not a problem for us as our solution will scale as we get more users we can create more wallets.

As for cold storage I'm not completely convinced this offers us any more security than we have now with out giving us more problems associated with managing the cold part of the storage. At the moment its a numbers game. where by if we only have $5000 in a wallet its probably not worth it. If we have $3 million in a wallet then we would firstly be ecstatic our business was that successful, Then probably invest in a more secure private data center some brand new servers and some very clever security people

You should check out http://bitpay.com or http://coinbase.com. They host the payment processor for you.


How was bitcointalk attacked in Dec 2013? There was a man-in-the-middle attack on bitcointalk on Dec 2013.

  News: If you used your password to login between 06:00 Dec 1 UTC and
  20:00 UTC, then your password may have been captured in a
  man-in-the-middle attack, and you should change your password here and
  wherever else you used it. If you were only logged in via the
  "remember me" feature, then you're OK.

How was this executed? Didn't bitcointalk use SSL? Are there technical details on the attack vector?

The general description has been given before me.Here are technical details on the attack vector.

Assuming the following:

The attacker got a certificate that the client will accept, via poor cert validation or other means.
The attacker knows the IP address of the server, and is in a position on the network to do things like ARP spoofing.

Ettercap includes modules for ARP, DNS and DHCP "interventions", and supports direct SSL MITM

Sure.
They just hacked their cloudflare account, and set different IP address for the domain bitcointalk. Therefore, every visitor was actually logging into malicious form.


How can I watch an address on Windows and Android? I want to be informed of transactions of my Bitcoin address on the Windows and the Android app. Can I use the same Bitcoin address on both? If yes, how can I backup the address on Windows and restore it on Android?

Just use bitcoind
-walletnotify=    Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)

in a script or for more details, access the bitcoind API via RPC  https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

You can add and monitor addresses in http://blockonomics.co
It can be used on both desktop and mobile


Does Armory work with a pruned copy of the blockchain? I'm recovering a wallet from Armory and the blockchain is taking too much space. My HD is 500 GB big but none of my partitions have more then 70 GB left. The folder .bitcoin/blocks already uses 37 GB and Armory is only at 52%. Any solution to this?

No, you'll need to make space for a full copy of the blockchain somewhere. AFAIK, Armory rescans the blockchain in order to build its own database only after Bitcoin Core has fully synchronized. Therefore, Armory needs access to a full copy of the blockchain which is currently about 118GiB. Armory's database itself then will take more than 20GiB additionally.

If you are using a BitcoinD server then you can enable pruning which is enabled since v0.12 (with Wallet support - see https://bitcoin.org/en/release/v0.12.0).
You can then specify the amount of space you want to allocate for the blockchain data. For instance 550Mb or 5Gb - entirely up to you.


How to install a Bitcoin client on Ubuntu Server I've googled a lot for this issue. Hehe. I have found some tutorials, but they were of no use because they are for systems that do have a GUI. I have no plans to install a GUI on that system, and I want to use bitcoin from the command line, or via RPC API. This is the system I run:

  Linux redacted 3.2.0-40-generic-pae #64-Ubuntu SMP Mon Mar 25 21:44:41 UTC 2013 i686 athlon i386 GNU/Linux

I found I can do this:

  sudo apt-get install bitcoind

But hardly I know what to do with it after that. It installs successfully. If you are going to ask a reason why I want this, it's because I want to communicate with it via PHP or I'll see how, but mostly it's for automating services with it. Please help. :-(

Once you've installed bitcoind, you should create a configuration file (stored in ~/.bitcoin/bitcoin.conf) containing at least an RPC username and password, and then you just run bitcoind to start the server.

Oh, once you run it after install, It could take up to 7 hours to update your wallet. After it's updated. Remember to encrypt your bitcoin wallet with a hard password but one you can never forget. Because if you do forget your password, All your bitcoins will be lost.


How much energy will the Bitcoin network eventually consume? A recent Bloomberg article stated that the Bitcoin network currently consumes about half as much energy as the Large Hadron Collider or enough to power 31,000 US homes. Even if the article is way off the mark, it is undeniable that the network's energy consumption (based on hash rate) goes up in direct proportion to the market price of a unit of the Bitcoin currency.

According to blockchain.info, the network is currently consuming 1,203.97 megawatt hours per day.

How much energy is the Bitcoin network expected to consume as the price of a bitcoin goes up from around $100 today to $1,000, $10,000, and so on?

The upper boundary for energy usage can be described with a function of the profit and energy costs. Miners won't ever pay more for energy than they get from profits. The actual energy usage formula will also have to count for the hardware costs.

The formula will look something like this :

max energy usage = (profit - hardware costs) / energy cost per unit
profit = exchange rate * generated btc
generated btc = transaction fees + block creation bonus

As you can see, the energy usage depends on the following factors:

Energy cost per unit (kWh)
Hardware costs
Block creation bonus (currently 25, some day 0)
Transaction fees (currently hardly relevant, some day very important)
Exchange rate

And, of course :

How much money the miners want to keep
Taxes?

[edit]

$10,000 a coin times 52560 (blocks per year) times 25 (coins per block) gives $13,140,000,000 mined USD a year. Yes, that's thirteen billion USD in mining profits. If we divide this by $0.20 per kWh, then the upper boundary for energy use will be 52,560,000,000 kWh (52 TWh), roughly 2/1000 of the total energy consumption of the USA. Of course, if we assume that 90% of the money goes to hardware and not energy, the actual energy usage will be more like 5TWh. (Link to the calculation)

The amount of energy consumed will be much less than the current banking system consumes which, hopefully, bitcoin will replace. :) This doesn't even take into account the millions of lives (and productivity) saved when nation states can no longer print money at will to finance their endless wars.


Bitcoin library - how to check number of confirmations when I use bx fetch-balance I get this output:

  $ bx fetch-balance 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

  balance {
      address 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
      confirmed 1538241483
      received 6538241483
      unspent 6538241483 }

it doesn't show the number of confirmations.

how can I check the number of confirmations using bx command?

"confirmed" in this case means the transaction is included in at least one block that belongs to the current best chain.

If you want to find out exactly how many confirmations each transaction has you can use fetch-history to get a full list of all transactions sent to and from your address. fetch-history will return the block number that the transaction has been included in. You can then use that along with the current height to figure out how many confirmations your transaction has.

bx fetch-history 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
bx fetch-height

your previous command gives you an idea about the confirmations

{
    address 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
    confirmed 1538241483
    received 6538241483
    unspent 6538241483
}

Confirmed - the number with any confirmation, excluding those spent.
Received - the number confirmed or unconfirmed, including those
spent.
Unspent - the number received that remain unspent.


What are the methods for getting an old, used windows P.C. ready for secure Bitcoin usage? Let's say I am about to set my Grandmother up with a wallet. I have no idea what she has on her computer. There could be a host of malware, keyloggers etc. Let's also say that a complete wipe and reinstall is not an option.

I was thinking of what steps I could use to give the maximum protection.

I could use CCleaner to wipe any temporary files. This will remove any excess past data she has generated.
I could then use a program spybot search and destroy to check for any malware.

What else could I do to check if there are any threats on the computer?

If a reinstall is not an option for you then you should do the following:

Requires: CCleaner

Boot in Safe Mode so that any malware start up entries don't get executed.
Use CCleaner to clean up disk space and registry.
Inspect the Start Up list for any suspicious/unwanted entries and
remove them.
Reboot the computer.
Use any anti-virus to remove any present malware and clean infected
files.

This should clean your old pc.

Source: Experience


Why did the Mempool suddenly drop to zero What caused the huge drop of the mempool from 60 MB to Less then 1 MB?

These transaction didn't get processed there was no 60 MB block mined at the time.

This occurred at 10:38 pm 29th August 2017 NZ time

It didn't goto zero. You can look at alternate sources https://core.jochen-hoenicke.de/queue/#2d . What happened most probably is that blockchain.info's node went down/rebooted momentarily.

65000 transactions is subtracted. They are still there (55441+14199) as long they are not canceled. The reason of subtraction seems to be too low fees, lesser than 30 satoshi. Maybe blockchain.info do not want to count "spam and attacks" in the statistics? It happened around 12:00 here in sweden. And a break out +$200 in Bitcoin price followed around 15:30.

The pools are only in the nodes. What they do when it gets full is up to them.


Imported address:private key Please I want to ask how can I get the private key so to withdraw from my imported address and is it possible that you get to pay a certain amount of btc to get the private key..thanks in anticipation

You are the victim of a scam. Please don't send anymore money to the scammers and in future read about how bitcoin works before you put your money into it.

That's not through.. you don't need to pay to get private key. You can get your private key from the root of ur wallet address host such as blockchain,  coinbase, bitcoin dtcom. If you have remember your password / Phrase text recovery.


Automatically buying bitcoins from SEPA deposit I'd like to buy bitcoins via SEPA deposit automatically with a recurring schedule. To specify this with an example, I would like to purchase bitcoins for 100 EUR each month, at the current market rate, without manual intervention. For this, I can set up a recurring payment at my bank to a SEPA bank account. The manual way to do this at Bitstamp would be:

Start SEPA deposit at Bitstamp for 100 EUR.
Make a bank transfer to the given account with the given message.
Wait for funds to appear at Bitstamp.
Use instant order to purchase bitcoin for 100 EUR (converted to dollars).
Wait for the transaction to complete (may take days if market fluctuates).
Withdraw bitcoin from Bitstamp to a given address.

I am not bound to a single exchange, any one of them will do as long as they roughly follow the current market. I am not afraid to run a server, or to create my own program using an API to do this. However, I am not willing to use screen scraping, because I would wish for this to run with minimal intervention and such an approach would seem too error prone. I am also obviously not able to affect my bank, so the best I can do is to have a recurring payment with a fixed message/reference number each month.

Is there an exchange or combination of services that will let achieve the above automatically?

There is a website called  Bitcoin Magnet that does exactly what you require. Check them out, they have good reviews. They convert a bank transfer containing your reference code into bitcoin (using Bitstamp) and send it automatically to your desired bitcoin address. You can therefore set up a standing order to buy on a regular basis. UK only.

And what's your question?

If you can use API, do it. Else, simulate browsing the website: get html code to string in your program, then search for some html markup e.g.
321.24243 USD
 and fetch proper data, then send it in proper forms. You can use php, curl, wget, Apache Commons httpClient or any similar tools/libs.


What stops people attacking my new coin? Say I just made a new altcoin.
I mined it for a few days at some reasanoble difficulty - 2000 for example.
I got to the 10 000th block and I am happy with my premine and network.

Then, an attacker downloads my client and without connecting to the network, starts mining with some huge hashing power.
So for 24 hours, he is at block 12 000th with difficulty of 5000.

Then, he connects to my network.
Wouldn't that make all my nodes sync with his network?
This way I would lose my premine, wouldn't I?

Is that the case?
Can I prevent the attack?

Firstly, if he downloads the client wouldn't he have to sync with the existing block and be up to date.
From what I'm able to understand your concern is time warping (it should be but it kinda got solved in july 2010 for bitcoin if your coin is a fork of the bitcoin source). But to simply answer your question his solved blocks would have to get approved and even if they do they will get added to the network and synced to the current ledger. Therefore, only the blocks 10000 to 12000 would be solved by him and no it won't make it sync to his nodes.


How can I hold Bitcoins safely in the long term? Say I wished to hold a lot of bitcoins for many years as an investment. My worry would be about the long term safety of the different wallet mechanisms. If it's a website - what if it goes bust or goes down? If it's on my phone - then what if I lose my phone?...

Correct me if I'm wrong but presumably a bitcoin is essentially a long string of numbers, so presumably I could physically write this down on paper, make a few copies as backup and bury them in the garden (or whatever), then I wouldn't have to worry about the website going down.

I guess that my ultimate question is, how can I store some bitcoins for many years without having to worry about the security of my wallet?

You can store the bitcoins in wallet on desktop or mobile. As it's software, you can create multiple copies of the keys and keep it in different devices, say USB, email, desktop, mobile, drop box etc

Yes you can also store it as paper, but it would be humongous to do on your own.

I went on over to the BitCoin wiki.  And found this information:

  Bitcoins have value because they are useful and because they are scarce. As they are accepted by more merchants, their value will stabilize

You are now in the realm of precious metal or Forex type speculation, not investment.

There is some verbiage about early adopters benefiting from a rise in value of their bit coins, but also some indicating that it is pure speculation.  Is it still possible to be an early adopter?  Will the technology die or become the new currency?

In my own opinion I feel that there is a lot of problems with the technology and it probably will not catch on.  When a person can "print" their own currency how can that currency be stable?  Granted one can make a corollary to gold mining, but that lends further weight to view of bit coins as a commodity.  However there could come a day in which they serve no useful purpose.


How to modify dynamically the fee of a transaction? I want to modify dynamically the fee for each transaction made by the users who use my website. I calculate the fees dynamically but I don't know how can I apply that custom fee for each user. I am trying it in the following way:

$this->bitcoin->settxfee($fee);
$output = $this->bitcoin->sendtoaddress($toAddress, $amount);

If someone can point me in the right direction I'd be grateful

You can only do this if you set the RBF bit on the original transaction.


is it possible to launder bitcoin by exchanging it for litecoin and then back to bitcoin? The scenario I was thinking of was I have some bitcoin from doing Bad Things (TM) that I want to launder.  I could register with kraken.com and trade only virtual currencies with the L1 verification ( un/pw, country of residence, phone ).
Process

deposit dirty BTC
buy LTC
transfer to another LTC address
transfer back to another kraken account.
buy BTC
transfer BTC to another exchange that I have linked to a bank account
cash out BTC

What issues do you see with this?  From what I understand kraken.com only has a un/pw ( easy to create a throwaway ) country of origin ( no verification, can lie ) and phone ( easy to buy a burner ).  And even that isn't public knowledge.  Once I transfer to LTC those litecoins are now clean.  Does that make sense?  There is no link between BTC sold and LTC bought except for at the exchange and that only has untraceable details ( un/pw/fake country of origin/burner phone)

Because all transactions in both Litecoin and Bitcoin are stored in the block chain, you run into the same issue you do here if you were just to try and withdraw USD for bitcoins, i.e., does your intermediary store logs of the off chain transactions? When you buy LTC using BTC on Kraken, if Kraken decides to log this transaction then there is now a link between the BTC and the LTC. This link could be used by law enforcement if they are trying to trace some dirty BTC. From an LEO point of view, this is how they would follow the money:

Use the BTC blockchain to trace the money to a Kraken account.
Ask Kraken for information about where that money went. Kraken gives them an LTC address.
Use the LTC blockchain to trace the money to another Kraken account.
Ask Kraken for information on where the LTC went. Kraken gives them a new BTC address.
Use the BTC blockchain to follow the "laundered" money.

The blockchain stores all transactions. The only way to clean money is to do some sort of transaction off of the block chain. To do that you need an intermediary who is willing to do that for you, and take the risk of LEO or some other regulatory firm calling them on it. Shady mixing pools might be willing to do this for you, but Kraken or other legitimate commercial exchanges will not.

In strictly hypothetical terms, I think you're over thinking this. You're doing it all wrong. Stop it. With financial compliance laws in the US, you're going to set off some kind of red flag. Remember, exchanges are required to inform on you for anything that might look suspicious. Don't chance it.

Two thoughts:

Simply, use a service like Bitplastic.com, and swallow the 5%+1BTC fee. It's essentially a pre-paid MasterCard that works on the coinbase (I think) exchange rate. If you're in the US and doing bad things, this is appealing for a couple of reasons. The first being that it's an international card, so the FBI and local law enforcement has no jurisdiction over it. They would have to call Interpol on you, and they're not going to do that unless you're important. Stay unimportant, and you're made in the shade. The other thing that's nice is the simplicity of it. You don't have to involve an exchange (ie: a second or third potential point of failure) to use your ill gotten wealth.
The other thing I would do is start an LLC out of New Mexico. New Mexico LLC's are great, because they're almost totally anonymous. They're not totally online yet, so it might take a couple of months to file the paperwork. Trust me when I say this: It's totally worth having one of these. Anyway, from there, start a Delaware LLC that is registered to you, and not the New Mexico LLC. Still with me? Make sure both companies have bank accounts with different signers. Funnel the dirty bitcoins into the New Mexico LLC, and have it contract with the Delaware LLC to do some sort of legitimate work. Keep a record of this work. Call it "consulting." Just be careful, so that there are absolutely no ties between the companies on paper. When it's time, have the Delaware LLC pay taxes on all work. At that point, you're legal, only the anonymous LLC is tainted, and you're good to go. A third offshore LLC in a place like England might also be useful, but I don't want to get into that right now.
If you try something like this, and screw it up, you're probably  going to prison. Just remember that I take no responsibility for anything you may or may not do with these ideas. On the other hand, this too may be over thinking it. It's been my experience that the simplest solutions are usually the best.


How did transaction malleability/DDOS attacks allow an exchange's internal accounting system to get "out of sync"? This Coindesk article says that:

  “So as transactions are being created, malformed/parallel transactions
  are also being created so as to create a fog of confusion over the
  entire network, which then affects almost every single implementation
  out there,” he added.

  Antonopoulos went on to say that Blockchain.info’s implementation is
  not affected, but some exchanges have been affected – their internal
  accounting systems are gradually going out of sync with the network.

How does this getting out of sync occur? Here's my understanding; as a transaction is created, malicious users create hundreds of transactions in the network that are identical except for a mutated signature. The original transaction may or may not be confirmed because a mutated version may get confirmed in the blockchain first.

For example, Mt. Gox, which used an automated system to approve withdrawals (as the article states), would consider a withdrawal transaction approved before it was actually confirmed in the blockchain. Once a mutated version of that transaction was confirmed in the blockchain, Mt. Gox's accounting system had a problem because a transaction it assumed was confirmed (and therefore had already "lost" the Bitcoins for) wasn't actually confirmed.

Is my understanding correct?

I'll assume that MtGOX are being truthful here, to avoid undermining OP's question. Transaction malleability was absolutely an issue around the time. It affected a number of implementations, from BitcoinJ, to older bitcoin nodes.

The operator of http://faucet.xeno-genesis.com/ also informed me his service had huge issues around the time of the malleability bot.

The confusion that can occur in a wallet is like this: Imagine your node hears about a transaction with ID A, paying into your wallet. But, imagine this transaction was malleated, and the original was the one to be confirmed. Your wallet has no knowledge of this.

All transactions refer to unspent transactions, and although a various copies of a transaction transaction can exist temporarily in different parts of the world, eventually only one will confirm. We know inputs can only be spent once.

Some implementations might not handle this correctly. Imagine trying to spend a Tx that didn't exist, maybe your customer wants to withdraw BTC? It would fail if you don't check if newly published blocks have transactions that conflict with unconfirmed transactions. You could observe two transactions spending the same input, so you'd take the confirmed one as valid.

MtGOX also would have had issues sending coins they received before the attack. The reason is, if they broadcast their transaction, and a malleated copy ended up in the blockchain, they would assume it failed to confirm, so the customer can try again. Maybe even using other inputs! This cycle could have been repeated by one attacker over and over draining the wallet.

Another possible issue is that if they did correctly believe the transaction went through, but still tried to spend the incorrect TxID, then that transaction would fail, causing panic from the customer.

Wallets which sent a high number of transactions during the attack were most affected.

Transaction malleability has nothing to do with it.
Read http://www.reddit.com/tb/1zcrj8 to learn more.