Sending from CryoBit Cold Storage I just purchased a pair of CryoBit cards and it occurred to me that, while I know how to send money to a cold storage wallet, I am not exactly sure how to send money out.  I assume I import the private key into an online wallet, like BlockChain, and then do a full sweep to another address in the BlockChain wallet.

But if I import the CryoBit private key doesn't that expose the private key on my CryoBit card, reducing the full trust of that card?  I've read on other answers that once a cold storage private key is imported into an online wallet that wallet should never be used again...  At $30 per CryoBit card that seems like an expensive waste to discard the card after one use.

Also, if I do import the private key on the CryoBit card into BlockChain, do I have to do a full sweep or can I just send some of the CryoBit private key funds out?

Say for example I have $1000 on my CryoBit card and I import the private key into BlockChain.  Then I send $500 to an external address leaving $500 on the CryoBit address.  Then to clean up the cold storage I delete the private key from BlockChain.  Will I still have a trustworthy cold storage wallet in CryoBit with the remaining $500?

Yes, you would simply import the private key to your client or online wallet.

I think the purpose is to move funds to the address on the card, then keep the card in a place somewhere safe and not use it. For everyday use, I think high grade steel, ceramic cast engraving, fireproofing, etc. is overkill.

You can always send more money to the address after you have swept the balance, but like you said, using it once may compromise the private key.

However, I don't see why you can't use the card to send to an address in your Multibit wallet (or other client). This means only your own computer "saw" the private key. As long as you feel comfortable with that, I see no reason why you can't reuse the card. But, and I am not sure about the following, I think private keys change with every transaction, which might be why you have to sweep the address, rather than just take a portion, and also why you cannot reuse it.

I will post more once I learn more on this topic. Also, another user may clarify in the meantime.


My private key is not recognized. I am trying to retrieve my private key by debugging the address that was used for sending bitcoins to my wallet in the Bitcoin Core App. However, when trying to import this private key in another app it does not recognise it.Do you know where the problem might be?
(Another thing is that I do not have enough space to sync my wallet, can this cause the issue?!) Thanks for help.

There's many different types and formats for Private Keys.

For example, a single address private key(WIF) should look like:

5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ

other types:

Hierarchical Deterministic (HD) Wallet Keys

  Wallet software may use a BIP 32 seed to generate many private keys and corresponding public keys from a single secret value. This is called a hierarchical deterministic wallet, or HD wallet for short. The seed value, or master extended key, consists of a 256-bit private key and a 256-bit chain code, for 512 bits in total. The seed value should not be confused with the private keys used directly to sign Bitcoin transactions.

Example:

xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi

Mnemonic phrase
A mnemonic phrase, mnemonic recovery phrase or mnemonic seed is a list of words which store all the information needed to recover a Bitcoin wallet. Wallet software will typically generate a mnemonic backup phrase and instruct the user to write it down on paper. If the user's computer breaks or their hard drive becomes corrupted, they can download the same wallet software again and use the paper backup to get their bitcoins back.

Base58 Wallet Import format

  When importing or sweeping ECDSA private keys, a shorter format known
  as wallet import format is often used, which offers a few advantages.
  The wallet import format is shorter, and includes built-in error
  checking codes so that typos can be automatically detected and/or
  corrected (which is impossible in hex format) and type bits indicating
  how it is intended to be used. Wallet import format is the most common
  way to represent private keys in Bitcoin. For private keys associated
  with uncompressed public keys, they are 51 characters and always start
  with the number 5 on mainnet (9 on testnet). Private keys associated
  with compressed public keys are 52 characters and start with a capital
  L or K on mainnet (c on testnet).

Mini private key format Some applications use the mini private key format.

  Not every private key or Bitcoin address has a corresponding
  mini private key - they have to be generated a certain way in order to
  ensure a mini private key exists for an address. The mini private key
  is used for applications where space is critical, such as in QR codes
  and in physical bitcoins. The above example has a mini key, which is:
    SzavMBLoXU6kDrqtUVmffv

You should know which private key they're asking for and you are sending the correct one.

Importing private address key (WIF) command should be like that:

importprivkey yourPrivateKeyInWalletImportFormat "TheLabelThatIWant"


Transaction doesnt get confirmed I use a blockchain wallet, and I tried to transfer some bitcoin from my blockchain wallet to my paxfull wallet, but its been stuck for like 3 days now. I used the recommended fee, I don't know why it takes so long.

Transaction: https://live.blockcypher.com/btc/tx/731f8f345f008a0d5f777bc92752603bf7ef5360d6963efd2a08f8f81de2a634/

Today I looked up the transaction again, and the 'received time' restarted - its only 17 hrs now even though its been three days already. Anyone knows whats up with that?

I think the transaction could take a long time because the fee you paid is to small. Also, you can try to bump the fee through your wallet.


blockchain account has watch onl on i blockchain have been zero help. I need to know how I can get a private key to release my funds

I transferred funds from the exchange blockchain lost it. I had to find it myself I transferred it to imported wallets and had a watch only tag on it. I need these funds, but need a private key how do I get one

I am not sure that I understood the question well. Would that be correct:

I transfered from some exchange my funds to an address, which I imported as watch address on blockchain.info. Now I see funds but I can not spend it, what should I do?

If that questions is the same what is asked and user reports that blockchain.info has not helped at all, then I would assume that blockchain.info is not the owner of the address that was imported. Here is what you could do:

To which address did you send your funds? If it is address that you somehow created with some application like bitcoin core, multibit, .... , then their application/user data folder must be still present on your pc (even if you uninstalled it). If that is the case and a wallet address you sent funds too is in ie. bitcoin core, you can export your private key if you write in the console dumpprivkey YourBtcAddress
If you imported exchange's wallet address, then funds would be still visible on exchange. In that case exchange would still have your coins and could help you
If this address has never belonged to you, then you do not have the private key and you can not do anything beside to contact the owner of the address.
Bruteforce is not really a option, but in theory it is possible. However, this is a point that you actually should forget.

I hope it helps. I see here only 3 possibilities, address belongs to you (you can retrieve your funds), address belongs to exchange (you still could get your funds) and that it belongs to somebody you do not know and you have no private key (in that case you can not do anything to get your funds back), maybe you could ask on internet who is the owner but I doubt any repl will come.


What is the right way to create a MultiSig? After following https://github.com/wobine/blackboard101/blob/master/wbn_multisigs_pt2_spend-funds.py for creating a MultiSig, I end up with a Multisig address.

On Validate Address it shows as valid but isMine:false.
I have send some test coins, still list unspend shows up as an empty array.
I validated the public addresses and all belong to the same wallet.
Txn shows up with confirmations on blockchain.info

So, my question is, is it the right way to create it? Or am I missing something.

Use the addmultisigaddress nrequired ["key",...] ( "account" ) JSON-RPC command in order to create a p2sh address that will be considered your own.


Can I restore a Litecoin wallet with Public / Secret? I apogolize if this has been asked, I have spent several hours trying to figure this out.

I found an old document of my with a Litecoin Public and Secret key.

I don't have a *.dat file, is this a problem?
I do have The Public key is 34 characters
I do have The Private key is 51 characters
I am using Litecoin Core Qt - Wallet (Which I used in 2015).
The blockchain is downloaded (About 10GB), yet it just sits here
Q1: Do all I supply is my private key?
Q2: Is there a way to check balance with any of my keys, or conversions below?
Q3: Are coins lost if you don't have the .dat file anymore?

In the Application, I can run the Debug > Console and run:

# (This is a fake address, but it's in this format)
importprivkey "6vpo4RFWLcGhk4VsdFk34K3243K3kdsk4k23k32kAkasdkewkwe" "Jesse"`

The above gives me a "Receivable" key under Receiving Address which is identical to my Public key (34 characters).

I used some Online Bitcoin tools to convert the Public key, I thought I might need to run importpubkey, key it's must be there since it's visible in my Receiving Address?

I'm not sure what for but I was able to get:
(a) (Address to Hash): 40 character hash
(b) (Hash to 160 Address Bitcoin, using a): 34 characters
(c) (Pubkey to Hash, using a): 40 characters

I'm not sure what all this means, this is terribly confusing I don't remember how I did this in the past. If anyone could give me a plain answer I'd really appreciate it and I'll be sure to tick it off as correct and settle the issue :)

All you need to do is importprivkey. The software will handle everything else. Everything else it needs can be derived from the private key, and it will do so when you give it a private key.


BIP 84, BIP 173 Implementation in BitcoinJ Can BitcoinJ (Java) supports complete implementations of BIP 173, BIP 84?
How can segwit address can be created using BitcoinJ for SPV wallet?

i don't think bitcoinj support BIP-173 but you can read more from
Bitcoinj repo

For Segwit
 Bitconj 0.14 branch is ~2 years old and has got no support for segwit at
all. For receiving on native Segwit addresses, you can use the master
branch. For receiving on P2WPKH-P2SH, I'm not sure. If master doesn't
work you can try the segwit branch (but that one isn't tested well).

  Warning: master currently has no support for spending segwit outputs.
  So only use testnet or really small amounts for now.


Why Block Chain not Transactions Chain? I believe that, for some people, the term Block is a sort of holy notion. However, there exist yet some block-free blockchains such as Libra (Sometimes referred to as Zuck Buck).

  Unlike previous blockchains, which view the blockchain as a collection
  of blocks of transactions, the Libra Blockchain is a single data
  structure that records the history of transactions and states over
  time.

It seems that the Block concept is a sort of tradition, neither more nor less. Would you please clarify the reason behind the invention of Blocks?

Would you please clarify the reason behind the invention of Blocks?

When determining who owns what money, the ordering of transactions becomes important. If I only have $10, and then tell both Alice and Bob that I paid $10 to them, who will rightfully own the $10? Some sort of clock/timestamp is needed, in order to determine who received the payment first, and thus has rightful claim to spend it in the future.

If you just trust some central party to tell you who owns what, then this isn't really much of a problem. The central server can update the ledger according to the order in which they see transactions published, and all the users can follow along.

However, it becomes very tricky to establish a reliable timestamp/ordering of transactions across an untrusted network. How do you know which history is correct? How do you know all of the other nodes will agree with what you think is correct? These problems are formalized as the Byzantine General's problem, and the invention of Bitcoin provided a novel solution to it.

Since we need a way to order transactions, each block can be thought of as 'one tick of the clock', and with each tick of the clock, the state of the ledger is updated. This sort of step-by-step update of the ledger is integral to the function of a monetary network, it is difficult to imagine how a ledger might be maintained if there were not some sort of method to order transactions chronologically.

So in a very general sense, this is 'why blocks were invented'. If you want to just trust some network admin(s) to tell you the state of the ledger, then perhaps you can forgo blocks entirely, but you will also forgo many of the important and interesting properties of the Bitcoin network (as is the case with Libra).


Why this transaction is invalid? I issued this transaction on testnet (for a homework later solved with another script). python-bitcoinlib validates the transaction but when i submit it to blockcypher it gets rejected with error:

{"error": "Error validating transaction: Error running script for input 0 referencing e96a1ae8aaff2920601fdfd8cb12289d77bad2a4d595e2093d9d828107023705 at 0: Script was NOT verified successfully.."}

My first transaction scriptPubKey: (transaction hash: e96a1ae8aaff2920601fdfd8cb12289d77bad2a4d595e2093d9d828107023705)

    [2, j1_public_key, j2_public_key, j3_public_key, 3, OP_CHECKMULTISIGVERIFY,
      1, my_public_key, p2_public_key, 2, OP_CHECKMULTISIG]

And the failed transaction scriptSig is:

[0, my_sig, 0, sig_j1, sig_j2]

and failed transaction hex is:

01000000010537020781829d3d09e295d5a4d2ba779d2812cbd8df1f602029ffaae81a6ae900000000dc0047304402206558714362318ff5aa05bd1849b82726f4d3ab2545bc15379b73de1fca4ef6c002206ea00f130ea54d6e85f233a3d031bdf03d35a10319362fe41866d5c59c7d7b1b0100483045022100b9daea5e3da41e305b2a283825c45c7eef169364413af043115797124033f1ce022004ae32ecab1937fac90e904be684f893ccdd1d925d6b898aef7f275dcb9791ea01483045022100e54c2f805c5ba5025c375053c4604910a30e5bf86eb16a5c9ba35cd9f817aef802201f92da76cf31562ae28e527bd537ecf930139224a8d91d10886383958aadd6bd01ffffffff01b8ed0400000000001976a914a8305457f8965a5a60a8ebe1968fb9019b42fe6c88ac00000000

I have one observation, not sure if this leads to the error. Multisig scripts start with a hex "0", which compensates for a very early "off by one error" in the execution routines of the checksig routines. An element too much was popped off the stack. This "bug" is so long in the system, that everyone got accustomed to it, and removing it requires an enormous effort. So it became a feature :-)
Looking at your tx, I see the third signature doesn't have this zero:

TX_IN[0] Script Sig (uchar[])
1) 0047304402206558714362318FF5AA05BD1849B82726F4D3AB2545BC15379B73DE1FCA4EF6C002206EA00F130EA54D6E85F233A3D031BDF03D35A10319362FE41866D5C59C7D7B1B01
2) 00483045022100B9DAEA5E3DA41E305B2A283825C45C7EEF169364413AF043115797124033F1CE022004AE32ECAB1937FAC90E904BE684F893CCDD1D925D6B898AEF7F275DCB9791EA01
3) 483045022100E54C2F805C5BA5025C375053C4604910A30E5BF86EB16A5C9BA35CD9F817AEF802201F92DA76CF31562AE28E527BD537ECF930139224A8D91D10886383958AADD6BD01

which is disassembled sig1:

    00: OP_0, OP_FALSE:      an empty array is pushed onto the stack.
    47: OP_DATA_0x47:        push hex 47 (decimal 71) bytes on stack
    30: DER_SEQUENCE_0x30:    type tag indicating SEQUENCE, begin sigscript
    44: DER_LENGTH_0x44:      length of R + S
    02: DER_INT_0x02:         type tag INTEGER indicating length
    20: DER_LENGTH_0x20:      this is SIG R (32 Bytes)
        6558714362318FF5:AA05BD1849B82726
        F4D3AB2545BC1537:9B73DE1FCA4EF6C0
    02: DER_INT_0x02:         type tag INTEGER indicating length
    20: DER_LENGTH_0x20:      this is SIG S (32 Bytes)
        6EA00F130EA54D6E:85F233A3D031BDF0
        3D35A10319362FE4:1866D5C59C7D7B1B
    01: OP_SIGHASHALL:       this terminates the ECDSA signature (ASN1-DER structure)

and sig2:

00: OP_0, OP_FALSE:      an empty array is pushed onto the stack.
48: OP_DATA_0x48:        push hex 48 (decimal 72) bytes on stack
30: DER_SEQUENCE_0x30:    type tag indicating SEQUENCE, begin sigscript
45: DER_LENGTH_0x45:      length of R + S
02: DER_INT_0x02:         type tag INTEGER indicating length
21: DER_LENGTH_0x21:      this is SIG R (33 Bytes)
    00B9DAEA5E3DA41E:305B2A283825C45C
    7EEF169364413AF0:43115797124033F1
    CE
02: DER_INT_0x02:         type tag INTEGER indicating length
20: DER_LENGTH_0x20:      this is SIG S (32 Bytes)
    04AE32ECAB1937FA:C90E904BE684F893
    CCDD1D925D6B898A:EF7F275DCB9791EA
01: OP_SIGHASHALL:       this terminates the ECDSA signature (ASN1-DER structure)

and sig3:

48: OP_DATA_0x48:        push hex 48 (decimal 72) bytes on stack
30: OP_SEQUENCE_0x30:    type tag indicating SEQUENCE, begin sigscript
45: DER_LENGTH_0x45:      length of R + S
02: DER_INT_0x02:         type tag INTEGER indicating length
21: DER_LENGTH_0x21:      this is SIG R (33 Bytes)
    00E54C2F805C5BA5:025C375053C46049
    10A30E5BF86EB16A:5C9BA35CD9F817AE
    F8
02: DER_INT_0x02:         type tag INTEGER indicating length
20: DER_LENGTH_0x20:      this is SIG S (32 Bytes)
    1F92DA76CF31562A:E28E527BD537ECF9
    30139224A8D91D10:886383958AADD6BD
01: OP_SIGHASHALL:       this terminates the ECDSA signature (ASN1-DER structure)


Self assembling of hardware for bitcoin mining Are there any guides or material available for helping us build dedicated ASIC hardware for bitcoin mining .

You can't build ASIC hardware yourself. It costs hundreds of thousands of dollars to develop an ASIC and, by definition, you can't buy them off the shelf. (The "AS" stands for "Application Specific", that is, it must be designed for a particular purpose.)


Getting the wrong hashes for bitcoin core packages I've been playing around learning more about Bitcoin and was following this tutorial from 21.co on digital signatures.

When I open the SHA256SUMS.asc file and try to verify the packages, I get different hashes than what's in the file.

curl -O https://bitcoin.org/bin/bitcoin-core-0.11.0.tar.gz

shasum -a 256 bitcoin-core-0.11.0.tar.gz

This gives the following output:

69b00985c84e6633cc2e518914436ce55666cc10d1edf15ee442758d9f8d5219  bitcoin-core-0.11.0.tar.gz

Which is very different from what is in the file:

c7a5e496d7c31bdc10d2c0c79dfcf9aca69f9520579917c7d3e95868b2127707  bitcoin-0.11.0-osx64.tar.gz

NOTE: I'm using a different command then what is mentioned in the tutorial for checking the hashes. shasum -a 256 instead of sha256sum.

Am I doing something wrong here?

You are hashing the 404 page returned by bitcoin.org. You can see this by running:

$ curl -s https://bitcoin.org/bin/file-does-not-exist | sha256sum
69b00985c84e6633cc2e518914436ce55666cc10d1edf15ee442758d9f8d5219  -
$ curl -s https://bitcoin.org/bin/file-does-not-exist2 | sha256sum
69b00985c84e6633cc2e518914436ce55666cc10d1edf15ee442758d9f8d5219  -

You should instead run

$ curl -O https://bitcoin.org/bin/bitcoin-core-0.10.0/bitcoin-0.10.0.tar.gz
$ sha256sum bitcoin-0.10.0.tar.gz # shasum -a 256 would also work

This gives me

a516cf6d9f58a117607148405334b35d3178df1ba1c59229609d2bcd08d30624  bitcoin-0.10.0.tar.gz

which is the SHA256SUM listed in the associated SHA256SUMS.asc file.


Setting up Bitcoin Core Wallet Trying to set up Bitcoin Core Wallet.

I've started blockchain synchronization 4 times and each time it has reached a certain percentage and then failed. I've followed instructions on the website, tried running it in pruned mode, tried running it with reindex. Is anyone else facing the same problem?

Worse still, it restarts downloading every block after it fails. Any ideas? Is there a way to force a restart at a location. This is very frustrating. And have to say this is poor quality software. Bitcoin has no future if just setting up a full wallet is so difficult.

Debug.log

Thanks, that was helpful.

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

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

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

Thanks for your help again MeshCollider.


Using the bitcoind -testnet test network and automatically creating test wallets I am developing some bitcoin based services and I am interested of automatizing testing for them.

bitcoind seems to come with -testnet option. What are the best practices of using this?

How to create wallets for tests - should they be persistent or temporary
How to spoof balances of the wallets
How to make fake payments and how to debug them - does there exist anything akin blockchain.info or block chain explorer for them

Each instance of bitcoind running with the testnet option creates its own wallet.  You cannot spoof wallet balances, but you can mine coins on testnet with minimal hardware as the difficulty resets to zero (or 1) on a regular basis.  You can also get testnet coins from faucets online.  You create payments and addresses on testnet the very same way you would with the non-testnet version of bitcoin (either via the JSON RPC interface or CLI commands).  Also blockexplorer for testnet is located here http://blockexplorer.com/testnet


The BTC shows 10^8 times more than what is received in the account I work with Java/Maven/JSP app with BitcoinJ and I have transfer about 0.0048 BTC from a testnet faucet. However, after receiving, I see that my account has balance of 480000.00  BTC.

This is the method I have used to get the Satoshi Coin.

public Coin getBalance() {
        return balance;
    }

I have checked the code and at least my backend part looks normal to me. How to approach to this problem?

Apparently the app shows the amount as Satoshi (the smallest unit) instead of BTC. For internal calculations that's ok because it avoids rounding errors, but for input and output you should scale by an appropriate factor (10^8 for BTC, or 10^5 for mBTC).


Why is it not possible to replay transactions? What if a miner takes a transaction which is already on the chain and adds it to a new block to earn the fee once more?

Which mechanism prohibits replay attacks of this type?

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

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


My Bitcoin.com wallet is asking for a password to confirm send that was never established. So im screwed or file a class action for this? Wtf is this. Password was never established so i cant send this or get it back. So who is the dummy(besides me) that creates something with no way to retrieve your funds? This is ridiculous

If you really never set a PIN, and obvious things like "0000" don't work, then this might be a bug in the app software.  You could report the bug at https://github.com/bitcoin-com/wallet/issues, and include full details about what you did.  They might have suggestions about what to do, but there may or may not be a workaround.

I suggest that you avoid expressing anger, frustration, or legal threats in your bug report.  The developers probably want to fix the bug, and they would rather work with people who seem motivated and cooperative.  If you seem like a difficult person to work with, they won't want to, and you can't force or intimidate them into doing so.

You could try deleting or resetting the app and restoring it using the 12-word recovery phrase that you created when you first installed the wallet.  It should also be possible to use the recovery phrase to access your coins from different wallet software.

If you didn't save the recovery phrase, or you have lost it, then you may have just learned an expensive lesson about the importance of backups.  Software bugs are just one of the many things that can go wrong when using Bitcoin; you can also lose or break your device, get coins stolen by malware, etc, etc.  These are the risks you take, and backups are one of the prudent ways to reduce those risks.  (Actually setting a PIN is another.)

As to whether you can sue, you'd have to consult a lawyer who knows about consumer law in your jurisdiction.  Personally, I doubt that you would be successful.  It's likely that the app's terms of use were carefully written by Bitcoin.com's lawyers to shield them from legal liability in case of software bugs.  In general, when you use free software, you should assume that it's at your own risk, and that nobody will compensate you if things go wrong.


What files do I need to copy to a new computer to prevent having to sync with the network? I think this used to be the blk0001.dat file, but it seems that the block chain is now (since version ?) moved to the blocks/ folder, containing a lot of blk* files, as well as an index file and multiple rev* files.

What files do I have to copy to a new machine if I want it to be synced up?

I know I will have to run with -rescan the first time after I changed the block chain files. And I know that the blocks are not verified (but they come from another machine I own, so there are no trust issues).

Please mention the current version number in your answer to not confuse people if the file configuration would change over time.

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

This might be of some help.I followed that and successfully moved the files from C:\Users[username]\AppData\Roaming\Bitcoin\ to E:\BitcoinData.

Just cut and paste the whole content of from the Bitcoin folder (C:\Users[username]\AppData\Roaming\Bitcoin) and set the new target as

"C:\Program Files (x86)\Bitcoin\bitcoin-qt.exe" -datadir=d:\BitCoinData and that is assuming you have bitcoin Qt installed in your C: drive.Change the path accordingly.


sent bitcoin with a low fee to an address i cant access anymore whats up, as the title says, i sent bitcoin with a super low fee, after a couple of days I lost access to the account with the wallet i was sending to, and the bitcoin is still unconfirmed.

i was wondering if there was a way to cancel the unconfirmed transaction without having access to the wallet it is being sent to

If the fee was so low it may get rejected back to the address that sent the BTC. But you will have to wait a day or two more to see if that happens. Unless it confirms first, in which case, you'll need to get access to the RX address.


Knowing if a public address is spendable by an HD seed? I want to know if an address is spendable by an HD seed and for that purpose I am using the following command:

> bitcoin-cli getaddressinfo 3LFc64RRd96ejjYvm14KaogBF9fmeNmePW | jq '.solvable'
false

However as mentioned here and here it's impossible to know with 100% certainty that an HD seed can't spend from a certain address as one would need to generate infinite addresses. To counterbalance that I discovered a command that increases the 'search space':

> bitcoin-cli keypoolrefill 1000

However, I am not sure getaddressinfo is sentitive to this keypoolinfo parameter or is just checking the addresses so far generated (the ones that can be obtained via bitcoin-cli listreceivedbyaddress 0 true). I could test this with a second node but my other node might be using another seed to generate new addresses. Even though I used sethdseed, I see a different xpriv when dumping the wallet.

Trying to enumerate all private keys using Bitcoin Core's wallet is extremely inefficient. Furthermore, any address that you generate in Bitcoin Core will inherently come from a HD seed because Bitcoin Core is a HD wallet and uses a HD seed. You also aren't going to get any information for a HD address that is not part of your wallet.

  However, I am not sure getaddressinfo is sentitive to this keypoolinfo parameter or is just checking the addresses so far generated (the ones that can be obtained via bitcoin-cli listreceivedbyaddress 0 true).

It is "sensitive" to the keypool. When you add keys to the keypool, they are actually generated and saved to the wallet file along with some metadata. getaddressinfo looks up whatever metadata is available regardless of the associated key being in the keypool or not.

  I could test this with a second node but my other node might be using another seed to generate new addresses.

Unless you have explicitly set a specific seed, then it most definitely is. Otherwise that would be a security vulnerability and anyone could steal anyone else's coins if they all used the same seed.

  Even though I used sethdseed, I see a different xpriv when dumping the wallet.

You need to provide the seed of your first wallet. Otherwise it will generate a new random seed and use that.


Where can I find a list of reliable Bitcoin full nodes? I already know about this list  but it does not seem to be reliable or even up-to-date. Is there any other place where I can find a better list?

Best place is https://getaddr.bitnodes.io/nodes/leaderboard/

Nodes are rank according to various parameters


Tools for converting recovery phrase? I have a wallet on Breadwallet which I wish to move to Mycelium. Both apps support recovery phrases, however Breadwallet uses BIP39 phrases, while Mycelium uses BIP44 phrases. Is it possible to convert from one format to the other, and if so, could you point me to any tools that can do this?

I think this is what you are looking for: https://coinomi.com/recovery-phrase-tool.html
Cheers.


How can I cancel and replace a Transaction that never gets confirmed? According this this WikiPage, a MultiSigTransaction that doesn't include a fee may never get included in a block.

Since I've read that replacing Transactions (by version number or any other feature) isn't enabled, how can I expedite the replacement and updating of this?

You could import the private keys used into another wallet and spend the funds there.  For instance, on Blockchain.info/wallet you simply do Advanced -> Import and import the private keys (which can be exported from Bitcoin-Qt's debug console).


BTC not received after sending I have a transaction sent from Coinbase on 12 Dec 2017.  i can see it on the blockchain, fees taken but the rest is unspent.

How can I force the transaction to complete.
Why didn't it complete

Answera in laymans terms please as I'm new to this

Thanks

Unspend just means that the part you received (this part is called a transaction-output) is not spend yet. Your transaction is complete.

It would show spend if you e.g. payed someone with your transaction-output. Then they would have an unspend transaction output.


What happens to the difference in compatible buy and sell orders on bitcoin exchanges? Let's say Alice is selling 1 BTC for $10,000. Soon after Alice makes her sell order, Bob places a buy order for 1 BTC for $10,010. These two orders are compatible, since Alice would gladly take an extra $10.

My question is, what happens to that $10.

Does Alice receive $10,010 even though her sell order was only for $10,000?
Does Bob only have to pay $10,000?
Maybe they split it down the middle, Bob only has to pay $10,005 and Alice receives the same?
Does the exchange just keep the difference? Is this how (in addition to the fees) exchanges profit?

To answer you:

  Does Alice receive $10,010 even though her sell order was only for
  $10,000?

No, Alice will receive $10,000 only

  Does Bob only have to pay $10,000?

Yes

  Maybe they split it down the middle, Bob only has to pay $10,005 and
  Alice receives the same?

No, that is not how an exchange works. The largest bid get's filled first. And the smallest sell order get's filled first.

  Does the exchange just keep the difference? Is this how (in addition
  to the fees) exchanges profit?

No, the exchange is only entitled to get fees for the transaction unless specified otherwise.


Smart contracts in bitcoin Is it possible in bitcoin to start a smart contract preloaded with some amount of money. And if some other user is ready to pay to the smart contract a certain amount of money, the smart contract should release the preloaded amount of money in the smart contract to the user who paid to it ?

Had you seen http://rootstock.io/ ?
Keep in mind that the bitcoin script language is not turing complete as the Ethereum VM


What is 'Dvn2' stand for? I started a regtest bitcoin network. Then I found most of my UTXOs are sending to a bitcoin address 'msvXYdtdhgWefyKPym2HnSmTUkxUsiDvn2'. The address is belongs to account 'Dvn2'. What is 'Dvn2' stand for?

Nothing. Account names don't mean anything. You must have given it that name.

There is no relation between the address and the account name. I assume you accidentally called an RPC passing Dvn2 as name.


How much money is a double spend worth? I keep hearing people say that 0 confirmations are safe at small dollar amounts because it would take more money to do a double spend hack. At what value does it start to become unsafe to trust a 0 confirmation transaction?

The easiest way to do a double spend against someone who accepts zero-confirmation transactions is with a Finney attack. To perform a Finney attack, you must first mine a block and be willing to risk losing that block. So the answer is that if the value of the transaction is small relative to the risk of losing a block reward, you don't have to worry about the attack.

Using today's numbers: An attack with a one minute window has about a 10% chance of costing you a block. The block reward is 25 Bitcoins and a Bitcoin is around $600. So for amounts much less than $1,500, you don't need to worry about a double spend. Nobody's going to risk losing $15,000 to steal $1,500.

Note that this assumes you know how to accept zero confirmation transactions! You must watch at multiple points in the network and ensure the fee is adequate.


Can multiple wallets send 1 transaction for the combined balance? I have multiple wallets, I want to transfer all of the money to 1 wallet of some other person. But I want to do this as one transaction to avoid fees. Is this possible with bitcoind API?

If you are using a wallet which supports importing private keys, such an Bitcoin Core, you can just import the private key of your other wallet: https://bitcoin.stackexchange.com/a/5944/14325


Is it possible to transfer BitCoins from BlockChain to CoinBase?is there any transaction fee invloved? I am thinking of transferring my bitcoins from BlockChain to CoinBase

is there any transaction fee invloved?

There will be a fee because the transaction will be broadcast and saved to the Bitcoin blockchain. You can probably start the transfer process on Blockchain and they will show you a preview of what they estimate the fee to be. It all depends on the size (in bytes) of the transaction. For more see their explanation about bitcoin fees


How can Auroracoin be the 4th crypto-coin by market cap if it's unreleased yet? Auroracoin has become the 4th biggest crypto-currency measured in market capitalization. How can an as-yet unreleased coin have market value if it's not available for exchange (either for fiat or for another crypto-coin) anywhere??? In fact, save for the storage accounts of its creator, noone has an Auroracoin yet. So whence comes its valuation and thus its market cap???

As much as I admire the stated intentions of Auroracoin's creators and their ingenuity for turning stuff traditionally seen as BAD (premining, universal and compulsory registration for all citizens) into GOOD, this market cap point makes me a bit suspicious.

Turns out I was wrong. It is mineable right away and it is actively being traded in different exchanges, as cryptorush.in and cryptsy. What hasn't happened yet is the release of the pre-mined coins (50% of final amount), which will be given to Icelandic citizens.

Too bad the official page isn't clear about this (info on pools and exchanges is a bit hidden in the forums), nor does it list anywhere a list of exchanges dealing with it or pools for mining it - the cryptocointalk page linked first states all that.


What, other that Fees and Luck, controls the time to confirmation? Are there any factors that contribute to how fast a transaction is confirmed other than the Fee (sat/B), and a little bit of luck?

Does it matter what service is used?
How large the transaction is?
How many senders/receivers?

Which transactions make it into a block are purely at the discretion of the miner who mines that block.  In general, they take the transactions that will yield them the most in fees...but there's not really a way of saying for sure.  If a particular mining pool has another incentive in play that is worth more to them than the fees they'd be sacrificing, I'm sure they would operate differently.


Is there a list of Bitcoin Forks? I have some Bitcoin from before the Bitcoin Cash fork, and am pleasantly surprised to learn it has some significant value.

I believe there have been a number of other forks as well.  But I don't have a list, or know how to research it, other than general Googling.

Is there any canonical list of forks with information such as Date of the Fork and current value?

There is this list on Wikipedia: https://en.wikipedia.org/wiki/List_of_Bitcoin_forks

Bitcoin Cash (Forked at Block 4785591, 1 August 2017)
Bitcoin Gold    (Forked at Block 491407[2], 24 October 2017)
Bitcoin Diamond (Forked    at Block 495866[3], 24 November 2017)
UnitedBitcoin (Forked at Block    498777[4], 12 December 2017)
BitcoinX (Forked at Block 498888[5], 12    December 2017)
Super Bitcoin (Forked at Block 498888[6], 12 December    2017)
BITCOIN HOT (Forked at Block 498848[7], 12 December 2017)


Confirmed transactions lost in my synchronised node I tried to get a transaction information using RPC method getrawtransaction in my synchronized node, but I got no information about the transaction.

I did it in another node, and I could get the transaction information. How could this be? Maybe the database is corrupted? But I would think that when starting bitcoind, bitcoind would check the database. Maybe I am wrong. Can anyone can tell me how to figure out this case? Big thanks.

There could be a few possible reasons for this:

The most likely problem is that you don't have -txindex=1 enabled. By default, the core client doesn't keep track of all full transaction details unless you tell it to with -txindex=1 when starting it. If you want to maintain the full index, shut down and restart with that flag. It will give you a message about needing to reindex everything, that could take a little while.
It may also be possible that one of the daemons was actually in testnet, unintentionally. Make sure they are both on the same network.

The daemon will keep an index of full transaction data for all of your own wallet transactions. That might be why one of your nodes knew about it and the other didn't.


Bitcoin core internal transfer problem i have one big problem in bitcoin core internal transfer. to understand my question, please read my problem clearly.

1) Let me explain you by providing example.

My one of the core account let's say "xyz" has 0.05 bitcoin balance. This is real balance.
Now i am creating another two core account. "freebalance" & "dummy"
now i am going to run this command move "freebalance" "dummy" 10000
it will transfer 10000 btc to my new dummy account and freebalance account will have -10000
i know that my "dummy" account has dummy balance that is 10000 BTC. i can not spend it on blockchain transactions. No issue for now.
Now my xyz has 0.05 real bitcoin balance as i said earlier. and next i am transferring 5 BTC to my "xyz" account from "dummy" using internal transfer move command of bitcoin core.
It will make my "xyz" account balance (0.05 real balance + 5 BTC dummy balance = 5.05 mixed balance)

  Now the situation changes from here
  - whenever my internal transfer goes for "xyz" account to another account it will work good. but assume that i want to transfer 1 BTC
  from that 5.05 BTC balance to any other blockchain address. I mean i
  want to convert that "dummy" account generate balance to real one. So
  we can send that transaction to our users directly.

2) Another method or idea i have:

I have used json rpc api of bitcoin core.
let's assume i have "abc" account with 0.10 balance. So is there any possibility in move api or sending api to stop balance part. like whenever i try to transfer amount 0.50 from "abc" to "xyz" account it should work.
like this way-
first of all when sending api calls in, we will send 0.50 btc to xyz, but before that process we want to stop balance part of bitcoin core that is checking & deducting 0.50 from "abc" account. This way i want to keep my 0.10 balance in "abc" as it is. and also want to deposit "xyz" account with 0.50 btc.

  In short words, i want to stop bitcoin core to run deduct task from my
  core wallet account but run task of deposit or transfer easily without
  any error. So i can send profit to my customers easily.

Anyone please help me to solve out 1) or 2) problem. at-least one. i'm hoping to get good helps from the community on this issue.

Things you are trying to accomplish is you are try to transfer your bitcoin currency from one wallet to another wallet through internal bitcoind core system. whilst, you do not want to deduct balance. there is no api there which can prevent balance deduction.

bitcoind core has build their api if you tweak their code to prevent deduction of money. you can say you hacked bitcoin and your name will be breaking news! in theory you talk awesome, but practical way impossible.

Bitcoin virtual money is invented by satoshi nakamoto. also he can not do this things. if any person do transfer like you said. bitcoin will have zero value.
reason: people will start installing core/generate new bitcoin daily/earn money/no mining forever. just earn money. practically your idea is worthless, impossible.


Opening a short position on Kraken requires BTC to begin with? Suppose I have US Dollars on Kraken and no BTC. And suppose I expect the Bitcoin price to drop a bit (which I don't, but suppose) so I would want to speculate and take a short position.

Is this possible at all, or do I first need to have BTC in my account, in order to 'short sell' them?

It feels kind of counter-intuitive to first buy BTC to then immediately sell (short) them.

Suppose I don't want a higher leverage, i.e. I just want to short "1x" so to speak. So the price going down by 7% would mean 7% profit (minus trading fees). Am I right in thinking I should then first buy BTC, and then sell that with 2x leverage?

And similarly if I'd want to short with 3x leverage. But have no BTC yet. Should I then first buy BTC (through a normal order, not margin) and then margin sell it with 4x leverage?

You have to get money into the exchange to purchase and secure your position somehow. BTC is probably an easy way to do it but you could also do it with EUR or USD. You will need BTC to close the position but since you're going to be shorting BTC, you won't want to hold BTC while the position is open, so you'll be holding some form of fiat instead.


Unconfirmed btc transactions Reason - Due to unconfirmed inputs.
Can someone please explain what this means and could the sender do this intentionally. In other words to scam someone.

If there are three addressess A, B and C and someone sends a transaction tx1 from A -> B and another one tx2 from B -> C that spends the exact same coins (tx2 input is tx1 output) then tx2 cannot be confirmed until tx1 is confirmed.
Yes someone could trick you to accept an unconfirmed transaction as final and then send the same coins elsewhere (with a higher fee). That’s why you should not consider transactions final unless they are confirmed with at least a few confirmations (6 used to berecommended)


How to get private key and Bitcoin address in pure Python - without modules? How to make a pure Python code for Bitcoin address and private key without modules? For now I learn only how from decimal to get a hex. How from hex to private key WIF and than Bitcoin address?

bits = 115792089237316195423570985008687907852837564279074904382605163141518111494336
bits_hex = hex(bits)
private_key = bits_hex[2:]
print(private_key)

With this code I get this fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8ccd3b50c0

I want to get this
5Km2kuu7vtFDPpxywn4u3NLpbr5jKpTB3jsuDU2KXjvkyQnjL4Q

and this
1FDV9PfvAnep8LEzNc7kqSjpxtWK3G3oj4

and compressed private key and address

L5oLkpV3aqBjhki6LmvChTCV6odsp4SXM6FfU2GpngUH5fdXyvH3
1HcYwYNpthRFqUCUhAtQfG3ZAX46uMSUux

Can someone to help me?

You definitely want to watch this YT video made by Shlomi Zeltsinger:
https://youtu.be/tX-XokHf_nI
It covers the topic of getting randomized entropy and using hashing and RIPEMD to get private/public key pair and corresponding address.


How could BTC be used and transacted on a daily basis without physical theft? I just feel a gaping hole in my logic, or maybe a duplicate question, so I'm prepared to quickly remove this question.

I was wondering how theft could be prevented in an economy that relies primarily on a cryptocurrency such as BTC. I own BTC, so I was wondering if someone believed that I had Bitcoin and wanted to rob me (perhaps at gunpoint), what would prevent him/her from exhausting all the money I have until he/she believes I have no money left? Again, this is supposing that this is in an economy that hypothetically gotten to the point that it relies primarily on Bitcoin and it would not be uncommon to find a BTC user by choosing at random. Would some sort of a third-party transaction-handler securely transact BTC in some way that would prevent theft? I can't seem to figure this one out.

Just to elaborate on the comment by Diego Basch:

Of course, Bitcoin has no solution for the fundamental problem that the threat of force can compel a person to do something they don't want to.  (Maybe that bug will be fixed in the next version of civilization.)  But street robbery should ultimately be less of a risk than you think.

Although it's possible to carry unlimited amounts of Bitcoin around with you (say, in a wallet app on your mobile phone), it's not envisioned that most people would handle their life savings that way.  Instead, just as with cash, you would carry with you only as much as you need for routine day-to-day spending.  The rest of your savings could be kept in "cold storage", with the private keys physically stored in a safe place that you access only when you need to replenish your wallet.  So a street robber couldn't steal all your coins, only those you had chosen to carry with you.

You could imagine other protections, too.  For example, a mobile wallet app would normally keep the keys encrypted and require a password to access them, so a thief who simply stole your phone wouldn't get your coins.  (They could try to crack the password, but by that time, you could use a backup copy of your private keys to move the coins to a new address.)

Now, a robber could try to force you to enter that password.  But you could imagine an app with a "duress code", an alternate password that when entered causes the app to delete the keys (assuming you have a backup in a safe place).  It could even do something like silently delete most of the keys but leave a small amount available, so that the robber thinks that's all you had, takes it and leaves you alone.  Kind of the Bitcoin equivalent of keeping $2 in your wallet and your other $500 in your shoe.


Single "Multiple Inputs Tx" vs Multiple "Single Input Tx" Alice owns three addresses A1, A2, A3. She decides to collect the coins held by these addresses into a single coin so she generates a fresh new address A4 for that.

She has the following two options:

1. Single transaction

+--------------+
 |A1          A4|
 |A2    ->      |
 |A3            |
 +--------------+

2. Multiple transactions

+--------------+
 |A1          A4|
 +--------------+

+--------------+
 |A2          A4|
 +--------------+

+--------------+
 |A3          A4|
 +--------------+

She does not want people to know that A1, A2 and A3 are owned by her. And she does not intend to use any mixing services. She also don't mind paying more transaction fees as in option 2.

Option 1

A1, A2 and A3 can be linked together assuming she did not use any Coin Join technique.

Option 2

It can be seen that A4 is reused to receive payments. However A4 has never been seen before this transaction.

Questions on Option 2:

Can someone observing the Blockchain deterministically figure out A1, A2 and A3 belong to same user?
If Alice now spends A4 to Bob (sends all amount, she never uses A4 again), can Bob ever figure out that A1, A2 and A3 belonged to Alice?
What privacy will Alice (or someone down the trail, like Bob) lose if she goes for option 2?
Is reusing addresses to only receive payments and spending that address only once okay?

With option 2, most analyses will conclude that Alice owned A1, A2 and A3, because the transactions which spent them have no change address. Typically, you assume that the amount you have held in a TXO never exactly matches the amount you're making as a payment, so transactions usually have change outputs too.

I think you have a little misunderstanding about where bitcoins are held. Bitcoins are not stored in addresses. You don't "spend an address." You spend one or more UTXOs. Each transaction in option 2 creates a separate TXO, even though they share the same address for spending. This means, when the coins associated with A4 get spent in full, the individual TXOs are each inputs for the new transaction, which makes it look more like option 1 (multiple inputs, one output) when spent, like this.

+--------------------+
|A4 (txo1)         B1|
|A4 (txo2)   ->      |
|A4 (txo3)           |
+--------------------+

Bob can of course, look at each of these inputs and see which transaction they came from, but he can't necessarily determine whether the addresses actually belonged to Alice, or whether it is just likely that is the case. Without some more evidence from further back in the history of the coins, you cannot prove whether Alice owned them initially or received them from somebody else.


How can I speed up payments to my c-lightning server? I setup a BTCPayServer on an AWS instance with a pruned bitcoind and c-lightning. I setup an inbound channel from Bitrefill and everything does work but I'm disappointed about the performance.
Using a Phoenix wallet it consistently takes 16s for payments to get confirmed while another BTCPayServer a friend configured and runs at home on his RPi which I don't have a direct channel to neither takes 8s.
The transaction details tell a slightly different story. According to those, paying my server took 11, 4, 4 and 4s while paying the other server took 5s. I assume that is measuring time only after some costly hand-shaking and routing but the time between hitting "pay" and the website and my phone displaying simultaneously "success" is much longer. Can I decrease that time somehow? Would I need more inbound channels, so my phone finds a faster one? Is there some option to speed things up? Is dual core the issue? ...

Lightning needs very little computing resources so the hardware in use is most certainly not the issue and has very little impact at all.
The described difference in time between the sending and receiving node is normal, to be expected and cannot be changed. The reason is that the payment/routing process works by selecting a path along which HTLCs are tried to be set up to the recipient. As soon as all HTLCs are set up, the money
has arrived from the recipients point of view. However, from the sender's point of view all the HTLCs need to be settled. Setting up an HTLC and settling it takes about the same time within a single channel. Thus in the case that a path with enough liquidity was used the payment is finished in half the time for the recipient as for the sender.
Setting up and settling HTLCs is mainly bounded by a cryptographic handshake that needs 5 messages to be sent over the wire between the two peers. Thus, the wall lock time of a payment on a path with enough liquidity will be faster if it includes fewer channels and if the peers in every hop are network-topographically close, which might yield a potential for optimization. As a rule of thumb, you can assume 100 ms for a single message and since a round-trip takes 10 messages you can expect roughly 1 seconds per included channel from a sender's point of view.
The above mentioned things assumed a path with enough liquidity. However as described in this paper the balance values are unknown so we have a random process.
Currently, nodes try to find the cheapest path. The paper suggests that you can reduce the number of attempts significantly by trying the most likely paths (roughly those that are short and have more capacity).

Overall yes, your position in the network with respect to topology and the method for selecting paths makes a difference and might be used for performance tweaking. As nodes have not implemented probabilistic path-finding yet, this would require custom code. It might even make sense to keep the same number of attempts and instead prefer geographically shorter links though I would focus on selecting paths that minimize the expected number of attempts.


Can a Bitcoin block be less than 1mb? Can a Bitcoin block be less than 1mb?

To my understanding, a miner receives broadcasts. However, if not enough transactions come in, then would it just prematurely hash the block?

Yes.  Let's calculate the minimum size of a block:

The block header must be exactly 80 bytes.  This is the only part of the block that miners actually mine; the rest of the block is data that the header securely references.
The transaction count.  This isn't part of the block header and it isn't part of the block data, but it's part of the peer-to-peer protocol block message so it gets counted towards the block size.  For blocks with 253 or fewer transactions, this is 1 byte.
The coinbase transaction, the only required transaction in a block.  The coinbase transaction has the following fields with these minimum values:

4 bytes -- version field
1 byte  -- number of inputs (always 1 for coinbase transactions)
32 bytes -- outpoint txid; always 32 0x00 bytes for coinbase transactions
4 bytes -- outpoint index; always 4 0xff bytes for coinbase transactions
1 byte -- number of bytes in coinbase field (input script); always 1 byte for coinbase transactions because there's a 100-byte limit
4 bytes -- block height as a data push; required by BIP34
4 bytes -- sequence number
1 byte -- number of outputs, we're not going to have any (making the block reward and transaction fees paid in this block permanently unspendable; no real miner would do this)
4 bytes -- locktime
Total: 55 bytes

Total minimum block size: 80 + 1 + 55 = 136 bytes

Practically, the smallest reasonable blocks are in the 180-byte range.


transaction "unconfirmed," no idea what the problem is, running updated bitcoin core The transaction 0ee906dd3a240d3776d609853a7e855ed813b8a1e51328405145a8cffecbb804 has been unconfirmed for six hours. I have no idea what the problem, it just says "unconfirmed transaction!". Is there anything I can do? My bitcoin core was recently updated so i don't think it's a transaction fee problem.

There is currently a backlog of about 52,000 unconfirmed Bitcoin transactions.

The transaction 0ee906dd3a240d3776d609853a7e855ed813b8a1e51328405145a8cffecbb804 will be confirmed eventually.

At the very worst, the transaction will get dropped and the coins will still be in the sending address.


Software wallets and what happen if you break your computer I've been reading about wallets, web wallets, software wallets, hardware wallets...and there is one question that I could not clear up from other threads:

Your bitcoins are stored in the chain. Use them it's as easy as ask to the chain how much you have + use your private key associate to the address.
Based on previous statement (whether is correct) nothing happens if your software wallet installed in your machine gets corrupted or the web wallet site decides to shutdown, as soon as you use another wallet that is connected to the same blockchain platform (supports that cryptocurrency) and provide your private key or seed is enough (right?). This remembers me kind of "cloud" ledger phylosophy.
So how the hell can something like this happen? --> https://money.cnn.com/2013/11/29/news/bitcoin-haul-landfill/
Are not the balance of this guy replicated in the blockchain , and having his private keys or seed he can still use them?

Every p2pkh bitcoin address has a key pair behind it i.e. a private key which remains secret and a public key.

There are two ways in which you can generate these keys. There is the old fashioned approach where the wallet is Just a Bunch of Keys (JBOK) and the newer approach where the wallet is a deterministic wallet.

In JBOK wallets the private keys are totally random and unconnected to each other. You need to backup all the private keys in this type of wallet. Furthermore, because address reuse is a bad thing new addresses are created by the wallet software all the time so you need to periodically create fresh backups of your wallet. If you fail to do this you might find that your coins were sent to some change address whose private key you don't have.

In the case of deterministic wallets also known as hierarchical deterministic wallets (HD wallets) all address specific private keys are derived from a seed. You backup the seed once and that's enough to restore your entire wallet. The downside is that if the seed is exposed you lose all your bitcoins and what's more the person who has your seed can wait for an optimal time to steal from you because all future addresses' private keys are also derived from your seed.

In recent years there has been a shift towards HD wallets. What is the reason for this shift? The reason is that the vast majority of people who lose bitcoins lose them because of their own mistakes and not because they got hacked. They lose them because they forgot their password or didn't backup their wallet file. HD wallets make backups easier and so they prevent such losses.

Regarding that bitcoin hard drive guy he didn't make a backup of his wallet. Back then the wallet would have been a JBOK type one. We don't know whether he didn't make any backups at all or whether he had outdated backups. If it's the former then not even HD wallets would have protected him because you still need to backup the seed by writing down the mnemonic or making a copy of the wallet file.


Premining documentation? I'm looking for more information on how to actually premine a coin. I would be grateful if someone can show me an example.

What I've tried so far does and not work, I'm basically mining the first block(not the genesis one) and it has a big reward but when I change the reward to a smaller one the blockchain is not valid anymore.

Thank you for any kind of tips documentation references.

Premining just means you can mine at your own at a very low difficulty before normal users have connected to your network. The size of the reward is determined by the protocoll so you cant change it until the procotol allows it (For Bitcoin it halfs ever 210000 Block).

For example:

You can mine with a few hashs per second for a week. For bitcoin you get  a block every 10 minutes getting a reward of 50 BTC. This will give you 1008 Blocks and 50400 Coins. If you now  let other people connect they will start mining and the difficulty will increase.


How does mnemonic recover a single private key? As I understand the algorithm of mnemonic (BIP39) can generate billions of private keys from your 14-24 words.

Whats the mechanism that some wallets/clients use to recover a single private key, my private key?

Typically, they just pick the first one that the mnemonic generates.


How are 21 words seeds generated Apologies for the noobie question.
I was wondering how a range of wallet addresses (eg. BTC address 33ELbMhwHw5AaKHU4u3MzVSFvvK7aa7HZL) is algorithmically converted into seeds (eg. 12 words). Any help?

I tried to google around but I only find articles related to ledgers, wallet recovery and so on.

Thanks

The base system is described in BIP32 and BIP39.

Essentially, the conversion goes the other way around. We don't convert a list of addresses to a seed. A seed is converted to a list of addresses.

BIP32 described how hierarchical deterministic (HD) wallets work.

BIP39 describers how these can be encoded into mnemonic phrases, or seed words.

There's an excellent open source tool by Ian Coleman - BIP39 that lets you play around with the various derivation and entropy options. You should, however, be wary of entering any seeds containing funds or using it to generate secure seeds, as always.


What keeps mining pools from creating wallets that send transactions only to pool members? Suppose one of the big mining pools, that holds e.g. 20% of the mining power, creates a wallet software that, by design, sends all transactions only to pool members - and does not relay it to nodes outside the ppol. Will this give them an advantage in getting mining fees? What keeps the big mining pools from doing this?

What is the point? The service you get as a user is worse, with 1/5th of the hashpower, I as a user have to wait longer to get my tx into the chain.

Now something similar is already happening, and has been for a long time. I can pay a pool to get my transaction a higher priority. Instead of replacing my transaction with a higher fee, i pay the miner directly so they will include it in their next block.

I get it you are thinking allong the lines of ''well if this pool has a part of the mempool that is only exlusive to themselves, they will get that money, but others wont'', yet from a user perspective, it makes no sense to do this. It takes more time, i see no reason why it would be cheaper.

Remember, the systems functions under ''I as a user am indifferent as to who includes my TX into a block, as long as it happens'' & ''I as a miner am indifferent as to what TX's I am including, as long as it has sufficient fee's''.


Transaction propagation I`ve got one really basic but still important question that is very confusing:
Does the newly created transaction needs to be propagated to ALL nodes in the network in order to be validated?
Lets suppose I have made some payment and it needs to be added to the mempool of few miners to be included in the next block. How many nodes must validate that transaction so that it will be added to the mempool?
Thanks in advance!

Does the newly created transaction needs to be propagated to ALL
  nodes in the network in order to be validated?

No. The nodes relay valid transactions to each other. In corner case you can send your transaction directly to miner node. No one will have this transaction until it included in block


Modify the number of confirmations for an utxo to be ```safe == true``` in Bitcoin Core I noticed that when I call listunspent on Bitcoin Core, UTXO with 0 confirmation are labeled unsafe, and thus prevented from being spent with sendtoaddress or fundrawtransaction. As soon as there's one confirmation the tx is safe and I can spend it.

Being able to modify the target for a tx to be considered safe, for example set it to 3 or 6 confirmations instead of just 1, would make my life easier, but I can't find an option for it. Is there some way to do it?

From the documentation:

  listunspent ( minconf maxconf ["address",...] include_unsafe query_options )

  Returns array of unspent transaction outputs
  with between minconf and maxconf (inclusive) confirmations.

so listunspent 3 would work for you?


Anonymity of Bitcoin ownership a fakery? If John needs to send 0.1 BTC to you as payment to your product, and he wants to retain his BTC ownership confidential, and the transaction goes something like this...

  1fdfsefesf.....   ---> send 0.1 BTC to 1hsjhjkwa..... (your account)
  ---> send 999.9 BTC to 1lkskakkd... (not your account)

... then doesn't that mean John has at least 999.9 BTC left in his savings?

Even though John may not want you or anyone else to know he has that much but the transaction has just given away info of his savings.

So how can anonymity really be sure?

Bitcoin isn't anonymous in any rigorous sense, and the developers never claimed it was.  See for instance https://en.bitcoin.it/wiki/Anonymity.  If someone has been telling you that it is, then indeed that is "fakery".

However, the specific issue you describe is pretty easy to avoid, practically speaking.  If John doesn't want you to know his total holdings, then he should split them across a large number of addresses.  For instance, there is nothing stopping him from spreading his coins across 10,000 addresses, each containing BTC 0.1.  (There will be some transaction fees but clearly he can afford them.)  Then he can send you coins from just one of them, and you won't really know about the others.  If he wants, he can use a mixer or similar service to further obscure the fact that those addresses were funded from a common source.


Is multisig address belong to the same wallet created by? I created 2-of-3 multisig address using bitcoinqt by three public keys from my wallet . when I tried to validate this address after creation it shows :

"isvalid" : true
"ismine" : false

should it be is mine as it is created by 3 of my addresses ? can you explain me why it does not belong to the wallet ?

TL;DR: Bitcoin Core currently (as of v.0.9.3) does not support spending from a multi signature address even even you create a multi signature address with public keys of addresses inside your wallet. Therefore it does not show the generated multi signature address in the UI or return "ismine:true".

Spending from a multisig address requires including the generated "redeem script" within the transaction. Additionally, the raw transaction has to be signed by 2 of the 3 public keys provided to "createmultisig" (also included in the script) in the order they were provided to "createmultisig". As of now, the wallet does not store these redeem scripts, nor does it know in which order the raw transaction needs to be signed. Because of this, you cannot spend from a Multisig address via the UI. Therefore, it doesn't make sense for Multisig address  to be included within the wallet UI.

Using Multisig addresses is still considered an "advanced feature." Therefore, they don't show up in the UI. This requires understanding what Multisig addresses actually are and how they work.

A Multisig address is a type of "Pay-to-Script" address. The addresses created using bitcoin-qt create a script like this:

OP_x (x = number of required signatures)
PUSH next 33 bytes
[33-byte public key (compressed)]
PUSH next 33 bytes
[33-byte public key (compressed)]
...
OP_y (y = total number of public keys)
OP_CHECKMULTISIG

This script is hashed to create your address. So, since this script is unique to you (your public keys), it does belong to you.

In order to spend coins from this address, you have to create a raw transaction that spends from the address and sign it with the private keys that correspond to at least x of the public keys (in the order they were given when creating the address/script).

Part of this spending transaction is the script itself such as the one above (in hex form). This is a required part of the transaction. Of course, the script could be built from the UI, but the UI would have to have to know the exact order the keys were presented to build the original address in order to re-build the script.

This brings us to the next problem. In the current UI, there is no way to sign a transaction. However, even if you could, the UI would not know (based off the address alone) in which order the transaction must be signed to be valid.

One way to alleviate these problems would be to store the script in the client itself, however this might pose a security risk to some degree. If the wallet were to store the address and the script in the wallet, somebody (perhaps malware) that is able to access your wallet would be able to get your private keys as well as the script required to spend from the address -- which is also in your wallet. If you know what you're looking for, it's fairly easy read the script, find the corresponding keys in the wallet and create a transaction to spend the coins.

At least with the current Multisig pains such as manual transaction signing and such there is a layer of obscurity. If you were to send all of your BTC to a Multisig address, an attacker wouldn't be able to just up and run off with all your BTC. They would have to have a few key pieces of information: the original Multisig script (which I don't believe is known until a successful spending transaction has occurred), the private keys, and they'd have to know both the correct private keys and the correct order to sign the spending transaction in. Of course, that's a lot of information that would be needed just to make a successful spending transaction -- none of which (other than the private keys) is actually stored in the wallet.

So, while it may be difficult to deal with Multisig transactions/addresses in bitcoin-qt, it may be a good thing!

However, I don't see why once you've generated a multisig address that it couldn't be added to your receiving addresses. I have a feeling it has to do with the difference between how regular and pay-to-script addresses are generated and the fact that regular addresses use a fixed-width private key, where as a script (which is basically the private key of a Multisig address) is an arbitrary length: 1+(34*num_public_keys)+2.


What is the safest method managing a large number of receiving Bitcoin addresses? Say I want to run a big project, where users can continually request new addresses to deposit Bitcoins in their online account. I suppose I will have to pre-generate thousands of Bitcoin key-pairs and import them into a running instance of bitcoind on my server. Each time a user requests a new address to deposit Bitcoins into his account, I will assign him a new address. Then bitcoind will notify me when any of the imported addresses receive a transaction.

First question: Is bitcoind capable of monitoring thousands of addresses in real-time? Should I plan a dedicated machine for this?

Second question: Since I will need to move received Bitcoins to a cold storage and also make payouts automatically many times a day, I will need to store the private keys on the online server as well. I can have wallet.dat password-protected but what is the safest method to automatically unlock the wallet, move funds and then lock it again without the password being possibly compromised? I don’t consider it safe if the password appears anywhere in code, config or database. And I don’t want to enter the password manually several times a day.

Third question: Will bitcoind generate a new “change address” every time I move funds from the receiving address to payouts and cold storage? I ask because if bitcoind used one of the imported addresses for change, it would appear as if client received Bitcoins.

You don't want to be storing any funded keys server side, there's an almost constant steam of hosts being compromised to steal funds. Most Bitcoin systems use something called a "hot wallet", and move the rest onto individual paper wallets outside of the servers control. It's then the administrators role to move funds back and forth to keep the hot wallet funded. This significantly reduces risk, and means that an attacker can gain at most the amount of funds in the hot wallet.

  Is bitcoind capable of monitoring thousands of addresses in real-time?

Yes, but you really don't want to be storing anything more than a small hot wallet on a server. If your security isn't perfect then it's just going to be stolen. If it was used to

  what is the safest method to automatically unlock the wallet, move funds and then lock it again without the password being possibly compromised?

You can't be sure. Even if the wallet is "encrypted", an attacker can just sit on the server and wait for you to unlock. Again this is why you need to be using offline storage and hot wallets to mitigate the damage of the server being compromised.

  Will bitcoind generate a new “change address” every time I move funds from the receiving address to payouts and cold storage?

Yes. This is why all addresses presented to the client are single-use. You make a new receiving address each time for the hot wallet bitcoind, and never show it to the client again. They don't need to, their funds aren't restricted to any particular Bitcoin outputs. Their balance is just an external value in your database that you happen to hold the funds for.

Ideally the setup looks like this:

Server:

A bitcoind hot wallet, makes new receiving addresses and presents them to a client. Using walletnotify or blocknotify it updates the received balances for each user to an external database like Postgres or Redis.
A check script makes sure the bitcoind never stores more than 50 BTC in it's wallet, if the balance goes above 50BTC a script runs that generates a new key with a deterministic public key (the server never has to know the private key to do this) or uses a pre-generated list. It sends the excess off to this address to keep it safe.
If the wallet doesn't have the funds to pay a user when they make a withdrawal request, show a soft effort and notify the administrator that the hot wallet needs to be refilled. Explain this is for the protection of the user.

Offline:

An Armory wallet that holds the private keys of the cold wallet. Ideally this would be completely offline, with a paper backup in a safety deposit box.
The control is only to the administrator, who knows the address of the hot-wallet refill on the server. When needed they move funds back up to the server as per notifications

Very involved, but it's roughly how other systems work, and it's got to be that way unless you want to end up like http://inputs.io/ who lost an entire 4000 BTC hot wallet due to negligence. You can never be too paranoid in situations like this. Your maximum loss in this case would be the 50BTC hot wallet, which is better than losing everything.

Play safe.


Freelancer: billing my customers in bitcoin I do freelance work and I was considering offering my customers the option of paying me in Bitcoin. Given that bills are usually paid in 2 - 4 weeks after sending them, and the exchange is still quite volatile, how could I do this? Can I do anything more than just write on the bill "please contact me to arrange a payment in Bitcoin" ? Has anyone done this successfully?

In practice your invoice fee should be cited in the most stable and liquid of the currencies you support. Typically your national currency since you live with it anyway.

The contract would then stipulate that if the client pays in another currency that the amount that the client must pay is the going rate to sell that currency back into the primary contractual currency at the time of payment.

The client, if they don't have enough bitcoins at time of payment, may care more about the buy/bid exchange rate. But you care much more about the value of your work in the most stable and liquid currency, hence the sell/ask exchange rate at time of payment.

For example:

Contract stipulates a payment of $100 USD
Contract stipulates that payment in bitcoin is the amount of bitcoins if sold at the weighted global average at the time of transfer would be equivalent to $100 USD; rounded to the nearest desired fraction of a bitcoin (e.g. 0.001 BTC).

This should completely resolve currency volatility between the time of invoice and payment. I'm sure most modern bitcoin payment gateways auto-convert currency exchange rates, so the logistical burden to a client should be minor.


What is the difference between Segwit and non-segwit? What's the difference? What is the definition of these two terms?

Seg-Wit or Segregated Witness term can literally be explained, that we are segregating (separating) Witness (Signature Data) from something.

Now What is Witness?

For spending a unspent bitcoin output, one has to create and sign a transaction. The signature along with public key is included in scriptSig field,which is used to validate the transaction.
This validation content (scriptSig) is referred to here as witness.
(If multiple outputs are spent, there will be multiple scriptSig fields for corresponding inputs).

Why are we segregating (separating) it and from where?

Under SegWit contents of scriptSig fields are removed from transaction inputs [txins] and placed separately under witness field.
So, format of transaction now changed from:

[nVersion][txins][txouts][nLockTime]

to

[nVersion][marker][flag][txins][txouts][witness][nLockTime]

Why it was necessary?

Transaction ID generated in bitcoin system is double SHA256 of the serialized transaction structure.
Generation of txid in Non-SegWit transaction structure had a annoying bug known as transaction malleability, after broadcasting transaction with TXID1, any node in network could slightly alter content of scriptSig field still maintaining transaction validity, changes Transaction ID TXID1 to TXID2. Now for same transaction system has two txid's.

Other Benefits

Block Capacity Increase, as transactions are clubbed in blocks, current size limit being 1MB, separating scriptSig content from [txin] to new witness field, results in inclusion of more number of transactions.

Further Reading:

A good & simple explanation of SegWit : http://learnmeabitcoin.com/faq/segregated-witness

Benefits of SegWit :
https://bitcoincore.org/en/2016/01/26/segwit-benefits/

BIP 141: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki


How do I withdraw from an address I made a Crypto purchase from Shapeshift yesterday, which was fulfilled by one of their partners called BANXA. I just received an email saying "Your order has been fulfilled and you will receive your bitcoin shortly in the address provided" with a link opening to Block explorer. With a QR code and two buttons "Payment request" and "Donation". And a Bech32 (P2WPKH) 42 Alphanumerical code that I got no clue how to use.
I have contacted their support. Opened wallets in Portis, Electrum, Blockchain and Coinomi but with no idea how to receive that 42 code to one of my wallets. How do I get it to move?
Thank you :)

When you set up a trade on Shapeshift, you presumably pick which currency you wish to purchase, and what currency you pay with. You would then provide your withdrawal address to be credited in the purchase. Given that you have received an email that tells you that your purchase went through, I would expect that the bitcoin were sent to the bitcoin address that you provided when you set up the purchase. Check whichever wallet you copied your address from.


Are there services which I can offer to earn bitcoins? Yes, I am a noob at this. I was wondering if anyone could let me know if I could do something sitting on the desk to earn some crypto-pie.
Also please explain how will I be able to use my bitcoins to buy other commodities - like recharge my phone and stuff.

The best I can suggest you is to offer some services to third parties and get paid in cryptocurrencies.

If you have any skill which can be "sold" on the internet you should use this to try and earn some crypto money. This can range from coding to video editing, freelancing, writing, etc.


Cannot create a transaction I am trying to create a transaction on the bitcoin testnet, using bitcore:

Error Message :

  SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Here is my code:

var transaction = new bitcore.Transaction()
.from({"address":"msxGdsTJJYu7YrmkV4sbHNK8Z21pHFZ2gX","txid":"0c0d9ad92f07e774a76194823a92bf2521aa57381ad4782becf20fdf385e1922","vout":0,"scriptPubKey":"76a914886b382436985b195d1dfcdb00c722c1f2fcd0ea88ac","amount":0.01})
.to('mjsVogqLetdUjT9raJY6WgYmy3tifJ3DJz', 20000)
.sign('0497427ad1b6177fe950758f10151ba38a6b38d44577ba45fb06423143bb55a2')
.change('mhCpGNNHQmu4P9pUZcCmgXkxbYxys5pKBw')

<Transaction: 010000000122195e38df0ff2ec2b78d41a3857aa2125bf923a829461a774e7072fd99a0d0c0000000000ffffffff02204e0000000000001976a9142fc320597ba67a66167721bc9c36d987e03c225b88ac10cd0e00000000001976a91412820fdb8340e5198b3c31de5688faa7927b0d7188ac00000000>

transaction.serialize()
010000000122195e38df0ff2ec2b78d41a3857aa2125bf923a829461a774e7072fd99a0d0c0000000000ffffffff02204e0000000000001976a9142fc320597ba67a66167721bc9c36d987e03c225b88ac10cd0e00000000001976a91412820fdb8340e5198b3c31de5688faa7927b0d7188ac00000000

>> var Insight = require('bitcore-explorers')
[object Object]
>> var client = new Insight.Insight()
[object Object]
>> client.broadcast(transaction, function(err, txId) { console.log('Id:', txId, err);})
undefined
Id: undefined SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

When I try to broadcast this transaction using BlockCypher, the error message is :

  Error validating transaction: Rejected script for input 0 referencing 0c0d9ad92f07e774a76194823a92bf2521aa57381ad4782becf20fdf385e1922 at 0.

Any help is highly appreciated!

I think you can add ' around your JSON, to make :.from('{"address":"..."}') to create a string with your json inside


Importing bitcoinj mnemonic into electrum or deriving private keys from mnemonic I am having a really hard time backing up my bitcoinj mnemonic and importing it somewhere else.
I am backing up the mnemonic like so:
    Wallet wallet = Wallet.createDeterministic(params, Script.ScriptType.P2WPKH);
    DeterministicSeed seed = wallet.getKeyChainSeed();
    System.out.println("seed: " + seed.toString());
    System.out.println("creation time: " + seed.getCreationTimeSeconds());
    System.out.println("mnemonicCode: " + Utils.SPACE_JOINER.join(seed.getMnemonicCode()));

This gives me: cram approve decline tobacco truly giant remember author install dirt spare law
The wallet dump for this wallet/mnemonic looks like this:
Keys:
Earliest creation time: 2020-09-10T23:01:55Z
Seed birthday:     1599778915  [2020-09-10T23:01:55Z]
Ouput script type: P2PKH
Key to watch:      xpub685v329L5UXezQQmCRgftKRud7hYHHR2U9RPCzRVwQNNWQuTHawgzBXD5RgAYLroJFiqTxEhF5jmbXJAWB341x8r3hdUFWfZd1Rh9uycNR3
Lookahead siz/thr: 100/33
addr:13ScJMSbxg6JYVaWNJAawZMaKW9KDdsz2H  hash160:1ac81dec190ab5981f5b8d9627136c806b013ff8  (M, root)
addr:18jGHhTXzKJcU1TqpMkozYQQBKHsnExT1H  hash160:54c71cd14809d8e4695d0ab8881b9c971c28d833  (M/0H, account)
addr:1HJbGGSZ42tG9nrTU6aGS2xJwCSEb6rKfg  hash160:b2d5af74fb0d34e5a072cf0514c9d0a6d949a699  (M/0H/0, external)
addr:19kEr724cNCXWgybTDPhNqN5rTVCcajdjD  hash160:5fee7381e26b401c7aca2d031e950aa7b6ff634d  (M/0H/1, internal)
Seed birthday:     1599778915  [2020-09-10T23:01:55Z]
Ouput script type: P2WPKH
Key to watch:      zpub6mkSeMVANqccjQLrtYC39g9eob95YG9cNvGFFBvXVgsT7mrJno4ChARSa1WWYdtuygHLDdkc5Bg6Lc45wx8xL2tSzgHsnzfqt4oSYR1Lecv
Lookahead siz/thr: 100/33
addr:bc1qrtypmmqep26es86m3ktzwymvsp4sz0lcurmxp8  hash160:1ac81dec190ab5981f5b8d9627136c806b013ff8  (M, root)
addr:bc1qppm602vv0ee29mndy37c3h5h4y753vyz82h5qt  hash160:0877a7a98c7e72a2ee6d247d88de97a93d48b082  (M/1H, account)
addr:bc1qz88ttzmmlr2w6d5wz40e9ejqxmr5avtmq2d6qq  hash160:11ceb58b7bf8d4ed368e155f92e64036c74eb17b  (M/1H/0, external)
addr:bc1q0v7emmg95uj738fnge70hwle23jdehpqxezqne  hash160:7b3d9ded05a725e89d33467cfbbbf95464dcdc20  (M/1H/1, internal)
Now importing the bip39 mnemonic into electrum or the iancoleman site gives me completely different adressess no matter what derivation path I use. How can I import the mnemonic so that it creates the exact adresses as bitcoinj/android schildbach wallet? Or how else should I backup?

Just restore as normal using electrum and on the screen where you have to enter the derivation path you set it to m/0' and choose legacy as the script type. Then create another wallet via file > new/restore for the p2wpkh addresses. This time choose native segwit as the wallet type and enter m/1' as the derivation path.


Sending BTC from old QT Client V0.7 - Will coins arrive? I have an old "BitCoin-QT" Core client at version 'V0.7 2-beta' - that I just want to move coins from, to a Ledger Nano, (and then not need to ever fire up this local QT software again).
My BitCoin-QT Core client is about 3 years out of date with regard to the Blockchain..

Without having to go through the whole Client Upgrade path.. last night I tried to move a small BTC transaction off via the Client as a Test.

After a few hours the transaction status on the client was given as "Status: 0/unconfirmed, broadcast through 28 nodes". I sent the nominal BTC transaction to an address beginning with "1B.." a legacy BTC address.

I looked this morning for my Transaction via the Bitcoin Block Explorer (blockchain.info) - but nothing was showing.

Is this telling me :

I just need to wait longer? (how long approx?),
or
My transaction will never get processed? (its in an old format or something). If so how would I claim the coins sent (and fees charged?) for this failed attempt?,
or
I definitely need to upgrade my QT core client first before I can send any coins from this old client?
If so, what is the Min QT Client version I should target to upgrade to ? (ie to avail of the latest Forks, BTC Cash offerings etc?).

Much thanks, L

There haven't been any Bitcoin hard forks in the last 3 years so your old client should still work fine. Of course it won't be able to use new features like SegWit but that shouldn't matter.

Does your v0.7.2 client have the "Transactions" menu option. Double clicking the pending transaction will tell you it's status. If you don't have that menu option where are you getting the transaction ID from?

If you're still getting nowhere with your old client then in your shoes I'd take the following steps:

If you haven't already backed up your wallet then in your v0.7.2 client do File->Backup Wallet and save it to a USB drive or somewhere safe,
Download the latest Bitcoin Core client and install it,
Run the new client and it should update your wallet if it needs to,
If your blockchain is not synchronised then unfortunately you may have to wait a long time (days) for it to catch up,
Try another test transaction with the new client.

There are other options that you could do with your existing client, such as extract your private key with the Debug Window->Console, but that could go wrong very easily. Your number one concern is obviously not to lose your private key(s) and even if it takes a number of days to sync your new client that's a small price to pay.


Is it yet possible to send a message to the wallet which receives Bitcoin when making a transaction? I wish to be able to do something like this:

bitcoin://anaddressgoeshere?message_to_wallet_owner=Keep+up+the+good+work,+dude!

After clicking that link, which opens the user's Bitcoin Core wallet, the user sees that message and can edit it freely, and then go through with the transaction. Now, the usual blockchain stuff happens, not storing that message in the blockchain. Considered "off far less importance" than the transaction, and to prevent abuse, this message flies around in the RAM of nodes on the Bitcoin network until I come back online and my wallet "receives"/sees the transaction, upon which point that message is fetched by my wallet and displayed to me in relation to the transaction, and then marked as "dropable" from the network.

That is, the blockchain does not store this message, and if I'm offline for longer than, let's say, a few weeks or so, I never receive the message. It doesn't "fly around" forever; it's merely a very useful extra feature for people who are online reasonably often, as I would be if I'm accepting donations/payments and want to know what exactly people are donating/paying for.

Having a "dynamic" website with a live database and dispensing unique receive addresses is simply not practical for a lot of people and situations. Even though I know how to do this technically, and have done it in the past, it's a major PITA as well as a massive headache of maintenance compared to a more "static" website which is generated as HTML files and uploaded in bursts. The latter is far more secure and thus desirable for me, and that's why this would be a great thing to me.

I assume that it doesn't exist, or if it does, it doesn't have support, but it would be really cool if it did.

No, it is not possible, and likely never will be possible.


How can I import a private-key to Blockchain.info in order to use it? I recently bought a BTC-wallet from my friend. It has a cold storage wallet ("Watch only") and a private key (which is a bunch of numbers and letters). How can I use it in Blockchain.info? How do I make (confirm?) transactions with it?

you question is not clear, what exactly have you bought?

anyhow if you have the private key you can import them in blockchain.info wallet in the Import/Export section. but if you bought it from someone else he/she also has the private key and so the ability to spend the bitcoins.


bitcoin-cli not working Whenever I try running some command like:
bitcoin-cli getinfo
The prompt just hangs and does not return anything, similar to SQL interface if you do not enter semicolon.
Running only "bitcoin-cli" returns the help screen but running any command just hangs and need to press CTRL+C to get back.

Many commands block the daemon from responding to requests, and during startup you'll not get responses while the node is initializing.


How can I get a new Bitcoin exchange up and running? I would like to have a Profit Points <-> Bitcoins exchange. The exchange could either be developed and run by contributors of Open-org.com or be created by an existing Bitcoin exchange. I have, however, already contacted World Bitcoin Exchange, to ask if they are interested in creating such an exchange without getting an answer. To develop the exchange ourselves seems like quite a task, due to the need for security even if we would base it upon the open source of the World Bitcoin Exchange.

The reason why I am so interested in creating a Bitcoin exchange is that the spirit of Bitcoins really match the spirit of Open-org.com. We both want to take on conservative systems and innovate to create something better. In the case of Open-org.com the main aim would be to create an alternative to the large established and utterly closed corporations, who feel like they own their employees.

The easiest way to get a Bitcoin exchange up and running is to start with an open-source exchange project like Intersango and modify as appropriate to your target currency (Profit Points in this case).

As has been mentioned in the comments, however, GLBSE might actually be more appropriate to your intended use-case.


Libbitcoin How to generate addresses on demand from xpub? Well, I am really new to this. Just installed libbitcoin and I am reading trough the wiki and everything.
Could someone really quick hint me how to generate addresses whenever I want from xpub that was exported from Electrum wallet? And/or Ledger wallet - if someone knows?
I know that it can be done in bitcoin core, however I would like to give libbitcoin a try.
Thank you very much.

Did you try this section from their documentation?
https://github.com/libbitcoin/libbitcoin-system/wiki/Addresses-and-HD-Wallets
// Load mnemonic sentence into word list
std::string my_sentence = "market parent marriage drive umbrella custom leisure fury recipe steak have enable";
auto my_word_list = split(my_sentence, " ", true);

// Create an optional secret passphrase
std::string my_passphrase = "my secret passphrase";

// Create 512bit seed (without optional secret passphrase)
auto hd_seed = decode_mnemonic(my_word_list);
data_chunk seed_chunk(to_chunk(hd_seed));
hd_private m(seed_chunk, hd_private::mainnet);

// Derivation of master public key M
hd_public M = m.to_public();

// Derive public children of master key M
auto M0 = M.derive_public(0); //Depth 1, Index 0
auto M1 = M.derive_public(1); //Depth 1, Index 1
auto M2 = M.derive_public(2); //Depth 1, Index 2

// Derive further public children
auto M10 = M1.derive_public(0); //Depth 2, Index 0
auto M11 = M1.derive_public(1); //Depth 2, Index 1


How to start mining pool? Can I start p2pool in shared hosting?  If yes, how to install p2pool ?
I am newbe in this field. What are the pre-requirement for starting pool business ?
 Which is best script for pool ?  Github is down now ?

The short answer is yes. P2pool source code is available at https://github.com/forrestv/p2pool. If you stand up a P2Pool proxy (probably hundreds of them on the Internet actively running) such a server will maintain its own P2Pool sharechain state. As most mining pools, you will also need an active full node of the Bitcoin blockchain to validate the transactions being mined are indeed legitimate. Other miners can connect to your P2Pool proxy (that is part of the distributed P2P network) using either Stratum or GBT protocols that both bfgminer or cgminer support. Those same miners don't have to be sharechain-enabled. The P2pool sharechain is transparent to them. P2Pool supports numerous other alternative coins, and as a P2Pool proxy service you can reap additional merged mining benefits beyond the fixed mining fees established.


What is the maximum anonimity set of a CoinJoin transaction? I found the only limiting factor is the maximum standard transaction size which is 100k bytes.
The most common transactions we are concerned with are 1 input, 2 outputs and the second most common are be 2 inputs 2 outputs transactions and the sizes of these transactions are about 220 byte and 360 byte.
therefore the maximum achievable anonimity set would go from 270 to 450 (100k/360=270, 100k/220=450).

Am I correct so far?
Is there any more limiting factors?
Does SegWit elevate the size of the signature out of the calculation of maximum standard transaction size, therefore resulting around 30% more anonimity sets? (Signatures are 71 bytes on average.) So in this case 351 to 468.

Regardless of the maximum size of a single transaction, a CJ anonymity set can be made arbitrarily large (bounded, of course, by participants) by building a multi-stage switching network out of joins.

This was described in the original coinjoin post:

  In particular, if you can build transactions with m participants per transaction you can create a sequence of m*3 transactions which form a three-stage switching network that permits any of m^2 final outputs to have come from any of m^2 original inputs (e.g. using three stages of 32 transactions with 32 inputs each 1024 users can be joined with a total of 96 transactions).  This allows the anonymity set to be any size, limited only by participation.

There is no atomiticy required between these transactions-- other than if some users drop out the anonymity set will be less than expected.


Parse scripts to extract address I want to parse a script with c++ to gain an output address from it.
can anybody introduce a suitable library or a sample code which extract addresses from scripts ?

Have a look at libbtc (https://github.com/libbtc/libbtc).

There is a function btc_script_classify() which will return what script type it is (P2PK, P2PKH, P2SH, P2WPKH, P2WSH) and it will return data elements (usually the RIPEMD160 of the pubkey).


Speed of operations in the Bitcoin network Did anyone measure how fast transactions spread through the Bitcoin network? For example, how long does it take for a newly generated block to be propagated to most active clients?

Mainly asking this question to get some general idea whether an alternative protocol that would aim to have faster transactions is really feasible, or is 10 minutes a good buffer.

The alternative currency Geist Geld is experimental and is trying to approach a maximum block rate (that's currently achievable), and has apparently settled upon a target block rate of 1 block per 15 seconds. However, the block rate doesn't necessarily make a substantial difference to how you would use a currency as you could still consider a small transaction accepted even before it's been included in a transaction block, whereas with a faster block rate you may need to wait just as long.

There has been lots of discussion on how a faster block rate would affect things (eg here, here, here, and here) but I think that ribuck summarises it well in that last link: "If you make the blocks too frequent, you get more cases where two blocks are generated at nearly the same time. Due to network propagation delays, this can cause temporary splits in the block chain. On the other hand, if you make blocks too infrequent, it takes too long for a transaction to become essentially irrevocable."

That same link mentions a calculated latency of 2.11 seconds.

With a block rate that's too fast, you may end up with miners consolidating within a part of the network with low latency, creating an unfair distribution of mining returns.