BitLaunder's mixer vs "major exchanges" mixer

It probably doesn't give you more security, and in fact if the mixer service's coin volumes are low, which they likely are, and dependent on whatever their turn around time may be, and dependent on how many coins you are asking them to mix, it is very possible for you to get back some of the same coins you sent to them. Unless they were verifiably in a nation which is very unfriendly to whatever country you're in, such as North Korea if you're in the USA, then they likely don't offer any additional security against government agencies compared to a major exchange located in another country, like BTC-e in you're in the USA.

Even if they were to send you different coins, they are still most likely going to be attached to legally questionable transactions due to the very nature of this service. So instead of the block chain showing you received coins from someone who buys Cocaine on Silk Road 2, it'll now show that you received coins from someone who buys Heroin. Either way you still look like a drug dealer.

And to address bitlaunder.com specifically, their service is outright laughable. Go read their Privacy Policy

https://bitlaunder.com/privacy_policy

They say:

Sharing Information With Government Agencies / Court Orders

We will NOT comply with any court order for information pertaining to our clients,
nor will we comply with any government request (of any country) for information
about our clients.

But then say:

California Online Privacy Protection Act Compliance

Because we value your privacy we have taken the necessary precautions to be in compliance
with the California Online Privacy Protection Act. We therefore will not distribute
your personal information to outside parties without your consent.

As part of the California Online Privacy Protection Act, all users of our site may
make any changes to their information at anytime by logging into their control panel
and going to the 'Edit Profile' page.

Children's Online Privacy Protection Act Compliance

We are in compliance with the requirements of COPPA (Children's Online Privacy
Protection Act), we do not collect any information from anyone under 13 years of age.
Our website, products and services are all directed to people who are at least 13
years old or older.

So they wont comply with American and foreign court orders, yet they seem to be very concerned with complying with American and Californian privacy laws? Sure sounds odd for a money laundering service.

And although their DNS name is registered to a proxy, and their website is behind the CloudFlare CDN, we can run a reverse DNS query on the IP assigned to their MX entry (64.90.187.212) which tells us that their email server is at a colocation facility in New York because its DNS name is 64.90.187.212.static.nyinternet.net. The banner for that SMTP server identifies its primary domain as mail.bitspeculate.com. We can further prove that both services are ran by the same person because if you create a account at BitSpeculate, login, and go to https://bitspeculate.com/member_area/mtrans_my_accounts and view the HTML for that page you'll see this commented out:

Contact

And the twitter account for BitSpeculate says it is ran by Michael Moriarty (which very well may be a pseudonym) in Vancouver BC. The picture for this account is for Professor Moriarty from the recent Sherlock Holmes movie, and according to Wikipedia, Prof. Moriarty is "Sherlock Holmes's archenemy, Moriarty is a criminal mastermind whom Holmes describes as the "Napoleon of crime"." Do you really want to trust you money with someone who fancies themselves as a criminal mastermind? And if you read through the BitSpeculate Twitter account you can't just help but laugh at the irony of someone who runs a exchange and laundering service talking about how online wallets are unsafe.

BitSpeculate itself seems like it very well might be a fraud because after creating a account, I see that they will not tell you the volume of trades for their cryptocurrency markets which seems exceptionally odd for a cryptocoin exchange. And their price data doesn't stream live, but is instead manually inserted in to the HTML via PHP script.

If the sites creator was this sloppy covering their tracks, arrogant in choosing their pseudonym, incompetent in regards to web development, and if I can find out this much about them in a few minutes, I'm pretty sure a government with the ability to subpoena service providers and execute search warrants could find out whatever they wanted to know about this service and its customers with little trouble, regardless of whether or not the sites operators would cooperate or whether or not they are using Tor.

And finally, BitLaunder does not appear to be ran by syadasti. If you read the reddit post you linked, syadasti is running a different service - bitlaundry.com which does not use Tor. If you read the article linked in the reddit post, Mike Gogulski seeming outs himself as syadasti in the comment section by saying he runs bitlaundry.com. And according to Mike's GitHub account he is based in Bratislava, Slovakia. If you google his name some more you can see he was an American who renounced his citizenship, and now has to deal with the trouble of not having a passport and the consequences that brings such as he says "he was once detained by Slovak police outside a bar, beaten and had no one to turn to for consular help." So I'm guessing if a government wanted to force him to reveal who his customers are, it wouldn't be that hard for them to beat it out of him.


Legal question regarding rippling balances between Ripple gateways

In the U.S., FinCEN has specific rules regarding money transmitter laws for those providing money services.  Users who simply patronize a money service are almost never considered money transmitters or providers of a money service.  So, in your example, the answer is likely to be no -- no, a withdrawal from one service and a deposit to another would not likely cause you to need to report the transaction to the government.

As far as taxes, that too is jurisdiction-specific.  In the U.S., capital gains taxes may apply however in your example there was no gain so there would then likely be no need to report the transaction on the tax forms.

Disclosure: I am not a tax advisor.


Who managed bitcoin and ethereum decision making? Who approves Bitcoin upgrades and forks?

You pose several interesting questions regarding the centralization of the governance and development of Bitcoin and Ethereum.

You accurately mentioned that decision making is done by miners and developers. There are some centralized repositories where the development of Bitcoin and Ethereum takes place. However, nothing prevents a developer from independently forking the code and adding their own changes which are not approved by the maintainers of the main git repository.

Who has the final say on the approval of a change to code? A change in the code is approved by the maintainers of the respective repository. These changes are reviewed, approved and merged by developers, not miners. However, even if a change is merged in the main repository, this does not mean that a miner will necessarily adopt it. If the repository maintainers approve a code modification that is undesirable, then some independent party observing the code changes (there are many who are looking at the pull requests and merges into the Bitcoin and Ethereum repositories) who does not have the ability to approve, disapprove, or merge code, will point out the problem in public forums. If an important problem is pointed out, it is possible that miners will not update their software. If miners choose not to update their software, the update will not take place, regardless of whether it is merged into the main repository.

Is there a consortium or a foundation that has the final say? While there are various foundations associated with Bitcoin and Ethereum, it is not possible that an individual or a group of individuals, solely based on their identity, will have the final say on any decision regarding code or process of a blockchain. The reason is that this would make the blockchain a centralized system. Instead, changes proposed must be accepted by miners. If a miner approves of a change, they will download the new code and run it; if not, they will remain in the older version.

A miner can always choose to run an alternative version of the software not approved by the main repository maintainers or foundations. That way, if the maintainers of the main repository are asked to put in a backdoor and someone detects this, it will not be possible to infiltrate the bitcoin network, as the miners will refuse to upgrade. A similar situation holds for changes that are economically undesirable to miners.

If a portion of the miners agree with a software upgrade, but another portion of the miners does not, then a fork will be caused. If the upgrade is soft-fork-compatible and the miners who do not upgrade are a minority, then they will be "carried over" to the blockchain produced by the majority who have upgraded, causing a "soft fork". This will force them to upgrade their node or risk losing their profits. If the upgrade is a hard fork, then the chain will be split into two, regardless of whether the majority upgrades. The minority will maintain their own chain. This is what happened between Bitcoin and Bitcoin Cash, where the change of block size increase was not approved by the majority, but constituted a hard fork change. The decision of which code version survives is hence up to the adoption policy of miners.

More details about the different forks are described in the paper "A Wild Velvet Fork Appears", which appeared in Financial Crypto '18.

Why does a website show the progress of voting on a particular blockchain fork? This display is purely informational and does not affect the decision. Decisions to upgrade or not are indicated on the blockchain by miners. These decisions are advertised through a "signaling" mechanism by which miners include their vote in their coinbase transaction, the transaction which pays them their profits. Because that transaction is verified by proof-of-work, it is impossible to fake - the miner that created that block really did signal their decision. Miners observe the signaling by other miners to decide whether they will upgrade.

For example, an activation period can be allocated by the developers during which miners can vote, by including their signal in their coinbase transaction, to indicate their preference. During this activation period, the feature is not activated. If a minimum threshold of signaling is indicated during the activation period, such as 90% of blocks, miners agree that they will adopt the new feature. This helps avoid soft forks where the majority has not upgraded. As long as most miners signal truthfully, this mechanism works. Signaling does not require developer or foundation approval and the adoption of a feature is not based on observing the statistics off of a website.

Despite the above, in practice, a lot of development relies on a few individuals who are major contributors. The fact that few people are involved in the actual development is studied in the paper "Egalitarian Society or Benevolent Dictatorship:
The State of Cryptocurrency Governance" by Azouvi, Maller and Meiklejohn which appeared in Financial Crypto '18.

To conclude, there are no individuals or foundations which have the final say on which feature will be included. Governance is performed in a decentralized manner in which software adoption by miners indicates which protocol will be followed.


How to upgrade Bitcoin Core from 0.18 to 0.20 on Ubuntu 18.04?

This is how I usually do it. Check the wget links in https://bitcoincore.org/bin

# Download Bitcoin Core packages for Ubuntu

wget https://bitcoincore.org/bin/bitcoin-core-0.20.0/bitcoin-0.20.0-x86_64-linux-gnu.tar.gz

# check the checksum and fingerprint //optional
wget https://bitcoincore.org/bin/bitcoin-core-0.20.0/SHA256SUMS.asc
wget https://bitcoin.org/laanwj-releases.asc
sha256sum --check SHA256SUMS.asc --ignore-missing
    >expected: xxx.tar.gz: OK
gpg --import ./laanwj-releases.asc
gpg --refresh-keys
gpg --verify SHA256SUMS.asc
    >expected: Good signature from "Wladimir J. van der Laan ..."

# extract, install and check versions of the binaries
tar -xvf bitcoin-0.20.0-x86_64-linux-gnu.tar.gz
sudo install -m 0755 -o root -t /usr/local/bin bitcoin-0.20.0/bin/*
bitcoind --version
    >expected: Bitcoin Core version x0.20.0


How to realistically mitigate miner heat

When people speak of electricity costs of mining, they are not just referring to the miner, itself.  They are also talking about the cost of cooling the miners.

Anyone who has worked in a datacenter knows that cooling is a major cost, if not the main cost.  This is why large scale datacenters are often built next to water sources; to cool the servers.  If you are running a miner, you need to keep the ambient temperature cool (air conditioning), and perhaps have heatsinks and water cooling systems on the miner, itself.

The cost of cooling a mining rig may make mining unprofitable, depending on the issue ambient temperature.


How Segwit makes transactions smaller? What about the witness?

SegWit doesn't save space, per se.

What it does do is:

From the perspective of a non-upgraded node, it makes transactions seem smaller. The witness part is not recognized or considered by pre-fork nodes, so more of them can fit in a block.
From the perspective of an upgraded node, the block size is calculated differently. Less weight is assigned to witness data than to non-witness data. So for the purpose of the calculation, a SegWit transaction is considered lighter than a non-SegWit transaction. So more of them are allowed per block - but the physical data size of the block increases as a result.

SegWit was to be introduced anyway because it solves malleability etc. But it also offered an opportunity to increase the block size limit (to allow more transactions) without requiring a hard fork, and this opportunity was seized, resulting in the feature described above.


How to do sendRawTransaction to bitcoind JSON-RPC using bitcoin-core package in nodejs

The way you pass parameters is wrong. I use the code below, got the right answer:

const Client = require('bitcoin-core');
const client = new Client({username: 'admin', password: 'password', network: 'testnet'})

const txHex = '0200000001999539009d0d02f2332d257716faa75cc4c9a8318c153ba6a084c719fa33103b000000006a4730440220032470b6b45825fc37d08e1985c7ad2044272edacfa2c76cf49c6b70c09a0dac02202466ede3e660c6d57f65b7ed21f2c1f778116ef92bef9ed2f9b18fcb1881a7b9012103b91ff254ae3bb3861e4a6c16ab356d6c52ccfd2b58bedf0dda84657dfd9d9afcffffffff0130750000000000001976a914ba05ece7632d78336848214b525cfdbd1c4b06a188ac00000000'

client.sendRawTransaction(txHex, (error, response) => {
  if (error) console.log(error);
  console.log(response);
});


I can't send a transaction from electrums cli


What are the pitfalls of repurposing the nLocktime field for backward compatability in eltoo?

I was hoping somebody else would answer this, since I am the author of eltoo, I would have preferred an independent answer.

To recap: the locktime is used in eltoo to enable a numeric comparison between an element on the stack (state number) and a value that the signature commits to. The reason we can't simply push a number on the stack ourselves is that this push would happen in the redeemScript, which cannot be committed in the signature, since it contains the signature. OP_CLTV combines the push, comparison and verification in one opcode:

  Marks transaction as invalid if the top stack item is greater than the transaction's nLockTime field, otherwise script evaluation continues as though an OP_NOP was executed.

To your question about it being safe: OP_CLTV is the only opcode that ever touches the nLocktime (intended to be used in the scriptPubkey), and the only other use is to mark a transaction as invalid until a certain height. Both usecases only specify what happens with future blockheights and timestamps, and do not have any effect if the nLocktime is in the past.

Therefore eltoo's use of the nLocktime field and OP_CLTV is technically not a repurposing, rather it makes use of the existing semantics.

Of course I can't foresee if there is any future proposal that might want to repurpose past blockheights and timestamps, but I'm not aware of any, and searching the BIPs doesn't return any conflicting results. It'd also be very unsafe redefine its semantics for timestamps that were plausible in the blockchain, leaving us a few million unique timestamps even if we only consider 2009-01-03 - today.


Is there a wallet for different cryptocurrencies

You can use UFASoft Coin. Which is a multi currency client and miner. Also it's open source.

The supported currencies are.

Bitcoin - BTC
Bitcoin-testnet
Namecoin - NMC
Litecoin - LTC
PPCoin - PPC
NovaCoin - NVC
TerraCoin - TRC

This will essentially keep all your wallets in one application, so no more have 6 different wallets and clients. Then forgetting to start certain ones.

Just a side note regarding the performance of mining directly from the program: I have found it to be slower, around 10-30% slower than other miners.


Where can I get a list of command options for bitcoind and primcoind?

bitcoind help lists the RPC commands. listaccounts is a RPC command. bitcoind --help lists the commandline options to the program itself.

EDIT:
You can also use bitcoind help [RPC command] for a brief description.


Difference between Bitcoin versions 0.1 and 0.2

If you're interested in a list of changes to Bitcoin, look at these sources:

0.3.21 - current: https://bitcoin.org/en/version-history
0.1.0 - 0.3.20: https://en.bitcoin.it/wiki/Bitcoind#History_of_official_bitcoind_.28and_predecessor.29_releases
(Click on the reference to see the announcment/changelog.)

Good luck with your project!


Is there time-to-failure data available for any of the BFL products?

It has now been confirmed by ngzhang that BFL is using Altera Stratix III EP3SL150 FPGAs in their singles. Since Altera has made product reliability data available, we now at least have the appropriate info available for the chips themselves.

The EP3SL150 testing gives it a FIT rating of 15.1 which corresponds to roughly one failure per 66,226,166 hours or ~7,555 years. I don't think we need to worry about the FPGA being the point of failure.

That said, we have precisely zero data about the other parts or failure rates thereof nor do we know how often BFL messes up on their soldering, power supplies or any of the other links in the chain that could contribute to the overall failure rate of the BFL single. I did, however, email BFL and recently received this email from Nasser G at BFL:

  Dear David,

  No Failure data is available. So far, none of our units have failed,
  and all units go under strict quality control measures before they are
  shipped. We've had like 4 or 5 PSU failures among all the units that
  we've shipped.

Of course this is from BFL's mouth so whether it's entirely true or just marketing I can't say with certainty. Lacking data on the overall number of units sold or how long those units have been running (though we could estimate that as 24/7 since they've arrived if we had the other data) it's very difficult to estimate failure data based on BFL's comments, even if we assume them to be completely accurate.


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.


What is the difference between the two types of Blockchain.com wallet?

"Bitcoin Wallet" wallet on Blockchain.com is a "non-custodial" wallet -- this is probably what you want, and it'll let you send and receive Bitcoin to and from a wallet with a key that you own. You can import this key into other wallet software if you ever need to.
"Bitcoin Trading" wallet on Blockchain.com is a "custodial" wallet -- meaning it's a balance held on Blockchain.com, similar to a balance you might hold on any other exchange. If you want to buy or sell Bitcoin using Blockchain.com then you'll need to sign up for this, and it'll require you to upload identity verification documents.
To start mining Bitcoin you will need to purchase an ASIC. To mine Ethereum you'll need at least a recent high-end GPU, software such as Ethminer (https://github.com/ethereum-mining/ethminer/releases), and to join a mining pool.


It's certainly possible, there's nothing stopping you from doing so. You can easily manage mining hardware remotely with SSH. You can even leave the hardware unattended, but you might have some problems if there are issues that you have to actually start/stop the machines or deal with physical issues.

An option for remote management is colocation. With colocation, you let someone else manage your hardware and be physically on location with it. The hardware is anaged with other people's miners as well (hence the "co" part). Some colocation services will also allow you to remotely manage the hardware through SSH too and the people on location only deal with physical issues.


Will upgrading to a new version of Bitcoin Core leave my wallet intact?

In the case that you mean "install" instead of download: Yes, it should not interfere with the wallet.dat at all, and the new version of Bitcoin Core will continue to work with it.

Regardless of your updating the software, you should have at least one backup of your wallet.dat. If you don't, create some now. Preferably before the software update. Be sure that Bitcoin Core is not running when you copy the wallet.dat.
Be sure to close Bitcoin Core before installing the new version.


Is there an OS X desktop client for BlockChain.info?

There is a chrome extension that can operate offline.

https://chrome.google.com/webstore/detail/my-wallet/djjkppdfofjnpcbnkkangbhanjdnoocd?utm_source=chrome-ntp-icon


The Stellar network does not have a mining-based currency. At the network's genesis, 100 billion stellars were created. The only other stellar creation mechanism is inflation. To account for both economic growth and lost stellars, there is a fixed 1% annual rate of new stellar creation. These new stellars will be generated on a weekly basis and distributed via a direct voting method.

Mining in the Bitcoin network:
1) creates the currency
2)distribute the currency
3) verifies transactions across a distributed, decentralized system.

Stellar achieves the first by generating the stellars at genesis. Distribution of stellars is regulated by the Stellar Development Foundation, the nonprofit that supports the protocol. 95% of all the stellars are set to be distributed to as many people worldwide as possible through a series of giveaways specified in their mandate. Stellar achieves the third—decentralized agreement—with the Ripple Consensus Algorithm.
In future, Stellar plans to switch to a new consensus algorithm called Stellar Consensus Protocol (SCP). The technical details of SCP are detailed in a white paper by Stanford Professor David Mazieres.

One can acquire stellars by trading on an exchange, trading within the Stellar network, being a recipient of inflation voting, and/or through the Foundation's giveaway programs.


P2SH-P2WSH:

Witness script: OP_3 <public key1> <public key2> <public key3> OP_2 OP_CHECKMULTSIG
Witness program: SHA256(witness script)
redeemScript: OP_0 <witness program>
Script hash: Hash160(redeemScript)
scriptPubKey: OP_HASH160 <script hash> OP_EQUAL

P2SH-P2WPKH (I believe that's what you meant instead of "P2WSH-P2PKH"):

Witness program: Hash160(public key)
redeemScript: OP_0 <witness program>
Script hash: Hash160(redeemScript)
scriptPubKey: OP_HASH160 <script hash> OP_EQUAL

P2WSH-P2PKH (native P2WSH, but with a P2PKH script inside):

Witness script: OP_DUP OP_HASH160 <Hash160(pubkey)> OP_EQUALVERIFY OP_CHECKSIG
Witness program: SHA256(witness script)
scriptPubKey: OP_0 <witness program>

Note that you should use P2WPKH instead of this.

Native P2WPKH

Witness program: Hash160(public key)
scriptPubKey: OP_0 <witness program>

Native P2WSH

Witness script: OP_3 <public key1> <public key2> <public key3> OP_2 OP_CHECKMULTISIG
Witness program: SHA256(witness script)
scriptPubKey: OP_0 <witness program>


Benefits of bitcoin as national currency?

So, there may be some benefits to a country with a very troubled currency, but I don't think those benefits would outweigh the drawbacks right now.

Firstly, because the exchange rate of BTC is still too volatile. While an increasing exchange rate may seem like a benefit to us that have some BTC in our wallet, think about someone trying to price a service. Recently I saw a post on the bitcoin subreddit where a coffee shop started accepting BTC. Unfortunately, they had hard coded an exchange rate of 30USD to 1BTC. Resulting in outrageous pricing. Shops that have to change their prices every day is a sign of a troubled currency, even if it prices going down every day.

Secondly, I'm not sure we really have the infrastructure right now to have full commerce in BTC. It's too different than fiat currency. We're moving in that direction, but there just isn't the commerce and banking infrastructure that is built of the eccentricities of BTC. A more likely is a country "pegging" their currency to BTC. But even that is very unlikely, because it would mean that country would be abdicating its control of monetary policy. It's one thing to abdicate that responsibility when you peg your currency to a fairly stable currency like the Euro or the dollar, but pegging it to BTC would be quite the wild ride. The country would have to maintain massive reserves of both its currency and BTC to try to maintain the pegged ratio.

Which leads to my next point. Even though the BTC money supply is getting large, imagine the impact of even a small country moving to BTC. If I were a bank with even $5 billion in deposits that was suddenly mandated to carry my reserve in BTC, I would be in big trouble. That would mean a sudden order to purchase $500,000,000 BTC. The Bitcoin money supply may be getting larger, but there still isn't that kind of liquidity in the BTC exchanges yet.


brother -
you are transacting almost SIX BTCS with a measly fee of .0002

THAT is why its taking such a long time and will continue to take a long time


How to display USD and Bitcoin price on Classified ads?

If you want that cars could be paid by Bitcoin you need some payment gateway.

Otherwise, if you want just to display prices in Bitcoin you can use some blockchain.info API to get the price for it.
For example, this URL will return you how much is 5000 BTC:  https://blockchain.info/tobtc?currency=USD&value=5000


API for converting currency such as Euro/USD to BTC

See bitcoin-prices.js library for JavaScript (front end, no server-side components needed) that uses free bitcoinaverage.com API.


Why would someone use a BTC faucet if it pays 200 satoshi every 15 minutes?

There are a lot of reasons. First, you may simply want to test some functionality with some faucet coins. Second, you may think it's an excellent investment. Third, you may want to pay for some micro-transaction.


unconfirmed bitcoin transaction since last 10 days

Unfortunately you paid a very low fee 53.223 sat/B

And the transaction may never get any confirmations a very little chance

In this case the transaction will be cancelled after a period of time and return to original address.

The next time you create a transaction you need to look for current average fee which is now as an example 620 sat/B (Satoshi per byte).


Creating a Bitcoin online wallet service

should i use my MPK to generate infinite addresses, so after a user deposits into the address, a new address is automatically generated for that user.

Yes, that's an intended use of BIP32.

  and if the user deposits to the old address can It be traced?

Assuming you remember the derivation of the key, sure. But it would probably be simpler to just keep a list of every Bitcoin address you've ever shown to a user, and compare incoming transactions against that.

  Also how would the user be able to withdraw their balance in only their account?

There are two ways to implement this:

Keep coins from different customers with each other in one big wallet. Keep track of how much each customer has in a separate database.
Make each address belong to a customer, and make sure that customers can only sign transactions using their own keys.

#1 has some advantages, but #2 is generally easier to implement without shooting yourself in the foot.

  I don't want my priv key exposed. And how can the site fees be deducted from each transaction with out the user beign able to withdraw that as well, And how would i implement a escrow service for the site so the seller offers service and the buyer buys but the coins are stored until the buyer says release or my staff see that it should be released to the right person.

I suggest that you not give your private keys to your users, especially if you're using BIP32 or you've chosen approach #1 above. Instead, generate and sign the transactions yourself.

As for escrow or manually releasing funds, you control the private keys, so you can move the coins at will. (That's something that your customers might not appreciate, since it opens the possibility that you'll steal all of their money.)

  also how can I set up a multi-sig on the site for those users that choose to use it?

I assume you mean 2-of-3 multisig between you, the buyer, and the seller. I've not used it personally, but I've heard good things about BitPay's copay implementation.

  And am not the talented programmer making the site, so I am safe giving him my MPK? Or what is "safe" for me to give him?

The site as you've described it requires you to have the extended private key on your server, or somewhere that your server can access. And, no, that's not safe to give to someone that you don't trust.


If you want to send newly received Bitcoins from a wallet that is not yet synchronized you have two choices:

Wait until your incoming Bitcoin transaction has synced. Your wallet cannot send Bitcoins that it cannot yet determine it has received (because it has not yet synced to the block height were you received the BTC)
Import the keys of your receiving address or HD wallet into a wallet that has fully synced the blockchain or a light/SPV wallet

Please understand that you own any Bitcoin for which you control the private keys and that Bitcoin can be used with any wallet. However just because you own Bitcoin does not mean that you can spend it from a wallet that is not yet synchronized. When a wallet is not synchronized at least up to the point where an address you control has received the Bitcoin you are looking for, your wallet has no way to verify your ownership of that BTC.


Can gaming consoles be used as a Bitcoin mining platform?

When CPU mining was common gaming consoles did provide comparable performance.  There was some development work for xbox360 and PS3.  However roughly a year ago GPU mining hit bitcoin network rendering CPU miners obsolete almost overnight. Using unified shaders in modern GPUs and OpenCL programming language GPU miners could operate in parallel working on many hashes simultaneously.  Even the earliest crudest implementations vastly outperformed any CPU in terms of raw hashing power, hashing power per dollar, and hashing power per watt.  Since then refinement of OpenCL kernels have only widened that performance differential.  Currently there is no economic value in using CPU for mining Bitcoins.

Due to the emergence of GPU mining there are a couple issues that make mining with current gaming consoles futile.

Marketing aside gaming consoles are not that powerful.  Today a $69 AMD graphic card has more computing power than either the Xbox 360 or PS3.  Moore's law is a powerful force and gaming consoles which were start of the art in 2005 are pitifully weak compared to hardware available today.
As already discussed CPU mining is futile and unprofitable
The GPU in both consoles while powerful at one time are rather lackluster by todays standards.  They could provide low end hashing power except they lack unified shaders which makes programming them to do hashing impossible.

Consoles are not upgradable and that is both a benefit and detriment.  Right now we are at the tail end of ther current consoles lifecycle and it works against using consoles for computing power.  Since they can't be upgraded they are essentially $600 computers based on hardware available in 2005.  However at the begining of a console life cycle the hardware is rather powerful for the price point and they are routinely subsidized. At launch a $400 xbox 360 contained about $500 worth of hardware.

So to answer your question there is no benefit to mining on current gen consoles, however it may be possible that "next-gen" console would be viable hasing platforms at least for the first couple years (before their static hardware fall behind due to the continually effect of Moore's law).

However there are some requirements for a future console to be a viable hashing platform:

The Console has a GPU with unified shaders and good integer
performance.
The ability to access those shader either through API (Microsoft
XNA) or hacking/rooting console.
Powerful GPU relative to retail cost of the machine.

It remains to be seen if future consoles could be used for hashing but using current generation consoles for hashing is simply not economical.


Limited, but not fixed multisignature transactions, is that possible?

Restrictions on the btc value of a transaction cannot be enforced via a transaction script. The btc value is not a property accessible from a script.

I think it would be possible though to create a protocol on top of bitcoin which does have such properties.


Spending output of a low-fee transaction by following with higher-fee transaction

There are 3 cases.

Case 1a:
if Fee(Tx1) < Dust Fee then Tx1 gets dropped by nodes that do not offer Free Relay Policy. Then all other transaction dependent on the outputs of Tx1 will never be committed to the blockchain, even though descendent transactions may or may not be accepted into the mempool of a subset of nodes in the network.

Case 1b:
if Fee(Tx1) > Dust Fee && Fee(Tx1) < Recommended Tx Fee then Tx1 will be accepted by mempool but eventual commitment is at risk. In this case, It is possible to boost fee rate by contributing more transaction fees, as described by 2quick 4u using CPFP, where Tx2 will contain a higher transaction fee than Tx1, lifting the mean fee rate which includes the ancestor transaction, Tx1.

Case 2: if Fee(Tx1) > Dust Fee && Fee(Tx1) >= Recommended Tx Fee then Tx1 gets accepted by nodes. All dependent transactions dependent on the outputs of Tx1 should eventually be committed to the blockchain, so as long as the fee rate for the root and dependent transactions are competitively high enough to be selected and committed to the blockchain. The reason why should is bolded is because a competitive fee rate is constantly changing based on demand in the network. So one will expect the fee rate to be significantly higher when the network is busy and vice-versa. Furthermore, there is usually a 72 hour limit on pending transactions that are in the mempool. Once 72 has elapsed and a transaction has yet be committed, it will be dropped from the mempool.


Are there any other ways of speeding up the building of Bitcoin Core PRs other than ccache?

Will Clark answered this question on IRC.
You can reduce the time it takes to run ./configure by using ./configure -q -C. -q is quiet and -C removes terminal printing and uses a cache (like ccache). It reduced Will's configure time from 29 seconds to 10 seconds. For more details see this info page.


Except ETH (even that too have some level of changes) and Waves (and soon NEO and others in future), all the other type of crypto coins require some level of expertise before it can be added in the exchange.

Also, the more crypto coins added, the more possible pairs will be possible or required. Example, let a coin name be ABC, the possible pairs can start with just

ABC/BTC

Then with time and popularity and demand, the following can be required:

ABC/ETH

ABC/USDT

ABC/CNY and so on.

This puts more load on the server than the exchanges get back in fees. Also, some coins may have some technical problem often, which cost the exchange time and expertise to solve.

That is the main reason popular exchanges like Bittrex and others only list a limited ones (mainly due to server load). While less famous exchanges list almost all the crypto coins to get any kind of traffic they can get. If that particular exchange is the only one allowing that coin, then they will get the initial traffic.


I have mistakenly sent my LTC to (M) address instead of (3) address

Litecoin was having issues with users confusing Bitcoin and Litecoin addresses. To that end, they introduced a new address format for Pay-to-Script-Hash (P2SH) addresses. This new address format encodes the address with an M prefix rather than the original 3 prefix which is also used by Bitcoin's P2SH address format.

As any underlying address can be expressed in either address format, each address with an M prefix has an equivalent address with a 3 prefix. They simply are two different encodings of the same P2SH address.

Check out the address in question on the CryptoId block explorer for example:

When you search the address in question on this block explorer, you should be able to see both the M address that you meant to send to as well as the 3 address that your address now changed to, just like for the random example in the image.
 A transaction output will arrive in the same wallet with either of these two addresses given as destination.


Can you transfer Bitcoins from one address to another address directly without going through the web?

Yes, the simplest example is that you could create a paper wallet, send coins to that wallet, and give the paper wallet to your nephew.

In this sense, the paper wallet act similar to a bearer bond. Whomever holds it, has access to the coins. The caveat is that your nephew has to trust that you don't spend the coins (since you have seen the private key).


Where can I get all historical trades BTC price data?

http://api.bitcoincharts.com/v1/csv/

Each of these files have every trade executed on the given exchange (except the last 15 minutes or so).


It will, one day, reach 0, which mean mining wont be possible anymore (or it wont just be worth it). and by 0, I mean it could be 0.000001.

But if you look at it in a mathematical way, it should never end. Try that with a calculator, the number becomes really small.

The Bitcoin network is made so there will be a limited number of coins available and they have to be generated at a predictable rate, thats also why there is a difficulty on the mining


What are the differences between the various MTPs in Bitcoin?

There is only a single concept of Median Time Past (MTP) in Bitcoin, the median time of a block and the 10 blocks preceding it on the same block chain.  MTP has always been used in Bitcoin as part of the rules nodes use to determine whether a block has a valid nTime field in its header.  Those rules are:

The nTime of a block must be greater than the MTP of its parent block.  E.g., if the MTP of a block is 1618782748 (the actual MTP of the most recent block as I write this), then the nTime of the next block must be 1618782748 + 1.

The nTime of a block in UTC must not be more than two hours in the future according to the UTC clock on the computer of the local node.

These two rules allow the Bitcoin Protocol, which has no direct way to determine the time, to bound the range of allowed times.  That's important, because the times provided in block headers are used to calculate difficulty adjustments that try to keep average block production at roughly one block every ten minutes.  This use of MTP has existed since Bitcoin 0.1.  (Those rules alone haven proven to be good enough so far, but at least one additional rule is needed to prevent miners from significantly manipulating difficulty; see the time warp attack for details about the problem and the proposed Consensus Cleanup soft fork for a solution.)
MTP has the useful property that it is monotonically increasing---it only goes up, never down (assuming no block chain reorgs).  BIP9 takes advantage of this property to avoid having to deal with cases where time moves backwards.
MTP also has the useful property that it's out of the control of a miner creating a single block (they can, at most, choose between two possible options whose precise values were set by previous miners).  BIP113 takes advantage of this property to eliminate an incentive problem related to timelocked transactions where miners would always be encouraged to mine blocks almost two hours in the future.  That wouldn't be a major problem, but it was nice to allow miners to continue reporting accurate times for their blocks according to their own clocks.
In summary, Bitcoin doesn't have three different MTPs---it has one monotonic clock that is used in three different contexts.


static const int64 MAX_MONEY = 1000 * COIN;  //coin limit

Maximum amount (in satoshi) allowed anywhere (in the whole network). COIN is equal to 10^8
This is NOT the total amount of coins which your software is going to produce.

static const int COINBASE_MATURITY = 2;

Coinbase transactions cannot be spent before this number of confirms (i.e. 2)


I wouldn't suggest to mine with your laptop further more I wouldn't mine with a CPU any more. Your laptop can damage quite fast, because mining is very hardware intensive and it can overheat your components. After some time they will get damaged because they are not build to hold that power over a long period of time.

Your hashrate is quite low. With litecoins you are not going to come very far. You better use a graphics card (GPU) to mine litecoins or if you can't afford one, switch to another coin. See the links below for other coins and hardware comparison.

Cryptocoins
Mining hardware comparison


Do we know enough about Casascius to trust their physical coins in the long run?

wrt the suggestion that I put up a website with the name and address of the founder, this information has consistently been displayed on the home page since I put up the site. Agreed, there exists a theoretical possibility that I could scam and there is little anybody can do about that, even if my processes were to be audited, it's still impossible to know I didn't keep a copy somewhere at some moment someone wasn't looking.  On the other hand, I am known to care about the success of Bitcoin, and own a fairly successful payroll software business independent of Bitcoins, and (especially with my signed list of addresses) have the means to be held accountable and be ordered to pay restitution in the event of fraud. If this is unsatisfactory, then of course you should not buy the coins. I indeed hope I spur successful competition (my life career is not in making coins), this has been a neat project thus far.


How is the P2SH address obtained in decodescript

So, a P2SH scriptPubKey looks like this:

OP_HASH160 <20 byte script hash> OP_EQUAL

Serialized, in hex, that looks like:

17a9140000000000000000000000000000000000000087

^ ScriptPubkey len
  ^ OP_HASH160
    ^ Data element len
      ^ Data element
                                            ^ OP_EQUAL

where the zeros can be any byte.

How does that transform into an address starting with 3? You transform it the same way you would a normal Bitcoin address, but with a different version byte. Instead of 00, you would use 05.

See also the P2SH address specification.


Bitcoin wallet/address balance confusion

Your Bitcoin wallet can have more then 1 address. In fact the Satoshi client (Bitcoin-Qt) creates 100 addresses from the start.
Both 1HvxJibwAAyVqcNY5GVUWvHSwgYybpRGTp and 1EHYT8dFMcDVnkkE9kEoH5T3PBb3bRZdmP belong to your wallet and thus the total balance you see it correct.
Now to why this did happen.
Your wallet received 2 BTC. When you sent 0.01 BTC to Satoshidice "input" the previous mentioned 2 BTC where used as "output" and had to be spent in its entirety. Because the output was bigger then the input the Bitcoin client sent the difference to a new address, which also belongs to you.
In our daily life this is known as change money.
You can read about this in detail on the official wiki: https://en.bitcoin.it/wiki/Change


How to be sure that whole of block chain downloaded?

You can either do a sanity check as also suggested in Anonymous' answer: The age of the last block shouldn't be more than a few minutes old (depending on the coin protocol), usually not more than twice the aimed .

The other option is to compare the id of the last block against one or several well connected websites which respectively would be your coin's blockexplorer.com or blockchain.info. If that website's latest block has the same block id as yours, it is reasonable to assume that you are up to date.


Not directly.  You'd first have to convert your RSA private key into an secp256k1 ECDSA private key (a 256 bit value between 0x1 and 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140).  You could do this by using a SHA256 hash of your RSA private key as your ECDSA private key.  Then you could import that hash (as a number) into a Bitcoin program that allows importing private keys.

However, I strongly recommend against this.  Use your RSA key for the things it was designed for.  Use a Bitcoin program for generating new Bitcoin private keys.  Haphazardly mixing different crypto together almost always reduces your security.


Transaction Malleability, if i want to change signature, what part should I change, so that it would remain valid?

A signature consists of two numbers r and s. You can change s with N - s (N is the elliptic curve order) and it would still be valid.

Sources of malleability are documented here https://github.com/bitcoin/bips/blob/master/bip-0062.mediawiki#motivation


Multisig address with a specific required signature

redeem:

<pubkey3> OP_CHECKSIGVERIFY OP_1 <pubkey1> <pubkey2> OP_2 OP_CHECKMULTISIG

scriptSig:

OP_FALSE <sig1> <sig3> <redeem>

or

OP_FALSE <sig2> <sig3> <redeem>


Any way to accelerate transaction for a random cryptocurrency?

A bigger amount to the miners won't make them mine the block faster. It will only increase your chances to be in the next block AKA have your transaction confirmed faster.

In short the answer is no, the sender has no control when the next block will be mined, nor can they influence that with higher fees on their transaction.

"Miners" try to solve a mathematic problem using their collective computing power / hashrate.

A higher amount of fees doesn't drive the hashpower up, so it seems logic that the speed of "finding" a new hash / creating a new block doesn't increase.


Does the private key of Bitcoin change everytime the address changes?

If you are posting different questions I suggest, posting them up in different threads. But I'll try to answer all of them.

1) It doesn't work like that. Every address is a pair (private key, public key), the address is made after hashing the public key twice.

So, each address has one private key and private keys are not shared.

So if in one address you have 1 btc, and you want to send 0.5 btc to some other address, usually the wallet software creates a new address that receives the difference minus the tx fee, that's your change address and any further transaction that spends the funds will spend from that address (the change address).

To clarify, address A has 1 btc. You want to send 0.5 btc to some address B.

What happens is, the balance of address A is fully spent into

B          (0.5)    <--- amount you want to spend
C          (0.4999) <--- amount you are left with after spending
fee        (0.0001) <--- transaction fee on spending B
A (total)  (1)      <--- original balance. fully spent

C is your change address, and when you spend your coins again you will spend from C and not from A.

2) The Public Key is obtained with one method related to how the way ECDSA works and the address is obtained by another method, mainly it is double hash of the public key that is encoded in a format called base58check as it includes a checksum to ensure that you didn't type the wrong address, also base 58 is designed to eliminate similarly looking characters, like 0 and O or l and I.

3) For the last question I'd like to refer you to How are bitcoins reassigned


Blockchain by structure is a decentralised, distributed and public digital ledger that is used to record transactions across many computers, As blockchain is public everyone is able to see the blockchain content.

Your analysis could be my analysis and I will be able to separate IBM from Google..

You can't separate them if you don't know them. But with cryptography world
nothing impossible, i'm pretty sure someone with a "Big" cup of coffee will be able do it. But i'm talking about blockchain structure not programming skills.


What is needed to create a pool with merged mining?

You will need to be running the standard client with some special configuration - server=1 along with rpcuser and rpcpassword set. After that, you need to build your pool server to communicate with it through Bitcoin API and handle everything else. Last part is not too Bitcoin-specific and will consume a lot of your development time (I would know, I tried it ;) ).


Is it possible to get bitcoin-cli without having to build all bitcoin source?

Yes. Go to Bitcoin-Qt -> Help -> Debug Window.

Help -> Command Line Options gives a list of all options.


Perhaps you can use the Python library CCXT:

https://github.com/kroitor/ccxt

It offers an homogeneous interface for accessing market data at different exchanges like Kraken, Coinbase, Bitstamp, etc...


Bitcoind could not locate RPC credentials but rpcuser and password are set

I found I had to copy the contents of ~/.bitcoin/bitcoin.conf into /etc/bitcoin/bitcoin.conf because that's what's being used when bitcoind starts on boot up. I put my user and password in that file, rebooted, and bitcoin-cli worked again.

Also try adding

bitcoin-cli -stdinrpcpass getblockchaininfo -rpcuser user -rpcpassword password


No, it's a proved scam, and they use misleading promotion to associate it with Bitcoin. If you google them, you'll find out that they are accused of scamming and are under investigation by authorities. That project is not related to Bitcoin at all.


How to securly move bitcoins from a wallet.dat file to a paper wallet?

You have correctly answered your own question in the list following "The secure way should probably be something like [...]". You could skip step one by using the command-line API to the bitcoind client you presumably already have installed and used to generate the wallet.dat in the first place, but this is very tedious as you may have to manually list all the inputs to include in the transaction in a createrawtransaction API call, and then echo the output back into a signrawtransaction API call, before getting the signed transaction for step 3. If you want to investigate this route, check the API Calls List.


Why can't the block size upgrade be trialed on testnet with an organised "stress test"

There are a number of more complex alternatives under discussion which involve more elastic limits (instead of the hard limit which currently exists), automatically adjusted limits based on some metric in the blockchain, or some combination of both.

More complex alternatives mean more complex code and more potential for bugs. They certainly could and should be tested on testnet.

With the "just raise the hard limit" option (and even with some of the other alternatives), most metrics you could glean from a testnet test aren't very interesting and are already easy to calculate. E.g., it's easy to understand what the worst case bandwidth, CPU, and disk space requirements are, and it's not too difficult to simulate (without testnet) how added block propagation time will (or will not) affect miner efficiency.

It's the external effects which are causing most of the controversy, e.g.:

Will the additional requirements drive more people away from running full nodes, increasing centralization?
Will Moore's Law, Nielsen's Law, and the current Kryder Rate continue into the future, and will they help to improve decentralization despite larger blocks?
Will a "don't do anything until it's an emergency" approach drive people away from Bitcoin when tx confirmation times begin to significantly increase (and Bitcoin Core nodes begin crashing)? Or will tx space scarcity simply cause tx fees to gradually increase (which will also drive users away if they increase too much, increasing centralization)?
What effect will the blocksize limit have in the future (e.g. on tx fees) as the block subsidy decreases?

I'm not trying to list all of the controversial questions/issues (I doubt I even know them), only to demonstrate that there are far more which can't be answered by testnet than can.


How to send bitcoins without the bitcoin client in PHP

You will need to connect to a bitcoin node in one way or another to broardcast to the newtork.  There are a number of php and bitcoin open source repos that will do this, have a look here https://github.com/search?q=bitcoind+php&ref=cmdform

Another option if you do not want to run the bitcoin client locally is to connect to an api to broadcast your transaction.

An example I found for php connecting to blockchain.info is as follows

<?php

$guid="GUID_HERE";
$firstpassword="PASSWORD_HERE";
$secondpassword="PASSWORD_HERE";
$amounta = "10000000";
$amountb = "400000";
$addressa = "1A8JiWcwvpY7tAopUkSnGuEYHmzGYfZPiq";
$addressb = "1ExD2je6UNxL5oSu6iPUhn9Ta7UrN8bjBy";
$recipients = urlencode('{
              "'.$addressa.'": '.$amounta.',
              "'.$addressb.'": '.$amountb.'
           }');

$json_url = "http://blockchain.info/merchant/$guid/sendmany?password=$firstpassword&second_password=$secondpassword&recipients=$recipients";

$json_data = file_get_contents($json_url);

$json_feed = json_decode($json_data);

$message = $json_feed->message;
$txid = $json_feed->tx_hash;

?>

Hope this helps

UPDATE: To run requests to the blockchain.info API you need to follow the setup instructions here https://www.blockchain.com/api/blockchain_wallet_api

NOTE To use this API, you will need to run small local service which be responsible for managing your Blockchain Wallet. Your application interacts with this service locally via HTTP API calls. Click here for complete setup instructions on GitHub.


How to determine EUR (or USD) price from Poloniex Ticker?

BTC_ETH is the exchange information between Bitcoin and Ethereum. In your example, 1 Ether buys about 8% of a Bitcoin.

The volume is given in both BTC and ETH terms.
baseVolume says 2206 BTC have been traded against ETH (last 24h I think)
quoteVolume says 28000 ETH have been traded against BTC

If you want a price in USD you can check the BTC_TUSD ticker, as the Tether-USD price is similar to the real USD price.


How does hyperledger fabric handle random number generation?

Hyperledger fabric works in the order of Execute Order and Validate.So Execution steps is done in Endorser so execution is done with endorsement policy which is defined and it also removes randomization to avoid statelessness.

Next the Ordering of transaction is done with the help of Orderer.

Finally Validation is done with the committer to avoid double spending.This is basically to check the integrity of the transaction.


Trust must be public because other people can use it. I agree, this can be awkward.

I don't see community/private credit as a major use case for Ripple in the short term because of issues just like this. But I hope that in the future, and maybe even with changes in social conventions, this may change the way people think about money.

Look at how transparent people are now on Facebook. They publicly friend people and defriend them. So it could happen.


transaction broadcasts, declining node count, mining basics and costs.

When making a transaction, it is always broadcast on the entire p2p network. Either from the node your wallet is running on, or from the connected node, in case of a light wallet (SPV).
Value is not connected to node count. Security only to a minimal degree. The decrease must  be a short term effect. In the long run, node count will increase with adoption.
In theory yes. In reality, you would point your miners to a pool, which will be running a node.
Unless you have to access to electricity at industrial rates, mining is not profitable any more. The profits you might make will be from BTC price appreciation, which you can also achieve by just buying and holding BTC.
You can calculate your rewards by the ratio of your equipmemts hashrate to the overall network hashrate. E.g. you have 1/100000 of the network's hashrate under your control, you can expect to mine 1/100000 of the block rewards, which will yield you 0.000125 BTC every 10 minutes.
Avoid cloud mining, as it is more profitable for the service provider than you. Often, those operations are even outright scams.


Who are the core developers behind Ripple?

Chris Larsen has been publicly identified as CEO of OpenCoin, the company behind the new Ripple. The core developers have been publicly identified as Jed McCaleb, Arthur Britto, Stefan Thomas, and me (David Schwartz).


Usually longest chain is selected as main chain.The other condition is if two users find two blocks at same time.The block which is approved by maximum nodes in the network will be considered and will be added to longest chain.And the other block is considered as orphan block and considered as forked chain.


Who takes the decisions of "hard-forks" in the Bitcoin community?

No-one decides literally for everyone. Miners make the decision to exploit one proposal rather than another one, so whenever miners disagree and don't follow one protocol to around 100% then a fork happens.

In this case (of B2X) it is the proposal of Segwit2x that will or will not be followed.


Is it possible to cancel an unconfirmed transaction?

Bitcoin-Qt doesn't support anything like that.

Theoretically:

A transaction is canceled by publishing a second transaction which double-spends some of the coins used in the first transaction (this can be a send-to-self). If the second transaction is included in a block before the first one, the first one becomes invalid and can be considered fully cancelled after the second transaction receives 6 confirmations. It's normally not easy to do this. Network nodes won't accept transactions which double-spend coins used in a transaction they already know about. However, nodes gradually forget about transactions if they don't get into blocks, so a transaction could be cancelled if it doesn't make it into a block after several days and both the sender and recipient stop rebroadcasting it.

Bitcoin used to have a feature called transaction replacement. A transaction could be marked as non-final, which prevented this transaction from getting into a block, but allowed the transaction to be cancelled at any time. Satoshi disabled this a while ago, though. Transactions can still be marked as non-final, but they can't be replaced.


How can you extract private keys from MultiBit HD?

WARNING: While this answer may be a solution to the issue in the question, it involves exposing your wallet seed to a tool on the internet. Please be very careful when doing this!

Can't add comments so extend Chris.J's answer:

Here are my notes on how to recover / rebuild / regenerate / extract ALL addresses and keys used by MultiBit HD:

Go to https://iancoleman.github.io/bip39/
In the field "BIP39 Mnemonic" fill in your 12 wallet generation words
No password
Code: Bitcoin
Under Derivation Path, select the BIP32 tab
Client: Custom derivation path
Derivation path FOR EXTERNAL (RECEIVING) ADDRESSES (copy paste this): m/0'/0
Your receiving addresses are now displayed at the end of the page.
Derivation path FOR INTERNAL (CHANGE) ADDRESSES (copy paste this): m/0'/1
Your change addresses are now displayed at the end of the page.
Absolute Happiness ;)

(solution found on:https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki in "Hierarchical Deterministic Wallets" picture)


Does Bitcoin Core support watch-only wallets?

It's possible if you use a fixed number of addresses. Take a look at https://www.reddit.com/r/Bitcoin/comments/5z35nm/watchonly_wallet_in_bitcoin_core_qt/


Is there a way to disable a blockchain validation?

It you just want to test your code with the Bitcoin Core RPC calls, you can use regtest mode by starting Bitcoin Core with -regtest. This mode sets up a private testing network so there is no need to sync the blockchain or connect to other peers unless you set up other peers to connect to. You can mine your own blocks in this mode too so blocks are produced when you want them.


Check Bitcoin address balance from blockchain

Perhaps you can look at the source code of full-mode bitcoin implementations in Java, such as bitsofproof (BOF).

It seems bitcoinj also has a full-mode but it is experimental only and not really suitable for prod.

Hope this helps...


Does miner with CPFP look through all the possible combinations of descendants to find the one with the highest fee?

If we run the getrawmempool true RPC, we can look at the data Bitcoin Core has for each of its mempool transactions.  Here's an example:

"3a0af489e500322159db85ad95174ffa3dd9924dbd0b68b041364a8c8eac03cc": {                                                                                "size": 226,                                                                                "fee": 0.00001130,                                                                                "modifiedfee": 0.00001130,                                                                                "time": 1507465582,
    "height": 488876,
    "descendantcount": 24,
    "descendantsize": 5412,
    "descendantfees": 27120,
    "ancestorcount": 2,
    "ancestorsize": 451,
    "ancestorfees": 2260,
    "depends": [
      "3da9c837b8560eadea2f8c48a050e9dd3f4d7637b5209bdf98c19175906529bb"
    ]
  },

Notice the ancestorsize and ancestorfees fields.  These represent the total byte size and fees for this transaction and all of its ancestors. It's then simple to divide the fee by the bytes and produce a sorted list to find which transaction pays the best feerate (fee per byte), including its ancestors.

Then the remaining transactions can have have their ancestor feerate recalculated by removing from consideration whichever transactions were added to the block proposal above, have those new feerates sorted, and find the new best feerate transaction including its ancestors.  Repeat this step until the block proposal has less remaining space than any of the transactions in the mempool.

Calculating these ancestor sizes and fees is pretty fast: you don't need to calculate the values for every ancestor, you just grab the values from your immediate ancestors (which already have all of their ancestors factored in) and then add the current transaction's values to that.

Also, to keep things fast, Bitcoin Core only looks at transaction chains of depth 25 or less.

For more information, this is the patch that added CPFP to Bitcoin Core.  It's relatively short and quite well commented.


The answer to this is yes, it will. Mining can be done on most turing-complete languages like Javascript. But the true question is how useful is a JavaScript miner. Not to mention Node.js is optimized towards asynchronicity, something which heavy math equations that mining requires aren't. Node.js isn't suitable for CPU heavy tasks but it flies when dealing with many requests at the same time. For this reason there aren't many miners built on Node.js/Javascript. A miner written in C++ is your best bet, such as CGMiner.


Do unsynced Bitcoin ABC nodes send Bitcoin transactions instead of Bitcoin Cash transactions?

The latest version of Bitcoin ABC that is released before UAHF happened, sends Bitcoin-style transactions if it is not synced.

Proof: https://github.com/Bitcoin-ABC/bitcoin-abc/commit/fda9dab6a9fba4a95aa2d9620f28b787efccf748

The current latest version always sends Bitcoin Cash transactions.

Proof: https://github.com/Bitcoin-ABC/bitcoin-abc/blob/master/src/wallet/wallet.cpp#L2966


Can't perform remote JSON RPC to my Bitcoin node (C#)

You'll need to specify an IP address to bind the RPC interface to. Since Bitcoin Core 0.18, it's not sufficient to have "rpcallowip=*", as it will by still default still only bind to localhost.

So add:

rpcbind=fakeip


There is a large difference between being able to produce the preimage for a single SHA256 hash for which you may know certain factors like length, character set, etc., and being able to break SHA256 as a whole.

Short inputs are naturally more vulnerable to brute forcing, which is why SHA256 is not a recommended hash for password storage - instead, hash functions that are deliberately designed to be slow and adjustable, such as bcrypt, are used where the input size may be small enough for practical brute forcing of hashes like SHA256.

In all applications of SHA256 in the Bitcoin Protocol, all the inputs are large enough to make a brute force attack impractical.


while amount > 0:
        amount_i = int(mtgox_depth['bids'][index]['amount_int'])
        price_i = int(mtgox_depth['bids'][index]['price_int'])
        if amount_i < amount:
            total_value += amount_i * price_i
            amount -= amount_i
        elif amount_i >= amount:
            total_value += amount * price_i
            amount = 0
        index -= 1
    spot = int(total_value / float(total_amount))
    return spot

Something like this, where mtgox_depth is a json object of https://mtgox.com/api/1/BTCUSD/depth?raw, should work for you.


What is the precise nonce finding protocol?

This mining simulator is a good visual of what is being hashed.

http://www.yogh.io/#mine:last

People are correct you don't have to change the Nonce it's just the fastest way to get a different hash output.  You could very well keep the nonce at 1 and change the timestamp, or the list of included transactions, which would change the merkelroot.

What's being hashed is version + previous block hash + merkel root + time + bits (target) + nonce.  This gets hashed twice sha256(sha256(blockheader))

The code and description here is pre
https://en.bitcoin.it/wiki/Block_hashing_algorithm


What is the reasoning behind the choice of 2^256-2^32-977 for the prime on the secp256k1 curve?

Secp256k1 was designed to be a 256-bit size elliptic curve without cofactor and admitting an efficient endomorphism for optimization purposes. The choices of the relevant parameters are derived from these criteria.

P is selected allow a more efficient implementation on general purpose computers. See Solinas' paper on Generalized Mersenne Numbers.  We don't know the exact search procedure Certicom used to select P, but it is the first prime you get if you search 2^256 - 2^32 - (1024 - x).

We know, however, that this may not be the exact procedure they would have needed because the presence of the endomorpism requires a cube root of unity. See this answer on crypto stack exchange.  But they could have searched this way and got lucky.

The generator could be just any point on the curve and it is trivial to prove that the choice of generator is irrelevant to the security of any scheme that doesn't involve coercing values into curvepoints, and pretty narrowly relevant otherwise.

We haven't been able to uncover how G was selected, but I did discover that it a value that was likely obtained by doubling a point with a very small (166 bit) x coordinate. The same value was used in several other ECC standards. (I wouldn't be surprised if it was the hash of someone's name of something silly like that, but it seems that this trivia might have followed Scott Vanstone to his grave).

Since the curve order is prime the order of G isn't a parameter so much as the result of the selection of the field and the curve equation. 'b' in the curve equation being 7 was almost certainly just because it was the first value that gives a secure curve. 'a' being 0 is a necessary condition for the endomorphism.

You might also find this old thread on bitcointalk interesting.


On multibit how do I update my sending address?

You can get the 'updates stopped' if MultiBit detects some other user or process has edited one of the MultiBit files.

If you close down MultiBit and restart it it reloads all files.

There is more help on if transactions don't appear in your wallet in the multibit.org help so also have a look through there.


I will prefix this answer with the statement "Don't use a web wallet", but since your question explicitly states you want to use one, i'll leave my ideals at the door.
(Side note: Coinbase lets you use their "vault" in multisig mode, where you control the private keys yourself. Withdrawals take 48 hours to confirm, so perhaps it isn't ideal for you, but consider solutions where you retain control of your keys. I am in no way affiliated with Coinbase, other than using their service myself.)
Usually most wallets have an "Export private keys" feature, and  an "import" feature included. Which wallets in particular are you using?
This question indicates the following steps for Bitcoin QT:

To export a private key from your Satoshi bitcoin-qt client:

launch your bitcoin client as usual and wait for it to load the blockchain and start up
click on 'help' in the menu bar (top right)
click on 'debug window'
select the 'console' tab
type: walletpassphrase "your walletpassphrase here" 600
type: dumpprivkey [your public key here]
this will return the private key, you can copy it now; ensure you clear your clipboard/history afterwards
type: walletlock

For MultiBit, This page describes the steps to export:

In the 'Wallets' side panel choose the wallet you want to export the private keys for.
Select the menu option 'Tools | Export Private Keys'. The 'Export Private Keys' screen appears.
By default, the private keys file is called the same as your wallet file, only with an extension 'key' rather than wallet. You can see this in the following screenshot: [redacted]
If you want to output the private key file to a different directory or filename click on the 'Export to. . .' button. A file chooser opens and you can select the file to save to.
It is strongly recommended that you password protect your private key export files. To do this, click on the 'Password protect export file' radio button.
Enter the password you want to use in the 'Password' field and then repeat the same password in the 'Repeat password' field. If they match you get a little green tick on the right hand side.
To output the private keys to the output file specified, click on the button 'Export private keys'. The private key file is written and a success message appears. If the export of the private key file fails for any reason the error message is given on screen.
After the export file is written, it is then verified by reading the file back in again and checking the keys in the file match the keys in the wallet. A verification message is given if this is successful.

If you can indicate which wallet you're using, I can add the steps for exporting to this post. Additionally, if you want to import into a new service, you will first need to determine whether your wallets are hierarchical deterministic (HD). If so, the "private keys" are in reality a single key, which is used (in effect) as a seed for the entire set of keys in your wallet (theoretically infinite). If your web wallet supports HD key imports, you're all set, otherwise you're going to need to figure out how to extract the private keys for each public key you used, and export those.


Why do we need CCoins in addition to CTransactions?

CCoins is an internal data structure, used to represented entries in the UTXO set while cached in memory (see CCoinsViewCache).

It is separate from CTransaction for efficiency and utility reasons. It lacks a vector for the output, saving space. It also has a much more efficient serialized form, allowing a more compact database on disk. Furthermore it has convenience methods that we wouldn't want in a base data type that's used everywhere. As CCoins is only used inside the consensus validation logic, it can be more specific.


How can I use hashrate distribution to make inferences about when a specific pool will find a block?

For example, if F2Pool has had 10% of the total mining hashrate for the past week, does it make sense to say that they will probably find 10% of the blocks moving forward?

Assuming that a lot of miners don't switch, yes.

"F2Pool has a 10% chance to find the next block in the next 10 minutes, and this approaches 100% after 10 blocks. Ie. F2Pool has a very good chance to find at least one block within the next 100 minutes."

You're asking two subtly different questions here.

Will I find the next block?
Will I find a block in the next ten minutes?

You could find the next block, eleven minutes from now. You could find a block in five minutes, building on a block that was discovered four minutes ago.
Will I find the next block?
This is pretty straightforward. If you have 10% of the hashrate, there's a probability of 0.1 that you will find it. If you have p proportion of the hashrate, there's a probability (1-(1-p)^n) that you will find a block in the next n blocks. For 10% hashrate, and 10 blocks, that's a chance of 65%. Far from a sure thing.
p = 0.1
Blocks  Probability of you getting a block
0       0.00000
1       0.10000
5       0.40951
10      0.65132
30      0.95761
50      0.99485
100     0.99997

Will I find a block in the next ten minutes?
Block discovery follows a poisson distribution. A poisson distribution represents a bunch of independent events, where one event happening has no effect on it happening in the future.
We want to know the odds of k blocks being found by anyone in a ten minute period, when there is an average of 1 block every ten minutes. Wikipedia already has a table for us:
k   P(k)
0   0.368
1   0.368
2   0.184
3   0.061
4   0.015
5   0.003
6   0.0005

But this isn't quite what we need - if ten blocks are found, there is a much better chance that one of them is ours than if one block is found. Multiply by expression above, and substitute k for n, and 0.1 (our proportion of hashrate) for p.
k   P(k)    P(k)*(1-(1-0.1)^k)
0   0.368   0.0000
1   0.368   0.0368
2   0.184   0.0350
3   0.061   0.0165
4   0.015   0.0052
5   0.003   0.0012
6   0.0005  0.0002
    Sum:    0.0949

Sum up the last column. We get a 9.49% chance, which is the chance that you will get at least one block in the next ten minutes if you have 10% of the hashrate. But, that doesn't mean that there's a 95% chance of having a block in ten minutes with 100% of the hashrate. It's not linear. If you have 100% of the hashrate:
k   P(k)    P(k)*(1-(1-1.0)^k)
0   0.368   0.0000
1   0.368   0.3680
2   0.184   0.1840
3   0.061   0.0610
4   0.015   0.0150
5   0.003   0.0030
6   0.0005  0.0005
    Sum:    0.6315

...then you have a 63.2% chance of having a block in the next ten minutes if you have all of the hashpower.
(Our calculations are low by about a twentieth of a percent, because we didn't consider cases like k=7. But I figure this is a good approximation.)


Dark wallet (https://github.com/darkwallet) is essentially inactive and was alphaware, never meant to be used for production use. It was a grand experiment. Its architectural integration vision with libbitcoin is shown here at this deprecated webpage.

Take a look at https://monero.stackexchange.com/questions/1500/what-is-a-stealth-address/1506#1506 to understand what a stealth address really is.  Funds sent to a stealth address will require scanning a blockchain for appropriate OP_RETURN address to complete Diffie-Hellman key exchages to calculate private keys. There will be different private keys for each transaction sent using a wallet that supports stealth transactions. The libbitcoin-server (bs) indexes stealth transactions, see https://github.com/libbitcoin/libbitcoin-server/wiki/How-to-Initialize. The libbitcoin-explorer (bx) also supports bs stealth interactions, see https://github.com/libbitcoin/libbitcoin-explorer/wiki/Stealth-Commands. Good luck.


How out of block chain transactions work, and is there any API for that?

Off-chain transactions are transactions on any system that's not the blockchain. Micropayment transactions, lightning network transactions and even coinbase-to-coinbase or changetip would count as off-chain transactions.

There are API's to the various services. Lightning network is not live yet and micropayment transactions still need settlement on the blockchain.


What is the cheapest way to acquire bitcoins?

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

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


Risks involved choosing my own seed mnemonic?

The BIP39 word list consists of 2048 words.

For a regular, 24 word mnemonic, you have: 2048^23 ways to arrange the non checksummed words. At 1 trillion combinations per second, this would take you  ≈ 3.3×10^46 times the age of the universe to compute, even before you bother checking the checksum options.

Now, let's say that out of these 2048 words, 500 are food items (this is an illustrative example, I haven't actually counted them). Now, your combinations are some combination of 22 items (possibly repeating) from those 500, plus a random word from the 2048.

This evaluates as 500^22 * 2048 * 21. At 1 trillion combinations per second, this would take you ≈ 2.4×10^46 times the age of the universe to compute. While this is still an extremely large number, it is still nearly 30% less than the initial case, which is a non-trivial loss of entropy.

Moreover, if an attacker is able to discover even a few words from your mnemonic (maybe a friend peaked at it while visiting, or you entered a fragment into a scammy wallet before catching on, or any number of other scenarios), your possible combinations go down extremely fast. Even a perceived small loss of entropy can mean the difference between being brute forceable after 6 known words and being brute forceable after 19 known words.

In 2019, with access to reliable entropy generation in nearly every device, it is simply not worth it to attempt to come up with convoluted schemes.


Blockchain Receive Payments API Not Working

Not an expert, but have I have an ecommerce site that relies on blockchain's API and the error log I have looked at seems to indicate that cloud flare is preventing the return of the info that I'm looking to populate my stores db (just checking balances, etc).

Are there error logs that you've looked at and do they confirm that cloud flare is not the issue?  Seems like it plagues everybody using their API for basic functions.


How to get all income transactions of an address?

Can I add address not owned by me to local account to achieve transactions by getreceivedbyaddress command?

No, bitcoind only keeps track of transactions related to your wallet, not all transactions. So to do this, you can add a specific address as a watch only address to your wallet if you don't have the private key, and then rescan to find relevant transactions for it, but that will usually take a while.


If btc change is supposed to be distributed to change addresses, can the distributed change be pooled and paid together in 1 new transaction?

a transaction has 1 source address

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

Here is an example of a transaction with 4 inputs.

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

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


Will I be losing my BTG by sending BTC to bitfinex

until the BTG fork is complete, sending bitcoin to a 3rd party might risk your access to BTG.

that said, sending anything to bitfinex might be a risk in itself, given that there is accusations public that bitfinex has no bank accounts and may be involved in multiple accounts of fraud.

always do your due diligence.
never trust random strangers (me included).


How do I get my Bit coin balance to restore on my new phone?

If you didn't make a backup, sorry you are out of luck you cannot get your Bitcoin back. It could be possible get to some information out of your old phone (like sd card or some other way of restoring info, but this completely depends on which kind of phone you had or how broken it is)

If you made a backup you have to restore it. This process depends on the used wallet app. I would recommend downloading the same wallet app as you used on your old phone, they are most of the time not compatible. Some apps tell you to write down a set of words when you create a wallet. You could use these words to restore your wallet. Some wallets need a file which you have to have in order to restore the backup.


Is there a Bitcoin wallet that has French language support?

The main bitcoin core client can be run in a foreign language.

Close the Bitcoin client and add this line:

lang=fr

On a line by itself to the end of the file:

C:\Users\YourUserName\AppData\Roaming\Bitcoin\bitcoin.conf

(Replace "YourUserName" with your windows user name.)

Now restart the Bitcoin client.  Done!


Can a Bitcoin miner process their own transactions for free?

A miner certainly can do that, and some miners do (well mining pools actually). Some mining pools like ViaBTC and BTC.com offer services where they will prioritize a transaction for you for a fee (paid out of band). There have also been many cases where a miner will make a transaction, pay a 0 fee, and mine the transaction themselves.

  So can you setup like 6 or more mining machines

The number of mining machines or nodes has nothing to do with this. You could do this with one machine and one node. However in order to actually profitably mine and have a chance of actually finding a block, you will need a large number of ASIC miners, much more than just 6 machines, more like something in the hundreds or even thousands of ASIC miners.


Why are 0.13.1 Core nodes connecting only to Witness (e.g. 0.13.1) nodes?

Bitcoin Core 0.13.1 preferentially maintains at least 4 outgoing peers that advertise NODE_WITNESS support to avoid being partitioned. You are not only connecting to these nodes, more than 4 outgoing peers is coincidental or caused by those being other peers you recently connected to.

  even though, according to bitnodes leaderboard, these nodes form a minority.

Bitnodes only shows peers with listening sockets available. There is an unknown, greater number of nodes in existence which do not listen on a public port and will not be part of that leaderboard, but will connect to you. The preferential peering is exacerbating that effect, but is completely necessary.


Blockchain transaction message length limit

This message exists only on blockchain.info site. It is not a part of bitcoin protocol. You should not think, that it will exists forever, because blockchain.info is  third-party-service

Point your view to a OP_RETURN output scripts. http://bitzuma.com/posts/op-return-and-the-future-of-bitcoin/


Your JSON String seems fine, however I suggest you use JSONObject library class .

In your getAccess() method, I think you are missing the param variable.

   String prehash = timestamp + method + path + param;


Is it possible to run electrum without QT on Ubuntu?

If you want to run a server, you should run ElectrumX. electrum-server is deprecated.


When is the bitcoin reward provided to the miner?

The reward is just a transaction which payers the miner, called a Coinbase transaction. Thus it only pays the miner if that transaction is in the accepted blockchain, i.e. if it was invalid or if another block was found first that block would not be included so the miner would not be paid. In fact coinbase transactions only mature after 100 blocks have been mined on top of them, to avoid miners spending coins straight away and then a reorg happens and the block becomes a fork


However, the paper is a high level overview of Bitcoin, and does not specify important parts of the protocol.

That's true, and Hal Finney noted this when the bitcoin paper was published to the metzdowd cryptography mailing list. (The Bitcoin paper was published before the Bitcoin source code.)

  Unfortunately I am having trouble fully understanding the system. The paper describes key concepts and some data structures, but does not clearly specify the various rules and verifications that the participants in the system would have to follow.

  Who specified the details of the Bitcoin protocol?

I'd say that Satoshi specified 95% of the Bitcoin protocol in the source code that was initially published. There have been changes made since then, but the majority of Bitcoin is unchanged.

  Which person or group is in charge of defining the standard of the protocol as of now?

Essentially, you make a Bitcoin Improvement Proposal. Here's a summary of the process:

Debate the issue in the community

  The BIP champion (a.k.a. Author) should first attempt to ascertain whether the idea is BIP-able. Posting to the bitcoin-development@lists.sourceforge.net mailing list (and maybe the Development&Technical Discussion forum) is the best way to go about this.

Write a draft of the BIP

  Once the champion has asked the Bitcoin community as to whether an idea has any chance of acceptance, a draft BIP should be presented to bitcoin-development@lists.sourceforge.net. This gives the author a chance to flesh out the draft BIP to make properly formatted, of high quality, and to address initial concerns about the proposal.

The BIP editor (Currently Gregory Maxwell) reviews it

  If the BIP editor approves, he will assign the BIP a number, label it as Standards Track, Informational, or Process, give it status "Draft", and add it to the git repository. The BIP editor will not unreasonably deny a BIP. Reasons for denying BIP status include duplication of effort, being technically unsound, not providing proper motivation or addressing backwards compatibility, or not in keeping with the Bitcoin philosophy.

  ...

  For a BIP to be accepted it must meet certain minimum criteria. It must be a clear and complete description of the proposed enhancement. The enhancement must represent a net improvement. The proposed implementation, if applicable, must be solid and must not complicate the protocol unduly.

Complete the reference implementation

  Once a BIP has been accepted, the reference implementation must be completed. When the reference implementation is complete and accepted by the community, the status will be changed to "Final".


Can a Bitcoin node send messages to a program on the same machine?

Yes and no.  Don't use 8332 for your custom client's communication port, that is the default rpcport.

You can run an arbitrary number of bitcoind instances on your machine, as long as they are given different -port= and -rpcport= arguments, and they can all communicate with each other (using -addnode=127.0.0.1:...port... or -connect=127.0.0.1:...port... ).


Websocket API: Uknown mtgox message type

try using socket.io-client

var io = require('socket.io-client');

then its as simple as

var socket = io.connect( 'https://socketio.mtgox.com/mtgox' );

and then to subscribe to a specific channel

var message = {
  "op": "subscribe",
  "channel": "24e67e0d-1cad-4cc0-9e7a-f8523ef460fe" // this is the market depth channel
};

socket.send(JSON.stringify(message));

socket.on('message', function(message) { console.log(message); });

should give you the results your looking for

I think your main problem is that your not using the channel id's in your connection message. Here is the Mtgox web sockets api which has a list of all the different channel id's. And heres a project which implements them generically.

Hope this helps


Which receiving address does my block reward go to when mining through bitcoind?

Apparently, bitcoind creates a new address for the block reward and puts it directly in your wallet.dat file.

I suppose it is stored in your default wallet, but as a new address.


Why does Bisq claim that my "native segwit" receive addresses are "invalid"?

Many clients have not been updated to recognize native segwit addresses, and are unable to deal with the bech32.

There should be no real downside to sending to a non-native-segwit address, besides some minor fee increase when you spend the coins.


Are Closed Prices just the last trade or are they averaged?

They are the endpoints. You can easily see that because in a bar chart, the bars always align with either the top or the bottom of the previous bar.


Bitcoin migrating to a ASIC resistant mining algorithm like RandomX used on Monero

The bitcoin community would have to decide that they don't particularly care about having significant security anymore. ASIC-resistance weakens the security of proof of work chains because it eliminates the need to invest in a chain in order to attack it.

Someone who owns lots of expensive ASICs will not want to let them be used to attack the chain they are mining because if they harm that chain, they will significantly reduce the value of their own ASICs. By contrast, if you can mine with commodity hardware, attacking the chain does not significantly reduce the value of your hardware, so you have no real incentive to prevent your hardware being used to attack the chain. Worse, commodity hardware is easy to rent or steal (with malware) to attack a chain.

So the entire bitcoin community without have to change their opinion on how to make a chain secure to a worse opinion.

It's also important to understand the security is a huge limiting factor on price. If the benefit from causing a double spend exceeds the cost of doing a double spend, there will be double spends. Nobody wants that. So market forces will act to keep the benefit of a double spend below the cost of a double spend.

ASIC-resistant algorithms have much lower cost to do double spends (because you don't need to invest in ASICs but can instead rent or hack commodity hardware) so the profit from a double spend must necessarily be much lower. That will mean either waiting for many more confirmations, dropping the price of bitcoin, or some of each. Who wants that?


Is it possible for there to be a virus in the blockchain?

I don't think it is possible in the way you are describing it.

Even if there was a smart contract which replicates itself and pays transactions and stuff. The thing is, a smart contract cannot act by itself. There has to be a user who initiates the actions. Then the smart contract could send a few transactions, but only within the block where the user started the actions of the smart contract. And as far as I know are smart contracts not able to pay gascosts, so the user itself has to pay for it.

Transactions which send other transactions are executed within the same block. So every action only lasts for one block and the initiating user would have to start the contract over and over again. Additionally there is a limit of executed gas within a block. So the smart contract could only send a few transactions before the block is full and will cancel all further transaction calls.

Besides this initiation issue, I cannot imagine a way how a smart contract could harm people by itself. Only if some other users would send money there, these funds might be lost. But it would be obviously stupid to do so.


How to get access to funds on keys that were derived using public key child derivation? BIP 32

if I take a private/public key pair, use CKDPub on the public and CKDPriv on the private, do they yield the same public keys?

For unhardened childs, yes.


I think you can't do that.. it's another type of wallet

https://community.coinbase.com/t/saving-all-bitcoins-on-usb-stick-so-they-are-safe-from-usg-confiscation/233/5 <-- there are some info as well..


Are there proposed hardfork changes that couldn't be made if the market was filled with ASIC miners?

As long as no changes are done to the structure of the block header, the ASICs should work just fine. There are some proposed changes that could alter it, like protecting the block chain against pre-mining, or adding a new field to the block header.

So yes, when the ASIC miners become the majority it will be hard to push those changes unless Bitcoin faces some serious issue that forces the change (for example, an attempt at a 51% attack).


Pre 0.10 versions synced inventories as it was the way they composed a list of blocks that they then recursively request from the peer. It provides multiple benefits over just asking for all blocks since timestamp x (where is the timestamp of the last block we had).

The biggest one being that it allows you to check the peer is on the same chain as the checkpoint you are using, this means you can check the peer is on the correct chain (eg the one your checkpoints state is correct) before downloading blocks, which are considerably larger than just hashes.


How does a client get the merkle branch of a transaction?

There is no way in the current P2P protocol to request a historical (=confirmed) transaction, without requesting the block it is in. Supporting that would require the peer to have a full index of all transactions ever, which isn't necessary for normal operation.

To request a transaction, you will either:

Use getdata MSG_TX <txid> to request a memory pool or recently relayed transaction. In this case, no block information exists.
Use getdata MSG_BLOCK <blkid> to request a full block, in which case you get the block with it, and need to check the full merkle tree anyway.
Use getdata MSG_FILTERED_BLOCK <blkid> to request a filtered block (see BIP37), in which case you can check the partial merkle tree to verify the transaction is indeed part of the block.


Yes there is. The bottleneck is I/O speed and normal HD drives are really slow. You can move the chainstate directory (around 3GB) to an SSD. If your laptop doesn't have an SSD you can use an SSD thumb drive.

There are instruction how to do that in the wiki. I did that using an usb stick SSD and the whole chain synced in a liitle less than 12 hours.


Bitcoin - Is the  in scriptPubKey already hashed?

A Bitcoin address is actually an encoded public key hash. The public key is hashed with SHA-256 and RIPEMD160, a version byte is added and a checksum is created, and then the address is encoded with Base 58 which gives the normal bitcoin address you see day-to-day. The pubKeyHash is actually just the SHA256/RIPEMD160 hash of the public key, before the checksum is added or encoded with Base58. So it is not the address itself, but it can be obtained from an address. It is a hash of the public key not a hash of the address.


What is the cost of resolving a Lightning channel breach?

The cost is proportional to the number of committed HTLCs on the channel at the time of closure. Each HTLC has an output in the commitment transaction which pays into either a HTLC-success transaction script or a HTLC-timeout transaction script, depending on whether the HTLC was incoming our outgoing. The commitment also usually has an output to the spender (timelocked) and a regular P2WSH output to the other party of the channel.

Due to both parties needing to agree up-front about the transaction fees involved (in order to sign matching transactions), the protocol works on an "estimated weight", which assumes worst-case sizes for signatures etc.

The estimated weights are broken down in full in BOLT#3, but the key values are

Commitment weight:   724 + 172 * num-untrimmed-htlc-outputs
HTLC-timeout weight: 663
HTLC-success weight: 703

The transaction fee is then the agreed upon feerate in satoshi/kweight * expected_weight / 1000 (rounding down).

Clearly it is undesirable to have a large number of htlcs in flight in case of unilateral closure. There is a technical limit of 453 due to the 10k script limit in Bitcoin, but ideally you will want to use a much smaller number.

With other developments like Taproot, it should be possible to bring these costs down significantly for the most likely outcomes.