What Bitcoin wallet will allow me to participate in an ICO? I have bitcoins stored in an online Coinbase wallet. I've read this wallet should not be used for investing in an ICO as this will be Coinbase's wallet (not mine) and I won't have access to the private keys.

Is this true?

I looked into creating a multi-sig Coinbase vault as this seems like a good and safe middle ground. However, I noticed the vault has a 48 hour waiting period which is not desirable for buying into an ICO.

I'm running Mac OS X. Is Electrum wallet this best way to go about this?

What do people recommend?

Coinbase is mostly used to buy Bitcoins and hold your bitcoins, It is indeed YOUR WALLET, the vault portion of it is actually the best feature they have. You are required to confirm removing the coins often via your phone, and two email address and it gives you 48 hours to cancel on any of the devices.

In my book, this is what a vault means to me, multiple check points before they even move anything out.

Then once they are out they can be moved to any address of your choosing.  Including exchanges like HitBTC which is one I like to sale BTC / BUY ETH for instance, or to another coin or ICO. Most coins I mine can be sold, to purchase BTC and return the funds to Coin Base, and added to the vault for long term.


How to re-connect to `bitcoind -printtoconsole` after socket timeout? I started bitcoind with the option -printtoconsole to check for errors and my terminal ssh connection was timed out during the night - probably because my computer was in hibernation.

I see that the process is still running under top.

Is there an option to reconnect so that it will print the output to a new ssh connected shell?

I don't think you can reconnect to it easily, but for next time, you could create a screen session and start bitcoind inside of it. That way you could reconnect to it with screen -r


When was the Binance ICO? Writing a research article on Binance, and I'm trying to work out when their ICO was, and when they opened doors to their trading platform. Does anyone have an authoritative source for this?

I can see on Crunchbase that they raised 10m USD in 2018, and it also lists an ICO in September, although some ICO websites claim their ICO was Dec 31, and others in July. Sites seems to agree the ICO was 15m USD.

Is there an authoritative source for when Binance started, and when and for how long their ICO ran?

According to the BNB whitepaper, written by Binance, the Binance project started on 2017/06/14, the ICO started on 2017/07/01 and the ICO finished on 2017/07/21.


Why does Ripple's consensus process have a 80% threshold? A transaction is confirmed if 80% of the nodes in the UNL accept it. Where does this 80% number come from? Could it just as well have been 79% or 81%? What about 51%?

Can different nodes have different thresholds (for faster transactions, say), or must they all follow the same rule?

If validators waited until other validators declared consensus to declare consensus themselves, no validator would ever declare consensus. So you must declare consensus and hope you turn out to be right. Most of the time you will be. If not, you will later not be mathematically certain of the results and will not pass them on to clients.

If you use a 75% threshold for mathematical certainty, many times you wouldn't be certain and would have to repeat the process. If you picked a 90% threshold for mathematical certainty, you'd be certain almost all of the time, but you'd be wasting time.

The video is a bit misleading. In fact, any threshold could be used and you would still have mathematical certainty if you actually did reach consensus. However, if you set the threshold too low, you would only rarely have certainty. 80% is the threshold we've chosen for mathematical certainty because it's a compromise that results in certainty being reached often and quickly.

Maybe that's not clear enough. Let me try it another way. When we report a transaction as fully validated, we want to be mathematically certain of that. We will not make such a report until we are. Choosing 80% as the consensus threshold allows us to reach consensus quickly, requires at least 20% of validators to be completely malicious to delay consensus, and allows us to (in a later step) be mathematically certain of the result almost all of the time.

Note that almost all of the time is not always. Sometimes, we reach 80% and later are not certain of the results. In that case, we wait until the next consensus round completes and hope we fare better in that one.

Say for some stupid reason you set your threshold to 10%. You would think you had consensus all the time. But equally obviously, a lot of the time there would be no actual consensus. If there were, you could be certain that it had happened (because you would see it). But it often wouldn't happen, and then validators would have to resynchronize and clients would be waiting patiently for the network to fix itself so their transactions can be confirmed.

Ledgers that pass the consensus process are still held up by the "validation gate". They are not reported to clients as "fully validated" until they pass this gate.

80% worked very, very well in simulation. Validators are free to change this threshold if they want. Perhaps in a future network topology, a different threshold will give better performance characteristics.

It's hard to write clearly at 3AM. Maybe I'll rewrite this when I'm more awake.


When you trade on an exchange where does the bitcoin or other crypto go to Do exchanges use an intermediate address when fulfilling transactions or is it always user to user when buying/selling between cryptocurrencies?

I believe exchanges mostly hold Bitcoin in addresses that belong to the exchange, not to their customers.

This has benefits for them:

They can then transfer Bitcoin amounts between different accounts for users of their service without the need to create any Bitcoin transactions and pay associated mining fees.
They can then create aggregate Bitcoin transactions which reduce transaction fees when paying to non-customers or into wallets not controlled by the exchange. For example they can create one transaction with one input and ten outputs instead of ten transactions each with one input and one output.

There are implications for the customers of the exchange

The exact details will depend on exactly which "exchange" you are using and may change over time.

If you use the "exchange" to pay BTC to someone who is not a customer of the same "exchange", there will be a record in the blockchain but it may not be possible to identify which customer of the exchange initiated the transfer.

If you use the exchange to buy BTC with USD or ETH, or vice versa, there will generally be no transaction recorded on the blockchain if, as many do, they keep your account balance and other details in a database that is completely separate from any actual cryptocurrency-wallets.

This is analogous to the distinction between a "custodial-wallet" and a desktop-wallet. WIth the first you are not the actual owner of any Bitcoins, you are effectively the creditor of a debt denominated in Bitcoins.


Problem of crashing command on "lightningd/lightningd --network=testnet --log-level=debug" When I try running the "lightningd/lightningd --network=testnet --log-level=debug" after sucessfully starting the Bitcoin server using the "bitcoind -daemon -testnet" ,following issue occurs:

lightningd/lightningd --network=testnet --log-level=debug
2018-02-12T12:34:40.313Z lightningd(14966): Trying to guess public addresses...
2018-02-12T12:34:40.313Z lightningd(14966): Address 192.168.0.73:9735 is not routable
2018-02-12T12:34:40.313Z lightningd(14966): Failed to connect 10 socket: Network is unreachable
2018-02-12T12:34:40.313Z lightningd(14966): testing /home/blockchain/lightning/lightningd/lightning_channeld
2018-02-12T12:34:40.314Z lightningd(14966): testing /home/blockchain/lightning/lightningd/lightning_closingd
2018-02-12T12:34:40.314Z lightningd(14966): testing /home/blockchain/lightning/lightningd/lightning_gossipd
2018-02-12T12:34:40.315Z lightningd(14966): testing /home/blockchain/lightning/lightningd/lightning_hsmd
2018-02-12T12:34:40.315Z lightningd(14966): testing /home/blockchain/lightning/lightningd/lightning_onchaind
2018-02-12T12:34:40.316Z lightningd(14966): testing /home/blockchain/lightning/lightningd/lightning_openingd
2018-02-12T12:34:40.471Z lightningd(14966): Client: Received message 11 from client
2018-02-12T12:34:40.480Z lightningd(14966): Loaded 0 invoices from DB
2018-02-12T12:34:40.480Z lightningd(14966): Client: Received message 9 from client
2018-02-12T12:34:40.480Z lightning_gossipd(14974): pid 14974, msgfd 12
2018-02-12T12:34:40.481Z lightningd(14966): Loaded 0 channels from DB
bitcoin-cli exited with code 1: error: Could not locate RPC credentials. No authentication cookie could be found, and no rpcpassword is set in the configuration file (/home/lightning/.bitcoin/bitcoin.conf)

2018-02-12T12:34:40.518Z lightningd(14966): bitcoin-cli exited with code 1: error: Could not locate RPC credentials. No authentication cookie could be found, and no rpcpassword is set in the configuration file (/home/lightning/.bitcoin/bitcoin.conf)

Log dumped in crash.log
2018-02-12T12:34:40.545Z lightningd(14966): FATAL SIGNAL 6 RECEIVED
2018-02-12T12:34:40.548Z lightningd(14966): backtrace: lightningd/log.c:486 (log_crash) 0x410b18
2018-02-12T12:34:40.561Z lightningd(14966): backtrace: (null):0 ((null)) 0x7fc0b7dc24af
2018-02-12T12:34:40.561Z lightningd(14966): backtrace: (null):0 ((null)) 0x7fc0b7dc2428
2018-02-12T12:34:40.561Z lightningd(14966): backtrace: (null):0 ((null)) 0x7fc0b7dc4029
2018-02-12T12:34:40.561Z lightningd(14966): backtrace: lightningd/log.c:575 (fatal) 0x410f52
2018-02-12T12:34:40.561Z lightningd(14966): backtrace: lightningd/bitcoind.c:723 (wait_for_bitcoind) 0x4056c9
2018-02-12T12:34:40.562Z lightningd(14966): backtrace: lightningd/chaintopology.c:723 (setup_topology) 0x407bd8
2018-02-12T12:34:40.562Z lightningd(14966): backtrace: lightningd/lightningd.c:331 (main) 0x40f258
2018-02-12T12:34:40.562Z lightningd(14966): backtrace: (null):0 ((null)) 0x7fc0b7dad82f
2018-02-12T12:34:40.562Z lightningd(14966): backtrace: (null):0 ((null)) 0x403248
2018-02-12T12:34:40.562Z lightningd(14966): backtrace: (null):0 ((null)) 0xffffffffffffffff
Fatal signal 6. 0x410bfe log_crash
    lightningd/log.c:512
0x7fc0b7dc24af ???
    ???:0
0x7fc0b7dc2428 ???
    ???:0
0x7fc0b7dc4029 ???
    ???:0
0x410f52 fatal
    lightningd/log.c:575
0x4056c9 wait_for_bitcoind
    lightningd/bitcoind.c:723
0x407bd8 setup_topology
    lightningd/chaintopology.c:723
0x40f258 main
    lightningd/lightningd.c:331
0x7fc0b7dad82f ???
    ???:0
0x403248 ???
    ???:0
0xffffffffffffffff ???
    ???:0
Log dumped in crash.log
Aborted (core dumped)

Can anybody please solve my issue and explain me what is exactly happening!

The issue seems to be contained in the error message.

Could not locate RPC credentials. No authentication cookie could be found, and no rpcpassword is set in the configuration file (/home/lightning/.bitcoin/bitcoin.conf)

So, set rpcuser and rpcpassword appropriately in ~/.bitcoin/bitcoin.conf.


Interesting find!

  when it happen?

2012-03-09 19:20:14, according to blockchain.info.

  why it happen?

It seems that someone was using a faulty signing process. The R value will only be the same if the same k value is chosen during the ECDSA signing process.

  how it Happen?

Hard to say, as the person who made that transaction is probably hard to find. It could have been done by faulty software, or it could have been done intentionally to see if anyone would recognize it and steal the coins (since using the same k value twice on different signatures leaks the private key).


understanding bech32 Addresses / BIP173 question I try to understand the code from the BIP173. I read the BIP, the links to RFC3548 or z-base-32, the base32 proposal by Mark Friedenbach, and some posts here.

Q1: how to interprete script handling?

I thought to understand, that bech32 is a representation of an address (encoding a hash of a public key), and has nothing to do with scripting. I got confused, in the example section it says:

  All examples use public key 0279BE66... The P2WSH examples use <key
  OP_CHECKSIG> as script.

In a std tx I would have the sigscript with the signature and e.g. a pubkey. So for the spending tx, it is checked, that the pubkey matches to the signature. Is the same true for a bech32 address (besides being in the witness section)?
Is there an example with a multisig tx with only bech32 addresses?

Q2: what is the "GEN = [0x3b6a57b2 ..." line?

In the Specification/Checksum section it says:

def bech32_polymod(values):
  GEN = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3]
  ...

I am wondering, what these values do, where do they come from? I also looked into the C code, but
 there is no further explanation. Where can I find it's meaning?

how to interprete script handling?

What you're missing is that BIP173 is not a way to encode public keys or scripts. It is a way to encode segwit transaction outputs. What those outputs are and mean is currently in BIP141 and BIP143 - but may change over time, without BIP173 changing.

All segwit transaction outputs (current and future) have the following structure:

a single opcode between OP_0 and OP_16 (whose numeric value is what we call the witness version)
a push of a byte array between 2 and 40 bytes (which we call the witness program).

BIP173 simply encodes a witness version number and a witness program. Nothing more and nothing less. It does not care what those things mean.

Currently there are 2 types of native segwit outputs defined:

P2WPKH: pay to witness pubkey hash. The witness version is 0, and the witness program is the 20-byte RIPE160(SHA256(pubkey)).
P2WSH: pay to witness script hash. The witness version is 0, and the witness program is the 32-byte SHA256(script).

Segwit addresses, as defined in BIP173 permit encoding the two types above, but also all potential future witness output types, as they simply encode a version number and program bytes, whatever they are.

Some of the examples in the BIP use real witness versions and programs of those two types, and for clarification the keys and scripts are listed. But BIP173 doesn't really care what they are.

To learn how payments to public keys and multisig scripts are done in segwit, look at BIP141 and BIP143.


Paper wallet vs wallet.dat on memory stick for long term storage? What does everyone think? Also what are the advantages and disadvantages of each one?

Paper wallet:

pros:

easy to store
easy to create
provide the same amount of security as the fiat money does
you don't need to worry about viruses
valid for a long time

cons:

easy to be misplaced
if you cannot provide phisical security, it is more likely useless

wallet.dat on pendrive

pros:

none, in my opinion

cons:

easy to be misplaced
pendrive can become corrupted in the next few years, due to hardware deterioration
it can easly be stolen or copied
again, you need to provide phisical security
wallet.dat format can change over time, thus making your data hard to recover (depends on the future decision of devs)


Unsure order of 12 word mnemonic I have a 12 word mnemonic but I'm unsure of the order, I know that the BIP39 mnemonics use a checksum, are there any tools I can use to re-order the 12 words correctly so that they pass the checksum?

The bitcoin-explorer (bx) command at mnemonic-to-seed throws exceptions if the checksums don't don't add up.

When you find combinations of BIP 39 words that pass checksum tests, then perform an operation like this to identify Bitcoin compressed Bitcoin addresses that might have funds:

% echo "bunker wreck real edge inflict aerobic buddy mercy divorce wolf bright immune fat foot poet section sustain reveal unique reflect have latin problem chapter" | bx mnemonic-to-seed -p 123 | bx hd-new | bx hd-private -d -i 44 | bx hd-private -d -i 0 | bx hd-private -d -i 0 | bx hd-public -i 0  | bx hd-public -i 0  | bx hd-to-ec | bx ec-to-address -v 0

1Ec2nBkUMSQmmhxWeXMB98gFVCKTmHbRJb

Then examine the results of https://blockchain.info/address/1Ec2nBkUMSQmmhxWeXMB98gFVCKTmHbRJb to see if there was ever any wallet activity for M/44'/0'/0'/0/0.

This approach for older BIP 44 P2PKH addresses can be automated with scripts. This approach can also be extended to accommodate newer segwit-related BIP 49 P2WPKH-nested-in-P2SH addresses that begin with the number 3. The basis for doing so is provided below.

% echo "bunker wreck real edge inflict aerobic buddy mercy divorce wolf bright immune fat foot poet section sustain reveal unique reflect have latin problem chapter" | bx mnemonic-to-seed -p 123 | bx hd-new | bx hd-private -d -i 49 |  bx hd-private -d -i 0 | bx hd-private -d -i 0 | bx hd-private -i 0 | bx hd-private -i 0 | bx hd-to-ec | bx ec-to-public | bx bitcoin160
351d3fffea471eb3740a5661cf059b5eb73483dd

% echo "0 [351d3fffea471eb3740a5661cf059b5eb73483dd]" | bx script-to-address -v 5
35QwHbjUTo31tyTJruMPbrokCqjaTVdmTr


Transaction refund address In the what’s new in Bitcoin Core 0.9.0 notes there is a reference to a refund address. I tried to look it up in the forums and the wikis but I came up with nothing.

How can I set a refund address when sending money from the QT client?
How can I retrieve the refund address for a transaction from bitcoin-cli?

This is my understanding based on reading BIP 70 and the Bitcoin Core source, and a few tests.

A BIP 70 payment request contains, among other things, a destination address, an amount, and an HTTPS payment URL.  When you open the payment request with the Bitcoin Core client (as a file or via a bitcoin URI with an embedded link to the payment request), you are shown the Send dialog with fields pre-filled as per the request.  When you click "Send", the transaction is signed, but rather than being broadcast on the p2p network immediately, a message is POSTed to the payment URL, containing the signed transactions and also a refund address.  It is then the requester's responsibility to broadcast the transaction after checking that it matches the request.

So in particular, the refund address is sent directly to the recipient over HTTPS, who is responsible for storing it in case it should later be needed.  It is not part of the transaction, is not sent on the Bitcoin p2p network, and never appears in the block chain (unless it is later actually used to send a refund).

Bitcoin Core will automatically generate a refund address; the GUI doesn't provide an option to let you specify it.  Actually, the details are as follows: it checks for an account named "Refund from [requester]".  If that account exists and contains an address, it uses that address as the refund address; otherwise it creates the account and a new address within it (from the key pool).  So you can find the refund address via the getaddressesbyaccount console command, but it doesn't appear to be otherwise exposed by the GUI.

You can try this: there is an online payment request generator for Testnet (and its source).  If you generate a request, open it with Bitcoin Core, and send the payment, you will find that listaccounts shows a new account named "Refund from www.bitcoincore.org", and getaddressesbyaccount "Refund from www.bitcoincore.org" will show you the refund address that was generated and sent.


Is there anything I can do to speed up the synchronization of litecoinj? I am using litecoinj which is forked from bitcoinj but compared to bitcoinj, the wallet creation and block synching is slow when using litecoinj. So, I searched for a solution and found a post that suggests to download checkpoints in a file and pass the file while creating wallet, but I guess it's not working.

kit.setCheckpoints( new FileInputStream("checkpoints"));

How can I speed up the syncing of litecoinj?

So after digging I got the solution, using this kit.setCheckpoints( new FileInputStream("checkpoints")); it was checking the file in the same package so to provide the exact path I have used
kit.setCheckpoints( ReadProperties.class.getClassLoader().getResourceAsStream("checkpoints"));


How can I set up a simple single page store that accepts Bitcoin payments? I am looking to set up a simple single page store. This store should respect the privacy of users by not requiring personal information where none is needed. I want to retain control of the funds, I don't want to sign up with an exchange, but want payments to go directly to my wallet. How can I achieve that?

If for you it's ok to use 3rd parties' services, a simple google search will present to you several plug-ins that suit your purpose.

If you want to do it by yourself, here is how you may want to tackle this endevour:

you must have an HD wallet (aka deterministic wallet compliant with BIP 32).
you put your XPUB in your server and you use it to generate dynamically the public keys that will be shown to your customers.
You want to make sure that every customer sees a different public address, so that when you receive a payment you will know who paid for what. If you always use the same public address (besides compromising the privacy of all parties involved in the transaction) you won't have any way to know which customer paid for what product. More on this point later.
in HD wallets new key pairs and public addresses are generated using the XPUB in conjunction with an HD path such as this: M/44'/0'/0'/0/x. Every time a new customer sees the payment page , in order to show him or her a new address, you need to change the 'x' (child) value. For example the first customer will see an address which corresponds to HD path M/44'/0'/0'/0/0 , the second customer will see the public address which corresponds to M/44'/0'/0'/0/1 and the third one will see M/44'/0'/0'/0/2 and so forth. You can go on for millions of addresses, but you need to put in place some mechanism that allows you to keep track of the last child number. You can do that on a JSON file on your server or through your DB.
if you want to apply some sort of automated business logic you need to monitor the blockchain to listen to incoming payments to the addresses you created. Sure enough, purchase data must be saved into your DB along with the bitcoin public address created for that specific purchase. This will come handy later when you will need to automatically  confirm the purchase to the customer and deliver the order.
You may want to use a websocket to listen to unconfirmed payments (in mempool) received by the address shown in the webpage that the cusomer is seeing. As soon as a payment is detected , with a dozen lines of JS you ll be able to print a "thank you" message on the customer's screen.
Monitor the blockchain for confirmed payments (at least one confirmation, but 3 confirmations is safer) received by the addresses you generated. When you see a new confirmed payment you can confirm the purchase to the customer by email and ship your product to him or her.

As a final piece of recomendation, you should set up some sort of count down or other mechanism that limits the validity of the address you generated and prices quoted. This is vital to protect yourself and your customer from the tremendous price swings of BTC against major fiats.

I hope that this helped you :-)


What does it mean to go negative on exchange? I know this is a very basic question, but I am just curious about all this exchange stuff and I'm new to this.. so here goes

If I trade at a bitcoin marketplace (exchange) lets say Kraken, Bitstamp or wherever.. and I for example buy 100$ worth of Bitcoin.

The next day Bitcoin falls and I go negative eg. -7,8

What does this mean?
a) did I just loose 100$ and have to pay this extra 7,8 to get back to 0,0?
b) or did I just loose 100$ because the price fell but am still the owner of that 0,0001 BTC and I wait a couple of days so the value goes up again and I go positive, or sell everything and accept the fact that i blew 100$?

Which one is it?

When you buy 0.0001 BTC, it's the same as buying anything that you could, but are not required to, sell in the future. You (on the books of the exchange, until/unless you transfer the BTC out to a wallet you control) are the owner of 0.0001 BTC. If the price declines [or rises], you have a so-called "paper" or "unrealized" loss [or profit], but that's just hypothetical until/unless you actually sell the BTC.

If the price declines [or rises], you are "poorer" [or richer] -- your net worth declines [or increases], using the current BTC market price as the value of what you own. But until you sell it, you just own 0.0001 BTC and there is no need to pay (or receive) any $US regardless of price changes in the BTC market.


I've lost my MultiBit data, is there a way to access my wallet? I have lost access to my wallet. My hard drive is dead and I don't have access to any backup files. Does MultiBit back up everything automatically to the cloud? I know my passcode key and I can see my bitcoins on blockchain.info. I have tried data recovery but the hard drive is not recoverable. I don't know what else to do. Does anyone know how I can regain access to my bitcoins? Appreciate the help. Thanks!

I'm sorry to say this, but your bitcoin is gone. Without your hard drive, you don't have access to the private keys. You may know the password to decrypt them, but what use is a password without a username?

The best option will be to try and go to a professional data recovery service.

Rule of thumb - Always make backups.


how to find name wallet with a btc adress I sent Bitcoin from one address to another, but I no longer remember the name of the digital currency wallet.
Is there any way to find out its name using a Bitcoin address?
please help me

On Mac: ~/Library/Application Support/
On Windows: %appdata%
If any of the following folder are present, you need to download that wallet software:

Multibit
Bitcoin (Core)
Armory
Electrum


Blockchain Imported Address I have created a blockchain wallet after l loaded it the next day the balance was zero but l have realized there is an imported address which l didn't import. Is there any way l can recover the funds back. l can see all the transactions of the imported address.

Is there any way l can recover the funds

No.

No key No bitcoin

To recover control over funds associated with an address, you need the seed-phrase (AKA recovery phrase) or private-keys.

An address imported into a wallet allows you to see money belonging to someone else (or to another wallet of yours, perhaps an offline wallet). It does not give you control over that money and there is no way to get control if you only have the address.

Custodial wallets

Some wallets are called custodial wallets (though not by the wallet providers) and are more like an account with a business that looks after your money for you and issues you with a kind of IOU. The business is the actual owner of the money. For this kind of wallet you should contact the money owner (the business).

Some businesses of this sort offer both custodial wallets and normal non-custodial wallets. Blockchain.com might be one of these. In that case what to do next depends a lot on exactly what sort of wallet you have.

Scams

Imported addresses are a favourite trick of scammers. If someone else helped you create your wallet, you may have been a victim.


Send or receive bitcoins with bitcoin-cli without downloading full blockchain I have successfully downloaded, compiled and installed bitcoin-cli from github.

I can send or receive bitcoins with sendtoaddress and getnewaddress methods.

It works great and i am happy to do that without install third party software (i do not trust them)

But i have a problem: I need to download the full blockchain files (with bitcoind) on my computer.

Is there a way to run sendtoaddress and getnewaddress methods with having only wallet.dat file on my computer ? I do not want to download the full blockchain files. Is it possible ?

How works ledger wallet key ? This small key does not contain a copy of the blockchain. And it works !

Thanks

I think you could do what you are asking with an explorer API and rawtransactions, however you need to be careful when using rawtransactions as you could lose a lot of coins if you dont know what you are doing (see my note at the end).

Transactions are made of inputs and outputs.  Lets say you have 10 coins on address A, you could have two unspent transaction outputs (the 2 outputs from when you deposited the 10 coins), maybe one unspent output has 7 coins, and the other 3 coins (totaling 10).

If you want to send your friend 1 coin, you may take the available unspent transaction of 3 coins, send 1 coin to your friend, and 1.9999 coins (after fees of 0.0001) will be returned to you as "change".  Here is an example transaction https://chainz.cryptoid.info/btc/tx.dws?499936575.htm  You can see 1 previous output, becoming the input, and the two resulting outputs.

Your bitcoin-cli wallet needs the full blockchain, because the list of your unspent transactions is constructed from all the inputs and outputs.  However notice that the explorer I linked to also has an API and (if you request and are granted an API key) the following query will result in giving you all the inputs for that specific address;

https://chainz.cryptoid.info/BTC/api.dws?q=unspent&key=(YOUR_API_KEY)&active=18mcGpg2e3Fj6djLxiCbdjgh3cD46VayLC

You then would use the RPC console to:
1/ createrawtransaction
2/ signrawtransaction
3/ sendrawtransaction

Refer to the https://en.bitcoin.it/wiki/Raw_Transactions Wiki for usage and other useful CLI commands around this topic.

WARNING: Note when using createrawtransaction you MUST MANUALLY CALCULATE TRANSACTION FEES AND CHANGE, if you fail to do this correctly change will be consumed as fees!!!

So now you can see how its possible (although extremely awkward!) to make and send transactions without a local copy of the blockchain.  In terms of how a Ledger works, I suspect they do steps 1/ createrawtransaction and 3/ sendrawtransaction in an un-secure environment, they just use the Ledger itself to do step 2/ signrawtransaction, as this is the only point at which private keys are needed.


How does a node get information from other nodes? I think a node sometimes needs to get a information from other nodes.
e.g.

get set of UTXO.
get main(longest) chain.

I have two questions.

How does a node tell other nodes these requests?
Like in github, are there commands like 'pull requests'?
Where does a node get information from?
I believe blockchain is decenterlized and all information is in the hands of all nodes.There must not be centerlized database.
Then, how does a node decide who is reliable to get information from?

I wish you could understand my poor English...

get set of UTXO.

Note: nodes don't download the UTXO set directly, they download the entire blockchain and build their own UTXO set as they verify the blockchain.

  How does a node tell other nodes these requests?
  Like git, are there commands like 'pull requests'?

Nodes communicate with each other directly via a P2P protocol, sending different types of messages to each other to retrieve different types of information. You can take a look here for the specifics of each message, https://bitcoin.org/en/developer-reference

  Where does a node get information from?
  I believe blockchain is decenterlized and all information is in the hands of all nodes.There must not be centerlized database.
  Then, how does a node decide who is reliable to get information from?

Nodes will ask multiple neighbour nodes for information at once, rather than just trusting a single other node. It can then use the longest chain from all its neighbours, so as long as it connected to just one honest node it will be able to download the blockchain. This is very likely because the nodes it connects to are randomly selected from a set given to it by a DNS server


Recovering ECDSA public key from the signature How to recover ECDSA public key from the signature?

I know that all is need is a hash of the unsigned message and signature.

But may be there is some detailed method for to calculate ECDSA public key?

when looking at a signed (P2PKH) tx, the signature looks like this:

483045022100A428348FF55B2B59BC55DDACB1A00F4ECDABE282707BA5185D39FE9CDF05D7F0022074232DAE76965B6311CEA2D9E5708A0F137F4EA2B0E36D0818450C67C9BA259D0121025F95E8A33556E9D7311FA748E9434B333A4ECFB590C773480A196DEAB0DEDEE1

This can be further split into two parts:

signature:
483045022100A428348FF55B2B59BC55DDACB1A00F4ECDABE282707BA5185D39FE9CDF05D7F0022074232DAE76965B6311CEA2D9E5708A0F137F4EA2B0E36D0818450C67C9BA259D01

pubkey:
21025F95E8A33556E9D7311FA748E9434B333A4ECFB590C773480A196DEAB0DEDEE1

and further looks like this in detail (with address for pubkey at the end):

  ##################################################################
    48: OP_DATA_0x48:     push hex 48 (decimal 72) bytes as data
    30: OP_SEQUENCE_0x30: type tag indicating SEQUENCE, begin sigscript
    45: OP_LENGTH_0x45:   length of R + S
    02: OP_INT_0x02:      type tag indicating INTEGER
    21: OP_LENGTH_0x21:   this is SIG R
        00A428348FF55B2B:59BC55DDACB1A00F
        4ECDABE282707BA5:185D39FE9CDF05D7
        F0
    02: OP_INT_0x02:      type tag indicating INTEGER
    20: OP_LENGTH_0x20:   this is SIG S
        74232DAE76965B63:11CEA2D9E5708A0F
        137F4EA2B0E36D08:18450C67C9BA259D
    01: OP_SIGHASHALL:    this terminates the ECDSA signature (ASN1-DER structure)
    #########################################################
    21: OP_DATA_0x21:     type tag indicating LENGTH
    02: OP_INT_0x02:      type tag indicating INTEGER
        5F95E8A33556E9D7:311FA748E9434B33
        3A4ECFB590C77348:0A196DEAB0DEDEE1

    * This terminates the Public Key (X9.63 COMPRESSED form)
    * corresponding bitcoin address is:
   1HTNtayFkoBV28wqDygMbW33qSnRjxAuNR


Confirmed transaction but unspent Hi, I have a serious issue as this transaction is successful but the recipient insists that it's not in her wallet neither did she get any sort of confirmation about the transaction, I have been trying to understand what went wrong and why I keep seeing this transaction as 'unspent'. How can I fix this please.

The issue is with the recipient's wallet. There is nothing that you can or need to do.

  why I keep seeing this transaction as 'unspent'.

It is not saying the transaction is unspent. It is saying the output of that transaction is unspent, which is perfectly fine and expected. Bitcoin transactions use a system of spending and creating transaction outputs. If a transaction output is unspent, that means it is not spent by another transaction and indicates that the output is available to be spent. This means it is part of your wallet as your "balance".

In this case, you created a transaction which creates an output that is spendable by the recipient. Since the recipient has not spent the Bitcoin yet, the transaction output is unspent. That the recipient's wallet does not detect the transaction means that there is an issue with her wallet, not yours.


Are P2SH transactions with disabled opcodes relayed/mined? Many OPCODES like OP_AND, OP_CAT, OP_SUBSTR are disabled as described in https://en.bitcoin.it/wiki/Script. Although, with Bitcoin Core 0.10.0 Gavin Andresen proposed "any Script" in P2SH transactions to be relayed/mined:

I'm still unsure if this applies disabled opcodes. I've come across a Mainnet coinbase transaction with disabled "OP_AND" opcode here, and a Testnet transaction here. I'm very curios if P2SH transactions with disabled opcodes in the redeem script relayed and mined on the BTC Mainnet.

On that wiki link you posted it states:

If any opcode marked as disabled is present in a script, it must abort and fail.

An attempted UTXO spend with a failed script will not be relayed between nodes running Bitcoin Core (and other major implementations) and certainly won't be included in a mined block.
The mainnet coinbase transaction you link to includes an OP_AND in an input scriptSig. But input(s) in a coinbase transaction are ignored as it is mining new Bitcoins and is not spending from any output from another transaction.
The testnet transaction you link to includes an OP_AND in an output scriptPubKey. It hasn't been spent and can't be spent because there is no scriptSig that can spend from it.
BIP-Tapscript (BIP 342) proposes to make disabled opcodes like OP_AND OP_SUCCESSx which would mean that the Tapscript would automatically succeed if the opcode is encountered. This is so that new opcode functionality could potentially be introduced in a future soft fork without breaking backwards compatibility. But Taproot/Tapscript is not yet activated on the network at the time of writing (October 2020).


Proving collisions on Bitcoin addresses without discovery of the private key? If there is a private key that leads to a collision on an address, it is possible to show that the private key is not the one used previously, even though they have a collision on the address?

Specifically, if there was a collision on one of the Satoshi-owned early blocks, could it be challenged, to show that the person who got it didn't have the initial private key? Specifically, if they signed the same script that was used originally, wouldn't it generate a different signature, while the original owner would be able to reproduce the original signature?

Thanks,
David

To phrase the question in my own words: Can you prove that a transaction output was unlocked with a different private key than originally intended?

Short answer: You can or can't, depending on the situation.

A standard transaction output script works like this:

Assume that the stack starts with two items, with the public key on top and the signature below.
Duplicate the public key (topmost item).
Compute its hash.
Push the expected hash, which is the payee's address (20-byte SHA-256 + RIPEMD-160 hash).
Compare and assert that the top two items are equal.
Restore the stack to the initial state, and use the two items to check the signature.

A standard transaction input script works like this:

Push the signature.
Push the public key (this is now at the top of the stack).

Because of this underlying mechanism, here are the implications:

If an output to a specific address has never been spent before, then the public key has never been seen by the Bitcoin network. Thus the first time that a valid public key shows up (whose SHA-256 + RIPEMD-160 hash matches), it is indistinguishably as valid as any other public key that has the same hash (which is extremely unlikely to find one, of course).
If an output to a specific address has been spent before, then the network has recorded one or more public keys that were used to spend that address. The Bitcoin/blockchain protocol does not mandate that the public key must be the same; in other words there is no notion of "key pinning". Although it is plausible for an individual miner's Bitcoin client to enforce key pinning, I don't expect this to be a feature that becomes implemented.


The number that generates the private key, is it stored somewhere? I understand that the private key is generated with a random number

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

I would like to know if this number is stored somewhere. If it is stored, we will be able to regenerate the private key, and the pubic key. Is that right ?

The private key IS a number, and is remembered as such. It may be generated thought various means (like HD wallets, deterministic generation, from a BIP39 seed, or randomly). It is usually stored as 32-byte array.

The private key is then converted to a public key. This requires a complex mathematical operation, and results in a coordinate pair on an elliptic curve. This is usually stored as a 33-byte or 65-byte array.

That public key is then hashed, a checksum is appended to it, and converted to base58. The result is what is called an address, and is what you give out to others to get paid by them.

The private key never leaves your computer/wallet/app. The address is public.


Is it true that only UTXOs can be used as Transaction Inputs? I was reading this GitHub book on Bitcoin

They state that "True or False: Only UTXOs can be used as inputs to transactions."

Is the answer, True because you can only spend what you have.

Or False, you can out a spent output in the transaction as input, but the network or the miner will reject it.

This question makes no sense.

Of course you can make an invalid transaction that doesn't spend an unspent output. If you're fine with calling invalid things transactions, I could just take a piece of random data and call it a transaction.

A valid transaction can only spend unspent outputs.


What is DrahtBot on Bitcoin Core pull requests? I see DrahtBot on a lot of Bitcoin Core pull requests (PRs) e.g. here. What does it do? Is it open source?

The primary use of DrahtBot is to add automated comments to a PR that list other PRs that conflict with the PR you are viewing. It was written and is managed by Marco Falke but it is not currently open source (it is "ugly" code and wasn't written with the intention to make it open source). Marco stated on IRC:

DrahtBot is basically a while true; ./label_rebase.py ; done, where the Python script just imports a Github API library and then tags all pulls needing rebase

There could be additional features added to it in future. One idea Jeremy Rubin had on IRC is an additional label that shows when the PR was last updated so reviewers could assess whether merge conflicts with master had been addressed before reviewing. Another idea Jeremy had was counting commit tagged ACKs for the current Git tip as a heuristic for reviewers and maintainers.


Why are my bitcoin transactions going to 2 addresses Here is my transaction:
https://blockchain.info/tx/3ddd5a173a73fc82bb0e1eb4361b8c36eb65919e2bfb9ee78fe2c6b5ff3f2307

I only sent .003 BTC to 1 address (35iR3hnFqmkHswRm8PmZgTKxYm7GfucNZJ), but the transaction shows BTC being sent to 2 addresses. This is exactly what happened to me one month ago with another transaction:
https://blockchain.info/tx/672744cd9a355b908fbf256680726e96279c13a8c39770a30a472c25371c6798

Since you guys tend to be pretty cynical (meaning you're smart) I have attached a screenshot as proof that I did not try to send the transaction to 2 addresses.

When you have to pay a transction from an address that is only part of the total balance of that address the program you use for managing your wallet (in your case bitcoin core) sends to the destination the amount that you wanted (in your case 0.003), and the rest is sent back to another address of your own (minus the fee).

This is because for how transactions are designed in bitcoin when you make an outgoing transaction from an address you cannot use just a part of it. All of it must be spent in transaction (towards 1 or more addresses) and the rest goes to the miner as a fee.


How miner makes sure that a transaction he picked up from mempool is actually valid? I have read and searched enough about the roles and responsibilities of miners here;
For example:
Does the miner first validate transaction before doing POW or he does not validate at all ?

Does a node validates a transaction that comes with a block if it's already in its mempool?

But this part is still a bit unclear to me. If a miner confirms a block that has an invalid transaction then he will not only waste too many resources in doing the PoW but he may also get penalized for that, so he validates every transaction.
Does that mean that if mempool contains a transaction saying "A" gave "B" 0.1 BTC then miner is supposed to actually make sure that "A" has that much unspent BTC before he can select that transaction into a block to be mined? If a miner has to validate each and every transaction like this then it will mean too much work, because the only way you can get a confirmed balance for any account is to literally start from the genesis block all the way to the current block. I understand that there are WebServices that give you balance for any bitcoin address but in turn they must be traversing the whole blockchain. So the question is does the miner actually makes sure that "A" had enough unspent BTC before this transaction or does it perform some other simpler check, before selecting and transaction from the mempool.

Does that mean that if mempool contains a transaction saying "A" gave "B" 0.1 BTC then miner is supposed to actually make sure that "A" has that much unspent BTC before he can select that transaction into a block to be mined?

This is a misunderstanding of how bitcoin transactions work, which assumes that coins are "spent from a wallet," which is not the case.

All transactions spend one or more previous transaction outputs (TXOs). The outputs are always spent in full, and become the inputs for the new transaction. Each transaction output is locked with a public key hash, such that only the person who knows the private key related to the public key can unlock the output to spend it. This is done by digitally signing the spending transaction with the private key.

A wallet, such as the one belonging to A, is simply a collection of private/public key pairs - one pair for each TXO which belongs to A. (Although the same key can be used for multiple TXOs, this is discouraged). The balance of wallet A is the sum of balances for all of the unspent transaction outputs (UTXO) for which the wallet has the private key to unlock and spend.

So when A wants to pay 0.1BTC to B, he will pick one or more of the UTXOs he is able to spend such that the collective balance of them is at least 0.1BTC. These will become the input of his new transaction. The transaction will contain an output with a public key belonging to B (their bitcoin address) for the amount of 0.1BTC. The transaction may also contain a change output, which spends the difference between the the sum of the TXOs which were spent by A and the 0.1BTC payment to B, minus transaction fees - this change output spends to a new address owned by A. These two outputs become new UTXOs, and the previous ones become spent.

Miners do not have any knowledge of the wallet balances of A or B - they can only see the amount of each UTXO, and they determine whether they are allowed to be spent based on whether the signature in the transaction is the correct one for the public key which locks the UTXO. They determine that the sum of output amounts is less than the sum of input amounts, and the difference between the two becomes the transaction fee which the miner collects. If all the checks pass, the transaction is valid.

Miners therefore, only need to keep a reference about all of the UTXOs on the blockchain to determine that they've not yet been spent. All previous historical transactions which were spent are archived and do not need to be accessed.

In Bitcoin Core, all of the block data is archived, and the software also maintains an index called the UTXO set, which says where each UTXO can be found in the archive. The UTXO set is held in a memory-mapped database, for performance.

The UTXOs are identified by transaction id - which is the double-SHA256 of the full transaction data found in a block somewhere, and the index of the output in that transaction. (Collectively referred to as a transaction out-point).

When new transactions or blocks come in from the network, the miner must validate them all. Each transaction's input contains a transaction out-point which must be looked up in the UTXO set - and the signatures must all be verified to correspond to the public keys which can spend the output (done as part of a script, which must always evaluate successfully). If any checks fail, the transaction or block is invalid. If they all succeed, then the UTXOs which are spent by the transactions are removed from the UTXO index and the new outputs are added to it.


Make payments Lightning without Invoice? The Lightning-RFC defines, in BOLT #11, an invoice protocol for proof-of-payment. While this is a pretty cool feature, I was wondering if it would be possible to make a payment without such invoice. That is, with the origin node defining a payment hash etc.

With the current specification it is not possible to make a spontaneous payment to somebody on the network. However, this will likely change very soon, as it is one of the features on the roadmap and will be discussed in the specification group in November.

There are tricks on how to do a payment by delivering a large fee at the destination and continue routing to someone else (described in this video), but you have to write software to manipulate the route and the destination will not see an incoming payment, since it considers it a fee.


If I restore my electrum wallet from seed will I lose my pending transaction So I have seen everywhere that boosting fees can be a scam and I do not have enough techy knowledge to do so anyhow or for that matter to directly delete my transaction using pythonwallet.

Whilst sending my transaction I noticed I could set the amount of fees on it and naively decided to set it to the minimum grinning at my own cunning and simultaneously frowning at why it would let me do that. 2 hours later when my transaction was unconfirmed I started to think something unusual might have happened and since (24hrs later) I have spent most of my time learning about bitcoin transactions, something I might have done beforehand...

Anyhow, now I am looking to stop my wallet rebroadcasting the transaction in the simplest way possible so that I can recover my money and send it again with a higher fee and having enabled the replace by fee option. Can someone quickly reassure me that if I restore my electrum wallet by seed it will stop the transaction and that my funds will come back to me and maybe give me some info on how long that will take. Thank you.

Your transaction is out in the network. It doesn't need to be rebroadcasted by your wallet (which probably doesn't do this anyways all by itself) in order to survive. It just needs to be in someone's mempool. Deleting your wallet will not stop the transaction. When you delete your wallet and restore it with your seed, you will have access to the same money you have access to now, but the notes you may or may not have stored in your Electrum wallet will be gone.


What does postfic in the wallet transaction id mean It's known the txid is always a 32 byte hex sequence for example ceca9c54d1a2f9122326a871a3b0b20b725540137e80cb50da663a404f7849a8, but when inpecting the transaction in a wallet it shows it with a dash and three number postfix :

What does -000 mean in the txid, and why is it there?

It means this receive is due to output number 0 of the listed transaction.

Transactions can have multiple outputs (and usually do), and it is possible that more than one of them pays you. If that is the case, they will be listed as separate "transactions" in the UI, but their output will be distinct.


How to recover blockchain wallet on iPhone with address & PIN? My iPhone crashed and I lost access to blockchain app. I have my savings in that wallet which I can't access anymore. Is there anyway I can recover my previous wallet?

I have the transaction history and the address I also have 4 digit PIN that I used at the time (nothing other then that). Please help I want to get out of this situation.

It is impossible to spend coins (aka recover them in your case) without having the private keys. You do not have enough information to have the private keys (address is not enough, 4 digit PIN is only for unlocking the wallet). Thus your coins may be lost.

However, blockchain.info is an online wallet. You should be able to go to their website and access your Bitcoin that way. You will need to have the account identifier (or wallet identfier, whatever it is called) and your password.


Difference between createmultisig and addmultisigaddress? What is the functional difference between createmultisig and addmultisigaddress in bitcoincore (v 0.10)?

To be clear, I understand how both function. ie. multisigCmd n ["address1 public key as hex", "address in Base58 format", "more JSON entries..."]  (where n is the n of m value, and a JSON list of eiher hex pubkeys or Base58 addresses follows).

However, the output for the multisigCmd (createmultisig and addmultisigaddress, respectively) is:

createmultisig: ==> 3outputEqualsPay2scriptBTCAddress, script as hex
addmultisigaddress: ==> 3outputEqualsPay2scriptBTCAddress (no script!)

Both commands give identical output addresses (ie 3outputEqualsPay2scriptBTCAddress) when the same JSON data input is used. So the difference, really, is only that the former outputs the redeeming hex script. Am I missing something? Why the need for 2 commands rather than, for example, a single command with a -hex_script_output flag?

createmultisig creates a P2SH multisig address for use in raw transactions.  It outputs the redeem script because you'll need that to spend any payments sent to the P2SH address.
addmultisigaddress adds a P2SH multisig address to your Bitcoin Core wallet, allowing you to track and spend payments received by that address.  It doesn't output the redeem script because Bitcoin Core stores that for you.  (You can retrieve it later with validateaddress.)


What if bitcoin has a bug? If a fundamental bug is found in bitcoin does that mean that the only way to patch it would be a hard fork? I'm confused at how this software that only has one version is running for 10 years without even a bug?

If a fundamental bug is found in bitcoin

Bitcoin is mainly two things

A set of Network protocols and associated rules by which Bitcoin wallets can interact with each other and by which mining software can interoperate with other bitcoin software.

A reference implementation of a Bitcoin wallet. This is the "bitcoin core" software application.

Network Protocol
Exploitable weaknesses in the network protocols and rules can be fixed by a soft fork which changes or extends the protocols or rules.
Software

this software that only has one version is running for 10 years without even a bug?

See the release notes for bitcoin core
for example, the notes for 14.3 include

Denial-of-Service vulnerability CVE-2018-17144 ——————————-
A denial-of-service vulnerability exploitable by miners has been discovered in Bitcoin Core versions 0.14.0 up to 0.16.2. It is recommended to upgrade any of the vulnerable versions to 0.14.3, 0.15.2 or 0.16.3 as soon as possible.

Other implementations (e.g. Electrum) also have exploitable flaws discovered and fixed from time to time.


Today's threshold difficulty at 3,9 what would a miner need to go solo What i am asking is a relative threshold on the minimum Hash rate needed to mine solo, taking into account todays difficulty,could it be an ASIC of 1TH/s or 5TH/s so as to compare with pool mining

There is no minimum power needed to mine solo. You should note, however, that if you mine solo, your rewards will be much more inconsistent than if you mine in a pool. This is the major reason why pooled mining exists.

With 5 TH/s at the current difficulty, the average time for you to find a block is 38 days; with 1 TH/s, 189 days. But this is a random process that would average to 38 (or 189) days, and that time period is only likely to grow larger as time goes on. You have a real chance, then, of never getting any reward for your work (the reverse is also true, of course: you have a chance of finding more than expected...but I wouldn't stake thousands of dollars on it). Personally, I'd want an expected period of no more than 10 days/block (~20 TH/s currently) to consider solo mining a good option.

Also of note: your intuition of how any random process will work out is very probably very wrong. I'd go for mining in a pool so that I don't have to deal with any large amount of randomness in this process.


Do no-fee transaction represent a greater risk if the product is delivered instantly? Let's say I want to accept payments instantly on a site for digital downloads.

So I publish an address and wait for the unconfirmed transaction, I see the transaction and release the digital download.

However the user may have sent the transaction with no fee. Therefore the miners may not pick it up or the user could issue a new transaction with a fee that gets processed into the block chain.

Is my thinking correct ? and is there away to stop this king of attack ?

It should get picked up eventually, but yes, the user could double-spend before that.

That is exactly what confirmations are for. But it is probably unlikely that you would see massive amounts of "piracy" due to this. I'd just write that off as a cost of doing business. If it does get out of hand, you can go back to waiting for confirmations or accepting "green addresses".

Also keep in mind that if the users are not anonymous towards you (i.e. they maintain some kind of relationship with you, even just a user registration), you have recourse (you can refuse to continue offering them access until the scores are settled).

It is a trade-off between relying on trust (that the user pays) versus waiting for the amount of time it takes for the confirmations.


Why search for a nonce linearly (+1) vs searching only even or odd nonces? As a solo miner, you have the disadvantage of a minuscule hash rate compared to mining pools. Is it not possible to searching for only even nonces? Of course you risk the chance of missing the nonce, but you gain an effective 2x hash rate.

I wonder how this or other nonce searching methods might impacts your chance on average.

What if you search downwards for a nonce?
Skipping (even, odd, every third, etc).

A 2X rate with a 50% chance of missing a winning nonce is no advantage at all. Incrementing the nonce is the easiest mechanism of choosing the next nonce to try, so you try the most nonces per second that way. That's all that matters.

Perhaps you are under the mistaken impression that everyone is trying to mine the same block. That is not so. If you are a solo miner, you are the only one trying to mine a block that pays you the block reward. Nobody else is trying to mine the same block you are, so all that matters is how many tries you are able to accomplish. You aren't racing anyone else. If someone else finds a block, you don't care if they found it before you did or after you did (except in very rare instances where you both find a block at very close to the same time), you found a block either way.


Paper wallet secret Santa? I'm planning to contribute a Paper wallet as Secret Santa gift.  This would require the recipient to learn a bit about bitcoin and set up their own wallet in order to use the value.  What's the best approach for this?  Which paper wallet system should I use?  An important requirement is that it come with very clear instructions for the recipient.

This wallet design:

1) Has a holiday feel

2) Includes basic instructions on the back for safekeeping and redeeming.

3) Has a number of tamper-evident and idiot-proof features to prevent revelation of private key.


Total number of Bitcoins generated by pool mining Hi I'm doing some research regarding bitcoins and pool mining, however I couldn't find the following information online.

Total number of Bitcoins generated so far by pool mining and how many miners were involved.
Total number of Bitcoins generated per day by pool mining and number of miners involved per day.

Can somebody point me in the right direction?

http://coinmarketcap.com/ states there are ~13.330.000 bitcoins generated.
you can have a overview of the shares on mining bye pool here: https://blockchain.info/pools

blockchain.info gives most information on bitcoin available, you will find what you need there!

have a nice


What software do mining pools run? I assume they run bitcoind for the network connectivity.  But what about for the work allocation?

There are several pool-implementations that create the individual workloads and track their completion. The Poolservers article at the bitcoin.it Wiki has a comprehensive list, with a feature comparison.


Block Validation Process, in Terms of adding Block to the Chain quick question - How does a Node react to a new block propagated to the network?
In Terms to  does a Miner stop mining when "he" gets information of a new block to validate it? or does it not stop and validate it in another Thread?
If the Question is unclear - let me know I just began my deep dive into the technical side of Crypto and Blockchain :)
best regards :)

It is easy and instant to confirm that a hashes proposed by a miner is the correct one, so once it is received by a node, miner, he will immediately stop trying to find a correct hashes for the previous block and began searching the new one without transition.


How many addresses does bitcoind use for Bitcoin generation? When bitcoind is generating Bitcoins, does it change the addresses that are used for receiving the block reward? That is, if I mine two blocks with the same bitcoind wallet.dat, will the same address be credited with both of the rewards?

Each block reward will be credited to a different address. No more than one address per block is used in the generation process.


How do I reset bitcoin regtest mode? Does anyone know how to reset everything in regtest mode?
I want to reset my balance and all transactions.

Delete the Bitcoin Core datadir:

Linux ~/.bitcoin/regtest directory.
Windows %appdata%\bitcoin\regtest directory.
MacOS $HOME/Library/Application Support/Bitcoin/regtest directory.


Can I transfer ETH between apps? Let's say I have Blockchain wallet, and I want to use another andoid app, or other wallet. Can I do it? Will there be a fee?

Yes. You can send ETH to any compatible app or wallet. It will just take a small amount of ETH to pay the fee for the transfer (it's called gas). Gas price can be small, sometimes 0.004 ETH or less. It depends upon how busy the network is with transactions.

https://etherscan.io/chart/gasprice


How can I see or validate mining in regtest mode? I can generate new blocks using generate number_of_blocks_that_you_want. I have 2 nodes running on regtest mode. I sent few coins from one node(wallet) to another. Transaction successful. Status it was showing was Sent and Received  in respective wallets for this transaction But not confirmed yet.  Now If I create New block i.e. mine new block then How can I see or validate that the transaction I have just created is included in the newly mined block? Just as we can see on Explorer. I can see that newly mined block has taken the transaction fess.But what about Merkle root and Merkle path?

You can use the getblock <block hash> command to see the details of a block.


While using Open Transaction as a Decentralized Exchange, how can one guarantee sanctity of the trade carried out by the parties? Lets assume Alice holds 100 shares of Twitter and wants to sell those shares on Open Transactions. Bob decides to purchase those shares. They decide the terms of the transaction, price etc and sign a smart contract. The transaction gets completed. Bob pays Alice for the shares either in dollars or bitcoins etc and alice transfers the 100 twitter shares to Bob.

How does one preserve sanctity of this transaction because, Alice can repudiate this transaction at a later date. On a parallel Centralized Stock Exchange the ownership of these 100 shares will still be attributed to Alice and she will continue to get dividends etc as an owner.

This is more of a legal than a technical question. All Bob needs to do is to have Alice provably transfer her shares. For example, Bob could demand that Alice associates her smart contract keys with her real identity through some means such as key signatures. That way, they can put their dispute before traditional court. Then the transaction is left to the judgement of a judge.

In future cryptocurrency systems, to solve this problem, and to not rely on subjective law, we envision share ownership to also be verified on the blockchain. Colored coins and turing-complete blockchains allow shares to really be owned by their respective owner. When decentralized anonymous organizations develop, blockchain ownership of shares will also directly and self-enforcibly give the cryptographic right to voting and dividends.


How does the Clearing & Settlement process work in Open Transaction From what I have read and understood. As open transaction platform uses coloured coins. The issuer of the coloured coin can associate it with a particular asset: like a ticket to a concert, or gold or real estate etc.
Now the issuer can trade these coloured coins on the open transaction platform.

Now the question I have is:
Who manages the settlement and clearance process? That is who insures that the physical ownership of the asset that was represented by the coloured coin and transacted on the platform is transferred to its new owner?

As an example. The coloured coin represented gold. I as an end user purchased the coloured coin paid the owner the desired price. The open transaction records that I am now the Owner of this gold (courtesy of the coloured coin). However how does the physical settlement and clearance take place? What if the seller refuses to handover physical ownership of the gold?

However how does the physical settlement and clearance take place?

It depends on the settlement policies of whoever issued the asset.

  What if the seller refuses to handover physical ownership of the gold?

Take them to court, I guess?


In a Lightning Network who commits to the blockchain the final transaction? So let's imagine a Lightning Network made up of thousand of nodes. Transactions are routed until the moment comes where all the channels need to be closed and commited I presume. Which node actually takes care of this?

I'm a bit confused of this process and it's not clear how the final transaction will be built, and more importantly, who will actually pay the fees to the BTC network?

I imagine this huge transaction will have lots inputs-ouputs based on the parties involved in the network for that moment of time.

I'm thinking it's a race game, right? So any node can broadcast this huge transaction to the blockchain, and since all the inputs-outputs have all the right signatures of the participants, all the money and fees will go to the nodes that helped route the transactions around, and of course all the money will correctly go to the right destinations.

Also, I'm thinking this is not something that happens every 10 mins or so. Whoever is listening and has the transactions in hand can build this huge transaction (as long as the timelocks are respected) and soon it will be mined.

But still, if the fee for the this huge tx is higher than what that single node got for routing it, what's the incentive for them to actually broadcast it rather than letting another node broadcast it, and hence put the burden on another node to pay the fees.

So let's imagine a Lightning Network made up of thousand of nodes. Transactions are routed until the moment comes where all the channels need to be closed and commited I presume. Which node actually takes care of this?

No, that is not how lightning works. All channels are not created and closed at the same time. They are created individually and closed individually. Each channel has its own 2-of-2 multisig, not the entire route. And channels are not established just for one route, that would be inefficient. Routing happens because there are channels that are already open between people and it is more efficient to route than it is to establish a new channel.

When a channel is closed, the two people in that channel will create the final commitment transaction for that channel and once that is broadcast and confirmed, the channel is closed.

  who will actually pay the fees to the BTC network?

With the current lightning protocol, the person who requested the creation of a channel will be the one who pays any transaction fees. Although if both parties mutually requested the creation of the channel, they can probably split the fees with a bit of manual transaction modification/creation.

  Whoever is listening and has the transactions in hand can build this huge transaction (as long as the timelocks are respected) and soon it will be mined.

No. Commitment transactions require the signatures of the parties involved in the channel.


What is a 'Satoshi'? I am aware that Satoshi Nakamoto is the author of the paper that originated Bitcoin and the creator of the original bitcoin client. However, I often hear the term Satoshi as if it was a monetary unit.

What is a Satoshi?

A Satoshi is the smallest fraction of a Bitcoin that can currently be sent: 0.00000001 BTC, that is, a hundredth of a millionth BTC. In the future, however, the protocol may be updated to allow further subdivisions, should they be needed.

Further examples of units

1 BTC = 1,000 mBTC (millibitcoin)
1 BTC = 1,000,000 μBTC (microbitcoin)
1 BTC = 100,000,000 Satoshis
1 mBTC = 100,000 Satoshis
1 μBTC (microbitcoin) = 100 Satoshis


Why unstuck transaction is sending again and again and how to solve this problem? I started Bitcoin Core with -zapwallettxes=1 and unconfirmed transaction came back to wallet. Next sent transaction was unconfirmed too. I repeated above action and resent transaction. It was unconfirmed again and do -zapwallettxes=1 again. Everything is looking good but after few minutes last transaction was sent again with out do anything my self. Where I'm wrong and how to find solution?

If you're running a new version of Bitcoin Core, you also have to delete mempool.dat when you try to remove an unconfirmed transaction, as it will be in the mempool as well.


test net block time wrong I can see http://tbtc.blockr.io/ time of block are showing "right now". When I click "all blocks" the time is two hours ahead of "now". I don't think it's blockr time zone problem, because

1) when I submit transaction, it will show correct time

2) my bitcoinj wallet also showing future time against

System.currentTimeMillis();

which is UTC time. (I use ntp and it happens on two different computers)

Anybody have an idea why this is happening?

The timestamps on those blocks are indeed quite varied so I think that blockr.io is not using the timestamp field in the block as sole timing information, instead using something like min(relayed time, block timestamp) so that blocks that have a future timestamp are shown as "right now" because they use the relayed time. They probably are not only using the relayed time since in that case they'd be misdating all blocks after downtime.

TL;DR: do not trust the timestamp field in the block, it can be manipulated.


Reusability of ASIC miners I'm looking into the re-use of ASIC miners to perform other mathematical tasks; for example, the sum of a prime and a random number producing a massive (arbitrarily long) integral value

  i.e. sum(121 ^ 98435903485039)

Note: I require the result of the sum, not the hash of the result of the sum.

What mathematical tasks can an ASIC perform?
Do they have to be targetted specifically, or will the host machine naturally offload mathematical processing tasks to the ASIC?
If ASICs need to be targetted specifically, how does mining software target the hardware capabilities of an ASIC?

What mathematical tasks can an ASIC perform?

Only the exact task they were designed to perform,

  Do they have to be targetted specifically, or will the host machine naturally offload mathematical processing tasks to the ASIC?

They have to be targeted specifically.

  If ASICs need to be targetted specifically, how does mining software target the hardware capabilities of an ASIC?

The ASIC is specifically designed to mine and provides an interface for the mining software specifically to tell it what to mine and to read back the results of its mining.

ASICs, essentially by definition, cannot be repurposed. The whole advantage of an ASIC is that it s totally and completely optimized for a single task and no resources are wasted on the ability to do other things.

For general purpose computing tasks like you're describing, you want a modern CPU or GPU.


Mining rig questions sorry if this question is for another place but I've been wondering are mining rigs mobile( can i move them from room to room in my place with ease without wondering if they will boot up properly or..? ) and can a rig be placed in a room with some moisture ( nothing big,its a room where my deep freezer,foodstuffs and tools are, something like a cellar...)
Also is it better to get amd based gpus or nvidia?

Mining Rig is a computer system that is used for mining cryptocurrencies. This rig can be a devoted miner where it was appropriated, built and operated specifically for mining or it could differently be a computer that fills other needs, such as opearting as a gaming system, and is used to mine only on a temporary basis. "Mining rig" is a ideomatic metaphor for a single computer system that performs the compulsory computations for "mining".


additional document for BIP32 I am reading through BIP32's documentation and its implementation in Java on GitHub in the file supernode/api/src/main/java/com/bitsofproof/supernode/api/ExtendedKey.java.

Luckily, I was able to follow the code, but there are areas I am not sure about.

I have 2 questions:

I know it is in BIP32.json file, but why are we doing if ((sequence & 0x8000000)==0)?  It is a condition for master public key to child public key or master private key to child private key... but what sequence does for? if ( (sequence & 0x80000000) == 0 )
My second one is why we add 4 bytes.   Is there any detail document source I can find?

        extended = new byte[pub.length + 4];
        System.arraycopy (pub, 0, extended, 0, pub.length);
        extended[pub.length] = (byte) ((sequence >>> 24) & 0xff);
        extended[pub.length + 1] = (byte) ((sequence >>> 16) & 0xff);
        extended[pub.length + 2] = (byte) ((sequence >>> 8) & 0xff);
        extended[pub.length + 3] = (byte) (sequence & 0xff);
    }
    else
    {
        byte[] priv = master.getPrivate ();
        extended = new byte[priv.length + 5];
        System.arraycopy (priv, 0, extended, 1, priv.length);
        extended[priv.length + 1] = (byte) ((sequence >>> 24) & 0xff);
        extended[priv.length + 2] = (byte) ((sequence >>> 16) & 0xff);
        extended[priv.length + 3] = (byte) ((sequence >>> 8) & 0xff);
        extended[priv.length + 4] = (byte) (sequence & 0xff);
    }

Many thanks in advance.

Check https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#serialization-format
((sequence & 0x80000000)==0) means it's not a hardened key. The key is hardened (public key derivation not possible) for child keys with index higher then 0x80000000 (== 2147483648 == 2^31).
From the BIP
4 byte: version bytes (mainnet: 0x0488B21E public, 0x0488ADE4 private; testnet: 0x043587CF public, 0x04358394 private)
1 byte: depth: 0x00 for master nodes, 0x01 for level-1 derived keys, ....
4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
4 bytes: child number. This is ser32(i) for i in xi = xpar/i, with xi the key being serialized. (0x00000000 if master key)
32 bytes: the chain code
33 bytes: the public key or private key data (serP(K) for public keys, 0x00 || ser256(k) for private keys)


Who is spamming the bitcoin cash mempool and why? When looking at the last hours of bitcoin cash (BCH/BCC) transactions I saw a massive increase in low(or no)-fee transactions:

Usually the graph looks similar to the BTC case (see below), just without the backlog of unconfirmed transactions.

Is anything known who did this and why? Is it just to test out if BCH is able to support high transactions volume without problems (fortunately it seems so, with ~20k transactions per block) or does somebody have malicious intentions and is trying to stall the BCH network?

Have people done similar things with BTC in the past?

Stats are taken from this site:
https://core.jochen-hoenicke.de/queue/#8h

It is not too difficult to check the low-fee transactions in large blocks with block-explorer. Follow the link
https://blockchair.com/bitcoin-cash/transactions?q=block_id(479479)&s=id(asc)
and press Load more... link several times.

There are a lot of one-input-to-one-output dust transactions like https://blockchair.com/bitcoin-cash/transaction/2ad1135d02924336901d23179d41a74a800da4f2247cf9e66e4cdccf8656f10c

So, this looks like spam. Sorry, I do not have any more information about the creator(s) of these transactions and their goals. You should investigate yourself. Hope my links are useful


Bitcoin boom and bust - Inherent instability of Bitcoin I'd like to put the a question to the community regarding the inherent stability/instability of Bitcoin. I hope it's not off-topic since it's more a economics-type question. So, here's the scenario in question that I think might lead to an instability:

Scenario:

As we know Bitcoin mining is a race, whoever finds a new block first publishes that block and, if there is a fork, hopes that consensus is reached in favour of his block. The costliness of this race is the key feature of the game-theoretic aspect that makes Bitcoin safe.
Now suppose that

mining capacity is concentrated in the hands of a few big miners and
using debt they invest heavily in order to add capacity faster
and they eventually generate Bitcoin faster than the market demands.

If supply vastly outstrips demand the buying power of Bitcoin should fall considerably. If the miners' investment is based on debt the depreciation is violent enough the 'supply side' will see several, if not all of the miners go bust. Then Bitcoin will appreciate, and the cycle will repeat.

This type of cycle is typical for the commodity markets, e.g. gold and oil. So here's the

Question:
Is Bitcoin susceptible to the same instability?

The assumptions are not too outlandish and the overall logic is sound, I think. We do see a concentration of mining power. The growth of global mining capacity is not so obvious, but there are reports of a "mining capacity glut". Whether the big miners have a sound balance sheet is not known, as far as I can tell. But it's plausible that they borrow money to expand. So, potentially, all the ingredients are there to make Bitcoin intrinsically just as volatile as gold, silver, oil, etc.

and they eventually generate Bitcoin faster than the market demands.

This assumption doesn't apply, unfortunately. The production rate of Bitcoin is self-regulating and does not correspond to the overall mining capacity. This is due to the difficulty resets that happen every 2016 blocks which adapt the production to the network's mining capacity.

So, when miners compete, they do so for a roughly fixed amount of new bitcoins. When one miner grows their hashrate faster than their competitors, they may get to produce a larger share of the total, but they will not be able to significantly increase the overall production.


Provably fair unknown event time for Bitcoin gambling I have a bitcoin lottery that is still in the prototype stage (bitsplit.it).

I believe that the game will be much more appealing, for certain reasons, if players (and the house) both don't know when the next winner will be chosen.

However, I am having a hard time with coming up with a (feasible) way to prove that the house doesn't know when the pot will split.

Any ideas are greatly appreciated.

You could leverage the blockchain itself and use something based on the hash of the current block. For example, the block hash will end in a 0 bit roughly half the time. It will end in 00 bits roughly 25% of the time, etc. This is exactly the same idea as the bitcoin "difficulty" parameter, you would be using the hashes as a roughly constant rate stream of unpredictable random bits.

I think everybody who participates would agree that the block hashes are not predictable in advance.


How long would it take for all the Bitcoin Key pairs to be calculated? Is this even something one should be worried about?

No, you shouldn't worry about it.

3Blue1Brown has made a great video explaining how large 256 bit is, check it out


Extract output address from raw script in bitcoin protocol I'm working on bitcoin protocol and exactly i want to extract raw script from output script to gain address from tx messages.

for common scripts, like scripts start with 0x76(means OP_DUP),  we can access to address with these steps:

add zeros to start of raw script.
hash with sha256.
hashed with sha256 again.
grab the first 4 bytes of this result and stick them on the end
of the raw script with leading zeros
then encode with base58.
at the end, add "1" to start of last output to gain output address.

these steps are suitable for common scripts, but for scripts like this

410498361908359fec5adaa624428484e7d117f36f811c7c471f4f1c7dd8184c20b32f0e2590c8d70906ebd585da2ae14ea942e4088891139379b434a26173754750ac

which is means:

PUSH(0x41) 0498361908359fec5adaa624428484e7d117f36f811c7c471f4f1c7dd8184c20b32f0e2590c8d70906ebd585da2ae14ea942e4088891139379b434a26173754750 ac

it didn't work and the generated output isn't valid.

It won't work, because there is no address for that script.

Addresses are templates to construct outputs from. Generally, you should not go the other way, as addresses may be misinterpreted as a place to send coins to, without the receiver asking for it or aware of it.

Furthermore, there are only a few common script types (P2PKH, P2SH, P2WPKH, P2WSH) that has associated addresses. Others, like your example, don't.


what is the significance (if any) of "ACKs for top commit:" in the git commit messages of bitcoin core? There seems to be a reasonably standardized format for some, but not all, commit messages in bitcoin's git repository. For example, in addition to the usual expository commit message, this commit (https://github.com/bitcoin/bitcoin/commit/270616228bc9a3856a0a82dea26ac3480b7585cd) also includes:

ACKs for top commit:
  MarcoFalke:
    ACK 0e7c90e crocodile
  fanquake:
    ACK 0e7c90e

Tree-SHA512: 6d954a0aaf402c9594201626b59d29263479059e68fa5155bb44ed973cd0c3347729dd78b78b4d5a2275e45da365dc1afb4cc7e3293dea33fcc2e3e83a39faf5

There are many commit messages with similar structure. As these commits get buried under other commits, this is quite reminiscent of aspects of the consensus mechanism that the bitcoin protocol itself uses.

In other words, if we squint hard enough, it seems like the commit messages themselves partially encode a slow-enough-for-humans-to-interpret blockchain.

For reference, here are some issues (https://github.com/bitcoin/bitcoin/issues/16200
and https://github.com/bitcoin/bitcoin/pull/16223) where some discussion about the content of these messages is taking place, but unless one is already a core contributor, it is difficult to pick up what is going on from context here.

Is there any documentation, informal or otherwise, about how/if these messages might encode aspects of consensus among the contributors?

From https://github.com/bitcoin/bitcoin/blob/v0.18.1/CONTRIBUTING.md#peer-review:

  Anyone may participate in peer review which is expressed by comments in the pull request. Typically reviewers will review the code for obvious errors, as well as test out the patch set and opine on the technical merits of the patch. Project maintainers take into account the peer review when determining if there is consensus to merge a pull request (remember that discussions may have been spread out over GitHub, mailing list and IRC discussions). The following language is used within pull-request comments:

  ACK means "I have tested the code and I agree it should be merged";
  NACK means "I disagree this should be merged", and must be accompanied by sound technical justification (or in certain cases of copyright/patent/licensing issues, legal justification). NACKs without accompanying reasoning may be disregarded;
  utACK means "I have not tested the code, but I have reviewed it and it looks OK, I agree it can be merged";
  Concept ACK means "I agree in the general principle of this pull request";
  Nit refers to trivial, often non-blocking issues.

When a Pull Request to Bitcoin Core is merged on GitHub, maintainers use a script that automatically incorporates the ACKs provided by reviewers in the merge commit.


How much ASIC power has been, or is being, shipped in 2013? Where can I verify how much ASIC mining power has been shipped, how much has been pre-ordered, when it will be shipped, and at what rates and time frames more units will be shipped?

Let's analyze ButterflyLabs alone.

From the Butterfly Labs Wait list, here are the current numbers, along with the number of chips:

Orders Tracked: 325

Unit             Number tracked     Chips/unit     Chips tracked
Jalapeno SC      216                  1              216
Mini Single SC    41                  7              287
Single SC        348                 14             4872
Mini Rig SC       25                334             8350
------------------------------------------------------------------
Total                                              13725

Thus, our average chips per order is 13725/325 = 42.2 chips/order from what we know.  Next, let's look at the number of orders and assume that average stays consistent.  Let's say there were 18,500 ASIC orders under the first ordering system (Order numbers 1500-20000), and are currently 12,000 in the second order system (Order numbers 100014000-100026000).  That brings the total orders to be filled to 30,500.  Multiply that by our average number of chips per order and we have 1,287,100 4.5GHz chips on order.  Thus, if these numbers hold true (and I really hope they are VERY high), we are looking at 5.8 Million GH/s added to the network from Butterfly Labs alone once they fill the orders to this point.  This is about 100 times the current global hash rate of 50000GH/s.

Also note that this is based off a lot of assumptions, and they haven't shipped their first unit yet, so who really knows.  When I contacted them in February, they said orders placed then would be fulfilled in May-June, but they also said they were shipping the first units by the end of February and they haven't shipped those yet.

UPDATE (4/22/2013):

The last order I see posted is 100036087, on April 8, up from 100026000 on March 22 (2 months ago to the day!), so we have an increase in order numbers of about 5,000 per month at the moment.  Also, they just shipped their first developer units, and they had to up the case sizes to accomodate the extra power modules.  Thus my best guess is that BFL will begin shipping to customers late May/early June.

Speaking of order numbers, I had assumed above that they increased every time an order was actually made.  However, According to Sgt Spike on the wait list forum about BFL order numbers,

"It generates an order number every time someone goes to checkout, whether they actually
 pay for it or not."

Which, if true, means that the above numbers are a definite worst-case scenario (unless of course there are a bunch of missing orders from the list for 100 mini-rigs or something crazy like that, which is very doubtful).  Thus, multiply the above numbers by the percentage you think that people actually followed through to a purchase after proceeding to checkout to get a better estimate.

Also, it looks like the earlier orders were much more heavily weighted than the later orders, where the info is also much more sparse, so the estimate still may be high even after you figure the correct buy percentage in.

Last, note that going forward the mini-rig is out of stock and they have upped the price and they have lowered the hash rates available from 60GH/s and 30GH/s to 50GH/s and 25GH/s respectively, so going forward the GH/order will probably be much less on average.  Even before they did that.  Thus, that should lower the expected addition to the global hash rate as well going forward.

With the above considered, I'd say a reasonable upper limit is about 2 Million GH/s added, which assumes about half the people that go to checkout actually place an order and the average order is slightly smaller than the average of the orders submitted.


Where to get initial ripple funding? So I have created a ripple account and now I need to get funded with 100 XRP to get started and be able to grant trust, otherwise the account is pretty much useless.

In bitcointalk, there is a giveaway of XRP to "qualified" members. If you are not one of them, what are other options except just asking for donations? Will this be something all new users have to face in the future too?

I could not find a way to buy XRP without establishing trust first.

If you are not one of them what are other options except just asking for donations?

You could post on the ripple forums or on a ripple thread at bitcointalk. However, instead of asking/begging for a donation you should offer something, e.g. some small number of bitcents, cash, a favour, a promise to pay back the XRP with interest, etc.

  Will this be something all new users have to face in the future too?

I'm sure by the time Ripple.com is out of beta there will be an easier way to get started. Possibly gateways will offer a one time funding of a Ripple accounts either for free of via whatever other currencies the gateways use.


Building many btc adress on your website for users? Hi I am new in this financial trend. I had some experience with exchange trading and investment for Ico. I have an idea and therefore i need to create a ıco website.How can ı add on my ıco site many btc adresses for user who will get invest on my project.

run a bitcoin client with json-rpc enabled. you can then communicate from you backend with this bitcoin rpc interface. See

https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)

https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list


How does blockchain.info get its info? Is it via the RPC interface for bitcoind or by reading the raw blockchain directly? How does blockchain.info get their info? My intuition tells me that they have a modified client that reads and processes the blockchain (either directly from the network as it comes in or from the raw files on disk) and stores the various data and relationships in a database.

I'm also guessing that they may use the RPC interface for the standard bitcoind to do simple things like getdifficulty() or getblockcount() quikly.

Can anyone confirm this? Any ideas?

They most likely have an advanced block chain indexing backend. Basically they run a node (most likely bitcoinj with custom code) that listens for blocks from all the connected nodes they have. And once they have a block they add all it's info into a database that they run queries on for results.


Understanding Blockchain client implementation details I've started building a custom blockchain as a side project. The goal is to understand and familiarize myself with implementation details that are not usually described in a "What is blockchain" article or similar post. I'm looking for sources, with good examples if possible, on how different problems are solved like block publishing and sharing, node discover, validating transactions, block composition etc. I've gone through a small part of the Bitcoin protocol documentation on the bitcoin wiki and plan to read through the rest of it but, as expected, it is more of a reference and less of an educational resource. Is there any other place that one can read about how to tackle such problems? I've seen tutorials on "How to build a blockchain" but they mostly talk about the chain itself (i.e. creating a block from arbitrary transactions, generating PoW and linking the new block to the chain) without addressing all the "inbetween" stuff which is in my opinion the critical information.

The source code of Bitcoin's reference client, Bitcoin Core, is a good place to learn how the Bitcoin developers solved these problems. You can find Doxygen documentation for the source code here.


Were anyone-can-spend transactions valid before SegWit? Non-segwit nodes (legacy nodes) see segwit transactions as anyone-can-spend (ACS) transactions. It is clear that such a nodes can (and do) validate blocks containing ACS transactions, because the scripts they run are compatible with the original rules of Bitcoin (this is why SegWit is considered a soft fork). However, I see around the statement that a miner running a non-segwit node cannot include a ACS transaction in his own mining block, because, if he had managed to mine that block, segwits nodes would reject it because digital signatures were missing, resulting in an orphaned block.
Is it correct what I’m saying? If yes, let me consider the following scenario BEFORE the creation and implementation of SegWit on Bitcoin:
Before the creation and implementation of SegWit, when all running nodes were non-segwit, if a miner had included an ACS transaction in his own block and he had managed to mine it, would such a block be accepted by others nodes? I don't see the reason why such a block could be forbidden. From the point of view of the other nodes (which are all non-segwit), they see this new block a one containing ACS transactions, and like any other block nowadays, they should validate it.
What I’m trying to say is that, in the previous version of Bitcoin (before SegWit), there was nothing to "prohibit" a miner from spending/stealing someone else's funds. If the answer is that before SegWit nodes would never accept blocks containing ACS transactions, this means that SegWit is in fact a hard fork, because nowadays they do accept them.
Hence, I see the following three “scenarios”

Before SegWit implementation, miners could include ACS transactions in their blocks and all the other nodes should validate them. The fact that it never happened is because all miners were “honest”.
Before SegWit, nodes did not validate blocks containing ACS transactions. But they do validate them now. This results in a HARD fork.
There is something that I’m missing or I’m misunderstanding.

I hope the answer is number 3. I’ll appreciate if somebody could help me.

there was nothing to "prohibit" a miner from spending/stealing someone else's funds

That was never true, so far as I know, miners have never been able to spend other people's funds seen in normal transactions with the right spending scripts.
A more accurate description of the situation you describe is perhaps that there was nothing to prohibit people from freely leaving their money unprotected in a public place for any passerby to take.


Sent Bitcoin to wrong email address on Coinbase.com I sent some BTC on coinbase to another one of my own email addresses. But I later realized I don't have a coinbase account with this email. The status of the transaction says complete.
Are they gone? Probably.
Or can I create a coinbase account with that email?

As MeshCollider suggested, try to create an account with that email and see what happens.


How to allow only local connections? I've started to implement my bitcoin client to learn the protocol and faced a problem to see debugging output. When I start bitcoind with -debug option, it start to print so many debug messages in such speed that i can't see whats wrong with my client implementation. How can I start the bitcoind program in such way that it will not sync and just listen to new connections from local machine?

Try

bitcoind -bind=127.0.0.1 -connect=127.0.0.1


Is it true that as long as you have the public and private key for a bitcoin address, you are safe? So i created a public & private key on blockchain.info and printed it out as a paper wallet. Am I safe to say that no one can comprise it unless they physically get a hold of my piece of paper?

Also I want to be safe in the fact that I can redeem this public/private key by inputting it into one of the desktop applications? which ones would work?

There is a non-zero chance, that the communication protocol, blockchain.info or your computer have been compromised. (This chance is fairly low)

You don't have to show your private key to anybody until you want to withdraw/send money from this address. You can securely generate and print the key on an offline computer.

There is also chance, that someone will generate the same private key, this may be caused by faulty software or just a very bad fortune, but the probability is much lower than finding few blocks in a row.:)


Can I program OP_CHECKLOCKTIMEVERIFY to trigger based on external verifiable events? Can OP_CHECKLOCKTIMEVERIFY and multi-sig be used to trigger a transaction based on external verifiable events?

Some potential uses I have in mind:

Death
College graduation of a child or grandchild
Issuance of building permits
Yearly net company profits exceeding a certain threshold
Deposit refund after verification that vacation rental property is undamaged

Maybe not with OP_CHECKLOCKTIMEVERIFY, as it is not possible to consume an external input with that particular operation. But you can write a third-party oracle that will release some secret (i.e. a hash) based on the set of potential use-cases you have suggested, so the beneficiary could redeem the funds promised on the fulfillments of the condition.

A contract similar to that of a Hashed-Timelock Contract (HTLC) should be useful in this situation.


Online trading testing sandbox for Bittrex Is there any testing Sandbox for Bitrrex? How can I obtain the test bitcoin and purchase the ETH? Please advice.

I don't think Bittrex has a sandbox mode, I googled it and there wasnt so much information around...

You can look for testnets and testnet coins faucets if you want to test cryptos without spending real money.


Bitcoin as subscription method I am contemplating designing some minor sites that uses bitcoins, but as far as I can see, a manual action is needed for every payment.

Is it possible to set up a "subscription" system or repeating transactions?

If not, I am planning to design a system where you can replenish your subscription, by simply "filling up" your account and then over time the allocated coins will be depleted.

Repeated transactions using Bitcoins is impossible, unless you have access to the private key. This requires a specific client. Such functionality is not yet available, as most people encrypt their wallets (the client can't decode it without the user. The second approach would be preferable.