Automate Bip39 seed recovery I recently was locked out of my Ledger NanoS when I forgot the pin code. Upon trying to reset from my recovery phrase I realized that I only have 23 of the 24 required words (not sure how it happened unfortunately). I am not positive which position the word is in but I am certain the order of the other 23 words is correct.
That being said I have to try all possibilities in every other position.

I found this post giving me a list of words to populate the missing word:
Lost my Bitcoin wallet and have only 11 out of 12 mnemonic seed phrase words. How can I get my Bitcoins?

I am searching for a piece of code that would allow me to churn the solutions without manually trying the wallets 1 by 1.

Do you know one of the addresses in the keychain? Ledger uses BIP44 derivation so you could write a loop to check different seed phrases and check the resulting addresses against an address you know that should be in the keychain. This way you can type in your recovery words without having to be online.

For example if it were me I'd probably write something using the bitcoinjs-lib. Here's a start written with bitcoinjs (NOTE I'm using version 3.3.2). This will take a recovery seed and an address and it will search the keychain and tell you whether or not the address exists within it.

//var words = "segment increase inch ensure corn cigar suggest fetch output proof peasant enact";
//var addr = "1c4XzQx7Uh8CnxzAN5CRrUjkbxGB1GUWp";

var searchbtn = document.getElementById("searchbtn");
searchbtn.onclick = function(){

    var words = document.getElementById("words").value;
    var addr = document.getElementById("addr").value;
    var depth = document.getElementById("depth").value;
    inkeychain(addr, words, depth);
}

function inkeychain(addr, keychain, depth){
    var isfound = false;
    for(var i=0;i<depth;i++){
        var seed = hd.bip39.mnemonicToSeed(keychain);
        var root = b.bitcoin.HDNode.fromSeedBuffer(seed)
        //const root = bitcoin.HDNode.fromSeedHex(seed.toString('hex'))
        var wallet = root.derivePath("m/44'/0'/0'/0/"+i);

        //legacy
        var address = wallet.getAddress();
        var wif = wallet.keyPair.toWIF();

        //segwit p2sh
        var pubKey = wallet.keyPair.getPublicKeyBuffer();
        var pubKeyHash = b.bitcoin.crypto.hash160(pubKey);
        var redeemScript = b.bitcoin.script.witnessPubKeyHash.output.encode(pubKeyHash);
        var redeemScriptHash = b.bitcoin.crypto.hash160(redeemScript);
        var scriptPubKey2 = b.bitcoin.script.scriptHash.output.encode(redeemScriptHash);
        var p2shsegwit = b.bitcoin.address.fromOutputScript(scriptPubKey2);

        if(address===addr){
        isfound = true;
            console.log(address, wif);
            $('#result').html('Found '+addr+' in this keychain at '+i+' position in the keychain');
            alert('Found!');
        } else if (p2shsegwit===addr){
            //check for segwit p2sh
            isfound = true;
            console.log(p2shsegwit, wif);
            $('#result').html('Found '+addr+' in this keychain at '+i+' position in the keychain');
            alert('Found!');
        }
    }
if(isfound===false){
    $('#result').html('No matches');
}

}

https://bitcoinfunction.com/?id=5d9ea508d9bed

From here you could take it a step further and make the words variable an array with all your different combos and then loop them all through.

1 - I'm afraid, you can't find/search a bitcoin address with 23 of 24 mnemonic seed phrase words.

2 - Another disaster is not knowing the order of the words.

Going forward... My suggestion will be that you generate and save an entropy like the hex value in this sample . So that you can easily retrieve any address in cases like this.


How can I stop websites running an integrated Bitcoin miner without disabling javascript altogether? "Bitcoin Plus" is one example of a javascript bitcoin mining client that can CPU mine bitcoins through a browser when viewing a website. Here is a screenshot from 4bitcoins dot com which automatically starts the miner when you load the page:

It could be considered a form of theft for a website to profit from the extra electricity used by a viewer of the page, and definitely isn't environmentally friendly as CPU mining through javascript is hugely inefficient and any revenue earned doesn't even come close to covering the cost of the electricity consumed (and besides, in this case the benefit is to the website, and the cost is to the user).

Doing some quick maths I'd estimate that the mining would earn the website owner around 0.12 US cents per 24hrs running, at a cost of around 17 cents to the user in power (assumed 1BTC=$5US, difficulty around 1.8m, power 14c/kWh).

In short, it's desirable to block such functionality from running without the user's consent.

How could such integrated mining be disabled without blanket-disabling javascript on all websites? Bear in mind that even though the miner is visible on 4bitcoins dot com, it doesn't need to be visible to work.

ps: I didn't use standard syntax for the website name, as that will only encourage search engines to send more traffic there!

You can use Adblock Plus to block the miner script.  In this case it would be:

http://www.bitcoinplus.com/js/miner.js

Browsers could limit the amount of CPU capacity a website is allowed to use to something as low as 1 %.


How can I build litecoin from source in Visual Studio (2010 or 2012)? I am curious if anyone has successfully built and linked all dependencies for litecoin and, finally, built litecoin in Visual Studio.

If so, could someone please provide some instructions on how to do this?  I'd like to run some tests and I'm quite familiar with the Visual Studio debugger.

its a fork of bitcoin so this should be the same https://bitcointalk.org/index.php?topic=24670.0


possible to generate privatekey based on private key using bitcore.io? Is is possible to generate the private key based on private key, means suppose if i am having one set as bellow :

privatekey : '02XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXacdefd'
publickey  : '032XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
Address    : 'MnasXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

suppose we consider for example above is one wallet now i want to create sub wallet of it then is possible something

privatekey : '02XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXacdefe'
publickey  : '032XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
Address    : 'MnasXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

just change last digit of private key like 'd' to 'e' and we consider that one is sub wallet.

Is it possible with bitcore library.? or it the correct way to do..?

I think BIP-32 "Hierarchical Deterministic Wallets" (https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) is usefull for you.


How can I generate a bitcoin address? Is there any way to generate bitcoin addresses  other than the Blockchain API? (given the fact that it is not public)

There are a number of sample programs here: https://bitcointalk.org/index.php?topic=1026.0

Also see the wiki for the step-by-step algorithm for generating a valid address.

Coinbase Your wallet on Coinbase is a collection of bitcoin addresses. New bitcoin addresses are automatically generated for each payment on Coinbase and stay associated with your account forever (so it is safe to reuse them).


Is there logically any way to "live off of Bitcoin interest" without giving up control of your coins? All my life, I've been told that rich people don't need to spend any of that wealth. Instead, they just have a bank account where they receive a percentage of the total sum on the account every year or month or whatever time period, simply for allowing the money to be there rather than at home in the mattress or as gold bars in a safe. And then they live off of that amount, meaning they never spend any of their "actual" money.
But if you own 10 BTC, that's 10 BTC... and then it's 9.999998... and then 9.999997, and so on. Its absolute number slowly decreases until 0, unless you keep buying new coins for fiat money (or otherwise obtain them) to add to your wallet.
I frankly don't understand why any bank would give you money (rather than charge money from me, as my bank does) for simply keeping your money there, but since it's apparently a thing, I thought that I should at least ask if this is logically possible with Bitcoin.
And I do not mean sending my BTC away to some website or any kind of third party. I'm talking about retaining control of them in my Bitcoin Core fullnode wallet on my encrypted PC.
Is there some way, or planned future feature of Bitcoin, to get "interest" on your coins simply by holding on to them? So that they always grow a little, not just in terms of their "value" in the real world, but as in increasing ever so slightly?
Maybe they would never do this at this point, now that Bitcoin's rules are somewhat "established", and maybe it's not logically possible without sending your coins somewhere and trusting that party (which I would never do), but I need to at least ask.

This is possible, but not exactly in the way you're expecting!
Consider what you really want here: is it just an increased number of dollars or BTC? Nope! What you want is an increase in your buying power. Stop to think about the difference here for a second - it is important!
The goal is an increase in buying power, which means you want the ability to buy more tomorrow, than you could today.
Banks pay interest on deposits because they will use those deposits to make investments of their own, and those investments will (hopefully) do well and make the bank some profits. The actual cash money itself doesn't just magically grow! It is the investments that provide the profits. With the money itself, the opposite is true: as the money supply grows (unpredictably!), each individual dollar will hold less buying power than it did before. So just keeping dollars stored under a mattress is actually a pretty bad idea: that money will have less buying power tomorrow, than it did today. If the goal is to increase buying power, then clearly just holding dollars is bad, and so the prudent individual will find investments that can increase in value over time. With enough money invested, they can 'live off the interest' of those investments.
Bitcoin, on the other hand, is a very different type of money, in that the supply of it cannot be inflated, so the act of just holding coins does not suffer from the same issue of unpredictable dilution that dollars do. If BTC maintains current adoption/use rates*, and society progresses and grows in GDP, then each BTC will accrue more buying power over time.
The difference should be obvious: dollars are a bad asset to hold, they lose purchasing power over time due to an (unpredictable) dilution of supply. Bitcoin does not suffer from this, so a holder might expect their purchasing power to increase over time. Many people call bitcoin a 'hard money', as in, 'it is hard to produce more of'.
So all of that is to say: just like dollars, if you hold enough BTC, you could maintain a certain amount of purchasing power over time, while still living off the nominal increase in purchasing power of your BTC. The actual number of BTC you own would slowly shrink, but this is somewhat inconsequential if your goal is to just live off the interest while maintaining your net purchasing power.

*of course, bitcoin is currently in a young stage of growth, so it is a fairly volatile asset in regards to purchasing power over short time frames. But consider what the situation would be if it were as widely adopted as dollars - that is the more interesting situation in regards to the idea I mean to put forth here. Of course, if bitcoin continues to grow in popularity and use, then we might expect the buying power of a coin to increase, and vice versa.

Currently Bitcoin does not provide this feature.
It's possible that in the future the protocol may be updated to support such a feature via some mechanism such as 'Proof of Stake', or some other approach.
That said, the Bitcoin community is extremely conservative about protocol updates (with good reason) and so I would not expect any such feature to be added any time soon.


I inverted 2 digits to a wallet in a transfer Is there anyway to contact the wallet owner to retrieve the coins?  If the wallet doesn't exist, can the transaction be reversed?  Is there anything that can be done?

Normally a Bitcoin address is in the Base58Check or Bech32 format. Both of these formats have a checksum incorporated specifically designed so that wallets can detect if there is a typo in the address. It is strange that the wallet allowed you to submit the transaction.

There is no way to contact the owner of a wallet that can spend a specific Transaction Output (coins)

Transactions cannot be reversed. Under no circumstances. Even if you can proove that you are the owner.

BUT!!!
As we speak, October 30, 2020
The mempool is full, allegedly because miners in China are moving due to the rainy season. So the hash power has dropped and many low fee transactions have not been processed yet.
So, use a blockchain explorer to check if your transaction has been processed.
If not, then you can try to double-spend it by providing a higher fee for miners.
Higher fee transactions are processed first.


Pool comparison list? Where can I find a list of pools and their features? I want to choose the best pool. On google I find no good comparison.

https://blockchain.info/pools

You can browse bitcoin wiki:

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

As Egor notice, here a litecoin.info:

http://litecoin.info/Mining_Pool_Comparison

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

Also, there is thousand of sites, like this:

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

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

See,

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

On BitcoinChain.com you can find a comparison of mining pools. They list pools with the number of blocks found, whether you can Solo and Cloud mine with them, and what payout method they use.


How Can I Ensure Private Key is Valid on my Paper Wallet? I have recently created a paper wallet using the tool at bitaddress.org.

Now I will soon be transferring a large sum of money to the paper wallet, however before I do so I would like to be sure that the private key that has been generated is in fact valid for my bitcoin address.

I have been told that once some money is transferred away from a paper wallet, the paper wallet is no longer true "cold storage" and thus transfers from paper wallets should be "all or nothing".  This prevents me from doing a test transfer to ensure the private key is valid.

How else may I test the compatibility of my private key with the bitcoin address to ensure that I will be able to access my coins at a later point in time.

Checking the validity of a private key is a really compute-intensive task to do by yourself, but you can do this without actually using the private key to send coins (so no need to do it using pen and paper).

On the bitaddress.org website the Wallet Details tab lets you enter the private key and after clicking View details your bitcoin address should be showed in either Bitcoin Address Compressed or Bitcoin Address field.

But of course, you should not give away your private key, especially not online.

The site is actually an all-in-one HTML page, that is it can be downloaded as one file and it will work offline as it does every calculation in your browser window (no data you entered will be sent to the server). You can save to your computer (Ctrl-S in your browser) and open it in your browser without Internet connection.

I'd suggest to do the check at least in a private browsing window, or a live system (keep reading).

If you would like to do an independent check, use a Bitcoin Core client and create a new empty wallet (if you have it running, shut it down, move the wallet.dat somewhere else and start it again), go offline (disconnect your machine from the Internet, you will not need synchronization anyways) and try to import the key as it is described in this question. The client will check the private key, if that's invalid then an error will be reported (I changed a character, it reported Invalid private key encoding (code -5)). After this you can close the debug window and check your Bitcoin addresses in File >> Receiving addresses. After this, shut down your client and delete the wallet.dat. If you have moved the wallet.dat move it back now and keep using that.

Of course using this method writes your private key to the HDD/SSD of your machine, therefore even after deleting the wallet it is likely to be recovered using forensic/data recovery tools. If you'd like to avoid this you will need to use a disposable system, like a live OS that retains no data.

You can for example download Ubuntu and put it on a pendrive then boot from it, by default it will not save anything you do. You can also download the client from the Bitcoin Core download page (choose "Linux (tgz) 64 bit"), save it to the pendrive using your regular OS and then when you boot the Ubuntu you can simply extract it to the Desktop and run from there, all offline.

If you'd want to be even more careful then before booting the Ubuntu you should disconnect all other drives from your machine, leaving only the pendrive connected. Also, after using the Ubuntu and returning to your regular OS search for a method to securely wipe your pendrive and do that.

And another step would be a computer dedicated solely for this purpose, for example a Raspberry PI. Download a base image, put it on an SD card, copy the saved bitaddress webpage beside then connect a display, a mouse and a keyboard and power it on. The Bitcoin Core client has no official binary release for this platform but you can build it from source if you're adventurous enough.

A better way nowadays, secure and faster one on windows computer is using the offline tool https://bitaddressoffline.org which is open source and more secure than browsers.
It simply generates your private and public key pair offline and does not store any data.
This is the best way to store your Bitcoins and generate a paper wallet today on windows computers.


How do we distinguish between BTC and BCH in an address? Bitcoin.com has recently published an article about the DOJ seizure of Silk Road-related funds. The article states:

From 1HQ3, 101 BTC were sent to BTC-e, the defunct Russian exchange.
About 69,370 BTC remained in 1HQ3 and were subsequently seized by the
government. The address also contains approximately 69,370 BCH, BTG,
and BSV prior to the government’s seizure.

What does this "the address also contains" really mean?
This sounds like the address contains 69,370 BTC + 69,370 BCH + 69,370 BTG + 69,370 BSV, and I don't think that is what they've meant. Do they only mean that the transactions are committed before BCH, BTG, and BSV forks happened?

How do we distinguish between BTC and BCH in an address?

By looking at the post-fork BTC and BCH blockchain transaction-journals independently.

What does this "the address also contains" really mean?

They are saying that in both the BTC and BCH blockchain transaction-journals there were unspent transaction outputs associated with an address that existed in both.

Do they only mean that the transactions are committed before BCH, BTG, and BSV forks happened?

That seems most likely.
Incidentally, since many addresses are created deterministically, I suspect it is possible that re-use of the same keys in both BTC and BCH wallets would cause either to generate the same sequence of addresses post-fork. I am not familiar with BCH and don't know if they continued to use the same HD algorithm, it seems possible.

You will find BCH and BSV transaction details associated with that address here: https://blockchair.com/search?q=1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx
Convert the address for BTG here: https://blog.ledger.com/btg-convert/
Find BTG transaction details for the address here: https://explorer.bitcoingold.org/insight/address/GaExgvNdfik7LFqCDRwYQej6kFT7Fo2KFX

Lead Dev of https://blockchair.com is regularly involved in spreading misinformation about bitcoin on different platforms including Twitter, Reddit etc.

I agree with sipa and have similar thoughts about some of these forks:

I consider these forks to be highly unethical at best and many are probably outright scams. It benefits few traders and creators. Also questions related to forks are offtopic on Bitcoin SE.


Are there any _true_ anonymous cryptocurrencies? I've been looking into Bitcoin recently and stumbled upon numerous notes how Bitcoin is not anonymous at all, or how it's only partially anonymous and you can easily trace your funds.

So, this brings us to my question: is there any true anonymous cryptocurrencies which I can use and there will be no trace left.

I am a fairly new member to the cryptoworld, so please, keep it simple. :)

The short answer is no. The long answer is split into three parts, each headed by a bold word.

I will talk about the existing privacy tools in Bitcoin.
I will talk about some pie-in-the-sky theoretical crypto which would achieve full anonymity (but which can't be done feasibly today).
I will talk about CryptoNote, its limitations, and feasible ways around it that could be implemented today, specifically those that have already been implemented by Monero.

Today, you can do a lot relative to stock Bitcoin in the direction of privacy. Two strategies I should mention are CoinJoin and CoinSwap.

CoinJoin works by effectively pasting together transactions. In Bitcoin, each transaction is a list of inputs tied (by digital signature) to a list of outputs. The transaction is valid if the total output value is less than or equal to the total input value (any difference is a "transaction fee" claimed by miners), and if every input is a valid (not already spent) output of an old transaction. CoinJoin takes transactions from two or more users, combines the input and output lists, and has both users sign the resulting transaction. The result is that the standard flow analysis idiom of "all inputs are owned by the same person" and "all outputs are owned by the same person, except maybe for a change output" is broken. CoinJoin is tricky to implement well: output values should be as uniform as possible to avoid grouping them and matching them to input values; the resulting outputs should not be spent at the same time, since this also groups them; the join should involve two distinct parties, neither of whom is some central server participating in every join. Currently there are no good tools out there which satisfy all these requirements, but there are several in development (such as DarkWallet). Keep an eye open.
CoinSwap does trustless mixing, even across different blockchains (as long as each has a sufficiently rich scripting system). It is too complex to summarize here, but the result is the same as if two parties switched private keys in person, except that there is no room for cheating. That is, coins are moved between parties but the blockchain does not see this and therefore chain analysis cannot link them — except to the extent that they look funny, so if there are almost no users doing this, their transactions can be linked on this fact alone. To the best of my knowledge, there are no tools which support this. I am developing a Bitcoin wallet for experimental features such as this that will support it, but it may be several months or years away.

Total anonymity, in the sense that when you spend money there is no trace of where it came from or where it's going, is theoretically possible by using the cryptographic technique of zero-knowledge proofs. As an extreme example, you could imagine that rather than publishing blocks mapping old outputs to new ones (which is what transactions are in Bitcoin), miners published zero-knowledge proofs that they had a valid set of transactions which, in aggregate, mapped the old set of all outputs to the new set of all outputs. You could further obscure this by having the recipient choose the destination address(es) and pass different ones to every miner. That way, only the miner who gets the block (who is probably different for every block) and the recipient knows where money is going.

In what I've described, the values of all coins would still be visible, and perhaps tracking could be done by linking similarly-valued coins. We can fix this with homomorphically-encrypted values, say.

The point of this musing is that there are no strong theoretical reasons that what you want is impossible. But I'm going to burst the bubble I just created and talk about practical problems: firstly, to do this kind of general computation is zero-knowledge even remotely feasibly, you need to use a system which has a trusted setup (in cryptographic terms, the scheme is secure only in the CRS (common reference string) model). This means that some party, the scheme's creator probably, has access to secret data which will allow them to produce false proofs, effectively allowing them to undetectably print money for all time. A recent example of such a thing is the paper SNARKs for C by Eli Ben-Sasson et. al., which provides a lot of historical context.

Secondly, even with this fatal flaw, these schemes are not all that computationally feasible. Zerocoin, now superceded by Zerocash, took this approach and needed to create serious restrictions: all coins have the same value, there is no scripting (even for multisignature transactions, I believe), and even so some serious work went into special optimizations to do whatever was left (such as hashing) in zero knowledge. For ZeroCash research is going into doing the initial setup in a multi-party computation so that no individual has the secret material needed to print coins; there would be several, and as long as even one securely destroyed their data, the currency would be safe from forgery.

However, ZeroCash's trusted setup is orders of magnitude more complex than any other MPC that has ever been done. And the most efficient MPC schemes known depend on a trusted-setup as well, so we haven't gained anything.

Having said that, we can get something weaker than total anonymity, and it looks like we can do it in a feasible way. As has been mentioned, CryptoNote-based currencies use ring signatures (contrast group signatures, which involve a trusted party) rather than plain old ECDSA signatures in the proof-of-ownership part of their transaction signature scheme. Arguably the most well-known cryptocurrency that was originally based on CryptoNote is Monero. Whilst Monero has subsequently deviated substantially from its CryptoNote origins, it still implements many of the key concepts below, and additionally improves a lot of the problem areas originally highlighted in this answer.

To understand how CryptoNote works we must first recap how Bitcoin transactions work. Essentially, in Bitcoin each transaction output has a public key associated to it (identified, though not revealed, by the Bitcoin address on the output), and to spend that output you need to produce a small script including a digital signature using this key. When everyone sees that transaction, they see that the old output(s) are spent (so they can forget about it, except as far as keeping historical blockchain data for new users) and that new unspent output(s) have been created. Ring signatures, on the other hand, are associated to an arbitrary set of public keys, and knowledge of only one is required to make a signature. CryptoNote uses this by having each transaction input be a set of potential unspent outputs of the same value, signed by a ring signature using all those outputs' associated keys. It is impossible to determine which one is the "real" one that the signer is actually spending.

You might ask, if it's impossible to determine which outputs are being spent, how can double-spending by prevented? CryptoNote solves this using a special ring signature algorithm (which is a modified version of existing signatures, so this is original cryptography and their security proof should be scrutinized — fortunately it is not too complicated) in which the real signing key has a key image associated to it, which must be published alongside the signature. This key image cannot be reversed to get the original key and deanonymize the sender, but if a double-spend is attempted, users will see that the same key image is used twice and reject the second attempt.

This provides good anonymity, but even with the improvements listed presently, this is not a zero-knowledge scheme. This means that linkability is confounded but an adversary with good analysis tools will certainly be able to glean a non-zero (literally, infinity times as much as zero) amount of information.

This is a very promising direction, and these signatures are feasible to verify by ordinary computers (though they are more difficult, so scaling will be worse than Bitcoin's), but there are some serious limitations. Fortunately, all are fixable. The following list is the result of conversations between myself, Greg Maxwell, Peter Todd, Mark Friedenbach, Adam Back and several others (who I'm sure will contact me to be listed :)), and to the best of my knowledge hasn't been published anywhere. So aspiring anonymous altcoins developers, here is a wishlist:

In Bitcoin, because transaction outputs are incontrovertibly spent, the total list of unspent outputs grows only very slowly. Nodes with limited storage are able to store this, and basically nothing else: when they see a new block, they verify it then update their list of unspent outputs accordingly. In CryptoNote this is impossible since transaction outputs are never definitely spent: there is a giant list of potentially spendable outputs, and a giant list of spent key images, and both of these grow very quickly and never shrink. Current CryptoNote implementations, except for Monero, store this all in RAM, which puts a pretty serious cap on their scalability today. One of Monero's scalability improvements is to store this set on disk in a very fast LMDB database, but the set of mixable outputs is still unbounded and is expected to grow faster than Bitcoin's comparable utxoset.

However, this can be further be improved by having users store only the outputs whose keys they own (plus some extras for anonymity) and only a subset of spent key images, which I will describe. The set of outputs would be stored in an insertion-ordered Merkle tree (so a user storing almost none of the tree can easily verifiably append new outputs, but can't detect duplicates, which is fine). The set of images would be stored in a image-ordered Merkle tree (so a user storing almost none of the tree can easily add a new key image and verify that it didn't exist before, given a proof of insertion, which is basically a path from the new node to the root of the tree, along with the siblings of each node along the way). To spend an output, the user provides a ring signature including the output, with appropriate key image and proof-of-new-insertion.

Note that to produce a proof of insertion for the new key image, the user needs to store all its neighbors in the key image tree. Since key images are random-looking, how can this be done without storing the whole thing? The answer is prefix-filtering. When a user creates a new key, he creates one whose first 10 bits (say) are a specific ten-bit sequence that all his key images will have. He stores every key image that starts these ten bits so that he can produce proof-of-insertion of such images. The result is a reduction in anonymity (by a factor of $2^{10}$) since everyone will know that nearby key images are more likely to be owned by the same person than are far-away ones, but a corresponding reduction in storage requirements (by a factor of $2^{10}$) and an increase in key generation time (since on average $2^{10}$ keys will need to be generated before one with the right prefix comes along). This is a tradeoff that every user will have to make.

Peter Todd has suggested choosing a new prefix every few months or years, and retiring those in which every known key image has been used. This gets more privacy for the storage hit than simply decreasing the prefix length, since two key images in different prefix sets don't reveal their common owner.

With ring signatures, the anonymity set is only as large as you make it, probably just two or three potential keys per signature.

We can improve this to effectively CoinJoin all transactions in each block (with the caveats that (a) miners can deanonymize the CoinJoin, reducing anonymity to the smaller set provided by the ring signatures, and (b) it is possible to miners to detectably cheat, so there is a small window after mining in which block content might be invalidated by revealing its cheating, which increases complexity) (the complexity hit is because it is important that the block content, not the block itself, be invalidated, since otherwise miners could deliberately cheat then reveal the cheating later, giving them a large window in which everyone else is mining a bad chain). The exact scheme is described at the very top of this IRC log.

(The same security can be provided with fancy cryptography, specifically one-way aggregatable signatures ("just the math" by Greg Maxwell), which depends on pairing-based cryptography, which is slow and requires new security assumptions that make some people uncomfortable. The exact way these would be used is described from 21:24:58 onward in these IRC logs. It is very cool that we can get the same security with no new crypto.)

With ring signatures, your anonymity can be compromised after the fact by others in your anonymity set. For example, if you spend an output using a ring signature along with two other outputs, then those other outputs' owners spend them with a single-signature ring signature (so they are incontrovertibly spent), it is now clear which of the three you used is yours, since each can be spent only once. This can be done long after the fact, which complicates analysis.

This can be fixed by requiring a minimum size of anonymity set, as Monero has done on a protocol level since March, 2016. But then we have a new problem — there are only so many outputs of any given size, and since all outputs in an anonymity set must be the same size (so the network knows how much you are spending), this might not be possible. This can be fixed by allowing outputs of any size in the anonymity set, and taking the minimum size to be the spend amount. But then given a ring signature across several outputs' keys, people will know that the output with smallest size will be the "real" one. This is because each output can only be spent once, so if you mix it with smaller outputs, you are basically shrinking it to the size of those outputs since the network will only recognize the smaller value.

All these problems are addressed in the next point.

With ring signatures, you need all potential inputs to have same (or similar) value, which greatly restricts your anonymity set.

In fact, Greg Maxwell and I found a way such that every single output can be read as any uniform distribution of outputs (so 1BTC might be spendable as a single 1BTC output, or two 0.5 BTC outputs, or three 0.33 BTC outputs, etc.) There is a single "real" distribution, but only the creator of the output knows this, and it is not revealed except in the case of leaked keys. Therefore, literally every single output size can plausibly be claimed to be created by every output, and therefore all outputs can participate in each anonymity set. This scheme is described in this writeup.

With this is place, it is feasible to set a minimum anonymity set size, preventing people from using keys with no anonymity set and compromising their own and others' anonymity. They can still do this compromise by revealing their secret key, but it's not clear to me that this is even possible to prevent.

Monero has addressed this issue in a similarly powerful manner, by implementing a scheme based on Greg Maxwell's Confidential Transactions. This novel scheme and implementation is called Ring Confidential Transactions. Because the value of outputs is no longer known under this RingCT scheme, you are no longer forced to only mix with a small subset of outputs (ie. those of the same denomination, which in CryptoNote and pre-RingCT Monero are all ^10 denominated outputs). This massively increases the potential anonymity set, and ensures that even large outputs are not "stuck" with only a handful of matching, mixable outputs.

And by the way, Dash (formerly Darkcoin) does not provide anonymity. They attached a (broken) implementation of CoinJoin to the ordinary Bitcoin client, and at least initially released it as a closed-source software. I haven't looked into Anoncoin, but the best advice I have for folks looking into altcoins is to assume they are uninteresting (and probably dangerously broken) until someone has demonstrated a concrete technical innovation.

And by the way, Darkcoin does not provide anonymity. They attached a (broken) implementation of CoinJoin to the ordinary Bitcoin client, and at least initially released it as a closed-source software.

This is a total crock. Darkcoin's anonymity is the closest to actual implementation among all anonymity-centered alts. RC4 is in testing as we speak right now and will feature DarkSend+.

All coins will be automatically anonymized at interval, not just when they are being sent. This means the entire population of coins will be an anonymous mist.

In addition, the masternode system will be utilized to chain multiple DarkSend+ passes together in order to increase anonymity, so that even in the unlikely event multiple nodes are compromised the probability of compromising all of nodes in the sequence is nearly impossible.

I would also like to add that the code is currently being audited by Kristov Atlas, a well respected security expert, and that the only thing that is closed-source is DarkSend. Once the code has been vetted and refined, it will then be open-sourced.

I don't know where you get your information from, but it's obviously not very good or you didn't do your research as what you said is disingenuous and not true.


Buy bitcoins with my regular AMEX (american express card) I can not find any website or service to buy bitcoins with my AMEX.
www.bctquick.com does not work aymore ? (webpage inactive)

any advise ?

You can try virwox.com but it will also depend on the country that you choose for sign up. I know that when you use Germany as the country for sign up, you can pay with AMEX but you will have to covert to SLL first before you can get the bitcoins. I hope this helps eventhough you asked this question long ago!!

U can use this platform http://www.ecoin.eu . I think it's a better option. And it's without any commissions. Good luck!


How are "message signatures" verified without having access to the public key? In the bitcoin-qt client you can sign and verify messages using only the public address. Since the public address is a RIPEMD160 hash how is it possible that I can verify a signature since I do not have access to the public key?

When signing a message (as opposed to signing a transaction), the signature contains additional information needed to recover the public key using the signature and the signed message.  The recovered public key is then hashed and the result compared to the address.  If they match, the message was signed by that address.

Actually messages are signed using the private key and verified using the public key. If you'd be able to sign and verify only with the public key, that wouldn't make sense and it wouldn't stop anybody from reading your messages and signing them with your public key, which as the name states, is public.


What is a workaround to fundrawtransaction for watchonly addresses I have imported watchonly addresses in Bitcoin and trying to createrawtransaction with input watchonly listunspend which has spendable=false, scriptSig=empty.

after that, I'm getting an error on fundrawtransaction with message "Signing transaction failed"

I know it's unsigned and can't calculate fee but if I put in order
createrawtransaction
signrawtransaction
fundrawtransaction
sendrawtransaction

still, it gives me an error "Signing transaction failed"?

A bitcoin address, watchonly or not, represents a public key.  This public key has a corresponding private key.

If you import a watch only address the corresponding private key is not imported.  So you cannot spend any unspent outputs from those addresses.

If you want to send bitcoin to the watch only address, you have to make sure you know the corresponding private key or your bitcoin will be lost.

Choose an unspent output from another address where you know the private key.  Take this output when you run 'createrawtransaction'.  Sign the transaction with this private key then 'sendrawtransaction'.

Optionally before you 'sendrawtransaction', decode your hex string with 'decoderawtransaction' and make sure everything is correct.


Bitoin payment sent and confirmed, but not received I have sent and received a number of payments via the request function without problem. However, when I sent two payments directly from one bitcoin wallet address to another (from a business account to a personal account, public addresses), they are yet to arrive at the target! Is there an extra step I need to complete? I can't see that there is.
Thank you
 D

Transaction IDs
 e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02e187 /
0e5fcac8b0618eabff747a0dea4cf4ff7dddf4b323e52f3473cd7581a88c425c

UPDATE: Payment/transaction didn't disappear. After looking into this it turns out the PASTED VALUE of e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02e187 has invisible ASCII characters in here. Looks like a color code or some conversion of the Byte array. The transaction IS valid, but copy/pasting from the question in this topic will result in invisible ASCII.

Example:

Bad: e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02e187
Clean: e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02e187

They look the same, but they are not the same. You can test this by putting your cursor just after the final 'e' (4th to last character in string) then hitting the left arrow (be sure to use the "bad" or original example above). You have to hit the left arrow twice between the '2' and 'e'. The cursor is navigating the invisible character.

Here is a C# example of how to find this:

static void Main(string[] args)
        {
            var x = Encoding.Default.GetBytes("e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02e187");

            foreach (byte item in x)
            {
                Console.Write(item);
            }

            var a = Encoding.UTF8.GetString(x);
            var b = Encoding.ASCII.GetString(x);

            Console.WriteLine(a);
            Console.WriteLine(b);
        }

The result is:

1015749485252495097979953515055101531019797100514952565351515310056505010053101559750501024848995155481005610248535350565410110048506363101495655e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02??e187

e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02??e187

-------------------------END OF UPDATE-----------------------

It LOOKS like somehow the transaction ID is messed up. It's a transaction on the blockchain but at the same time it looks abnormal. All of these show and contain the transaction:

Longhorn.Bullpay.com - https://longhorn.bullpay.com/?gateway=2&data=e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02e187
BlockCypher.com - https://live.blockcypher.com/btc/tx/e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02e187/
Blockchain.info - https://www.blockchain.com/btc/tx/e9104412aac5327e5eaad31485335d822d5e7a22f00c370d8f055286ed02e187

However, they "search" function in 2 of them fails to see it as a valid transaction (reported it to both). Was able to get to them by going to the wallet itself and finding the transaction. So while it is being consumed by looking at a raw block, the transaction ID itself is jacked up in some way.

This MAY mean, that your wallet program is also having a hard time seeing that transaction (even though it submitted the transaction to whatever node generated that transaction ID). It does exist and an expert should be able to form and submit a valid transaction to the blockchain using the UTXO's from it.

Without knowing more like what wallet is being used, the functionality of that wallet, in a general sense i would import that address into a more flexible more advanced wallet to see if it picks up the transaction. If it does, spend the UTXO's and stop using whatever wallet resulted in the malformed transaction ID. The node would have provided the transaction ID when it was submitted. So this is dependent on the wallet setup and what node setup the wallet used to cut out the "messed up" aspect.

Beyond that an expert in recovering this type of thing (assuming you still have ownership of it) should have no problem if you have access to the wallet and are willing to provide the information.

Note: This is not an endorsement of any particular recovery service (i listed none) or action you should or should not take. I've listed here some possible options to recover the coins from a wallet program that fails to see a particular transaction.

I had the same problem. I couldn't understand where the payment went. I found out later that I made a mistake when entering the address. Check the payment details.


How to determine what type of coins a wallet.dat contains? I have a number of wallets. Is it possible to detect the type of (alternative) coin it contains?

Here's one way I found.

Get pywallet (https://github.com/jackjack-jj/pywallet) and run

python pywallet.py --dumpwallet --wallet=/foo/bar/wallet.dat

Look in the output for a field called names.  This will contain a list of addresses in the coin's own format, and by looking at the first character you can try to identify the coin by its version byte.  See here for a list of some common ones.  For example, 1 is Bitcoin, L is Litecoin, etc.

Note that you will see a number of other fields named defaultkey, addr, etc.  These will appear to be in Bitcoin address format (starting with 1), no matter what the actual coin is.  The reason is that for these keys, the wallet.dat file only contains the private key, and pywallet has to do the conversion to the public key and address.  In  particular, pywallet has to fill in the version byte, and it always picks the Bitcoin version byte unless told otherwise on the command line.  So you always get a Bitcoin-style address in these fields, so for purposes of identifying the coin, you should ignore them.

That is not possible because just looking at the file you can't say whats in there until you have saved these wallet.dat files in different folders second thing is you cannot read content of a .dat file. So its not possible.


Bitcoin ETF - Press releases On 11th of March 2017 the U.S. Securities and Exchange Commision will decide whether the Bitcoin Exchange Traded Fund (ETF) will be approved or not.

The decision will almost certainly have massive influence on the market as soon as the first press release gets published. So the question is where the first official and reliable statement on the outcome of the decision will be published. The SEC homepage has a RSS feed for press releases. However it is not certain that the outcome will be published there first. Are there any other reliable services / official news pages where news like this may be released first?

I have a news feed from https://news.bitcoin.com/ . It sends me news articles in a pop-up window similar to Facebook. I'm assuming that they'll know as soon as the decision occurrs.
For the moment I'm in a watch and see, I'd like to buy more but at what price. The BTCs I now own were bought much lower. If the ETF decision is positive we may never see lower again, if negative or ambiguous who knows where the price will go. Down I suppose, in which case I'll buy more when it settles.


How can I buy Bitcoins with Australian Dollars? Please! I just want to get them! How hard does it have to be? I've spent some 5 hours today trying to figure it out. I am in Australia.

This question answers the more general question "How do you obtain Bitcoins?"  Most commonly, people use a Bitcoin exchange to exchange local currency for Bitcoins.

Here is a list of exchanges split by currency and whether they're currently active or not.

You can also Buy Bitcoins at BTC Markets an Australian Bitcoin Exchange.


electrum windows client, standalone executable versus windows installer From the download page, http://electrum.org/download.html

What is the difference between the two windows versions? standalone executable and the windows installer version?
What are the advantages and disadvantages of each, and how should I choose which one I should use?

The Windows Installer will install the executable in "Program Files", create shortcuts and other registry entries. The Standalone Executable is exactly that, just an executable to run the Electrum program.
Benefits of Windows Installer would be ease-of-use for those most familiar with installed programs, plus it will be available to multiple users (whether that is desired or not, is another question). Benefit of Standalone is don't create registry entires (cleaner) and don't require raised privileges (as not installing globally).

In either case - user-specific data will be saved in C:\Users\USERNAME\AppData\Roaming\Electrum

There are some more details in this blog post

Try this link - simple explanations and instructions:

http://www.bit-buddy.com/electrum-setup.html


Is there a Bitcoin exchange that accepts paypal and no registration needed? I am looking for a Bitcoin exchange that allows me to input a wallet address and my paypal information and it will let me send x amount of btc to that address while paying with paypal in USD, RUB, EUR, etc.

Also, I don't want to create an account with the site and I want the site to be trusted.

What you are asking is economically impossible. Such an exchange doesn't exist or they are some sort of scams.

Paypal has very high fraud transaction rate due to high availability to obtain stolen PayPal credentials or stolen credit card numbers from darknet markets. Thus, exchanges allowing PayPal force strict Know-Your-Customer requirement on their users. It would be terrible, terrible, business decision to build such an exchange.

The answer above is completely false. I purchase Bitcoin through Coinvase all the time directly from my PayPal account.

What you need to do is make sure that your Paypal account is completely verified (by submitting whatever documents/info that they ask for)

Then, just sign up for the PayPal Debit Mastercard, which gets sent to you in the mail.

Once you have that, you can use it vurtually anywhere , and the funds will be deducted straight drom yiur paypal account.

THIS is when you open your CoinBase account, and choose "Add Credit/Debit Card" from the  " Payment Methods" menu, and enter the card details there.

Its very simple, and certainly worth doing if you want to avoid paying all the unneccesaty muddleman fees to places like Paxful, LocalBitcoins, or VirWox


Practical application of Electrum's Encrypt/Decrypt message feature? It's pretty clear how signing a message with a Bitcoin key can be useful in proving ownership of funds.

However, it's far from clear how encrypting a message with a Bitcoin key can do anything useful. This feature is available from Tools/Encrypt/decrypt message, and appears to use ECIES or some variant of it:

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

It seems that at least one developer is doubtful about the security of such schemes:

https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2014-August/006581.html

Security aside, what practical reason would anyone have to encrypt a message with a Bitcoin key?

Presumably, using a bitcoin public key you could encrypt a message, and only the person who controlled a private key associated with that bitcoin address would be able to read the message.

It's really a question whether you have confidential/private/secret information that you wish to share.

If you're looking for an hypothetical use case, imagine you paid your doctor in cryptocurrency for an embarrassing medical test, the result could be sent back encrypted such that only the person who paid can read it.

Or, Lets say you paid for software license online with cryptocurrency, the software key can be sent back encrypted such that only the person who paid could read the key.

I'm not sure about the security of using this signature algorithm as an encryption scheme.

But as far as usefulness it seems very clear to me that this is a very nice and useful
feature.

It basically gives you the ability to use bitcoin addresses as email addresses! Imagine sending messages to an address (which's pubkey is known as it already made a payment) by simply encrypting a message with the public key and broadcasting it as e.g. an OP_RETURN transaction.

Only the owner of the bitcoin address could read it.. A trustless distributed messaging scheme without the need to signup anywhere. Quite revolutionary if you ask me..


I tried to withdraw coins from Binance but they were lost on the blockchain. I need help from an expert I really need some help from someone with a lot of knowledge and experience with crypto trading.

I tried to withdraw LTC from my Binance account recently, but I mistakenly used a BTC "receive address" from my Green Address desktop wallet, and the transaction didn't go through. I've contacted Binance and Green Address customer support several times and neither company is willing to help me recover my lost coins. Binance won't own the fact that they allowed a transfer that had an invalid receive address (the address started with a "3", not an "L"), and they said my coins are now lost on the blockchain.

Green Address says they don't have access to my private keys in order to help. I don't know how to access my private keys or even if they exist. I do have 2-factor authentication enabled on Green Address wallet. I've been told by members of this forum that I may be able to recover my coins if I'm able to convert my Green Address wallet to a cold wallet, and I have emailed Green Address with that question and am waiting for their reply.

Someone also posted that I try calculating an address from my wallet seed. I have no idea how to go about doing that and that's one of the things I need help with. I'm a total newbie to crypto trading and trying to understand all the technical steps is overwhelming and hard to comprehend.

I would be eternally grateful, if someone would be willing to walk me through the steps of how to recover my LTC coins?

It's a lot of money to me. I'm attaching a screenshot of the original transaction from Binance website, including the Green receive address and the Txid.

transfer that had an invalid receive address (the address started with a "3", not an "L")

An address starting with 3 is a valid LTC address, so Binance could not have known this is not where you want them sent.

In your particular case, recovery may not be possible without cooperation from Green Address. Green Addresses are 2of2 or 20f3 multisig addresses and require two keys to spend coins from. One key is from your seed words, and the other is held by Green Address, in the case of 2of2.

Unless you are able to convince Green Address to share that key with you, or sign a tx using it that moves your LTC, you will not be able to access the coins.

If you have a 2of3 multisig, you hold 2 of the keys, and should be able to use an Electrum-LTC client to generate the multisig address and use it on the Litecoin chain.

Just dispute it from your bank. It’s not your fault that binance allowed it to go through. Or, it they can allow it to go through why can’t they reversed it somehow? Binance should have more security. It’s a lot of money on stake, and the only thing that I can see as a solution right now is to dispute all the money that you use to buy your coins. If binance can’t help you then you have to do it your own way. It’s the law you authorized the transaction, but you did not yet the value that you purchased.


There are a variety of variables that affect Bitcoin pricing on the exchanges. Some are:

Market size
Exchange volume
Price of entry

Market size: Relatively speaking, the market for Bitcoins is small. In April of 2013 it was about 1.2 billion USD, and a few days later dropped to below 750 million USD. That's a small market cap, which means, among other things, that there's less consensus on the price to the BTC. This is the capitalization for all mined bitcoins and includes coins that have been lost, so the real value is something smaller. Each exchange is a subset of the total market, so those markets are even smaller, which allows for greater variation.

Exchange Volume: For all the coins that have been mined, the quotes are only from online exchanges, which are a small set of the total coins that have been mined. If only a quarter or less are in play, then the swings can be pretty dramatic. Since the volume is limited, and people don't take full advantage or arbitrage, different prices can and will exist on the different exchanges.

This happens with foreign currency exchanges too. However, with professional traders, billions of dollars, and serious automated trading the differences are in fractions of a percent.

Price of entry: It's relatively cheap to enter the BTC market and cheap to trade. Furthermore, if you mined BTC when it was trading for fractions of a dollar, or even $30/BTC, there's no issue unloading it. With a low price of entry people are less serious about how the trade their BTC.

Fundamentally, BTC is a small, highly speculative, irrational market. Each exchange is a small, highly speculative, irrational market. That's why the spread is so great.

As a crude example:
Consider two towns in the medieval period separated by twenty miles. They both have markets and people sell apples in both markets. In one market people really like apples. They pay 2 coins for the apples. In another market they aren't as enthusiastic, they only pay 1.5 coins for the apples. The economic thing to do would be to buy the apples in the second market and sell them at the first. But it's hard. It's a twenty mile walk, and all your friends are at the other market. Plus, the price could change by time you get there. It's just easier to stick with your current market, even if you're not maximizing your return.

lets take hypothetically 2 countries / currency A and B and bitcoin

exchange A is in country A
so someone exchange A currency for bitcoin.
the bitcoin is mined by a miner in A - created from 'thin air'

this bitcoin is sold in exchange B in country B
this same person sells the bitcoin to exchange currency B
assuming that C buys the bitcoin from B

the trouble is that C is literally holding a bitcoin with no value
as C would not be able to demand that A (or that miner in A) pays C in currency B for that same bitcoin


Will expensive mining equipement have any worth in the future? With more and more people picking up advanced ASIC miners, the difficulty is going up while the remaining coins are going down. If miners continue joining at this or a faster rate, the limit might be reached much sooner than originally expected.

I worry about purchasing any mining equipment because I don't want to have a $2,000 investment that can not recoup its cost within say, 10 years - or at all.

So is it even worth buying newer mining equipment, or is it better to stick with whatever is around?

UPDATE: To clarify, I'm not asking about how an ASIC mining rig can be reused. I am well aware that it has a single purpose and cannot be reused. I'm asking if it is even worth spending a lot of money on such a thing.

TL;DR. Bitcoin profitability is about choosing between buying BTC outright (Coinbase, or Bitstamp) or buying hardware ASIC miners and paying the ongoing electrical fees.

Edit:
To keep mining expenses low, you will need the cheapest form of electricity.  This usually means coal in most regions. "Clean coal" doesn't exist.

10 years from now is a long time, and you should expect additional transaction fees by then, plus many more (different) incentives to mine.

As of late summer 2013 the ASIC market is saturated in my opinion, and the difficulty spikes will continue to reach into 2014.  That means the value of BTC must appreciate for most people on the network to get an ROI.

Either one or more of these things will happen:

People will mine coins, pay a lot for electricity, for years to come just to get a ROI
Sell the machine at a loss, invest in Bitcoin
People who buy Bitcoin will cause the price to increase, thus making mining profitable
Mining companies will go out of business (or sell a different product) and whatever ASICs are made now will be the only ones in the game for a while.

Example

Assume that the network hashrate (competition) is so high that in order to make a profit, miner #1 has to mine for 2 years and also wait for the BTC to be valued over 900 USD. (Note: BTC hit $1000 per coin on 11-27-13)  After a lot of time and expense (not to mention heat, noise, and an angry wife) he cuts even.

Now assume that in the same time period, person 2 buys BTC at the current Mt Gox rate: $140.  (Two thousand dollars worth of coins).  The price of BTC only has to increase for him to make a profit.

So the question is

  Why are people buying mining machines when buying Bitcoin outright is lower risk and a better reward?

The answer is so they can ride the next mining wave... more on this in a second

The Good News

If you already purchased the miner, you should be fine if the market figures out that buying Bitcoins is "safer" than mining, and has a better chance at making a profit.

Once buying BTC becomes as popular as mining is today, then the price will increase.  If the price increases, demand for ASICs will increase as well.

Bitcoin is about riding the wave of either buying BTC outright or buying miners.  Each action perpetuates the other, so I'll bet the mining storm of 2013 will cause BTC to rise and everything will be alright in the end.

Whatever mining rig you buy, it will eventually grow obsolete. This is because the algorithm behind Bitcoin is growing increasingly complex. Now, as more people buy mining rigs and mining pools grow in size, the algorithm will only begin to increase in difficult at a faster rate.

In my opinion, mining is a high-risk, high-reward investment. If you buy the right rig at the right time, and prices for Bitcoin stay up, you can make a great deal of money. If Bitcoin prices drop, however, you will lose money. That's the nature of the game.

If you are thinking about buying a Bitcoin rig, you need to plot out how many Bitcoins you can expect to mine with that rig (you'd have to use current and projected hashrates to computate that). Then you'd have to project how much money these Bitcoins would be work at current prices, and also project how much you'd earn if prices jumped by certain amounts (10% 25% 50%, etc.) or dropped by certain amounts.


Bitcoin's real-time Buy and Sell price API What is the API to get Bitcoin's real-time Buy price and sell price on my site? and how can get it from to implement in my website developed in PHP.

Bitcoin does not have one single buy and sell price. Bitcoins are exchanged on many different exchanges, each keeping track of their own market price.

However, BitcoinCharts.com has a useful API that summarises many of the largest exchanges according to their trading volume. You could use that to display the Bitcoin price on your website.

Here is an open-source one i found, and the most simple one:
https://github.com/coinconvert/crypto-convert
Instantly convert cryptocurrency and get price information.

Top 100 Crypto Currencies Supported

Top 30 Fiats Supported Price &

Ticker information updated on a configurable interval from multiple
secure sources (Binance, Bitfinex, OKEx)

Any pair can be converted, be it Crypto -> Crypto or Fiat -> Crypto.


How old do you need to be to buy bitcoins in a atm? I've read all the others Q&A and I haven't found the answer to my question or I haven't noticed. I live in Spain and is there an age restriction to use an btc atm (I'm 16)?

I know for age limits when buying alcohol, cigarets.....but for using ATM (normal usage or buying BTC)? Never heard for this....maybe you should first learn, how ic/is not BTC regulated in Spain (is it recognized as a curency, comodity ext...) and start from there?


relationship between bitcoin miner and verification of transactions Bitcoin miner mines a block, which can't be submitted to the network without proof of work. And the new block contains all of the new transactions. Hence the new block acts as a security measure, and authority.

My puzzle is following:
In the scenario I just described, the miner of the new block, in some sense, authorized the new transactions to be true. Yet the miner has never looked into the new transaction he just authorized.

This somehow relates to orphaned blocks, and longest chain(?)

Links I found useful to help me understand:

How do nodes verify Bitcoin Transactions?
http://timothyblee.com/2011/04/19/bitcoins-collusion-problem/
http://spectrum.ieee.org/img/06Bitcoin-1338412974774.jpg
Why is blockchain necessary?
Which is the relation between transactions and blocks?

A miner can either verify transactions itself or assume that a transaction is valid as some nodes let him know they verified it.

In either case, the miner can enter the transaction in the block he is working on. Note that in pool mining the pool decides what transactions are included, while in solo mining your own bitcoind client does so.

An important thing to know is that miners only try to make a successor block for a block they think is valid. This means that when a miner generates a block with an invalid transaction on top of a valid block, other miners will not accept the new block. They will ignore it and continue trying to build a block on top of the last block they think is valid.

This way of working results a situation in which accepting invalid transactions and broadcasting invalid blocks is a waste of resources because your blocks will be orphaned and you will have to start all over.

This is how I understand it:

The mining application (eg Phoenix miner, poclbm) requires data to be passed to it by a Bitcoin node. The node's role is to verify the unconfirmed transactions against the blockchain and, if valid, provide a hash of them to the miner.

ie It's not the miner's role to verify transactions; it's the node's.

If you're pool mining, the node is run by the pool. When solo mining, bitcoind is generally used.


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

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

How to resolve this?

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

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

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


Determining if input is a block ID, transaction ID, or address how do sites like https://blockexplorer.com determine if the input (see inputbox in the header of https://blockexplorer.com ) is an address, transaction ID or block ID?

I want to write something similar myself on my local machine, where I run a full node and have access to bitcoind RPC. I need to know how to direct the input given one box can be 3 things.

As outlined in the pseudocode in amaclin's answer, a block explorer website would simply check to see if they can find the hash/txid/address in their database, then they will know what type of input it is.

You can't directly perform this check via one bitcoin core RPC call, you would have to write a script of some sort to perform the 3 checks to figure out which type of input you were given. You can first check for a valid block hash using the getblock RPC, and if that failed you know its not a block hash. Next you would have to have txindex enabled on your node to allow yourself to query txids using the gettransaction / getrawtransaction RPCs (because by default the node only indexs transactions which are related to your wallet). And then to check if its a valid address, you can use the validateaddress RPC call. If all of those failed, you know the input is invalid.

The differentiation between blockhash, txid and address can be done on the basis of their length, both txid and blockhash are 64 characters long, so if string has 2 zero's as first two characters, it is bockhash and not txid. Here's the sample javascript code:

 if (user_input.length == 64) {

 for (var i = 0; i < 2; i++) {

       if (user_input[i] == '0') {
            block_flag = true;
        }
        else {
             block_flag = false;
             break;
        }
  }
  if (block_flag == true) {
      // it's a blockhash
  }
  else{
     //it's a transaction
  }
  }
  else if (user_input.length == 38 || user_input.length === 34) {
     //it's an address
  }


I have more than 20 paper wallets with very little bitcoin in them. How can I combine all of them together? I have a bunch of paper wallets with different small amounts of Bitcoin in them. How can I combine them all into one address without having to pay a fee for sending each paper wallet to my own account? How to do a bulk send and pay a one time fee that would be cheap?

You should import all the private keys and not sweep them.
Wallets like blockchain.info has this function where it will import the private key. In that case the private key will become part of the new wallet.

Import all the private keys into a new wallet. Thats it ! During spending the wallet will combine inputs from your private keys to spend required amount.

There isn't a way. You could send all of the bitcoins in each wallet to one address without any transaction fees if you are prepared to wait potentially a long time for it to be confirmed.


How do you load the Android bitcoin backup key onto Bitcoin Qt? I have an Android wallet key and I want to load it onto my windows desktop. I am using Bitcoin-Qt, but i dont see an import option anywhere. How can this be done?

The backup file produced by the Android Bitcoin app is a text file containing lines of the form

5Jhvcnoi9LFxEcg68gTaDB3DiKEJ6TWJuMmyfjv89uEv3AbgdV 2013-01-01T12:34:56Z

The first field is the private key.  This can be imported into bitcoin-qt using the importprivkey command.  Choose "Help > Debug window", go to the "Console" tab, and enter:

importprivkey 5Jhvcnoi9LFxEcg68gTaDB3DiKEJ6TWJuMmyfjv89uEv3AbgdV

where you paste in the private key from the file.  bitcoin-qt will be unresponsive for several minutes while it searches the blockchain for existing transactions involving the new address; this is normal.

Please follow the documentation here:
https://en.bitcoin.it/wiki/How_to_import_private_keys_v7%2B


Is it possible for more than 21 million bitcoins to exist if 51% agree? One of the commonly cited advantages of bitcoin is that there's guaranteed to be only 21 million bitcoins.

However, my understanding is that the bitcoin protocol is patched by an opensource community, is it possible that the bitcoin miners could start using code that allows for more than 21m bitcoin?

Maybe. It would require a split in bitcoin users. Those who wanted the change could switch to a new version of the bitcoin software with the code changed to allow it. The problem comes from the fact that it would have to be a voluntary change. Some would want to change, others wouldn't, and this would split the bitcoin community. Any transactions that occur in the either chain wouldn't be reflected in the other. But any balance you had at the time of the split would be reflected in both chains.

It would be a matter of semantics on whether the new, modified bitcoin would even be considered the real 'bitcoin'. If the majority of the community thought it was an invalid change, then the new would take the role of just another altcoin and people probably wouldn't even call it bitcoin. If the majority liked the change, it's possible that the old bitcoin would lose value and be considered just another altcoin while the new version takes it's place (or even cease to be used at all). Or, it could be even and they could coexist, but that seems unlikely to me.

I don't think such a fork is something that the BTC developers would do to the community. Open source communities are generally afraid of forks anyway because they tend to kill projects by splitting the development team. Beyond that, doing so has the power to really lower the confidence in BTC as a currency. The people who already have coins would feel mistreated because the protocol change would mean the minimum value of their coins would be lower. It would essentially be equivalent to the gold conversion being lowered on the dollar during the gold standard.

No, because standard clients would reject these blocks, regardless of which chain is longest. Only miners and clients operating under these other rules would accept this blockchain. This is likely to never change with the standard Bitcoin client (and would have to be accepted, by clients upgrading to the new protocol), so the 21 million limit is secure against a 51% attack.


Bitcoin node synchronization speed up I'm running a docker image with a bitcoin node (version v0.16.3.0-g49e34e288) and it's taking more than week to synchronize, having only synchronized 54% of the blockchain. I'm running it with the "prune=550" and "disablewallet" options. I there any way to speed up the synchronization process?

Thank you

The pruning works after full node synchronized only !!!!
You can set it prune=550 only after that you have full node.
Full node, then type prune=550 in conf file, then shutdown, then restart.
Hi.


How is mining profitable if a $10.000 ASIC will generate like $63.23 per month? This $10k ASIC miner has 1TH/s and by this hashing calculator (I know they're not THAT precise but...) it'll generate like $63.23 per month? Why would anyone invest in this?

That particular miner is way overpriced.  Nobody should buy it at that price.  The seller either listed an incorrect price, or is very confused about the current market for mining hardware, or is hoping to find a customer who is a sucker.

For comparison, the Antminer S5+ has a (claimed) hash rate about 7x higher and costs about 1/4 as much, making it about 28 times more economical.

The exchange rate makes the equation volatile and unknown as well.

If you're bullish, like many are, mining now will be as valuable as it was for the first few people who were mining with their CPUs in the beginning.

EDIT: If the exchange rate rices, then your revenue per month in USD increases as well.


How does a miner put his vote for certain BIP? I understand that a miner is the only one who can vote for a certain BIP, but I'm wondering, how do they technically do that? How do they submit their vote? I found out that they  are doing it through the coinbase transaction, but I couldn't find any details on it.
Thanks!

See my answer here to address some of your misconceptions. TL;DR: miners signal support in blocks for certain rule changes in order to coordinate activation, not to determine whether it is accepted or not.
As for the actual mechanism used to signal, a number have been used in the past:
Time based: BIP16, BIP30
Early softforks (up to mid 2012) used a simple time based activation mechanism: node software that implements these proposals enforced the new rules on all blocks with a timestamp after a certain date. In the case of BIP16, this date was determined (and modified) in response to miner signalling, but this signalling was just for human interpretation; nodes took no automatic actions in response to it.
Specifically, the signalling used here was to put a string with a support message in the coinbase transaction's scriptSig field, which is otherwise free for miners to put anything in.
Block-version signalling: BIP34, BIP65, BIP66
A later generation of softforks used the block header's nVersion field for signalling (up to the year 2015). Each of those used a subsequent version numbers (BIP34 used version 2; BIP66 used version 3; BIP65 used version 4).
Whenever 750 out blocks number N-1000..N-1 (so 75%) had the proposal's version number of higher, block N would be subject to the proposal's rules. Whenever 950 out of blocks number N-1000..N-1 (so 95%) did, the next block would be required to also signal for it - resulting in a final lock-in.
Versionbits-based signalling: BIP68/112/113, BIP141/143/144, BIP91
The rollout of relative locktimes (BIP68/112/113) and Segregated Witness (BIP141/143/144) used a different mechanism, which had its own document, BIP9. It specifies using one specific bit of the block header's nVersion field for each proposal, and a finite state machine to determine when to signal and when to activate. Its purpose is/was to permit multiple concurrent proposals to activate, without needing to have one completed before the next one can roll out. This was a downside of the previous mechanism, as it would be impossible to activate the proposal with version 4 without also signalling for activation of the proposal with version 3.
Due to various reasons, segwit was not entirely uncontroversial, and eventual activation happened through a meta-proposal, BIP91. BIP91 itself used BIP9 to activate, which then on its turn made signalling for BIP141/143/144 mandatory, resulting in its activation in August 2017.
The future?
There are a variety of mechanisms available these days, and there is active discussion on what to use for the (likely) next softfork, specified in BIP340/341/342 (Taproot). This includes a variant of the BIP9 versionbits mechanism, called BIP8. An article on the various possible schemes can be found here.
Disclaimer: I am a (co-)author of several of the listed documents in this post (BIP9, BIP30, BIP66, BIP141/143/144, BIP340/341/342).

For 100 blocks, a miner will include its yes or no, number of votes is proportional to the percentage of the hashing power of the network. If you have 20%, you’ll likely be able to vote approx 20 times. Developers make a proposal and miners vote on it. If the majority vote yes, the miners implement the code. Majority in this case is when over 55% of the miners vote for a specific change.
BIPs and this kind of infrastructure for cryptocurrencies in general, has sparked some interesting debates within the community. Some developers fear miners will vote based on vested interest rather than the good of the network.
Additionally there is a growing fear in the community towards the concentration of hashpower (which translates into voting power) as mining pools and big scale mining operations continue to grow. This system is still relatively new, so it will be interesting to see how BIPs progress and ultimately how they affect the development of other cryptos as a result of its successes and failures.


Transaction Relay and trickling in Bitcoin If a node has 100 connections to other nodes and receives a new transaction using a getData request, it sends an inv message to it's 100 connecting peers correct?

Does it also send the inv message to the peer that it just received the transaction from as it is still one of it's connecting peers?

'Messages, in general, are flushed periodically about every
100 ms. However, transaction relaying takes place by “trickling” messages out. Bitcoin randomly selects with a probability
of 1/4 the transactions for an inv message and stalls the remaining transactions. Every neighbor gets a different set of randomly
chosen transactions, each about 1/4 of the currently available
set. Only the randomly selected “trickling node” (cf. addr
message relaying) gets all transactions immediately. The other
neighbors either get it later or already got it from another neighbor. Trickling reduces the overhead and at the same time makes
traffic analysis more difficult, in a similar manner as mixes do
in mix networks.'

I'm having a bit of difficulty understanding how trickling works in terms of transactions. I believed that the process was when a transaction occurs, the node responsible for the transaction would send INV messages to its peers and send the tx if the peers respond with getData.

If a node has 100 connections to other nodes and receives a new transaction using a getData request, it sends an inv message to it's 100 connecting peers correct?

No. It depends on what nodes have sent an inv stating that they have that transaction. When an inv is received, the node will remember what has been inv'd to them by that node so that it does not attempt to send it something it already has. At most, there will be 99 inv messages sent. Since we already know that the peer that sent us the transaction already has it, we don't send them an inv. At minimum, there will be no inv messages sent because all nodes could have already sent us an inv for the same transaction.

  Does it also send the inv message to the peer that it just received the transaction from as it is still one of it's connecting peers?

As stated above, it does not. While there is no rule the explicitly prevents this, it is sensible to not send an inv to someone who has already sent an inv to you for the same thing. This saves bandwidth costs.

  I'm having a bit of difficulty understanding how trickling works in terms of transactions.

For each peer, the node keeps a list of transactions that it is going to inv to it. It sends inv's for transactions periodically with a random delay between each inv. Transactions are selected to go into the inv message somewhat randomly and according to some metrics involving fee rate. It selects a limited number of transactions to inv.

  I believed that the process was when a transaction occurs, the node responsible for the transaction would send INV messages to its peers and send the tx if the peers respond with getData.

The node the creates a transaction treats that transaction like any other it received over the network. For every peer that node is connected to, it adds that transaction to the list of transactions that it will send to that node eventually. Then everything else is as usual. At the next time it is to send an inv message for a particular peer, it chooses transactions to inv, and the transaction it created may or may not be one of those. Once the inv is sent, the other node will respond with a getdata for the things it wants, which may or may not include the transaction it created. Then your node responds to the getdata with the transactions themselves.

it sends an inv message to it's 100 connecting peers correct?

to 99

  Does it also send the inv message to the peer that it just received the transaction from

it is allowed, but there is no reason to do it

  the node responsible for the transaction would send INV messages

no one is responsible for anything


Can i store multiple crypto currencies in one wallet? Is it possible to make a wallet for BTC and store LTC and NMC or other coins in it?

Coinomi Universal HD Wallet will do exactly what you're looking for.

Coinomi is a very secure and lightweight, universal, open-source HD wallet for Bitcoin and many altcoins. At the moment the supported coins are:

Bitcoin
Dogecoin
Litecoin
Peercoin
Darkcoin
Reddcoin
NuBits
NuShares
Blackcoin
Feathercoin
Rubycoin
Digitalcoin
Cannacoin

with more integrations on the way.

Yes and no, the wallet software for each is an independent piece of software built by the community around that single cryptocurrency. It's possible that third party developers have/will develop a multi-currency digital wallet, to date all I have found is http://ufasoft.com/coin/, but I have not used it personally.


Copay wallet no longer available on the Google Play store This URL where the Copay wallet used to be now just shows "We're sorry, the requested URL was not found on this server." Why was it removed? Was there a security issue? Is this going to affect the app installed on my phone?

In early September, Google removed Copay and a number of other Bitcoin wallet apps from the Play Store. I don't think we know why exactly those apps were removed, but things like that do seem to happen from time to time in the crypto world. More recently (late November), it was revealed that a hacker had managed to inject code into Copay that could steal users' wallets. I don't think those two events were related, but if you have funds stored using Copay I'd definitely recommend taking steps to make sure that your version of the software does not have the vulnerability. See here and/or contact BitPay support for more information.

But you have it installed, no? Then what's the problem?

I don't know the official line, but the github repo for it is still there
https://github.com/bitpay/copay

Worst case scenario you can build it from source and recover the wallet (if you saved the private key). To do it on scratch you'll probably need a full node or someone who has one


What is the collective name for Bitcoin, Namecoin, etc? Is there some standard term to describe all Bitcoin-like internet currencies, like Solidcoin, Namecoin and so forth? Like "currency" is to dollar, euro, yen, etc?

distributed digital currency, or distributed digital crypto-currency. the "distributed" bit is a key issue - anyone can make a centralized digital currency, even with crypto thrown in.

I think crypto-currency is the good term.

But personnally I tend to use digital currency because crypto can scare some users.


transaction (s) not going through due to low fees selected I'm having a problem with a bitcoin transaction (not through btcpay, but i don't know where else to turn to). I sent 0.06btc from my wallet to my father (20 hours ago), and stupid as i am, decided to be a cheap bastard and chose the smallest fees. The transaction hasn't gone through and i don't know what todo...
https://bitpay.com/insight/#/BTC/mainnet/tx/ea3536f6fc340a722633525eae720f2814da563fd3ca757c2736e2c92158327f
about 4/5 hours ago, my father activated the option from his side saying he would pay the necessary fees (so he says)  but still nothing happens...
Extra info: my wallet is Copay on iPhone and he's using Bitpay on android phone...
Please help me get my mind at ease, what is supposed to happen here? and in what time frame?
much appreciated for any information, even if it's just instruction on where else to go ask this...

Your tx seems okay now (3 confirmations when I wrote this answer): BlockChair explorer
Next time before resorting to paid service, you can try free BTC Accelerator such as BitAccelerate.


Blockchain.info Receive Payments API problem I am building a little online app to accept bitcoin payments in my website. I have a blockchain.info wallet and I am following their Receive Payments Api, which can be visited here: http://blockchain.info/api/api_receive

The monetary part works great, but the HTTP Callback Notification does not take place and my online store is not notified of the payment. However, the TEST callback does work.

I think it is a problem on his application.

Has anyone implemented the "Receive Money API" successfully?
Is there any other alternative for received instant payment notifications?
(To several different addresses)

A friend of mine reports the same issue. We need a little help :)

Thanks!

It is working now! Issue closed. Great service provided by BlockChain.


How can I exactly use both the rpc API of Bitcoin and the rpc API of Bitcoin cash on the same server or machine? I've looked for an exactly answer but I really couldn't find it.
So can someone let me know the why of doing what I'm asking correctly?

if you don't have Bitcoin-core and bitcoin cash already installed alongside, follow my answer in here to install Bitcoin-cash alongside Bitcoin-core.

It's so important creating a different username than bitcoin username because bitcoin and bitcoin cash use the same directory.

Now login to Bitcoin username and edit this file ~/.bitcoin/bitcoin.conf

so it becomes like that:

rpcuser=myusername
rpcpassword=myRPCpa$$word
daemon=1
server=1
rpcport=5345

in here we are using different RPC port to bitcoin core. to know more about bitcoin config see this website.

Now, do the same thing to Bitcoin-cash, and everything should work as it supposed to be.

if you have a firewall enabled, don't forget to allow chosen ports.

You can but u will need to run bitcoin and bitcoin cash server on a separate machine or same machine (if same machine, you will have to do little more config).


Exchanges and security How can I ensure that my crypto-assets are secure when trading in a certain exchange? Even when I have my private wallet, I should deposit into theirs before trading.

That is the risk you take when giving someone else control of the private keys to spend your coins. When you transfer them to an address in custody of a centralized exchange, that means they have the corresponding private keys to spend it. You need to do your own research and determine if the exchange has good security measures to protect from breaches.

Many decentralized exchanges let you retain control of the private keys, but you also have to do your research on the software implementation to make sure it's design is secure with your keys.

This question is not as simple as it may seem. Actually, the answer lies way deeper then it seems to be. To understand how to be sure that your assets are safe on this or another exchange, you need to find out which security means are offered by chosen trading platform. Sure thing, you need to deposit a certain amount of crypto there before trading. No one can trade straight from hardware or paper wallet :) But if you trust chosen platform enough to trade there, why don’t to deposit your coins to their storage either.


Why can the same 12 words produce different seeds in an Electrum wallet file? I was looking through an Electrum wallet file (from Electrum 1.9.6 for Windows if it matters) trying to understand what information was contained in it, and I couldn't initially figure out exactly where the private keys were stored (or even if they were perhaps stored in some other file).  I'm guessing the "seed" field in the default_wallet file contains sufficient information for the private keys, public keys, and 12 word mnemonic to be generated.  Am I right so far?

To experiment a bit more, I wanted to see if 2 wallet files that use the same 12 word mnemonic would be identical.  Not surprisingly, when I did not encrypt the wallets, the same mnemonic appeared to lead to identical wallet files.  However, I also tried encrypting each wallet with the same password, and to my surprise, the files had different values in the "seed" field.  This surprised me, so I'm wondering if this is expected behavior and why is this happening?

It's actually a good question. Let's take a look at what is happening. First, Electrum hashes your mnemonic to generate a seed. The seed indeed contains all the information necessary to generate the Master Public Key and the Master Secret Key, first being used to generate the sequence of public keys (adresses) and the second being used to derive a secret key from a public key (actually it's slightly more complex). Then, Electrum saves the wallet file, which contains the seed and the keys being actually in use, the whole sequence of key pairs unless it hits 5 consecutive unused adresses. It can store it either unenrypted or encrypted. In the first case, the seed value in the file will always look the same, as will private keys. In the second case, however, they won't. Why? The Electrum documentation says:

  Electrum uses AES-256-CBC to encrypt the seed and private keys in the wallet.

What does it mean? AES-256 is simply a block cipher. It takes a block of data (128 bit in this case) and a block of key (256 bit) and outputs 128 bits of encrypted data. But it is not what Electrum does. Actually, noone uses block ciphers like that and noone ever should. Instead, so called modes are used. In our case it is Cipher Block Chaining (CBC) mode. Electrum first generates a random initialization vector (IV), mix it (by exclusive or operation) with first 128 bit of input and uses AES-256 on this mixed block to produce first encrypted block. For any subseqent block it does the same, except instead of IV it takes previous encrypted block to mix with the plaintext block. The IV is saved alongside with the file. Finally, that's why you always arrive with a different seed value in a file, even when using the same password (which results in the same key for AES-256-CBC encryption [1]) -- a different IV is used each time.

[1] It is not probably the case either, as Key Derivation Function is likely to be used to deliver a key from your passphrase, in which case additional random salt value is added to the passphrase before hashing it and saved alongside, similarly to the IV.

The seed is the key that is taken to derive all your addresses deterministically. The encryption is to protect the seed https://electrum.org/faq.html#wallet-encryption

https://electrum.org/faq.html#seed


Can you send partial amounts of zcash to a zaddress or do you have to send all of it to a zaddress? Reading the tutorial online, they say to use: z_sendmany to send to a z address. But can one send partial amounts to a zaddress from a taddress? Also what if one wanted to send partial amounts from a zaddress to a taddress/zaddress? Is this doable without using z_sendmany option?

z_sendmany can send from either a t or z address to a t or z address, and yes you can send any fraction of the amount from the source t-addr

-@radix42, zcash contributor


Given a Tx message, how does one calculate the fee paid for the transaction? Given a Tx message, how does one calculate how big a fee one paid for the transaction?

Use the following pseudocode:

TotalOutputValue = 0
For each Output in tx_out array
  TotalOutputValue += Output[value]
TotalInputValue = 0
For each Input in tx_in array
  PreviousOutput = Input[previous_output]
  PreviousTransaction = PreviousOutput[hash]
  OutputIndex = PreviousOutput[index]
  Look up the transaction with hash PreviousTransaction
  Output = The output with index OutputIndex in that transaction
  TotalInputValue += Output[value]
Fee = TotalInputValue - TotalOutputValue

This isn't possible with just the message.


MULTIBIT: How to restore wallet with following information? I am a noob to this whole BTC thing, so please bear with me.

I reformatted my computer and lost everything on it.
I decided I want to restore my multibit wallet but I only have the following info:

Secret words
Old password

I do not have a backup of the wallet file or whatever it is called.

My question is, how do I reopen this wallet with that information? It has a lot of BTCs it in and I really want to salvage it.

Thanks for reading!

The MultiBit HD wallet can be restored with just the seed words. Click "Restore" on the unlock screen and follow the instructions.

I would start with a data recovery service. As far as I know the password will only unlock the backup file, it's like having the key to a lockbox but not the lockbox!

A data recovery service might be able to retrieve the backup file (maybe!)


How to use Bitcoin Wallet with MtGox? I downloaded the Bitcoin Wallet from bitcoin.org; it's on my PC with a $0 balance. I want to purchase some bitcoins with dollars on MtGox, but how do I make it such that my purchase shows up in my wallet?

I have an account on MtGox, but I don't see anything under Funding Options where I can link my wallet with the MtGox transaction, then again, I've never purchased Bitcoins so maybe I'm misunderstanding something.

You need to buy bitcoins on MtGox using another currency. These bitcoins will show up on your MtGox account.

You can then withdraw these bitcoins from your MtGox account to your own wallet. You can find this under Funding options > Withdraw funds > Bitcoin. Enter the address your wallet gives you and MtGox will send your coins to that address so that they show up in your wallet.

I live in the uk and am trying to purchase bitcoins from mt.gox. I dont know what option to use for this, it says there is a bank transfer option and OKPAY option(which seem to be the only available options for citezens). |Can anyone help???

Thanks