Deterministic - BIP32 Derivation Gap Limit I'm creating many derived addresses from a xprv (HD private key).

I've been reading about the gap limit problem. The gap limit is 20 addresses ahead.

How do I get my wallet to detect funds, in addresses, that have surpassed the gap limit?

i.e. m/100 derived address transactions would not get detected, until the gap limit is filled. Are there any tricks to get around this?

If not, I plan to bulk import corresponding WIF keys for each address. Do people recommend doing this?

Ideally I would like everything controllable via 1 master key.

The BIP44 gap limit approach is a weak or even broken concept for recovering BIP32 based wallets.
It makes an assumption about the use case of a BIP44/BIP32 based wallet.
The default limit of 20 (some even use 5) will quickly lead to lost funds in recovery if the wallet was used in non-super-trivial use cases.
The missing metadata in a BIP39 mnemonic or in BIP32 xprivs tend to make recovery complex and has a moderate risk of missing funds.
The ultra-safe(est) way to recover a BIP32 seed without metadata is to derive all possible keys (impossible) and all possible scripts, then, rescan the blockchain. But yes, your guess is right,... this is infeasible.
So how to recover?
If you develop a wallet or rescan tool, use a very large gap limit. Maybe 1'000 or 10'000.
If you are just a novice user?

Well, just make sure you keep your old backup in case you detected lost funds.
Don't purely trust a BIP32/39 recovery, make sure all your funds are there
If not, consult an expert (watch out for fraud, use a trusted person), or research how to extend the gap limit and how to derive multiple script types
If you are using Electrum, read here about the gap limits and ways to extend it


Blockchain as a solution for software licensing? I'm curious as to what blockchain could do to solve or improve upon the issues surrounding paid software licensing? (Verification, piracy prevention)

I've seen such claims all over the web when there is discussion around which domains blockchain has the potential to innovate.

I'm very interested in this if it is true but I cannot think of any tangible benefits opposed to a traditional license server (i.e. user has to verify their license key by checking against your server)

I suppose one benefit could simply be that it gives you the benefit of a license server without having to actually have a server, the blockchain would verify the validity of licenses.

Other than this, what else could blockchain do? Piracy would still be an issue, nothing will prevent me from lending my license  ( say , my private key) to my friend.

Also another problematic issue is what incentive will there be for miners?

All of the hype made me very optimistic but I can't find anything to back up these claims.

The following are just some ideas that came to my mind when reading your question:

Let's say that all the instances of the software you want to protect share a blockchain with the servers of the producer company.
Licenses are released through the blockchain as a transaction, with the user who purchased the license as the receiver. This user, who will have its own private key (let's say a password), will be the only one able to unlock the license.

Each copy of the software program will also be registered on the blockchain (as an integrity checksum), so to uniquely associate the license to that specific copy.

The "license" transaction contain all the data that need to be verified, including:

the "coin" representing one license (maybe more than one)
the user ID (public key)
the the software copy ID/IDs (embedded in the software image)
a timestamp for the beginning of the license validity
the expiration time / date

Alternatively to the user ID, a unique identifier of the machine that will be allowed to run the code can be stored (e.g. the CPU ID, or something stored in a non-writable memory, so that it cannot be modified; this data can be sent by the user along with a "purchase transaction" on the same blockchain).

Now, the protected software connects to the blockchain each time it runs, to verify it can be actually run on that computer: if all the conditions written in the license transaction are valid, it runs the program, otherwise it stops.

Since data store in the blockchain cannot be modified, this prevents tampering.
The software copy ID can be an integrity checksum of the program image that is also stored on the blockchain; so if someone tries to crack it, the software will not recognize itself because the new checksum is not stored on the blockchain (only the transactions signed by the producer will be valid).
In case of software updates, new checksums can again be released through the blockchain (by the producer).

So, these were just a couple of ideas, but it's my belief that it wouldn't be hard to think about more and more sophisticated techniques.

In conclusion, let me point out that what we are actually talking about here, is a special case of the so called "smart contracts".

Hope this helps


I lost my Bitcoin wallet passhrase. Are my Bitcoins lost? After reading about all the hacks I created a passphrase that I cant remember.

Are Coins lost forever in the blockchain?
There must be a lot of coins in this state… Is there any way to see what coins are active?
Trying to retrieve these coins via the public key would break the security of the whole network??
If I know 80-90% of what the passphrase is… Is there a piece of software that can brute force attack using my knowledge of the passphrase as a educated library attack??

If you have encrypted your Bitcoin.org wallet with a passphrase, then only having that passphrase will allow that to be decrypted.

If you have a backup of your wallet prior to performing the encryption step, then any coins from that wallet that still have not been spent can be recovered.

Otherwise, without that passphase to open the wallet you cant get to the private keys inside the wallet, and thus cannot spend those funds.

There is no difference between "lost coins" and "unspent" coins, so no there are nothing more than anecdotal evidence as to how many coins have been lost.

There are ways to try to recover your wallet based on hints about what you remember about your passphrase.


Does leaving your wallet unencrypted mean that all the private keys bundled in the wallet are susceptable to loss of confidentiality? I noticed that multiple private keys can be imported into a wallet.  If each private key originally had their own private password password to protect the elliptic curve private keys, does importing them into the wallet mean that they are clear text within the wallet and only the wallet's password is the means to protect those keys when the software wallet client is functioning?

Here is a use case for bundling numerous private keys together within a wallet. A small businesses will want to have a public key released to each of their clients.  Then, they will want to bundle the associated private keys into a single wallet.  This will allow the small business to not expose their overall income, but still spend their currency as if it where all from one pot.  Would deterministic wallets (not Bitcoin-Qt nor Multibit) be a better fit for small business need?

When you export a private key, you are essentially just exporting a plain text private key (you have to type in a password to export is a giveaway of decryption happening). So yes, an unencrypted wallet has all the private keys plain text no matter what.


Bcoin crashes with node version error I installed bcoin and I get this error about the version:

$ node -v
v8.2.1
$ npm -v
5.3.0
$ bcoin
/usr/lib/node_modules/bcoin/lib/db/backends.js:26
    throw e;
     ^
Error: The module '/usr/lib/node_modules/bcoin/node_modules/leveldown/build/Release/leveldown.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 48. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at Object.Module._extensions..node (module.js:598:18)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at bindings (/usr/lib/node_modules/bcoin/node_modules/leveldown/node_modules/bindings/bindings.js:76:44)
    at Object.<anonymous> (/usr/lib/node_modules/bcoin/node_modules/leveldown/leveldown.js:4:46)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)

any ideas why?

This probably happened because you updated your node version after your installation of bcoin. You need to recompile the C++ bindings for the leveldown module to fix this. Checkout npm rebuild: https://docs.npmjs.com/cli/rebuild


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

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


Can someone explain to me how do you read the blockchain.info transaction data? Ok so i've been using bitcoin for some time now, but i never figured out how to read the blockchain.info transaction data. Here's a sample of what I mean:

http://prntscr.com/2dj7tr --- https://blockchain.info/address/1KnfCxy8XkNQu9pYpqEU1fxAELqRsYDbZK

Here are a few questions that i have:

Are those bitcoin wallet addresses on the left and right column?
What is the top address representing that starts with a 7 and every other address starts with a 1? Whats the difference?
Can someone explain exactly whats going on here? I see 5 addresses that are pointing to the many other addresses on the right column.
On the bottom it seems like it's a total of $1453, but if you add up all those addresses it clearly doesn't equal that.

Bitcoin addresses on the left are valid addresses from wallet, someone has private key for them. Bitcoin addresses on the right can be any addresses, even addresses, that nobody has private keys for them (so bitcoins on them are unspendable).
This is transaction id.
Bitcoin transaction can have many addresses on the left and on the right. Bitcoins are moved from left addresses to right.
You opened a page with specific address. $1453 means, that this address received $1453 with this transcation. If you open a page with this transaction directrly https://blockchain.info/tx/7dd8efe094e11c890eea7dc65e9bc7fb44903ed3e9b856e854d7d31e247ea1f2 you can see total sum. If you sum up left part and substract sum of right part, you can calculate fee.


How secure is using TOR in Lightning Network? In following paper (Link to the paper) we read:

  "combining Tor and Bitcoin creates an attack vector for the
  deterministic and stealthy man-in-the-middle attacks. A low-resource
  attacker can gain full control of information flows between all users
  who chose to us Bitcoin over Tor. In particular the attacker can link
  together user’s transactions regardless of pseudonyms used, control
  which Bitcoin blocks and transactions are relayed to the user and can
  delay or discard user’s transactions and blocks."

On the other hand, in this answer(Link to the answer) we read:

  "in order to maximize your privacy you should run your lightning node
  on TOR even though the routing of payments is a source based
  Onionrouting similar to TOR."

According to the paper that is addressing an attack on the Bitcoin, How secure is using TOR in Lightning Network ?
Does use of TOR in LN increases privacy by hiding the IP address WITHOUT increasing the the proposed man-in-the-middle attack in the paper ?

The paper you link to when used as advice rather than a scholarly investigation into the tradeoffs of different choices is outright bad advice.

The attacks they give are largely generic and have little to do with tor itself, while use of tor provides non-trivial protection against many other vectors, and if used consistently and exclusively at least prevents linking the users network identifiers with their activity. Almost every security decision is an exercise in tradeoffs when it comes to advice you cannot just consider the risks of one option while pretending the alternatives are riskless.

Moreover, its not uncommon to see this article breathlessly promoted on the same pages that recommend users use lite wallets that simply send all their addresses to remote hosts-- effectively always operating under the worst case possibility the article suggests. If using tor is a bad idea then using, say electrum, is "holy crap why would you ever do that?!" -- yet you don't see that level of promotion against using electrum or similar.

Given the recent rise in promoting it I am concerned that some parties might be sharing it with the express intention of undermining user privacy.


Does AirBitz have federated servers? I have been looking for a service that uses federated servers.

Why?

Because I am paranoid. And because companies pay me to be imaginative in my foe analogies.

We don't have federated servers right now but we do utilize open source, publicly accessible libbitcoin nodes which both Airbitz and 3rd parties host. This is a fully compatible replacement to bitcoind nodes but provides much faster blockchain queries, similar to Electrum servers. If you'd like to run one, we'll include it in the list of servers that our clients could access.

Our Git encrypted storage "sync" servers are also peer-to-peer but currently only we host them.


why is transaction history from genesis to date necessary to store on the blockchain to prevent double spending? I am beginning to understand the mechanism of bitcoin blockchain, and I was wondering something.
The transactions history represents the 'state' of the bitcoin at any point (or EVM according to the Ethereum whitepaper).
Blockchains address the problem of double spending by recording ALL transactions ever done using the particular currency in the blockchain, from genesis till date. Inevitably the size of the chain keeps increasing and will continue to do so indefinitely.
My question is, why is there a need to track transactions?
Why cant we just track the balance in every account?
I understand the problem of double spending, and how a person can try to spend the same money twice. We associate the balance of an account with a public key of the account. the transaction history provides us with a way to track the balances.
But why cant we discard the transaction, and just store the remaining balance after verifying the transaction? Why does the 'how the money got there' important?
Why is double spending an issue with this approach (because if a transaction is verified, then the balance in the account must go down?)
What I am asking is, why cant we track ALL ACCOUNTS instead of ALL TRANSACTIONS? (this way the blockchain size is a function of number of nodes, not number of transactions)

why is there a need to track transactions? Why cant we just track the balance in every account?

Well, for a start, the Bitcoin protocol has no concept of accounts or balances.
To change Bitcoin to work on the basis of balances would throw up some interesting problems

how does a node calculate the balance in the first place?
how do we relate transactions to balances?
how are accounts created, managed and authenticated in a global trustless peer to peer system?

Any cryptocurrency that addresses these is clearly so vastly different to Bitcoin that it couldn't reasonably be named Bitcoin.

A bitcoin node doesn't need to store the whole transaction history. This is why there are pruning nodes. However a pruning node needs to have processed all transactions so that it can discard transactions whose outputs have all been subsequently spent. In your hypothetical account-based cryptocurrency a node would also have to process all transactions to calculate the correct balance. The main alternative is to trust some other nodes run by other people and hope that they are honest.

Double spending also poses some interesting problems for an account based peer-to-peer cryptocurrency. A global network of nodes can't guarantee that all nodes see the same blocks or transactions in the same order. There has to be a deterministic method of reconciling differences that are guaranteed to converge on a common outcome.
If one node receives first a transaction that reduces some other person's account (e.g. A gives 4 of their 5 BTC to B) and a different node first receives a conflicting transaction (e.g. A gives 3 of their 5 BTC to C) , the first node presumably rejects the A-C transaction (insufficient balance) while the second node rejects the A-B transaction for the same reason.

Storing a list of all transactions with unspent outputs may seem like a chore. But having each node storing and continuously updating at least one account balance for each of 7 billion people might also be a challenge.

There will be cryptocurrencies that address these issues but those are not Bitcoin. So it isn't really sensible to ask whether Bitcoin could do this. If it did it wouldn't be Bitcoin.


What is the standard protocol for pools/miners? The Bitcoin client protocol is well documented in the Bitcoin Wiki, but I can't find much on the protocol used by pools and miners. Is it described anywhere?

When there were no pools, all of the first mining clients interfaced directly with Bitcoin. They connected to Bitcoin's JSON-RPC interface and used the getwork RPC method to get the required work. Getting work from a pool is the same as getting work from Bitcoin. The client connects to the pool over HTTP, often using the same HTTP authentication that Bitcoin's JSON-RPC interface uses; the client sends a JSON-RPC getwork message; and the pool sends back a JSON-RPC getwork response.

Many pools nowadays support some extensions to the getwork protocol that Bitcoin does not.

See:
https://en.bitcoin.it/wiki/Getwork


Can I do blind refunds relatively reliably? If I receive a Bitcoin payment, and do not have any other information about the sender, can I refund the payment with a decent degree of reliability?

The current state of things is that the general problem didn't have a catch all solution, but blockchain.info wallets, and I believe coinbase as well, allows you to send the tx back.

How reliable are blind refunds in practice?

Do not use the raw protocol to issue refunds to addresses without first confirming with the sender that this is acceptable.

Most services generate unique addresses for each transaction.  Unless your customer owns the private key to the address from which the initial funds were sent, you can't be sure that they will receive the refund.  Different services have different implementations but if a customer sends you funds from a third party service that uses a single address for payments, the funds would be deducted from their account via a SQL entry and sent through a shared address.  The returned funds would be received by the service but not necessarily by your customer.

You should contact customers and have them confirm a refund address before sending.


Is there a good blockchain explorer like blockchain.info available for bitcoin cash? I usually use www.blockchain.info for bitcoin if I want to get information about:

a specific address (transactions, balance...)
a specific transaction (source and target address, amount, fees, etc.)
number of unconfirmed transactions on the network

Is there a similar site for bitcoin cash? Google was not very helpful because it gave me lots of results applicable only  to bitcoin and not bitcoin cash. Thanks!

Try Blockchair. It is a blockchain explorer for both Bitcoin and Bitcoin Cash.


Does parent also pay for child? One Bitcoin core mining policy is CPFP - child pays for parent. That is, transaction with high fee pays for its parent.

Does it also work the other way - that is, does transaction with high fee pays for child transaction that has low fees, given that they are both in the mempool? Or is the policy only "one way", from child to parent.

Does it also work the other way - that is, does transaction with high fee pays for child transaction that has low fees, given that they are both in the mempool? Or is the policy only "one way", from child to parent.

The policy is one-way: the parent doesn't pay for the child.

The child can't be included unless the parent is included, so effectively the miner can choose to include none of them, only the parent, or both the parent and the child.  The miner will choose what pays the most for its resources. This means sometimes it will include a low fee parent in order to be able to include a high fee child but it only works in that direction.


In Stratum protocol, whether the miners know the mining address? In Stratum protocol, since the coinbase transaction has to be hashed in the miner's side, so the pool has to send coinbase1 and coinbase2 to the miners. Therefore, is it possible for the miner to decode the output address of the coinbase from coinbase1 and coinbase2?

Yes, it is possible. The coinbase outputs are embedded in coinbase2.

E.g. for a regular 1-output pay-to-pubkey-hash coinbase tx it contains the pubkey hash which can redeem the coins.

Check the stratum official documentation. It has a real-world example which generated raw block 000000002076870fe65a2b6eeed84fa892c0db924f1482243a6247d931dcab32.

The raw transaction output[0] looks like this:

{
  "value":"50.00000000",
  "scriptPubKey":"OP_DUP OP_HASH160 d23fcdf86f7e756a64a7a9688ef9903327048ed9 OP_EQUALVERIFY OP_CHECKSIG"
}

Or, in hex, 00f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac.

The miner gets this parameters from stratum:

"params": [
  /* job id    */ "bf",
  /* prevhash  */ "4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000",
  /* coinbase1 */ "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff20020862062f503253482f04b8864e5008",
  /* coinbase2 */ "072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000",
  /* omitted, not relevant */
]

Notice coinbase2 contains the hex of the block output, including d23fcdf86f7e756a64a7a9688ef9903327048ed9, i.e. the pubkey hash (which you can derive the address from).


Can Cryptocoins be spent through payment services? can Cryptocoins be spent through payment systems like Paypal? i.e. instead of linking to  a credit card, linking to the wallet address. or do they have to explicitly accept bitcoins/crytpocoins?

No, a cryptocurrency wallet does not itself have any link or correspondence to fiat (traditional) currency. If the payment processor doesn't explicitly support Bitcoin or other cryptocurrency, then they are not interoperable.


How did I get a Test net I was downloading bitcoin for the first time and during the last 3 minutes while doing some other work on my computer, something about an interruption flashed and then it looked as if nothing had ever happened and it was not downloading. I went to the file I had saved it in and there was a Bitcoin Core [test net] so I clicked on it and it is now synching. Is this normal? Any advice? I was told to start the download again?

Bitcoin Core's installer will also setup a shortcut for testnet. Testnet is a different blockchain and network specifically for testing. This is normal and expected behavior, but there is no reason for you to be using testnet. You should stop Bitcoin Core and just use the normal launcher.


Trouble syncing my QT bitcoin wallet 12 days already and 144 weeks to go I have been syncing my QT 8.5 beta bitcoin wallet for 12days and it has 142 weeks to go there must be something wrong it started at 160 weeks.

What can I do about it at this rate it my take 3 months
I sent a bitcoin when it was syncing small amount when though but larger amount don't. On other sites it said you can send when its syncing but I now know you can not.

You should upgrade your wallet to the latest version of Bitcoin Core (it's the same thing as bitcoin-qt). Bitcoin-qt 0.8.5 beta is extremely old and unlikely to be able to actually sync the Bitcoin blockchain. Install the latest version of Bitcoin Core from bitcoin.org and let it sync the rest of the blockchain. Upgrading to the new version will not remove any blockchain or wallet data so it will use what you have already downloaded.


Where can I get a visual example of the entire bitcoin network starting from physical network to the overlay network *Note I am not a technical person so excuse any misunderstandings on my part here.

I am looking to get a sense of how the entire system looks like as a whole starting from the physical hardware (such as miners and full nodes) to overlaying networks (node transaction relays maybe?) to mobile clients omitting and receiving transaction data.

If I recall correctly, I believe there is a diagram like that in the O'Reily book Mastering Bitcoin by Andreas Antonopoulos.  It shows the different types of nodes and how they interact on the network.


how to get clients sync status via API I try to use the build in API by bitcoin client and I wonder how to get the sync status via API of a runing client.

You can do it like this:

1) getblockcount gives you the most recent block you have [call it n]

2) getblockhash n gives you the hash for that block [call it hash]

3) getblock hash gives you the block. You can compare the time of that block with the current time, and estimate how many blocks behind you are. It should be approximately (now - blocktime) / 600 if the times are in seconds.


ubuntu usb drivers to run bfgminer Been racking the brain forever, ubuntu noob, but wiped W7 for Ubuntu, updated and upgraded, checked out bfgminer and cgminer, both when running good .bat file with good pool, but they say no device?

Adding zus:all or just all or just auto wont add the X3 Thunder I attached via USB to the laptop? I have had issues another laptop like this and had to use a special driver.

Any ideas or directions are greatly appreciated. Also I'm not against either cgminer or bfgminer, but id like to get one working on this ubuntu laptop at this point, I have a device that should be hashing and i cannot get working.

Are you running the miner as root? Do the devices show up when you run lsusb ?

In my experience, your user doesn't have access to the buses to talk to the devices, but putting sudo at the start (running as root) let me see and talk to my devices.

(I'm using cgminer compiled from source for LTC mining rather than BTC, but the principle should be the same.)


Where is the number of Bitcoins limit specified? Reading the original Nakamoto paper, I cannot see any discussion or reference to the upper bound on the number of bitcoins.

Where is it specified that at most 21 million bitcoins will be minted?

Every 210000 blocks, the reward for mining that block halves. It started out at 50BTC and now it's at 25BTC. Eventually it'll get to zero and no more bitcoins will be made.


How to issue a CPFP? I was reading about CPFP (child pays for parents) recently and I didn't completely get the concept of it.

Can someone please give me a brief explanation of how it should be done and what are the wallets that currently support it?

Is my understanding of CPFP even correct? A user sends a transaction to another, which is not confirmed, that user can send another transaction that is "connected" to it with a high fee, that when a miner mines it, they are forced to mine the first, unconfirmed transaction?

From the glossary:

  Selecting transactions for mining not just based on their fees but
  also based on the fees of their ancestors (parents) and descendants
  (children).

Thus, we understand that this is a policy that is implemented by a miner.
Now, the way we can ensure that our stuck transaction falls under this policy is by ensuring our stuck_tx has a child_tx with good fees.

For creating a child raw transaction, we just need the txid from the stuck transaction and new address to send it. Put the funds, the change, what's left is the fee. Sign it and broadcast it.

To determine the right fee and more details check this fee bumping page on bitcoin wiki.


Does the size of a pool affect the number of invalid shares? Does the size of a pool affect the number of invalid shares?  If so why does it?

There's no reason pool size should affect the number of invalid shares. If you're seeing different amounts of invalid shares on different GPUs, the most likely explanation is that the GPU is too hot, improperly overclocked, or failing.


How to compile Bitcoin-Qt from GitHub source on Arch Linux? Here are the instructions I have created so far:

Install the necessary dependencies

pacman -S boost boost-libs openssl db base-devel qrencode qt4 automoc4

Clone the GitHub repository:

git clone https://github.com/bitcoin/bitcoin.git
cd bitcoin

Checkout the Git source to the latest release listed at https://github.com/bitcoin/bitcoin/releases:

git checkout v0.8.5

Change to the source directory:

cd src

Compile Bitcoin-Qt from source

qmake-qt4 -makefile -Wall USE_QRCODE=1
make

There are a ton of generic instructions spit out when I enter qmake-qt4 command and then upon entering the make command I am told:

  make: * No targets specified and no makefile found.  Stop.

FYI, I am using the PKGBUILD file as a guideline for creating the above instructions.

Since the build system has moved to Autotools, the method for building Bitcoin-Qt is a bit different.

git clone https://github.com/bitcoin/bitcoin.git bitcoin
cd bitcoin
git checkout v0.8.5
./autogen.sh
./configure --with-qt
make -j8


Viability of Bitcoin due to transaction fee? I've been thinking about this for quite some time, and spent some time searching for information online, but haven't really found good answers.

The transaction fees of crypto currencies are relatively low for large transfers, but high for small transfers. As the price of bitcoin rises, the transaction cost also rises. Won't this cause issues in the long run for normal day-to-day use of Bitcoin, resulting in it only being used for (fairly) large transfers or money?

According to https://bitcoinfees.21.co/:

  The fastest and cheapest transaction fee is currently 360 satoshis/byte, shown in green at the top.
  For the median transaction size of 226 bytes, this results in a fee of 81,360 satoshis.

Currently, that price translates to EUR 2.07001 or USD 2.31862, according to https://www.xe.com. If you're sending e.g. 1000 EUR, then that amount is fine, but if you're sending 10 EUR (I'm imagining a Bitcoin ATM), the transaction fees will be way to high.

To me it seems these fees will be a huge impediment on the acceptance of the currency by "civilians"?

Relative economic advantage

As you've noted, transaction fees are paid for block space and not relative to the amount that is transferred. This causes an obvious economic advantage to larger value transfers and would inevitably push out smaller transfers if supply remains the same and demand increases.

Supply increase

This is why for several years, there have been proposals to increase the blockspace supply. This would probably mitigate the problem in the short term, however would probably quickly reestablish the same problem at a lower fee level that would continue to rise as demand catches up.

There have been some proposals to create automatically adapting blocksizes, but these proposals have so far been incomplete and especially deficient in providing a mechanism to push for blocksize decreases. The latter is important to actually achieve a self-balancing system as a quickly growing blocksize would cause other parts of the system to fail due to vastly driving up the cost-of-node-option.

Demand management

The other side of increasing the supply would be to manage the demand. This has happened in the past to some degree by transactions moving offchain, e.g. into third party custodial wallets such as the service ChangeTip that facilitated tipping internet contributions or wallets such as Coinbase. A lot of work has gone into a decentralized second layer that basically acts as a aggregation layer for transactions. This Lightning Network is thought to settle on a fee system relative to the transferred value as the costs of relaying payments scale with the amount transferred. If it should gain widespread use it is expected to provide a haven for small value transactions that automatically rebalances with on-chain demand.


Bitcoin - Read transaction details from LevelDB I am new to LevelDB and the way BTC keeps everything in the database. I went through article How does Bitcoin read from/write to LevelDB but was not able to get to the first step -
Transaction
246c5a81b6ad0dfc0dbc0b2ff5bde65ee1913f75a47d409b8ff8074a27ec1000

is identified in the LevelDB by:
c0010ec274a07f88f9b407da4753f91e15ee6bdf52f0bbc0dfc0dadb6815a6c24

How does the first string translates back to c0010ec274a07f88f9b407da4753f91e15ee6bdf52f0bbc0dfc0dadb6815a6c24? I understand the first character is c but what calculation makes the second string?
I am using .Net Core to read level DB using LevelDB.Standard nuget package (Assembly LevelDB.NET, Version=2.1.6.0)

The two strings are the same, but with the bytes (hex digit pairs) in reversed order (with an extra c at the beginning).  The first string starts with 24 6c 5a ... and the second string ends with ... 5a 6c 24.
It looks like an endianness flip to me (network order is big-endian, but  your machine is presumably using little-endian order).  I don't know what the meaning of the extra c is.


Unable to broadcast multi-sig transaction that has been double signed Having same issue as this question trying on both electrum wallet in terminal and via coinb.in/#broadcast. Unclear from existing answer how to resolve

In terminal

Electrum v 2.7.9; Debian system

$ electrum broadcast <tx id>
> Daemon not running; try 'electrum daemon start'
$ electrum daemon start
> starting daemon (PID 12639)
$ electrum broadcast <tx id>
> Daemon not running; try 'electrum daemon start'

Via coinb.in

On coinb.in/#sign --> "The above transaction has been signed"
So, to broadcast:

  16: mandatory-script-verify-flag-failed (Operation not valid with the current stack size)

I'm not sure what this error means or how to resolve it. Any help appreciated.

edit, transaction: 0100000001cd74eb23e3c3eb15dc7717c9cdb435e3253e155bc05573ff2702d29cca078fa401000000b40047304402200bb08d102f6faa620f03a6411de2841c7e977921897c70e9fdff48ebdd952cee022046441eb587e2086761c7809e6dd00a1d07767c151c32d08f9bb9919e4042689e014c695221034e52799f008f8704f76c3d1eef880dce25760d7db8d29687e54f7af74b49a3d82102f5fa6de45a2c251ca2872c655c43ae73fba0da88167fc8ab94145e874d841f3121034af4b449728a4b1d9150c55a99c9433bc19826ffb9ee77c6207fafa0eb82b4dc53aeffffffff01a8883800000000001976a9147e47475e78ef1ae629288f221601f2f6385173e088ac00000000

The first input of your transaction spends a P2SH 2-of-3 multisig output, but only contains 1 signature. It needs 2.


Is it possible to build pay to script without destination address? I am thinking of a transaction that can only be spent if the recipient proves that he has burnt a specific amount of a colored coin.

Because the recipient is not known beforehand, is it possible that the recipient provides the destination address together with the proof when trying to spend the funds, or the destination address has to be always provided when building the scrpit?

Addresses are a human-convenience feature, and have little bearing on the underlying Bitcoin transaction.

Common types of addresses rely on sending coins to scripts that allow spending by signatures from certain private keys. However, you can have scripts that allow spending as long as any given locking requirement is met.

Unfortunately, the script must be self contained, and you will not be able to enforce a burn requirement, as there is no way to check if the coins have actually been burned on-chain. Your best bet would be to lock the coins to a key, and have an off chain way to share that key with someone who burns the required amount of coins.


How would I be able to show 24 open, high & low on my site made with php I'm a self thought designer/developer that knows basic photoshp/css3/html5 and a little python/php. I have never used an API to fetch  stats, so can you please point me in the right direction?

I would love to show the 24 hr open, high & low price of BTC on my php site, here is the api reference: https://docs.gdax.com/?php#get-historic-rates

Could any of you make a .php file with the necessary code for me? It would be such a great help.

I got this code to get started:

<?php

// get the HTTP method, path and body of the request
$method = $_SERVER['REQUEST_METHOD'];
$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));
$input = json_decode(file_get_contents('php://input'),true);

// connect to the mysql database
$link = mysqli_connect('localhost', 'user', 'pass', 'dbname');
mysqli_set_charset($link,'utf8');

// retrieve the table and key from the path
$table = preg_replace('/[^a-z0-9_]+/i','',array_shift($request));
$key = array_shift($request)+0;

// escape the columns and values from the input object
$columns = preg_replace('/[^a-z0-9_]+/i','',array_keys($input));
$values = array_map(function ($value) use ($link) {
  if ($value===null) return null;
  return mysqli_real_escape_string($link,(string)$value);
},array_values($input));

// build the SET part of the SQL command
$set = '';
for ($i=0;$i<count($columns);$i++) {
  $set.=($i>0?',':'').'`'.$columns[$i].'`=';
  $set.=($values[$i]===null?'NULL':'"'.$values[$i].'"');
}

// create SQL based on HTTP method
switch ($method) {
  case 'GET':
    $sql = "select * from `$table`".($key?" WHERE id=$key":''); break;
  case 'PUT':
    $sql = "update `$table` set $set where id=$key"; break;
  case 'POST':
    $sql = "insert into `$table` set $set"; break;
  case 'DELETE':
    $sql = "delete `$table` where id=$key"; break;
}

// excecute SQL statement
$result = mysqli_query($link,$sql);

// die if SQL statement failed
if (!$result) {
  http_response_code(404);
  die(mysqli_error());
}

// print results, insert id or affected row count
if ($method == 'GET') {
  if (!$key) echo '[';
  for ($i=0;$i<mysqli_num_rows($result);$i++) {
    echo ($i>0?',':'').json_encode(mysqli_fetch_object($result));
  }
  if (!$key) echo ']';
} elseif ($method == 'POST') {
  echo mysqli_insert_id($link);
} else {
  echo mysqli_affected_rows($link);
}

// close mysql connection
mysqli_close($link);

Thanks!

A lot of the code you are sharing is unnecessary and unrelated to working with APIs in PHP.

It's 3 basic steps. Define the URL of the API endpoint you want, fetch that URL in PHP, return the values to your page.

Here's a simple example:

<?php
//define API endpoint
$url = "https://api.gdax.com/products/BTC-USD/stats";

//fetch the url and convert the JSON into an associative array
$fgc = json_decode(file_get_contents($url), true);

//assign values to variables
$open = $fgc["open"];
$high = $fgc["high"];
$low = $fgc["low"];
$close = $fgc["close"];
?>

My Website

Bitcoin 24 HR stats

Open: $<?php echo $open; ?>

High: $<?php echo $high; ?>

Low: $<?php echo $low; ?>

Close: $<?php echo $close; ?>


How can forks coexist even though only one of the is the longest chain? We know Bitcoin has some forks like Bitcoin Cash and Litecoin. They make a new branch on chain, so how can they coexist without the shorter branches being discarded, and just the longest chain staying around?
In the Satoshi paper, we read that just the longest chain is valid. So, if each of them has a longest chain, why doesn't one override another, for example assuming Litecoin has longest chain, why are Bitcoin or Bitcoin Cash still working?

For one, Litecoin is not a fork of Bitcoin. It relies on the same base code, but it is a separate network, and they do not share the genesis block.

Bitcoin Cash is a true fork of Bitcoin, in the sense that they can be traced back to the same genesis block.

Both chains continue to exist as they follow different consensus rules. Blocks on the bitcoin Cash chain are considered invalid by the nodes on the Bitcoin chain, and vice-versa. Since they have conflicting consensus rules, they are each the longest valid chains for their own set of the consensus rules.

Edit:

To include some additional information based on the comments, we can look at why cross communication doesn't happen (in most cases).

For litecoin, the genesis block, network magic bytes (a set of 4 fixed numbers that identify protocol messages for a network), proof of work algorithm, and a number of other things have been different from day one. This would prevent ltc nodes from communicating with btc ones since they would disagree on just about everything.

Things are a little more blurry with Bitcoin Cash. On August 1st, 2017 (almost exactly one year ago!), Bitcoin Cash altered the consensus rules of Bitcoin at that time. They did so by increasing the maximum allowed block size to 8MB, the difficulty adjustment algorithm, and the tx signing method (to prevent replay attacks).

These changes went into affect at block #478558. For all blocks mined after that, Bitcoin and Bitcoin Cash were following different rules. Even if a Bitcoin Cash node was to broadcast a new block to the Bitcoin chain, it would be rejected as:

It may have exceeded 1 MB
The transactions were signed in an incompatible way to Bitcoin's signatures
The difficulty would be vastly lower than the Bitcoin network's difficulty (it was lowered quickly using the new EDA algorithm in Bitcoin Cash). This means that even if the BTC chain received 10 BCH blocks for each BTC block, the total work done would still be higher on the BTC chain since it has a higher difficulty.

Based on the above, Bitcoin nodes would reject the Bitcoin Cash blocks. Moreover, as MCCCS mentioned in the comments, Bitcoin Cash also eventually changed their network bytes, which would prevent a broadcast from accidentally being accepted to begin with, stopping the new block before it even reached consensus validation checks.

Now, lastly, if someone were to manually take the BCH, LTC, Doge, or any other BTC-like chain's data and attempt to broadcast it over Bitcoin's network, they would all still fail various consensus checks.


Can Bitcoin and Bitcoin Cash potentially have the same address? Because Bitcoin Cash is forked from Bitcoin, what happens if two separate users create a wallet, could their address potentially be the same? Let's call that address xyz. Then if someone sends money to xyz which blockchain would it go to?

Sure.

Addresses are not really a thing as far as blockchains go - they mostly just care about the keys involved (or in the case of Bitcoin and Bitcoin based networks, the locking script which locks an output to be spendable only by a certain [set of] key[s]).

Since the key generation process relies on entropy, and does not rely on the network you are creating the key for, it is possible, and highly improbable, that two people are able to generate an identical key.

It is so improbable that no wallet I'm aware of actually checks for key reuse on the target chain. It's simply something that is not likely to occur, provided you have a good enough source of entropy.

Note that even if you do end up generating (or manually copying) a key across networks, the actual "address" may still be different, since Bitcoin uses base58/bech32 addresses, while BCH uses base58/cashaddr addresses. This is merely an encoding, however, and does not change the underlying key required to spend the outputs.


Reindexing of blockchain using bitcoin qt v8.5 using 427% of Macbook CPU My bitcoin qt client v8.5 crashed last week (I had already got full blockchain indexed a long time ago) and I had to force quit it. It's now re-indexing the blockchain but using sometimes up to 427% of Macbook CPU and the fans are on at 6000 revs for hours... It never did this when I first synced up so what is wrong this time round?

Thanks
Bard

When you're synchronizing from network, you're most likely limited by the rate of fetching blocks. When you're reindexing blocks that are already present on disk, only CPU is the bottleneck.

The algorithm to decide where and when to request blocks is relatively stupid, slow, and easy to confuse. This is why during synchronization from network, you rarely use all bandwidth available. This is being worked on, but it's not a simple problem, if you want to avoid many problematic edge cases. EDIT: bandwidth usage should be a lot better since Bitcoin Core v0.10.

When reindexing block on disk, the reference client will by default use all CPU cores available, to speed up the process. You can put par=1 in bitcoin.conf to restrict the validation operation to a single core. As of 0.9 (not yet released), you'll also be able to change this value in the GUI configuration.


How profitable is mining with a ~1GH/s miner? I'm very new to bitcoin mining, so I just tried it out on my mac using MinerGate. I made about 0.000028 XMR in 7 minutes running at 200H/s, equating to $0.0008. I figured that at that rate of money flow, I could make around $9.7/sec with just a 1GH/s speed. This does not seem very possible at all. So where's the poop?

Minergate is not by any means an effecient way to mine alt-coins. If you want to mine Monero XMR, you need to download either the source; and compile a GPU Miner, and configure it to mine off one of the many pools; and do the same for a CPU Miner; that plays nice with your GPU miner.

Claymore's GPU and CPU miner are widely adopted and used, I am not sure if they work on Macs however.

You can visit the bitcointalk.org thread for Monero; and get all the information you need on the OP Thread Post including links to miners; pools, exchanges, etc.

But in closing; XMR is trading very high right now. I mined XMR two years ago and accumulated a lot of coins... this was when BTC was at 400-600 and XMR was 1/15th the current price. Across my systems; I was mining 10-20 XMR a day. But that was 2 years ago and difficulty is drastically higher now.

HERE IS A LINK TO CPU / GPU BENCHMARKS FOR MINING CRYPTONIGHT ALGORITHM COINS

http://monerobenchmarks.info/

HERE IS A LINK TO THE THREAD ON BITCOINTALK WHERE YOU CAN GET STARTED

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

In closing, you may want to look at AEON, which uses a forked version of Cryptonight, called Cryptonight-Light. It hashes at much higher rates. The coin seems to be in a bit of an unstable state development wise; issues with the new wallet release; etc, but in my experience mining the most profitable coin - at the moment - is not always the best strategy.

The key is finding the lower difficulty coins that you can mine now at a loss; that will 10x or 20x in value 12 months ahead. Finding these coins is the hard part; but that's where the money is.


RPC FundRawTransaction: FeeRate I want to pass feerate argument to Bitcoin Unlimited while using fundrawtransaction.

I tried

fundrawtransaction ["020000000001e80300000000000017a914f65d061c8966ae9d0d6add32879a492d99bce5848700000000" {"feeRate":0.00001}]

However, it says

Error: Error parsing JSON:{feeRate:0.00001}]

How can I pass the feeRate argument like these lines (param0=02000..., param1=feerate) do, but using Core's RPC Debug window?

After a little research, it appears that the syntax is valid for Core (these lines), but Bitcoin Unlimited doesn't have that code.


Is there a possibility that the whole blockchain system will be DOWN? I want to know if there is a possibility that all of our hard-earned bitcoins will turn to dust if the Blockchain system will get shut down or stop. Is this possible? I really have a big question mark in my mind since Bitcoin is a digital thing.

http://p2pfoundation.net/Blockchain

  "The blockchain is nothing more than a long string of transactions,
  each of which refers to an earlier record in the chain. But Bitcoin
  users do not directly make the updates to the blockchain. In order to
  transfer coins to someone else, you have to create a request and
  broadcast it over the Bitcoin peer-to-peer network. After that, it’s
  in the hands of the miners. They scoop up the requests and do a few
  checks to make sure that the signature is correct and that there are
  enough bitcoins to make the transaction; then they bundle the new
  records into a block and add it to the end of the blockchain."

I don't think that it will happen. As long as there is miners to "scoop" up the transactions, blockchain will still work as it should be. Miners will not stop since they are earning worth of bitcoins from transactions fees.


Is there a way to query the blockchain locally if I am running a full node? I'm running a full node on my PC and wondering if there is a way to query the blockchain locally via NodeJS instead of going through blockchain.info? It is very inefficient/slow to run queries through HTTP when I have all the data local.

If you want to query your full node, you should use the JSON-RPC API. Note that by default, you'll only be able to get blocks, and transactions from your own full node wallet. If you want to be able to query any transactions, you have to add txindex=1 to your configuration file. And compared to using blockchain.info, you won't be able to query balances of addresses.


How to transfer signed tx from coldstorage to online system for submission into blockchain? I am building an exchange for crypto currency. I need to be able to transfer tx from cold storage(offline) to hot wallet(online system) for submission. Usb stick is suitable for an individual user mining but is not suitable in an exchange environment.

One option I am proposed is to build an  api that sends tx over ethernet cable to and from cold/hot storage. But in this case the cold storage wont really be offline, it would still be connected. So what other options do I have that could work well for an exchange?

I would reroute all incoming deposits to cold storage, which I would keep in small portions on different addresses.

Then I'd import some cold storage addresses to my hot wallet whenever my hot wallet is running low, keeping the amount in my hot wallet in the range between "not empty" and "what I'm comfortable having in the hot wallet".

As Mike mentioned, multi-signature addresses could provide additional security, and accountability.


How much does system RAM matter for Litecoin mining? I know your system RAM cannot be smaller than your GPU RAM for LTC mining, but other than that, is it a problem if you have like only 2GB of RAM?

i have 3 7950s with 3gb of ram each and only 2gb in the machine, it would work even with 1 gb i think

there was a bug with an older version of openCL or cgminer (cant remember) that did use pc ram instead of gpu.


What's the purpose of CSHA256::Write and CSHA256::Finalize Looking at Bitcoin Core implementation of SHA256, I noticed it was a bit different from OpenSSL's implementation.

In OpenSSL, you would initialize a variable with SHA256_CTX when in Bitcoin Core it's done with either valtype (aka. std::vector<unsigned char>) or uint256. Also, you would go through the steps INIT, Update, Final.

In Bitcoin Core, it's Write and Finalize.

It would be awesome if someone could go through the basic steps and perhaps explain why it's implemented differently. Thank you!

CSHA256 itself mimics OpenSSL's SHA256_CTX, and its constructor mimics the Init function. The Write method corresponds to the Update function. The Finalize method matches the Final function.

In short: you construct a CSHA256 object, call Write any number of times to feed it bytes to hash, and then call Finalize to compute the resulting hash.


Bitcoins stuck - No double spend possible I have a problem with my address 1Dss5sKJDZ1Kkhh3KRyoekeZpC4S1WehD. As you can see, I transferred money to the same address by mistake - without any fee. The transaction fcd06b91d4572dca5b36f3f634694db036f80c2f27c079797f7379ad348a8f00 is now unconfirmed.

Later, it was possible to create the transaction 8218e7821939421302084e6ae9d64960f1e11f03cd2f1e1c3c98a2079416dee2, but this also do not get confirmed - but even there is a fee.

For now, I cannot create any another transaction - why? The other transactions are unconfirmed and not in the blockchain. I try to broadcast the new transaction in raw format to the network.

What should I do now? Just wait?

Yes, waiting is the right thing to do, and pretty much the only thing you can do. Because your transaction is valid, it is likely to be incorporated into a block, even though it doesn't have a fee.

According to Blockchain.info, your transaction was successfully mined into a block 21 hours after you first submitted it. Because of this, you can now go and spend this transaction... which you already have, by the time I wrote this answer.


What was the first altcoin? I'm aware that LiteCoin is (was?) the "silver" to bitcoin's "gold".

The question is:

  What was the first altcoin? Was it actually LiteCoin or was there something else?

For the purposes of "alt coin"

What was the first fork of bitcoin
What was the first altcoin that more than, say, 10 people mined?

Litecoin was not the first altcoin. It actually uses ideas for altcoins that precede it but had died before it was created. This is mentioned in its announcement thread on bitcointalk.. The very first altcoin was actually Namecoin, announced in April 2011. Namecoin was actively used and mined, and can still be used today.


Why is so expensive to buy Bitcoin with Credit Card? There are many sites accepting credit cards to buy Bitcoin, but they charges a huge fee, sometimes is more than 10% (and I think never less than 5%).
Why is that? what is the problem with buying Bitcoin with CC? because usually buying via bank transfer has no extra cost.

I think could be related to some chargeback protection, but if this is the case, is not possible for example to block the "withdraw" of BTC from the seller account for a few days (or whatever is safe to avoid chargebacks)?

Sorry if it's duplicate but I couldn't find the answer neiter here nor google :(

It is about the blockchain. A transaction goes in to a block and gets stacked on the blockchain. This process takes a lot of cryptographic processing power, which is done by miners. This process becomes practically irreversible as more block go up the chain.

So the power of bitcoin is its guarantee a transaction is becoming irreversible and definitive as the blockchain grows. This means, you buy Bitcoin it is yours. Yes, if it is still in the exchange they hold the private key to respend your BTC, but they won't hold the lock forever.

Chargeback is one thing. A stolen credit card another. Credit card fraud is at large scales currently. All this is putting a big administrative overhead on the exchanges. Users will have to do all sorts off verification to prove the credit card is really theirs. So, that 10% is the administration fee for all that, plus risk mitigation. Also I believe, that withdrawal is restricted anyway, regardless of this fee.


How bitcoin nodes update UTXO set when their latests blocks are replaced? Let's say bitcoin node has 100 blocks. Then he recieve another two blocks. Now it have 102 blocks. But now he recieve block 103. And this block is from another chain and our node have to remove blocks 101 and 102 and replace them with this chain with block 101, 102 and 103.

So now it must rewind UTXO set back to node 100 and update with transactions from newly recieved nodes 101..103.

How nodes making this rollback in utxo set?

Bitcoin Core since v0.8 maintains "undo files" that contain the information necessary to undo the effect of a block on the UTXO set.

In a way you can see blocks as authenticated patches to be applied to the UTXO set; they list new outputs to be added, and which inputs to be spent. In order to support rolling back the UTXO set, undo blocks are created as a side effect of validation: structures that contain the UTXOs that were spent. When rolling back, the undo files are applied in reverse order.


Why do non-SegWit clients send witness data in the first place? If SegWit leaves out witness data for backwards-compatibility, thus witness data isn't so important apparently, then why do clients even send that data in in the first place?

Aren't they making their transactions unnecessarily bigger and thus more expensive?

Non-segwit clients do not send witness data. They do not know what witness data is and would not know how to interpret it.

However, I think you are asking about the scriptSigs, which contain largely the same data as witnesses. ScriptSigs are actually scripts, but since the only standard scriptSigs push data to the stack, the same behavior can be done by segwit with the witness data. Non-segwit clients must transmit scriptSigs (and the scriptSigs of segwit output spends are empty) because they are part of the data that is hashed for the transaction id. Furthermore, non-segwit clients must be able to verify non-segwit transactions; they shouldn't just blindly trust that the transaction is valid. So the scriptSigs provide the information necessary for them to verify those transactions.


How do I verify the GPG sig for Litecoin Core? Usually I am able to verify signatures using the verify option in GPG, but this doesn't work when attempting to verify the Litecoin Core client DMG.

For example:

$ gpg --verify litecoin-0.14.2-osx.dmg.asc litecoin-0.14.2-osx.dmg
gpg: Signature made Mon Jul 31 14:44:45 2017 PDT
gpg:                using RSA key FE3348877809386C
gpg: Can't check signature: No public key

I am using the GPG 2.2.3 install from Homebrew.

Here is what I did to get this to work

Copy the public key (found here) to a file. I called it litecoin.public.key.

Then run the following commands:

gpg --import litecoin.public.key
gpg --verify litecoin-0.14.2-osx.dmg.asc litecoin-0.14.2-osx.dmg

This is the output that I got

gpg: Signature made Mon Jul 31 17:44:45 2017 EDT
gpg:                using RSA key FE3348877809386C
gpg: Good signature from "Adrian Gallagher <thrasher@addictionsoftware.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 59CA F0E9 6F23 F537 4794  5FD4 FE33 4887 7809 386C


Unknown btc transaction Could someone please explain what is this second transaction from the wallet 34UuFs8BtnbeJtdM9p4NBCHiP8MaD4f86n ?
https://www.blockchain.com/btc/address/34UuFs8BtnbeJtdM9p4NBCHiP8MaD4f86n?filter=6

I didn't make the transaction with hash c454a01256ba3a4831f0bd02ada0a6bddb6d4c92d9b93af22938daf82b3d23dc

and it is not reflected in my wallet, also, it has not decreased my balance.
So, what can it be ?

it's clear that you have custodial wallet such as coinbase or localbitcoins so, they are controlling your wallet, and you don't own your wallet master key.

I suggest you use Bitcoin-core or electrum since they give you full access to your bitcoins and nobody ever has access to your wallet.


Sign transaction out wallet I am trying to develop a program which can create a transaction from scratch and use a private key to sign it. The idea behind is an open wallet where users each has its own private key and the wallet prepare the transaction (amount, destination..) and the user sign it before the open wallet send it.

Thank you

Depending on the language you are using, there are several libraries you can use to sign a pre-made raw transaction.

I use Python, so one that I found quite intuitive and easy to use is the old vButerin's Bitcoin tools. The code is no longer supported, but it could be helpful.

Moreover, I've personally developed some tools to help people understand how Bitcoin transactions are created, what are their parts in the transaction serialization and how can they be created from scratch. There are publicly available on GitHub also. The library is intended to teach, so maybe you could use the comments to understand how to do what you asked.


Where do you get the transaction data & where do you submit your work? The concept of bitcoin mining (hash functions & the goal) are well elaborated on many sites. There are also lots of examples.
However, when going into real production I guess you need data like the latest hash, info about the block and transactions and so forth.
In addition, once you make your guess, you have to submit the work somewhere.
I can however not find any resources that explain where to do this? Is there an API to which you submit your work, to which you attach also your bitcoin address of your wallet, and once you make the right guess the btc is transferred to this account?
What are the bitcoin endpoints in my case?

when going into real production I guess you need data like the latest hash, info about the block and transactions and so forth.

If you're using a mining pool, you would use Stratum to subscribe to a mining pool's job notifications and their notifications would include this information. If you're using bitcoind to mine on your own, you'd use getblocktemplate. Additionally, you can build the template yourself.

Is there an API to which you submit your work

If you're trying to submit a block to the Bitcoin network itself, there is the submitblock bitcoind RPC call that will allow you to submit a full block. If you're trying to submit shares to a mining pool, you'd probably use the mining.submit Stratum RPC call.

to which you attach also your bitcoin address of your wallet, and once you make the right guess the btc is transferred to this account?

If you're using a mining pool, you specify this information at the mining pool's website. The block work they give you will be paying to their address, so it's irrelevant.
If you're mining yourself, you'd specify this by including a "coinbase" transaction at the beginning of the block that pays an address you specify the appropriate block reward and transaction fees.


Bus error (core dumped) Running a new install of Ubuntu 18.04.3 LTS and downloading blocks in bitcoin-qt up to over 70% when pgm quits with "Bus error (core dumped)".

Anyone else gets this or how to fix it? (-rescan didn't help)

Thanks.

There isn't a single condition that triggers a SIGBUS. Without more details it's impossible to debug this problem remotely.

A Bus Error can be indicative of a hardware problem. Check your motherboard and look for bulged capacitors near where the memory slots are located. If you find any, take your PC to a technician. You may try taking out the memory modules and clean their gold contacts with paper or eraser rubber. It's also recommended you clean out the memory slots themselves from any dust.

To completely rule out a memory problem you can boot your Linux box into memtest86 (included in most Ubuntu boot options or live images) and leave it running for a few hours. If hardware-related, memtest86 will find most memory-related problems during its very first test stages.

Software conditions can also trigger a SIGBUS. Since there isn't currently a specific known issue on Bitcoin Core that triggers a Bus Error, I'd assume it's a problem in your installation. Try rebuilding Bitcoin Core from source or reinstalling/upgrading its prerequisite packages.

Lastly, you may try tweaking Bitcoin Core's memory parameters to see if the Bus Error goes away. If you notice your Linux box is disk thrashing and using too much swap when running Bitcoin, that could be an indication of low memory. Use iotop and htop in different screens to monitor the IO and CPU-bound systems respectively while running Bitcoin Core and see if either disk or CPU are being hogged by a specific process.


How can I unstuck a transaction sent from Mycelium? My transaction has been unconfirmed for more than a week.
I had a normal transaction fee (not low).
The amount of the transaction was not small >0.5btc.
The inputs were not unconfirmed outputs.

The transaction came from a Mycelium wallet to a Bittrex wallet.
The Mycelium wallet has no option to increase the fee.
The Bittrex wallet has no way to try to spend the unconfirmed outputs to create a CPFP transaction.

Any ideas how I can fix this?

This is a complementary question to Why is my transaction not getting confirmed and what can I do about it? which answers the question's broader implications and proposes mitigation mostly focused on Bitcoin Core.

First, find the transaction on a blockchain explorer like blockchair.com or blockchain.info and make sure it appears as valid. If it isn't found, it wasn't broadcast at all by your wallet, and you can find many free broadcast services here.

Assuming it is valid, has been broadcast, then find a free transaction accelerator (don't bother paying the ones that ask for a fee) and enter the transaction ID and usually you'll see it get confirmed. I recommend the ViaBTC Accelerator*  or creating an account at AntPool (free) and using the AntPool accelerator.

Be patient. It can still take a few hours or so.

* You'll have to time it right. They only allow a handful per hour.


Is it acceptable / encouraged to ask for ID and keep a photocopy for OTC Bitcoin transactions? Suppose a business wants to get into the OTC Bitcoin business. It will need to comply with AML laws. It is acceptable / encouraged for such a business to ask for photo ID and keep a photocopy?

Does this same principle apply to individual users?

In OTC, it is totally up to the mutual agreement of the two parties, if you are a financial business that has to comply with AML laws, you will have have to ask for these info, but that may mean some counterparties will shun from you.


bitcoin public key vs public key hash vs. pub key I am not talking about the privacy related concerns just the security aspect and the ability for someone to 'break my private key'.

The addresses that my wallet generates are p2pkh addresses. If i use the bitcoin core and do 'validateaddress' i get a json blob back which includes 'pubkey'.

If i had a database that had a bunch of public keys, not p2pkh but the "pubkey" from validateaddress, and that database were to be breached, would all of the utxos at the original wallet be at risk? (Let's assume the wallet is in cold storage and not connected to the internet). The only thing in that database would be the pubkey(s).

If this is the case... why do we even go through the process of creating p2pkh addresses in the first place? Is it just for aesthetics, less bytes in the transaction, just for privacy, or is there an actual security reason?

Finally is this "pubkey" that validates an address, why would we even need a p2pk in the first place (unless it is literally for the equivalent reason of "improving" to a p2pkh from p2pk).

Thanks

THis is different from the question posted in the first comment as i am talking purely about security ramifications. IE.. there is nothing more inherent secure by using SHA256 +RipeMD to hash a public key then just using the public key itself.

I provide my thoughts more on privacy than risk:

  If i had a database that had a bunch of public keys... would all of
  the utxos at the original wallet be at risk?

AFAIK no, for P2PKH transactions. The bitcoin system has a locking and unlocking mechanism. The locking is done with the pubkey script: the author of a tx defines the target (to whom the tx shall go), and the spending condition(s). This is were in P2PKH tx the hash of the public key goes. The spending condition is then s.th. like this "you need to provide a value, that when hashed, equals the provided public key hash in this transaction". Usually this can only be provided by the original author of a transaction. With a lost database, anyone could now create such a transaction, but not sign it! When then the tx shall fulfill the spending condition, the tx needs to be signed (and the pubkey is provided in hex format).

So if your database is disclosed, the locking mechanism for P2PKH tx can be understood. However, the unlocking is in the sigscript of the transaction, and just with the stolen database you may not provide a valid signature, cause you need the corresponding private key for the signature.

More to the locking/unlocking e.g. in Andreas' book "Mastering Bitcoin" in section 6 "Transactions".

  If this is the case... why do we even go through the process of
  creating p2pkh addresses in the first place?
  Is it just for aesthetics, less bytes in the transaction, just for
  privacy, or is there an actual security reason?

Next to the answer in the link from Pieter Wuille, I'd see P2PKH addresses help to keep the privacy up to the point, when the tx is finally spent, cause hashes are not reversible (as per today's knowledge).


Can someone ELI5 to me for Bitcoin Atomic Swaps? I'm reading up the wiki page here: https://en.bitcoin.it/wiki/Atomic_cross-chain_trading

I understand a user can create a transaction without signing it and not broadcasting it to the network. I know this is the main concept to get atomic swaps to work. But I'm a bit confused on how each step works exactly. Can someone explain each line?

 A picks a random number x

 A creates TX1: "Pay w BTC to <B's public key> if (x for H(x) known and signed by B) or (signed by A & B)"

 A creates TX2: "Pay w BTC from TX1 to <A's public key>, locked 48 hours in the future, signed by A"

 A sends TX2 to B

 B signs TX2 and returns to A

 1) A submits TX1 to the network

 B creates TX3: "Pay v alt-coins to <A-public-key> if (x for H(x) known and signed by A) or (signed by A & B)"

 B creates TX4: "Pay v alt-coins from TX3 to <B's public key>, locked 24 hours in the future, signed by B"

 B sends TX4 to A

 A signs TX4 and sends back to B

 2) B submits TX3 to the network

 3) A spends TX3 giving x

 4) B spends TX1 using x

 This is atomic (with timeout).  If the process is halted, it can be reversed no matter when it is stopped.

 Before 1: Nothing public has been broadcast, so nothing happens
 Between 1 & 2: A can use refund transaction after 72 hours to get his money back
 Between 2 & 3: B can get refund after 24 hours.  A has 24 more hours to get his refund
 After 3: Transaction is completed by 2
 - A must spend his new coin within 24 hours or B can claim the refund and keep his coins
 - B must spend his new coin within 72 hours or A can claim the refund and keep his coins

 For safety, both should complete the process with lots of time until the deadlines.

I think this is easier to understand if you abstract a little bit. On a high level, an atomic swap is very simple: the two parties set up transactions such that they can both take their coins be revealing the preimage to some (pre-decided) hash H. Initially one party knows the preimage. They must reveal it to take their coins, so the act of taking their coins is sufficient to enable the other party to take their coins.

More specifically the Tier Nolan in the OP works as follows.

A chooses a random x and gives H(x) to B.
A sends her coins to a 2-of-2 output that can be taken by B if he reveals x. Similarly B sends his coins to a 2-of-2 output that can be taken by A if she reveals x. These are TX1 and TX3, respectively.
(Before broadcasting these, they create locktimed "refund" transactions TX2 and TX4. It's important that A's locktime is much longer than B's, so that if she gets her refund, B has had a long time to take his refund, and is not at risk of A revealing x to also take his coins.)
At this point, A takes her coins, revealing x.
Seeing this, B learns x and takes his coins.

There is a variant of this called coinswap where x does not hit the blockchain, where steps (4) and (5) are replaced by A revealing x off-chain and then the signers just give each other the coins, only using x as a fallback. This complicates the locktime structure and also requires differently-shaped transactions to keep x and its hash off the blockchain, which unfortunately make the protocol look super scary, but that's all that's going on.


wallet.dat backup and 100 pregenerated keys Reading about the "change" addresses and doing "wallet.dat" backups, I keep reading that -by default- bitcoin-qt generates 100 keys and use them when you need a new address. My question is this: what happens after you use all 100 keys (for change, mainly). bitcoin-qt generates another block of 100 keys?. Only one?.

The information is critical for backup policy, and I can't find it online.

If you get a new 100 keys block, doing regular frequent backups is mostly fine, but if only a new key is generated, you should backup the wallet after any incoming or outgoing transaction...

Better yet, bitcoin-qt should have a permanent pool of 100 addresses, and add a new random address when you use one, in a FIFO style. That way you should be quite safe if you do less than 100 outgoing transactions between backups!.

Better yet, bitcoin-qt should have a permanent pool of 100 addresses, and add a new random address when you use one, in a FIFO style. That way you should be quite safe if you do less than 100 outgoing transactions between backups!.

That's what it does.


What is the story behind the "Linode problem"? What is the story behind the "Linode problem"? How did the service become compromised and what has exactly happened because of it?

The "Linode problem" is storing Bitcoins on a managed device.  That managed device might be server hosting from Linode, for example, or a cloud server at RackSpace for another example.  In both instances, by simply gaining root access using the service provider's systems, tens of thousands of bitcoins were stolen.

The incident in which the "Linode problem" term was coined, more than 46K BTC were stolen in a security breach at Linode, including 43K from Bitcoinica's wallet alone.

Linode hasn't disclosed the exact scenario but it is believed that an employee's system was compromised remotely and that system had access to a back door that allowed administrative access to every Linode host.  With administrative access. wallet.dat's are vulnerable.

http://arstechnica.com/business/2012/03/bitcoins-worth-228000-stolen-from-customers-of-hacked-webhost/
http://bitcoinmagazine.net/the-bitcoinica-linode-theft-and-what-it-means-for-bitcoin/

There are all sorts of managed systems.  Most enterprise computing systems have administrative access for not only their systems in their data center but also for managing their employee's devices.  This might allow a thief, or rogue employee or contractor even to gain access to Bitcoins.

Even mobile devices could be totally vulnerable.


Is there any discrepency on Confirmations? Is there ever a situation where some bitcoin client thinks a transaction has 3 confirmations and another bitcoin client (or website) thinks a transaction has 4 confirmations, for example?

Yes, there are a few different ways this can happen, and in nearly all instances this occurring is of little significance.

First the most common scenario where that happens: When a client receives a block it first will verify the block before relaying it.  A node that performs this slowly (especially if running pre-v0.8 software) may be many seconds behind other nodes.   So while one node might verify a block and increment the number of confirmations for a transaction, another node would still be working on verifying it and would show one fewer confirmations.   Within seconds the count should become equal for the transaction on both nodes.

Another scenario is much more rare -- where the blockchain has forked, and a transaction will show a number of confirmations that varies between the count on one side of the fork versus the number of confirmations on the other side.  This scenario actually happened on March 11th, 2013 where nodes running the v0.8 client would show a transaction as having a certain number of confirmations and at the same time a node running a pre-v0.8 client might show a lower number of confirmations.  When the forks converged, after the pre-v0.8 side attained "longest chain" status, both client versions then displayed the same count.

The possibility of there being a problem exists where there are several confirmations showing for a transaction on one node but no confirmations on another.  This could mean the funds for the transaction could be vulnerable to a double spend attack, or that such an attack had already occurred. But the scenario you describe, with at least one confirmation on both nodes, is likely simply just a propagation delay.


Multisig with same keys is it possible to make a multisig tx with the same keys ?
For example, i got:
Key A, Key B, Key C

Now A should be able to spend the coins and also B with the help of C. (B and C alone should not be able to spend the coins)
So 2 keys out of 4 should work but can key 1 and 2 be A (AABC) ?

Thanks,

A transaction of the form:

2 pubkeyA pubkeyA pubkeyB pubkeyC 4 OP_CHECKMULTISIG

should do what you want. Give it a try on testnet, shouldn't be hard to whip up a test case using the raw transactions API of Bitcoin Core.


Is there a web service that does reverse FirstBits lookup? Input: any old Bitcoin address e.g.

1BCNEPySL4gzzjg8NNyNsQYJWYmZwpgaPF

Output: the FirstBits, in this case 1BCN1u

Blockchain.info has APIs to generate and resolve firstbits.

Get firstbits,

http://blockchain.info/q/getfirstbits/1BCNEPySL4gzzjg8NNyNsQYJWYmZwpgaPF

Get address,

http://blockchain.info/q/resolvefirstbits/1paypal

http://blockchain.info/q/resolvefirstbits/1ebay

http://blockchain.info/q/resolvefirstbits/1google


What benefits does Tau-Chain add over conventional solutions? I'm currently doing some research on Tau-Chain and its various claims. One of the biggest ways it tries to differentiate itself looks to be the focus on decidable programming languages, instead of turing-completeness. However, I can't seem to find any straightforward example of what practical benefits does that add over the conventional solutions.

Turing complete languages are undecidable: it can be proved that some algorithm cannot always work as expected for all possible inputs. I believe that most of these problems have to do with deciding if another algorithm can or cannot do something.

An undecidable (programming language) grammar means that you cannot be certain what the meaning of a given program (source code) is just by looking at the code. Look at the answers of this question for examples.

A classic example of undecidability is the halting problem:

  In computability theory, the halting problem is the problem of determining, from a description of an arbitrary computer program and an input, whether the program will finish running or continue to run forever.

For completeness also read this, especially the "Mathematical theory" section.

In contrast a decidable programming language can mathematically prove that a program will always have the expected results; e.g. a smart contract written for Tau-chains can be proved that it will not suffer the halting problem before deploying it. It is my understanding that it just helps you reduce possible bugs.

Note, that in Ethereum the halting problem is not a such a big issue since the contract will eventually run out of gas, but it would be good to catch it before deploying it forever in the blockchain!

Having said that, in Tau-Chain they use Ontologies and RDF and in my experience it is much much harder to code anything using RDF and reasoners (although reasoners do allow for smarter programs but I cannot comment more since I do not know the Tau-Chain language's semantics).

Also read this for a comparison between Ethereum and Tau-Chain, from the Tau-Chain guys perspective.


Undo a transaction to a wrong adress I made a transaction to a wrong adress. How can I find where the transaction reciever has an exchange adress?
Transaction:
Completed   BTC 0.10951991  2021-01-02 23:25:18 Adres:1L5wSMgerhHg8GZGcsNmAx5EXMRXSKR3He
Txid:
4a22a54a7a314a4a6fcf14d1b8a64cbc320fcd854d5cd806a23024f446a4fbb2

Undo a transaction to a wrong adress

Bitcoin transactions cannot be undone.

I made a transaction to a wrong adress.

That is usually hard to do because standard addresses have checksums.
If you sent it to a genuine address given to you by someone other than the intended recipient, you'll need to contact the person who gave you that address and see if they are willing to create a new transaction sending money to you.
If you somehow entered an address that no-one gave you, then there will almost certainly be no-one who owns that address. There are an incredibly vast number of valid addresses and almost none of them will ever be owned.

How can I find where the transaction reciever has an exchange adress?

Not all addresses in use are related to exchanges. Many addresses that are in use will have been generated by standalone wallets on phones or personal computers. As I wrote above, almost all valid addresses are not owned by anyone and never will be.
There are businesses that analyse the blockchain to try to associate used addresses with exchanges but they may be very expensive to employ. Even if you did identify an exchange, the exchange has no reason to violate their customer's privacy. At best they might pass on a request to their customer for that customer to consider your request that the customer send money back to you. But even that might take an enormous amount of persuasion.


public key generated when importing PK different from original pub key I used bitcoin core (latest 0.19) to create some addresses offline. When I dumped the privkey I was surprised to see all of them starting with L2 (and the addresses with 3), but I went for it. I take note of the private keys/addresses.

Next day, I import one of the privkeys into another bitcoin core wallet, it scans, but the noted address never shows up in my receiving address. But still it added another address to my list (starts with 1B).

So I also added this privkey into an electrum wallet. And surprise, that same address is showing up, not the original one that I got when I created the pair.

What's happening? Is that due to the L2 type?

There are several different types of bitcoin addresses, which can be derived from the same private key. You can see this question for some more info about the different types.

So it sounds like your bitcoin-core wallet is creating P2SH-P2WPKH addresses, but then when you imported it into other wallets, they are deriving a P2PKH address.

So the fix is to instruct the wallet that you are importing the address to, to derive the correct address type. Not every wallet will be able to do this, but some of the more feature-rich options out there should be able to do so.


Where are getnetworkinfo localservicesnames explained? Bitcoin-cli getnetworkinfo returns a list of human readable localservicesnames. Where can one find more info about them?

You can find a list of the assigned (through the BIP process) service flags in the wiki protocol documentation.
The service flags supported by the reference client are defined in src/protocol.h .


Do "the official bitcoin developers" control Bitcoin? Is there one person or organization that controls Bitcoin?

What if Gavin Andresen, the lead developer, or Bitcoin Foundation, "the official bitcoin organization", decide to change something? What if they release a new version of the software that changes the coin limit, or enforce government regulation?

At the moment in my opinion, Gavin does indeed control Bitcoin Project to some extent. He is widely recognised as the main developer behind it and could probably push his authority on a lot of subjects if he so desired. However, I am under the impression that he would not perform such actions - they would undermine the credibility of Bitcoin and be bad for everyone.

He does appear to have a lot of influence over a lot of aspects of the Standard Client, the Protocol and overall behaviour exhibited by Bitcoin. He will most likely have the final say for example on the subject of block size limit. However, if he would change any more major aspect of Bitcoin that would undermine a lot of other people's work, say by changing the mining algorithm hard coded into the ASICs, it wouldn't be long before he would lose his position of authority and possibly create a hard fork.

So to sum up, at the moment Gavin is de facto the person who controls Bitcoin on its most basic level, and he will most likely hold that position of authority only as long as he remains a "benevolent tyrant" so to speak.


Is the `addmultisignature` API call dependent on order of public keys in the array? Or is it lexicographically sorted? Say Alice and Bob are part of a partnership business that accepts Bitcoin. They store all their main funds in cold storage until the end of 3 months, when they cash out and use a new address. This cold storage is in a single address.
Both Alice and Bob have full nodes, running Bitcoin Core. They use the console feature to generate a 2-of-2 P2SH multisig address, using addmultisignature.
They exchange each other's public keys, and input them as arguments.
If Alice used the following syntax:
addmultisignature 2 '[<alice's key>,<bob's key>]'
and Bob used:
addmultisignature 2 '[<bob's key>,<alice's key>]'
Will they end up with the script hash and address?
Follow up questions:
Can you give certain keys more "weighting" by specifying them more than once?
Does the same logic apply to SegWit (P2WSH) multisigs?

Is the addmultisignature API call dependent on order of public keys in the array? Or is it lexicographically sorted?

Yes. It is not sorted according to BIP67 automatically.
How did I confirm?
I used the below command in bitcoin core:

addmultisigaddress 2 "[\"0318370919cfceb3d260081eeca3cae19f941eec321f597c48a64839178ea1e3e0\",\"03e783b8cf0474f732cc5d89cc893c25ab8a487785eb541a3ba0b26cfdd38c5c19\",\"02667b6e09a4a82b12cc8e5611373f28673f2cdd2e42b2f7e89825ec82b7f9b054\"]"

to get the multisig address details:

{
  "address": "tb1qlfu3fy8apmm4j73kzlxh9s09rtu6vzeru3l0asfd5ylwfqs7e0zs3hfdpt",
  "redeemScript": "52210318370919cfceb3d260081eeca3cae19f941eec321f597c48a64839178ea1e3e02103e783b8cf0474f732cc5d89cc893c25ab8a487785eb541a3ba0b26cfdd38c5c192102667b6e09a4a82b12cc8e5611373f28673f2cdd2e42b2f7e89825ec82b7f9b05453ae",
  "descriptor": "wsh(multi(2,[85ac4db2]0318370919cfceb3d260081eeca3cae19f941eec321f597c48a64839178ea1e3e0,[90060439]03e783b8cf0474f732cc5d89cc893c25ab8a487785eb541a3ba0b26cfdd38c5c19,[98725f4c]02667b6e09a4a82b12cc8e5611373f28673f2cdd2e42b2f7e89825ec82b7f9b054))#qmw7suql"
}

Tried using the same public keys and the order to create a multisig address in caravan and got the warning that keys are not ordered.

Multisig address and Witness script returned are same for both. It changes when I order the keys in caravan:
Address:  tb1q6xnkaa3sej2x580yjc5j20pcy6x0ddxxc8a9ajlvvn2de2htvvpsnp95vd
Witness Script: 522102667b6e09a4a82b12cc8e5611373f28673f2cdd2e42b2f7e89825ec82b7f9b054210318370919cfceb3d260081eeca3cae19f941eec321f597c48a64839178ea1e3e02103e783b8cf0474f732cc5d89cc893c25ab8a487785eb541a3ba0b26cfdd38c5c1953ae


Bitcoin with transaction fee exceeds balance I have used Coinbase to send bitcoins to an address. Sadly though, I have sent ALL my bitcoins, which left me with the balance of zero. When I checked on the transaction (which is pending at the moment) I saw it added a fee TO THE TRANSACTION which essentially exceeds my wallet balance. Since I sent ALL my bitcoins, let's assume I sent 1btc (just an example) then when I check on block reader it seems the transaction is higher with the fee, i.e. 1.01 btc. Which essentially means I don't have enough funds. What should I do?

It sounds to me like Coinbase has paid the fee for you, as a courtesy.  They have a policy of doing that:

  Using our wallet services to send, receive and store digital currency is free. We even pay the network transaction fees which are included with most digital currency wallets.

My understanding is that Coinbase doesn't maintain an individual set of private keys per customer; rather, it pools all deposited funds among its own private keys, and tracks each customer's balance in its internal records.  (More like a bank account than a safe deposit box.)  So when you requested BTC 1.00 to be sent, it didn't come from an address of "yours" containing only 1.00 BTC, but from some internal Coinbase address(es) with a potentially much higher balance.  Thus there should be plenty of funds available in the inputs to pay the extra BTC 0.01 if Coinbase wants to write the transaction that way, and it sounds like they did.

A transaction fee is implemented by having the inputs of a transaction exceed the outputs.  So if the transaction does in fact have a fee of BTC 0.01, in addition to your output of BTC 1.00, then by very definition, it must have inputs of at least BTC 1.01.  (There might be other "change" outputs sending whatever is left over back to Coinbase, or making payments requested by other customers.)  If the inputs weren't valid, that would be a bug in Coinbase's software, and the block explorer you checked should have detected this and warned you about it.

Everything is fine and the transaction should be confirmed soon.  When that happens, the payment is irreversible and you can stop caring about how it happened.


Do you need XRP reserves to receive trust lines? As far as I understand, you need to keep some XRP in reserve for each trust line and for each open offer.

Does that apply only for outgoing trust, or for incoming trust too?

In the latter case, what does it happen if you try to trust someone who doesn't have enough XRPs?

And, are you somehow notified you have exhausted your XRPs, or you have to manually check somehow?

The Ripple account reserves are documented on the Ripple wiki.

The trust line reserves are only for trust that you set. Others cannot cause your reserves to increase by adding a trust line to you.

The client warns you when you are bellow twice your current XRP reserve limit by placing a warning symbol beside your XRP summary (located at the top right of the client). Wheather the warning is shown or not, hovering the pointer over the XRP summary will provide a "tool tip" with the current reserve requirements.*

If an action would put you under the reserve requirements (such as sending too much XRP, creating a trade offer, setting a new trust line) the action is refused with an error. When below the reserve requirements you can still do other transactions so long as you have enough XRP to pay the 0.000010 XRP transaction fee.

Note:There is currently a client bug that causes the reserve requirements shown to be twice the old levels, about eight times the current reserve requirements.


How to convert an Electrum 12 word seed to a private key? How can I convert an Electrum 12 word seed to a private key?

I heard Electrum has a special type of algorithm where the 12 word seed can't be used on other wallet software; is that true?

Haven't seen a tool, that can do so.
Electrum has a BIP39 based system, with some custom extension. Look for BIP39 and Electrum, this appeared already in bitcoin stackexchange. From (somewhere) there I also got the compatibility list:

  https://onedrive.live.com/view.aspx?resid=584F122BA17116EE!313&app=Excel

Internally in Electrum wallet, you can export via menu "Wallet" -> "PrivKeys" -> "Export".


Might AML regulations have to be applied to unofficial currencies sites in EU? Is there any AML regulation in EU countries which might have to be applied to unofficial currencies, such as Bitcoins?

I guess usually they only apply to state-backed currencies, but since Bitcoins can be easily exchanged for EUR, there might be some (poorly written?) law which might extend to any site allowing users to trade it, and not only to the exchanges (as it would be logic to do, instead).

In the EU AML regulations do not apply to currencies, they apply to financially registered entities and a couple of other ones.

The entities required to ensure AML-compliance are :

Banks,
Payment Service Providers,
Latin notaries (think about laundering money through real-estate transactions for example)
Licensed currency exchangers,
etc.

Legally compliant Bitcoin exchanges are not subject to AML regulations directly, since as of today, none of them is a registered PSP or bank. But, if they partner with such an entity they can get a delegation to perform AML-related duties such as KYC, under the legal responsibility of the delegator entity.


What went wrong transferring my BCC out of Bitcoin Wallet? On the day of the fork, I had my BTC in Bitcoin Wallet on Android. I sent my BTC to a new wallet. I then made a backup of my old wallet, moved it to my computer, and decrypted it using openssl enc -d -aes-256-cbc -a -in as described here. The resulting file was mostly unreadable, but it had a 12-word mnemonic at the top. I entered it into a local copy of https://iancoleman.github.io/bip39/. I selected the BIP44 tab and and copied the value from "account extended private key" which began with xprv.

I installed Electron Cash on my phone and imported the key. It said the import was successful, but I'm seeing 0 BCC in my wallet. I've also followed the instructions here for checking my balance on blockdozer.info and importing my key into Coinomi, and both of those methods agree that there's no BCC associated with that address / key.

Questions:

Is there any other export process I should try, or should these definitely have worked?
Is there any possible way for a wallet that had BTC in it from Jul 28 - Aug 13 to not have had BCC associated with it?
Is there any way to look backward and find out if that wallet ever had BCC, and if so what happened to it?

Your start with BIP39 was good.

You can check your Bitcoin Cash funds according to the explanation at: How to sweep private extended key from mycellium into coinomi for bitcoin cash coins?

There you can understand your funds in internal and external addresses and how to sweep them into a wallet which in this case is Coinomi.


How to determine public keys that were used to generate a multisig address? How can I verify the public key that I provided was actually used to generate the multisig address I'm funding for say escrow?

A redeem script is generated along with the multisig address. The redeem script can be decoded at https://coinb.in/#verify (for example) to determine the address, the required number of signatures, and a list of the public keys with access. (It will also be used later to release the bitcoins.)


Custom altcoin won't sync with node and neither will accept a miner connection I forked the BlackCoin source, changed the ports, generated the genesis block, merkle, blah blah blah. I set up a node on a DigitalOcean server and compiled my coin daemon there as well as on my local machine. They two coin daemons recognize each other, I put the addnode into the conf file, also put in rpcuser, rpcpassword, and rpcport into each conf file.

My coin-qt program on my local machine recognizes that it has 1 connection to the network, but for some reason will not stop syncing, even though only the genesis block has been created. It still says out of sync. My server daemon is still syncing too.

When I call getwork, they both return values. Here is what is returned:

{
"midstate" : "79f67436791f93f3eadc9926a8578baddfe15eebe894a6a59ba11fdfb889cef3",
"data" : "00000006edc7bd4e9e7c221bfcc052f25c28c6483d77e1c04ddce735d5a04ba000000ff977168febeac231c7109f85dc43cd9461b7763f9057bb3983622ff0986885b7d9539a6a001e0fffff00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
"hash1" : "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000",
"target" : "000000000000000000000000000000000000000000000000000000ffff0f0000"
}

If I try to call minerd and point them either to the local wallet or the node, like so:

./minerd --url=http://127.0.0.1:14632 -u user -p password

or

./minerd --url={My Node IP}:14632 -u username -p mypassword

it gives me an error!

Specifically:

for the local client:

Unrecognized block version: 6
json_rpc_call failed, retry after 30 seconds

and the node:

HTTP request failed; connect() timed out!
json_rpc_call failed, retry after 30 seconds

Any ideas? I am very close and would like to figure this out!

EDIT--
I went into main.h and changed the value of static const int CURRENT_VERSION from 6 to 1. This seems to have fixed the json problem. As far as the server, I simply had forgotten to open the rpc port and not just the port.

However, my client *coin-qt program continually says 'out of sync' and just says 'catching up. downloaded 0 blocks of transaction history. last block was 2 days ago.' That is the genesis block.

Since BlackCoin uses standard scrypt algorithm, I think minerd should be able to mine this coin. It seems to work alright but I get all 'boos' when mining.

This is the output on my laptop:

@crypto:~$ minerd -a scrypt --url=http://{{node ip}}:14632 -u user -p {{somepass}} --coinbase-addr={{address}} [2014-06-13 12:43:11]
[2014-06-13 12:43:11] Binding thread 0 to cpu 0
[2014-06-13 12:43:11] 2 miner threads started, using 'scrypt' algorithm.
[2014-06-13 12:43:11] Binding thread 1 to cpu 1
[2014-06-13 12:43:12] thread 0: 4104 hashes, 4.76 khash/s
[2014-06-13 12:43:12] thread 1: 4104 hashes, 4.52 khash/s
...
[2014-06-13 12:45:58] thread 1: 756 hashes, 4.60 khash/s
[2014-06-13 12:45:58] accepted: 0/1 (0.00%), 9.33 khash/s (booooo)
[2014-06-13 12:46:02] thread 1: 18408 hashes, 4.71 khash/s

I don't understand why it isn't accepting anything. This coin uses scrypt, the same as BlackCoin. Any ideas?

Although this is rather old, I thought I should at least provide my knowledge on this - although it shows "0" blocks of transaction history, and continually states that it is catching up, it is however up to date - depending on the circumstances. First, you need to open "checkpoints.cpp" and remove all the checkpoints in the file (they'll be somewhere in the first 20 lines, it's fairly self explanatory), and create one checkpoint at 0 with the genesis block hash - the genesis block checkpoint. After you've done that, rebuild both clients, connect them, and instead of using minerd (or equivalent), instead use "setgenerate" through the console for at least 1 block. After that 1 block, you should be able to use minerd (or equivalent). Hope this helps for you