How can I use Bitcoin to send a remittance payment to someone non-technical? The existing remittance methods such as Western Union are pretty straight forward for the recipient ... after being notified, show up at any agent location, show ID and/or give a secret code and collect the cash.

Assuming the remittance recipient is not technical and today needs only cash, not bitcoins, is there still a role for Bitcoin with this type of need?

One way to do this is to perform a three-way transaction where the person sending the remittance (the bitcoin seller) transacts directly with the person buying bitcoins in the remittance destination country.  The cash being paid for the bitcoin transaction is simply just being handed over to the family member rather than to the party selling the coins.

Because there are a number of risks with person-to-person trading, those risks can become even greater when the two parties are trading remotely.  For this reason, a trust history will help lessen the risk.

LocalBitcoins maintains a directory of those willing to meet face-to-face and pay cash for bitcoins.  They also have a method called "LocalBitcoins Transactions" which is simply an account-to-account (A2A) transfer method so that the buyer of the coins doesn't need to wait for a Bitcoin payment transfer
to receive confirmations.  Additionally, those bitcoins can be released and the buyer doesn't need wi-fi or any other network communications other than mobile phone or SMS/text messaging when completing the in-person transaction.

Here would be the steps:

1.) Bob, located in the U.S., wants to send $200 worth of value to his mother who is located in Cape Town, South Africa.  Bob looks through the ads on LocalBitcoins and finds a buyer offering to pay a fair price and has no complaints showing in the trading history. Bob places a sell request in response to the buyer's ad and funds the transaction with the amount of bitcoins.

These coins are not sent to the buyer, but simply are reserved for this specific transaction.  Either Bob or the buyer can cancel the transaction and the Bitcoin funds are returned to Bob.

2.) Buyer contacts Bob and arranges the time and place to meet.  Bob explains the three-way transaction and how the cash will be picked up his mother.  Buyer agrees to this approach.

3.) Bob provides instructions to his mother to meet the buyer at a certain location and time.  Bob's mother needs to only bring her mobile phone.

4.) Bob's mother arrives at the buyer's location and notifies Bob that she has arrived and that the buyer is there and has the $200 worth or Rand in cash to pay for the transaction.

5.) Bob releases the bitcoins that were reserved for the transaction.  In return, Bob is given a "verification code".

6.) Bob tells the buyer (either in a text message or by voice) the verification code.  The buyer now can trust that the bitcoins were transferred and hands over the cash to Bob's mother.

7.) Bob's mother notifies Bob that the $200 worth of Rand in cash was received.  Bob uses the LocalBitcoins reputation tracking to leave favorable feedback for the buyer, and the buyer does the same in return for Bob.

The transaction has then concluded.  This transaction can be concluded at a lesser cost than the Western Union transaction.

Some buyers will even offer to do the traveling to deliver the funds in-person directly to the remittance recipient, without having to arrange a meeting.


Bitcoin.org developer reference outdated? i just can't understand if bitcoin.org developer reference is outdated or not. for example here (https://bitcoin.org/en/developer-reference#raw-transaction-format) we can see: "As of Bitcoin Core 0.9.3 (October 2014), all transactions use the version 1 format described below. (Note: transactions in the block chain are allowed to list a higher version number to permit soft forks, but they are treated as version 1 transactions by current software.)" it's right or it's an old reality?
or here (https://bitcoin.org/en/developer-reference#serialized-blocks) we can read on the first 2 line that blocks must be serialized under 1MB size or less but i know on the current version blocks can be up to 2MB so i can't understand which one is the right answer. Thanks for the help

"As of Bitcoin Core 0.9.3 (October 2014), all transactions use the version 1 format described below. (Note: transactions in the block chain are allowed to list a higher version number to permit soft forks, but they are treated as version 1 transactions by current software.)" it's right or it's an old reality?

Both. It is talking about the state of affairs in October 2014, which is old. However it also states that the information dates from back then, so it is technically correct.

Since the activation of BIP 68 in July 2016, transactions with version 2 are relevant to the network rules, so the information could clearly be updated.

  or here (https://bitcoin.org/en/developer-reference#serialized-blocks) we can read on the first 2 line that blocks must be serialized under 1MB size or less but i know on the current version blocks can be up to 2MB so i can't understand which one is the right answer.

That information is clearly outdated since the introduction of Segregated Witness (SegWit) in August 2017. The concept of size of a block is no longer relevant, and replaced with block weight (which counts some bytes in a block more than others) limited to 4000000. In theory this means the total serialized size of specially constructed blocks can be up to 3.9 MB, but for blocks limited to common transactions it's closer to 2 MB.

  i just can't understand if bitcoin.org developer reference is outdated or not.

Some parts are, others aren't. It's a resource maintained by a community, so I'm sure they would appreciate help to keep things up to date: https://github.com/bitcoin-dot-org/bitcoin.org


How can i verify my txs with my own full node? Hey i run a full bitcoin+lightning node on a rpi. Can anyone eli5 me how can i verify my own tx if send some coins from an exchange to a public address i control?

Lets say i plug in my hw, send some coins, then i wanna actually verify if i got those coins or at least they are (verify able) on the  mempool waiting to be mined.

I have always struggled with the how do i really “verify, don’t trust” quote.

Thanks in advance.

You should use the gettransaction (TXID) command that returns information about a transaction belonging to your wallet. Then just check the confirmations field.

Sample Call: bitcoin-cli -testnet gettransaction 5a7d24cd665108c66b2d56146f244932edae4e2376b561b3d396d5ae017b9589

Sample Response:

{
    "amount" : 0.00000000,
    "fee" : 0.00000000,
    "confirmations" : 106670,
    "blockhash" : "000000008b630b3aae99b6fe215548168bed92167c47a2f7ad4df41e571bcb51",
    "blockindex" : 1,
    "blocktime" : 1396321351,
    "txid" : "5a7d24cd665108c66b2d56146f244932edae4e2376b561b3d396d5ae017b9589",
    "walletconflicts" : [
    ],
    "time" : 1396321351,
    "timereceived" : 1418924711,
    "bip125-replaceable" : "no",
    "details" : [
        {
            "account" : "",
            "address" : "mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN",
            "category" : "send",
            "amount" : -0.10000000,
            "vout" : 0,
            "fee" : 0.00000000
        },
        {
            "account" : "doc test",
            "address" : "mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN",
            "category" : "receive",
            "amount" : 0.10000000,
            "vout" : 0
        }
    ],
    "hex" : "0100000001cde58f2e37d000eabbb60d9cf0b79ddf67cede6dba58732539983fa341dd5e6c010000006a47304402201feaf12908260f666ab369bb8753cdc12f78d0c8bdfdef997da17acff502d321022049ba0b80945a7192e631c03bafd5c6dc3c7cb35ac5c1c0ffb9e22fec86dd311c01210321eeeb46fd878ce8e62d5e0f408a0eab41d7c3a7872dc836ce360439536e423dffffffff0180969800000000001976a9142b14950b8d31620c6cc923c5408a701b1ec0a02088ac00000000"
}

Reference: https://bitcoin.org/en/developer-reference#gettransaction


What is backed up from the wallet If I backup a wallet what exactly gets backed up? All the bit coin addresses associated with every transfer?

If so does that imply if I "lose" a bit coin address that my final balance will be incorrect (since one's balance is calculated as the sum of transfers IN less the sum of transfers OUT)

Transactions are stored in the block chain, so you never lose them.  However, if you lose the private key associated with an unspent output, then you can never spend it.  So it is important to always back up your private keys (the public key and bitcoin address can be derived from just the private key).  When you import a private key into a new wallet, the wallet will scan the block chain looking for transactions that match the associated bitcoin address.  These transactions will then appear in your wallet without any further action on your part.

Some wallets use discrete private keys, which means you must backup the wallet each time a new private key is generated.  For example, Bitcoin-Qt keeps a pool of 100 new private keys, so you only need to backup the wallet after every 100 send requests (since change is returned to a new private key).

Deterministic wallets only need to be backed up once since they generate new keys using a stored seed.  If you need to restore the wallet, the private keys can be regenerated from this seed.  Electrum is an example of a deterministic wallet.


What does a negative "confirmations" value in listtransactions mean? I sent a transaction on a small altcoin, and running listtransactions an hour later or so says -1 confirmations. It is forked from Bitcoin Core 0.8 and barely modified. What does this mean?

-1 means not in local mempool and not in a block


I forgot where i created my bitcoin wallet I have a wallet that contains bitcoin, but I forgot on the site where I made the wallet. anybody know how to find which website location that create my wallet ?
do i need to write the wallet address here?

Your best bet might just be to look at your browser's history and use the search box to find which site you visited to create your wallet.


OP_PUSHDATA1 and even OP_PUSHDATA2 are allowed inside P2SH scripts fine. However, there is another policy in Bitcoin Core to require that all pushes are minimal in standard transactions. That means you can only use OP_PUSHDATA1 when a direct push is not possible (up to 75 bytes), and only use OP_PUSHDATA2 when an OP_PUSHDATA1 is not possible (up to 255 bytes).

Also, in general: when experimenting with scripts, try things on testnet first.


CGMiner, share sizes, what does a shares size with a G appended mean, how much larger than a M (million) share is it? Well I think I can retire mining now, I how produced this huge hash overnight

So, I have looked everywhere. How much is a G share in comparison to a M (million) share? There is no logical step from million to anything with G in it.

G is short for "giga" (billions), just like M is short for "mega" (millions). Congratulations on a very lucky find that, sadly, won't pay you any more than any other share.


Why don't developers switch from bitcoin-qt to a cleaner implementation? The "reference client" bitcoin-qt receives a lot of complaints from developers on the messy way it was coded.  It seems to require a big overhead to learn, and a lot of time is being spent on modularizing it.  Yet we have other implementations (bitcoinj, libbitcoin, etc)  that are already modular, and coded in a much clearer way.  Considering these facts, why wouldn't the developers switch their active development to one of these codebases?

(disclaimer: I work on Bitcoin Core)

As Luca already mentioned, you have to distinguish wallet implementations and the fully verifying nodes on the network.

Because of how Satoshi wrote his code (a node and a wallet in the same program), the two are often confused, but this is considered a bad idea now. They can perfectly function independently. The reference client's wallet is only one of multiple wallets now, and certainly not the most used or in any privileged position.

When we're talking about validation on the network, things are more complex. Bitcoin is a consensus system, where every node in the network must be able to independently judge the validity of blocks, and come to the exact same conclusion as everyone else. If two nodes disagree about the validity of blocks, they will ignore the other (considering each other's blocks as attacks). If two groups of nodes with different rules both have mining power, a fork will appear, where both groups believe they're the only ones around. This is a disaster, as it means every coin that existed before the fork can be spent once on each side.

Thus, the actual rules of the network are those that full nodes implement. We can try do describe the behaviour, but can't prescribe it. If the rules would be written down in some unambiguous formal document, and a difference would be found between the rules and the implementation, we might say the implementation has a bug... but new nodes on the network would have to copy that bug nonetheless.

Unfortunately, reimplementing those rules is far from trivial. Many people who have tried doing so have actually discovered weirdnesses in what is considered valid by the reference client, and weren't previously known. For example, Bitcoin relies on OpenSSL for signature verification, and early versions just passed whatever was found in transactions to OpenSSL. Turns out that OpenSSL actually accepts incorrectly-encoded signatures to some degree. Without knowing it, several wallet implementation had appeared over time that created such signatures (they're accepted, they must be valid, right?). This means that any new fully validating node implementation must either use OpenSSL too, or mimick it exactly by accepting the exact same set of invalid encodings. There's been progress towards making these signatures invalid (since 0.8 they're not relayed anymore), but making them actually invalid will require a coordinated soft-fork of the consensus rules (EDIT: this has happened on july 4th 2015 with BIP66 being activated).

Examples such as that make me very uncertain about whether exact reimplementation is possible with the current state of the art. That's certainly partly due to implementation details in the reference client, but also because of how hard consensus systems are. There are unit tests for several parts of the logic, and a network interaction test that simulates several weird edge cases to see how a node responds, but they are far from complete (especially because maybe not all edge cases are even perfectly understood). Differences are unlikely to be things found through random testing.

In my opinion, we should aim at modularizing the reference client code, and abstracting the consensus-critical part out into a library, so that it can be reused by several clients without these risks. That will inevitably take time, though.


Is it possible to spend outputs with very small amounts? I'm a Bitcoin newbie and this is rather theoretical question based on this discussion's accepted answer: transaction creation failed

So does it essentially mean that in case if my wallet is comprised of many small amounts of BTC (say, each of them is less than current tx fee), even though they may sum up to substantial amount, I nevertheless won't be able to spend any of them?

For example, let's say in the edge case I have 100.000.000 addresses each containing 1 Satoshi. Does it mean 1 BTC they all sum up to is lost irrevocably?

They won't be lost. But it won't be easy to get them recovered.
The wiki page on Transaction Fees mentions the following:

A transaction may be safely sent without fees if these conditions are met:

It is smaller than 10,000 bytes.
All outputs are 0.01 BTC or larger.
Its priority is large enough (see the Technical Info section below)

So if you have 1,000,000 outputs with one satoshi, you can bundle them by combining them few at a time with a larger output.
Let's say you have another output of 1 BTC. You can make a transaction using this output and any number of 1-satoshi outputs until the limit of 10kB is reached. Make the transaction create only one new output.
I'm not very familiar with output sizes, but let's plan for the worse and consider you can only add two inputs (this will probably not be the case). You will need to make 1,000,000 free transactions each combining the 1-satoshi with the 1 BTC. First tx will give you an 1,000,001 Satoshi output for that address and so on.
So basically, 1-satoshi outputs are not lose, but they are hard to spend. However, the price will need to increase substantially until it's worth the effort to go through this hassle in order to free some satoshi.


How to setup a Bitcoin private net that can simulate the public net? I have some experience in Ethereum-related development and it was very easy to set up a private net with Ethereum that simulate the public main net, I just create a custom genesis block json config, then I can use it to set up half a dozen nodes to connect to a single bootnode, and voila I have a completely up and working private net which can perfectly mimic how the public main net works where I can mine ether and send transactions and wait for them to be mined in around 15 seconds, which is perfect for development and testing.

However when it comes to bitcoin it seems there's no easy way to setup a private net in a closed environment? I have searched around and the best I can find is use the regtest mode to connect multiple nodes, but there seems to be no way to simulate the real mining process, or do I really need to download the Bitcoin source and change some hardcoded settings and recompile my own version of (alt) bitcoin to just setup a private net?

I would recommend using the testnet of your desired client (bitcoin/litecoin etc.) with it's own genesis block and thus it's own blockchain. Configure the testnet parameters in chainparams.cpp to fit your desired outcome, compile it on a couple of nodes on your LAN and configure them to connect to each other in your config file (your/data/dir/.yourcoin) by appending the line connect=IPADDRESS:PORT

You will also want to make sure that you have DNS seeding disabled. Once you have done this you will be able to mine coins on the testnet, grow the chain and eventually depending on how you've set your parameters the network will retarget difficulty and work as if it were on the main network but you will be shielded from the outside world.


Bitcoin Core 0.15 reindexing blockchain looks like its hanging? and run bitcoind and bitcoin-cli from source so i can start messing around with some of the api calls and hopefully develop some cool stuff.
Unfortuantely running bitcoind says i must reindex the blockchain as i'm building over the top of a previous corrupted blockchain.
Running the call:

bitcoind -reindex -daemon -printtoconsole

I get:

2017-09-17 15:11:12 Bitcoin version v0.15.99.0-e278f86c5
2017-09-17 15:11:12 InitParameterInteraction: parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1
2017-09-17 15:11:12 Assuming ancestors of block 0000000000000000003b9ce759c2a087d52abc4266f8f4ebd6d768b89defa50a have valid signatures.
2017-09-17 15:11:12 Setting nMinimumChainWork=000000000000000000000000000000000000000000723d3581fe1bd55373540a
2017-09-17 15:11:12 Using the 'sse4' SHA256 implementation
2017-09-17 15:11:12 Using RdRand as an additional entropy source Bitcoin server starting

With nothing ever progressing past Bitcoin Server starting. Then when i run:

bitcoin-cli getinfo

error code: -32601

error message: Method not found

The process is still running correctly and i can't rerun bitcoind as i've got the process already running in the background. Does anyone have any ideas ?

UPDATE:
When i tail the log i now get

2017-09-17 15:10:46 Reindexing block file blk00076.dat...
2017-09-17 15:10:47 tor: Thread interrupt
2017-09-17 15:10:47 torcontrol thread exit
2017-09-17 15:10:47 net thread exit
2017-09-17 15:10:47 addcon thread exit
2017-09-17 15:10:47 opencon thread exit
2017-09-17 15:10:47 msghand thread exit
2017-09-17 15:10:47 scheduler thread interrupt
2017-09-17 15:10:47 Shutdown: In progress...
2017-09-17 15:10:50 Shutdown: done

Is there a reason the node is automatically shutting down as i haven't authorised any shutdown commands ? Is there a way to check?

UPDATE2:
https://gist.github.com/anonymous/eb0d26892161f2b25933917d1d89c139

Left it running again using -reindex and no -printtoconsole still as a daemon.
Trying to interpret the above log, looks like i'm all up and running ? Is there a way to check and next time i start the bitcoind process i do it without a -reindex ?

bitcoin-cli getinfo

The getinfo RPC has been removed in the master branch (which is what you are using). Try using a different RPC like getblockchaininfo or getnetworkinfo. The fact that you are getting a response with Method not found indicates that the RPC server is up and running, so the node should be working.

I don't think -daemon and -printtoconsole interact well so you may not actually see the debug lines.


Solve problems using bitcoin smart contracts Been trying to ask this to few people on different platforms but nothing was helpful so trying here and will keep trying because I don't even know what else can I do to learn more and contribute.
What will be the best way or resources to refer if someone has an idea and want to implement it using bitcoin smart contracts?
For example: If I want to create a decentralized insurance product which might even need external data so won't be completely decentralized but trust minimized, non custodial, non kyc and better than present solutions. Users will have to regularly pay some amount which should be locked in some multisig setup and used in a way that it gets interest so maybe provide liquidity in joinmarket, create a lending/borrowing thing using discreet log contracts or something else, these profits can be used to cover life and release amounts after verification on claims
How would I approach solving this problem using bitcoin?
What are best resources to learn more about discreet log contracts, it's examples?

What will be the best way or resources to refer if someone has an idea and want to implement it using bitcoin smart contracts?

If smart contracts involve the use of external data (oracles) then Discreet Log Contracts are the best possible way.

How would I approach solving this problem using bitcoin?

I have mentioned few points in this doc, it won't be easy creating an oracle that decides if someone is dead or alive, create incentives around it, use of funds, exception handling etc. however nothing wrong in trying: https://docs.google.com/document/d/1baOWfya2mqd3ZAoDS4a2VQlb3-q4JCILXRN-oe4_zOk/edit

What are best resources to learn more about discreet log contracts, it's examples?

DLC channel in Lightning Dev Kit slack :https://lightningdevkit.slack.com/
Examples:
P2P Derivatives: https://github.com/p2pderivatives/p2pderivatives-client
https://medium.com/crypto-garage/step-by-step-guide-p2p-derivatives-application-c0454606428e
Benthecarman is working on a project which can be used to experiment with DLC (scala):
https://github.com/benthecarman/krystal-bull

Nicolas Dorier is also working on NDLC and I tried a creating a GUI for NDLC-CLI using C#:


Confirmed but not reflecting /decode? This transaction was confirmed but i never received the btc.
It shows as valid transfer ,57Btc
Is this transaction real or fake.
All the information can be found.Hash,Block,Conf. etc but i'm still waiting.
Question .Do i just wait ?
How to clear and receive Btc?
Did The total get sent?
Is this a test transaction ?
Help need to know whats going to happen?

Transaction I.D
222a2290e68c7cd5861e34133a43b10c6ae4732518078b5cbbba1424c84ad8e1

to Wallet
17tmL8Jsa4Hv9ZVVwtKCgrpqr1TbaNxgMp

Thx

The transaction has a lot of outputs. On of the outputs is the address you mentioned. The tx lookup in www.blockchain.info says, that 0.0579332 BTC was sent successfully with 2175 confirmations (as per today) to 17tmL8Jsa4Hv9ZVVwtKCgrpqr1TbaNxgMp.

There is also a "return address", which transfers 57.68039601 BTC to a SegWit address (bc1qgukqed6kdae4hjgdz9cm7xhrp2mu39054mwa2m). So I assume the funds come from an exchange or similar institution.

If you are the owner of the address 17tmL8Jsa4Hv9ZVVwtKCgrpqr1TbaNxgMp (aka: you have the private key for this address), then you own these funds, and can spend it.


Idea on how to keep my altcoin private, make it impossible for others to mine even if they have my altcoin's source code I've been doing freelance to create an altcoin and my client wants this new coin to be private which means only authorized users can mine and use the coin. What I've been doing so far is to make a new altcoin, keep it in a private repo, implement mobile wallet apps with authentication gate that requires user to enter his credential info (I have a server to contain this kind of info), etc. Everything seems to work well 'til yesterday when I see a strange IP in the output of getpeerinfo command. So I was wondering how could someone get my code and whether he was able to mine my altcoin.

So my question is: Has anyone of you had experiences in such situation of creating private coin? And do you have any ideas or suggestions on how I can stop someone from mining my altcoin or only allow certain machines from certain IP addresses can connect to my network and mine even if they have my altcoin source code?

Thank you in advance and have a nice day!

I've been doing freelance to create an altcoin and my client wants this new coin to be private which means only authorized users can mine and use the coin. What I've been doing so far is to make a new altcoin, keep it in a private repo

Bitcoin sounds like a poor fit for your application for two reasons. First, Bitcoin is designed to keep working even if some people tamper with the inner workings of their client. If you're willing to give that up, you can build something a lot simpler. Second, it's designed to process transactions in a decentralized way, which sounds like the opposite of what you want. If you give that up, and use a central clearinghouse, you can build something much simpler.

  So I was wondering how could someone get my code and whether he was able to mine my altcoin.

I don't know whether this person has the source code of your altcoin; I don't know what security measures you've taken. However, having the source code of your altcoin is not nessesary to connect to it. As long as a peer can fake its way through a version message, that's good enough to make it into getpeerinfo. The two clients don't need to be running the same code.

  And do you have any ideas or suggestions on how I can stop someone from mining my altcoin or only allow certain machines from certain IP addresses can connect to my network and mine even if they have my altcoin source code?

Bitcoin's design is going to make that quite difficult. Bitcoin uses a gossip network to move blocks around. If I mine a block, and I tell you about it, then you will tell all of your friends about it. They will in turn tell all of their friends about it too, until everyone knows.

This means that if a single node is misconfigured, and allows external blocks, it broadcasts those to every other node on the network.

It would make more sense to modify the client so that blocks must be signed by a key that is only held by your client.


How can I watch all addresses under HD wallet? Is there any way to watch all addresses under HD wallet?

I'd like to notify users when any of addresses in a HD wallet receive BTC.

It looks like bitcoind (walletnotify) doesn't support HD wallet. You have to add many addresses into a wallet to watch them.
blockchain.info xpub API? (I'm not sure how the API can handle it.)

It seems there is no web service for watch-only HD wallet. Is there any web-service to watch(only) HD Wallet BIP32? : Bitcoin

Full disclosure: I'm BlockCypher's Developer Advocate.

We have a series of HD Wallet Endpoints that we recently released that might suit your needs; you can read more about it here:

http://dev.blockcypher.com/#hierarchical-deterministic-hd-wallets

You can use it in tandem with our WebHooks API for notifications whenever an address associated with an HD wallet is involved in a transaction.

If you want to use something locally instead of our API, I'm a fan of btcd and their associated btcwallet, which supports HD addresses.


How do I synchronize my wallet quicker with bitcoins already sent? I have my first ever Bitcoin wallet, I instantly sent the bitcoins from blockchain.info to my wallet. Without realizing, my wallet is currently (4pm May 8th 2015) 1 year and 42 weeks behind. Is there a way to speed up this process? I need to buy stuff ASAP and I don't want to wait weeks for my wallet to sync. Also, people are suggesting to restart my wallet and download a Torrent from blockchain, will I lose my bitcoins in the process? I'm using Bitcoin Core.

Yes there is, get a better Internet connection and a faster computer.

You need a better Internet connection because you are downloading the whole blockchain (I guess you're using bitcoin-qt or the like) and it is a few GB.

And you need a faster computer because as you download the blockchain you are processing those transactions and updating your DB, so a faster computer will lower the time needed to process that information.

Until you have downloaded the whole blockchain you won't be able to spend bitcoins with your wallet because it will wait until all transactions have been processed to know the amout of bitcoins remaining in it.


reviveing a bitcoin core wallet In 2013 I installed a BITCOIN CORE (V0.10.2) wallet in my netbook computer and purchased 1 bitcoin. Recently I have wanted to sell but found the wallet out of sync and needing to download the entire Blockchain because the computer crashed years ago due to dud battery. when I get past the date when I purchased my bitcoine it appears in my wallet OK but trying to complete the block chain download takes so long that the netbook Locks up before it is complete - why i don't know, but anyway....................
Is there a way to transfer my wallet or its contents to a new BITCOIN CORE wallet (v0.15) that I have in a much newer computer without completing the blockchain in my old netbook? Put another way - what constitutes the identity of my old wallet? - and can that identity be transfered to my new wallet so my bitcoin appears there?

Bitcoin Core 0.10 was not released until 2015. It is impossible for you to have used that version in 2013 as it did not exist.

However the wallet format itself has not changed since at least 2012 (and earlier really) so it is completely fine to upgrade your software. The wallet.dat file can still be used in Bitcoin Core 0.15. All you need to do is make sure that Bitcoin Core is shut down, go to the Bitcoin Core data directory, and copy the wallet.dat file from there to the Bitcoin Core data directory on your other machine.


Bitcoin was sent to my wallet 7 days ago but it has not reflect in the wallet I checked the bitcoin explorer to check if the bitcoin is in and Yes it is but it stays unspent but it has not reflect in the wallet of the main address for 7days now
d325c9a20df855cb1a051d6ed1cee6aea795f2cdd3befaa913855cd1d6128532
This is the transaction id

Your transaction is indeed confirmed on the network. This means that either your wallet failed to pick it up, or it paid a different address than you think.

Check whether the address that the transaction credits indeed belongs to your wallet. Verify that the address is not a "watch-only" address.
Check if your wallet is out of sync. Many wallets have a way to "rescan" or "resync" the blockchain. You can probably find instructions by searching for " out of sync".


Computer crashed, total reinstallation. Have wallet.dat but not private key My computer crashed and I was using the Bitcoin Core/QT client (they're the same right)? I thought I had my public and private keys saved, but those keys are from my old Armory wallet. I don't think I swept them to Bitcoin core, but I still used those keys for encryption/decryption. I was able to retrieve the wallet.dat file from the oldwindows data that is backed up on my computer, but I was wondering if I could retrieve my private key from the dat. file and how. Or if that isn't necessary, how should I go about reinstalling the bitcoin client so that I will have my coin back? I appreciate your help.

As long as you have wallet.dat file and encryption key so you have nothing to worry about.

You can reinstall Bitcoin-core and move your wallet.dat file to bitcoin directory (./bitcoin on Linux) then you will be able to use it like nothing happened.

To get your private keys from wallet.dat you could run in your terminal

bitcoin-cli walletpassphrase "PasswordHere" 600
bitcoin-cli dumpwallet "txtfile_keysFile_path.txt"

All your private keys will be stored in that path.


How to check if node is on TestNet or MainNet via `bitcoin-cli`? Is there a way, by using bitcoin-cli using RPC querying, if the node I'm querying is running on MainNet or TestNet?

Thanks

Before version 0.16.0:

$ bitcoin-cli getinfo
{
  "version": 120100,
  "protocolversion": 70012,
  "walletversion": 60000,
  "balance": 0.00000000,
  "blocks": 414105,
  "timeoffset": -165,
  "connections": 9,
  "proxy": "",
  "difficulty": 199312067531.243,
  "testnet": false,
  "keypoololdest": 1466689642,
  "keypoolsize": 101,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": ""
}


What is the "silk road" and what does it have to do with bitcoin? I have read a lot about the silk road and I am still unsure what it is. I went to http://silkroadmarket.org but it just says that the site is down.

Silkroad is an anonymous online marketplace inside the Tor network which became famous for selling illegal drugs.

They don't have anything to do with the Bitcoin project, except for the fact that they accept bitcoins as a payment method.


What is block weight and how is it different from block size? While reading about BIP141, I have encountered the following options:

Block creation options:
-blockmaxweight=<n> Set maximum BIP141 block weight (default: 3000000)
-blockmaxsize=<n>   Set maximum block size in bytes (default: 750000)

What is a block weight? Is it a integer representation of the size?

Block weight is defined in BIP 141 itself:

  Block weight is defined as Base size * 3 + Total size. (rationale[3])

  Base size is the block size in bytes with the original transaction
  serialization without any witness-related data, as seen by a
  non-upgraded node.

  Total size is the block size in bytes with transactions serialized as
  described in BIP144, including base data and witness data.

The given rationale is:

  Rationale of using a single composite constraint, instead of two separate limits such as 1MB base data and 3MB witness data: Using two separate limits would make mining and fee estimation nearly impossible. Miners would need to solve a complex non-linear optimization problem to find the set of transactions that maximize fees given both constraints, and wallets would not be able to know what to pay as it depends on which of the two conditions is most constrained by the time miners try to produce blocks with their transactions in. Another problem with such an approach is freeloading. Once a set of transactions hit the base data 1MB constraint, up to 3MB extra data could be added to the witness by just minimally increasing the fee. The marginal cost for extra witness space effectively becomes zero in that case.


What clients support escrow transactions apart from Blockchain's MyWallet? By escrow transactions I mean basic 2 of 3 multi-signature transaction like here https://blockchain.info/wallet/escrow

Are there any other bitocoin clients where I can do this?

Electrum allows to escrow transaction but requires you to use the command line interface.

I found this gist explaining how to do it.


Electrum personal server rescan-script.py when i run the rescan script i get the following output:

Traceback (most recent call last):
  File "/home/bitcoin/electrumserver/eps/rescan-script.py", line 71, in <module>
    main()
  File "/home/bitcoin/electrumserver/eps/rescan-script.py", line 67, in main
    rpc.call("rescanblockchain", [height])
  File "/home/bitcoin/electrumserver/eps/electrumpersonalserver/jsonrpc.py", line 58, in call
    raise JsonRpcError(response["error"])
electrumpersonalserver.jsonrpc.JsonRpcError: {'code': -32601, 'message': 'Method not found'}

I am very new to this, so please explain for beginners :).

Make sure that the wallet is enabled in Bitcoin Core. Electrum Personal Server relies on the wallet. Check that you are not starting Bitcoin Core with -disablewallet or that disablewallet=1 is not in your bitcoin.conf file.


What is the Optimal block size based on 90 percentile block propogation delay? We can have pruned nodes that can verify blocks and transactions so the block size can be increased without leading to the centralization of block verification.
But if we increase block size then block verification time and propagation delay will increase. It will increase the probability of two miners mining a block simultaneously and also delay the competing blockchain branches to resolve the dispute. Probably any increase in block propagation delay will increase the time to resolve disputes exponentially.
Based on a website (Can't remember) currently, block propagation delay is 5 seconds to reach 90% nodes which may increase to 15-20 seconds if all transactions were Segwit.
I think block propagation delay is the only limiting factor in increasing block size.
Has anyone done an investigation to find out the relationship between block propagation delay and optimal block size?

I think block propagation delay is the only limiting factor in increasing block size.

This assumption is not accurate. While block propagation time is an important parameter for fair competition among miners, the block size also affects initial synchronization times of new nodes, disk space for archival nodes, and bandwidth (especially upload) requirements for all node operators.
Block propagation between miners should preferably take less than a second, but I don't think the block size and propagation are as related as the question surmises and thus consider the main question to be unanswerable.


How do I restore a Multibit HD wallet from a backup using only a password? I could not find an answer to this: https://bitcoin.stackexchange.com/search?q=multibit+hd+restore+wallet+password

I asked about restoring a wallet from mbhd-*.zip.aes files, and someone said that there are two different types of files, one of using wallet words, and one of them using only the password. https://bitcoin.stackexchange.com/a/38966/3267

So how do you restore a MultiBit HD wallet from a *.wallet.aes file using only a password? There isn't an option in MultiBit for selecting a file during restore.

Still no answer to this specific question, only avoidance. Why can't someone just copy the .wallet.aes file into the location MultiBit HD looks for it?

MultiBit HD dev here.

The mbhd-*.zip.aes backup files are encrypted using an AES key derived from the wallet words. Hence you need your wallet words to do a restore from one of these.

The wallet that is opened normally in MultiBit HD is encrypted with your password. This is the *.wallet.aes file.

You can also restore just the transactions using only your wallet words.

You cannot do an 'Open wallet' specifying a location because the wallets are stored in specific directories created with no user input. We found in MultiBit Classic that users would lose wallets simply because they put them 'somewhere' and then forgot where they had stored it.


Can I send balances to Segwit address from non-segwit address? I have some balance on my first exchange. It use 1~ address.

I'm trying to withdraw this balance to my Bitcoin Core's 3~ address.(Which is Segwit address, right? I made this by addwitnessaddress command)

Does this situation accepted?

Thanks!

I'm trying to withdraw this balance to my Bitcoin Core's 3~ address. (Which is Segwit address, right? I made this by addwitnessaddress command)

Kind of. Addresses which start with 3 are known as Pay-to-Script-Hash addresses (P2SH). Because you used the addwitnessaddress command, your one will be a segwit P2SH yes. But not all addresses which start with 3 are for segwit, they are commonly multisig addresses or could be many other things.

  Does this situation accepted?

Yes, there should be no difference to your exchange between sending to an address starting with a 3 and an address starting with a 1.


How to add seed nodes in altcoin? I have made an altcoin in my local machine running MacOSX. I have purchased amazon ec2 and compiling the daemon to running in unix.

How do i add seed nodes?

I see that there are two files chainparams.cpp and chainparamseeds.h.
What is the difference between these two files?

chainparams.cpp

vSeeds.emplace_back("dnsseed.thrasher.io", true);
vSeeds.emplace_back("dnsseed.litecointools.com", true);
vSeeds.emplace_back("dnsseed.litecoinpool.org", true);
vSeeds.emplace_back("dnsseed.koin-project.com", false);

chainparamseeds.h

static SeedSpec6 pnSeed6_main[] = {
 {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x05,0x53,0x80,0xc7}, 9333},
    {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x05,0xa4,0xdf,0x66}, 9333},
    {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x05,0xff,0x56,0x07}, 9333},
    {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0e,0x98,0x79,0x2d}, 9333},
    {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0e,0xa2,0xd0,0x9d}, 9333}

The domains listed in chainparams.cpp are for DNS seeders. DNS seeders are not nodes themselves, but rather are DNS servers that serve the IP addresses of nodes that are available to be connected to. These can be connected to for both a normal connection and just one to retrieve more IP addresses of nodes.

The IP addresses listed in chainparamseeds.h are the IP addresses of nodes that can be connected to. This connection can be an actual connection or just one which retrieves more IP addresses of nodes that can be connected to.

To setup a seed node, you just need to run a normal node for your altcoin and add its IP address to chainparamseeds.h. There should be a script that actually constructs this for you in contrib/seeds.

To setup a DNS seeder, you will need special software to do that for you. You can start with this software and modify it as necessary to work with your altcoin.


Are there bitcoin exchanges that do not require an extensive verification process? Are there bitcoin exchanges that do not require an extensive verification process to begin trading? I do not want to submit forms on MtGox.

No U.S. exchange. Btc-e does not but they will not do business with U.S. banks. Coinbase does not have an extensive verification process, but they are technically not an exchange, and to buy or sell bitcoins through their service you have to link a U.S. bank account which for all intents and purposes is the same thing as verification.

Due to the patriot act any currency exchange doing business with the U.S. has the burden of proving that they are not laundering money for terrorists.


Bitcoin not reaching Recipient I would like to find out if its possible for a Bitcoin recipient not to receive a payment while on my side(Sender) it shows that the payment was successful? See print screen of payment below, the payment was done more than 36 hours ago.

Have a look at https://blockchain.info/address/1PnwbcQPfWwBPayBvvpcVwK6NjuEmubQTB?sort=0 to check if your payment is on it.


how to convert URI into Bip21 i am trying to convert the

  URI into BIP21

currently i am generating URI from bitcoinj library, but i want it to be on BIP21 Standard. i have read many articles but didn't found any solution

The source file for that method is here

BIP21 wiki

Method can be accessed like this

 String bitcoinURI = BitcoinURI.convertToBitcoinURI(String address, Coin amount, String label, String message);


developing a new alt-coin useful or not? I will try just for educational purposes create my alt-coin. But i have some
questions before to start.

It's possible create the alt-coin since my ubuntu and maintain this alt-coin since my pc if its always turn on?
My last question, at this moment is possible that this new altcoin get some real price in the market?

Someone can guide me a little or say me if will be useful in something create a new alt-coin? And maybe can get be profitable?

Is it useful?

Probably not for the community, but for you because you learn.

  It's possible create the alt-coin since my ubuntu and maintain this alt-coin since my pc if its always turn on?

There is a difference between creating and running it. But yes, you can create a coin with your Pc.

  My last question, at this moment is possible that this new altcoin get some real price in the market?

If you list it on an exchange and the community believes that it has a value: yes. Otherwise: no.

-

If you have only one Pc, you could create an ERC20-token (Ethereum based) and let the blockchain handle everything.


What is a share? Can I find it while mining solo, or only when pool mining? In mining, what is "a share"?
When mining solo, do I "find shares"?

A share is a hash smaller than the target for difficulty of 1* (see clarification at end).  Every hash created has a 1 in ~4 billion (2^32) chance of being a valid share.  In comparison if the difficulty of network is 2,000,000 then a share is 2 million times "easier" to find than a valid hash for the block, and on average it will take 2 million shares (8 quadrillion hashes) to find a valid hash for the block.

Shares have no actual "value".  To the bitcoin network they are worthless.  The only hash with any value is the one that is smaller than the target (determined by difficulty).

Since a miner has no control over when he will generate a share (they occur randomly roughly once per 2^32 hashes) he can't cheat the pool.  When one miner in the pool finds the solution hash (the only hash worth anything) rewards can then be split by number of shares submitted.  There are multiple reward methods (Proportional, PPLNS, SMPSS, PPS, etc) that calculate the "fair share" of the reward but all use a share as a proxy for work completed by the miner.

It is important to emphasize that a share has no actual value.  The only hash with value is the one that solves a block.  A share is merely an accounting method to keep the miners honest and fairly divide any rewards earned by the pool.

There is no need to keep track of shares in solo mining because you will not split the reward and can't cheat yourself.

Usually pools use a difficulty of 1 as the target for a share.  Technically any difficulty (less than network difficulty) could be used.  Each miner's share of the reward would remain the same regardless of what difficulty is used.


Can I have one wallet for all types of coins? I am new to trading. I want to trade BTC, LTC and ETH. If I don't want to keep the coin on the trading website, do I need 3 wallets for my coins?

Hierarchical Deterministic (HD) wallet technology is very powerful. HD wallets can be implemented as either software applications or dedicated embedded hardware devices that connect to computers or Android devices using USB interfaces. Trezor, Ledger, and Keepkey are three examples of hardware wallets that support the BIP 32, 39, and 44 standards.

BIP 32 is the foundation for HD wallet technology.

BIP 39 makes it easy to backup, restore or port all of your private keys typically represented by 12, 18, or 24 words supported in multiple languages.  BIP 39 also supports hidden wallets with the application of as many extra passwords you so desire to provide plausible deniability services. The three hardware wallets mentioned above support passwords, albeit the Keepkey password support is still in beta testing. BIP 39 also prevents vendor wallet lock-in.

BIP 44 technology enables HD wallets to supports multiple cryptocurrencies within one software application or hardware device.  Here is a complete listing of registered BIP 44 cryptos.  Hardware wallets, tending to be the safest for holding large sums, support a subset of cryptocurrencies on this list. Software-based multi-currency wallets (e.g., Jaxx, Coinomi) tend to support more currencies. The last time I checked, these software-based wallets did not support BIP 39 passwords.

It is recommended to have your BIP 39 seed words loaded into multiple hardware wallets from different vendors.  At times, backend servers associated with one H/W vendor might be down or transactions don't complete successfully, and the other manufacturer product will work fine. This is analogous to having multiple email addresses in case one server goes down.


What value of nMinimumChainWork and powLimit should I choose for my altcoin? // The best chain should have at least this much work.
        consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000005c13f99f6d0b1a908");

how to calculate this parameter, i little not understand. It's not block in blockchain, how find this value if altcoin exist end i update sources with exist blockchain end for new blockchain.

consensus.powLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");

end about this value , how it convert to diff xxx for understand what diff is it. example diff 1, 20, 1000 etc...

how to calculate this parameter, i little not understand. It's not block in blockchain, how find this value if altcoin exist end i update sources with exist blockchain end for new blockchain.

Because this is a new chain, the minimum should be zero.

  end about this value , how it convert to diff xxx for understand what diff is it. example diff 1, 20, 1000 etc...

It is diff 1, by definition.


Can it really be true that the Bitcoin system consumes almost $1.000.000 in electricity per day? So I've been trying to figure out how much running the Bitcoin system really costs using the following numbers:

Total Bitcoin Hash Rate: 300.000.000 GH/s
Hashrate of an ANTMINER S4 (currently one of the most efficient ASICs): 2.000 GH/s Power
power consumption of an ANTMINER S4: 1.400W
Energy price: $0.15/kWh
300.000.000 / 2.000 = 150.000 Antminers
150.000 * 1400W = 210.000.000W
210.000.000W * 24 hours = 5.040.000.000 Wh = 5.040.000 kWh
5.040.000 * $0.15 = 756.000$

Taking into account other less efficient rigs around $1.000.000 seems (theoretically) realistic to me, but I just can't wrap my head around Bitcoin costing $364.000.000 per year. What am I doing wrong?

Of course. At the current block reward of 25 BTC per block, on average 3600 BTC are mined per day which are worth over $1 million.

If it were significantly much cheaper than $1M (in terms of energy costs) to mine that $1M worth of coins, more people would do so, thus the difficulty would go up, thus the energy costs would go up.

By definition, the energy costs to mine x amount of bitcoins will never be significantly less than the actual worth of those bitcoins.

By the way, "wasting" (well, not really) only $365M per year is an incredible efficient improvement over the current banking system worldwide. The huge costs, waste of resources, and TONS of other collateral damage that come with the fiat currency infrastructure is astronomical, and saying that it's much, MUCH more than the costs of Bitcoin is even still an understatement.


Connect C-lightning to a remote bitcoind through tor I would like to connect my C-lightning node to a remote Bitcoin node, in order to be able to run lightningd on a small storage capacity VPS.
I could achieve this by using clearnet connection and wanted to know if would be possible to proxy the connection through the Tor network ?

Yes but not by default.
C-lightning uses a pluggable Bitcoin backend. The default one, bcli, will use the bitcoin-cli executable to make requests to a bitcoind.
It exposes bitcoin-cli's rpcconnect startup option to lightningd which does not not support onion hosts. And you probably don't want it to as it is not meant to be exposed.
If you want to run C-lightning without having the full block chain locally you'd probably opt for a light backend solution, such as:

A pruned bitcoind (beware of misconfiguration)
An explorer-backed backend.
For example, the Sauron plugin which you could connect to an external
Esplora instance you would run on a machine with more space. It supports onion services.

If you really want to remotely access bitcoind's RPC, you should probably opt for an SSH tunnel.


How to properly terminate a bitcoin-qt process? I run my bitcoin-qt on headless raspberrypi where it runs pretty smoothly.
The Issue starts when Marco gui crashes via vnc so the Bitcoin-qt GUI is hanging although that deamon is still running as a process when i check with
ps -ax | grep bitcoin
In short I can't access the gui and close it normaly
the only way to still access is through ssh and I tried
bitcoin-qt stop
bitcoin-qt: cannot connect to xserver

What is the proper way to terminate/stop safely my bitcoin-qt process?


Did I loose my BCH and BTG? I had bitcoin in the blockchain info wallet till after both the BCH and BTG forks. I sent that bitcoin out to a paper wallet. If I sweep that paper wallet now, should there be BCH and BTG on there along with the BTC?

You need the private key from the wallet that had BTC in it on both forks. Sending the funds to a new wallet is the right thing to do, now only step you need to do is import the private key into BCH BTG wallets, and if you had BTC on 28 dec on the B2X fork you can also import your key into the b2x wallet.


Bitcoin core database gone after error no more free disk space? How can I recover my bitcoins? So I got myself into this situation.

I have a Bitcoin core wallet, which was up to date and all the way synced. Two days ago I tried to start it up again but when I tried to shut my laptop down I had a notification that I had no more free disc space, so Bitcoin core automatically shutted down. The day after I started my laptop again and the program was gone from my start task bar and had to go search it manually in program files. To my surprise when I opened my wallet it had to restart synchronizing all the way back from the start again. Not only that, all of my database directory was gone from the %appdata%\bitcoin folder! It started everything back from the beginning.

Of course I couldn't as I had no more free disk space. Now the strange thing is, all that space on my Hard drive went to the bitcoin database directory. But if my files are gone, and I still have no free disk space then where are they now, are they stored some place alse or hidden? Or did my hard drive crashed? If they where permanently gone I should have had free disk space again.

How can I solve this and recover my bitcoins? Please help, I'm freaking out as I'm afraid I won't be able to recover them any more as all my dat.files are gone!

This is not a complete answer, but the question implies a possible misunderstanding which this attempts to correct.

Summary: if you can rescue wallet.dat, you're fine.

The only valuable file in the Bitcoin Core user system is wallet.dat. The blockchain files are necessary for the application to be able to see the transactions on the blockchain that sent bitcoins to you and to figure out how many bitcoins you "own" (can spend). What is actually in wallet.dat are your private keys, which is all you need to have.

If Bitcoin Core doesn't have access to the blockchain data then it doesn't know that you have any bitcoins. Once it has access again -- after re-downloading (takes a long time!) -- on this or on another computer, you will be able to see your bitcoin balance.


JSON-RPC getwork data field I recently tried playing around with the getwork command for JSON-RPC and I'm trying to understand what I got out of it. According to the API Call List wiki entry, the "data" field should contain the block data to be hashed.

The data field I got was:

00000001a10bacc7e639d1c69a01014bc5db6f2604b3477a3f273a4e019a232700000000a5942372cc60477c8a276e59c8f1a3f58654ea2f6c4402bf1b18e48455b5b8f64f10868b1c07475200000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000

Which after being dissected a bit according to the protocol would yield:

00000001 - version
a10bacc7e639d1c69a01014bc5db6f2604b3477a3f273a4e019a232700000000 - prev_block
a5942372cc60477c8a276e59c8f1a3f58654ea2f6c4402bf1b18e48455b5b8f6 - merkle_root
4f10868b - timestamp
1c074752 - bits
00000000 - nonce
00 - txn_count of 0?
0000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000 - ??

Is there something wrong with the data I'm getting? Would the client respond differently if I run it with the -gen option?

The number of transactions in the header is always zero, per the specification. The -gen option has no effect on the getwork RPC call.

I'm not sure what you think is wrong with that information, but if it's just the zero transaction count, that's always that way. If it's the fact that you only get the headers you need to hash, it's always that way. Of course the nonce is 0 because the client has no idea what the nonce should be. (That's the point of mining.)


Why do altcoins vary so along with bitcoins? Today bitcoin has dropped by 20%, so I looked for alternative cryptocoins with better performance. But, hey! Litecoin, Iota, Ripple, Ethereum, all of that has the roughly the same graph along time in USD, EUR or even BRL. See, for example (from https://www.coingecko.com/en):

Chart BTC/BRL:

Chart LTC/USD:

That does not make sense for me. "Oh, bitcoin is falling, I'll sell my litecoins" - I would buy altcoins.

Why altcoins (at least the ones listed above) are so related to bitcoin, instead of having independent variations?

The answer is that many altcoins are traded in BTC/ALTcoin pairs, not $$/ALT pairs.

So if an altcoin is trading 0.1 BTC/ALT, and the dollar price of bitcoin falls, then the $ price of the ALT will fall an equal amount.

Some altcoins trade against dollars as well, so their dollar price may be less coupled to the BTC dollar price. But for many of those alts, a large amount of the trading volume will still be from the BTC/ALT pair, and so the influence is still there.


Am I safe if 16 words in my 24 word seed are leaked? I use a 24 word seed for my private key. I split the 24 words into 16 words in three pieces of paper, so one needs to have at least two pieces of paper to recover the wallet. However my question is, if someone gets one piece of paper, can they easily brute force the remaining 8 words?

Ideally you shouldn't share any words and brute forcing with one paper in your case may take time but still possible. Also if someone gets one paper he can try social engineering to get another. Below links might help in understanding things involved in brute forcing.
https://medium.com/@johncantrell97/how-i-checked-over-1-trillion-mnemonics-in-30-hours-to-win-a-bitcoin-635fe051a752
https://twitter.com/JohnCantrell97/status/1274024510786883584
TLDR:
With 8 known words there are 2⁴⁰ (~1.1 trillion) possible mnemonics
To test a single mnemonic we have to generate a seed from the mnemonic, master private key from the seed, and an address from the master private key
Usage of GPU for brute forcing
Tx fee is normally high during such attacks
Open source code that was used:
BIP39-Solver-CPU: This is the CPU benchmark tool he wrote in Rust to get an idea of how long it will take do solve on a CPU for certain number of unknown words.
https://github.com/johncantrell97/bip39-solver-cpu
BIP39-Solver-GPU: This is the actual GPU version he ran on each worker GPU to solve this problem.
https://github.com/johncantrell97/bip39-solver-gpu
BIP39-Solver-Server: This is the actual server he ran that handled distributing the work to all the workers.
https://github.com/johncantrell97/bip39-solver-server
It would take the same system that brute forced the last 4 words of his mnemonic 837 quintillion millennium to brute force all possible 12 word mnemonics.


Getting Litecoin cash out of my Trezor I am trying to get my private key out of my Trezor in order to access my Litecoin cash.
I used the following site in order to generate the private key out of my 24-word recovery phrase: https://coinomi.com/recovery-phrase-tool.html

Many addresses get generated out of it. When using any of these keys into the LitecoinCash core wallet (ie. import private key), I am being asked for my passphrase (supposedly word 25th if ever set up, which I did not) and cannot access my Litecoins. I guess I am not generating the correct private key!?

Any advice on how to extract these Litecoin cash out of it?

Cheers

LCC-core is not asking for your Trezor passphrase (25-word) which, as you said, you didn't set up.  LCC-core is asking for your wallet.dat passphrase which is the passphrase used to encrypt the contents of the LCC-core wallet.dat file.  This was a passphrase you set when you originally installed and set up the LCC-core software.

Just a point of advice.  You might be better served using the Electrum-LCC software since it can talk directly to Trezor.  No need to extract private keys (which is inherently risky)


bruteforce 12 words seed Suppose that someone seized my seed with a phrase of 12 words. I deliberately changed the order of words in a phrase in such a way that the only way to get a real phrase is to go through all the possible combinacies of the current 12 words.

1) How many combinations will it be necessary to go through an attacker in order to find a real seed? How long can it take?

2) Do you find such precaution really effective?

1) The answer is 12! = 479,001,600 possible mnemonics (less if there are repeated words). Out of these only ~29,937,600 (1 in 16) produce a valid seed. This is definately brute forcable.

2) No, if you want to do this use a longer mnemonic (and make sure you permute them in a truly random way)


Anti-Transaction malleability patterns What are the main principles and/or patterns programmers must apply to their code in order to make their programs bulletproof towards transaction malleability attacks?

Use two tables for deposits basically.

insert deposits into one table with a unique hash. store sighash and txid with a unique hash and timestamp in the other. when the txid changes, you update the second table, preventing the duplicate deposit.


Can replay transactions effect both chains? or just the minority hard fork chain? Can a seg2x transaction be replayed on the main bitcoin CORE chain?

I was reading that only the minority hard fork would need replay protection and that coins on the main majority chain would be safe

Can a seg2x transaction be replayed on the main bitcoin CORE chain?

yes

  only the minority hard fork would need replay protection and that coins on the main majority chain would be safe

(a)this is wrong (b)nobody knows what chain will be major, what minor


Is there a website widget or javascript library that turns any Bitcoin address into a clickable widget? Was wondering is there a javascript widget or library that turns any BTC address on a website into a popup QR code on hover?

You can create a QR code for any bitcoin address using Google's QR code maker:

https://chart.googleapis.com/chart?chs=250x250&cht=qr&chl=bitcoin:[your-bitcoin-address-here]

Just point to that as the img src and you'll get something that looks like this:

Note this address is used by a lot of tests as the private key is literally "1".


What are the pros/cons of changing the targeting interval (difficulty)? BitShares is looking at using a target that changes every 24 hours.  This is a drastic difference from Bitcoin's current interval of 2 weeks.

What are the security implications that occur when lowering/raising the interval retarget interval?

What attack scenarios does a too-low retargeting interval allow for?

The targeting interval either amplifies or dampens spikes in the hash rate's effect on the overall difficulty.

Having a shorter targeting interval allows for the difficulty to adjust quickly to changes in the hash rate, however there is a greater possibility of an attacker pushing the difficulty to crazy heights with less hash power.

Having a longer difficulty dampens this effect, but at the same time a drastic drop in hash power will leave the network hurting for a longer period of time, since more blocks need to come out before the network recalculates the difficulty.

In the end it's more or less the same, shorter intervals can have their difficulty altered more easily, but is less lasting; longer intervals makes altering the difficulty more expensive, but is longer lasting.

It is possible for an attacker to do this, with the development of ASIC there were many who took advantage to attack TRC and other SHA based coins. This would not always be an attack on purpose. There are several miners and pools (such as multipool.us ) which will mine the most profitable coin, and doesn't pay much attention to how it's changing the difficulty. For example, if AB Coin were to inexplicably multiply in price 100x, the miners would all be trying to get AB Coin and would consequentially raise the difficulty 100x as well. Once this difficulty has been reached, there is no more benefit to mining AB Coin over another coin, and miners would go find another which is trading higher than it's difficulty. This leaves AB Coin in bad shape, as it's regular mining group is only 1% of what it used to be (in terms of blocks produced).


Can it be exchanged. Can I send  bitcoins to my main bank account ,and the output is like normal cash in the bank. Rather than selling it online .

No.
Maybe one day some exchange partners with a bank to allow such deposits. But that is very far in time...


Could not connect to Bitcoin RPC server outside local host using bitcoind-0.18.0 I upgrade bitcoin core from 0.16.3 to 0.18.0, But I can not connect to RPC server outside local host.

I use the following parameters as bitcoin.conf:

testnet=1
server=1
daemon=1
rpcallowip=0.0.0.0/0
rpcuser=xxxxxx
rpcpassword=xxxxxxx
[test]
rpcport=8383
wallet=test_btc_wallet.dat

You need to explicitly bind it to 0.0.0.0 by using rpcbind=0.0.0.0

Read Andrew Chow's detailed response: Can't reach remote bitcoin rpc server


Can a miner refuse it's reward? As of 2014, miners that successfully mine a block are entitled to 25 bitcoins.

Can miners refuse to receive those 25 bitcoins, thereby reducing the total number of bitcoins that will ever be mined?

For the block to be valid there must be a coinbase transaction but it is only checked that it spends at much the reward and the fees generated in the transactions included in the block.
So it is possible to generate a valid block with a coinbase transaction spending less than the available coin and thus destroying coins forever.

But you can always send the reward to a random address in the hope that no one will ever be able to find it's private key and that it does not belongs to anyone.


How to setup a DNS Seeds node and a Seed Node (for Litecoin clone) I'm doing this for study purposes (creating a Litecoin clone). I read somewhere that for SCRYPT clones, the DNS Seeds nodes aren't necessary?

If I do need them, how to I setup these nodes. I know a DNS Seed node contains a list of IPs that are running a bitcoin client (in my case an alt-coin client).

Or is it enough to hard code one or more Ips in the client itself? Can I use a VPS for this?
Sorry for being noobish ;-)

Seed nodes are important even for SCRYPT coins.  You need to edit the source code in particular the DNS seeds and IP address seeds in the net.cpp file.  You can run this on a VPS or any always on internet connection with a static IP address.

Litcoin Net.cpp

The DNS seed node resolves to multiple IP addresses that are all running their own *coind instance on the appropriate port.  To validate this perform an nslookup on one of the seed nodes.

C:\Windows\System32>nslookup dnsseed.litecointools.com.
Server:  dd-wrt
Address:  192.168.11.1

Non-authoritative answer:
Name:    dnsseed.litecointools.com
Addresses:  109.67.99.8
          108.52.232.25
          .... (insert more here)
          23.242.146.169
          114.216.241.119


Bitcoin core API for address I installed bitcoin core and now it is completely synced. I am not able to find REST Api for a particular address.
I want to run my server so can i am able to make an http request for REST API

You need to enable REST by setting rest=1 in your bitcoin.conf or startup bitcoind with -rest=1 or bitcoin-qt with -server=1 and -rest=1.

You can access REST by curl (example):
curl localhost:18332/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff7627ff72e5e8b0f71210f92ea7a4000c5d75-0.json

A simple documentation is available here: https://github.com/bitcoin/bitcoin/blob/master/doc/REST-interface.md

EDIT:
There is no REST API for addresses. Bitcoin-Core does not have an per-address index.
If you enable -txindex=1, you can retrieve any transaction with GET /rest/tx/<TX-HASH>.<bin|hex|json> (otherwise only transactions in the mempool).


What can a person do with special private keys? The Alert message in the Standard Client will only be displayed if it is signed with a correct ECDSA private key. Should anyone get that private key, they would be able to propagate any alert through the Bitcoin network, possibly causing some harm.

What can a person achieve with special private keys in regards to the Standard Client and anything directly related to it, and moreover, what public key / address are known to correspond to such keys? (For example, a preferable answer would be "With key X and Y one can do Z")

As far as I know, the alert key is the only special one with a public key hardcoded in the client.

Technically, the public key of the genesis block's output is also hardcoded in the client, but it grants no special privileges. The genesis block cannot even be spent.


Jalapeño Multipool Setup on OS X I have an ASIC Jalapeño Bitcoin Miner. It mines consistently at around 5000 GH/s. I have been mining using the BitMinter Miner and BitMinter Pool just because it is easy to setup and get running quickly and that's what I wanted to do upon receiving my Jalapeño. However, I now wish to maximize my mining profits. I have read lots about mining etc and I have seen a lot about multi mining. I found a pool called MultiPool and made an account. However, I am unsure how to get mining on the pool now. I have an iMac that I will be running the Jalapeño from. I want a simple, stable, and reliable mining program. But all my attempts to download CGMiner for Mac have failed. How can I get mining on Multipool with my Jalapeño?

You can use MacMiner

either use the fpga/asic or bfgminer window (which both use bfgminer) or the cgminer window depending on your driver setup. on 10.9 bfgminer should work without driver meddling and prior to 10.9 cgminer should work without installing drivers. You can run either from the command line or through MacMiner.


Statistics on Multisig Bitcoin Accounts by type of multisig I am looking for statistics on Bitcoin addresses in use by number of multisig addresses.  Specifically, I would like to know how many accounts exist that use 1 of 1, 1 of 2, 2 of 2, etc.  Is there a place where this information exists?

Ideally, it would be nice if there was a threshold for amount of bitcoin associated with the address that could be set.

I would like to see something like https://www.coindesk.com/year-multisig-so-far or https://medium.com/@alcio/some-stats-about-bitcoin-multisig-915f0787ef2f, except these are rather old and they are measures of transactions and not used addresses.

There is no such data source as far as I'm aware.

Moreover, you'll never be able to get complete stats on this, as a multisig address is not revealed to be multisig until an output is spent. If an address has only inputs, it can be any form of P2SH address (even segwit).

That said, for addresses that have been used to make outgoing transactions, you could use bitcoind and parse the raw blocks to appropriate scripts. It shouldn't be too hard to build.


How to create a new POS altcoin? I am looking to download a POS (Proof Of Stake) files to create my new altcoin, but all the instructions I found online is for the POW (Proof Of Work) and without any instructions for the blockchain. Can someone help please, or provide links?

Maybe you can look into Qtum's work. I am pretty sure they use the proof of stake concept. https://github.com/qtumproject/qtum


Can multiple small graphic card memory collect more mining hash rate If I set multiple 3GB GTX 1060 , It can generate more hash rate than single GTX 1070 6GB.
Can I still mining ETH by this 3 Gb cards when the bloCk size of eth is over 3 Gb.
EXPLAIN ME.

Currently you can not do that.
DAG should be loaded to card's memory to mine. Current miner software do not support this kind of cross-card memory management


bcoin.io: Get TXs in reverse order I am using bcoin for a project.

I would like to retrive TXs in reverse order.

In the documentation I read that I can do that through the "reverse" query string parameter.

Anyway, the documentation doesnt provide any example of how I can pass this paramenter to the javascript API in the getTXByAddress(address) method.

If that's not an option, also the cURL way is fine.

Any suggestions?

Thanks a lot

You're right, the reverse parameter was added recently and the example in API docs were not updated.

https://bcoin.io/api-docs/#get-tx-by-address

The method now accepts a second parameter which is an "options" object. The line in the example should look like this now:

const result = await client.getTXByAddress(address, {reverse: true});

If you want to ask more specific bcoin questions you can find the developers on IRC #bcoin or on slack: https://bcoin.io/slack-signup.html

EDIT: Actually after a second look at the client code, the new options may not be available in the JS method. So thanks for asking! I'll open a PR for this ;-)


Detailed overview over old exchange rate I would like to create a detailed overview about the exchange rate of bitcoins over the last months. Unfortunately, all I can find are lists with one value per day, but I would like to have much more detail (one value per hour at last).

Is such a detailed list available somewhere on the internet?

One of the best sites I've found is Bitcoincharts.com. The charts allow you to see Bitcoin prices from its entire history or down to the hour. It allows you to view the prices on different exchanges and markets too.


how make own gitian-sigs end detached sigs? How make own gitian-sigs end detached-sigs. I cannot find any useful info. Where i try see it's always start with "you  already have .assert and .sig . but how they create ?

Instructions for setting up a Gitian building environment are available at https://github.com/bitcoin/bitcoin/blob/master/doc/gitian-building.md. Instructions for performing the gitian builds for releases are available here: https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md


What is the purpose of Bitcoin mining? Does Bitcoin mining serve any purpose other than rewarding the people with the best mining equipment?

It seems that free Bitcoins are given to whoever can mine the fastest.  Is that it, or is there any benefit brought about by mining?

The initial mining revenue was those who created the system and early adopters experimenting.

You have to remember at this time they were worth very little. many of those coins may have been deleted, sold or spent at a much lower value.

The risk to reward ratio was much larger, many thought they would not be worth anything. Your calling this money because millions of people have now given trust to the system. Back when it started currency from a game like World of Warcraft would have been considered more valuable.

The only reason people with "good computers" got coins is not because they had those computers, it is because less people were actively trying to accumulate bitcoin, making it easier for any computer to do so.


What is the character limit for sending an Ardor message to another account? I'm sending a message on the Ardor blockchain to another account, but what is the message character limit?

The character limit for a non-prunable message is 160 characters, but if its prunable it is max 42K.

Find the api parameter:
messageIsPrunable=true


Can I rely on multisignature addresses being future proof? I am afraid to store my bitcoin in a multisig address.

In the future, if the Bitcoin protocol is updated, could there be any problems with multisig addresses? Are they safe to store bitcoin in for long term investments?

Is there any chance to lose my Bitcoin stored in a multibit address due to Bitcoin system updates/upgrades?

Multisig transaction types use standard CHECKMULTISIG opcodes (which have been present in Bitcoin since its initial release in January 2009) and P2SH addresses (standardized in BIP13 in October 2011). Both are very commonplace nowadays.

Consensus changes sometimes happen in Bitcoin, to add features or improve security. However, to the best of my knowledge, valid useful scripts have never been invalidated by such changes, nor do I expect such a thing to ever happen. Loss of money caused by a protocol change should and likely would cause an outrage.


Sender address from DecodeRawTransaction (C#) I'm trying to get the senders address using the Bitcoin JSON RPC in C#. So I GetRawTransaction and then use the DecodeRawTransaction method to return my JSON object. I can see in the 'vout' of this the receiver addresses but I cannot see the sender addresses in the 'vin'.

Can anyone help? I may have phrased the question poorly so please ask if you need any more informations. Thanks.

The quote below is taken from my answer to How to implement a game like SatoshiDice?  What you are looking for is addressed in this portion of my answer below.

  Get the customer amount and payment address

  Call bitcoind getrawtransaction [The incoming transaction ID] 1.  The 1 at the end will return the data in "verbose mode", which
  essentially the raw data in JSON format.
  From the raw transaction details, take the txid and vout from the vin object.  With this transaction, again call bitcoind
  getrawtransaction on the txid.
  From these raw transaction details find the vout object, referenced by the vout index from step #2.  Within this vout
  object, there should be a list of payment recipient addresses.  Take
  and store the first address.

It is worth mentioning that a received payment can be a summation of numerous, former transactions to multiple recipient addresses.  Getting an originators address isn't always straight-forward because the original payment could consist of multiple payments, from multiple sending addresses.

This is why that in my response to the SatoshiDice question I mention taking the first address from the second vout result.

You can safely assume that if someone sends you a payment originating from multiple accounts, they control all accounts. Ergo, picking the first in the list will give you correct address.


Checking whether lightning node is online/visible I just created my first lightning node and already have one active connection. My problem is however, that I do not see my node in any lightning network explorer. Is it possible to somehow check whether my node is truly online/visible?

For your node to appear in one of the explorers you have to have at least one open channel and once the channel is open you have to wait a little bit since the information that your node exist has to propagate through the gossip protocol. The gossip protocol requires an active channel to prevent spam and denial of service attacks.

To check if your node is online you can however peer to any node. (in clightning with the command lightning-cli connect) if that command is successful your node is online.


What is the XPT protocol? XPT (x.pushthrough) is used by some mining pools (e.g. ypool.net, primecoin). I have googled but could not find any reference to the details of this protocol. What is the protocol to be able to write a basic client?

It seems that XPT protocol was developed by ypool.net and there is no official specification of it.
But it is possible to get details from the source code of xptMiner or xptProxy.

You can start from https://github.com/jh000/xptProxy/blob/master/src/xptProxy/xptClient.cpp


Implementation of getdata I am confused about how getdata() is actually implemented at full nodes.

Suppose a full node receives a getdata() request with MSG_BLOCK flag and a hash H of some block B. Then would it simply look up H into its levelDB database to fetch B from its disk and return it to the caller (in constt time) or something more expensive is done?

Can I also get some references to read about it?

There isn't even a database lookup in Bitcoin Core. All blocks and mempool transactions are indexed by hash in memory. It's typically just serializing from memory, or one disk read directly sending disk data to the network.


find the maximum possible reward for creating a block using I'm new to bitcoin development someone request from me to know the maximum possible reward for creating a block using some address.

My Questions :-
1- Which framework and tools can help to do that ?
2- Reference for learning ?

If I understand your question correctly:

Currently the maximum reward for mining a block is 12.5 Bitcoin plus any additional transaction fees in that block. This reward halves every 210,000 blocks. It does not matter which address is used for receiving the reward. See https://en.bitcoin.it/wiki/Mining#Reward.

For learning references, see What's a good resource to learn how [technically] bitcoin works?


I have a bitcoin address , how do I check how much bit coin I have How can I check my bitcoin address. I have the address but how do I access it

Blockchain.info and enter the address into the search field. Your wallet controls the private key associated with the public address used to receive funds.  Control of private keys enable funds to be spent by your wallet.


How can this input address have multiple values at the same time? For the transaction: https://blockchain.info/tx/ee1658bb4d0de80a91d2e0005218d4cfab7c302a352458bd6afb6376b47fbf81 it looks like there are multiple inputs with different values for the same address. I thought an address only has one value at any given time?

What's happening in this transaction is that the same address (1AhN6rPdrMuKBGFDKR1k9A8SCLYaNgXhty) is claiming different outputs. You can see which output it's claiming by clicking on the "Output" link available for each input.

This is a common scenario where a person has their coins spread across several addresses.


Where can you see current Bitcoin miners signalling SegWit2x? Hi I know you can view current miners signalling 'intent' to implement SegWit2x on coindance https://coin.dance/blocks . But is there a live website that show miners actually signalling SegWit2x?

Blocks signalling for the SegWit2x, i.e. the New York Agreement segwit activation (BIP91), are setting bit4. This shows up as a '1' in the second to last position of the version field. Blocks signalling readiness for BIP141, i.e. regular segwit activation, do so on bit1 which shows up as '2' in the last position of the version field. It is also possible to signal readiness for both:

  20000010              20000002               20000012
        ↑                      ↑                     ↑↑
       bit4                   bit1                   bit4 and bit1

xbt.eu is explicitly tracking the bit4 signalling already, but you can see the version field for blocks on most block explorers, and sites that track such information such as coin.dance.

Note: Bit 4 refers to 1<<4 and is thus the fifth bit from the back because the first is Bit 0. ;)


Unable to replicate block header validation errors: time-too-old and time-too-new we are playing with the regtest and we don't able to replicate the two blocks validation error managed here
https://github.com/bitcoin/bitcoin/blob/5b24f6084ede92d0f493ff416b4726245140b2c1/src/validation.cpp#L3493-L3499

We understand that GetBlockTime and nAdjustedTime have values near os now() time so move manually the os clock can trigger the validation errors.

But we were unable to :(

Step to reproduce "time-too-old"

start bitcoin regtest daemon
mine 101 block
change the os clock 1h behind
mine a new block

we expect to get "time-too-old" validation error but we got no error

Step to reproduce "time-too-new"

start bitcoin regtest daemon
mine 101 blocks
change the os clock 3h forward
mine a new block

we expect to get "time-too-new" validation error but we got no error

Since you say you are changing your OS clock, I am assuming you are using Bitcoin Core's built in miner for regtest. This miner will try to not produce invalid blocks.

To avoid the time-too-old failure, it will take the maximum between the median time + 1, and the network adjusted time (which is basically OS time). So when you set the clock too far back, it will end up creating a block that is 1 second ahead of the median time which is valid.

You aren't getting the time-too-new error because Bitcoin Core is using the system time in that check, not median time. A block that is too new will become valid after time has passed. So it uses the OS time for that check, not median time. As such, when you set your OS clock 3 hours in the future, it produces a block with a timestamp 3 hours in the future and compares that to the OS clock which is also 3 hours in the future. This comparison finds that the block is not too new, so it does not fail.

In order to test these specific errors, you need to implement your own miner to produce blocks with the parameters that you want to use. Bitcoin Core's test suite has an independent miner in python which is how these specific failures are tested.


How to set up Lightning Network conf file. RPC user / password? and zmqpubraw? In my lnd.conf file I have the following settings:

debuglevel=info
listen=192.168.100.134
externalip=186.4.235.84
alias=MyNodeAlias
color=#000000
maxpendingchannels=5
bitcoin.mainnet=1
bitcoin.active=1
bitcoin.node=bitcoind
bitcoind.rpcuser=bitcoind_rpc_user_string
bitcoind.rpcpass=bitcoind_rpc_password_string
bitcoind.zmqpubrawblock=tcp://127.0.0.1:18501
bitcoind.zmqpubrawtx=tcp://127.0.0.1:18502

What is rpcuser and rpcpass? which values should I use? Also, what is zmqpubrawblock and zmqpubrawtx?

So in Bitcoind you can define authentication via an rpc interface (remote procedure call). In the config file of Bitcoind which is usually located in ~/.bitcoin/bitcoin.conf you can set the values for

rpcuser=bitcoind_rpc_user_string
rpcpass=bitcoind_rpc_password_string

Obviously you should select other values than the ones in this answer / question. You could also pass those values as command line arguments to Bitcoind.

As for the other two values. Bitcoind uses zero message queue (zmq) to share raw block data and raw transactionsdata. I guess raw means binary (but I am not sure). These two values are the zmq sockets for both interfaces I guess they are pub / sub sockets to which your lnd node will subscribe.


Have network DDoS attacks ever been successful on any coin? Has a cryptocurrency network ever been fully DDoSed so that the blockchain did not advance during the attack?

If so, which one and how?

This is more or less impossible, since you don't know where the miners are. Attacking the major mining pools is feasible, though they deploy some anti-DDoS measures. But even when such an attack would succeed, there still are people non-affected (eg. running behind NAT) and running the *coin network like if nothing happened.

The only issue that I can notice there is that the difficulty for getting a new block would be too high, so that the blocks would be mined much slower.


TorBrowser + HTTPSEverywhere Blockchain.info wallet safe? I seem to find conflicting information regarding the possibility of a TOR exit node stealing my data even while using HTTPS.  How possible/likely is this?

Let's assume user implements strong security on his personal system/network (no keyloggers, malware, etc.) and the blockchain.info is honest.  For this example, I am concerned about the attack vector of the TOR exit node even while using HTTPS.

With Blockchain.info, only encrypted private keys are stored on their server. Decryption of private keys and signing is done in the browser. You don't even need to worry about sending your data over HTTPS, let alone TOR because any data that leaves your browser is securely encrypted before it even leaves your computer.

There's one caveat, however; it's difficult to determine whether or not Blockchain.info (or any site, really) is doing exactly what they claim unless you constantly monitor traffic between them and your browser. Ultimately, the most dangerous attack vector would be for Blockchain.info to behave dishonestly, or for a website to impersonate them and do the same.


How to track bitcoin transaction? I have sent 0.00778963 BTC to 1BF8SHKnT8ZysYNrj5toeu6DsuGE5XDcCR

It is more than a day and I dont see it in the wallet. The receiving address is a coinbase account wallet.

Please let me know how I can trace/track this transaction probably using a tool like blockchain.info. Unfortunately, I do not have transaction record.

You can add the bitcoin address to the search field at blockchain.info and you should be able to track any incoming transactions to that address.

https://blockchain.info/address/1BF8SHKnT8ZysYNrj5toeu6DsuGE5XDcCR


What are the chances that a nonce for one block is a nonce for another? Just to put a cap, let’s say in 1 million blocks, what is the chance that 2 blocks will share the same nonce value? Has it happened before?

Assuming that nonces are randomly distributed (which they should be) and after 1 million blocks that no blocks have the same nonce, the probability of the next block having the same nonce as a block that has already been mined is 1000000/4294967296 = 0.000233, so very low. However as more blocks are being mined, the probability increases. Once there are 4294967296 blocks, the probability of a block sharing a nonce with a different block is guaranteed.

The reasoning for 4294967296 is because the nonce is a 32-bit integer so there are 2^32 possible nonces which is 4294967296.

However, the probability of any 2 blocks having the same nonce is 1/65536 due to the birthday paradox.

There currently have been multiple pairs of blocks that have the same nonce. Some are listed below:

Nnoce: 68229731, blocks [9459, 35238]
Nnoce: 3147243286, blocks [19411, 71181]
Nnoce: 2811235843, blocks [42202, 110904]
Nnoce: 61366272, blocks [100255, 171713]
Nnoce: 74571595, blocks [37187, 176000]
Nnoce: 22876413, blocks [22460, 188416]
Nnoce: 131829089, blocks [40784, 203153]
Nnoce: 2962306894, blocks [136018, 216500]
Nnoce: 3947837747, blocks [222990, 227103]
Nnoce: 194800186, blocks [36506, 243089]
Nnoce: 1388988687, blocks [108366, 251694]
Nnoce: 922984712, blocks [245295, 260005]
Nnoce: 4133916719, blocks [176525, 276110]
Nnoce: 3890141599, blocks [213608, 292419]
Nnoce: 876374308, blocks [18857, 317190]
Nnoce: 70651752, blocks [238831, 322634]
Nnoce: 2359983768, blocks [112651, 325309]
Nnoce: 3421780225, blocks [95525, 328515]
Nnoce: 3787474772, blocks [187117, 346581]
Nnoce: 3956410682, blocks [10506, 350632]
Nnoce: 2756846708, blocks [117891, 355889]
Nnoce: 158953652, blocks [305592, 368094]
Nnoce: 2660238194, blocks [257198, 371219]
Nnoce: 2774929041, blocks [112737, 413142]
Nnoce: 2335903164, blocks [379609, 436786]
Nnoce: 64632759, blocks [60105, 443347]
Nnoce: 2469851573, blocks [225526, 448132]
Nnoce: 84018796, blocks [78009, 453373]
Nnoce: 1935967937, blocks [436055, 454540]
Nnoce: 2900822784, blocks [144802, 457849]
Nnoce: 2434589573, blocks [102268, 467087]
Nnoce: 2965485942, blocks [366411, 481531]
Nnoce: 18390814, blocks [68360, 506618]
Nnoce: 433452460, blocks [157144, 513320]


Can i start mining with ANT MINER? from here at little time, i'll get a ANT MINER to start mining bitcoins, and i want to know if i have some chance to get some coins with him.

Brand: ANT MINER

Model: BTC_1.6Gh/s

Overclock: 2.2 Gh/s

I choose ANT MINER because is cheap and i won't take risks buying something expensive that i don't know if i'll use for long time.

Power costs isn't applied, but i just want to know if i can make any money with it, and aproximately time that i'll take.

You can plug your specs into a bitcoin calculator like this one http://bitcoinwisdom.com/bitcoin/calculator but since you have such a low hash rate you shouldn't expect much since the difficulty will continue to keep rising.


Restore lightning network node/channels If one wanted to restore a lightning network node, what files have to be saved?

I read that saving hsm_secret is enough to restore private key(s), but I also read about a problem with channels. How channels are restored after a re-installation of lightningd and the "pasting" of hsm_secret file?

And, if it is impossible to restore channels, how to force the closure of them so that one can retrieve all locked funds?

in c-lightning all the state information is stored in the lightningd.sqlite3 database. so if you shutdown your daemon and you copy hsm_secret as well as lightningd.sqlite3 you should be able to fire up the node again and have your channels operating (I did this already)

You have to be carefull though. If you start the node with an old backup of lightningd.sqlite3 your channel partner might think you try to publish old state and will close the channels and redeem also your balance.

with only the hsm_secret it will be hard to close channels. you can derieve the keys you used but you are missing the signatures of your channel partners to reconstruct the commitment transactions. Technically (not 100% certain how the implementation handles this case) you can try a collaborative close with the third party just with your hsm_secret since you know the keys to the funidng txs and with the other party together you are able to spend them. However you would have to trust the partners to provide the correct channel balance that you previously had agreed upon.


Alternative to Python pip bitcoin This Python pip package https://pypi.org/project/bitcoin/ was originally developed by Vitalik Buterin (that Ethereum guy) but is no longer maintained. Is there any alternative equivalent pip package which can also work with segwit addresses? Thanks.

Found this https://github.com/1200wd/bitcoinlib . And it is crap. Won't even install with pip or pipenv.

Try this library by Peter Todd https://github.com/petertodd/python-bitcoinlib

Or pycoin https://github.com/richardkiss/pycoin


Test environment for bitcoin transactions/wallets I want to build a pet project which would use bitcoin for sending/receiving and see balance of wallets involved changed.
What are my options for having a local env that would allow me to perform these operations in a way similar to real environment?

Bitcoin Core and all implementations of Bitcoin should provide developers with a local regtest mode which is local only (no peers) and a mining difficulty of 0. This is the mode most tests are written in because blocks can be mined instantly.
Since you tagged nodejs you might be interested in bcoin:
https://bcoin.io
https://github.com/bcoin-org/bcoin


How can I detect which customer has made a payment using only one receiving address? How can I detect which customer has made a payment using only one receiving address?

Can I embed a unique special message in the QR code (like a nonce) which I'll match against my database? Does it make any sense or is it too problematic (bitcoin client not embedding the message, unable to read the transaction message from the blockchain, etc..etc..)

If that's not an option, does it make any sense to embed a unique code on the least significant satoshis? (let's say the last 3 satoshis if I expect on average less than 1000 transactions occurring at the same time)

You said you can't create new addresses on the fly but you also said you're using PHP. It's really easy to do it, just take a look at bitwasp/bitcoin-lib and give out a new address for every purchase. You can also create a functional mapping between a purchase id in your database and a bitcoin address really easily so you don't have to store the address used for each purchase.

Using the least significant digits of a transaction is a really bad idea. Not only because that'll cause a lot of trouble if people don't pay but also because you can't be sure that the wallets of all your customers support sending a very precise amount of BTC. Furthermore you'd have to discourage people from simply rounding up because they're too lazy to type in the exact value (if they have to type that in).


How does fee split between senders in a transaction? I know how fee is calculated in a transaction,
but I don't know how this fee amount split into senders.

For example, consider the following transaction with 0 BTC miner fee:

  inputs:

   Alice    sends     20 BTC ->
   Bob      sends     10 BTC ->

  miner fee: 0 BTC

  outputs:

-> Carol   receives   15 BTC
-> Alice   receives   10 BTC
-> Bob     receives   5  BTC

Now if we consider 1 BTC for miner fee , how does these output amounts change?

Maybe in half?

-> Carol   receives   15  BTC
-> Alice   receives   9.5 BTC
-> Bob     receives   4.5 BTC

There is no real concept of sender identities, as far as the blockchain is concerned. The fee split is entirely determined by the change output values, which are entirely determined by the signers of the transaction.

A transaction involving inputs from two separate parties will require some coordination between them to decide on the recipient and change. It is presumed that during this coordination, a fee is decided upon, and set.

Bitcoin itself offers no insight into this splitting process, it should be handled out of band by the wallet or tool used to construct the transaction, based on configuration from the senders