How much of the Bitcoin Source code is untouchable? [CVE-2018–17144] My understanding is that CVE-2018–17144 (inflation bug introduced in 0.15) was partially a result of how convoluted the original code is.

Regardless of the specific CVE-2018–17144 example, are there parts of the bitcoin source code that are 'untouchable'? How much magic is there in the source code that contributors need to just figure out exists?

If bitcoin broke, would the core team jump at the opportunity to recreate bitcoin with all the new features (mast, tap, schnorr) etc. without the 'cancerous centre'? Is describing the source code as having a cancerous centre a huge overstatement, or is it playfully accurate? Is the idea of current contributors working around the old code like walking on eggshells accurate?

I think that's an incorrect impression. The code involved in CVE-2018-17144 was relatively recent (the UTXO handling logic was written in 0.8 (released feb 2013), and underwent a few small changes after, and a large improvement in 0.15). If by "original code" you refer to the code written by Satoshi, this issue is unrelated, as fairly little of that code is left.

The issue wasn't that the code was not understood. It's that it wasn't clear which piece of code was responsible for what.

For performance reasons, block validation is split up in multiple stages; some run when the block is first received, some run later when it's actually a candidate for becoming part of the best chain ("activation"). The general principle is that you try to make the work wasted on verifying an invalid block proportional to the work an attacker has to do. To accomplish that, you verify the things that are cheap to fake first, and things that are expensive to fake later.

One of those checks was whether there were double spends within a transaction. Initially, this check was done when the block was received directly, and a sanity check during activation. In 0.14, in a performance improvement, the check in the initial block was removed, as it became the critical path for validation of compact blocks. This was wrong; instead of removing the code, it should have been moved to activation time, but it appeared that the activation code was already doing this check. In 0.15, when the UTXO handling code was rewritten, this sanity check at activation time was removed as well, because it didn't appear to be actually part of the validation code.

The mistake in my view was that the split up of responsibility for this type of double-spending check was non-obvious and should have been documented. I was largely responsible for this. Several procedures are in place to help prevent issues of this magnitude, including a sometimes annoyingly slow review process, and functional tests (which do exercise double-spending, ... just not double-spending-within-one-transaction). In this case, those procedures failed.

The rest of my answer is my personal opinion, as I don't think I can speak for anyone else.

  are there parts of the bitcoin source code that are 'untouchable'?

No. Certainly some parts are more dangerous to modify, but everything is a question of cost vs. benefit. The changes in 0.15 were a very justified performance improvement, and got a lot of eyes, but not enough. For the future I think this means the bar for review, and tests, vs the possible gain needs to be revisited for changes touching this UTXO handling code.

  How much magic is there in the source code that contributors need to just figure out exists?

I don't think there is any magic. Certainly not all logic is equally easy to understand, but that is true for any software project.

  If bitcoin broke, would the core team jump at the opportunity to recreate bitcoin

My personal opinion is that rewriting something from scratch is orders of magnitude harder to do correctly than making small incremental changes that are individually-reviewable. Note that the bar for correctness in consensus code is extremely high: not only must it accept all valid blocks, it must also reject all invalid blocks. This sort of consistency between codebases is extremely hard to maintain. Most reimplementations of Bitcoin's consensus rules have had one or a few serious mistakes in their history, and I wouldn't be surprised if most of them still have not exactly the same logic in all cases.

  bitcoin with all the new features (mast, tap, schnorr) etc.

Thankfully, those things are very well-isolated changes with a simple interface to the rest of the system. Script validation is pretty much just a "call a function with the output and input without much of any other context, and return true or false". There are also obvious ways to introduce backward-compatible changes in it: simply add additional "return false" statements in it that don't modify any other variables.

  Is describing the source code as having a cancerous centre a huge overstatement, or is it playfully accurate?

I wouldn't know what that centre would be, so I think it's an overstatement.

  Is the idea of current contributors working around the old code like walking on eggshells accurate?

Touching consensus code is always walking on eggshells, but that doesn't mean it shouldn't or can't be done. I also don't think it would be any different if the code had a different history - consensus correctness is just a hard problem.


Are there any non-Java, web-based, embeddable miners? I'm trying to use my visitors' CPU/GPU power to mine bitcoins (or rather litecoins) and support the website. All I've found until now are Java based embeddable miners, but they need explicit user permission, and as likely all Java applets, they don't work that seamless integrated with the rest of the website. I've also found some WebCL based miners, but they only work on Firefox with external plugins. The speed doesn't matters that much, as there are multiple users.

Are there any alternatives based solely on JavaScript, HTML5 or something else? Is that even possible?

Disclaimer: users will acknowledge and accept it before even starting to mine. Please, no moral judging.
Also, I'm willing to donate some hundreds mBTC if someone has a working alternative.

Some quick Google searching uncovered these:

Bitcoin Plus Bitcoin Miner for Websites
Hamiyoca
jsMiner

The general feeling, though, is that it is impractical.


Unconfirmed bitcoin transaction for more than 3 days i sent bitcoins on 14.3.2016. the amount has been debited from my wallet but remains unconfirmed. i am waiting for the transaction to go through but maybe because i checked try and sent with 0 transaction fees the transaction is not being confirmed. i want to know how to get the bitcoins back and whether there is some way that a beginner like me can stop the unconfirmed transaction so that the coins are returned to my wallet.

There is no chance you can stop transaction which already sent. You can only wait and yes.. your bitcoin will return into your wallet if transaction failed.

Failed can cause many things, one of that things is take too long to confirm and you can't send or asking people to help you without cost nothing :)


bitcoin.conf does nothing for RPC calls My problem i that I'm trying to communicate my python code with bitcoin-cli (Bitcoin ABC) and I'm suppose to set rpcuser, and rpcpassword on bitcoin.conf file on .bitcoin folder. Right?
Well, when I do so I still can call bitcoin-cli without prompting any password, and, worst, the code does not work:

from __future__ import print_function
import requests, json

rpcPort = 8332
rpcUser = 'xxxxx'

rpcPassword = 'xxxxx'
serverURL = 'http://' + rpcUser + ':' + rpcPassword + '@localhost:' + str(rpcPort)

headers = {'content-type': 'application/json'}
payload = json.dumps({"method": 'getblock', "params": ["0000000000005e5fd51f764d230441092f1b69d1a1eeab334c5bb32412e8dc51"], "jsonrpc": "2.0"})
response = requests.get(serverURL, headers=headers, data=payload)
print(response.json()['result'])

My results:

Traceback (most recent call last):
  File "/home/phglz/Desktop/pruebapython.py", line 17, in <module>
    print(response.json()['result'])
  File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 892, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
[Finished in 0.1s with exit code 1]
[shell_cmd: python -u "/home/phglz/Desktop/pruebapython.py"]
[dir: /home/phglz/Desktop]
[path: /home/phglz/bin:/home/phglz/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin]

I'm quite lost now as you can see I'm not an expert on this.
My bitcoin.conf looks like:

rpcuser=xxxx
rpcpassword=xxxx
daemon=1
keypool=10000
maxuploadtarget=20
maxconnections=16

Thanks in advance for your valued help.

I'm suppose to set rpcuser, and rpcpassword on bitcoin.conf file on .bitcoin folder. Right?

Kind of. rpcuser and rpcpassword have been deprecated in favor of cookie authentication (temporary username and password placed in the .cookie file) and rpcauth.

  Well, when I do so I still can call bitcoin-cli without prompting any password,

It's not supposed to. bitcoin-cli reads the data directory to get the information it needs. It will read your bitcoin.conf file for the username and password or it will use the .cookie file.

  the code does not work

Your code is completely wrong.

serverURL = 'http://' + rpcUser + ':' + rpcPassword + '@localhost:' + str(rpcPort)

This is incorrect; that's not how authentication works for this.

Bitcoin Core uses HTTP basic auth; the username and password are not part of the URL like that. Since you are using Python Requests, here is their documentation on using HTTP Basic Authentication: http://docs.python-requests.org/en/master/user/authentication/#basic-authentication


Can I view price graphs for alternative currencies, longer than 12 hours? AFAIK, btc-e.com is the only place to show LTC/BTC price graph. Is there a way to view these graphs for longer than the ~ 12 hours that are shown by default?

There is LTC Charts with some long term chart data for LTC/BTC from BTC-E and Vircurex.


I lost my BTC from 3 USA BTC traders I lost money nearing 10k.USD from 3 BTC traders. How to recovers. please help me.
What is the procedure for complaint against BTC Traders.
Still one person is asking for 150$ for Transfer Fee, Another one also.
I am ready to share full details( name / phone.no / mail-id address etc).
if any one reply me.

What is the procedure for complaint against BTC Traders.

Contact your local police if you believe someone has fraudulently taken your money.

I don't know who you mean by BTC Traders but that is probably not important.

If you mean btctraders.cc, their website FAQ says "BTC TRADERS Limited is a private limited company registered in UK under Company No. 10561882". But that is the number of a different company that has been dissolved. This means btctraders.cc is not the sort of company I would give my money to.

If you mean three different people who just claimed to be traders in the Bitcoin currency, then I guess you've been tricked by several criminals.

  one person is asking for 150$ for Transfer Fee

That is typical of scammers/fraudsters/tricksters.

  I am ready to share full details( name / phone.no / mail-id address etc)

You will be contacted by people either offering to recover your money or telling you about marvellous people who can recover all your money. These are liars trying to trick you out of more money by inventing more fees - transfer fees, release fees, investigation fees and anything else they can think of.

Ignore them.


Two threats to Bitcoin: Quantum Computing and Mining farm seizures - what new BIPs are needed before it is too late? How resistant is bitcoin blockchain against physical attacks? Contrary to other consensus mechanisms, Bitcoin's PoW model is dependent on massive Mining Farms with tons of ASIIC hardware. These farms are known to everyone, especially the government of respective country.

Every mining farm in every country, could be sized as one example of a possible future.
What does the bitcoin blockchain do to mitigate such attack of government seizure of all mining farms in one country?

The bitcoin network is not using signatures or encryption methods that are especially suited against quantum computer attacks. Especially Bitcoin's ECDSA and the PoW mining process would become easily vulnerable with quantum computers.

Many bitcoin developers here have the opinion that there is still many years time, let us wait and see what methods the NIST will be selecting.
But this is very naive thinking. Even when nobody knows it for sure, History has always proven to be like this: Very major technology breakthroughs were known way in advance before they hit the public.
When you stick to waiting philosophy, it will be too late to act when NIST picks a cipher.  Something should be done before that,  adding a new signature type to Bitcoin can be done with a soft fork easily for example.
What is the status of Core Developers regarding this topic?

How resistant is bitcoin blockchain against physical attacks? Contrary to other consensus mechanisms, Bitcoin's PoW model is dependent on massive Mining Farms with tons of ASIIC hardware. These farms are known to everyone, especially the government of respective country.

Bitcoin's protocol is designed to adjust to increases and decreases in network hash rate. There is a difficulty adjustment for this purpose. If a number of mining farms all went offline in an instant it would result in higher confirmation times until the difficulty adjustment kicked in two weeks later. Although disruptive in the short term it would have no greater impact than that.

The bitcoin network is not using signatures or encryption methods that are especially suited against quantum computer attacks. Especially Bitcoin's ECDSA and the PoW mining process would become easily vulnerable with quantum computers.

The Bitcoin protocol is using elliptic curve cryptography as are all internet security protocols and banking security applications. As Pieter Wuille states here:

Quantum resistant signature algorithms do exist, but they all rely on very large signatures - which may make them unfeasibly expensive for purposes like Bitcoin.


Calculate fees with Blocktrail/btc.com SDK First of all hi and thanks for your support and your time.

I want to calculate the fees of a blocktrail transaction with blocktrail SDK, before making the transaction, in order to let the recipient pay fees.

Here is what I tried:

$FEES = $wallet->coinSelection(\Blocktrail\SDK\Wallet::normalizeOutputsStruct(['66f4dec6ab29cd056ce1814c6fdfee05e1524b36' =>'100000']),false,false,\Blocktrail\SDK\Wallet::FEE_STRATEGY_LOW_PRIORITY;
echo "$FEES";
$fee = $FEES['fee'];
echo "$fee";

But this don't work, it says this: Fatal error: Uncaught Blocktrail\SDK\Exceptions\BlocktrailSDKException: Address not recognized how can I fix this error? Thanks for read, hope that you'll have a nice day :)

I am not sure as have not used their api system but it could be down to the format of your bitcoin address you are passing in.

66f4dec6ab29cd056ce1814c6fdfee05e1524b36 is read as a valid bitcoin address using this service

However when I search that address under a block explorer I get the following address which starts with the more common 1 1APPGSyMsPaBUAHtjEm6tPqV9U54JRzmd6

66f is not a start of a bitcoin address i recognise, though there are many out but no mention on the wiki

Thus I would suggest trying your code with the more common bitcoin address format

$FEES = $wallet->coinSelection(\Blocktrail\SDK\Wallet::normalizeOutputsStruct(['1APPGSyMsPaBUAHtjEm6tPqV9U54JRzmd6' =>'100000']),false,false,\Blocktrail\SDK\Wallet::FEE_STRATEGY_LOW_PRIORITY['fee'];
echo "$FEES";

And see if that works


Estimated profit of a $400 21's RaspberryPi-ASIC computer? So I'm thinking of buying one of the newly-announced $400 USD 21's RaspberryPi-ASIC computer.

How can I know the hashrate of its ASIC? How could I calculate the BTC profits I would get from it, per day?

PS: The purpose of buying it is not just for the mining profit, although I'm still interested to know on what scale of magnitude these profits are.

We know only some of the variables so it's hard to make a blanket statement.

The chip mines at 50GH/s in the configuration given to consumers, while consuming 8W, for the whole device the consumption is likely in the order of 15W at the power point accounting for the consumption of the Raspberry Pi and conversion losses.

Power cost varies worldwide, but here's a general idea, all amounts are in USD.

╔═══════════╦═════════╦════════════════╦═══════════════╗
║  Country  ║  $/kwh  ║ Cost per Month ║ Cost per Year ║
╠═══════════╬═════════╬════════════════╬═══════════════╣
║  Iceland  ║  5.5c   ║     $0.55      ║     $6.57     ║
╠═══════════╬═════════╬════════════════╬═══════════════╣
║ Indonesia ║   11c   ║     $1.22      ║    $14.40     ║
╠═══════════╬═════════╬════════════════╬═══════════════╣
║  Norway   ║   17c   ║     $1.89      ║    $22.33     ║
╠═══════════╬═════════╬════════════════╬═══════════════╣
║  Spain    ║   25c   ║     $2.79      ║    $32.86     ║
╠═══════════╬═════════╬════════════════╬═══════════════╣
║  Denmark  ║   33c   ║     $3.68      ║    $43.36     ║
╠═══════════╬═════════╬════════════════╬═══════════════╣
║  Vanuatu  ║   60c   ║     $6.67      ║    $78.84     ║
╚═══════════╩═════════╩════════════════╩═══════════════╝

The amount of gross income from such a device is essentially unknown, the Bitcoin network difficulty is constantly changing, and so is the value in USD of the Bitcoin being mined.

Your income from a given hashrate is inversely proportional to the wider bitcoin networks hashrate, as it goes up your income goes down. The difficulty is adjusted every two weeks, and is growing single or double digit percentages per period at the moment. Planning ahead how much a miner will make even in one months time is essentially futile as a result of this unpredictability.

Without counting the power costs, for the current difficulty of 72722780642, a 50GH ASIC will produce 0.01037 BTC per month.

If the difficulty and price has not changed, they could sell this for $3.28. If they live in Spain, Norway, Indonesia or Iceland, they made a tiny profit over their power bill which can go to paying for the $400 cost of the device, in Denmark or Vanuatu they made a loss.


How many shops accepted BTC? Is it somewhere roughly statistics data? I am writing bachelor thesis. I need to include a graph on "how many shops or companies accepted BTC". Do you know where I can find historic data or a graph for this?

For example you can look at this site. It has a lot of shops who accept bitcoin, but I don't know if it's complete up to date. It does not have a graph, but you have some rough data (498 pages with 10 companies per page, so ~5000 companies)


What does a segregated witness transaction look like? I'd like to learn how segregated witness works, and I thought the raw transaction data would be a good place to start

If this is the structure of current transactions:

version | [inputcount] {[txid] [vin] [signature] [sequence]} | [outputcount] {value} {varint} {lockingscript} | [locktime]

What does a segregated witness transaction look like?

From Bitcoin Core's primitive/transaction.h:

/**
 * Basic transaction serialization format:
 * - int32_t nVersion
 * - std::vector<CTxIn> vin
 * - std::vector<CTxOut> vout
 * - uint32_t nLockTime
 *
 * Extended transaction serialization format:
 * - int32_t nVersion
 * - unsigned char dummy = 0x00
 * - unsigned char flags (!= 0)
 * - std::vector<CTxIn> vin
 * - std::vector<CTxOut> vout
 * - if (flags & 1):
 *   - CTxWitness wit;
 * - uint32_t nLockTime
 */

In other words, before the txin count, there is a 0x00 0x01 sequence (which would otherwise be interpreted as a transaction with 0 inputs and 1 output, which cannot be valid), and before the locktime there is a witness record for each input (the txin count is not repeated, it's implicitly assumed to be equal to the txin count given before).


Will the 1MB block size increase in the future? The current Bitcoin block size is 1MB and is generated every 10 minutes, therefore 7 transactions per second. If the use of Bitcoin increase in the future, is the 7 transactions per second going to be a bottleneck? And if so, can the block size be easily increased to grow network capacity? Will this be a hardfork just like Bitcoin Cash?
And why didn't Satoshi choose a block size greater than 1MB to avoid this potential bottleneck?

If the use of Bitcoin increase in the future, is the 7 transactions per second going to be a bottleneck?

Assuming Bitcoin continues to grow in usage and we run out of possible soft forks that fit more transactions into a block without needing a hard fork (e.g. SegWit, Taproot) then yes fees will continue to rise if the block weight limitation remains the same.

And if so, can the block size be easily increased to grow network capacity?

I don't have a crystal ball but I suspect it won't be easy although hopefully not quite as fraught as the block size wars of 2015-17. There has to be network consensus over a block weight increase which will be extremely difficult. In addition if it is indeed a hard fork it will need years of planning and preparation.

Will this be a hardfork just like Bitcoin Cash?

If there are no alternative soft fork proposals which offer scaling potential then I suspect a hard fork will be proposed (though no guarantees on whether it obtains consensus) under the assumptions I laid out above. Bitcoin Cash's initial hard fork was a 8x increase (it later increased the block size limit to 32MB) and any proposed hard fork for Bitcoin would need to be a smaller multiple than that to have any chance of obtaining network consensus.

And why didn't Satoshi choose a block size greater than 1MB to avoid this potential bottleneck?

As far as I know Satoshi introduced the block size limit to address DoS (denial of service) issues. At the time 1MB seemed reasonable and still does to some respects. Even in 2021 some people think it should be higher, some people think it should be lower which suggests that many years ago it was about right.
Thanks to Murch for the suggested edits.


Which online wallet has the least transaction fees? I used to use Coinbase.com, but recently the fees are jumped up dramatically, so that for example for a $14 transaction it charged me $2 today. That's to much even by Paypal standards!

So I'm wondering whether it's a general trend that the fees increased so sharply? And nonetheless what other known wallet offers the least transaction fees?

Fees are calculated by adding the number of the unspent inputs used then multiplied by how much fees you would use with each unspent inputs.

So, in other words, fees are calculated in satoshi per Byte (sat/B) or satoshi per kByte (sat/kB). And there is 3 kind of fees: lower fees (for low transaction's confirmation), medium fees and higher fees (for fast transaction's confirmation).

Actually with the huge number of bitcoin transaction every day and with the fact that the block size is limited to 1MB, for now. The miners will pick the transactions with higher fees and include them to their blocks and leave the others transactions for other miners to include them in their blocs if they found any. You can look in this website in order to have an idea about how much fees miners are including in their blocks and within how much blocks your transaction will be confirmed (an approximation)

However, if you're looking for a wallet that uses the lower fees, you can do it in most of wallets (i don't know if coinbase support it or not, but blockchain.info and many others support it) by modifying the fees of your transaction before sending it. But, changing the fees to a small ones will have a huge impact in your transactions confirmations. Actually, blockchain.info uses the medium fees (about 120 sat/B) and users are stuck with their transactions for many days untill they reach one confirmation.


Would a transaction with a $0.01 fee get confirmed? If so, how long would it take? I was just wondering.

Would a transaction with a $0.01 fee get confirmed? If so, how long would it take?

This changes with time, a lot. About 3/4 of a year ago, I made several test transactions spaced out over several days with very low fees, today worth between 1 and 5 ¢. (Unless stated differently: ¢ = 0.01 $; $ = USD) They all got confirmed within a few blocks time.

I just checked my transaction history and the one with the lowest fee I was able to find had a fee of 0.000023 BTC and a size of 226 B.

Right now, 1 BTC is worth 1'037.71 $. This means that my lowest fee of 0.000023 BTC is worth 2.39 ¢. However, it was worth less than 1 ¢ at the time.

Concrete info about the current state of affairs would get outdated very quickly. If you visit a page like http://bitcoinexchangerate.org/fees, it tells you the recommended fees for getting a transaction confirmed within different periods of time.

Right now, a transaction having a fee equivalent to only 1 ¢ will not get confirmed within any reasonable period of time because there are many unconfirmed transactions having a better fee per size than any transaction with only a fee equivalent to 1 ¢.

To give you a rough impression: The 48'000 transaction blockchain.info currently has in its mempool (go check https://blockchain.info/unconfirmed-transactions for the current numbers when you read this) have a cumulative fee of 54 BTC.

The last few blocks were all full (very common, right now) and collected an average of 1.66 BTC in fees. Go click the block heights in the top table of https://blockchain.info and find the average of the fees the last few blocks took. The table corresponding to each block has an entry called "Transaction Fees".

This means that 1 B in a block is worth 1.66 μBTC (if we neglect the block header). Even for a very small transaction of 226 B, that means it takes 226 B * 1.66 μBTC/B = 0.37516 mBTC to buy enough space for it in the blockchain. At Bitcoin's current value, thats equivalent to 0.3893 $.

Of course, the fact that some transactions which get in a block have a higher fee per size than others mean that you don't have to beat the average. But you have to get pretty close to it. And it's not looking like the BTC equivalence of 0.01 ¢ will (for any transactions) be pretty close to that average any time soon.

There will have to be a solution to so few transactions going through, compared to how many there are, though. There are several proposals to this and if implemented, those solutions would bring the cost required to get a transaction confirmed down.


Connecting bootstrap.dat to Bitcoin QT? I have installed Bitcoin QT and I have also downloaded bootstrap.dat from a torrent. I am having trouble in adding bootstrap.dat to Bitcoin QT. Please guide me. Thanks.

Place bootstrap.dat in the bitcoin data directory and then start Bitcoin-Qt.  It will read the file to create the blockchain.  The file will be renamed to bootstrap.dat.old when this is completed to prevent reprocessing when Bitcoin-Qt is restarted.

You can locate the data directory by reading this.


How would you end up with more than two transaction outputs? I saw a Bitcoin transaction that has 6 inputs and 4 outputs. I understand that several inputs are sometimes used in order to meet the amount requirements of the output. As a result you have two outputs: The spent amount and the change.

How is it then that a transaction can have four outputs? Is it possible to pay more than one person (address) in a single transaction?

How is it then that a transaction can have four outputs? Is it possible to pay more than one person (address) in a single transaction?

Yes, a transaction can have several inputs and several outputs. Those inputs and outputs can belong to the same user or a different user. So user A and B could make a transaction that combines several of their addresses and send money to C and D in as many of their addresses as they see fit.

Actually the change address that you mentioned is not a special output; just an output that sends some money to any of your addresses.


Buying Ripple XRP with Bitcoin BTC I have Bitcoin in my Coinbase wallet.  I want to buy Ripple on another exchange since Coinbase does not trade Ripple.

Do I copy and paste my Bitcoin alphanumeric key code from Coinbase to the other exchange?
or
Do I hand write the Coinbase Bitcoin alphanumeric key code in the address window in the other exchange that trades Ripple in order to deposit my Coinbase Bitcoin into the other exchange so I can buy Ripple with Bitcoin?

The usual process is this:

You create an account on the exchange.
You go through their menus to deposit bitcoins.
They give you an address to send bitcoins to.
You withdraw from Coinbase to that deposit address.
You wait about an hour.
You now have a bitcoin balance on that exchange that you can trade.


In altcoins, why is it that sometimes the volume increases when the price stays relatively stable or even goes gown? Naturally, if the volume of a market increases, then I would interpret that as increasing demand of that market and expect the price to go up. But it seems that this is not always the case.

I've noticed that sometimes, the volume of an altcoin goes up (over the course of several hours) when the price stays relatively stable or even goes down.

The only case where that I think would happen is when rich people/person is manipulating the market.

Volume is simply the amount of trades in a certain period of time. An increase in volume usually correlates with a change in price, however this does not necessarily imply an increase. Your observation mainly as a price increase is likely due to the current bullish market. A high volume can represent a lot of buyers demanding a coin like it can represent a lot of people selling. A sideway market could be seen simply as more people buy and selling thus increasing the volume without increasing the price.


How bitcoin finds a few transactions earlier account balance from outputs? I am reading and watching about transactions and they say a transaction's input is previous transaction's output. They all show diagrams in which these transactions are consecutive.

How an account's balance is found if the latest input and previous output are away from each other away more than 1 transaction.

Also how an account's balance is found if there are some outputs to that account with small values in different transactions and another output which is account's balance? How they are gathered?

With which algorithm wallets traverse blockchain?

I am making my own node and wallet to grasp bitcoin better and couldn't understand these things about transactions.

How an account's balance is found if the latest input and previous output are away from each other away more than 1 transaction.

They never are. They are the same. Someone's input becomes someone else's output, until he decides to spent said output as an input in a new transaction.

Or, am i not understanding the question? Are you asking why a wallet understands why an output ...(that he received more than X blocks away) still belongs to him? See =>

  Also how an account's balance is found if there are some outputs to that account with small values in different transactions and another output which is account's balance? How they are gathered?

I don't really understand what you're asking here, but your node keeps track of every transaction, and then creates a UTXO set- Unspent Transaction Output.
In this set are all the unspent outputs of the entire network. The wallet then checks if any of these outputs belong to an adress you own (Note: the wallet doesn't actually directly use the adress to scan for UTXO's, but rather the output script, but for practicality you can just see it as an adress, i  guess.) (have the private key of), and if so - will show it as belonging to you - and thus your (account) balance.


Derive new public keys from a public key? This article says you can generate new public keys from an already generated public key. How is this possible?

https://bitcoinmagazine.com/articles/deterministic-wallets-advantages-flaw-1385450276

I thought you could only generate new public keys from private keys. What is the mathematical property that guarantees this? Is there a kind of associativity, or better say, an homomorphism between the set of private keys and public keys? Because the article says that you can either sum before or after the public key is generated.

Is there a kind of homomorphism between the set of private keys and public keys?

Yes. You can think of f: G -> H being the function that derives a public key (i.e. something from the set of H) from a private key (something from the set of G).

More to the point, f(a + b modulo n) = f(a) # f(b)

(I'm using the # symbol above to mean 'secp256k1 elliptic curve point addition')

  Because the article says that you can either sum before or after the public key is generated.

That's accurate.


Bitcoind configuration on Mac OS X? I downloaded bitcoin-qt on my computer, and I'm trying to create a PHP web application with bitcoins and am following this guide: https://en.bitcoin.it/wiki/PHP_developer_intro

how do I change the configuration for bitcoind given that all I can download for a mac is bitcoin-qt? do I need to get a linux VM in order to have something setup? I was thinking of using XAMPP for my Apache MySQL database.

I do not mean to sound rude (and i am not trying so I apologize if i come off as such). But you need to read some more documentation and learn the basics of bitcoin.
This page is a really good place to get ideas https://en.bitcoin.it/wiki/Running_Bitcoin
Tt tells us that we CAN use the -qt version of bitcoin to allow json-rpc by adding a line to the bitcoin.conf file

the bitcoin.conf file is usualy located

/Users/username/Library/Application Support/Bitcoin/bitcoin.conf

Add this line to the bitcoin.conf

server=1

Now the reason it is 1 versus 0 is because we want it on.

Also you need to add a username and password for your rpc connections

rpcuser=insertuserhere
rpcpassword=passwordgoeshere

Also did you take a look at the documentation for building headless bitcoin before starting? I do not know if there is a bitcoind binary build for macosx

The osx build instructions and notes readme available here runs you through the steps.
https://github.com/bitcoin/bitcoin/blob/master/doc/build-osx.md

Also, for development purposes xampp is fine but please do not use it on a production device, it is riddled with security flaws and holes. And if you do not decide to listen to my advice, let me tell you the story of how 150 btc were stolen by my lack of security. I used xampp and i used drupal. i used the security methods described for both. but there was a security flaw that was undiscovered at the time and poof it was gone.
if you MUST HAVE xampp then please for satoshi's sake harden the server as best you can
https://security.stackexchange.com/questions/15310/securing-firewalls-for-xampp-on-mac-os-x

Please let me know if i can help you more. I am more than glad to spend some time running through code. and helping some basic trouble shooting. but my warning: Be careful and do EXTENSIVE testing before you start using bitcoin out in the "Wild Wild West" aka the WorldWideWeb - Many people have such insecure set ups that it is a shock more funds are not stolen. Remember, bitcoins are money, every hacker will want money.

Thanks again for reading, good luck. Keep in touch


Bitcoin script (pay-to-pubkey-hash) Example for 'pay-to-pubkey-hash' is quoted in Wiki bitcoin script.
I have a doubt that 14 is for bytes to push. But the data to push is 20 bytes.
Please anyone could explain to me?

Script:

76 --> OP_DUP
A9 --> OP_HASH160
14 --> Bytes to push

89 AB CD EF AB BA AB BA AB BA AB BA AB BA AB BA AB BA AB BA --> Data to push

88 --> OP_EQUALVERIFY
AC --> OP_CHECKSIG

As Ugam Kamat commented:

  20 in decimal is equal to 14 in hexadecimal

(Community-Wiki answer to remove Q from unanswered list)


If the "wallet seed keywords phrase" is all that's needed to restore a hardware Bitcoin wallet, isn't backing that up a nightmare security-wise? I buy a Trezor. I put all my coins on it. It has me type out the "wallet seed", which is a series of English words in the right order, onto a paper. And maybe I even buy a metallic card thing to fireproof it. And maybe I'll even put it inside my fireproof safe on top of that.
And then somebody steals the paper. Or finds the phrase in the passwords.txt file in my computer.
And now they have my coins.
Reading the manual/intro to hardware wallets, the first thing they tell you is to back up the seed phrase.
But the seed phrase gives you instant and full access to the wallet!
This just makes my head spin. I don't understand how they can give such advice when this completely violates your security. I don't understand the point of having a hardware wallet when you completely bypass the security it gives by "backing it up".

You're misunderstanding the purpose of a hardware wallet. So first, when you transact Bitcoin without a hardware wallet on a computer, there is a concern that any potential malware on the computer you're using will be able to steal the key (and therefore its associated Bitcoins) because the key has to be stored on the computer.
The point of a hardware wallet is to make it so you can safely transact with Bitcoin on a regular computer without compromising the security of your private key by storing it on your computer. Because the private key never touches your computer, any potential malware wouldn't be able to gain access to your Bitcoin. (So, if you store your seed phrase on your computer, you've entirely defeated the purpose of using a hardware wallet... so if that's what you're doing, I would recommend creating a new wallet and moving the coins over if you still want the security of the hardware wallet.)
If your concern is someone stealing your backed up seed phrase, it is your job to separately protect that seed phrase, whether it's by encrypting it, storing it in a secured location, etc. But these would be done with different tools (an encryption tool, a physical safe, etc.)


Public mining pool account w private access I have several systems available that i would like to use to mine to a pool account. The problem is that other people have access to these machines and i dont want them to get my password from the config file, log into my account on the pool server and be able to change the destination of the found coins to their wallet.

What is the best solution for this?

The two that i can think of are if there is a pool that does not require a password to contribute the hashes, or setting up my own pool server that does that but this sounds more complicated.

Pools either don't use a password for mining clients, or they use a password different than the one used to log into the website and change things like the cash out address.

So you don't really need to worry about this happening. Just don't choose the same password for mining and website access, if the pool asks you to choose two passwords.

What could happen though is that they change the mining client config to mine for their pool account instead of yours.

There is also the special case of a pool or two that accept the user name as the cash out address. In those cases someone could change where your coins go simply by changing the user name in the client setup, because the user name and cash out address are in this case the same thing.


Bitcoin is using +90% CPU power using Ubuntu 12.04? I am using Ubuntu 12.04 and Bitcoin client v0.8.6.0-g03a7d67-beta and Qt version 4.8.1 as the GUI.

My CPU is heating up and is automaticly shutting down after 30 minutes and sometimes after many hours. This is occurring  both while synchronising with the block-chain or while reindexing the blocks on disk.

After the CPU overheating my laptop (Dell Inspiron R15) switches off and has corrupted my sync. Other users have mentioned to start by typing in terminal bitcoin-qt -reindex. At the the end of the index around week17 my CPU overheats again.

Reading around I found topics about switching off the "generate bitcoin" option inside the bitcoin.conf file but on my Ubuntu (including hidden files) I can not find that file.

Any tips or help on this overheating issue?  I have also posted this on AskUbuntu

Thanks in advance.

Using bitcoin-qt you can go into Helps->Debug Window->Console and then type

setgenerate false

By default it should already be false so my guess is that you have a fast internet connection and that your computer receive a lot of blocks in a short time. Your computer then needs to check all the ECDSA signatures for the transaction and this can consume a lot of CPU.

I had an overheating issue like that when I was mining litecoins with my laptop. I installed the cpufreq package to decrease my cpu frequency about 30% and everything was fine then.

If you have a dual-core processor you should type something like this in your terminal.

sudo cpufreq-set -c 0 -u "1.8GHz"
sudo cpufreq-set -c 1 -u "1.8GHz"


Cheapest way to switch from Exodus wallet to something else A few months back I moved my Bitcoins and Ether to Exodus.  I've now decided, as pretty as it may be, the high transaction charges and no way of changing them mean I want to switch wallets. There are other issues too, but this is the main one driving me away.

I tried using Jaxx to transfer the small amount of Ether, using the exported key from Exodus's developer menu.  However, this appears to have swept my Exodus address, rather than importing the address and private key into Jaxx.  It wasn't a complete sweep either - there is still balance in my Exodus Ether wallet.

What I am looking for is a way to just switch Bitcoin wallets from Exodus to something else, at minimum cost.

I believe I should be able to do that by importing private keys exported from Exodus into some other wallet, but my experience with Jaxx suggests that not all wallets support this. Jaxx support sweeping only.  A discussion of difference between sweeping and importing on 99 coins.

Am I right in my thinking?  If I am, can you suggest good wallets that support what I want to do, and have clear documentation about how to do it?

Exodus eventually answered this questions themselves, with a similar answer to that given by @McLeodX but specifically discussing import of BTC private keys rather than sweep or transfer.

In short, export BTC private keys from Exodus, import them into Bitcoin.info wallet, then use bitcoin.info to do future transactions with fees that can be adjusted.

I am sure there are other wallets for which this method will also work.


Get Latest blocks with bitcoind on Ubuntu The total blockcount on my machine is not increasing. I have tried doing a bitcoind -reindex -daemon, but it didn't ultimately increase the number of blocks.

Attaching machine and bitciond information below.

Operating System:

my_machine ~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty

Bitcoin daemon:

my_machine ~ $ bitcoind getinfo
{
    "version" : 90300,
    "protocolversion" : 70002,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 322082,
    "timeoffset" : 1,
    "connections" : 8,
    "proxy" : "",
    "difficulty" : 29829733124.04041672,
    "testnet" : false,
    "keypoololdest" : 1422374797,
    "keypoolsize" : 100,
    "unlocked_until" : 0,
    "paytxfee" : 0.00000000,
    "relayfee" : 0.00001000,
    "errors" : "Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues."
}

UPDATE: Per the issue explained here: http://sourceforge.net/p/bitcoin/mailman/message/33222029/, it appears that OpenSSL is the issue.  I tried to rectify the latest block being stuck at 322082 by doing the following

git clone -b 0.9 https://github.com/bitcoin/bitcoin.git bitcoin-0.9
cd bitcoin-0.9
./autogen.sh
cd src
./configure
./configure --with-incompatible-bdb
make
make check
stop bitcoind
bitcoind -daemon -server -reindex

I then waited for the reindex to finish but I still have the same problem. Am I doing something wrong? How can I test that I have the right version of OpenSSL required?

According to this GitHub discussion it turns out that the problem is caused by OpenSSL moving to 0.9.4.0 binaries should resolve your issue.

Gregory Maxwell

  The incompatibility is due to the OpenSSL update changing the
  behavior of ECDSA validation to reject any signature which is
  not encoded in a very rigid manner.  This was a result of
  OpenSSL's change for CVE-2014-8275 "Certificate fingerprints
  can be modified".

  While for most applications it is generally acceptable to eagerly
  reject some signatures, Bitcoin is a consensus system where all
  participants must generally agree on the exact validity or
  invalidity of the input data.  In a sense, consistency is more
  important than "correctness".


How do I restore my Multibit wallet without seed words? So I created my BTC wallet back in 2013 and had always kept a backup of the files handy. The computer I used has since died and now that I've installed the latest version of Multibit on my new computer, I can't figure out how to restore my wallet. It asks me for seed words, but I do not recall ever having seed words when the wallet was created.

I have the files multibit.info, multibit.wallet, and wallet.aes.json among other backups (along with my password). How do I get to a point where I can get my wallet up and running again?

In 2013, MultiBit was not using Hierachal Deterministic (HD) wallets. The latest version is MultiBit HD. If you want to use the older version you can use MultiBit Classic and that should let you import your multibit.wallet file.


How to secure new public proof of work blockchain? I am fairly new to the bitcoin and blockchain technology and have recently started reading about it. So my understanding and the question bellow may not be very accurate.

As I have understood so far, proof of work is the basic building block for a bitcoin block chain and because of it, an attacker will have to produce more than 50% of the total compute power (i.e control more than 50% of the nodes) in order to manipulate the block chain by being able to produce longest block chain consistently.

Now bitcoin guys were bit lucky as they were the first and nobody paid attention in there early days. Once bitcoin gathered momentum, number of honest nodes become predominant and system became inherently secure.

But now, how someone can start a new public blockchain (for completely different application) safely ? Because, if a new blockchain is floated with few mining nodes, any attacker can come with more compute nodes and hijack the blockchain as there are small number of honest nodes.

how someone can start a new public blockchain

This is impossible to secure PoW blockchain without "work". No work by honest nodes - no security. Point.


How do private keys in Bitcoin-Qt's encrypted wallet differ from BIP38 private keys? Does an encrypted Bitcoin-Qt wallet generate BIP38 private keys?

I saw that Bitcoin private keys start with 5, i.e. unencrypted / no-BIP38 PKs, can be imported on several bitcoin wallets, e.g. Blockchain.info, Electrum, etc., and everyone with access to these unencrypted PKs can spent the bitcoins associated with them without entering a password to validate the transaction.
While BIP38's private keys, i.e. those starting with 6, can be imported to several Bitcoin wallets,those ask the associated password in order to move the coins associated with them.

So let's say that someone would guess my Bitcoin-Qt's encrypted private key, and he imports it on blockchain.info or Electrum. Will he need to enter my password to spent the coins associated to my PK? In other words, do my encrypted Bitcoin-Qt private keys works like any BIP38 PK?

BIP38 provides a standard to create encrypted paperwallets (or physical coins in the case of Mike Caldwell). Bitcoin Core is wallet software which stores its most sensitive information in an encrypted format to protect against theft.

When you export a private key from Bitcoin Core, you're essentially doing the same as when you decrypt a BIP38 paperwallet: You're making the actual private key available in plain text. Obviously, the actual private key can be used to make a payment with associated balances.


Why can't I spend my bitcoins when they have been fully confirmed? I've used bitcoins for quite a while, but about a year ago I decided to dump having a thin client on my machine, and I've just kept my coins in various exchanges.

Yesterday, however, I wanted to check out the current state of the bitcoin client and I was a bit surprised to see that on Bitcoin.org, you now have three options.  That's good!

I downloaded the Multi-bit and installed it on my Mac.  I generated a payment address and I sent myself about .45 BTC.  After about an hour, I saw that it was confirmed.  I also set my mining pool account to send my payments to this new wallet, so I get a bit-cent sent to it every 12-16 hours (yeah, I'm not getting much, but I enjoy the free money.)

After a day, I now have a few transactions on this wallet.  My confirmed balance is around .5 BTC.  I just sent 2, .02 btc transactions.  Right after sending these two transactions, I tried to send a third for .06, Multi-bit gave me a message stating:

  There are not enough funds in your wallet to send .06 BTC. The
  transaction fee is set at .0001 BTC. Note that you can only spend
  confirmed transactions.

I don't understand.  My confirmed balance is currently around .43 BTC.  These coins have been confirmed for at least 12 hours, yet I'm getting this message telling me my balance was too low?

Has something changed within the Bitcoin protocol in the last year that I'm not aware of or is this a known bug in the Multi-bit client.  My biggest worry is that if and when I decide to move my coins from this wallet to an e-wallet, the thin-client is going to give me this same message when I try to make a big withdrawal because of this bug.  What is going on?

I don't use MultiBit, but just checked its source code to see what the message you quoted means.

It turns out that the message is shown when the amount you're asking to send plus fees is less than the "available balance", which is defined as:

  Balance that can be safely used to create new spends. This is all confirmed unspent outputs minus the ones spent by pending transactions, but not including the outputs of those pending transactions.

The source code also says:

  Consider a real-world example: you buy a snack costing $5 but you only have a $10 bill. At the start you have $10 viewed from every possible angle. After you order the snack you hand over your $10 bill. From the perspective of your wallet you have zero dollars (AVAILABLE). But you know in a few seconds the shopkeeper will give you back $5 change so most people in practice would say they have $5 (ESTIMATED).

So my guess would be that your balance includes some unconfirmed change from your previous transaction(s), and that simply waiting for that change to confirm will solve your problem.

In other words MultiBit doesn't allow you to spend the $5 change until you have it back from the shopkeeper.  Note that the Satoshi client does allow you to spend unconfirmed change outputs.


How is SegWit a soft fork? Reading this section of BIP144, I noticed the followng statement:

  Parsers supporting this BIP will be able to distinguish between the old serialization format (without the witness) and this one. The marker byte is set to zero so that this structure will never parse as a valid transaction in a parser that does not support this BIP. If parsing were to succeed, such a transaction would contain no inputs and a single output.

And this is in fact confirmed by this line in Bitcoin Core which is executed for every transaction found in a block during the CheckBlock call.

As far as I understand, this should mean that old clients that see a block containing a SegWit transaction would consider that transaction invalid and hence discard the whole block. Is that correct? What am I missing?

You're confusing transactions (the abstract object) and their serialization (the bytes on the wire in the P2P protocol or on disk).

Sure, SegWit introduces an extension to the P2P protocol (BIP144), which relays witnesses along with transactions, and old clients wouldn't understand such messages.

But old clients don't see them. Witnesses are only included when the requester asks for them, which old clients don't do. For them, new clients remove the witnesses before relay. Exactly because the witness of a transaction does not contribute to its txid, it is in fact possible to remove them before relay, without invalidating them. That is what makes it a soft fork.


Is there any on-block exchanges? I'm new to bitcoin and just learned that most (or maybe all) of the exchanges are working off-block, meaning that they don't really push data to blockchain most of the time.

Is there any altcoins or exchanges that store data in blockchains ? I'm doing researched project on the matter and trying to find exchange that have some of it's trading public.

As I understood from this outdated article, Kraken might been on-block exchange in the past.

BitSquare might be something I'm looking for, but I'm not sure exactly how does it work.

Generally speaking, decentralized markets such as LocalBitcoins and BitSquare have the money onchain as they facilitate exchanges directly between users, and centralized markets that take custody of the money prior to trading have the funds offchain as otherwise the transaction fees they're spending would be much higher.

I think that in the past Coinbase and Kraken both kept user deposits in separate addresses for each customer.


Where to find help understanding Bitcoin's source code in C++? I am looking to understand the Bitcoin C++ source code on GitHub. The Python one is simpler, but even that is too complicated for a beginner. Could someone guide me to some good resources on the actual implementation and its details? The actual C++ techniques used seem to be quite complicated.

I am not aware of an extensively commented version of the Bitcoin sourcecode, but you could check out the Bitcoin Developer Reference and you can read online the book Mastering Bitcoin by Andreas M. Antonopoulos, which covers Bitcoin's technical aspects extensively. There is also Princeton's Free Online Bitcoin course, which goes into details on some technical aspects, which might in turn help you understand the sourcecode better.

Besides that, try searching Bitcoin.SE for specific questions, there are a few here that have been asked about already, if you can't find something, feel free to ask a new question here.


How to build a bitcoin delegation server? Actually, I know there are already have blockchain.info and its own api. But I want to build my own server which can provide basic API like:

Generate a wallet by use password and username.

User can login/logout(Optional)

User can do transaction (send/receive to/from someone's address)

But, I have google for a while. The only way to create a wallet is configure the bitcoin.conf before run the bitcoind server. I don't know how can this works, I know there are also a way call multisig, But I don't know how to connect it with the wallet. I mean how to make each user has his/her own wallets.

Anyone help?

Let's break it down a little.

Things you need a node for:

Receiving new transactions and blocks
Indexing transactions
Building transactions
Broadcasting transactions

Things you don't need a node for:

Generating keys
Signing transactions

You could, in theory, just build a program that generates your keys and multisig redeem scripts, and converts them to addresses for your users. Then, you can use insight or blockchain.info or any one of several explorers to look up transactions for the addresses you generate, and build outgoing transactions.

Once you have the outgoing transaction, your program can sign it with the keys you previously generated, and then broadcast it via an explorer API.

Alternatively, you could run your own bitcoind node, and index incoming transactions yourself.

A wallet and a node are two separate concepts. Bitcoind can act as both, but it's core function is that of a node. Many people run bitcoind with absolutely no keys on it, and use light clients like Electrum or hardware wallets to store their actual BTC.


How can a user or wallet have multiple addresses at all if out of a private key can be generated only a single public key? A user of a wallet, regardelss of a version of a wallet, can generate as many addresses as he wants, right?
Since an address is basically a public key, and in "private-public key" cryptograpthy there's only one public key that corresponds to a private key, how is generating lots of addresses possible at all?
This Can same private key generate multiple addresses? isn't what I'm asking about.

Modern wallets are hierarchical deterministic (HD) wallets.
A root key is used to derive an effectively infinite number of private keys using systems such as BIP32.
Each derivation results in a single public/private keypair, and hence a single address at that level.
Prior to the usage of HD wallets, things were a bit more straighforward - every time you requested a new address from the wallet, it would generate a new, random private key and store it in the wallet file, and give you the address created by the public key for the new private key.
The move to HD wallets was done for ergonomic and safety reasons - in older wallets, if you did not make a backup after every new address, you would lose any addresses generated after your most recent backup if the wallet file was lost. With HD wallets, only the root key (commonly a BIP39 mnemonic) must be backed up - all addresses and their keys can be recovered from it.


Are these two scripts equivalent? I wonder whether
OP_DEPTH 0 OP_EQUAL

has the exact same behavior as
OP_DEPTH OP_NOT

which is
1 if no items
0 if any number of items

I'm asking because the first script is used and I'm not sure if there is any justification for that. It's very likely that they took the simple approach but I need to make sure about that since I want to squeeze the largest number of bytes out of script.

In general 0 EQUAL is not equivalent to NOT, but in this case they are indeed equivalent.
The reason they're not equivalent in general is that 0 EQUAL checks that the top stack element is exactly a canonical 0 push, i.e. the zero-length stack element. NOT, on the other hand, checks that the top stack element is numerically equal to 0. This means that it is between 0 and 4 bytes inclusive and all bits are zero except possibly the most significant one, which would indicate -0. If the top stack element has more than 4 bytes then NOT will fail the script immediately, similar to RETURN; there is no way to make 0 EQUAL fail the script.
For all these reasons you should be a bit careful using NOT in general -- although in practice standardness rules in most of the network will prevent any of the noncanonical encodings of 0 (or any encoding of -0) to propagate. But in principle if you call NOT directly on witness data then this is a malleability vector.
However, all of this is moot because the output of DEPTH is guaranteed to be a canonically encoded number. So NOT is perfectly safe and does indeed save the extra byte.


Code prevention of sending bitcoin to an address on the wrong chain btc/bch/bsv Since they share several common addressing schemes, can I figure out in code how to send them to the right chain?

There are three partial remedies:

bech32 addresses are invalid on BCH and BSV
CashAddr is an alternative encoding (inspired by bech32) for p2pkh and p2sh addresses that is only valid on BCH and BSV
You can check whether the recipient address is subject to address reuse: if it was previously used on another network, you should request confirmation or another address from the recipient

Unfortunately, BSV and BCH share all address formats, so you cannot distinguish which network an address was generated for between the two.

Likewise, the original p2pkh and p2sh addresses are valid on all three networks and there is no way to distinguish which network an address was intended for just from the address itself.


Multibit error message Upon opening multibit I get this error message; any idea what it means?

"Det gick inte att läsa in https://multibit.org/version.txt. Felet var javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target."

It is an error to do with getting hold of a 'new version available' file from multibit.org. It means you won't get notification of new MultiBit versions but can otherwise be ignored.

Some versions of Java have problems with the HTTPS certificate on multibit.org.

I am going to change how the version.txt file is authenticated which will make this error disappear.


Mining on the testnet: how to configure bitcoin-qt? I am trying to generate some coins with
the client ./bitcoin-qt -testnet -gen
How can I config to what address the money go ?

p.s.: actually I got notification for mining success but no coins in the wallet.

It is possible that you found a block, but it got orphaned. Another miner may have found a block around the same time, and for whatever reason, the next miner to find a block chose to link to theirs instead of yours.

This happens a lot on testnet because of a special rule that if no block is found for 20 minutes, the difficulty drops temporarily to 1. When this happens, typically lots of people find blocks right away, and it's a toss up which one is used by the next miner.

You could inspect debug.log if you want to know exactly what happened.


Ignis transaction not included in the blockchain The following transaction submitted to the Ardor blockchain remained unconfirmed and eventually expired, what is the the reason for this?

{
  "senderPublicKey": "...",
  "isBundled": false,
  "chain": 2,
  "signature": "3a49a35627b4ce8a5ac2822b35818f907aec4fd53e79fb02d900d88c0f991c0d71973c434ccaad318a1288a1fb64e53d20dc30de74beb18520c5f4bce06372d4",
  "feeNQT": "100000000",
  "requestProcessingTime": 0,
  "type": 0,
  "fullHash": "552ec333deb265d60ccfa4225123106ce4fc8f9a751185c561083b4cd9b14ed3",
  "version": 1,
  "fxtTransaction": "0",
  "phased": false,
  "ecBlockId": "18397966223991632613",
  "signatureHash": "72caad33596e08e67fe43f42033c0223f9abec9b440b10c07cfd186a037eb972",
  "attachment": {
    "version.OrdinaryPayment": 0
  },
  "senderRS": "...",
  "subtype": 0,
  "amountNQT": "77470950921",
  "sender": "12661870821659068934",
  "recipientRS": "ARDOR-LHJR-WZVF-VKTX-3PVAA",
  "recipient": "1451133144082759191",
  "ecBlockHeight": 384416,
  "deadline": 60,
  "timestamp": 22957813,
  "height": 2147483647
}

When you send a transaction to a new account on Ignis (i.e. ARDOR-LHJR-WZVF-VKTX-3PVAA is a new account) the fee you pay in IGNIS should cover the bundler cost of 1 ARDR. Currently the best bundling rate is 2.45 so you should have specified 2.45 IGNIS or higher as fee i.e. "feeNQT": "245000000". If you send it to an existing account the fee is only 0.01 ARDR paid in Ignis according to the best bundling rate.

My recommendation for exchange developers and application developers is to setup their own bundler as explained in section 5.3.4 and 5.3.5 of the Ignis Integration Guide


Why is blockchain.info allowed to have an iOS app but coinbase is not? I saw that Coinbase's new wallet app has been pulled from the iOS app store.

Is there anything about the Coinbase wallet app that was different from the blockchain.info wallet app?

Probably because blockchain.info is just a wallet whereas coinbase actually allows you to buy and sell bitcoins. Exchanging one currency for another (where one is only loosely labeled a currency by the government) is where you get into sketchy regulatory waters. I imagine these are the types of problems apple would like to avoid.


Schnorr without R in the challenge I read the Schnorr and MuSig papers and stumbled over the problem that the use of deterministic nonces in multisignatures is not safe. The adversary would be able to extract the private key from the victim, if he initiates a second signing session with the victim on the same message, but changes his own public nonce.
This happens, because this changes also the partial signature of the victim. (s = r + c*x)
The challenge is constructed in this way : c=H(R||m)  (not key-prefixed version).
I'm wondering, would the exclusion of the public nonce from the H-sig challenge not result in a constant signature of all signers and therefore allow the use of deterministic nonces? The challenge could be c=H(m) or c=H(P||m).
Why is R (public nonce) in the first place included inside the hash function? I'm sure there is a good reason that I could not find.
ECDSA doesn't have that.
Thanks.

So the scheme you suggest is that signatures are pairs (R, s) such that sG = R + H(P,m)P, where P is the public key, and m is the message.
Pick a random s. Set R = sG - H(P,m)P. (R,s) is now a valid signature for P, without knowing the corresponding private key. So this is a trivially forgeable signature scheme.
In ECDSA, the extraction of R's x coordinate, used as a scalar, plays the role of commitment in the signature to R.


Where can I find the current Ripple version number? This page contains several milestones - versions 1,2,3.

How can I find what version is currently running on Ripple.com?

Start the client at http://ripple.com/client, the version number is written at the bottom.

Currently it's 0.1.17


Bitcoin network splits? Alleged situation, due to X, country or geographical region Y falls off the internet map, but still has it's own network running. Blockchain splits and this situation continues for 6 months.

After 6 months there is a country specific chain, and the rest of the chain.

What happens, how can it be folded back in, does it permanently cause a chain fork, has this been considered or does bitcoin already handle this situation?

When the network rejoins, the chain with more proof of work wins. Servers on the losing chain will switch to the winning chain. Transactions from the losing chain will be recovered and mined into new blocks on the winning chain.

There are three types of transactions that can't be recovered:

Any transaction that claims a block reward cannot be recovered.
Any transaction that uses an input that is already consumed by a transaction in the winning chain cannot be recovered.
Any transaction that uses an input from a transaction that falls into either class above cannot be recovered.


Hierarchical Deterministic (HD) Importing Funds I'm creating derived addresses from a HD private key.

I have all data saved, such as the; seed, HD private key and derived addresses with their private keys, plus wif formats.

I'm receiving funds in each address, but need a way to import all the funds as efficiently as possible into a SPV wallet. At the moment I import each address wif to recieve its corresponding balance.

Is there a neat way to pull in all funds that derive from a "master key". Or, have I misunderstood deterministic benefits - am I trying achieve a non existent feature?

TLDR; what's the best way to import funds from multiple addresses?

Is there a neat way to pull in all funds that derive from a "master key". Or, have I misunderstood deterministic benefits - am I trying achieve a non existent feature?

If you import your master key (which may be in the form of a mnemonic or an xprv...), any BIP44 compliant wallet should be able to locate all the funds, provided you followed BIP44 when generating and using addresses.

If not, then you will have to import each key individually.


Python source code for issuing a new altcoin? I was wondering if anyone here know a python source code for making an altcoin? I found some tutorial on C++, but since I am not familiar with the language I cannot understand the code fully?
And if there are not any python code for that, what is the reason?

Try TinyCoin, a small and easy to understand cryptocurrency written in Python. I'm still unsure exactly what you need because you con't create an altcoin from Bitcoin without knowing C++, Bitcoin is not written in python. But if you just need a python altcoin for learning purposes, this one should do the trick :)


Can a single wallet stir all different crypto currencies Is there one wallet that can hold all the different cryptocurrencies, or does the wallet need a separate implementation for each different cryptocurrency?

Wallets need to know how to generate new addresses and check for incoming transactions, and should verify that transactions (and also if possible blocks) are valid, so they will need to know some important information about each coin. Some coins which are simple forks of each other don't require much extra info, just the difference in magic bytes, port numbers, chain parameters, etc. While others which have much larger changes like those with different mining algorithms, different transaction structures, different signature algorithms etc would require more in depth implementation as well. So in general no, a wallet can't trivially accept all currencies, each requires implementation.


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

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

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

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

Am I overlooking a hyper-important advantage?

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

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

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

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

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


Transfer bitcoins from Coinbase account to an offline Script/Paper How would I go about transferring some of my bitcoins from my Coinbase account to a physical paper script or paper form? Also, am I limited as to how many bitcoins I can transfer to one set of keys "public/private"? Are there paper bills already made to where there is a public key as to where the private key are covered and are they considered safe? I know I asked quite a bit and do appreciate any and all information available.

Ok. You've asked multiple questions, so I'll split my answer up.

How to transfer from Coinbase to Paper Wallet

If your paper wallet is made by a good quality generator, it should have a private key, a public address and a qr code printed on it. You can scan the QR code with coinbase's send function, or if you don't have a camera, you can type the public address in by hand.

Is there a max/minimum amount I can send to a Paper Wallet?

Nope. Think of your paper wallet simply as an access key. To actually use it, you need a wallet client to use the private key. It's the same as any other wallet.

Pre-made paper wallets that come with something covering the public key?

There are some specially made ones that you can buy with tamper-proof stickers, however these are made more for a visual appeal than actual use and you really don't need them. Fold your private key unwards, so that the private key can't simply be glanced at. Then put it somewhere safe where only you know it's whereabouts.


What future can bitcoin have if more and more countries will ban it? As of today, Russia added itself to a list of countries that ban bitcoin operations.

So is there a future for bitcoin (and other cryptos) if more countries are going to ban them?

Let's imagine a worst case scenario where bitcoin becomes illegal in all countries. If you put a bitcoin address on your site, you'll get shutdown. If you run a bar and you have the bitcoin logo saying that you accept bitcoin, you'll get fined. Online bitcoin exchanges will be made illegal everywhere.

Even if all this happens, bitcoin as a technology cannot be uninvented. All of this banning will just slow down the adoption. You'll eventually see it uprise again and being used in closed communities worldwide.

People will find other ways of converting fiat currency into bitcoin using decentralized exchanges that go through anonymized tor networks. Local bars and shops will adopt systems where you'll be able to pay your coffee, wirelessly, anonymously, through a hardware bitcoin wallet, without even having to scan a QR code. Paying with bitcoin will become untraceable, ubiquitous and unstoppable.

It's simply a better technology than the current monetary system, and in my opinion history has shown that better technology cannot be stopped no matter the regulations or the policies against its adoption.


Is there a way to report/shutdown a Bitcoin Criminal/Bad-Actor? I received a SPAM/Phishing/Blackmail email demanding payment to a specific Bitcoin wallet.

  BTC: 15vUqauqHybEPvXYLv97WW4XwM2YHXYC1d

How can this criminal be shutdown?

If legal action is problematic, could a "User Rating/Classification" be added to BTC Wallets so that it's possible to "tag" Bitcoin users who are using this technology for illegal purposes?

EDIT (evening of 20181125)

BitCoin Address Transactions for Wallet 15vUqauqHybEPvXYLv97WW4XwM2YHXYC1d

         |  Number of   |
         |   Receive    |
Date     | Transactions |
-------------------------
20181116 |         5    |
20181117 |         4    |
20181118 |         7    |
20181119 |        11    |
20181120 |         3    |
20181121 |         3    |
20181122 |         1    |
20181125 |         2    |

1.55036944 BTC scammed so far to just this wallet.
Other accumulator/consolidation wallets hold much more.

On 20181119 everything was transferred to BTC Wallet  38b3k1qkYDQDxX7FTZ14UtioemUmvH6Wfv.  This wallet then showed receiving two transactions for the sum of 3.78129807 BTC.

On 20181120 small transactions to the origin wallet continued.

BTC Wallet  38b3k1qkYDQDxX7FTZ14UtioemUmvH6Wfv received one more transaction for a total of 3.78129807 BTC.  This wallet was then transfered to BTC Wallet 1KNY4i1642h7Rhrd2YUUv6RCJ3eifybbeF which shows a total receipt of 15.31805607 BTC - all apparent consolidations on 20181120.

On 20181122 the contents of the original wallet was transferred to BTC Wallet  38ezWFTTFJbyAD1oHXzydfVAxsXUwZYukg.  Less than 20 minutes later, this entire wallet was transferred to 2 other wallets.

Being a BitCoin criminal seems to be very lucrative.

Bitcoin is supposed to be permissionless and censorship resistant. That's the whole point. So, no, you can't do that.


Can a blockchain offer transparency to a humanitarian aid supply chain? I am located in a middle eastern country which is in desperate need of humanitarian aid.

I have contacts in western countries who are willing to call upon their independent donor network to provide significant amounts of aid in the form of physical assets (not financial). However there is concern over the transparency of the supply chain on the receiving end, as it is typically the case that physical assets tend to disappear in the region, whether they pass through official channels or not.

Therefore, I am interested to know if a blockchain could be used to provide transparency to this humanitarian aid supply chain.

This would greatly increase the confidence of donors and thereby lead to greater amounts of aid being delivered where it is needed.

I have read that blockchain can be used for physical assets and can increase the transparency of a supply chain from a consumer perspective of provedance, but this is the opposite way around, where it is the supplier wanting to have transparency in regards to the beneficiaries of the physical assets.

Furthermore, if this is achievable, I would also be interested to learn how to establish such a blockchain ie what resources or technical knowledge is required or where can these be obtained.

Thank you in advance for any input.

C.

It would largely function by pictures I would imagine. Let's say, for example, each crate of goods had a QR code, EDIT: with the private key known only to the supplier.

So the supplier gets these QR codes(public keys) , slaps them on the crates and sends the crates on thier way. The receiving end then must provide not only a video of those crates being opened in a food distribution center, but the video must include the QR codes in the footage. Then the supplier will know thier goods have not been hijacked, particularly if the video includes the goods being handed out on camera.

Those videos can then be published along with the QR codes for external verification on a blockchain.


How do I validate the correctness of a bitcoin multisig address? Normally when validating a bitcoin address I Base58 decode the string, validate the checksum, throw away the checksum, and end up with 21 bytes. Then I verify that the address is fr the correct network:
If the first byte is 0x00 I have an address for the production network
If the first byte is 0x6F I have an address for the test network

For this multisig address 2N5vbPQB7pMqyVa8JRcpZdCQLQCwDZCMyfo I get 0xC4 as the first byte.
Does this mean that 0xC4 is the prefix for all multisig addresses on the production network?
In that case, what is the prefix for the test network?

Multisig addresses are defined as follows:

base58(0x05 + [20-byte scripthash] + [4-byte checksum])

For testnet, it's 0xC4 instead of 0x05, indeed.


How do I make Mulitbit show the exchange rate? I recently started using Multibit and today when I opened it the app wouldn't load exchange rates on any of my wallets.

It shows my balance but not the value in dollars. I have it set to do so but it's not working.

Bitstamp is currently offline for security reasons so that will be why. It'll be back within a day or two. Perhaps there's an option to switch it to use a different exchange's rates.. if not, there should be.


How to convert a WIF private key to a BIP32 extended private key I am trying to recover the extended BIP32 master private key from its extended BIP32 public key (which I already know) and a WIF private key (which I obtained by decrypting a BIP38 seed with a passphrase).

I followed the steps described in this article from Vitalik Buterin, but to use the crack_bip32_privkey function in pybitcointools, I need to have a private key in BIP32 format (not WIF). I can see how to obtain a BIP32 private master key from a BIP32 seed (with bip32_master_key), but not how to do the same from a private key in WIF format.

How can I convert the WIF Private key into a BIP 32 private key (with Python, .NET or Javascript)?

You can't. The BIP 32 extended private key format contains information which is not present in the WIF private key. The extended private key format contains the chaincode of the private key, the index, and the parent fingerprint. Those information come from the derivation of the private key itself and cannot be found elsewhere.

In order to get the parent public key, the only information that you need from the extended public key is the index of the child. This can be trivially found by simply brute forcing through all possible child indexes (2^31 - 1 indexes) until you get a master private key which has a public key that matches the parent public key, or until you have derived the correct child public key from the parent public key.

Here is code that will find you the parent private key. This does the first technique of cycling through possible parent private keys until one is found which has a public key that matches the parent public key. Note that this may be completely inefficient and may take a long time to find a key. Also note that this only works if the child key is directly derived from the parent, not some depth down in the derivation tree.

from pybitcointools.deterministic import raw_crack_bip32_privkey, bip32_deserialize, bip32_serialize, bip32_privtopub
from pybitcointools.main import decode_privkey, encode_privkey

parent_pub = 'xpub661MyMwAqRbcEnKbXcCqD2GT1di5zQxVqoHPAgHNe8dv5JP8gWmDproS6kFHJnLZd23tWevhdn4urGJ6b264DfTGKr8zjmYDjyDTi9U7iyT'
wif_key = encode_privkey(decode_privkey('KyqcQVzcp7cHEMEDHQaz5eaE5azsRHaE4ukkeqwM2vdiQwBYtxeb'), 'bin_compressed')
for i in xrange(2**31 -1):
    priv = (b'\x04\x88\xAD\xE4', 1, 0, i, b'', wif_key)
    pkey =  raw_crack_bip32_privkey(bip32_deserialize(parent_pub), priv)
    final_key = bip32_serialize(pkey)
    if bip32_privtopub(final_key) == parent_pub:
        print final_key
        break


Access to RPC console I am new to Bitcoin, can anyone tell me how I can access to my RPC console and type in commands. I am using Bitcoin Core on my PC. If there is a tutorial for beginners to access to RPC please notify me.

Here is a Step-by-Step tutorial

 Set up bitcoin.conf.

rpcuser=user

rpcpassword=password

rpcallowip=172.28.128.1 # The ip of your machine. Use 127.0.0.1 if you use local machine

Start a bitcoin client by

bitcoind -server=1 -daemon

 Download this library and install it by running

python setup.py install

Create a python script to connect to RPC server.

from jsonrpc import ServiceProxy
access = ServiceProxy("http://user:password@172.28.128.4:8332")
print(access.getbalance())


Is there a US broker for Bitcoins? Apparently, there is an Australian trading house, Bit Trade, that will trade currency for Bitcoins or vice versa.

Is there a U.S. equivalent?

There is indeed a US Broker for Bitcoins.  Unfortunately, for now, they're still in private beta.  The company is called Buttercoin: https://www.buttercoin.com/  You can sign up for their private beta, but there's a pretty long waiting list right now.


OP_CHECKSIG needs to have the whole transaction to hash and to verify the tx. Btcdeb has the feature of allowing the tx as an argument however the website you linked doesn't hence this opcode is doomed to fail every time on this website.
It is reasonable to expect supplying the signature to verify the script/tx because otherwise to steal his coins, I would be able to copy one of his signatures and put them in my transactions.
Therefore I do suggest downloading and using the complete btcdeb.


Link Receiving address with other addresses Assumed somebody knows one of my several addresses in my wallet for receiving bitcoins, can he link this address with the other addresses I got? Or does every address stand for its own?

Say you have two addresses, address A and address B. If someone sends coins to you at address A, and someone also sends coins to address B, then no one can link those addresses together. They are just separate transactions with separate transaction outputs, just like any two transactions that are sent to different people.

But now, if you have to send some coins and you need to spend both of the previous transaction outputs were generated by sending to address A and address B, then you will be associating those addresses together. This is not a proven association, two different people could come together and spend two of their outputs together in the same transaction, but this is not a very likely scenario. The more likely scenario is that the person who initiated that transaction (you) owns both address A and address B.

That said, just because someone watching the block chain can tell that the SAME person owns address A and address B, that doesn't mean that they know that YOU are the one who owns address A and address B. Read this stack exchange for more info: How anonymous are Bitcoin transactions?. If they know that you are the owner of address A, though, then they would be able to determine that you are (likely) also the owner of address B (but only if you have made a transaction before that spends from both of those addresses).


How a private key can be invalid? From here, we can read that :

  A private key is a 256-bit value, meaning there are approximately
  1.1579e77 possible keys (There are about 1.2288e66 invalid values

But here, we have :

  Nearly every 256-bit number is a valid ECDSA private key.
  Specifically, any 256-bit number from 0x1 to 0xFFFF FFFF FFFF FFFF
  FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140 is a valid
  private key.

Does "nearly every" mean (1.1579e77-1.2288e66) out of 1.1579e77 ?

A bitcoin private key is a number greater than or equal to 1 and less than X, where:

X = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

That's in base 16. In normal base 10 numbers, that's:

X = 115792089237316195423570985008687907852837564279074904382605163141518161494337

Any number outside of that range is an invalid private key. That includes 0 and X, X+1, X+2, ...


Help. Lost my backup phrase, but I have access to my wallet When I downloaded the wallet on my phone I was  asked to write down a strange, meaningless phrase on a paper so I could access my bitcoins if they were lost, and I did so. I know pretty good why does this exist and understand it's importance, but i'm afraid I've lost the paper on which I wrote the phrase.

Keeping in mind that I STILL HAVE ACCESS to my wallet, Is there any way I could change or recover my phrase?

P.S : Alright, I promise to protect this one with my life.
P.P.S : I really need help. Any sort of help that lets me change or recover my phrase would be highly appreciated.

Depending on the wallet you can usually create a new backup which will give you the same phrase. Look in your wallet for options to create recovery phrase or backup current wallet.


GUIMiner won't start mining on Slush's pool I started co-mining on Slush's pool successfully for about 48 hours, but from there on I haven't been able to connect to it again. It logs in the console this, no matter if I'm using a valid worker and password or not:

2013-05-26 12:55:19: Listener for "Default" started
2013-05-26 12:55:20: Listener for "Default": api2.bitcoin.cz:8332 26/05/2013 12:55:20, checking for stratum...
2013-05-26 12:55:20: Listener for "Default": api2.bitcoin.cz:8332 26/05/2013 12:55:20, started OpenCL miner on platform 0, device 0 (Turks)
2013-05-26 12:55:20: Listener for "Default": api2.bitcoin.cz:8332 26/05/2013 12:55:20, no response to getwork, using as stratum
2013-05-26 12:55:20: Listener for "Default": api2.bitcoin.cz:8332 26/05/2013 12:55:20,  No JSON object could be decoded
2013-05-26 12:55:30: Listener for "Default": api2.bitcoin.cz:8332 26/05/2013 12:55:30, Failed to subscribe
2013-05-26 12:55:32: Listener for "Default": api2.bitcoin.cz:8332 26/05/2013 12:55:32, IO errors - 1, tolerance 2
2013-05-26 12:55:33: Listener for "Default" shutting down

Of course, I've checked my connection, and I've started GUIMiner with administrator privileges. I'm using Windows 7.

The problem is that in GUIMiner, the URL for Slush's pool is:

  api2.bitcoin.cz:8332

That address has been deprecated, and it falls back to the GetWork protocol. From Slush's Pool news:

  10.03.2013
  Default mining URL for Stratum is stratum.bitcoin.cz:3333. If you're still using api.bitcoin.cz, please fix your URL to prevent fallback to deprecated Getwork protocol.

In the GUIMiner interface, instead of choosing "Slush's Pool" from the dropdown menu, choose "other" and then enter

http://api.bitcoin.cz:8332

or

stratum.bitcoin.cz:3333


When backing up a wallet, is it required to shut down the bitcoin client? I am building a website, and would like to backup my wallet.dat file after every transaction occurs, but I would not like to have to shut down bitcoind every time I make a backup.

The common wisdom seems to be that you should shut down your bitcoin client when making a backup, but that doesn't seem absolutely necessary as long as the wallet has been fully written to and flushed to disk.

Would locking the wallet be enough to ensure that the wallet has been written to before making a backup? Are there any other techniques that websites typically deploy for making "hot backups"?

The Bitcoin client's RPC interface provides a wallet backup command. It's "backupwallet <filename>".


About insufficient priority error The input of UTXO transaction being used is 10 pieces, total 0.0082 BTC.
Broadcasting the fee at 0.000012 BTC (sendrawtransaction), the following error occurs.

insufficient priority

Is the fee setting not good?
I do not know the cause.

That error means you did not provide a high enough transaction fee on your transaction.


Can the Bitcoin system be changed? Are we stuck with what is here now? or if 10 years down the road serious changes need to be made to the system; can that be done with a decentralized system? How would you make changes to a decentralized system like this?

The power to change the Bitcoin protocol depends on the willingness of the economic majority to adopt the changes.

A wishlist exists of some changes that have been considered.

If the change is one that devalues the currency, then those who hold coins or plan to hold them in the future will be less willing to adopt the change(s).  Some suggestions have been discussed and rejected so many times that a separate list of prohibited change suggestions has been compiled.  If the change is one that improves Bitcoin without devaluing the currency or harming it some other way, those changes could be adopted.  If the change is not really necessary it might not be adopted, especially if there is the possibility for unintended consequences to be the result.


HELP: recover my btc funds though all odds against me. someone with Xtra knowledge? 5 months research and a lot of findings indicating it might be possible. I try askin here, like an last effort and Im not expecting fully fix or so but maybe some tips or information that might help me get my stored btc back finally. First I give "good to know" details and then information from my research and the situation. Probably I will have to give more specific info for best understanding, just tell me.

Details

Multibit HD wallet
last updated around 2016
Unfortunately my pc have been formatted twice
I have had a usb with all backup, wallets etc
Usb is lost
Recovery phrase (seed) is lost since 1.5 years
I have done several reovery sessios with differet software and found a lot of interesting files

=================================================

i have found filenames "key.class(keypar.clas etc), "weird filename"(incorrect).dat files, RSAkey.class and so on I can see they belong to the now los partition that I used for multibit hd files I also recofnze the files from the multibithd.jar container. And my last recovery software i got is very good and iim not suprised if it can find any file im ooking for.

so is there any out there that can help me out complicated dilemma. Is there any key file or something I can use for in some way export my private key? or some way to get my tranwqctions recovered if "transaction file" is recovered? and if not ay help is possible from my questions above. Is there anyone know how to open, concert, export or whatever the content of CLASS files(i knoow something about belongs to java) but my knowledge aout java and the process in java applicatina ia zero but if easy or easy explained I might fix it!

Yeah I know my ownfault, and all that My only excuse is that i lost interest but after reading after reading bitcoin raise in value i got my motivation back:P thans for your time and help!

My question is about..

i have found filenames "key.class(keypar.clas etc

Those are Java class files, they are software not data. They are no help in recovering BTC.

See https://multibit.org/help/hd0.1/files.html - you should look for mbhd.wallet.aes or mbhd-YYYYMMDDHHMMSS.wallet.aes etc.

That .aes filename extension implies the file is encrypted. If so, to decrypt it you must have either the password or the "wallet words".

Note Multibit support says:

  If you have really, truly lost or forgotten both your password and your wallet words then it is likely that you have lost access to your bitcoin.

  is there any out there that can help me?

I doubt it. I expect many tricksters will offer to do so.

  Is there any key file or something I can use for in some way export my private key?

No.

  some way to get my tranwqctions recovered if "transaction file" is recovered?

No.

Your transaction are not lost, theye are recorded in the public blockchain - every full-node has a copy of all transactions.

What you have lost is the private-key that gives control over the bitcoins in those transactions. Only you had the private key.


Digging into debug message: "socket recv flood control disconnect (x bytes) " I set the following when I run
bitcoind -debug -server -detachdb -printtodebugger -printtoconsole

Debug.log

socket recv flood control disconnect (5018020 bytes)
disconnecting node 82.41.255.68:8333

Question

What client actions would cause this entry to appear?

What settings (client side or server side) are available to adjust this for higher or lower capacity?

What side effects are there with adjusting this capacity (semaphore lockups, db contention, etc)

In the Bitcoin protocol each message is prefixed with a message header that, among other things, contains the message length (more precisely the payload length). The length field is an unsigned integer 4 byte (or 32 bit) in length. Therefore it is perfectly ok to specify payloads of length 2^32 bytes = 4 GB.

Since you wouldn't want to download 4 GB just to find out that it was an error in the other sides implementation or the peer was trying to feed you junk on purpose the mainline client added an arbitrary limit to the size of messages it accepts.

According to net.h this limit is 5'000'000 byte or a bit less than 5 megabyte. The message that caused the error and subsequent disconnect is just a little bit over that limit. Maybe you could look up which peer, or even better which client version, caused the error so we can inform the developers about it.


Standard multi-signature transaction BitcoinCore I created a transaction with a script for a Multi-Signature in the form of

M <A pubkey> [B pubkey] [C pubkey...] N OP_CHECKMULTISIG

It is documented (https://bitcoin.org/en/developer-guide#multisig) that this type of script would belong to the standard transaction types.

When i put that transaction into Bitcoin-CLI via decoderawtransaction, it says:

"vout": [
    {
      "value": 0.00250000,
      "n": 0,
      "scriptPubKey": {
        "asm": "2 <PublicAdress 1> <PublicAdress 2> <PublicAdress 3> 3 OP_CHECKMULTISIG",
        "hex": "XXX",
        "type": "nonstandard"
      }
    },

I then sent the transaction via sendrawtransaction and it is sent, accepted and mined successfully to the Blockchain but it seems to be invisible for my wallet.

Also when i send such a transaction to my BitcoinCore wallet, Bitcoin Core doesn´t notify me about it.

Is there simply no support in Bitcoin Core for that type of MultiSig transactions or am i doing anything wrong?

Bitcoin Core will be default only treat M-of-N multisignature outputs as "yours" (contributing to your balance) if you own private keys to all N public keys. This is to prevent showing something as a balance which could be spent from under you.

If you instead of using a raw multisig output use P2SH the same rule applies, but in that case you're able to use importaddress to mark the outputs as yours regardless of whether you have access to the keys.

Once the outputs are treated as yours, you can use signrawtransaction to fully or partially sign for them.