Should I buy my Bitcoins now before a 2016 fork happens with Classic vs Core? Having read about the the fight of Core vs Classic and the potential of a fork happening. I have a few questions concerning what would happen when a fork happens. I feel its inevitable a fork will occur. Currently our coins reside on just one chain the Bitcoin core chain at the moment. If a fork were to happen and Classic takes over, my coins prior to the fork will reside on both chains. But if a fork happens now I must decide on which chain to buy my coins on. Is this correct?

It's safe to assume that when the fork happens there will still be a certain amount of nodes clinging to the less popular chain creating an extra Bitcoin blockchain. At first the coins on this less popular network will plumment in price, but it will stabilize at a much lower price compared to the main chain. Now the users pre-fork will have 2 separate accounts containing the same amount of coins. Is this correct?

Now my question is, would it be wise to buy your coins before the fork? Then sell the less popular forked coins when it happens? Or is there another scenario that might play out that I haven't factored in yet?

Buying advice is not appropriate for this website.

Actually the fork has become quite UNlikely. It was only a loud and ignorant minority threatening one. This has been cleared up and re-established at the round table talks: https://medium.com/@bitcoinroundtable/bitcoin-roundtable-consensus-266d475a61ff#.paosf94p3

Judging by the spike in price after that news, I guess that has been factored in now.

In case a fork does happen, it's quite likely that both sides lose value, at least initially. Nobody likes uncertainty, infighting and chaos. So even if you sell off one side of the fork, the other side will also have dropped in value.

Note that IF you want to play such a game, you MUST make sure that you actually own the Bitcoins, which means they are in your own wallet and you have the private keys. If you leave the coins on an exchange when the fork happens, you are totally dependent on them not stealing/losing one side. And even when you do own the coins yourself, you still have to do some trickery to untangle both halves.


possible to generate privatekey based on private key using bitcore.io? Is is possible to generate the private key based on private key, means suppose if i am having one set as bellow :

privatekey : '02XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXacdefd'
publickey  : '032XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
Address    : 'MnasXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

suppose we consider for example above is one wallet now i want to create sub wallet of it then is possible something

privatekey : '02XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXacdefe'
publickey  : '032XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
Address    : 'MnasXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

just change last digit of private key like 'd' to 'e' and we consider that one is sub wallet.

Is it possible with bitcore library.? or it the correct way to do..?

I think BIP-32 "Hierarchical Deterministic Wallets" (https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) is usefull for you.


What is the rationale behind Bitcoin mining? I don't understand the logic of "mining", if bitcoins are a digital currency, why do we need a GPU to "make 'em"?

Why do we mine?

We need to all agree on who owns which coins.  If your idea of who owns what is different than mine then how can we trade?

To achieve this, the Bitcoin protocol keeps its ledger of all transactions in a series of blocks, with each block recording a collection of transactions.  Since we don't have a central authority to declare which blocks are valid, we run a 'lottery' instead.

Each miner bundles up all the new transactions he knows about, adds in an extra transaction which creates some coins out of thin air and pays them to the miner, mixes in a random number and hashes the whole thing.  If he gets a hash less than a certain number, he wins and his block is added to the blockchain.  If not, he tries with a different random number, over and over.  Everyone else can verify that his random number with his transactions hashes to a low enough number, so they accept his block.  The network periodically adjusts what this target "low enough number" is, in an attempt to keep the average speed of block generation at about 10 minutes.

Why do we need a GPU, not a CPU?

You generate coins by calculating hashes.  Each hash you calculate has a certain chance of making a block, and earning the associated reward, which is currently 50 coins.  The faster you can calculate hashes, the more chance you have of generating 50 coins.  It just so happens that ATI GPUs have the right kind of hardware in them to calculate sha256 hashes many times faster than an Intel CPU can do it.  That's why people use GPUs instead of CPUs.

The Bitcoin network automatically adjusts the "chance per hash" to try to keep the global rate of generation at one block every ten minutes.

In the beginning, before GPU mining started in earnest and not many people were mining, CPU mining worked just fine.  But as more people joined the network and hash rates became faster, the network difficulty increased to keep the blocks coming along every 10 minutes or so.  As a result, CPU mining became less rewarding per CPU.

Then when it became more common for miners to use GPU hardware to mine because it is so much faster and more energy efficient than CPU mining, the global network hash rate increased still further eventually making it completely useless to mine with a CPU; the expected rewards are less than the power consumed by the CPU.

Maybe one day FPGAs or ASICs will render GPUs useless for mining, like GPUs already did to CPUs.


Transfer XBT between Kraken accounts I have to receive an amount of XBT from a relative. Both of us have a Kraken account. Can I achieve this inside Kraken or do I need any external wallet or similar? If I can do it in Kraken, how should I proceed?

You can't do internal transfers within Kraken, but you can create a deposit address and send it to your relative. Then your relative can withdraw their money in Kraken to the address you provided. Make sure it's the same cryptocurrency! Hope that helps :)


Lightning Network conf listen & externalip values I downloaded LN repo. I have this settings in my lnd.conf file:

listen=192.168.100.134
externalip=186.4.235.84

I am following some tutorials online that do not include this settings (like this one) . Can someone explain the role of this variables please? I am not a network expert and I like to understand the code I write.

Listen: This specifies the interfaces to listen to for incoming connections to your node. This will allow other nodes to establish inbound connections to your lnd node. If you want to listen to all ipv4 connections on port 9735, you can use listen = 0.0.0.0:9735

External IP: Adding an external IP advertises your node to the network. If you'd like to signal to other nodes on the network that you'll accept incoming channels (as peers need to connect inbound to initiate a channel funding workflow), then the externalip flag should be set to your publicly reachable IP address.


how can I resolve an unconfirmed deposit to my blockchain.info wallet? After 35 hours and still Unconfirmed bitcoin deposit to my blockchain.info wallet after I sweeped the bitcoins I have in my paperwallet which I created on bitaddress.org.

Hello everyone, this is my first time having a problem with unconfirmed bitcoin transactions!  I hope somebody can help me resolve this issue by sharing their
knowledge and experience and point me in the right direction, thank you so much in advance!

About 35 hours ago, I used the blockchain.info wallet to sweep a bitcoin paper wallet private address where some of my bitcoins were stored!
(I created the paper wallet address on bitaddress.org., and I have been storing bitcoins like this and sweeping it with blockchain.info wallet for the
past year and a half without ever any problems regarding delayed transactions.)

Anyway, this time after the wallet was successfully sweeped, and the bitcoins were transferred from my paper wallet to my blockchain.info wallet,
it sits indicating as a pending transaction awaiting confirmation.

If I send some of that funds out by setting a higher priority transaction fee, would that help confirm both transactions?

My paper wallet public key which I sweeped the funds from is:  1EwT9GvF5vvRq4wW1YS1h4cLgJqdEiF4Mg

Please help me check the status, and let me know how I may resolve this unconfirmed transaction asap, thank you so much for your kind assistance!
Dave

Every transaction has everything it needs to process, so you cannot really boost the priority of the transaction already on the network. If your transaction is not confirmed , i am assuming you have set low fees or there is unusual load on network, at current time of writing it does not look too bad.

If you send another transaction with higher fees , it will get confirmed quicker and the earlier one will be removed from the pool at some point (or will get rejected as you will have already spent your inputs).*

*Assuming here you are trying to spend everything in the address.


Can I speed up the running of functional tests? I am running the Bitcoin Core functional tests using the test runner and it is taking a long time to get through all the tests. Is there a way to speed it up?
test/functional/test_runner.py --extended

The Bitcoin Core test README states:

By default, up to 4 tests will be run in parallel by test_runner. To
specify how many jobs to run, append --jobs=n
The individual tests and the test_runner harness have many
command-line options. Run test/functional/test_runner.py -h to see
them all.

Pieter Wuille also explained how he gets the total time down below 4 minutes on GitHub:

You can run them in parallel; if you have sufficient RAM pretty extremely even. test_runner.py -j60 works fine on my 4-core 32 GiB RAM system, taking 3m46s. A lot of the time consists of processes waiting for each other, so it's not actually CPU bound.


Why doesn't the same miner always win? If the miner with the strongest ability to solve the block wins, why doesn't the same miner win every time?  Wouldn't that miner still have the strongest ability to perform the proof of work on the next block and thus win every block?

Mining is not won by the miner with the "strongest ability to solve the block". Mining is a random progress-free process. Each block candidate independently has a tiny chance to be a valid block.
Each miner is working on a separate, non-overlapping block candidate set. Block candidates assign the block reward to their author with an output in the Coinbase transactions and therefore each miner has their own transaction set differing to that of other miners. As everyone is working on a separate set of work, and every piece of work has an tiny chance of winning (independently of what else was tried!), mining is a Poisson process, rather than a linear stack of work that needs to be powered through. Therefore, the miner with the most hashing power has the greatest chance to win the block, but only probabilistically so.
Think of mining as buying a lottery ticket for each block candidate hashed. Only a fraction of the tickets in the pot are winning tickets, but somebody might draw a winner on their second try, while another has bought fifty losing tickets already. However, when you buy more tickets more quickly, your chance of winning is higher.
For a better overview what mining is, you can have a look at "What exactly is mining?".


Can I figure out the size of a transaction before its sent? I want to know the size (in bytes) of a transaction before it's sent.

Is it possible? Maybe with raw transactions? or..

EDIT:

Not a duplicate. The 'duplicate' doesn't address how to find out how big it is. Just addresses how to calculate the bytes (inputs and outputs). I even commented on that thread. How do you find how many inputs and outputs there are. I understand how to calculate it. But how do I figure out if there are 10 outputs or 5 outputs?

Yes, this is actually what the raw transaction API is for.

The ordinary send RPCs (sendtoaddress and sendmany) do everything at once:

Construct outputs based on the addresses/amounts you want to send.
Do coin selection to find inputs to satisfy the amounts, determine the fee, and add change if necessary.
Sign the inputs with the keys in your wallet.
Broadcast the transaction to the network.

Since the fee depends on the size of the transaction, which depends on the coin selection, you cannot "intervene" in the middle of these RPCs.

The raw transaction API lets you do all these steps independently:

Constructing outputs based on addresses/amount using createrawtransaction.
Do coin selection to find inputs, determine the fee, and add change using fundrawtransaction.
Sign the inputs using signrawtransaction.
Broadcast the transaction using sendrawtransaction.

If you need to know the actual fee before broadcasting, you can use createrawtransaction + fundrawtransaction + signrawtransaction to construct a fully valid transaction without broadcasting. You can then inspect it, and decide to broadcast it using sendrawtransaction or not.


Why is it more profitable for a node with more than 51% computation power to abide by the rules in the bitcoin network The Bitcoin whitepaper states - "The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth."

I don't quite understand as to why? Can someone explain as to what can an attacker gain if he has more than 50% computing power and how it is outweighed by what he can gain if he plays by the rules.

The question What can an attacker with 51% of hash power do? does not seem to answer my question as it does not clearly seem to explain WHY is it more profitable to play by the rules.

An attacker with 51% hash power could perform a double-spend (or several). He could send a large payment to someone and then use his hash power to create a longer chain that spends the same coins but sends them to himself instead, making the first transaction invalid.

It would be against his interest because playing by the rules would net him roughly 1 every 2 block rewards (that is roughly $100,000 every 20 minutes) but if he chose to perform this attack the price of bitcoin would plummet making his reward much less.


Can a block ever be empty? The standard response is "no, the reward is at least one transaction." What about after there is no more reward?

That is far in the future and can still be changed, but at the current time a coinbase transaction is required and will always be present. It is very likely that this rule will be upheld in the future as well. It is also possible that the transaction accuracy could be increased enough for there to always be a block reward, however minuscule.


What is the difference between BTC/LTC & LTC/BTC markets? I am little bit confused about markets, In cryptsy there is a market for LTC/BTC in which we can buy or sell LTC using BTC

My questions are,

Is both LTC/BTC & BTC/LTC are the same?
I have tried cryptocoincharts, but seems to have incorrect values, Any valid market api call to fetch the BTC/LTC market values?

LTC/BTC and BTC/LTC are both ratios of purchasing one currency with another.

For example, with LTC/BTC, the price quoted is for 1 LTC (overlying) in BTC (underlying). If the price is 0.025, that is how many bitcoins are needed to purchase 1 LTC. At this price, 2 LTC would cost 0.05 BTC.

The opposite would be equivielnt to 1/x, using the example above the rate could also be expressed as 1/0.025, or 40 LTC per bitcoin.

The rate is the same. For some lower valued currency, it would indeed be much better to trade in a BTC/COIN format because it is more likely for an altcoin to go lower than 0.00000001 BTC than to go higher than 100,000,000 BTC per altcoin ;)

For the freshest data, I would recommend going to the source (e.g. a big exchange), such as https://btc-e.com/api/documentation


Is someone trying to kill bitcoin? I've been observing the huge increase in the price of Bitcoin over the last month (November 2013) and I can't help but think, is someone with an ulterior motive pulling the strings here?

It seems to me that Bitcoin represents a huge threat to some very powerful people who would like to see the financial status quo maintained. If Bitcoin posed a significant threat to them, how would they combat it?

I don't think trying to govern or control Bitcoin in any way would work. If I was in that position, I would probably pour a lot of resources into artificially raising the value of Bitcoin, create a mania of publicity around it and get as many people invested into the bubble as possible. Then when it reached a tipping point, I would burst that bubble hard, make sure all those people who invested got their fingers badly burned. Killing Bitcoin by destroying everyone's faith in it...

That's why the sudden increase in value concerns me.

Is it feasibly possible for someone to artificially raise the value of Bitcoin in this way? Given that those who might want to do so would have almost unlimited financial resources, and a whole lot of influence over the media/public opinion. Could they be setting up Bitcoin for a very overt fall?

There are really only two things driving the increase in price you are talking about.

Supply and Demand
Greed and Fear

Supply and demand is simple, there is a virtuous cycle at work here:

Increasing demand drives price increase due to limited supply
Increasing price drives increasing demand as knowledge spreads in the media
Repeat

Greed and Fear are basic human emotions, but the interesting thing is that the Greed and Fear is a community measure not an individuals, this can be considered as the "wisdom" of the crowd.

Large price increases increases greed
Increasing greed increases prices
Decreasing prices increases fear
Increasing fear decreases prices

When you boil it down to just these things and nothing else (such as cost of mining) you have something like a measure of the psychology involved in these simple concepts applied to the crowd rather than the individual.


could trezor be used to store passwords like 1 pass? I'm wondering if trezor be used to store password(s) like you do with 1pass?
If not, is it something you'd contemplate in developing?

Thank you

Have not used 1password or lastpass, but the USB-based Trezor hardware device does support:

Essentially a 2-factor keepass capability. See Trezor Password Manager TPM. TPM works fine across computers using Chrome and having Dropbox accounts.
A recoverable Universal Two Factor (U2F) authentication capability (unlike Yubikeys) just like the Ledger Nano. See U2F for Trezor details. For major sites supporting UTF see this Dongle List that is  broken up into different industry verticals.


How can Segwit increase transaction throughput if the same amount of data is stored in the blockchain? I'm posting this after reading the answers to this: Where is the Signature stored in a SegWit transaction?

I've found out from reading that, that in Segwit, the "witnesses" (or signatures) that verify a transaction's authenticity are still stored on the blockchain. In which case, the same amount of bits ought to be used up by a given transaction as if Segwit weren't being used. If the block size remains the same, let's say 1MB, then it ought to hold the exact same number of transactions.

I've got an alternative possibility. Let's say that what actually gets sent to the nodes is a transaction with an empty signatures field (I think that such a field doesn't quite exist because of multi-sig stuff and scripts, but bear with me). Then the signatures can be sent through a separate channel. What actually gets stamped onto the blockchain is a transaction with an empty signatures field. And then because of the longest-blockchain-always-wins rule, the non-Segwit nodes will simply accept that the blockchain with the most number of transactions, which includes some funny signature-less transactions, is the authoritative blockchain.

But apparently reality is more complicated.

Also, there's a question about how much the longest-blockchain-always-wins rule can be abused. (The word "abused" does not imply a negative opinion). For instance, let's say I come up with FoobarWit. FoobarWit is the same as Bitcoin but with a larger blocksize (no Segwit). Once enough nodes adopt FoobarWit, then more such nodes will win the mining race, and so other nodes will effectively accept bigger blocks because the history is longer. I know that's not the case, but why?

The answer to the question "Are the segwit witnesses part of the blockchain" depends on what you define as the blockchain:

According to old pre-segwit nodes, the answer is no, as they don't care or receive the witnesses.
According to new segwit nodes, the answer is yes; the witnesses are as much part of the chain as everything else, and subject to just as many validation rules.

So segwit increases throughput slightly, at the cost of increasing the size of the blockchain. There is no magic bullet here, and this aspect of segwit is simply a block size increase. It is not a scalability improvement.

Segwit was primarily a solution for the transaction malleability problem, opening the door for various higher-level protocols that were handicapped by being unable to reason about future on-chain transactions that weren't published yet. In addition it also improved he incentive structure a bit (making spending relatively cheaper w.r.t. creating outputs). As a final side effect of that, it also increased the block size a bit in a backward compatible way.

As for your question about another fork that goes even further: what your software does has no effect on those who don't adopt it. Even if it has all the hashrate in the world on board, old nodes won't care or see your additional data.


Review of "equitable" proof-of-work systems One major criticism against usual SHA-based proof-of-work systems in main cryptocurrencies (except the ecological concerns) is the fact that, years after years, it's more and more dominated by a minority having developped specific hardware (CPU -> GPU -> FPGA -> ASIC), making it impossible for the average user with a laptop to solve a single proof-of-work problem in a lifetime.

What are nowadays' solutions to this problem?

I heard about Equihash, a memory-hard proof-of-work scheme, linked to the Generalized Birthday problem
are there other (working) attempts? what are they based on?

This is actually an economic issue, not a cryptographic one.

Suppose hypothetically that I'm mining, and I'm making a good healthy profit.  I'm naturally going to keep adding more and more computers, to get more and more profit.  But of course, the cryptocurrency can't let me expand forever, because it can't afford to pay me an infinite amount.  It has to lower its payout, to get me to stop gobbling up more and more profit.  I'll finally stop expanding when the cryptocurrency lowers my profit margins to almost nothing.

But, if my profit margins are tiny, then everyone else's are too.  Then that means there's no room for inefficiency.  Anybody who's in a place where electricity is expensive, or where they have to pay for cooling, or where land to build a datacenter is expensive, is not going to be able to make money.

That's why it's rough for home miners to make any money: a home-based mining operation generally isn't as efficient as a carefully optimized datacenter.

However, home-based miners have one advantage: they usually already have a computer that's already paid for, and whose cost can be considered "free" considering that the computer would probably have been doing nothing otherwise.

Memory-based proof of works don't change the basic economic reality that profit margins are going to be super-tight.  But they do make it possible to leverage that "free" computer to get a slightly higher return, insofar as the cost of the computer was a meaningful part of the cost to begin with.

Unfortunately, in my opinion, memory-based proof of works have a flaw: they make it possible to hire a conventional datacenter (say, an Amazon EC2 datacenter) and use it for mining.  That makes it inexpensive to temporarily bring a lot of hashpower online for use in attacks.

For instance, imagine that I had a cryptocurrency with 100,000 nodes, each with a single powerful CPU doing mining.  How much does it cost to rent 101,000 powerful CPUs for an hour, to do a 51% attack?  Answer: a few million dollars.  Very much within the reach of any significant organization.  You couldn't launch a 51% attack against an ASIC-based cryptocurrency for anywhere near that price.

I'm not honestly sure how big a risk 51% attacks are: I'm not sure many people are actually motivated to do that.


How can I progmatically generate bitcoin address with in WASABI Deskstop wallet? I would like to generate 10000 btc address and save it as csv file on my computer to be uploaded it on my server. I hope anyone can help me find the solution.
Thanks in advanced!

Maybe a hacky way, but you can export the xpub/zpub to electrum and do it there with a bit of Python.

Another option would be to use the same public key with this website that seems to be able to generates a CSV of addresses: https://iancoleman.io/bip39/


Does a node validates a transaction that comes with a block if it's already in its mempool? Except for checking for double spends, if there's a transaction in a block that's already in the node's mempool, it can theoretically skip its validation. Does it actually happen, or the nodes validate each transaction twice?

The most expensive part of checking a transaction, ECDSA validation, is cached.


Electrum wallet shows zero balance I sent bitcoins to an offline (air gapped) electrum wallet.  I have blockchain.info proof the transaction took place and verification of the balance in the wallet (i used a watch only address to view balance and transaction history of offline wallet)  BUT electrum online wallet synchronizes but does not show updated balance information.  Electrum can find the funding transaction from the blockchain by the transaction id (Tools->Load transactions-From the blockchain)

Electrum 1.9.8
debian jessie (kali 2 sana)
via socks5 thru tor

resources consulted - none have a working fix

1.
Why I am not seeing received money in my electrum?
wallet.clear_history() does not solve the problem for me

2.
https://github.com/spesmilo/electrum/issues/1525

3.
https://bitcointalk.org/index.php?topic=1221590.msg12943509#msg12943509

did you check that the offline wallet has the same addresses as the online wallet?

btw, please upgrade Electrum, version 1.9.8 is too old.


What does the scriptSing contain when it is decoded with RPC framework? I'm trying to get the wallet id from scriptSing and ScriptPubKey. When I decode the scriptSig, the result does not contain the address address. But when I decode the scriptPubKey, it contains the address.

Why the scriptSig does not contain the address?

If it does not contain the wallet id, does it contain any references to previous transaction output?
if yes, what is the property inside the RPC response that contains the reference to previous output?

This is the documentation reference bitcoin core

Bitcoin does not actually use addresses internally. Addresses are just a way for us humans to specify what scriptPubKey we want the wallet software to create. When a transaction output is spent, the address is not included anywhere because it is not needed.

Bitcoin Core's decoding RPCs will include more information than is actually present in the transaction, block, or script. This is because it can infer and display the information present in different ways.

Since an address describes a scriptPubKey, it is typically possible to take a scriptPubKey and compute an address that corresponds to it. This is not always possible because not all scriptPubKeys correspond to addresses. But usually they do, and so the decoder will show you that.

However scriptSigs do not have corresponding addresses. You cannot get a scriptSig from an address and vice versa. In fact, the idea that you send from an address is really not true; that's just a simpler way to describe things to people. It isn't how Bitcoin actually works.

The reference to the previous output is done by explicitly referencing it, not referencing some address. Every output is uniquely identified by the transaction it is included in, and its index in the array of outputs in that transaction. Bitcoin Core displays this to you as the txid and vout fields for each input.

Bitcoin really does not have wallet ids. Contrary to popular belief, addresses are not wallet ids, nor are public keys.


How do I resolve an accidental double spend? I made a double payment to the same address mistakenly since my internet was a bit slow, and one payment has 8 confirmations. The recipient says he hasn't received it. I got this message from the transaction:

  A conflicting transaction has been detected in our memory pool. The transaction hash displayed below may change.

What can I do to resolve this?

A double spend is not possible. A double spend attempt, yes. You might try and (accidentally or intentionally) broadcast two different transactions that spend the same bitcoins. But only one will eventually get included in a block.

If you say one payment has 8 confirmations, then that's the one that became final ('set in stone') and the other will never happen.


Double spend in transaction with multiple inputs Lets assume we have transaction with 2 inputs, each worth 1 bitcoin, and we send these 2 bitcoins to one address.

What happens if there is successful double spend attack on bitcoins in our first input?
How many bitcoins recipient gets, one or zero?

A transaction either gets confirmed in its entirety (by being included in a block) or none at all. If one of the inputs is successfully doublespent, then your tx is invalid so will never be confirmed.


Whats the use of QR-codes during wallet to wallet transfer? I want to know hen the QR-code scanning actually takes place. For instance, if I send my wallet address to someone, how does the person verify that the sender is me, and what do I need to do as soon as I receive the bitcoins in my wallet? Is there any point where I need to scan the QR-code?

The QR code is simply a convenient way of sharing an address, to avoid having to type it.  It encodes exactly the same information as the alphanumeric address and provides no additional security.  If you have another way of giving someone an address (e.g. sending it to them by email), there is no need to use a QR code at all.

How the other person verifies that the address is yours is something that you have to solve for yourself; Bitcoin itself doesn't provide features to help with this.  For instance, you could send the address via a PGP signed email, or make it available on an HTTPS website, or ask the person to telephone you and verify the address.  But it is an important issue; if an attacker impersonates you and the other person pays their address instead of yours, the attacker will get the coins and there will be nothing anyone can do about it.

There is nothing you need to do after receiving coins.


Calculating the average bid/ask price when placing orders new to bitcoin and trading,

I'm writing some code to analyse cryptocurrency markets and I want to better understand market depth.

For a dummy scenario:

Lets say BTC was at $100 and I have 10 that I want to sell. When I place a market order do I 'consume' the highest 10BTC-worth of bids? Such that my average ask is the weighted average of all coins I just sold?

E.g. if the bids were 5BTC at $100 and 5 at $101, when I place by 10BTC ask, I fill those 10 bids and my return is (5 * $100) + (5 * $101) with an average of $100.50 for each BTC I sold?

Obviously in reality there are any number of bids/asks at all sorts of volumes, but the concept is the same?

I've read about interpreting the order-book but I'm looking for an explicit example of what happens when you bid/ask on a given market.

Thanks,

Yes, when you place market order it works exactly like you described.

In case you want to get a fixed pre-defined return, you need to place limit order


Bitcoin to ether lost on transaction via Bity.com Today I (tried to) use bity.com to change BTC to ETH from an Electrum to a MyEtherWallet account I was. I sent the funds using the bity.com provided specific address, but the transfer from Electrum was not complete before the transaction at bity.com was registered. bity.com cancelled the transaction, however Electrum completed it! Transaction: 9fb533c74e634e1b1756663cb0e0d5e6865268f4d7ed7250b7694b230dd927b9 and now I have transferred the funds, but not received the ETH. I have written bity.com, but no response yet. Any suggestions?

we've double checked. you have received the corresponding ETH here: https://etherscan.io/tx/0x7828e72fb692f51a42a626b08b99b0719ad25deaa0fdedd7c1f26d183e482ca8


Do I need a wallet to start mining? Oh, sorry. The question is really simple:

Do I need a wallet to start mining and "keep" this bitcoins?

or

Can I just stay with my bitcoins in my computer?

The wallet doesn't have to be on the same computer. For example, you can mine in a pool and the address to receive bitcoins could be from any wallet located anywhere.


What, if anything, can I do to recover bitcoin that was stolen from my MtGox acct in June, 2013? I understand the short answer is "nothing", but I ask because I've had trouble explaining this to a coworker which made me realize I don't really get it myself.

What information can I glean from following the stolen bitcoin on a blockchain explorer?  1GvfmXt2CKP8QJfw93LNcnNV6KghD5ohVA

How useful is the IP address the withdrawal was made from? IP: 75.110.224.12

Do I have any legal recourse when the company in question is bankrupt, in Japan, and the theft occurred almost five years ago?

Thank you.

There is nothing that can be done with just a public address and an IP(as the real IP is most likely behind proxy/vpn/etc...).

Kraken was selected by the MtGox trustee to assist MtGox creditors in investigating missing Bitcoin, filing claims, and distributing remaining assets.
The due date for accepting MtGox creditor claims via online submission has past.
But creditors may still be able to submit claims via the offline claims method.


how does node validate scriptSig Let's say I sent some BTC to Bob, so I created a transaction (forget about scriptPubKey) since let's say I was able to prove it by executing scriptPubKey. so After I sent BTC to BOB, new transaction's input looks like this:
in: [
  {
     "prev_out": {
        "hash": txId,
        "n": 0
     },
     scriptSig:"3045....e5f5"
  }
],

Now, this scriptSig exists because when other nodes come and see this, they should be able to validate it. Now, all we have here is the signature , public key (mine), txId(output transaction that I used).
How can another Node which got this transaction validate it ?
You might say: he will see signature + public key of yours. so what will it do to validate it ? if you say that it will try to decrypt signature with public key, that's not enough. Because what I could do is encrypt blablabla string my private key and I'd put that signature there.
So I guess, my question relates to: how Node will prove I proved that I had BTC with scriptSig + txId ?

What you are asking about is the message covered by the signature. In Bitcoin, this message is defined by the consensus rules and is a modification of the transaction the signature is contained in.
The exact form of this message for non-segwit transactions is explained in How to redeem a basic Tx?


How large can the bitcoin salt value be? To mine bitcoin I believe that you take the input and add a salt number to that then run the hashing algorithm to find a suitable output, but how large can the salt be, couldn't I just take the current input subtract it from the previously found bitcoin input+salt to get a new salt, and use that new input plus new salt to find a suitable output (same output as the old bitcoin)?

It's actually called a "nonce".

It is a 32-bit number so is maxed at 2**32 or 4294967296.

If the hash and data given are valid, you can always hash the block header data to get the same block hash.  If anything is changed, including the nonce, the hash will change, invalidating the block (header).

Each valid nonce is dependent upon the data being hashed and the target difficulty according to the protocol.


Do I need to mix my coins to stay anonymous? I think my Bitcoins are anonymous if:
I receive bitcoins from "Person A" on address 1. then I transfer them to address 2. and then to address 3.
Because:
Nobody knows that I own address 2.

Is this correct? An analyst can suspect that I own address 2 but he can't proof this.

It depends what you mean by "knows" and "proof".

You're right that an analyst will not be able to be prove with absolute certainty that you sent the coins to address 3, because it is possible, consistent with the blockchain evidence, that address 2 belongs to some third party.

But in the real world, people and organizations don't need absolute certainty to take action.  They have lower standards, like "proof beyond a reasonable doubt", "probable cause", "reasonable suspicion", etc.  It's entirely possible that a detective / jury / president / mob boss would consider this sequence of transactions to be sufficient evidence for an arrest / conviction / drone strike / vicious beating.  That's particularly true if there is other evidence linking you to the owner of address 3.

So in evaluating whether a system or protocol has enough anonymity for your purposes, you have to ask yourself who you are trying to stay anonymous from, what consequences you are trying to avoid, and what level of evidence you think your adversary would need in order to proceed against you.   Maybe a single extra transfer is enough anonymity for you.  Maybe a mixer would be needed.  Maybe even that isn't good enough.  It all depends.  These questions don't have straightforward yes-or-no technical answers.

It's like asking whether a system is "secure".  It depends who your adversary is and what their capabilities are.  It might be secure enough for some people, and not for others.


Always rejected shares (Antminer U3 / Minera /CGminer) hope someone can help.
I use an Antminer U3 on a Raspberry Pi with Minera and CGminer.

When I mine everything with Scrypt-Algo, I get 100% rejected shares.
My current pool is ghash.io.

My log looks like:

Rejected 09ffd3f1 Diff 26/16 AU3 0 pool 1 (Low difficulty share)

my config file:

{
    "api-listen": true,
    "api-allow": "W:127.0.0.1",
    "log-file": "\/var\/log\/minera\/cgminer.log",
    "scrypt": true,
    "scan": "all",
    "pools": [
        {
            "url": "stratum+tcp://multi.ghash.io:3333",
            "user": "WORKER",
            "pass": "123"
        }
    ]
}

My additional options are: --au3-volt 780  --au3-freq 238

Minera shows a hashrate of about 60 GH/s, Ghash.io shows about 1MH/s in the multipool.

When i change to the bitcoin pool, everything works fine.

Any ideas?
Could it be affected by the pool difficulty, i can set on the ghash.io panel?

Thanks in advance

An Antminer U3 is a SHA256 miner, it can not mine anything else. The shares are being rejected because they are effectively nonsense to the receiving pool, as they do not satisfy the difficulty requirements they have asked for.


Better fee estimation and fee/tx/mempool management in wallets Right now mempool has 65 MB of transactions waiting for miners to be included in blocks. 90% of the transactions are below 10 sat/vbyte.

I am observing this trend from last few days and think it will settle once we have couple of days with less people looking to use higher fee rate for quick confirmations. It can take few days to weeks. Is there a better way for wallets to manage transactions and fees so that people realize that they are paying more than 10x fees. Its difficult to educate everyone about using different tools and websites, not easy to convince exchanges to use segwit, rbf, maybe even cpfp, batching, LN, Liquid etc. and I think we can manage mempool and fees in a better way if most of the wallets experiment with solutions to solve this problem.
How can we solve this problem?

You are right, after about three years, we only achieved about 11% of native segwit usage, ~ 1000 BTC locked in public lightning channels, RBF/CPFP usage is about 15%/10%.
Unfortunately, most people don't care much whether they pay $0.02 or $0.2 in fees. They only start caring when fees are much higher than that. Since January 2018, we have only had that at a much lower level in April-June 2019 and at the end of October/start of November 2020. Which allows most users to just wait for the congestion period to resolve. In order to have a real change, I think we will need a real congestion period the likes of those in 2017 or even worse.
I am creating a service that will make it easy for wallets/custodians to optimize the fee of their transactions. The way it works is that users relay RBF pre-signed transactions that pay for different fees. The service then optimizes the fee by smartly broadcasting these transactions. It's already live, in beta: https://bitpost.co Anyone can try it out by following this tutorial: https://docs.bitpost.co/basic/quick-start There is a testnet version of the service too.


Newbie question about exodus wallet! I just installed exodus,
1) why the program didn't even ask, do you want a new address? it's generated automatically!
2) when I click recieve on my bitcoin wallet, there are two different addresses generated(that I can click next or backward to chose them), interestingly enough they are not there to be chosen when I click send. which address is mine?

Thanks

Here is the explanation: https://support.exodus.io/article/81-how-do-i-generate-a-new-bitcoin-address

  Your bitcoin addresses are reusable, however, some users may want to
  generate new bitcoin addresses for privacy purposes. If you would like
  to generate a new address, click on the arrow to the right of the QR
  code in your bitcoin receive window.

  You start out with two bitcoin addresses. As each address is used, a
  new one will generate. This way, you always have an unused address
  available to you.


MultiBit Password Protection - How Secure is it? I'm new to BitCoin but a friend of mine was recently stung when a bunch of his coins were stolen. Naturally, I'm now very cautious. I've password protected my MultiBit wallet and, to test the security of this, I have copied the .wallet file to another computer and opened in a new installation of MultiBit. However, I was not asked for my password and I can see my transactions in there. Can someone explain what the password does if it doesn't stop you accessing the wallet?

Thanks in advance.

PG9

The password is required to spend the coins.  This is the purpose of the password.

Multibit does not consider it to be a security problem if people who steal your wallet can see the balance.  If you have a problem with that, you should encrypt your wallet with a program such as TrueCrypt.


How does Segwit prevent ASICBOOST? I know that ASIC BOOST exploits the fact that the blockheaders are not a multiple of 64 bytes, but what is the change in Segwit that prevents this? Are they always a multiple of 64 bytes now for example?

There's 2 versions of ASICBOOST:

Overt where miners use bits in the version number as extra nonce space
Covert where miners "mine" merkle trees with 4 bytes collisions

The overt version is very easily detectable, whereas the covert one isn't.

To mine these merkle trees for the overt version, miners need to shuffle the transactions in the block.

Without Segwit transactions in a block, it is possible to do it in a very low number of SHA-256 operations ; with Segwit transactions, a change of order forces miners to recompute the witness commitment which is stored in the coinbase. That makes it way more expensive to mine merkle trees and destroys the advantage covert ASICBOOST provides.

You can find a detailed explanation here.


Checking the first and last characters of a cryptocurrency address? When confirming that an address entered on a site/app is what I expect it to be, I often check the first and last 3-4 characters to see if they match.

Is this practice dangerous? Could an attacker feasibly generate an address that matches at the beginning and end, but is different in the middle?

When confirming that an address entered on a site/app against what I expect it to be, I often check the first and last 3-4 characters to see if they match.

This is a good practice, it will help protect you against attacks which do things like highjack your clipboard data, to paste an attacker's address instead of your intended recipient's address.

Relevant info: bitcoin addresses are base58check encoded, so the last few characters of an address are deterministically generated, using the beginning of the address as input. Altering just one character at the beginning (or end) of an address will make the checksum invalid. So an attack which alters just one character of an address will not work (even if this sort of attack didn't steal funds, an attacker could force you to burn funds otherwise).

If an attacker can find a way to just outright present you with a malicious address, then checking digits won't be of use. But for the sake of your question we'll ignore those situations, and just consider how easily an attacker could create a 'copy-cat' address, in order to thwart any quick references to the legitimate payment address.

Generating a bitcoin address has a very low cost, so it is possible for attackers to generate many, many addresses quite easily. Only a small percent of those addresses will be similar to the desired output, and every extra character you verify increases an attacker's costs of creating a copycat address by 58x (since there are 58 characters used in base58check address encoding). So we see that by verifying enough characters, the attack becomes computationally infeasible, as the attacker would have to check an impossibly large number of addresses before finding one that matches.

As an example with numbers: near the end of Mastering Bitcoin: Chapter 4, Andreas highlights that vanity addresses can be dangerous, in that an attacker can make an address that also begins with the same vanity characters. The attacker can then substitute their address for the legit one, and since it is a vanity address this substitution may be less obvious than usual (ie, the user sees that the start of the address matches, and proceeds without checking the end).

  Could an attacker feasibly generate an address that matches at the beginning and end, but is different in the middle?

If you verify enough characters, then the attacker could probably not generate a copycat address within the time constraints of the attack vector. The attacker would not be able to start brute-forcing the address until the payment address has been created (and intercepted), and then the time would run out once a user submits payment. In many real-world situations, this time period may only be minutes (or perhaps hours) long. Using the numbers in Andreas' book, we can see that checking 4 characters on the start and end of an address should be sufficient to thwart any attacker that only has <1 hour to generate a copycat address.


Holding all your money in one address = Paper wallet? A paper wallet is a very misnamed term, since it's in fact a "paper address" indeed (contrary to a "wallet" which stores multiples addresses, for ewample inside the wallet.dat file).

Lots of people are speaking about the safety of paper wallet. It's indeed easier than holding offline a wallet.dat file.
But isn't it dangerous holding all your money inside only one address like the paper "wallet"?

There's definitely a certain danger to it. According to this book http://www.totalbitcoinsecurity.com/ there are two easy ways to improve its security:

Why put all your money in one paper address? You can split it up and put it in several paper addresses. This makes each address a less attractive target.
You can use BIP38 to encrypt the private keys. If somebody steals your encrypted private key he'll still need to know the passphrase. This is slightly related to two-factor authentication: in order to access the wallet, you need both the private key (typically stored in paper) and the passphrase, which you could remember or write down somewhere else.

Disclaimer: I have no relationship to the cited book. I simply read it last week.


Requesting a node's peers list When joining the bitcoin network, you request a list of peers that a node has so that you are able to connect to those peers if you wanted to, in order to be better connected. Is there any way that when requesting the peers list of a node, the node could provide a fake peers list with a number of 'bad' nodes?

Is there any way that when requesting the peers list of a node, the node could provide a fake peers list with a number of 'bad' nodes?

Certainly. It's impossible to check whether nodes are good or bad without connecting to them. A node can just return whatever IP address and port combinations it wants and the receiver will need to determine for itself whether they are good or bad.


nLockTime transactions, how do they persist? Are they broadcast before they are valid? If nLockTime transactions aren't added to the blockchain until the nLockTime is met, then aren't they just being stored in memory of the miners and is there a risk they could get "lost"?

I guess I'm just wondering how a long term nLockTime transaction can really persist. If I set it for 1 year in the future, and everyone restarts their node at some point during that time, isn't there a chance the transaction get's lost? Or would this require all nodes restarting simultaneously?

EDIT: Or are nLockTime transactions just held off network by the interested parties and then broadcast once nLockTime is reached? I read some things about DOS attacks with nLockTime transactions leading me to think that miners would not bother storing these at all in memory.

The release notes for Bitcoin Core (Satoshi client) version 0.9.0 states

  Accept nLockTime transactions that finalize in the next block

So it will just discard other nLockTime transactions. Since most miners run bitcoind or some fork of bitcoind, it is unlikely that an nLockTime transaction will persist for a long time.


Cgminer opencl-detection overrided autogen error So I am trying to install cgminer on my debian server. I've downloaded the latest nVidia drivers, tried many things but still can't get this work.
So this is the end of the log from autogen.sh:

config.status: executing libtool commands

------------------------------------------------------------------------
cgminer 3.6.4
------------------------------------------------------------------------

Configuration Options Summary:

  libcurl(GBT+getwork).: Enabled: -lcurl
  curses.TUI...........: FOUND: -lncurses
  OpenCL...............: Detection overrided. GPU mining support DISABLED
configure: error: No mining configured in

I've already tried to download the latest CUDA toolkit, but it didn't work either. On google I just found solutions for ATI/AMD cards. (btw. I have GeForce GT-9600)

use
./autogen.sh --enable-opencl
instead of
./autogen.sh


What programming language should i learn if i want to implement its technology in the future? As a Uni student still learning (currently web-development), i want to eventually learn to program web applications. I also would like to eventually (in the future), be able to implement Bitcoins code in whatever i work with. What programming language should i choose as my first to learn?

Bitcoin is primarily C++, but you can work with Bitcoin in any language you like.

If you want to learn how to make web applications, I would recommend PHP or Ruby.

Your best bet is to go for the language that looks most interesting to you, and get something working with it.


Beginning 2017 what estimate of individuals own bitcoin? How many different individuals in the world own bitcoin?

I.e. John owns .5btc, Michelle 300btc, Al 4000btc : the answer would be 3.

I am interested in the percent of the global population that owns bitcoin as it would be a good indicator of the potential (and value) further for bitcoin as it is educated to more and more people and eventually reaches mainstream (hopefully).

There's a hard limit on the amount of people that own one bitcoin: There currently are only 16.1 million bitcoins in circulation, so there can't be more more than 16.1 million people with one bitcoin. However, there are a number of individuals that control much more bitcoin than that, so it is safe to say that the actual number of users that own one bitcoin is much smaller, I'd guess less than one million people.

On the other hand, the number of users that own any bitcoin at all is very hard to estimate as well. There are currently 46 million unspent transaction outputs, so if we'd assume that every user maintains their own balance that would be a strict upper limit. However, many users leave their coins to be managed by online wallets or exchanges, so it's not a reliable limit. On the other hand, the number of people is probably even much smaller than that, because few people own many of those UTXOs. If I were to hazard a guess, I'd say that there are fewer than five million people in the world that own any bitcoins.


can someone please help me I am lost i transfered coins from paxfull to bitcoin core I bought bitcoins to pay a bill. which never happened because of something called protcal? IDK.
then i read online that bitcoincore was a good wallett to transfer and pay bills. now I have no idea how to use it or see them. someone please help.. dumb damsal in destress

You can download bitcoin-core from here
But it's not highly recommended since you may need to download the whole blockchain.
What I recommended as an alternative is Electrum since you can use public bitcoin servers without downloading the whole blockchain


Would any of the current botnets be able to launch and sustain a 51% attack? The "owners" of botnets probably runs them as businesses, meaning that they will always seek profit-optimization. Do you believe that it is a matter of time before they will seek to launch and sustain a 51% attack on Bitcoins?

If one were to achieve a 51% attack, one would probably not get any significant amount of Bitcoins exchanged into ordinary currencies, before the value of Bitcoins would plummet. Also, I believe that at the moment, there are too few merchants that accept Bitcoins, so one would not be able to order anything of significant value before merchants would react to the fraud. Do you believe that the reason why botnets have not attacked Bitcoin, is that they would not have enough to gain, or is it because they do not have enough hashing power?

If you want to profit from Bitcoins, you would not want to work against it (as was explained by Satoshi in his original paper). A 51% attack would not bring you profit, rather it would make everyone involved in the project loose, as Bitcoin's reputation would be damaged.

The other thing is getting enough hashing power. Unless you target mining-specific machines, chances of getting higher-end mining-compatible graphics cards isn't too high. So the trojan would have to rely on getting a lot of moderately powered PCs, and in order to launch a 51% attack, the botnet would have to be quite big. The biggest botnets, consisting of over 100'000 computers could potentially accomplish this, but so far Bitcoin isn't a prime target for botnet activity.


Electrum use from third-party Computer I understand that electrum offer the amazing ability to use the 12 words seed to fully restore a wallet, but that is really dangerous because it doesn't require any password.

Is there a good way to digitally store a backup that enable to regain access to my wallets by entering a password?

P.S. I can export public keys to have a safe read-only wallet backup, but if I export also the private keys will these be password-less and enable anyone who posses them to gain full control of my wallet or do they need to enter the password I provided during the creation phase?

You can set a password for your Electrum wallet by clicking the padlock symbol in the bottom right corner.

This can be a different password for each wallet. The password isn't just a barrier like the PIN of a bank card but the private keys actually are encrypted using it and AES-256-CBC (Source) which means that the password is needed to spend money. However, your transaction history, your own addresses (and therefore how much money you have) can be seen without knowing your password. This is the reason Electrum can give you this info (like your total balance) without requiring you to enter your password first.

If you want to back up your wallet, you can literally just do that because an Electrum wallet is just a single file.

The Electrum folder is ~/.electrum on Linux and Mac and described without slashes for Windows as UsersYourUserNameAppDataRoamingElectrumwallets on the official Electrum website but you'll probably find it. In it, there is a folder named wallets which is the default location for Electrum wallets. The wallets are text files which have the same name as the wallets.

Backing up the wallet files has the added advantage that you get your note-like data back (description of sent transactions, receiving notes, contacts). This obviously can't be generated from the seed because it's data entered by the user after the seed is set. However, it's written to your wallet file and if you copy it to a different computer (or the same computer later on after its hard drive exploded) you get the note-like data back.


Is "1Wh4bh" a valid Bitcoin address? The bitcoin address 1Wh4bh looks so short. Is it even a valid address?

If yes, can we send bitcoins to it?

As to elaborate on why this is accepted at all at blockchain.info, 1Wh4bh is:

>>> import base58
>>> bytes.hex(base58.b58decode('1Wh4bh'))
'001406e058'

Following https://en.bitcoin.it/wiki/Protocol_documentation#Addresses, it only contains the preface of a bitcoin address ('0x00'), and the checksum: '1406e958'. In fact, the double SHA256 of 0x00 (as the hash160 of the public key is not indicated) is:

1406e05881e299367766d313e26c05564ec91bf721d31726bd6e46e60689539a

The first 4 bytes coincide, so the checksum is right.

Because of this, the bitcoin address could be well formed... in a sense.... I suppose this is the reason why blockchain doesn't reject it.

But in fact, as no public key is indicated at all because no public key would produce a hash160 equal to the null string, it cannot be used for any purpose.

Note, also, that a null (or less than 160 bits) hashed public key is incorrect even in the case of (all) leading zeros, because Base58Check algorithm used by bitcoin preserves all leading zeroes.


how to make the first block of 200 btc? I would want that when mining a specific block was given an award that I pointed out

Want to make the first block 200BTC and all the other 50BTC how to implement it

It is possible still such variant
block 1) 50BTC
5) 200BTC
6) 50BTC

Yes, this is possible. Modify this code:

CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
    int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
    // Force block reward to zero when right shift is undefined.
    if (halvings >= 64)
        return 0;

    CAmount nSubsidy = 50 * COIN;
    // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
    nSubsidy >>= halvings;
    return nSubsidy;
}

to read

CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
    int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
    // Force block reward to zero when right shift is undefined.
    if (halvings >= 64)
        return 0;
    if (nHeight == 1)
        return 200 * COIN;

    CAmount nSubsidy = 50 * COIN;
    // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
    nSubsidy >>= halvings;
    return nSubsidy;
}


What would a new exchange need to be better than the rest? If a new crypto v crypto exchange were to be built and launched. What would tempt you to use it rather than what you currently use? Or what improvements would you like to see from the way things work now.

A popular opinion in the Bitcoin space is that transparency is key for Bitcoin businesses. Bitcoin and it's pseudonymous nature make it very suitable for scams and corruption.

Competitive fees or additional payment options are no longer the key to the success of an exchange. There are so many exchanges that you can almost certainly find what you need feature-wise. However the important question that remains is whether the exchange you found can be trusted with your money.

Proof of Reserve

Fortunately, the nature if Bitcoin's technology also has a positive side with regard to transparency: the Bitcoin block chain is public and everyone can verify it.

This allows for the possibility of exchanges to verifiably proof that they hold all the money of their customers. CoinDesk explains this here. Some exchanges like Kraken have recently published such proof of reserve.

An ideal situation would be for an exchange to provide a method that allows users to constantly verify of their money is still there. F.e. by keeping every customer's coins at a fixed address (this could be quite costly) or publishing a proof of reserve on a weekly or daily basis (this could be done automatically).


Empty wallet after making a Bitcoin purchase I am new to Bitcoin and purchased a small amount some months ago and it does not show in my wallet even after finishing syncing. How to I find my bitcoins and get them to show in my wallet?

Fill in the address in blockchain.info and see where the funds have gone.


Should I validate transactions using the rules in BIP62? BIP62 introduces a number of rules to prevent transaction malleability. However many transactions already in the blockchain fail these tests. Is BIP62 currently being used to filter transactions from entering the blockchain? If not then are there any plans by the core development team to use BIP62 like this?

Yes, you should.

BIP62 is currently not being pursued as a consensus rule on the network.

However, all its rules (including the ones that are only applied to new style transactions according to BIP62, specifically the lower-S rule) - are currently being enforced as a standardness rule since Bitcoin Core 0.11.1 and 0.10.3.

The reason for this is that at the time BIP62 was written, requiring lower-S was not feasible due to the large amount of wallets that were still creating high-S signatures. In recent times, a large fraction of them switched to lower-S, making it viable to just unconditionally apply that rule. If a significant amount of network nodes (and specifically, miners) upgrade to versions that enforce this, wallets that do not enforce lower-S will gradually stop working and need upgrading.

If that process completes and we end up in a state where near-0% of blocks still contain high-S signatures, people may want to propose unconditionally applying it as a consensus rule.


Is it possible to generate bitcoins with a Google Chrome extension? I just came across Rlweb's Bitcoin Generator, a Chrome extension that claims to be the "first google chrome extension creating Bitcoins".

This extension looks quite shady to me, they don't even have a link to their website. Is it a scam?

Would it at least in theory be possible to write a miner application as a browser extension?
With GPU support?

Edit: For completeness, I found another Chrome extension named Bitcoin Miner.
This one looks more legit, but it says it's a Flash game. It doesn't really generate bitcoins, or does it?

Well, I cannot speak for that specific generator. However there has been a javascript generator already in use and Chrome extentions are I believe javascript based, so it is very possible.

The javascript generator only uses CPU mind you, and is quite slow.

As for using the GPU, that is a possibility with some of the browser plugins out there, such as Unity. However a native browser? not very likely, they try very hard to restrict hardware access.


How does confirmation exactly work? When user A sends Bitcoins to user B, user A signs the transaction with his private key. This signed transaction is being sent to the Bitcoin network and all the nodes collect, confirm and pack these transactions to blocks by mining. Is that right so far? But what exactly happens at the confirmation. What are the nodes doing? I can't imagine what confirmation means technically. Does the transaction contain the public key and the nodes look if they can decrypt the transaction with this public key or what?

And what does it mean to wait 6 confirmations or more? (see http://bitcoin.org/en/vocabulary#confirmation). Why should one wait for a confirmation and how can one decide how many confirmations to wait? This is very unclear to me (Bitcoin newbie). The tooltip here tells me "the more confirmations a transaction has, the more likely that it will remain in the chain permanently". Why do I want my transaction to remain in the chain?

Each node checks that a transaction is valid when they learn about it. Nodes check that the used funds exist, and that they have been correctly signed for. You can think of the address as locking the funds to a specific private key. The owner authenticates themselves by using this private key to generate a signature. Private Key and address form an asymmetric key pair, so everyone that knows the address that the funds were previously sent to can verify the authenticity of a signature. Miners then collect transactions, and include them in blocks. When a transaction appears in a valid block, the transaction is considered to be confirmed.

When additional blocks are found, they build upon the longest chain that is known to the mining node. As long as there are only very few blocks stacked on top of the block in chain A that confirmed our observed transaction, there might still exist a competing chain B that could overtake and obsolete those blocks. If B contains a transaction that is at odds with our observed transaction, the observed transaction might yet be invalidated.

Each block, after the observed transaction has been confirmed, significantly decreases the chance of the block being invalidated, because a competing chain has to mine all the blocks since our observed transaction was confirmed, i.e. has to do multiple times the work of the whole network in order to catch up.

When your transaction has been confirmed six times, i.e. five
additional blocks have been found since your transaction was featured
in a block, the probability of a miner with 30% mining power overtaking the current chain tip is less
than 1%, and some consider the transaction to be reliable at this point.

Also see: Is there actual consensus on the blockchain's tip or only until the next block?


The state update order of Lightning Network when exchanging private keys and new commitment transactions I was studying Lightning Network recently and got into confusion.

I want to know that the process order of generating a new state to revoke the old state in the Lightning Network. When a new commitment transaction is generated, do the two parties firstly exchange signatures for the new transaction, and then the private key used in the previous commitment transaction is sent to the other party to revoke the previous state, or is the situation reversed?  (That is, the private key is exchanged first, and then the new commitment transaction pair is signed and exchanged).

Or there is another more specific order?

I think this is one of the situations where a video and visualizations help more than a long text. I have explained this process in this video https://youtu.be/5YfQpMITUfI at 1:13:00 during a workshop at BTC2019 in Denver.

When the funds are updated this is done with htlcs. There is an intermediate state where the recipient of funds has two valid commitment transactions but not released the recovation secret (what you called the key). This is not an issue though as they cannot steal funds by publishing the old commitment transaction as they have a lower balance on the old one. The exact process with all the technical details is also described in bolt 2 but again I think this is one of the cases where video content is more helpful than a long text which is why I decided against writing it here again which would be similar to the part in bolt 02 anyway.

In general first the new state is created and signed an then the recovation secrets are shared


disregard power costs for mining in the winter? My theory is that if you are mining in the winter you should discount power costs completely, since the heat generated by your miner will contribute to the heating of your home and thus cause your heating system to run less.  Is this valid?  The profitability calculators don't seem to take this into account.

This would be approximately true, if:

Your regular heating system is a resistive electrical heater.  (Not gas or oil, not a heat pump.)
Your mining rig produces no more heat than is needed to heat your house at any given time.  (This may be false for people with lots of hardware, or living in warm climates.  Note also that your heating needs may be much less some times of day; for instance, you probably turn down your heat when you're away from home or asleep.)
Your heating system is controlled by a thermostat in your own living space (some people in multi-unit buildings have a single thermostat for the building, or some open-loop system)
You normally pay for the electricity used by your heating system (rather than having it included in rent, for instance) and at the same price as domestic electricity use
The heat from your mining rig is circulated through your house just as efficiently as your heating system does it.

I suspect that users for whom all of these are true are in the minority.  But in general, it is true that the electricity cost can be offset to some extent by reduced heating costs; to what extent depends on each individual's situation, so it's not clear how a general-purpose calculator should account for it.  Therefore, they don't.

Note that by the same token, running your mining rig in the summer may incur additional cooling costs.  Mining calculators typically don't consider that, either.


Is the transactions in one block effect the hash of the next block? How? What I understand about blockchain is that:
Blocks are secured by the hash.
Transactions are secured by the markle-tree.

What i'm asking is, does the contents -transactions- of one block effect the hash of the next block? if so, how it happens?

If not, doesn't this mean that we can manipulate the transactions inside a block? because if we do so, the next block will have no idea what happens the previous block.

For example, lets say that we mined 10 blocks.

Then, we hacked block number 5 and changed the transactions.

How is this going to effect blocks number 6, 7,....?

I understand that if the majority of the nodes have the same values then the blockchain will be safe.

But what about a small blockchain owned by one node. In theory, does this mean that the block contents can be manipulated very easily?

Thank you

What i'm asking is, does the contents -transactions- of one block effect the hash of the next block? if so, how it happens?

Yes. The block hash of block X is explicitly included in the header of block X+1. So if you change the transactions in block X, it will affect the hash of block X, and that would change block X +1 as well.

  For example, lets say that we mined 10 blocks. Then, we hacked block number 5 and changed the transactions.

The nodes on the network that already know about block 10 would not accept your new block 5 because it is a shorter chain (less work than the chain that is at block 10). They can recognize the new block 5 as being altered because the longer chain does not include it.


What are secure ways to spend lot of bitcoins on offline generated address with keys on paper wallet Suppose I have lot of bitcoins on offline generated address and private key stored on paper wallet.

Now I want to spend/sell these bitcoins. What are secure and effective ways to do this?

I will need to load the bitcoins at this offline address into some wallet (say Electrum). So do I need to load all the bitcoins, or only some? How do I do it?

So I have to EITHER sign an offline transaction made by Electrum (to send some btc to a exchange) http://docs.electrum.org/en/latest/coldstorage.html or SWEEP them to Electrum on online computer (all btc) http://docs.electrum.org/en/latest/faq.html#can-i-sweep-private-keys-from-other-bitcoin-clients

Am I right?

What the ways to spend such large number of bitcoins on offline address and private key?

As long as you have the private keys, you can spend it yourself without using any third party wallets. This can be done by signing the transaction yourself with by running a node yourself (this is however a long process and will involve downloading the entire blockchain on a machine) and once the node is running you can check out this link to learn how to make the transaction yourself.
This would be the securest way possible since you have the control over your private keys.

As far as large number of bitcoins are considered on different addresses, if you are trying to spend all of them in a single transaction, you would pay slightly higher transaction fees. However you can spend the individual inputs too if the transaction does not require a large number of bitcoins.

The method of spending bitcoins is the same irrespective of the number of inputs you are using, so the security and vulnerability does not change with the number of bitcoins involved.


How do I upgrade my Bitcoin client? I am working with an older version of Bitcoin and want to upgrade to version .4.  Is there a specific way to do this?  I want to try to upgrade, but am paranoid that I could lose my wallet if I do something wrong.

First, you should backup your wallet.dat in case something goes wrong. The file is located in the data directory:

  Windows

  C:\Documents and Settings\YourUserName\Application data\Bitcoin (XP)

  C:\Users\YourUserName\Appdata\Roaming\Bitcoin (Vista and 7)

The easiest way to open your appdata folder is to press Windows Key-R, then type %appdata% and hit enter.

  Linux

  ~/.bitcoin/

  Mac

  ~/Library/Application Support/Bitcoin/

Then install the new version in the regular manner. The new client should use your previous settings (including the wallet and the blockchain data).
If, by some strange magic, your wallet gets corrupted, just copy your backup into the data folder.


What is #Hash in bitcoin from a layman's perspective? I am currently reading through the paper on bitcoin and being from a non IT background, I am unable to understand the use/function of hash

A hash is like a unique identifier, perhaps like a barcode, usually written in hexadecimal as a string of numbers an letters. Bitcoin specifically uses the SHA-256 hash algorithm in most places (it also uses RIPEMD160 in some places). You can 'hash' any data you like, and get such a unique identifier. For example the hash of a transaction is called the TXID (transaction ID). If you change any small part of the transaction then the entire hash changes. Same with blocks, the hash of a block header is used to uniquely identify that block and make sure nothing has changed. Anyone can verify that the header hashes to the same hash, to test for integrity. And it is also used to make mining difficult - a special requirement is placed on each block hash that it has to be less than some target (or that it has to start with a certain number of 0s). One of the key aspects of a hash is that there is no way to reverse it, hashing is a one way function, you cannot take a hash and find out the data it came from.


Why validate past the first node? In Grokking Bitcoin on page 7, it is noted that:

  Invalid transactions are dropped.  They will not reach further than the first node.

If so, why do nodes after the first node continue to validate the transaction?  If the node is not the first node to receive the transaction, doesn't that mean its valid -- otherwise it would not have reached further than the first node.

Can't the nodes just receive a broadcast of the tx and save themselves from the redundant verification?

This describes what the first node is supposed to do.  However, there's no guarantee that they will actually do it - they could be running modified software that passes along a transaction even though it is not valid.  The other nodes have no way to ensure that the first node is well behaved, except to redo the check for themselves.

This goes back to the trustless and decentralized nature of Bitcoin.  You don't want to have to rely on other people to avoid being cheated - you want to be able to verify everything independently.


cgminer Rejected as lowdifficulty I got an issue with cgminer constantly rejecting shares. How can I fix it?

Here's example rejection (note that Diff jumps - sometimes it's 6/1 sometimes it's 1/1) :

[2013-04-09 14:24:05] Rejected fe26cac1 Diff 4/1 GPU 0 (lowdifficulty)

Here's the .bat file I use:

cgminer --scrypt -o eu-stratum.btcguild.com:3333 -u MyUser -p 123

My OS is Win 7 32 bit.

I had this issue also the fix for me was  adding--scrypt -o to the beginning so it look like this :

--scrypt -o stratum+tcp://stratum.scryptguild.com:3333  -u iwantcoins_nick -p nopw --load-balance


Is there a script for bitcoin core which prints all spendable UTXOs given a private seed? I am looking for an open source script or application which would take a private wallet key from the user (from terminal input or file, as mnemonic or xpriv string) and then connect to a bitcoind and output all UTXOs which are owned (spendable) by that key. Does something like that exist?

You can import a descriptor composed of the xpriv(s) (or xpub(s) if you just want to watch the coins) to the bitcoind wallet, and then rescan the block chain for transactions involving derived key up to a configured gap limit.
For importing the descriptor, use the importmulti RPC call in versions <0.21 and the importdescriptors RPC as of 0.21 (upcoming).
Both calls allow you to pass a creation timestamp in order to rescan the block chain from this point. You can otherwise manually call rescanblockchain.
Note that, depending on the number of blocks you are scanning, it will take some time. You can monitor the progress in your debug.log.


Bitcoin-qt -testnet 0.17.1 Send and Receive buttons do nothing Fully synced on testnet blockchain after building Bitcoin with UI and wallet enabled on Ubuntu 18.10.

Pressing Send and Receive buttons results in no UI displayed.

Receiving addresses dialog doesn't have New button in this version so it can't be used.

Debug window getnewaddress worked, however, and I was able to receive some coins from coinfaucet.eu using that address.

After receiving coins Send button still doesn't result in any UI displayed.
Receiving addresses menu/resulting dialog now shows the address that coins were received at (the one obtained via getnewaddress).

I see the same behavior of buttons when synced on the main net but couldn't test sending or receiving the real Bitcoins.

What can I do to debug this issue without getting deep into the (quite unfamiliar at this point) source code? I compiled bitcoin with optimizations enabled.

Here is a link to the debug.log created in the following way: exited bitcoin-qt and renamed original log which was huge. Restarted bitcoin-qt with options -testnet -debug=1. Clicked on Send, Receive and Transactions buttons. Exited bitcoin-qt.

I believe I should answer this question for the people who may stumble here and would like to know right away what is this issue all about.

If you are building from source and configure your build like:

./configure --with-gui --disable-wallet --SOME-OTHER-OPTIONS

and then you decide you want the wallet and go back to configure and rebuild without --disable-wallet, that is:

./configure --with-gui --SOME-OTHER-OPTIONS

make sure you run make clean before rebuilding.


How to turn my bitcoins into legal money For a while now I have been mining and have now got 5 Bitcoin which I'm ecstatic about as it means once I have the money for it, I'll be £13k richer and can put a deposit down on a house.

Whilst I can mine and know how to sell the Bitcoin, I don't know how I'd do these legally.

If I simply just sell them, surely I'd need to put tax on them or something to comply with UK tax laws?

If I was to use the money to put a deposit down, they're going to want to know where the money has come from and whether it's legal money and no doubt the bank will go through my accounts very precisely.

Bitcoin acquired through mining are treated as income and subject to Income Tax at the appropriate rate (perhaps 40% if you also have a highly paid job). You'll need to declare this income in sterling equivalent. I believe you'll also be subject to NI contributions on those Bitcoin earnings.

If earned Bitcoins subsequently increase in value, I suspect the increase will be subject to Capital Gains Tax.

As others have said, employing a qualified accountant would be a sensible action.

HMRC Brief 9 - Bitcoin and other cryptocurrencies


Fundamentally what is the difference between the EOS and Ethereum platforms? I know one platform is owned by a company, block.one which owns 10% of all EOS tokens, I'm aware of their ICO structure and it seems their tokens are used as a sort of API token - some have called the ICO and EOS a real estate purchasing system.

Contrasted to Ethereum where ether tokens are used to fund commands performed on the decentralized machine that is the EVM (Ethereum Virtual Machine) which can be in the form of account transfers to calling a function on a smart contract.

However, fundamentally what is the difference between these two platforms? How do they work and how are they different?

The jump between Ethereum to EOS isn't nearly as big as was from Bitcoin to Ethereum. The same concept of using smart contracts applies, but EOS has the following "improvements":

1) Ethereum is currently partially proof-of-stake but will be fully soon. EOS is launched as completely proof-of-stake.

2) EOS has no transaction fees. The developers realized that fees limit the growth of the network, because no dAPP running hundreds of transactions per second wants to pay a fee. The incentive to "Stake" your EOS tokens and confirm transactions as a block producer comes from inflation... at the rate of 5% per year.

3) EOS will certainly handle thousands of transactions per second when they mainnet launch in June. Ethereum currently has 7 tx/sec, which will very likely increase significantly. However, by that time EOS could potentially be running hundreds of thousands of tx/sec as their code is meant to run on parallelized servers.

4) Uses 21 block producers that act like state governments to that can vote to make changes to the constitution. Users and dAPPs vote for block producers that they think best benefit the community. Ethereum dAPPs don't have this governance structure, but there are a few emerging (ie. 0x).

5) Plans to implement cross-chain communication using state channels. This would mean EOS interoperability with Ethereum and Bitcoin. Technically Ethereum can do this, but EOS is heavily developing on this concept at the moment.


Can you help me tell if my new out-of-the-box ssd for a Pi4 myNode project is DOA? Trying to setup a node on a Pi4 with ssd and blockchain appeared to be downloading well. My router said I was gobbling data for 2hrs. Then I received the "Looking for Drive" message. I rebooted once, then shut down once, then rescan which didn't seem to take and then reset . I don't think reindexing is going to do anything.

Would the upgrade from 2.0 to 2.04 help?
or
Can I get any confirmation on here it is a DOA ssd out-of-the-box?
I watched it reboot and the SSD light flashes 3x's and it did this 3x's in a row, waited a few seconds did it one more time, waited a few seconds then blinked constantly for two minutes until I shut it down.

Thank you,

You could try attaching the SSD to a different computer and run diagnostics on it. If the SSD gave out, upgrading the software would be unlikely to help.


Networking in cryptocurrency I am learning and trying to implement my own cryptocurrency and I am thinking about how could I achieve the peer to peer connections.

I read that bitcoin is using DNS seeds for discovering users.
In such case when running full node at home, one must configure his router to forward the port, firewall, etc..

What do you think about webRTC technology? Do you think this could be good way of solving p2p network? In this case, no router configuration is needed and firewall is ok.

Do you see some pros/cons of these aproaches?

To deal with WebRTC u need to understand SIP which is big deal already.
Once u understand SIP u know then that u need server. Many servers.
Read more here https://bloggeek.me/webrtc-not-p2p/
Sounds like totally away from Crypto.


Which scripts are currently considered standard and therefore actually propagated? All I've learned about script so far is that while theoretically quite versatile (e.g. allowing multisignature transactions) most scripts are simply not propagated by the default client nodes, i.e. while you can easily transfer funds to a script, you may end up having a difficult time of ever spending these transactions. So, what makes a script standard/non-standard, is there a list of scripts currently supported by the network?

I know of four standard scripts.  As Luca said, the source code for the reference client is the protocol definition, so you need to read the code to get the definitive answer.  As Peter noted, a standard script is one that is relayed by the reference client.  A non-standard script will not be rejected if it is in a block as long as it is a valid script.

The ones that I know are:

Pay-to-PubKey-Hash: This is the standard payment to a bitcoin address.  The address is in the output and the signature and pubkey are in the input.
Pay-to-Pubkey: This is a payment to a pubkey.  The pubkey is in the output and the signature is in the input.
Pay-to-ScriptHash: This is being used for some of the fancier payment transactions.  A script hash is in the output and the signature and a serialized script are in the input.  On the first pass, the script hash is verified against the serialized script.  If it checks, then the serialized script is expanded and a second pass is done using that script.
Pay-to-MultiSig: Multiple signatures are required to sign the script.  The output contains the pubkeys and the input contains the signatures.  All signatures must be verified by one of the pubkeys but there can be more pubkeys than signatures.  The current limit for M of N scripts is N=3.


Is it possible to get the public key of a bitcoin address I do not have the private keys for with the standard client? It is possible to get it from here:
https://blockchain.info/de/q/pubkeyaddr
https://blockchain.info/q

Is it possible with the standard client? How?

I am aware that the blockchain only contains the pubkey after a tx from that address.

It is impossible to compute the public key of an address, as the address is computed from the hash of the public key. You can retrieve the public key from address with the reference client using the validateaddress RPC call (or in the debug window of Bitcoin-Qt), but that simply fetches it from the wallet, and only works if the address belongs to you.
Update: you need to use getaddressinfo now instead of validateaddress.


Is it safe to store all my coins on Coinbase? Is it safe to store my coins (BTC & ETH) on the Coinbase platform or is it safer to download a wallet to keep them in?

I would recommend diversifying your btc holdings as much as possible. What if something happens to your wallet? That wouldn't necessary be better than coinbase. You could keep some in a personal wallet, some on several exchanges. Ideally by diversifying your capital, you can some what mitigate commonality of the risk. This prevents the possibility of a single devastating loss.

That said consider some alternative, if there is a single fault, but the probability is very low, that may be a good choice.

Consider https, which typically relies on one main root of trust who's security has been well verified, compared to some of googles authyoath crap (which places trust on a diverse sequence of relatively completely insecure mechanism) which have been hacked whilst https remains secure.

P.s. Google, stick to search engines.


Unable to mine on testnet I want to try mining on testnet, I'm using cgminer and I got it working on the main network but when i'm runnig it on testnet I got (in debug mode):

] Testing pool http://127.0.0.1:18332
] Probing for GBT support
] HTTP request failed: The requested URL returned error: 500 Internal Server Error
] Failed to connect in json_rpc_call
] No GBT coinbase + append support found, pool unusable if it has no stratum
] HTTP request failed: The requested URL returned error: 500 Internal Server Error
] Failed to connect in json_rpc_call
] No Stratum, GBT or Solo support in pool 0 http://127.0.0.1:18332 unable to use

I've tried with the generate=0 and gen=0 options but it seems to have no effect.

Currently my .conf file looks like:

testnet=1
server=1
txindex=1
rpcallowip=0.0.0.0/24
rpcbind=0.0.0.0:18332
printtoconsole=-1
debug=1

I'am running bitcoind version 130100.

It seems that many tuturials are outdated and that some options/features changed (like bitcoin core Removal of internal miner)Is there something that I've missed ?

EDIT:
@lavajumper: actually you where right about rpcallowip, but in my case there were others rpcallowip definition and it wasn't the cause of my problem (0.0.0.0/24 leads to a 403 (unauthorized) error).

After upgrading the version of bitcoind (version 140100, protocolversion 70015), I was able to run it, (but during the blockchain verifcation, there were 500 errors too).

For now i'm stil not able to run it with bitcoind 130100, and i don't know why...

One possible reason may that with Bitcoin Core 0.13.1, it was mandatory to use SegWit-compatible mining software. When SegWit transactions are included in a block, a coinbase commitment to the witnesses is required by consensus rules. As the eventual selection of transaction in the block is done by the mining software, old mining software cannot be used to construct a SegWit block. On testnet, SegWit (BIP141) has been active since May 2016.

In Bitcoin Core 0.14, a change was made that permits old mining software to continue to operate. When such software is detected, Bitcoin Core will simply return a block template that excludes any SegWit transactions, alleviating the need for a coinbase commitment.


Multisig address for website? I am trying to sort out the use case of a published funding address on a web page, to which everyone can spend. Internally in our company, I want to avoid, that a single person can spend these funds. It shall require  more than one signature, to be able to spend the funds. I had the idea to use a multisig address, but this seems to be unsuccessful. The many stackexchange links don't cover this scenario, they all seem to cover how to spend from msig addresses...

When using a multisig adress, it looks like spends to this address requires the redeemscript. All examples I found use the redeemscript. So this is somehow a no-go for a multisig address on a webpage?

What I have done so far:
- I was thinking that "people" could send to the msig adress from a normal wallet (aka P2PKH script). That doesn't work out, as the pubkey script wouldn't find "true" on the stack. Given a standard pubkey script would require s.th. like this:

    DUP     HASH     PKH     EQ_VFY CHK_SIG
     |       |        |        |      |
     |       |        | PKHASH |      |
     |  PK   | PKHASH | PKHASH |      |
PK?  |  PK   |   PK   |  PK    | PK   |
SIG  |  SIG  |   SIG  |  SIG   | SIG  |  TRUE/FALSE

The first column (SIG and PK?) being the sigscript. For the multisig address there is no public key in the first column. For sure I could play with the redeem script at the very beginning, and hash it, to satisfy the "OP_EQUALVERIFY". But then the script wouldn't terminate "TRUE" at the end, cause it would leave the sig and a "hashed" hash on the stack.

I could publish the redeemscript. Disadvantage: this makes the user experience difficult
I could use a std. P2PKH address, and "forward" regularely the funds from the webpage P2PKH address to a multisig in the background. Disadvantage: with current fees, nearly idiotic, when only small amounts are spent. (Yes, I could write code to collect until spent amount >= tx fees ...)

Is there an easy (more intelligent) way to receive bitcoin payments on a website, that come with a condition to be spent only with multiple signatures?

Are you saying it's difficult because the user would have to sign their own transaction manually? P2SH isn't really at a "typical" user level. For multisig to work as it's intended to, it assumes each potential signor knows how to sign a transaction. A website that would require it's users to sign their own P2SH transactions would have a pretty small target audience. Aside from building your own native desktop app that makes multisig signing easy for the average user, I'm not sure what other options you would have.


Release A Bitcoin From Multi Sig Address? I just made a multi sig address from 3 address bitcoin and the result from that is 3Gf18oGoTaNCW38dVKe2ygNpUvUJmg6TY9

and i want to know how i can release the bitcoin ?

So you made the multisig address through bitcoind? if you have all the private keys related to that multisigned address added and in your wallet it should be automatically included in your balance and spent.

Quote from Gavin Anderson (How does one make multisignature transactions with the bitcoin client?)
First answer there

spending of multisignature transactions-- if all of the private keys required to spend a multisignature transaction are in the wallet, then those coins are added to the wallet's total bitcoin balance and that transaction will be spent if the normal coin-selection code decides to use them for a spending transaction.

if you require instructions for a specific wallet or a middle-agent website then it would be useful if you mention what exactly it is.


Why do people go looking for old hardware that has a wallet? Don't you just need the recovery phrase to get your bitcoins back if your computer is lost or damaged?

I don't understand these stories of people trying to find old computers with wallets on them at the dump.

Are you talking about the people who mined or bought bitcoins in 2009 - 2011 and are surprised that the price is that high now?

HD-wallets (wallets with such a recovery phrase, it's called seed) are available since BIP 32 and that was around 2013.

So they don't have such a wallet and can't recover anything. That's why they search their old hardware.


Hacked my blockchain.info wallet, stole 760 coins Two days ago my wallet at blockchain.info was hacked, everything was taken (760 coins).

https://blockchain.info/tx/0619d221a761a3b8ec205773440fa6607d65957ef985dac5fb5273a08bda2c89

Besides the password I use Google two step verification. I also use this on the gmail that I use to authorise computers, anybody knows how this could have happened?

I backed up my wallet to Google Drive.

Could you be more specific on which 2 way authentication you used?
What where the exact steps so we can rebuild the scenario or at least understand what happened exactly.

If it was email by gmail consider the machines you used the blockchain.info/ gmail on as compromised. Most probably all login forms on this machines have been grabbed.


Should I run the tests every time I review an open Bitcoin Core PR? I am reviewing an open Bitcoin Core PR. Should I run the tests or can I rely on the CI (continuous integration) output to catch test failures?
If I am to ACK a commit should I seek to catch flaky tests, run tests on different hardware, try extra test cases manually?
This question was asked by robot-dreams on IRC.

The Bitcoin Core contributing guidelines recommend that post Concept ACK, Approach ACK:

A review begins with ACK BRANCH_COMMIT, where BRANCH_COMMIT is the top
of the PR branch, followed by a description of how the reviewer did
the review.

As you suggest "I ran the tests on typical hardware" generally isn't particularly useful as Bitcoin Core has solidly improving CI tools but there are exceptions e.g. a GUI change is not covered by tests and there would be value to running tests for certain IBD, validation changes, nontrivial changes too.
Depending on the nature of the PR you may want to perform a less trivial workflow such as sending and receiving transactions.
To get additional assurance that you are comfortable with the code change you could add debug prints, asserts, custom logging and sanity checks. You could change the patch or use debugging tools like gdb and lldb.
You can break many things without the CI or test suite picking it up. Manual testing can catch things that might be missed in code review. You might see warnings or errors when debug building PRs that you might not see otherwise, either because it's buried in one of the CI job logs or because your compiler or configuration or system is different.
If the PR is implementing a particular BIP you could find a particular rule from the BIP in the code, mutate (break) the code and check that test(s) fail as a result.
Another thing to consider is whether the additional tests added in the PR are sufficient.
[edit: An example of something you can test that the CI won't test is to change a line of code in the PR, rebuild (i.e. run make again) and run the test (or multiple tests) that you expect to fail as a result. Jon Atack suggested this is a good way of reviewing PR #19951 which at the time of writing (September 2020) is open and seeking review.]
This answer was collected together from comments from sipa, jonatack, hebasto, jnewbery, robot-dreams, instagibbs on IRC.