Transfer between Coinbase and Armory? I just started to get involved in bitcoins recently. I was just wondering if it's possible that after I buy some bitcoins on coinbase and then transfer them to armory wallets. Can this be done?

Yes, you can and should transfer your bitcoin to a wallet you control after purchasing them from a web-based wallet.  Never leave a substantial amount of your bitcoin on an exchange or a web wallet.

Coinbase is a company that runs both an bitcoin wallet service and an exchange for purchasing and selling bitcoin for USD.  Armory is a wallet that you run yourself on your own computer, and therefore store your own private keys.  In the case of Armory, it is a deterministic wallet, meaning that it can regenerate all it's private keys from a single seed.

To transfer between wallets, you generate an address on the receiving wallet, and send bitcoin to it from the sending wallet.  The process will be different from wallet to wallet, but this is the typical use case of Bitcoin, and you should become comfortable with it regardless of interface.

If you are new, you may want to read some other questions/answers from this site to give you a better understanding of wallet options:

What options does one have to manage Bitcoins?

Secure way to store BTC over a long time - and its risks?

I am new to Bitcoin, how can I get started?

How do you obtain bitcoins?


What is the cheapest way to acquire bitcoins? What is the cheapest and easiest way to acquire bitcoin for a beginner?

I bought bitcoin from an ATM and had to pay 10% premium. I downloaded a mycelium wallet on my iPhone and I noticed that the fees are insane. A minimum fee is currently 12,68$ and if I want to send bigger amounts the fee is around 15%! I think these fees are just pure madness. I am currently looking different online sites but I don't know which one is the best. There are so many out there.

Could you guys help a beginner to buy some bitcoins?

Those fees are madness. Currently, transactions with a fee of 40sat/byte are being cleared. The problem is that fee estimation is not as easy as it looks. Fortunately, I believe Mycellium has the option to input a custom fee.

Buying at localbitcoins.com is one option, or using an exchange like GDAX. Usually, buying larger volumes is more lucrative than buying lower volumes.


Turing completeness of Bitcoin Script For me, scripts are one of the most interesting features of Bitcoin. They provide possibilities which have no equivalent in classical currencies. However, the wiki states

  It is purposefully not Turing-complete, with no loops.

What's the rationale behind this decision?
Are there any proposals for useful contracts which would only be possible in a Turing complete script implementation?
Are there any alternative crypto currencies with Turing complete scripts? If so, how do they solve the problems from 1?

If scripts were Turing-complete, you could construct a fairly short script that took an extremely long time to run (a la the Busy Beaver) or contained an infinite loop.  This would tend to result in a denial of service against everyone on the network, when they tried to verify the transaction.

And there would be no general way to tell whether a script would loop infinitely or would eventually finish: that's the halting problem.

One could try to avoid this by including some sort of cutoff on how long a client will spend verifying a transaction, but it would have to be done very carefully so as to be consistent across all clients: if some accept it and others don't, the block chain will fork.

It seems simpler to avoid the situation all together.


Hardware wallet - Claiming forked currencies I'm considering purchasing a hardware wallet for my cryptos (ledger or trezor) and was wondering how one might claim a forked crypto if these devices don't provide the private keys or add support for it. Let's say bitcoin forks in the future, and for whatever reason ledger/trezor decides not to support it. How do I claim the new currency in this case?

One option might be to generate private keys using tools and then claim them on another wallet that does support the new currency. Thoughts?

You can always use backup passphrase which you have to write down on device setup. For the two mentioned devices backup pass phrases are BIP39 compliant. That means that you can always use other wallet/device which is BIP39 compliant and supports the forked coins, enter the backup passphrase on this device and redeem the coins. Note however that it has certain security implications  - you open the possibility that your private keys might be compromised by the new wallet device/software.


Can I remove the passphrase from my Bitcoin Wallet? I'm using the standard Mac Bitcoin client and I added a passphrase. I'd like to remove that passphrase. Is that possible?

You can dump your old wallet to a backup file, restart the program to generate a new wallet and import your old wallet into it.

Assuming you are in the directory where your wallet file is located, using the command line that would look like this:

bitcoind walletpassphrase "xxx" 60
bitcoind dumpwallet "wallet.dat.backup"
bitcoind stop
mv wallet.dat wallet.dat.old
bitcoind -daemon
bitcoind importwallet wallet.dat.backup

I would be interested in a less dirty way, if anybody knows one.


What's a good site to see bid/ask walls? I'm currently using Mtgoxlive to view ask and bid walls.

But ... I can't see the chart beyond about $1.5 +- the current price.

Is there another site for viewing ask/bid walls graphically, in a similar fashion to Mtgoxlive, that is limiting in the displayed data?

Also, a nice to have would be historic wall data. There is the Wall Observer Thread ... is there another site that does this?

btccharts.com is a better version of mtgoxlive.com - it lets you zoom out to see more price range, and has a bunch of other features.

See its forum thread for discussion of it.

Note: the site is currently down for maintenance but should be back soon.

Also, clarkmoody will show you a live updating view of the market, but the depth is shown numerically, not on a graph.


Can the Bitcoin client be used without any incoming ports being opened? I am running bitcoind on the latest Ubuntu 12.10 Quantal Quetzel on amazon's EC2 network.

The security group I have attached to the box only allows port 22 so I can login via ssh.

How is bitcoind able to operate, then?

I started up bitcoind and it says it has 8 connections and is actively downloading blocks... but how? When port 22 is the only opened port on my box?
-confused

Your firewall allows outgoing connections.

Bitcoind creates 8 outgoing connections (by default), over port 8333.


Notifications to watch only addresses in bitcoind I found a similar question, but rather outdated in my opinion: How to get instant notification of any Bitcoin transaction involving a specific public address as recipient without knowing the wallet or private key

I have a bitcoind running, however don't have any funds managed by it. I want to run a script by any transaction, which is going to one of my (many) addresses. All the addresses are not part of the bitcoind wallet.

The following I want to achieve:

Configure bitcoind with a list of my addresses (not part of the wallet), might be around 200
Remove some addresses (if not needed anymore) from watch notifications
Notifiy a script when a transaction to one of my addresses arrives (mempool transaction, no confirmations)
Notifiy when a transaction gets confirmed (first time, maybe also sixth time)

My Setup:

Newest version of bitcoin core (can be updated)
Scripts in PHP (could be other programming language with bindings to bitcoind)

Basically, I want to get the notification to the respective script. All relevant information can be crawled via the RPC API. However polling the bitcoind needs to be eliminated.

You can use the importaddress RPC to add addresses without associated private key to the wallet. The wallet code will now list transactions involve such addresses, and include them in balance calculations (though you may need to add an extra argument for includeWatchOnly to some RPC calls).

If you import an address that has existing confirmed transactions, you'll need to rescan, which is a lengthy and slow process. If you make sure you're importing before giving out the address anywhere (for example, because they're being generated on an offline treasure machine which you control), it's perfect though.

You'll get notifications in all the normal ways for these addresses, including using -walletnotify (with a shell script executed for each received or confirmed transaction), and ZMQ (if compiled and enabled).


Minimum hardware requirements What are the minimum hardware requirements for mining in a bitcoin pool? Note that I'm not looking for profitability, this has been answered numerous times. I'm more into setting up an old computer to learn how things work. But I guess there are minimum hardware requirements to be able to  mine at all, e.g. being able to transfer blocks when a hash is found and a new block gets the attention. Are there any limits in the pools? Pools might not want participants that are so weak that they just create administration? If so, what is the minimum hash rate level, or is there another figure limiting pool access?

If you are purely out to learn, consider mining on the bitcoin testnet (the alternate bitcoin network that is identical except for running on a different port and allowing non-standard transactions). There you can even easily mine without needing any pool.

If you do insist on working on the Bitcoin port, really just about any pool should still allow you to participate. The question might be, though, what mining software is appropriate. If your choice involves downloading the blockchain, then its sheer size (>7 GB) may constitute a hardware constraint. But if you mine in a pool anyways, there is no reason for your miner to need access to the blockchain, unless you want it to verify that you do not unwittingly participate in a 50% attack.


Upper and lower bounds of the amount of bitcoins? As far as I understand, the bitcoin has an upper limit of 21 Million possible coins. Thus, the price of 1 coin, can in theory climb and climb. However, on the other hand, it seems like the system can handle 10^(-8) of a bitcoin.

Is this observation correct?
Is it already possible to have transactions of fractions of bitcoins?
If (1) is true, how can this fact influence the bitcoin's rate? In some sense, it means that the limit on the number of units is somehow much higher then 21M. Or more generally, how should its rate be interpreted given the existence of such tiny fraction of the unit?

Yes, there are 21 million whole bitcoins, each divisible up to 10^-8.
Yes, transactions for fractions of bitcoins are quite common, just as transactions for fractions of dollars are common.  I could send you 0.00000001 BTC if I were so inclined.
I can give you 1 dollar or 100 pennies, but the existence of pennies doesn't really influence the exchange rate of the dollar.


Plan to decrease the fees Is there a future plan to make the fees lower ? Will BTC block size increase after the 5G being rolled out in the world ? We could really use a Little bigger block while also developing lighting network . Please don't close this and let's have a conversation.

Is there a future plan to make the fees lower ?

Fees is decided by users and will work the same way. Transactions are prioritized based on fee rate by miners.

Will BTC block size increase

It's already increased after segwit (August 2017)
What's the blocksize limit after segwit and how do legacy nodes deal with segwit transactions?

We could really use a Little bigger block while also developing lighting network

As I mentioned above, blocksize is increased and it's not size anymore but weight.
A major problem with simple approaches to increasing the Bitcoin blocksize is that for certain transactions, signature-hashing scales quadratically rather than linearly.
https://bitcoincore.org/en/2016/01/26/segwit-benefits/


Etherium based tokens When we say certain crypto currency is based over etherium, for instance TRON, does it mean they have used etherium code from github and modified as per their use case? Or is it something completely different?

It is completely different.
Ethereum offers a standardized way to create new tokens on its blockchain called the ERC-20 protocol. ERC-20 is not a piece of code, software, or technology. Rather, it is guidelines that facilitate the integration of various currencies.
Tron is an ethereum based token that means it is powered by Ethereum blockchain. It will use resources of the ETH blockchain Tron is not a blockchain started from scratch.


Miner speed conversion What is the exact ratio one would use to convert Miner speed from Hashes per second to Shares per second, assuming Difficulty 1 shares?

The approximate ratio which is usually used in calculations is 2^32 hashes per share. If you want the exact ratio, it's 2^48/(2^16-1).


What pool catters to multiple alternate currency? I want to mine alternate coins. I am looking for pools that support many of the coins here so I do not have to keep changing pools.

try www.multipool.us they have a server which does multiple currencies in a day(depending on their profits)


Is there a Bitcoin exchange which has bank accounts in South Korea? Is there any exchange, or a website selling Bitcoin, which has a bank account in South Korea?

CryptoXChange.com will let you withdraw KRW directly to your bank account in South Korea. They just opened about a week ago.


Cold storage companies? I was curious to know if anyone knows of any bitcoin business that stores people's wallets offline?

I'm looking to diversify my backup methods for cold storage and am wanting to send my backups to a company that can store it for me securely.

In my opinion trusting a third party with your Bitcoin savings is kind of against the grain of Bitcoin.

It makes perfect sense to keep day to day amounts on hot wallets either on your phone or online by using services such as Coinbase, Blockchain.info, Circle and their likes.
These companies offer various cold storage options (e.g. coinbase vault) and there are other vendors that specialize in cold storage solutions, e.g. xapo

All these are viable options and have a place on the ever denser continuum of options to store bitcoins, and in all these cases you surrender some control over your bitcoins for the benefit of simplicity and ease of use.
However, part of the appeal of Bitcoin is the fact that by design you can maintain 100% control over your bitcoins. If you choose to do so, let me recommend CoinCooler (disclosure: I'm the founder).

CoinCooler helps you generate and encrypt digital files containing cold storage addresses and keys in a way that is guaranteed to be 100% offline. It also includes splitting the encryption password into shares (as was recommended above by Christopher).
Basically, its a tool that helps you perform cold storage of bitcoins in a way that is easy and secure so that, hopefully, you will consider doing it yourself and not rely on a third party.

Good luck!


What are pros and cons of txindex option? I am reading "Mastering Bitcoin" written by Andreas and I found this explanation about "txindex option"

  Transaction Database Index and txindex Option

  By default, Bitcoin Core builds a database containing only the
  transactions related to the user’s wallet. If you want to be able to
  access any transaction with commands like gettransaction, you need to
  configure Bitcoin Core to build a complete transaction index, which
  can be achieved with the txindex option. Set txindex=1 in the Bitcoin
  Core configuration file

I am not sure what situations should I enable the option. In my understanding, I can set txindex=0 if I use bitcoind as just a transmission tool of Bitcoin so that I can save data and time to sync the blockchain data. Otherwise, if I intend to make a blockexplore site like Blockchain.info, I need to set txindex=1.

Is my understanding of this correct?

If you're using Bitcoin Core just for your own personal use, you probably don't need the -txindex=1 option. But, if you're using Bitcoin core for development or blockchain analysis of some sort, you will need to set -txindex=1 to be able to get transactions data for any transaction in the blockchain.

The tradeoff is just that keeping an index is slightly slower, but allows you to do things like:

bitcoin-cli getrawtransaction aec2729f5e46750b310b6feadcf853098aa86df74f93322a701c29cd68b22568

(where aec2729f5e46750b310b6feadcf853098aa86df74f93322a701c29cd68b22568 is the ID of a transaction that does not affect your wallet at all).

Also, if you have been running your client for a while but haven't had txindex=1 set, then it might take a few hours to build the index. If you want to rebuild, launch with the -reindex option.


Can Artificial Intelligence be used to mine BitCoins faster? Can Artificial Intelligence be used to find more efficient mining algorithms?

Is there only one algorithm that can be used to mine?

EDIT: Asking about running the SHA(SHA(block header)) more efficiently to mine Bitcoin, not chainging the Bitcoin mining algorithm.

If you are talking about finding a better algorithm than SHA(SHA(block header)) - it might be possible to optimise the algorithm for some features, like being GPU resistant and so forth, but generally that would be a bit pointless. Changing that algorithm now would undermine the stability of Bitcoin and wouldn't benefit it much. Generally, the current algorithm does it job and does it well - it provides scalable difficulty, the mechanics are still unbroken, and so forth.

As for using AI to try solving the SHA(SHA(block header)) algorithm - it probably would be hard if not computationally impossible at the moment. The algorithm doesn't appear to be broken, meaning that the output of the calculation appears to be quite random, which is not faring good for trying to use AI to solve it.


Error getting bitcoin block to process from DB i am installing a full node on a linux server  and i'm trying to connect to bitcoin with BIFROST(https://github.com/stellar/go/tree/master/services/bifrost) but i am getting the error below which looks like a bitcoin error. All blocks have been downloaded. Please someone should guide me. Thanks

Error getting bitcoin block to process from DB: Error getting bitcoin_last_block from DB: get failed: get failed: pq: relation "key_value_store" does not exist  pid=65548 service=BitcoinListener
ERRO[2018-01-05T18:42:41Z] Error starting the server                     err="Error starting BitcoinListener: Error getting bitcoin block to process from DB: Error getting bitcoin_last_block from DB: get failed: get failed: pq: relation "key_value_store" does not exist" pid=65548

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

https://github.com/StellarKit

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

BIFROST_BITCOIN_RPC_SERVER:         "bitcoind:18332"

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

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

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


Is multisignature usable, if so what is the business process Im interested in the application of multisignature, for example in a business context.

I see clear and simple instructions on creating a multisig address, and sending to the address seems fairly obvious.  However the process to send from multisig, seems sparsely documented and often many versions old.

Is it practical to use multisig on a Core wallet?

If so, in simple two of two scenario, what is the process of generating a transaction?

Can a third party holding neither of the private keys, propose a transaction for the two signers?

Do they all need to use the same terminal?

How does a signer know a transaction is waiting?

If there are multiple transactions proposed, how would a signer sign some but not others?

Thanks.

Is it practical to use multisig on a Core wallet?

yes, but for sure it depends on your level of comfort. It's not (yet) plug'nplay :-) See also the example from Gavin at the end.

  If so, in simple two of two scenario, what is the process of
  generating a transaction?

see example.

  Can a third party holding neither of the private keys, propose a
  transaction for the two signers?

yes, a third party can create the transaction, and post it to the network (he would need to have the bitcoin addresses of the other  participants, to create the redeem script).

  Do they all need to use the same terminal?

no, not at all. I have done creation of the funding tx on my online system, and signing of the spending tx on an offline system (cold storage).

  How does a signer know a transaction is waiting?
  there is no protocol inside bitcoin for "notification". When you prepare a multisig, you need to have a different communication channel than the bitcoin network, to inform on necessary signing.

Example:
https://gist.githubusercontent.com/gavinandresen/3966071/raw/1f6cfa4208bc82ee5039876b4f065a705ce64df7/TwoOfThree.sh

btw: next to the examples to bitcoin.org, Andreas book "Mastering Bitcoins" (2nd edition) has many references to multisig, and it's wortwhile to read. It can even be found online.


What is the strMessageMagic good for? The bitcoin message magic, "Bitcoin Signed Message:\n", is defined: https://github.com/bitcoin/bitcoin/blob/203632d20b3107009f45fae56cc3f7d828b16660/src/main.cpp#L80

I know it is used as a part of signing messages to prove they were sent from owners of specific private keys, as detailed here: What are the safety guidelines for using the Sign Message feature?.

What I don't know, though, is what good is this message magic? Does it make sure the same key can't be used in two coins? Is there some cryptographic reason?

Imagine if that weren't there. What if someone tricked you into signing a Bitcoin transaction with your key? They could put the signature they got from you along with your public key into the input script for the transaction, and broadcast that transaction to the network. (Unless something else I'm not aware of would prevent that.)

Granted, it would be somewhat difficult to trick someone into doing that (Bitcoin transactions include null chars, and I don't think you can copy-paste those) but why take the risk at all?


Is Blockchain safe to store personal information? I do my first steps in blockchain development and I have a questions about storing some sensitive data on a chain.
Assuming two companies developed the protocol of document exchange through Blockchain. They don't want to give access to their information to anybody except themselves.
Ok, I think they can choose between two possibilities:
1) Content of docs is encoded cryptographically. The result is recorded on Blockchain directly.
Pro: companies must not maintain their own DB's for storing docs.
Contra: maybe it is expensive to store big data on blockchain; (the main) if verification key of a counterparty is stolen then malefactor get access to all documents since nobody can remove data from blockchain.
2) Counterparties can record on a chain hash result of docs' content only.
Pro: It is more safely.
Contra: In this scenario it is impossible to create completely decentralized db since every must maintain the needed data by oneself to get whole content of docs.

Do best practices exist for storing sensitive information on Blockchain?

Usually hashes are what's stored in the blockchain, not the data itself. It's safe to store hashes because it's extremely difficult to reconstruct a message given its hash (the so-called pre-image attack).


Is this "transaction malleability" really an issue? The well-known Bitcoin exchange Mt.Gox last week suspended all Bitcoin withdrawals because of "technical issues", which today have been better described in this press release.

This looks like a serious problem, but is it actually true?
Has this issue been confirmed by third parties?
Has it really been known "for a while"?
What true impact can it have?

Here's a good interview by Gregory Maxwell himself who's a Bitcoin developer:

  Oh there is a “problem” in the Bitcoin protocol, known since at least
  2011 (see the link I gave). But for normal applications, not involving
  unconfirmed transactions, it shouldn’t cause any severe problems
  because wallets can handle it locally.

This has to do with systems, such as Mt.Gox, that rely on unconfirmed transactions. Normal Bitcoin apps don't rely on unconfirmed transactions.

The Transaction Malleability issue that Mt.Gox talks about has been around since 2011. It only effects transactions which are not included in a block. Once a block is hashed, you can't change the transactions within it because then the hash of the block would have to change as well.

For all other Bitcoin applications that rely on confirmed transactions, as they should, this is not an issue.


What could this Python Assertion error mean? When I run the code below, sending a BTC transaction to the blockchain (using blockcypher api) I get an Assertion Error. I am not sure what an Assertion error means.

The code:

Btw the address had only around 5000 satoshi left....
Link to api documentation

https://www.blockcypher.com/dev/bitcoin/#creating-transactions

Thanks

This comes from the code where the checksum of your private key is validated, and suggests that the key is not valid.  However, the private key shown in your code seems to pass validation on bitaddress.org, so the Python library you're using might have a bug.

(By the way, please don't reveal the private keys to real addresses!  It looks like all the coins were moved out of that address (1LLZQ...) a couple hours ago, hopefully by you, but any further coins sent to that address are likely to be stolen immediately.)


Where can I learn more about BIP30; namely the exploit and the background discussion? I'm having trouble understanding the bug that was fixed in BIP030, and how it would be exploited.

Is the premise of this attack that there would have to be a netsplit and the chain was forked, then subsequently rolled back the old transactions?

What would the validation psuedo-logic of the following look like?

  There are several potential solutions to this problem:

  Guarantee that all coinbases are unique, making duplicate transactions very hard to create.
  Remember previous remaining outputs of a given transaction identifier, in case a new transaction with the same identifier is
  added.
  Only allow duplicate transactions in case the previous instance of the transaction had no spendable outputs left. Removing a block from
  the chain can then safely reset the removed transaction's outputs to
  nothing.

The reason I'm asking is so I can develop additional validation rules that work in parallel with the existing client.

The problem was that in case a duplicate transaction was created in a side branch that is afterwards reverted, and is only seen by a certain portion of the network, a fork risk exists. The nodes A that have seen the duplicate transactions and its reversal, will consider the original transaction unspendable (as it was overwritten and subsequently removed from their transaction database in the reorganisation), while nodes B that did not see the duplicate would consider the original spendable. When the original transaction is spent afterwards, and a majority of the network is in B, the network will split, as the A nodes will consider the chain created by B as invalid.

The third solution presented is implemented by BIP30 - this was a stopgap solution to prevent the worst from happening. A more complete solution (the first one) being deployed as BIP 34


Failure trying to import old wallet.dat I found an old wallet.dat, but I cannot import it and I don't know why.

First off, is this your wallet. I know this is a dumb question but I always have to ask. Also, was this wallet "encrypted"? What version of the wallet did you use and was this wallet based on the same application you are using now.

For example, Bitcoin Wallet Qt, you have to match it with the same product. I've noticed for example if I tried my wallet import doesn't work on other Bitcoin wallet applications, even if I have the password for the encryption correct.

This should really be answered by the developer of said wallet and since I don't know which wallet you're using, I can't help you at the current time in this regard.


How do I uniquely identify a transaction (to protect against malleability)? Transactions I broadcast can be malleated by anyone watching the mempool (more info here).

This rules out using txid for transaction identification.

How can I identify my transactions to make sure they are tracked by my application, even if the txid changes by the time the transaction is mined in a block?

This is an interesting problem, one that has been studied and discuss within the bitcoin community quite a bit.

The basic way to do this is to keep track of a normalized TXID alongside of the actual TXID used in the protocol. Then to calculate the normalized ID of a transaction, you serialize it:

With the inputs' txids replaced by their normalized transaction
Removing the scriptSigs (as those are the most malleable parts of a transaction)

The only caveat is that that this doesn't need to be done for coinbase transactions, as the scriptSig is not malleable (since it's already in a block) and there are no real txids in the inputs. You also don't want to remove the scriptSig from the coinbase transaction because it contains the height of the block (per BIP34), which guarantees the TXID (and normalized TXID) will be unique. Hence, for coinbase transactions, the normalized transaction id is the same as the transaction id (nTXID == TXID).

Note: this is a lot of work to keep track of normalized IDs for every transaction. It has not been implemented in Bitcoin Core yet, and implementing your own version of this may be time consuming.

If you can guarantee the set of outputs in all transactions within your system will be unique (i.e. you are using new receiving addresses and new change addresses for every transaction), then you might be able to use a hash of the set of outputs as a unique identifier. This would be more specific to your use case, as a temporary fix while Bitcoin Core doesn't yet have support for normalized transaction ids.

Some further resources:

https://github.com/bitcoin/bitcoin/pull/3656
What is the normalized transaction hash of a transaction?
When computing a normalized transaction id, when do I finalize the sha256 hash?


Adding Comment on Bitcoin Transaction (After Sent) Is it possible to add a comment to a bitcoin transaction after it has been sent?

Certainly. It is entirely dependent on the wallet software you are using. Bitcoin transactions do not actually have comments associated with them at all. Any comments or descriptions are local to your wallet software. That means that you can always add a comment to a transaction as it is simply updating an entry in your wallet software.


How can I convert a bitcoin public key to a bitcoin address? How can I convert a bitcoin public key to a bitcoin address?

Note: I am using PHP.

Is there an existing bitcoin API or PHP-API to do that converting ?

There is a step-by-step tutorial on the Bitcoin Wiki for converting Keys.

For testing there is a very good website, where you can put in a private or public key and its show you the result of any step: http://gobittest.appspot.com/Address

If you dont want to do those things on your own you could use Bitcore, a JavaScript API for Bitcoin. For a pure PHP Libary there are some custom user projects on github, but I didn't tested any of them.


Old wallet from old phone I originally downloaded Bitcoin wallet app on an old phone that had broken, the incentive for downloading the app was one free Bitcoin. Is there any system files that I can find referencing the Bitcoin information from the app if I'm able to get back inside so I can transfer it?
Phone: Samsung Galaxy s2
App: Bitcoin wallet

If you had saved "backup" of your wallet in a file with name similar to bitcoin-wallet-backup-YYYY-MM-DD-hh-mm, it can be restored from SAFETY -> RESTORE WALLET on top-right in the app assuming you also remember the associated password for backup file.


No update on API when receiving payments from other Blockchain.info wallets I am using the Blockchain.info API for an online shopping website. I have a problem in my Receive API: Payments from other wallets are working fine. Also, payments done by copying the address and sending payment to that address is working fine, but when a user sends payment from another Blockchain.info wallet using QR code (scanning the QR code via Blockchain App for Android), the index.php page remains as it is. Neither the .js file is called, nor the callback.php.

How can I still be notified of such payments?

Can't see what would be different from a QR scan.  If the correct BTC address is getting paid, it shouldn't matter if the address was copied, QR'd or hand-pecked.

I have an example of the callback from Blockchain's Receive API here:

https://github.com/damonp/simplebtcpay/blob/master/www/callback.php


What happens when an encrypted wallet runs out of keys? Say someone wanted to be evil to the main client and set its wallet to contain one key, lock it, and then start mining. After the first block was generated, the client would traditionally create a new key to use for mining and store it in a wallet. However, as it doesn't have the password in memory, it can't encode the key. How would the client respond in this situation? Use an old key for generation, store the key unencrypted, or do something entirely different?

If the key pool is empty and the wallet is locked it will use an old key instead of generating a new key. When wallet encryption was implemented the block creation code was changed to make sure different coinbase transactions are generated in that case.


How to create an inventory message and send it? I am trying to create an inventory message of specific hashes that I select. Assuming I have all the hashes stored in a vector, how do I create the message 'manually'? (i.e stuff like getting total length, generating checksum and adding in all the inventory vector elements to the message and then sending it to all my peers.)

Any help is appreciated, if you can point me at any Bitcoin core (v0.14 or v0.15) source code that handles this kind of stuff that is also welcome.

You can use Peter Todd's python-bitcoinlib, which contains builders for all the network messages.

Simple example, given a list of hashes:

from bitcoin.net import *
from bitcoin.messages import *

m = msg_inv()
for h in hashes:
    assert len(h) == 32
    inv = CInv()
    inv.type = 1  # TX
    inv.hash = h
    m.inv.append(inv)

inv_msg = m.serialize()

This assumes that the list of hashes you have are little endian unhexlified strings.


How to use block and transaction hashes for generating simple stochastic chances? Many online Bitcoin gambling websites use the block chain info to prove fairness. Most of them use rather complex algorithms for this with pre-published secrets.

What most of them basically achieve: Convert a block hash or a transaction hash to a number in a certain range.

What is the simplest way to do this in a fair way, verifiable by everyone? I would like to focus mostly on using block hashes, which are the least manipulable.

With a simple way I'm looking for either a very simple mathematic way to do so or either a library which can do it for you.

I understand that predefined secrets are required when transaction information is used, because these are easy for users to manipulate. Block information, on the other hand, is far less easy manipulable. If you want to generate a block with a hash that would make you win in the game, you would make the standard block generation problem even more difficult and you will have to do solo mining  which is already quite hard when doing regular mining.
So, are these secrets also required when using block information?

Note that I am an engineering student myself so I will probably understand much cryptographic and mathematical terms, but the purpose of this question is of course to receive an answer that everyone can understand.

Here's the way SatoshiDICE does it:
SatoshiDICE has "secret keys" for each day which they pre generated for the next 10 years. They published the hashes of those keys so you can verify they didn't change them. When a transaction comes in, they hash the transaction hash and the secret key for that day, then take the first two bytes of that. Then, a few days later, they publish the secret keys.


If btc change is supposed to be distributed to change addresses, can the distributed change be pooled and paid together in 1 new transaction? Since last time I dabbled in bitcoin using a single address wallet (using fractions of coins gained from captcha faucets), I've learned about new things like change addresses. I understand when you make a transaction you pay the address' full value and the change is sent back to it or preferably to a new address for the sake of everyone's anonimity.

So let's say you have a wallet with 10 addresses and 20 change addresses. After a while you end up having your collective wealth spread out over all 30.

Now comes the time to pay someone an amount larger than held by any individual address you have.

Does your bitcoin client somehow pool the money from the addresses you control together and funnel it into a single transaction to your intended recipient with a single transaction fee? I thought this was impossible by design since an address can only spend the coins it directly owns and a transaction has 1 source address.

Does your client first need to gather the btc in your individual addresses into a single new address through n transactions and then spend that new address with another transaction? I could have to pay the transaction fee up to 31 times for a single payment to somebody.

--

Honestly I've gone over a dozen sites, wikis, etc and this stupid question isn't answered anywhere, directly or otherwise. What I know about it (addresses can only spend the coins they control and a transaction has only 1 source and 2 destinations) conflicts with reason (only needing to pay for 1 transaction since you control all the addresses that control btc you want to spend).

a transaction has 1 source address

That is not correct.  A transaction may have any number of inputs, so it can spend the results of any number of previous transactions involving any number of addresses.  See https://en.bitcoin.it/wiki/Transaction.

Here is an example of a transaction with 4 inputs.

If you want to make a large payment using transactions from your 30 different addresses, you can make a transaction with 30 inputs.  Your Bitcoin wallet will handle this for you; if you try to make a payment of a larger amount than any single previous transaction contains, it will automatically select as many transactions to use as inputs as are needed.

Each additional input makes the transaction larger, and fees are based on the size of a transaction, so a transaction with 30 inputs will require a higher fee than one with 1 input.  However, it should be less than the fees to make 30 separate transactions.


Is there a flag to allow creating a transaction with multiple outputs to the same address? Does bitcoin core have a flag to allow creating a transaction with multiple outputs to the same address?

No, and it is unlikely one will ever be added. There is no reason to make multiple outputs to the same address as it is inefficient and wastes money.


How do I delete the blockchain after uninstalling Bitcion Core? I downloaded bitcoin core, and it "synced" the blockchain, taking up 163gig on my HD considerably slowing my comp. so I uninstalled bitcoin core, but yet still see to have 163gig of unwanted data slowing my computer. I operate Windows 10. HOW do I get rid of it. It seems to be in my users file, but mysteriously doesn't show up when trying to locate it?

You need to delete your data directory.

See the question Where is the data folder for Bitcoin-Qt? for where it should be installed by default on your system.

Make sure you backup wallet.dat first, if you've ever used any of the addresses in your wallet.


Which cryptocurrencies deviate significantly from Bitcoin? There's been dozens of alternate cryptocurrencies but I don't believe many of them did much other than find/replace some strings.

We see Bitcoin as made up of the blockchain and proof-of-work via hashing of the next block. Have there been any altcoins that drastically strayed from this recipe?

Ripple is in my opinion very interesting that uses a very different system which isn't based on the block chain nor the proof-of-work algorithm. Rather, it uses a quite different consensus algorithm outlined here: https://ripple.com/wiki/Consensus

The only problem is that there's very little research about this concept and I can't figure out how it works more in detail without an official publication of some sort. All I can say is that it's different from any altcoin because it's based on trusting nodes that behave honestly and distrusting the ones that don't:

  If someone should be dishonest, the honest actors will notice them
  lying and can disregard their future attestations.  That is, if you lie once, you have no gain as the network doesn't care and they won't care what you say in the future.


What is the block verification procedure, and will it ever become too expensive? I'm trying to get a grasp on which items the network is responsible for validating / enforcing.  If I understand correctly, when a new block is received, the recipient needs to verify the following:

the block hash - i.e. that the hash of the header, including prev. block hash, Merkle Root hash, time, target, and nonce is correct, and that its value is less than the target.
the target - needs to equal the current (difficulty) target.
the hash of the prev. block - must be correct, and must "point to" the end of the currently "longest" (most difficult) chain.
all the transactions in the block.  This seems like it would involve:  looking up the input txn's of the current txn's by their hashes, and running the appropriate sigScript + pubKeyScript pairs.  Also verifying for each txn that sum(inputs) >= sum(outputs).
the coinbase transaction. sum(outputs) >= the "change" left by all the other current txn's.
hash of the Merkle Root.

Questions:

Have I missed anything?  (timestamp?)
This seems like a lot of work!  Particularly scanning through the entire blockchain to find the input transactions. (Though I suppose the client could build an index once on start-up.)  My understanding is that at least #4 is optional - a node could choose to assume that it's been done by somebody else.  As the blockchain grows larger & larger, wouldn't it become less feasible for individual nodes to do all this work every 10min, resulting in fewer verifications being done?
Does a node have to verify every block (and thus every txn) when it first downloads the chain?  It's one thing to verify all the block hashes, but a new node without any history wouldn't know if the contents were valid - only that X amount of work had gone into solving the blocks.

I) See https://en.bitcoin.it/wiki/Protocol_rules#.22block.22_messages for the full list of checks that must be done on a new block.

II) Only an index of "unspent transaction outputs" need to be kept to check new transactions / blocks, and that index is a few hundred megabytes currently and very comfortably fits in memory. It will get bigger as more people hold bitcoins, but it will not grow without bound and we've implemented incentives to encourage software to make the UTXO set smaller instead of bigger.

III) Verifying every transaction in every old block isn't necessary, and the reference implementation skips the expensive (ECDSA signature) transaction checks up to a compiled-in checkpoint.


Which crypto currency exchanges are using segwit (bc1) addresses for its users? Are any of the cryptocurrency exchanges using native segwit (bc1) addresses for any of its users?

As of November 2017, only Electrum wallet and blockchain.info are major services which support bech32 address format. A number of services use P2SH wrapped segwit scripts which is easier for backwards compatibility for the moment. This is expected due to the bech32 BIP (BIP 173) not being formalised at this point in time.


Bitcoin transaction broadcast I am bit confused about transaction broadcast on the internet.How does a miner know a transaction has been broadcasted? The internet network is very huge.Or how does my bitcoin client collects the blocks broadcasted?

Bitcoins P2P network is a flooding design, new transactions and blocks are broadcast to every connected peer, and they broadcast to every one of their peers. Valid data reaches all participants very quickly due to the random selection of peers that all nodes make. All validating participants keep a 'mempool', a collection of unconfirmed transactions they believe are valid, miners collect transactions they wish to include in blocks from their mempool and turn them into a candidate template to mine against.


How do the most popular Bitcoin wallets handle transactions stuck in the mempool with too low fees? If unconfirmed for a specific period of time, do popular wallets remove transactions from the mempool? Are there some wallets where if your transaction is never confirmed, your funds are never returned?

In general TX is removed after arbitrary time period (14 days for Bitcoin Core) or when mempool size is exceeded and space is needed for fresh TXs. For Bitcoin Core check this answer.


Knowing a single transaction can you track down a Bitcoin user? I have used this transaction to donate to Wikileaks. I have applied no special techniques to obsure my identity. How much information can find out about me on the blockchain. What tools would you use?

Can you guess the following information? Can you prove it?

How did I get the bitcoins I was donating?
What else did I use my bitcoins for?
What was my total bitcoin balance at a given time?
What wallet am I using?

Please try not to violate other people's right to privacy.

Knowing the Wikileaks donation address, one knows every address
that contributed to them.
Knowing a given address we are interested in, we can try tracing the coins back to when they were created (which can be harder if they
were mined by a large pool, in that case you'd probably get a lot of
origin blocks).
Given an address we know when it received coins and from what address.
If the particular wallet contained more than one receiving address, sometimes the addresses would be used together. If you have more than one address in the "From address", you know the person had to have them together in on wallet.

And now a bit of knowledge one can gain from outside the Block Chain:

A lot of people put notes like "My Bitcoin Address is: 1HWbVLhxj7bhewhyapMZpyhqWAeAhJd51E" in places like the forum. Then you can link the addresses to particular nicknames, and in some cases emails, names, facebook pages and so forth. If you use one address for everything, one can know if you contributed to Wikileaks, or other known addresses.
If one would have a big node in the Bitcoin Network that by chance would be connected to your Client when it sends transactions using the known addresses, one could potentially trace the IP of your computer. If you have a static IP, this can identify you.

So all in all, with enough resources, time and determination, one can know quite a lot about a given Bitcoin address. A lot of it can be mitigated with enough diligence, but some of methods might be quite hard.


Which clients offer a way to replace unconfirmed transactions? On this site, we see a lot of questions from people who have sent a transaction which isn't being confirmed, often because they have neglected to include an adequate fee.  The Satoshi client doesn't appear to offer a convenient way to handle this; the only advice to the user is either to wait indefinitely until the transaction is picked up by an altruistic miner, or to do some kind of elaborate hack involving replacing wallet.dat, etc, so that the client forgets the transaction ever existed.

The obvious solution from the point of view of the protocol is to produce and send a new transaction spending the same coins, but with a fee added.  Since this would technically constitute a double spend, it's perhaps not surprising that client authors don't want to include such a feature; but all the same it would be very convenient in certain situations.

Are there any clients that provide this feature?

Alternatively, has anyone produced a patch adding this functionality to some client?

Electrum Bitcoin Wallet has the feature. I've confirmed that mac client worked. It seems that Android app has the same feature.

https://electrum.org/#download


What is the limitations in Bitcoin's network that can't be change by a Soft Fork? I'm trying to understand why (Or how) there is all kinds of different version for the Bitcoin nodes?

I saw that if one node is following the Protocol limitations it can act as a valid node.

Is there a list that gathered all the rules?

Even the one who can be changed by a soft fork.
(block size, SEGWIT etc...)

Bitcoin.org's developer documentation has a pretty good description of the consensus rules, but it does not and cannot describe them fully. This is because the consensus rules are dictated by the code that enforces them, not by a document. AFAIK, there is no list of things that can be hard forked and things that can be soft forked as such lists would be infinite. A hard fork can do anything; a soft fork can do much less, but with some "tricks", a soft fork can do just about anything too.

In general, a hard fork is a change which makes something that was previously invalid, valid. This would mean things like changing the transaction and block formats, the current scripting system, etc.

In general, a soft fork is a change which makes something that was previously valid, invalid. This would mean things like changing when the OP_NOP (no operation) opcodes are actually no op and not. Soft forks can also add extensions to what currently exists, but not always change what already exists. So a soft fork could add something to the transaction format, but it can't change the current transaction format to something else. Changes like these would be segwit and extension blocks.


Mining & The Double Spending Dilemma My understanding of the double spending problem is as follows:

Suppose account A has 1 Bitcoin and sends it to account B and  then creates another transaction which sends the same Bitcoin to account C. Some nodes may be notified about the first transaction first while other nodes may be notified of the second transaction first, leading to a conflict regarding which transaction actually occurred first and is the legitimate one.

If I understand correctly, mining solves this problem by forcing each miner to choose between one of the two transactions. But what happens if two miners receive two distinct transactions (A -> B  vs. A -> C) and produce a hash at exactly the same time  - won't each one still record a different sequence of events?

On a similar note, what happens if miners disagree about who produced the hash first? What happens if two nodes produce a hash at exactly the same moment? Some nodes will say miner x mined earlier others will disagree so how is this issue resolved? How does it end up that all nodes eventually agree unanimously and we don't constantly end up with different versions of the block chain?

You just have to wait. Eventually, another miner will produce a block and it will be on top of one or the other of the two blocks found at about the same time. The probability of again having two miners find blocks at about the same time is very low. The truly paranoid can wait for six blocks to be mined before relying on a transaction.

Persistent splits should be unlikely because the longer the chain you mine on top of, the higher the probability of you getting to keep the mining reward. If you mine on top of a chain that is one block shorter, you only tie the existing chain that other people are already mining on top of.


Blockchain and user rights to ask for personal data removal Some countries (France with the CNIL, and more generally European - but probably many other - countries) have laws that give the right to users of online services to ask for permanent unsubscription / personal data removal from their database.

This seems impossible with a blockchain technology: we cannot remove past blocks without breaking the whole structure integrity.

It might not be a problem with BitCoin, for which there is no real personal data (data is linked to a private/public key, not to a username / physical identity), but still those questions might apply more generally to the growing blockchain industry.

How to deal with the legal right of data removal for users in a blockchain paradigm?

In general, cryptocurrency is not an online service separate to the user, the user is a node and is a part of the service. Still, the definition of online service is not a good fit for the most part.

Speaking of Bitcoin, the only personal data is your private keys. Everything else is broadcast at some point, it is like beaming some of your public data into outer space via satellite, bouncing from star to star (node to node) and then saying that you want it taken down. Only your private keys are personal data and they are never broadcast (unless you make a bad mistake outside of Bitcoin!).

If it comes to law, the purpose for deriving your public keys and addresses is to send/receive Bitcoin which requires broadcasting. You can no sooner take it back than you could mistakenly post a valentine in a print newspaper then expect the newspaper to take back all copies and have your public data erased because you have changed your mind.


how does Scrypt use memory? I saw in some places that Scrypt uses a lot of memory, therefore a good supply of system RAM is needed to hash with it. however, I saw in other places stating that is ONLY uses L2 Memory.
which one does it use?

The amount of memory that scrypt uses can be adjusted to get the desired behavior. If a particular CPU has enough L2 memory to hold all that's needed for a particular scrypt use case, then the performance of system memory will not be relevant. Scrypt-based coins can increase the memory requirements dynamically as one way of increasing the mining difficulty.


Can I exchange BTC from CoinBase? I have read the articles in the BitCoin website and I thought of implementing the BitCoin payment method in my website.

I registered at a payment processor website called "CoinBase". Unfortunately my country is not supported for the Buy & Sell feature.
I am thinking of accepting payments and later using some sort of exchange website to cash out. If I do start accepting BTC should I store them in the CoinBase wallet or use something like BitCoin Core? I am asking this because I heard that some BitCoin services steal the BitCoins from their customers and run off. Other than that, storing them online is probably more comfortable.
Could I get some suggestions on good exchange websites?

Thanks in advanced.

It's generally a good idea to hold bitcoin in a wallet you control vs exchanges like Coinbase. I wouldn't use Bitcoin Core however as that is primarily a consensus server at this point. Quite a pain to run. Check out other standalone wallets like Airbitz (disclaimer: co-founder) or Mycelium, Electrum, etc.


Can Lightning Network be used for individual small transactions? Today I went to use shapeshift.io to trade some BTC for IOTA. I only have a small amount of BTC, and I will only be performing a single transaction. Due to congestion on the network coupled with impractical fees the aforementioned operation is infeasible.

My question is, in theory, does the lightning network help me in this situation?

I get that it can help me pay merchants several times without bloating the network/incurring multiple fees, but does it help an individual user in a single transaction like the one above? I feel like I'm missing something, because lightning is supposed to solve both congestion and fees, but in my limited understanding, it seems to do this only indirectly. It clearly would unclog the mempool a great deal, and thereby, because of a decrease in congestion result in a concurrent decrease in transaction fees. Right? But is there a direct application for single transactions not involving multiple small in/outputs like my very real world example above?

Thanks a lot for your responses.

Yes, LN would help you directly.

Suppose you have an open LN channel with Shapeshift or are able to route a payment through LN (i.e. you have a channel open with someone else who has channels to other people). Suppose that IOTA also has implemented LN and you have an open payment channel on IOTA. Now when you want to exchange BTC for IOTA with Shapeshift, you would route your payment through LN to Shapeshift and they would then route a payment on IOTA through IOTA's LN to you.

In fact, this could be done as one route with the guarantee that you will get your money and not have to rely on Shapeshift or any other third party. This is known as an atomic swap. LN allows for atomic swaps like this for coins that have LN implemented.

So in this scenario, you don't have to pay a transaction fee to send money to Shapeshift. Instead you paid a transaction fee to open the payment channel which you are using for transacting with many different people, not just Shapeshift.


Is Kim Dotcom's "Megacard" a viable possibility for bitcoin? A week ago Kim Dotcom posted that a Bitcoin Credit Card would be something that he would be keen to support. Apart from Bitcurex, which is a different system and slightly lacking in credability and trustworthiness, I'm interested in a card which works like a credit card but is intrinsically integrated with the BTC system.
Due to the nature of Bitcoin, would a credit card-esque form of payment actually be viable?
 If so, how?

This type of product has been tossed around since at least May 2011 when MagicalTux was the new owner of Mt. Gox.  They no longer discuss it.

BitInstant "leaked" such a Mastercard in Fall 2012.  They claim it is "seeing progress" but there's nothing yet.

There are similar cards.  Peter Schiff's Euro Pacific Bank offers a gold-backed debit card where gold funds are sold when using the debit card to make purchases using fiat.  But that is not available to customers from the U.S.


How can I verify my merkle root function is correct? I've started playing with Bitcoin on a more technical level recently (I'm an experienced software developer but just a user of Bitcoin up until now). I'm trying to implement a function to calculate a merkle root, as described by the protocol documentation here. I think I have implemented a function as described, but I'm not too sure how to go about verifying what I've done. Ideally I'd like to write some unit tests, but I need some input values and an expect output.

Does anyone know where I might find a set of transaction hashes, along with the correct merkle root which should be produced from there? I'm really looking for example inputs & output which I can use to verify the correctness of my function.

I've tried copying & pasting the transaction hashes from Bitcoin block 96001, but the merkle root I'm calculating does not match what is displayed on blockchain.info. The strange thing is, when I feed the same transaction hashes into the merkle root function in BitcoinJS-lib, it produces the same merkle root as my function. Are my function and BitcoinJS-lib both wrong? Is blockchain.info wrong? Or is there something else going on here?

var sha256 = (buffer) => {
  return crypto.createHash('sha256')
    .update(buffer)
    .digest()
}

var doubleSha256 = (buffer) => sha256(sha256(buffer))

var merkleRoot = (hashes) => {
  if (hashes.length == 1)
    return hashes[0]

  return merkleRoot(
    _.chain(hashes)
      .chunk(2)
      .each(tuple => tuple[1] = tuple[1] || tuple[0])
      .map(tuple => Buffer.concat(tuple))
      .map(doubleSha256)
      .value()
  )
}

// Transaction hashes from block 96001:
var tx1 = Buffer.from('dcc95c8740525e27d87333558e5d0a288d0eac9062598c86c77e75dcde7178d2', 'hex')
var tx2 = Buffer.from('043cd1d9166cf16a4cc02d4385667657056cbe23f7058877c7fde09ef7de904a', 'hex')
var tx3 = Buffer.from('88b058d7e3e7b6d174d0f5a76a209a3107de65c01b010cda72ee64b22c980998', 'hex')

console.log(merkleRoot([tx1, tx2, tx3].sort()).toString('hex'));

// expected 'e7ae478c684e965d730e72b9cac644fd1ebeb1517fe69cc458d9d4070b9de8d8'
// output   'b2f52e4efbbab7653489b83d5ad331f1ada1b7e5959ac63b8aa45a786ae90279'

Most likely, you have some endian-ness issues. Remember that the merkle root published is in little-endian and so are the transaction hashes. You'll have to reverse them and then calculate merkle calculations.

You can take a look at the details of a block with the tx hashes here:

https://webbtc.com/block/00000000000000000375c25e5af8f3b2310585ad6a7c264d66398018ce4c6a41.json

There's a very helpful key in that json payload called "mrkl_tree" which tells you all nodes of the merkle tree (so the parent of two adjacent leaf nodes is in that set). It's probably easiest to build tests around that.


What is my incentive for sending old blocks? If I am a miner, it makes sense for me to broadcast recent blocks since I want my chain to be the longest (see What encourages Bitcoin miners to relay blocks?).

However, what is my incentive for broadcasting old blocks? Deep blocks are very unlikely to be orphaned, so it seems that I get no gain from relaying them, despite it costing me bandwidth.

Miners have spent money on mining hardware. The value they are able to get out of that mining hardware is tied directly to the price of Bitcoins and the mining difficulty.

If the price goes up, that will incentivize some additional miners and if the price goes down, more people will mine. But this doesn't happen immediately nor does it cancel out perfectly. Miners benefit from an increase in the price of Bitcoins and are harmed by a drop in the price of Bitcoins.

Your incentive for sending old blocks is that the utility of bitcoins drops if it's more difficult for new nodes to join the network. While this effect on the price of bitcoins is slight, the amount of old blocks you need to send is also slight.


How to create raw transaction I've started creating my own wallet in bitcoinj and I have serious problem. I want to create raw transaction without wallet object. So I wrote this piece of code:

    //String to a private key
    DumpedPrivateKey dumpedPrivateKey = DumpedPrivateKey.fromBase58(params,
            privKey);
    ECKey key = dumpedPrivateKey.getKey();

    //String to an address
    Address address2 = Address.fromBase58(params, address);

    Transaction tx = new Transaction(params);
    //value is a sum of all inputs, fee is 4013
    tx.addOutput(Coin.valueOf(amount-4013), address2);

    //utxos is an array of inputs from my wallet
    for(UTXO utxo : utxos)
    {
        TransactionOutPoint outPoint = new TransactionOutPoint(params, utxo.getIndex(), utxo.getHash());
        tx.addSignedInput(outPoint, utxo.getScript(), key);
    }

    tx.getConfidence().setSource(TransactionConfidence.Source.SELF);
    tx.setPurpose(Transaction.Purpose.USER_PAYMENT);

    System.out.println(tx.getHashAsString());
    b_peerGroup.GetPeerGroup().broadcastTransaction(tx);

But this ends with:

  mandatory-script-verify-flag-failed (Script evaluated without error but finished with a false/empty top stack e

What is wrong with my code?

EDIT:
I found a solution. I've changed only this line: tx.addSignedInput(outPoint, utxo.getScript(), key, Transaction.SigHash.ALL, true);

Sure :)

My solution was pretty simple:

//String to a private key
DumpedPrivateKey dumpedPrivateKey = DumpedPrivateKey.fromBase58(params,
        privKey);
ECKey key = dumpedPrivateKey.getKey();

//String to an address
Address address2 = Address.fromBase58(params, address);

Transaction tx = new Transaction(params);
//value is a sum of all inputs, fee is 4013
tx.addOutput(Coin.valueOf(amount-4013), address2);

//utxos is an array of inputs from my wallet
for(UTXO utxo : utxos)
{
    TransactionOutPoint outPoint = new TransactionOutPoint(params, utxo.getIndex(), utxo.getHash());
    //YOU HAVE TO CHANGE THIS
    tx.addSignedInput(outPoint, utxo.getScript(), key, Transaction.SigHash.ALL, true);
}

tx.getConfidence().setSource(TransactionConfidence.Source.SELF);
tx.setPurpose(Transaction.Purpose.USER_PAYMENT);

System.out.println(tx.getHashAsString());
b_peerGroup.GetPeerGroup().broadcastTransaction(tx);


Any idea why Bitcoin Core signature is untrusted? It's suppose to be a trusted signature, right?. I'm downloading Bitcoin Core from bitcoin.org
gpg --import laanwj-releases.asc
gpg: key 90C8019E36C2E964: 51 firmas no comprobadas por falta de claves
gpg: clave 90C8019E36C2E964: "Wladimir J. van der Laan (Bitcoin Core binary release signing key) <laanwj@gmail.com>" sin cambios
gpg: Cantidad total procesada: 1
gpg:              sin cambios: 1

sha256sum --check SHA256SUMS.asc
sha256sum: bitcoin-0.20.0-aarch64-linux-gnu.tar.gz: No such file or directory
bitcoin-0.20.0-aarch64-linux-gnu.tar.gz: FAILED open or read
sha256sum: bitcoin-0.20.0-arm-linux-gnueabihf.tar.gz: No such file or directory
bitcoin-0.20.0-arm-linux-gnueabihf.tar.gz: FAILED open or read
sha256sum: bitcoin-0.20.0-osx64.tar.gz: No such file or directory
bitcoin-0.20.0-osx64.tar.gz: FAILED open or read
sha256sum: bitcoin-0.20.0-osx.dmg: No such file or directory
bitcoin-0.20.0-osx.dmg: FAILED open or read
sha256sum: bitcoin-0.20.0-riscv64-linux-gnu.tar.gz: No such file or directory
bitcoin-0.20.0-riscv64-linux-gnu.tar.gz: FAILED open or read
sha256sum: bitcoin-0.20.0.tar.gz: No such file or directory
bitcoin-0.20.0.tar.gz: FAILED open or read
sha256sum: bitcoin-0.20.0-win64-setup.exe: No such file or directory
bitcoin-0.20.0-win64-setup.exe: FAILED open or read
sha256sum: bitcoin-0.20.0-win64.zip: No such file or directory
bitcoin-0.20.0-win64.zip: FAILED open or read
sha256sum: bitcoin-0.20.0-x86_64-linux-gnu.tar.gz: No such file or directory
bitcoin-0.20.0-x86_64-linux-gnu.tar.gz: FAILED open or read
sha256sum: WARNING: 20 lines are improperly formatted
sha256sum: WARNING: 9 listed files could not be read

gpg --verify SHA256SUMS.asc
gpg: Firmado el mié  3 jun 10:59:52 2020 WEST
gpg:                usando RSA clave 90C8019E36C2E964
gpg: Firma correcta de "Wladimir J. van der Laan (Bitcoin Core binary release signing key) <laanwj@gmail.com>" [desconocido]
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: 01EA 5486 DE18 A882 D4C2  6845 90C8 019E 36C2 E964

When you import a key, you can mark it as trusted. Usually, you would do this after meeting the owner of a key and verifying that they actually control the key, e.g. at a CryptoParty. Since it is infeasible for each user to verify every other user in person, PGP/GPG leverages a "web-of-trust" to establish connections between keys. E.g. Alice has met Bob and trusts Bob's key. Bob has signed Carol's key, so Alice transitively trusts that Carol's key to some degree. There are some issues with the reliability and assumptions of this approach, but that's how it works.
Anyway, what GPG is telling you here is that the package you have downloaded was indeed signed by the key you checked against, but it warns you that you have not verified the authenticity of the signing key.


Useful alternative Bitcoin transaction scripts The Bitcoin wiki describes a transaction's script as something that describes "how the next person wanting to spend the Bitcoins being transferred can gain access to them".

The script for "a typical Bitcoin transfer to destination Bitcoin address D" is described as requiring of the future spender:

  a public key that, when hashed, yields destination address D embedded in the script, and
  a signature to show evidence of the private key corresponding to the public key just provided.

What useful alternative scripts could be made? What practical situations would they serve, and what client features would be required to support them?

If a full implementation of the scripting language were in place, then pretty much all of the following could be implemented. However, there are serious security concerns with some of these and they warrant further analysis before finding their way into the clients.

The referenced Scripts link in the original question contains several script examples covering the following use cases which are worth listing before getting to the more exotic cases:

Standard generation/transaction to Bitcoin address - this is the typical situation everyone uses when sending/receiving bitcoins
Standard generation/transaction to IP address - a method of automatically getting the recipient to generate a Bitcoin address so long as their IP is known (very dangerous due to man-in-the-middle attacks)
Transaction with a message - Add arbitrary text to a transactions (typically limited to around 10,000 bytes) which allows for ASCII art and other graffiti, perhaps even a steganographic exploit
Hidden recipient address - allows the address of the recipient to be encrypted so that only a shared secret between them allows the bitcoins to be spent

The further linked Contracts page on the wiki provides these additional use cases which are somewhat more complex:

Providing a refundable deposit - handy for proving that you're willing to spend money to ensure that you're reputable, with the option to get it back after a given time
Escrow and dispute mediation - permits several parties that don't trust each other to trade using their common trust of a given set of trusted third parties (this is the classic M of N signatures to release the funds contract)
Assurance contracts - essentially to allow pledges to be given for the greater good by competing parties (example is to pay for a lighthouse)
Using external state - Scripts can consult addresses that may be attached to "oracle scripts" which can perform transaction signing based on complex internal logic (example is to guarantee payment of an inheritance upon death or coming of age whichever is the sooner)
Trading across chains - Allows other Bitcoin based currencies to trade against each other (thus potentially solving this problem for countries wishing to use Bitcoin)

Clearly there are many opportunities for exotic transaction types:

Proof of knowledge - to prove that knowledge was acquired at a certain time a transaction could be created that references an oracle script that could provide verification. The oracle may not exist at the time of presentation, but it would be trivial to run the script and verify the outcome.
Payment on successful prediction - another external state use case to allow an external oracle to sign a transaction based on pre-arranged transaction outcomes (examples include gambling, spread betting etc)

All in all, it shows that Bitcoin is a very effective financial trading instrument.


Bitcoin URGENTLY Need Blocks Files - Download them from some Website I have been doing this synchronization procedure (first time) in bitcoin-qt for over 85 hours and it only came to 31 Weeks Behind. Withdrawed from localbitcoins like 95 hours ago and obviously this balance isn't yet seen. I have come to the step where I cannot wait anymore. I only have 512 dram and it is taking my whole system. Also cannot leave pc runned 24/7 anymore. It would be amazing if someone could please upload to some fast legitimate file sharing website like rapidshare.com the blocks files - remaining ones. Once again I repeat i am at 31 Weeks Behind. Or please if you could at least provide me the downloading link if you already shared blocks files yesterday with anyone else or maximum two days ago. I really need that procedure finished please and would owe you for a lifetime for such files so I can just save them. Would be much faster. I cannot use torrents, even if those files are updated enough and already there - torrents aren't safe and could be full of malware.

If you were in such a hurry to get your coins, why didn't you install a light client as Multibit or Electrum? You could've installed either, use the address it generated for the destination address of your withdrawal, and receive your coins after some minutes.

The point of using the original QT client versus any of these is to increase the Bitcoin network's security by creating more copies of the blockchain.

Options you have: just keep going! Seriously, 31 weeks is not that much time, in about another day you could get it finished. Else, you could try the ordering the blockchain in DVD (I believe there are other sites like that one selling it) or you could try downloading it from a SourceForge "project" containing them up to a certain point (which I believe you're already past) or these others or any of the other links mentioned at the question which I believe this question's a duplicate of.


How segwit blocks are seen by segwit and non-segwit nodes? Let's say a miner mines a block.

In this block some transactions will be non-segwit and some will be segwit?
The block contains two parts:

The part with transactions
The segregated part with signatures of segwit transactions?

To old nodes non-segwit transactions look normal, and segwit transactions look like no-signature-needed valid transactions? These nodes don't see the segregated part containing signatures?
To new nodes non-segwit transactions look normal, and they recognize segwit transactions and check the segregated part to validate the signatures?

There aren't two part to a block like you describe. The word segregated in segwit means that the witness data isn't included in the TXID computation similar to how it always wasn't included in the signature hash computation. It's still included in transactions and blocks.

With segwit, the signatures are in each transaction in a witness field that is included before the nlocktime field.

When a node relays a segwit using block to a peer that doesn't understand segwit, it strips the witness fields out of all the transactions that have them.  Since they don't have any rules pertaining to segwit data they're perfectly fine with this.

If you were to hand a stripped block to a non-outdated node, it would just drop it and ban you for giving it invalid data-- it knows about the segwit rules and attempts to validate the additional data.


How do I exchange a cryptocurrency with another? I have a bunch of litecoins and want to exchange them for bitcoins. What's the easiest way of doing it, without having to sell LTCs first and then buy BTCs?

BTC-e handles a few different alt coins as well as BTC, USD and EUR.


difficulty value vs. computational power Assume a miner has a computational power q while the rest of the network has a computational power p = q-1.

Based on Relationship between Hash-Rate and Difficulty: difficulty = hashrate / 7158388.055.

How are p and q related to that?

What I am trying to figure out is, assuming we have a miner that has 50% of computational power, will the difficulty value change so that miner still finds a block in 10 minutes?

If that is the case, won't that difficulty value be too high for the miners that have much smaller computational power?

What I am trying to figure out is, assuming we have a miner that has 50% of computational power, will the difficulty value change so that miner still finds a block in 10 minutes?

The difficulty value will change so that a block is found, on average, every ten minutes.

  If that is the case, won't that difficulty value be too high for the miners that have much smaller computational power?

Each miner will still have a probability of finding a block proportional to their hashing power.

Say you're a miner who finds a block every 30 minutes -- you'll be finding roughly one out of three blocks. If the difficulty doubles, you will now find a block every 60 minutes -- you'll be finding roughly one out of every six blocks.


Difference between coinbaseaux.flags vs. coinbasetxn.data? After reading through most of the protocol, and trying to piece everything together, I'm still at a loss as to how some things work. For example, the difference between coinbaseaux.flags and coinbasetxn.data.

With coinbasetxn.data it makes sense, because it's already built, and we can use that data to modify the coinbase data if needed and then add to transactions for merkle root. The coinbaseaux.flags data on the other hand doesn't make much sense to me. I couldn't find any mention of the flags option.

Below are 2 transactions - one using coinbaseaux and the other coinbasetxn. If anyone could explain how coinbaseaux can be used to build the coinbase transaction, or if it's for something else, that'd be greatly appreciated!

{
    "result":{
        "version":2,
        "previousblockhash":"00000000000000075f2f454573766ffae69fe41d6c7ccfcabbf8588fcd80ed52",
        "transactions":[
                  {
                        "data":"0100000001cba672d0bfdbcc441d171ef0723a191bf050932c6f8adc8a05b0cac2d1eb022f010000006c493046022100a23472410d8fd7eabf5c739bdbee5b6151ff31e10d5cb2b52abeebd5e9c06977022100c2cdde5c632eaaa1029dff2640158aaf9aab73fa021ed4a48b52b33ba416351801210212ee0e9c79a72d88db7af3fed18ae2b7ca48eaed995d9293ae0f94967a70cdf6ffffffff02905f0100000000001976a91482db4e03886ee1225fefaac3ee4f6738eb50df9188ac00f8a093000000001976a914c94f5142dd7e35f5645735788d0fe1343baf146288ac00000000",
                        "hash":"7c90a5087ac4d5b9361d47655812c89b4ad0dee6ecd5e08814d00ce7385aa317",
                        "depends":[],
                        "fee":10000,
                        "sigops":2
                  },
                  ...
            ],
        "coinbaseaux":{
            "flags":"062f503253482f"
        },
        "coinbasevalue":2501100000,
        "target":"0000000000000026222200000000000000000000000000000000000000000000",
        "mintime":1379549850,
        "mutable":[
            "time",
            "transactions",
            "prevblock"
        ],
        "noncerange":"00000000ffffffff",
        "sigoplimit":20000,
        "sizelimit":1000000,
        "curtime":1379553872,
        "bits":"19262222",
        "height":258736
    },
    "error":null,
    "id":"curltest"
}

VS.

{
 "error": null,
 "result": {
   "coinbasetxn": {
     "data": "0100000001000000000000000000000000000000000000000000000000000000
0000000000ffffffff1302955d0f00456c6967697573005047dc66085fffffffff02fff1052a01
0000001976a9144ebeb1cd26d6227635828d60d3e0ed7d0da248fb88ac01000000000000001976
a9147c866aee1fa2f3b3d5effad576df3dbf1f07475588ac00000000"
   },
   "previousblockhash": "000000004d424dec1c660a68456b8271d09628a80cc62583e5904f5894a2483c",
   "transactions": [],
   "expires": 120,
   "target": "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
   "longpollid": "some gibberish",
   "height": 23957,
   "version": 2,
   "curtime": 1346886758,
   "mutable": ["coinbase/append"],
   "bits": "ffff001d"
 },
 "id": 0
}

When the mutation "coinbase" (see BIP 23) is present, the key "coinbaseaux" sets rules for what MUST be in a coinbase if/when one is built/modified.

The key "coinbasetxn" is optional, and if omitted the mutation "coinbase" is assumed and the implication is that "coinbaseaux" MAY define requirements for building the coinbase.

The key "coinbaseaux" is also optional, however its omission has no implications according to BIP 23.


How does the Bitcoin network deal with bad actors? Can someone explain at a high level how the network deals with bad actors (either intentionally (ie- attacker) or unintentional (ie- misconfigured node or a node running outdated code, forked code, etc)) ?

Without knowing too much about Bitcoin's low level internals, I am assuming there are routine checks as data flows through the code on the network to test that the protocol is adhered to; and that anything outside of expected protocol becomes rejected or flagged.  I assume these checks are all essentially checked exclusively against the expected 'data model'  since obviously it's impossible to directly analyze what code is being run on independent miners/nodes.

So please correct me if I'm wrong here, or elaborate further to fill in the big picture a bit more.

Secondly, I wanted to know - in the case of a known hostile miner/node (or to a lesser extent, a known outdated or misconfigured network participant)- what recourse is available for other users or miners to 'report' or blacklist or avoid the affected nodes or transactions?

Ie- is there built in function for reporting a violation of protocol (either that can be executed on attacker's system or by means of other participants in the network identifying said attacker) ?

Your clarification appreciated, thanks !

Assuming there is a miner that will put invalid transactions into a block:

First, this miner has to find a very high-difficulty hash to make the block valid.
That alone is extremely improbable, as it is trying to find a hash faster than hundreds of thousands of honest miners.  The honest miners will probably find a correct hash to a valid, honest block, much much faster than the dishonest miner can complete his corrupt block.

Secondly, if the miner can find a hash, and successfully publish this corrupted/invalid block, any node that receives this invalid block will examine the data and recognize it as invalid.  When they see an invalid block, they will refuse to add it to their block chain, refuse to share it with other nodes, and probably blacklist the node that sent it to them.

The corrupt miner will have spent a lot of time and effort finding a hash, only to find itself quickly blacklisted and ignored.


Transaction 30MB+ from the tip for days, new message when I logged in today. Please explain I had a pending transaction pending for days. I was in no rush and was not going to increase the fees.  I received a new message when I logged into the wallet today. It stated the transaction was on the local network and needed to be broadcast.  I had already broadcast it and signed it days ago. Please explain. Thank you.

Your wallet will broadcast your transaction to other nodes on the network, and those nodes will (most likely) add your transaction to their mempools as it awaits confirmation. If the transaction does not confirm after an extended period of time, nodes may drop the transaction from their mempools - when and what transactions are dropped is a policy that is configurable by each individual node, so ultimately there is no saying exactly when a transaction that is unconfirmed will be dropped from the network (if at all).
I believe the default setting for bitcoin-core nodes is to drop a transaction after two weeks, or once the mempool hits 300 Mb (starting with the lowest fee-rate transactions).
So if you transaction is quite old, or has a fee-rate that leaves it far below the top fee-rate transactions in the mempool, then it may be dropped by a large number of nodes in the network. At that point, your wallet software may prompt you to re-broadcast it, so that it can be confirmed.
Ideally, you would be using a wallet with RBF enabled, so that you can simply increase the fee as necessary to help gain transaction confirmation according to your needs.


and(older(10),pk(A)) malleable if top-level, can it be top-level? EDIT: not malleable, was mistaken $ ./miniscript

and(older(10),pk(A))
X    110.0000000000    37 and_v(v:pk(A),older(10)) and(older(10),pk(A))

and_v(v:pk(A),older(10))
      1 scriptlen=37 maxops=2 type=B safe=yes nonmal=yes dissat=no input=1n output=nonzero miniscript=and_v(v:pk(A),older(10))
<A> OP_CHECKSIGVERIFY 10 OP_CHECKSEQUENCEVERIFY

(the last line shows the compiled script because I added printf("%s", Disassemble(ret->ToScript(COMPILER_CTX)).c_str()); to the command line-based tool output)
AFAICT nothing says that this cannot be top-level (but I may be missing something). It also says nonmal=yes, that this is not malleable.
The witness that is needed for this script to be successfully executed in the spending check is [<A_signature>, <any-nonzero>], and of course the CHECKSEQUENCEVERIFY condition must pass. The CHECKSIGVERIFY will consume <A_signature>, and then <any-nonzero> will be checked as the sole item on the stack, that indicates success (after CastToBool())
But <any-nonzero> can be just that, anything, and thus malleable.
What am I missing ?

OP_CHECKSEQUENCEVERIFY is a redefined OP_NOP code, so it cannot manipulate the stack - only abort or continue. In your script, that means it leaves the 10 on the stack, and no <any-nonzero> is necessary in the witness (and adding one would be a violation of the CLEANSTACK standardness rule).


Using Python: create a private key of my choosing, then generate public key and address I'm looking for a simple, easy to use Bitcoin library for Python.

What I want to do is verify I can enter a hex private key that I want, and get the expected pubkey in compressed format, and the 1Btc... address.

I've looked at cryptotools on github which looked promising, and easy to use, but it would not accept a hex value that wasn't a multiple of 2.  I know that sounds odd, but I want to be able to enter a hex value like c12 and have it work as expected (unless I have to enter 0c12 and that will work, with the leading zero discarded).  I expect than when I enter 0cfa721d that this will be interpreted as big endian.

bitcoinlib looks promising, but I find it confusing and I've tried for a couple of hours but unsure of how to get what I want.

Input private key in hex
Get back pub key in hash160 format, compressed
Get the 1Btc... address as well.

I wonder if this is a strict mathematical relationship.  For instance could there be an arbitrary or infinite number of pub keys from the private key?  Is there a way to ensure I get the pubkey I want from the private key?  I want to test known private keys with the pubkey and BTC address generated that corresponds to known private keys and addresses, so I can try and figure out how whoever generated these addresses from choices of private keys I can try to replicate and do the same thing myself.

Thank you for any help or suggestions.

For this very reduced case, you can take a look at https://github.com/circulosmeos/bitcoin-in-tiny-pieces

It has each operation coded for ease of understanding, isolated in a different file, but they're easy to join or to use directly from command line: for example:

$ echo 0x01 | ./bitcoin-public-from-private.py | ./bitcoin-address-from-public-key.py

And for the question:

  For instance could there be an arbitrary or infinite number of pub keys from the private key?

In principle, from a private key only one public key is derived: but this can be coded in three different Bitcoin addresses. Normally only one or two of these formats are used.

This is in the most simple case, not considering more complex cases introduced later in Bitcoin (like HD keys, etc)...


How do I prove cold wallet reserves? For audit purposes I am trying to prove cold wallets reserves, is it possible to send a message with a USDT transaction or publicly 'label' a wallet?

You wouldn't need to do something specific for USDT.

Your best bet would be to sign a message proving ownership of each address you hold USDT in. Once you prove you control the addresses, you can prove that you control the USDT balance at any given block height for those addresses using the signed messages and a node that can calculate the balances.


Two variants of signing transaction When signing transaction I think the following is done (in short):

For each input

all inputs and outputs are taken
the respective input scriptSig is filled with txPrev.pubScript, other inputs's scriptSigs are left blank?
this is signed and signature is put in scriptSig

Is there any benefit for bundling all inputs prior to making each signature? Could just respective input be used when signing for that input?

Answer provided by @Andrew Chow:

  The benefit is that each signature commits to the inputs and outputs
  of the transaction so that they cannot be changed. If each input only
  commit to one input, then more inputs could be added and malleate the
  transaction. However, there is a sighash type that allows this: sighash
  ANYONECANPAY.


Bitcoin mining sharing How to share new block and get reward without pools?
For example i find next block what do with it?
Where i can send solutions to get reward?
I can find new block in solo mining but don't know where it share.

You share the block by broadcasting it on the Bitcoin peer-to-peer network.  This will ensure that other miners know about it and can mine their next blocks on top of it.

When you created the block, you included a coinbase transaction which pays the reward to an address belonging to you.  This can be spent after an additional 100 blocks have been mined.

Normally your mining software takes care of all this for you.


Verify Offline Bitcoin Bundle on Ubuntu I'm having difficulty GPG-verifying my offline Armory installer for Ubuntu, using the suggested steps:

$ cd Downloads # the directory containing the *.deb
$ gpg --recv-keys --keyserver keyserver.ubuntu.com 98832223
$ sudo apt-get install dpkg-sig
$ dpkg-sig --verify *.deb

The first three steps are working, since I can verify the standard Ubuntu installer:

ubuntu@ubuntu:~/Downloads$ dpkg-sig --verify *.deb
Processing armory_0.92.3_ubuntu-32bit.deb...
GOODSIG _gpgbuilder 821F122936BDD565366AC36A4AB16AEA98832223 1412393663

But for the offline bundle I just get this:

ubuntu@ubuntu:~/Downloads$ dpkg-sig --verify *.deb
E: Cannot find *.deb: no such file
ubuntu@ubuntu:~/Downloads$ ls
Alan-C.-Reiner-Offline-Signing-Key-alan@bitcoinarmory.com-0x98832223-pub.asc
armory_0.92.3_offline_ubuntu_12.04-32.tar.gz

So I extracted the .tar.gz and cd OfflineBundle, which gives me these files:

ubuntu@ubuntu:~/Downloads/OfflineBundle$ ls
Alan-C.-Reiner-Offline-Signing-Key-alan@bitcoinarmory.com-0x98832223-pub.asc
armory_0.92.3_ubuntu-32bit.deb
dpkg-sig_0.13.1_all.deb
Install_DoubleClick_RunInTerminal.sh
libqt4-designer_4.8.1-0ubuntu4.8_i386.deb
libqt4-help_4.8.1-0ubuntu4.8_i386.deb
libqt4-scripttools_4.8.1-0ubuntu4.8_i386.deb
libqt4-test_4.8.1-0ubuntu4.8_i386.deb
libqtassistantclient4_4.6.3-3ubuntu2_i386.deb
libqtwebkit4_2.2.1-1ubuntu4_i386.deb
python-psutil_0.4.1-1ubuntu1_i386.deb
python-pyasn1_0.0.11a-1ubuntu1_all.deb
python-qt4_4.9.1-2ubuntu1_i386.deb
python-sip_4.13.2-1_i386.deb
python-twisted_11.1.0-1ubuntu2_all.deb
python-twisted-conch_11.1.0-1_all.deb
python-twisted-lore_11.1.0-1_all.deb
python-twisted-mail_11.1.0-1_all.deb
python-twisted-news_11.1.0-1_all.deb
python-twisted-runner_11.1.0-1_i386.deb
python-twisted-words_11.1.0-1_all.deb

I'm pretty sure it's armory_0.92.3_ubuntu-32bit.deb that is the file that should have the GOODSIG after it, but when I run dpkg-sig --verify *.deb, I just get this:

Processing armory_0.92.3_ubuntu-32bit.deb...
Processing dpkg-sig_0.13.1_all.deb...
Processing libqt4-designer_4.8.1-0ubuntu4.8_i386.deb...
Processing libqt4-help_4.8.1-0ubuntu4.8_i386.deb...
Processing libqt4-scripttools_4.8.1-0ubuntu4.8_i386.deb...
Processing libqt4-test_4.8.1-0ubuntu4.8_i386.deb...
Processing libqtassistantclient4_4.6.3-3ubuntu2_i386.deb...
Processing libqtwebkit4_2.2.1-1ubuntu4_i386.deb...
Processing python-psutil_0.4.1-1ubuntu1_i386.deb...
Processing python-pyasn1_0.0.11a-1ubuntu1_all.deb...
Processing python-qt4_4.9.1-2ubuntu1_i386.deb...
Processing python-sip_4.13.2-1_i386.deb...
Processing python-twisted_11.1.0-1ubuntu2_all.deb...
Processing python-twisted-conch_11.1.0-1_all.deb...
Processing python-twisted-lore_11.1.0-1_all.deb...
Processing python-twisted-mail_11.1.0-1_all.deb...
Processing python-twisted-news_11.1.0-1_all.deb...
Processing python-twisted-runner_11.1.0-1_i386.deb...
Processing python-twisted-words_11.1.0-1_all.deb...

Am I missing something?  What should I do?  I'm almost tempted to just replace the armory_0.92.3_ubuntu-32bit.deb file that came in the offline bundle with the one that came with the standard armory installer, but I'm worried that the rest of the files in OfflineBundle may have been tampered with as well.

The offline bundle actually doesn't have a signature inside the deb file. You can see this by extracting the bundle as you did:

$ tar xvzf armory_0.92.3_offline_ubuntu_12.04-32.tar.gz

Now you can check the contents of the .deb file

$ cd OfflineBundle
$ ar vx armory_0.92.3_ubuntu-32bit.deb
x - debian-binary
x - control.tar.gz
x - data.tar.gz

If you download the armory_0.92.3_ubuntu-32.deb file directly, you can see that it's a little different

$ wget https://s3.amazonaws.com/bitcoinarmory-releases/armory_0.92.3_ubuntu-32bit.deb
$ ar vx armory_0.92.3_ubuntu-32bit.deb
x - debian-binary
x - control.tar.gz
x - data.tar.gz
x - _gpgbuilder
$ dpkg-sig --verify armory_0.92.3_ubuntu-32bit.deb
Processing armory_0.92.3_ubuntu-32bit.deb...
GOODSIG _gpgbuilder 821F122936BDD565366AC36A4AB16AEA98832223 1412393663

dpkg-sig needs the _gpgbuilder file to check the signature against the contents of the package. The Offline package doesn't have this file while the direct download does.

I would suggest you grab the direct download and place that file in the OfflineBundle directory after verifying the signature if you're concerned about some sort of man-in-the-middle attack.


How can I use Bread on iOS to manage bitcoin and litecoin? I have a Bread wallet for iOS (https://bitcoin.org/en/wallets/mobile/ios/breadwallet/).

Is it possible to manage both bitcoin and litecoin with the same Bread app?

If so, how can I use the Bread app to:

create separate wallets for bitcoin and litecoin?
distinguish the wallets when I want to use one or the other currency?

As far as I can tell, Bread doesn't support Litecoin in any way.  It only supports Bitcoin.  So you can use it to manage your Bitcoin if you wish, but you'll need to find a different app for Litecoin.


What is the total value of XRPs or the market cap of Ripple? On bitstamp today, $1 = 225XRP. That makes 100 billion XRPs worth $450 million.

Ripple's a payment system that can't be used to buy anything yet and it's transaction credits are worth half a billion.

Am I missing something here? Why is the price so high?

Edit: The price doubled since I asked this question. Now total ripples are worth almost a billion.

Edit2: Ripple people: you can down vote this questions all you want. It's a perfectly valid question.

Keep a few things in mind. Not all 80 billion XRP that OpenCoin is supposed to give away is already in people's hands. Also, the founders that kept 20 billion will probably not be likely to sell a big part of it. For this reason, the total amount of XRP in circulation is many times lower than 100 billion.

Beside that, it is true that the total market cap can be valued at 100 billion * 0.0044.. USD/XRP = ± 450 billion USD. But that number does not make too much sense because the price will drop very fast when people sell big numbers of XRP. The reason that the price has this (relatively high) value is because most people are not likely to sell their XRP and everyone wants to buy a little bit of them to experiment or to keep as an early investment.

The main reason why people buy XRP now is because they believe that Ripple has potential to become big some day. And possibly for development and testing purposes.


How can I recover a missing BTC from a correct transaction and who is the responsible for it? today I withdraw 1 BTC from my account at Gatecoin exchange to be sent to CEX exchange. I got the BTC address from CEX and created the withdraw address for my withdrawal. I proceed with it and it took 30 min approx to be confirmed by Gatecoin and then waited 1,2,3 hours and nothing was arriving in CEX. I got worried and checked the Gatecoin link for blockchain transaction and for my surprise NO Transaction was registered there!!

OMG! went back again and again to both exchanges to see whether the BTC was back, but not at all. My BTC is gone and disappeared. No trace in both accounts Gatecoin and CEX. For the worse, not even the Blockchain has a record of it? Seems vanished. Gatecoin confirmed the withdrawal after 30 min. and once open the transaction link, nothing was found in the Blockchain!

How can this happen? Is Gatecoin responsible or CEX?
Anyone having similar experiences and would like how to resolve them?

The terrible scenario is that both Support Departments don't answer any query as they are overloaded with the great demand from new clients.

I have already reported to both exchanges but now how long and how this is going to be solved?

I will appreciate some feedback from you guys. Thanks in advance.

Without your tx id it is hard to tell what exactly happened but usually you don't need to be worried. Your described scenario sounds like a "miner fee too low" issue, the transaction gets broadcasted successfully, thus Gatecoin or any other exchange believe the funds are out of their system, but then got pushed out from the mempool because other transactions have a higher fee. Such issue usually fixes itself once the fees on the network/mempool go lower. The transaction will be automatically re-broadcasted by the bitcoin node of the exchange and then gets included in a block and you get your coins on the receiving address.