How can I view the Blockchain locally on my machine? I'd like to view the blockchain on my Windows 7 machine. Right now I'm looking under roaming/Bitcoin/blocks, and trying to open blk00000.dat . I can't read any of it though, it seems the text is garbled. How can I change the format/open it in a program that makes it look more like the raw block data from blockexplorer or something similar?

Thanks.

You can check the log files , but bitcoind clears it when it starts to get bigger.

although you can read the Bitcoin block file using software/application called Bitcoin Abe
you can parse the data from bitcoin block file to mysql server too.

https://github.com/bitcoin-abe/bitcoin-abe

This software reads the Bitcoin block file, transforms and loads the data into a database, and presents a web interface similar to Bitcoin Block Explorer, http://blockexplorer.com/.

Abe draws inspiration from Bitcoin Block Explorer (BBE) and seeks some level of compatibility with it but uses a completely new implementation.


24 Word Mnemonic Seed Phrase for Ledger Nano S usable on Trezor? Can I use my 24 word mnemonic backup seed phrase that created on my Ledger Nano S on other devices that use a 24 word seed phrase? An example would be the Trezor hardware wallet.

You can use them, but you need to ensure that the hardware wallets use the same address derivation paths. For the hardware wallets you mentioned (Trezor and Ledger) both of them use the BIP 39/BIP 44 derivation paths, so that should work, especially in the case of Bitcoin. However care has to be taken for certain coins (ETH or any other ERC-20 for example) where these wallets do not use the same derivation paths.


Why does bitcoin create several "empty" wallet addresses? I'm currently running bitcoind -testnet. I ran bitcoin-cli dumpwallet ~/wallet-output just to explore the output and it looks like it created 102 private/public key pairs that I assume are just sort of pre-generated just for the convenience of having them on hand.

However, I'm surprised they all seem to be somehow "recognized" as part of the testnet blockchain already, even though they've never been used. For example, when I search for one of these addresses in Block Explorer I see an address with zero transactions and a 0 BTC balance: https://testnet.blockexplorer.com/address/mxwDTWg556BDzZhEWvJ1EeYwSYxG42wKZC. This is different from addresses I've created "outside" of the bitcoin tools (e.g., https://www.bitaddress.org). For example, Block Explorer "can't find" this address: 1XitCFAkFhNR6PoJsPcxjsFzkMegx4Ky5. I would expect that to happen to all of the addresses pre-generated in my wallet until I actually use them.

Why did bitcoind "register" these addresses on the testnet blockchain? And how exactly did it do that? Is that a special transaction type?

Bitcoin doesn't "register" addresses on the blockchain. The reason I was having trouble looking up arbitrarily-generated public addresses on the testnet Block Explorer website is because I was searching for mainnet addresses, not testnet addresses. For example, addresses generated using the above https://bitaddress.org website are by default meant for mainnet, and are invalid on the testnet blockchain. If you use add ?testnet=true to the URL you will generate valid testnet addresses.

The exact differences between testnet and mainnet addresses are documented in numerous places online. Among them, the Testnet page on the Bitcoin wiki, which states:

  A different value of ADDRESSVERSION field ensures no testnet Bitcoin addresses will work on the production network. (0x6F rather than 0x00)


Why does this transaction use the same address for multiple inputs? Why does this transaction include the same address multiple times? Was this done to "hide" the two other addresses where funds originated?

It is hard to guess on "intention" of the sender. But let's say I collected many small payments (some Satoshis) in my system. Similiar like many small pennies or cents in a FIAT wallet. Then I have for each payment a UTXO. Now I want to transfer all these little payments (or pennies and cents). The wallet has to collect all UTXOs from that address, and create one output for it. This makes then appear many small amounts from the originating address.

Further detail: I had collected many small amounts at the beginning via  bitcoin faucets, then had many, many small amounts in my wallet, and then transferred it. E.g.: https://blockchain.info/de/tx/c9908124e59a2794f3807b366be7d235ff7654251adcdf396e209236341b3c32


Explainations about chaining of transactions I'm reading through Satoshi's paper, and in Section 2. Transactions, he starts by saying:
We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership.
Then there is a good diagram that shows this in the paper

So, effectively if BTC0 is the previous transaction, the new transaction is:

Kp(Owner1)
hash := H(BTC0,Kp(Owner1))
S(hash,Ks(Owner0))

where

Kp(Owner1) is the public key fo the recipient (Owner1)

hash := H(BTC0,Kp(Owner1)) is the Hash of the prev transaction together with the pub key of the recipient

and

S(hash,Ks(Owner0)) is the previously computed hash, signed with the private key sender (Owner0)

I have a  couple of questions:
Here I've indicated the 'previous transaction' is BTC0- is this the previous transaction for that Coin, or the previous transaction on the chain? Danielle Drainville suggests it is "the previous transaction in which this coin was used is hashed together with the recipient's public key" in her paper (An Analysis of the Bitcoin Electronic Cash System)
If so, there must be some kind of search for the previous transaction first?
And, if I understand correctly, there are no 'Coins' in your wallet...the wallet stores the Block Chain, that is, the Transactions log, and your pub/pri key(s). When you're wallet displays to you, the number of bitcoins 'in' it, its actually the result of a search of the Block Chain?

I don't fully understand your question, first a reaction on your assumption.

It is indeed so that your wallet does not hold actual coins. However, consider the distinction between the terms wallet and client. This is not an official distinction, but it is useful to understand the two different principles.

A Bitcoin client, stores the complete block chain. When you request information about an address or a transaction, it can inspect the block chain and retrieve the requested information. So indeed balances are retrieves by a query to the block chain. Most clients keep an index of all transaction of your addresses so that these queries can be achieved very efficiently.

A wallet often refers to the set of private keys of your own addresses. For the default Bitcoin client, this is the wallet.dat file. It contains a list of the addresses you own and the corresponding private keys you need to make transactions with your addresses.

However the term wallet is also often used for a Bitcoin client, f.e. on the Bitcoin homepage. A caveat here is that some of those wallet indeed do not store the complete block chain but have other techniques to implicitly query the block chain in another way. This sort of clients are called lightweight clients.

Now, what a transaction is, in principle, is just a handing over the control over a certain value in the block chain to another address.

For each address there are zero or more transactions that have the address as output. When you did not send them over to someone else, the are called unspent bitcoins or unspent transaction outputs. The sum of those make up the balance of the address.

When you want to send these coins, or a part of them (note that there is no notion of a coin, but just some value of currency that you send which can be any decimal number up to satoshi precision), you make a transaction in which you claim some of the unspent outputs for your address (as inputs for your transaction) and distribute the value they have over other addresses (which are the outputs for your transaction). So the unspent outputs for an address can be used as inputs for a transaction.

When you sign the transaction and it gets verified in a block, the unspent outputs are now spent and new unspent outputs have been assigned to the addresses you specified in the transaction outputs for the transaction.


Are there any services offering blockchain.info-like API for multiple currencies? I am wondering whether there are any services that offer some API like blockchain.info does but for multiple currencies at the same time. I know there are a lot of block explorers out there, but they appear to be disjointed and focused on one currency at a time.

BlockCypher is adding support for Litecoin, we're currently downloading the LTC block chain and will put it out next week. All the  Bitcoin APIs will work in the same way for Litecoin.


Keeping old blocks on an external hard drive and latest blocks on an SSD I would like to keep the latest 512 MB of blocks on my SSD (using pruning?) and the rest of the blockchain on an external non-SSD hard-drive. Is there a way to do this already, or do I need to write a script to accomplish this?

Blocks are not accessed under normal operation, except:  When a peer fetches one (and the most recent block is usually served out of an in memory cache), when there is a reorginization that must undo the effect of a block (which is pretty rare), or when you use an RPC to look up a historic block.

With that in mind, perhaps you can just put your blocks directory on the other disk.

If you set your node to be pruned but set the pruned amount much larger than the amount of block data, you will avoid peers fetching large numbers of old blocks from you (but still keep the data around).

If you found high disk accesses while in this configuration, I think thats something that the project would like to fix.


What cryptocurrency has the most potential to replace everyday cash / casual transactions? I am asking in terms of transaction fees, scalability, transaction time etc. I am a bit lost with so many cryptocurrencies coming out and focusing on different problems. What's some of them or one of them that meets the requirements of replacing everyday transactions? Or maybe even one that could be transformed to deliver that.

Thanks for your answers in advance.

No blockchain that handles the world's daily transactions can scale because of the sheer size of the blockchain required.
Something without a blockchain (e.g. Mimble-Wimble) might be good enough.

So, for blockchains, the current thinking is that another layer needs to be used. Bitcoin is the most advanced in providing ways to do this: segwit (deployed), lightning network (testing on main net started), drivechains, sidechains etc. This combination looks to be the best design for scale while optimizing cost, security and decentralization.

In the short term you might try faster blockchains like Dash or Ethereum. In the longer term there's no reason to believe these will scale securely though.
You can safely disregard 99% of the alt-coins out there. They're just there to grab some money from buyers.


Is it safest to double check my new bitcoin address never showed up in the Ledger (the blockchain) before? I just noticed in my Coinbase Pro, I can click deposit, BTC, and get a brand new address every time. It probably is due to "address is very cheap". It can be just a new pair of private key and public key, and from that, a shorter "address" can be created.
So since an address is a shorter version, the chance of collision is higher than the private key.
Let's say if a person is to deposit US$300,000 or $3,000,000 into that address, would it be safest to double check that this new address never showed up in the blockchain (the ledger) before?
Otherwise, is it true that when there is a collision of address, both that person's private key and mine can move this bitcoin amount to else where?

would it be safest to double check

Yes but the difference in safety, although not exactly zero, is approximately zero.

is it true that when there is a collision of address, both that person's private key and mine can move this bitcoin amount to else where

Yes.
Statistically that will not happen in any timespan you or I can properly comprehend. See related topics in right hand margin of this web-page. Especially Is a bitcoin address collision possible if generating 90 million addresses every 4 hours?


Can I cash out Bitcoin without proof of provenance? I have around 25 BTC from back when Bitcoin was around 10$ or lower. At the time, a friend sent them to me and I never thought they would ever be worth much. Since that time, I've moved them around and don't think I still have any original wallet from around that time. I don't have any solid proof of the original transaction (maybe some old Skype chat log). I'm worried that if I tried to cash them out and withdraw to my bank account, I will lose all or worse.

From what I understand, if the government decides to investigate the transaction, they could seize it and put me in jail? The burden of proof is on me right? What's the best/worse case scenario? Any suggestion on how to approach this?

A general answer would be nice but to be specific, I'd be cashing out to either my USA or Canadian bank account.

In the US, nobody is likely to care if you assume a zero basis and pay capital gains tax on the full value of the bitcoins. If anyone asks, just explain that you acquired them back when they were nearly worthless. There are a lot of people in that same situation.


Is it possible to use Selfish Mining to steal bitcoins? Is it possible to use the Selfish Mining algorithm to steal bitcoins?

Selfish Mining cannot be used to change transactions in any way, therefore, it is impossible to steal funds in such fashion.

Also, Selfish Mining is somewhat the opposite of Double-Spending, as double-spending would require you to publish your own blocks as quickly as possible in order to overtake the network, while selfish mining is based on keeping blocks private as long as possible.

Since successful selfish mining makes another already found block obsolete, one might argue, that the Selfish Miner steals money from the miners that found the obsoleted block. However, in order to perform Selfish Mining, a new block has to be found in the first place, so the mining reward would have been the selfish miners anyway, if he had published his block right away.

Lastly, selfish mining forces the network to continue wasting their cycles on an already outdated block height. Yet, while their effort is wasted in a successful selfish mining attempt, this may better be described as obstruction than as theft.

Altogether, I can't think of a way that selfish mining would be used to perform anything that might be labeled Theft.


How can one full node know whether other full nodes added certain block to their blockchain? How can one full node know whether other nodes agreed a block suggestion of a miner (so it will know whether to add the block to its blockchain too)?

thank you

There is no guarantee that when a full node adds a block to its main chain that other full nodes have done so. However there is no need for a node to know that in order to add a block to its main chain; it simply has to validate the block according to its consensus rules before adding it to its main chain. If everyone follows the same consensus rules, then all nodes will converge to the same blockchain. The blocks in a blockchain are defined by the consensus rules.

Additionally, it is generally safe to assume that the peer that sent a node a block also added that block to its main chain. However that does not necessarily mean that a node should also add the same block; it must still verify the block because that peer could be following different consensus rules.


How a Light Node can get a block? I'd like to better understand how a light node can retrieve a complete node. If I understood correctly, I can consider a light node a node which is part of the peer-to-peer network that receives and stores only block headers, which means around 80 Bytes every 10 minutes (of course with some approximations).

Suppose that the light client wants to retrieve the complete block number 1234. I've seen on the documentation the getData message, which other nodes can reply with a block message.

Do you have any hints on how to evaluate how many bytes the light client must send for the getData message and how many bytes must be received? I think it could sufficient to retrieve only one block from the network since the light node can validate if this block is part of its local head-only-blockchain.

Thanks for the support :)

Suppose that the light client wants to retrieve the complete block number 1234. I've seen on the documentation the getdata message, which other nodes can reply with a block message.
Do you have any hints on how to evaluate how many bytes the light client must send for the getdata message and how many bytes must be received?

It depends on how big the block is. The block is 0-1 MB prior to segregated witness activating, and 0-4 MB afterward. In general, the earlier the block is from, the less data it contains.
There's some overhead for the message header, but it's 24 bytes, so it doesn't really matter.


How to lookup the transaction fee for a particular transaction? Is it possible to lookup how much transaction fee was paid for a specific transaction?

If I check the transaction on e.g. blockchain.info, I can see a field named "Fee", but I guess that's a sum of all fees combined in this transaction.

A transaction is an atomic unit. Either the whole thing confirms or the whole thing does not confirm. The transaction fee is the result of all inputs and outputs in concert, therefore it is a property of the whole transaction and not assignable to any single created output specifically. Even when there are multiple recipients, the whole construct is "a transaction".

When you create a transaction, you define a set inputs that will be consumed, and a set of outputs that will be created and at the disposal of your recipients. The free-floating remainder, i.e. the part of the inputs' value that was not assigned to any outputs can be claimed by the miner as a transaction fee.


How many shares need to be mined before a block is released? How many shares need to be processed on average before a block is found?

I know that "luck" can be a huge factor which is why it's not quite as simple as that.

I ask because I'm starting my own pool (www.btcpoolman.com). I only have three people on it at the moment, but we've mined about 100K shares in the past week or so. Assuming I sustain this, how long will it be before I will get a block?

I found http://www.bitcoinx.com/profit/ yesterday, which says that it'll take one year and 138 days to find a block based on 1.2 GHash/s (which is roughly what I do when soloing).

Failing that, what should I do if I'm currently mining at the above rate?

When mining in a pool you are simply looking for simpler blocks than those that are used in the network itself. Let's say you are mining in a pool that counts difficulty 1 shares. That means to find share you have to complete 2^32 hash operations. Since difficulty is defined as the ratio between the current target and the maximum (as in easiest) target, each increment in the difficulty doubles the number of hash operations you'd need to find a share. Hence the probability of a share also being a block is:

share_difficulty / block_difficulty

since the current difficulty (29th of May 2013) is 12'153'411.7098 the chances of a share of difficulty 1 being a block is 1/12'153'411.7098, and the expected number of shares until a block is being found is again 12'153'411.7098. Notice that in the last step we are talking about an expected number of shares. As mining is a random process there is no guarantee of finding a block in finite time.


Is it still possible to do cpu mining for experimenting? Commercially speaking I know it worse than pointless! But please, be gentle and don't remind me. Neither bother about being insulting or patronizing because I ask such a 'stupid' question. Thank you for your comprehension.

The reason I'm wanting the - already four times over obsoleted - cpu mining is because I don't want to earn money with it. It's all about being curious about how Bitcoin works. Not an altcoin or something else. It's about learning about BC.

CPU mining is the only option left. Asic usb miners are sold out everywhere. Raspberry Pi don't support GPU mining, do they ? And I really don't want to buy a dedicate device - because I want to know how it technically works. Do CLI stuff to make it work.

If this wasn't serious to me, I really wouldn't bother asking around how to do it.

So, now that's out of the way...

Is it today still technically feasibly to do solo cpu mining ? (on Rpi3)
If not, how come ?
If it is feasible, is there an online guide, tutorial, ... I could use ?
Optional: Why are people so reluctant about this ? It's not that I'm going to crash the BC system, am I ? :-)

It's perfectly fine to me to download the bulk data with a faster computer and upload it to the rpi.

Yes it is technically feasible to solo mine with a rpi3. The 'fastest' miner you could run would be minerd. However, there is a slim-to-none chance you will ever mine a block on the bitcoin mainnet, but there is still a chance! I would save the trouble of building minerd and use bitcoind's build in block generator

bitcoin-cli setgenerate true 1

You don't need to worry about crashing other bitcoin nodes, they will validate if your newly mined block is valid.

If you are looking to have some fun with mining on the rpi take a look at bitcoind's regtest mode. Regtest mode lowers the mining difficulty to the absolute minimum level of difficulty. This means you can mine 1000's of your own blocks per hour on a rpi3.


Create addresses in bulk; and check balance I am new to Bitcoin; our company wants to use bitcoin for payments.

We need to create a address for each transaction. so we need to create many public address.

First, I need to generate many public and private key-pairs. This is going to be very hard to do in a secure way!

I read another question that said with hierarchical deterministic wallets we can do something like creating one key-pair and generate many public address from it (means one private key can have many public key).

So if it really do!: Do we need to keep all of public keys or just can use private key for transaction bitcoins or checking balanced? or the other public keys are child key and i should keep the first mother public key?

Can someone else see how much bitcoin we have earned?

just with child-address?
if she/he get the master public key, can they check our balance?

We want to use Lazy_API and show user an address to use it for transaction and after that check it with blockchain.info json api or blockexplorer, if transaction done after number of confirmation we proceed invoice and they can access to what they want.

Something else: some mobile wallet(like Breadwallet.com for iOS) said that they change public address after current get received bitcoins! Does they create new key-pairs or just do something like above?

As you found out already; private and public keys are not necessarily paired 1-to-1. In fact, using the original Bitcoin client you can just run the getnewaddress to generate a new address belonging to your wallet, which is controlled by only one private key.


stuck transaction despite high fee - will it eventually be forgotten? I made this transaction a few days ago with a normal fee, but it's still stuck.
https://blockchain.info/tx/461df29d7a923491e24688a79d902fb027929d1b3b57fa6e272015a9250394bc

Any suggestions how long this will take? Is the bitcoin network falling apart? For how long will my wallet broadcast it? Will it eventually be forgotten?

thanks

Most likely it has yet to be 'processed' by a miner yet. I can't tell you an actual definite timetable besides the usual 3days - 3+ weeks. It could clear sooner, but it just hasn't been cataloged and processed into and solved in the next block.


Beginner Setup Bitcoin Full Node without GUI I am following the installation steps to setup a bitcoin node, at the steps "Download the blockchain" that required Bitcoin Core GUI which is not able to run on the testing Ubuntu Server without GUI.

The guideline I am following is https://bitcoin.org/en/full-node#ubuntu-1610. At the Ubuntu Installation, under Bitcoin Core GUI.

Is there any command to trigger the download without GUI? Thank you very much.

In the very same guide you linked, follow the instructions for the Bitcoin daemon.

  I tried to start the daemon and hope it will download the data but it seems nothing change on H.D. usage so I am guessing it is not downloading. Am I correct?

No, you are not correct. You should check the status of bitcoind itself by using bitcoin-cli to send commands to it. You can use getblockchaininfo to know whether it is actually syncing by calling it twice. If it is syncing, then it will report a different block height and best block hash on the second call.


How do I monitor and track the legal proceedings of Silk Road founder Ross Ulbricht? I'm interested in tracking the litigation, timing of hearings and other matters relating to the case against Ross Ulbricht.

What website, or resource would have up-to-date information of upcoming arraignments and other matters pertaining to the case?

As a partial answer, let me point you to the three places of which I happen to know that they had more than one detailed report on the subject, starting the count with the arrest of Ulbricht. Please note that this list is probably a better reflection of my personal browsing habits than than any objective standard about being particularly fast or complete sources. All of these are deep links to local search results for "silk road":

Popehat
Tech Dirt
Ars Technica

Even better might be a news aggregator, such as Slashdot (again a deep link to search results for "silk road"). You won't find too much original content beyond a summary and one or more links, but it is fairly likely that major developments reported anywhere will find their way onto Slashdot.


What did Deepbit to make their inputs special on transactions? It seems Deepbit uses a strange format for it’s transactions on the addresses it owned. For example, in this transaction all inputs but 3 comes from Deepbit. Even Bitcoin core can’t decode addresses or scripts from transactions launched by Deepbit.
This seems to apply to all transactions

That time it’s not SegWit. It’s not even Pay to Script since they didn’t exists at that time (and it’s about1Vaddresses). How those inputs are specials, and what’s the purpose ?

Those transactions spend Pay-To-Pubkey outputs. These are not special or strange and are actually the very first kind of outputs to ever exist in Bitcoin. These outputs simply do not have an associated address type which is why block explorers do not show an address for them.

Also, just because a block explorer can't show an address type does not mean that Bitcoin Core can't parse it. Block explorers don't just use Bitcoin Core, and Bitcoin Core actually does not display addresses for inputs.


What is the story behind US senators wanting to "crack down on Bitcoin" in mid-2011? There have been two US senators, Charles Schumer and Joe Manchin, wanting to "crack down on Bitcoin" in mid-2011. How did the story start, progress and did it reach any conclusion?

There were some reports on Silk Road at the time, and they wanted action against Silk Road.


What are some Bitcoin / blockchain projects that are actually doing something? There are hundreds of blockchain startups out there across a range of industries -- from finance to media to property management. They have identified significant problems and ways that blockchain can solve them. On paper, it all sounds awesome.

But how many blockchain companies or projects have created working solutions? It seems to me that most companies just have ideas, and are still working on their code. In the best cases their platforms are still in the alpha stages and they might have a few users or partners (who are usually willing to pay or be paid in cryptocurrency, which makes them different from the public at large), but have not yet really made a big impact.

Can anyone think of examples of blockchain companies or projects that have a real, fully functioning platform that is actually being used by a critical mass of users who are not themselves all blockchain fanatics?

I'm not asking to be critical. I am really excited by the potential of blockchain. But when people who are not blockchain geeks ask me for examples of how blockchain is actually being used in a meaningful way today, rather than how it could theoretically be used in the future to solve all sorts of problems, I don't have good answers.

I know this question is about blockchain as a whole, not just Bitcoin, but there is no blockchain Stack Exchange, so here we are.

My favorites,

Ether Delta(https://etherdelta.com),  Decentralized exchages controlled by zero entities.

Augur(http://augur.net) Decentralized prediction market/betting company.

So many more, at https://www.stateofthedapps.com


Is it possible to withdraw other cryptocurrencies besides bitcoin (ex: etherum) into a Bitcoin paper wallet? I've been wanting to know if withdrawing other cryptocurrencies into a bitcoin paper wallet would be incompatible with that system.  I haven't tried it myself.

It may work, depending on the currency.

You will likely be able to send BCH to a BTC paper wallet, and LTC to a BTC paper wallet with a 3-address, due to address format overlaps.

You will not be able to send currencies with other address formats, such as Ethereum, Monero, ZCash, etc.

Do note that even if you do succeed in sending the currency, there is no guarantee that you will be able to spend it. For example, sending BCH to a BTC segwit address will work, but spending it will be extremely hard, as segwit is not enabled on the BCH network.


Commodity vs. Currency Some countries view Bitcoin as a commodity, some see it as a currency (and some ban it, but that's another story).

I read a few articles, but in layman's terms, what are the main differences about a commodity and a currency?

I found this on a Quora. Hope it helps.
Property
Pro:
It is eligible for long-term capital gains tax treatment, if held for more than one years (which is a huge benefit). The US has very favorable capital gains taxes.
Con:
Every purchase made with bitcoin will be a capital gain or a capital loss that must be tracked, even if the purchase price is denominated in bitcoin.
Currency
Pro:
Money spent with bitcoin on bitcoin-priced goods & services would not give rise to a separate taxable transaction. Theoretically one could benefit from bitcoin appreciation and never be taxed upon that appreciation.
Con:
Conversion of bitcoin to other currencies would give rise to taxable income, if a gain occurs, and losses would be unrecoverable (for individuals).

I think coin.dance (your link) is not 100% up to date.


Setting the fee rate on regtest, or, quickly generating full blocks I'm setting up some automated testing for a lightning wallet. At the heart of my tests is a bitcoind instance running in regtest mode. I need to be able to set the fee rate - both the fee rate reported by estimatesmartfee and the fee rate which transactions need to match in order to get confirmed.
So far, the only way I can see to do this is to mine lots of blocks filled with transactions that have the desired fee rate. I'm doing this by calling sendtoaddress (via bitcoin-cli) repeatedly in a loop to send small amounts of money into the void. This is painfully slow - it involves generating ~2500 transactions before bitcoind catches the drift that this should be the new reported fee rate. And I have to do this for every test, sometimes multiple times per test, so my CI is taking forever.
I'm wondering if there's any way to avoid doing this. Is there some way to override bitcoind's estimated fee rate and have it refuse to include transactions which pay less than that fee rate when mining blocks? If not, are there any quicker ways to pad out blocks with transactions than what I'm doing?

You can use a wrapper to mock the feerate.
Let's say you are writing your tests in Python. You can set up a Python RPC wrapper for the bitcoind interface, and optionally turn on a mock for specific tests (instead of calling bitcoind's estimatesmartfee it would return a preset value).
That is how it's done in C-lightning's functional tests. A good instance is this test which simulates a crash of bitcoind to test lightningd can support spurious failures of its Bitcoin backend.
See also a sample of feerate mock here.


Is it normal for my hardware hashrate to vary by 15% but still achieve the advertised average? I have an Antminer S1 and an Antminer C1. They both work as advertised and achieve a three hour hashrate average of 200 Ghash and 1000 Ghash, respectively. However, within any given second they hash within 15% of that average. So the C1 right now is hashing at about 850 Ghash, but I've seen it has high has 1150 Ghash.

I thought perhaps that the S1 did it because it is overclocked. But the C1 is not overclocked. I also think perhaps that my source for the stats might be the problem, which is the Eligius stats page for my miner.

Is this kind of fluctuation normal? Why does it fluctuate like this? Is this specific to Bitmain hardware or does other hardware do it too? If it is not normal, what could be the problem?

I have TechnoBit Hex miners running BlackArrow ASIC chips and my equipment fluctuates a lot. I mine with the 'Discus Fish' Pool (aka F2Pool) and they let me view my hashrate on their website on a really fancy graph. My 1200 GHs dips from 900 GHs up to 1300 (occasionally), but in the end I do get a nice even 1150 / 1200 GHs.

The software (Cgminer) does fluctuate even more on my screen, it goes from 700 to 1300 GHs, but this really depends on what difficulty your miners are getting from your pool. Anyhow, a little fluctuation is perfectly normal.


Creating a bitcoin/litecoin miner with Javascript I am a web developer and looking for well written technical documents about how bitcoin/litecoin works, what is the workflow, what is the algorithm and how can I write a miner from scratch by using JavaScript (or similar).

It will be a kind of hobby/portfolio project, so I am not worrying about the performance and the other possible issues.

Thanks in advance.

Why reinvent the wheel?

I think there are several simple javascript miners out there, so I won't bother telling you more than to google it (or to duckduckgo it, if you prefer).

But whilst we are at it: Would you believe people have gone far beyond it and found a way to program a javascript-based miner using GPUs, as pointed out in an answer on bitcoin.stackexchange? That project is hosted here.


How to charge a fee to process Bitcoin payments in a mobile point of sale app? I have a mobile point of sale app for local businesses.  We want to integrate Bitcoin as a new payment processor for our merchants.  We currently charge $.30 per transaction for credit card swipes and we want to charge the Bitcoin equivalent. How do we grab a transaction fee for submitting the transactions on the merchants behalf via our app?  I mean, how do we do this in Bitcoin? Is there a property in BitPay we can use that says pay this API_Key this fee amount?

Firstly Bitpay and Bitcoin are not the same thing.

BitPay is the Paypal equivalent of the Bitcoin world. You may be able to have a percentage of the transaction for yourself, but you will have to work out the business logic. Can't help you there.

Regarding fees on the Bitcoin network, please note that it is designed to be anti-fee, so if you do add fees you must bring something else to the table, but it sounds like you are setting yourself up as an intermediary between the merchant and Bitpay so I don't know exactly what that might be.

Bitcoin is anti-fee because even it's own transaction fees are subject to minimum payment amounts otherwise the fee is zero.

The Bitcoin Transaction fees themselves are not calculated on the amounts but are a function of the number and size of the inputs and outputs, the size of the transaction in kb and whether or not the person has decided to pay a fixed fee or not.

That being said your merchants will not be happy if you apply a fixed fee to their transactions especially if the transaction amount is less than the fixed fee you want.


Recover corrupted wallet due to system crashed My server was crashed suddenly and didn't shut down bitcoin core probably, so now my wallet was corrupted due to it didn't be released. I try to moved the corrupted wallet to a new server but it can't be load:

Wallet file verification failed: wallet.dat corrupt, salvage failed

I have also tried to use pywallet to rescue, but getting this error:

ERROR:root:Couldn't open wallet.dat/main. Try quitting Bitcoin and running this again.

I suspect that my wallet.dat was totally corrupt so pywallet couldn't found main . Any help on this please ? Possible to get back my privatekey from wallet.dat please ? Thanks alot.

Information:

bitcoin version: v0.18
os: centos7

Recover corrupted wallet

  Possible to get back my private-key from [corrupted] wallet.dat

I doubt it.

You could put in weeks of effort and not recover anything. By effort I mean learning what tools are available, how to configure and use them and how to evaluate the results. Learning more about the internal structure of wallets etc. Learning about general tools that can recover deleted older versions of files (if you immediately stop using the computer and maybe extract and duplicate the disk) etc.

Most likely you will  be contacted by many scammers offering to recover your wallet or telling you about marvelous people who can recover wallets. It is almost certain that all of them will be trying to trick you out of more money by inventing plausible seeming fees. In this website we see a lot of pleas for help from the victims of recovery scams.

Backups

Most computer users learn early on the importance of backups. Some by seeing other people's good habits, some by seeing other people's disasters and some by making our own disasters.

See Tom Scott - The Worst Typo I Ever Made

In the case of Bitcoin, it is essential to make a backup as soon as you create your wallet and again after making any significant changes such as importing a key. This sort of backup needs to be kept somewhere safe from fire, theft or accidental loss.


Is there an API that provides information on the consensus algorithm of altcoins? Is there an API that offers information on the consensus algorithm of altcoins? Something like examplewebsite.org/api?name=steem

{
...
"consensus":"DPoS",
...
}

The API from CryptoCompare will give you the consensus algorithm under the key proofType.


How to make permanent Bitcoin Address for donations? I want to add a Donate Bitcoin button to my website(s). I want to create a Bitcoin wallet with a permanent address for receiving donations. How would I do this?

Just generate a new address and put it on your website. Not sure what you mean by permanent, all addresses are permanent as long as you keep the private key safe.


How to get the immature balance of an account? I have run bitcoind and have several accounts. How do I get the immature balance of one account using RPC calls (if possible) ?

Using the listtransactions command, you can see your immature coinbase transactions listed with category immature.

listtransactions appears to include both spent and unspent transactions in general, but since immature coins cannot be spent, that shouldn't be a problem.

Since accounts are now deprecated, you can get the immature balance for the entire wallet with getwalletinfo; look at the immature field.

Note that getbalance does not include immature coins.


Windows 7 and paper wallets I was wondering if BTC cold storage or paper wallets can work with Windows 7 and / or Linux Mint? Please advise. Many thanks indeed.

There are a few ways that you can create cold storage.

One possibility is to make a new installation of Bitcoin Core on an offline PC, one that is never connected to the internet. This PC will generate addresses and you can add those as a 'watch-only' address on an online PC to monitor incoming payments.

It is possible to update your offline PC, for example, using a bootstrap.dat file so that it will have the blockchain without ever needing to connect.

This will work with Windows 7 and any platform where Bitcoin Core can be installed including on several versions of Linux.

Paper wallets do not require a computer until you want to import the keys. You can import the public address as a 'watch-only' address or when you are ready to spend your BTC somewhere, you can import the private key.


What is the downside of not using Proof of Work for validator selection? Bitcoin uses Proof of Work for two things: one is to secure the blockchain with strong cryptographic signatures like a Merkle tree, and the other is to crown the validator which "mines" a solution as THE validator (dictator) who determines which transactions to broadcast in that block. If they blacklist your address (or charge large fees) and don't want to accept your transaction then maybe another validator will eventually accept it.

But why do we need Proof of Work for the second thing? What's wrong with Proof of Correctness as Ripple uses, or Delegated Proof of Stake as LISK uses, for example? Why are they considered "not decentralized" while Bitcoin is said to be "decentralized" despite the arms race that has caused a few mining pools in China to control more than 51% of the mining power in practice?

What is wrong with a community electing 101 random validators like with LISK for example? How can this be gamed to reduce people's freedom to transact or have their transactions confirmed? The worst thing is some address may be blacklisted by a few validators (eg under pressure from a government law) but the same can happen with bitcoin miners, since we know who they are. So what's the disadvantage of Delegated Proof of Stake?

Here are the advantages: less waste of electricity, faster consensus, and possibly more decentralization in practice.

If I am right and this doesn't have any serious disadvantages, it should be rather trivial to make a cryptocurrency with delegated proof-of-stake electing N (odd number) validators.

Proof of Work is needed to inventivize miners to not fork and, if there is a fork, some metric for determine which fork is the real blockchain (assuming no consensus changes in the fork).

Proof of Work incentivizes miners to not fork (i.e. see someone else's block, ignore it, and create their own block at that height) because of cost. It costs resources in order to produce a fork and stick with it. If their fork has no value, then they are wasting money on something that is worthless. However with other consensus systems like Proof of Stake, there is no cost to make a fork. Making a fork does not cost anything as there are no resources for you to spend to make the fork. In some systems, you can make a fork and still be mining/staking/minting/whatever on the original chain at no extra cost and no opportunity cost.

Proof of Work also provides a metric to determine which chain is the correct chain. Given two blockchains with the same consensus rules, the one with the most work (the sum of the difficulties of all of its blocks) is the one that is considered "the blockchain". In other consensus systems like Proof of Stake, no such metric exists for determining "the blockchain". This results in centralization as someone or something is needed to say "this blockchain is the right one". In some coins, a signer (usually the developer) must sign all blocks for the block to be considered valid, so that signer determines what "the blockchain" is and is a point of centralization.


How to properly backup a address with private key after 'addwitnessaddress' command I've received my balance to my addresss that starts with 3 which is after 'addwitnessaddress' command.

I'd like to know that how do I properly backup my balance to keep safety.

Bitcoin Core has a function that called backup wallet to the 'wallet.dat', but there is a in unexpectable case by file corruption.

I tried keep it save by using 'dumpprivkey ' to get my priv key.

But the console says, "Address does not refer to a key". So I googled it and found it has related with something called P2SH.

It's little bit hard to understand for me to use Bitcoin.

Can some help me out to backup my balance only using by Bitcoin Core client instead of 'wallet.dat'?

Thanks!

Addresses beginning with a 3 generated using addwitnessaddress are called P2SH-P2WPKH addresses. That means it is a Pay-to-Witness-Public-Key-Hash (P2WPKH) script embedded in a Pay-to-Script-Hash (P2SH) address, which starts with a 3. To back up this type of address, you need to back up the private key used in the P2WPKH part. If you know which address you used when you called addwitnessaddress, you can call dumpprivkey on that address.

To restore from that private key, you should be able to just import the key into your wallet and call addwitnessaddress on it again. Note that addwitnessaddress is an experimental RPC call so the method to restoring may change in future, but you can always generate the corresponding public key hash (address) from they key, create a P2WPKH witness script for it, and wrap it in P2SH if you have the key so it should be a sufficient backup


How to add a fixed transaction fee to each transaction? Each time I send some bitcoins from Blockchain.info, it allows me to set a specific fee. I've installed bitcoind and I can't figure out how to add a 0.00013674 fee for each fee.

I have read a few articles and I see the set fees is always relative to transaction size. So, I'm using paytxfee=0.00027348 in my config file.

Issue is this setting is producing:

sent amount=0.00106326 fes=0.0000618
sent amount=0.00086326 fes=0.00006153
sent amount=0.00106326 fes=0.00014166

I'm willing to have my transactions included in the blockchain faster. Any idea to tweak my settings to have this improved ?

If you want total control over the fee then you will need to build the transaction yourself using createrawtransaction - more info here: https://en.bitcoin.it/wiki/Raw_Transactions

However, it's important to note there was a relatively unnoticed change in the way paytxfee handles the fee calculation earlier in 2016 - see here: https://github.com/bitcoin/bitcoin/issues/7633


Is the 12-word phrase app-specific? I'm new to Bitcoin and trying to understand it, step by step. I tried to make a wallet using Electrum. This gave me 12 words which seem to allow me to regenerate my wallet's private key. When trying to use this 12 words in Exodus (another wallet app) it says those 12 words are invalid. So, I figured these 12 words might be an app internal thing...
Seeing Chris Chen's comment here seems to confirm this.
So, the question would be: if I happen to get my 12-words compromised and someone gets to know them, would I then be still safe as long as this person does not figure out which wallet app I used?

No your funds would still be at risk. There are only a few popular wallets that use seed phrases.
Most wallets use BIP39(https://en.bitcoin.it/wiki/Seed_phrase) but there are some that use different versions or no seed words at all.
Electrum does not ouse BIP39, see their docs explaining why. https://electrum.readthedocs.io/en/latest/seedphrase.html
It would be extremely easy for an attacker to try the most popular versions and steal your funds.


What is the formula to calculate the length of a merkle tree? What is the formula to calculate the length of a merkle tree, given the length of the leaf vector?

The length of a merkle tree is the sum of a series starting with the number of leaves, halving (rounded up) on every step and ending with 1.

Here is the algorithm for calculating the length of a merkle tree from the number of leaves in JavaScript.

function getMerkleLength(leafCount) {
  // Input must be a positive integer or zero
  leafCount = Math.abs(parseInt(leafCount));

  var merkleLength = 0, currentLevel = leafCount;

  // Most merkle tree implementations return a null hash for empty lists, so the
  // length in that case would still be one.
  if (leafCount <= 1) return 1;

  // Loop
  for (;;) {
    // Add the current level to the length
    merkleLength += currentLevel;

    // If the current level is the root, we are done
    if (currentLevel == 1) return merkleLength;

    // Each level contains half the hashes of the last one and if there is an
    // odd number of leafs, the last hash is duplicated
    currentLevel = Math.ceil(currentLevel / 2);
  }
  return merkleLength;
}

Edit: I like readable code, but just for fun, here's the equivalent short version:

function getMerkleLength(leafCount) {
  for (var len = 0, i = ~~leafCount; i > 1; i = ~~(i/2+.5)) len += i;
  return len >= 2 ? ++len : 1;
}

Edit 2: And a C version for good measure.

typedef unsigned int uint;

uint getMerkleLength(uint leafCount)
{
  uint len = 0, i;
  for (i = leafCount; i > 1; i = (i+1)>>1) {
    len += i;
  }
  return len >= 2 ? ++len : 1;
}

void main() {
  uint i;
  for (i = 0; i <= 100; i++) {
    printf("%u: %u\n", i, getMerkleLength(i));
  }
  printf("%u: %u\n", 5000, getMerkleLength(5000));
  printf("%u: %u\n", 99999999, getMerkleLength(99999999));
}


Are there any hardware privkey/pubkey generators out there? I don't mean hardware wallet like Trezor but simply a device that is non-programmable, and not network connectable but will generate key pairs (+ the associated address would be handy but that could be done in software on only the pubkey without too much risk?) at the push of a button.

I'm wondering if this is one way to create a paper wallet and have it receive a number of BTC:

1.Generate a privkey/pubkey pair

2.Write the privkey down, duplicate it and store the copies safely. I guess this could potentially be split into pieces and stored in several separate places so that breach or loss of one does not give away the full privkey or lose the information needed to recreate it (like a paper RAID array implemented with three familiy members?) [and write recovery instructions in your testament]

3.Generate the bitcoin address associated with the pubkey (not so risky, afaict)

4.Receive the payment at this address

Until it comes to spending the BTC (which could be quite some time in the future) there would be no need for a software wallet, and certainly no need to use an online key generator.

In the absence of a hardware key generator I suppose downloading trusted code from sourceforge or somewhere and running it yourself on a non-networked computer is pretty much as secure?

(I realize rolling dice is fine to generate a privkey but the associated pubkey pretty much has to be done in code somewhere, no?).

Does this sound feasible?

There are no devices I know of which are dedicated to nothing but generating secp256k1 key pairs.  I suspect there never will be---that's a super-niche market possibly consisting of just you.  Moreover, I think you should be suspicious of any hardware designed to generate private keys for Bitcoin: corrupting such hardware to produce predictable keys could be highly profitable---at your expense.

In general, messing around with private keys directly has a high probability of ending in lost bitcoins.  A $50 USD used netbook from eBay to use as an offline signing-only wallet will be much easier to use and at least as secure as any system you think up yourself, provided you choose a secure wallet.


How are transactions broadcast to the rest of the network? If a person sends a transaction to another person, and Bitcoin is a peer-to-peer application, how will the transaction get to the rest of the Bitcoin community? How does everyone have the same blockchain?

Does every system know about every other system in the network? If so, how?

If a person sends a transaction to another person, and Bitcoin is a peer-to-peer application, how will the transaction get to the rest of the Bitcoin community?

Think of it like how gossip would spread. There are a bunch of people (nodes), and when one of them knows something, they tell it to the few (8 or so) people they are near (connected with), and then those people tell a few more people the message that was told to them, and then... Eventually everyone knows about the original information (transaction).

So when we say bitcoin is peer-to-peer, we mean it's just nodes that have internet connections (on port 8333 usually) with other peers. Not even necessarily the one you're sending the coins to!

  How does everyone have the same blockchain?

After peers exchange their information (and validate that all transactions and blocks follow the protocol rules), they store it. Since all of the bitcoin transactions from the beginning of the bitcoin block chain are needed to validate everything that has taken place, essentially all full nodes store the same data (about 27.5 GB of pure block chain data as of now).

  Does every system know about every other system in the network? If so, how?

No need to know about every other system on the network, each node just knows about the 8 or so nodes that it is connected to!


Can you recover seed words with passphrase on bitcoin node? I have a btc node (Bitcoin Core version v0.17.0.1 (64-bit))running on my Windows 10 computer, as part of regular backup I have realized I don't have the seed words but I do have the passphrase. It has a zero balance, wallet.dat is backed up - is there a way to recover the seed words in this scenario? I'm never going to use a Windows node to store any significant amount of coin, but I'd still like to know what my options are.

Bitcoin Core does not use a seed phrase. Your password is simply the encryption password for the wallet.dat file. No private keys are derived from the password. In order to recover your Bitcoin, you must have the wallet.dat file.


Can I pay someone else to operate a miner on my behalf? Is there a company or individual out there that sells Bitcoin miners and holds them under their supervision for a fee? If so... I'd like to know.

There are lots of them, that's called "cloud mining" - just google the term and you'll probably find your way.  You either rent a miner or pay for mining equipment, or eventually just throw your money into a black box with the expectation that you'll get some reward later - basically mining operators crowdfunding some (or all) of the investments and associated risks.

Be aware that some "cloud mining"-operations have been nothing but ponzi scams - no real mining equipment involved, just a pool of money with early investors receiving fantastic payouts from the pool, and eventually the operators grabbing the whole pool and running when the inflow of new investors no longer can offset the payouts to the earlier investors.


Wallet management now that accounts are deprecated? I'm building a website which will allow every user to make deposits and transact with Bitcoin, how will I be able to get the balance of a specific wallet. I currently know these commands:

$bitcoin->createwallet("wallet_name");

But to get the wallet info of that specific wallet is confusing for me, according to the documentation the getwalletinfo RPC takes no parameters. So my question is how do you get wallet information of a specific wallet?

If you are using more than one wallet, the wallet is selected by sending the RPC requests to <host:port>/wallet/<wallet_name>.


Can I use Electrum on my everyday computer? Or do I have to use a computer that has never used the internet?

There's nothing stopping you from using Electrum on an online computer. If you have a lot of coins and want to have better security, you should use an air gapped setup where the offline computer has the private keys and has never been online nor will ever be online. Or you could use a hardware wallet. But using Electrum on an online computer and using a strong password (on your computer and on your Electrum wallet) is also fine.


Why does this coinbase transaction have two op_return outputs? I've been looking at coinbase transactions for fun and I came across one with two op_return outputs..

Does anyone know what the second one is?

Also, I understand the first op_return is used to embed the merkleroot of the witness tree for segwit transactions in the block.

However, I've also seen coinbase transactions with multiple op_returns such as this one.  Is there a specific purpose for that 2nd op_return or is the miner simply using it for their own purpose?

Coinbase transactions have some special rules not shared by other transactions:

only one per block
must be the first transaction in the block
must have OP_RETURN output with witness commitment if block includes segwit transactions
must have only one input
the input must have the "coinbase" field instead of a scriptSig

The "coinbase" field is where miners put the extranonce, commit to a specific blockheight (see BIP-34), and mark blocks to be found by them. Although, miners often collect the block reward in a single output, beside the rules for the witness commitment, the Coinbase transaction has no special restrictions on other outputs. In fact, some mining pools used to pay out mining rewards directly from the Coinbase, see e.g. the Coinbase of 133,471 mined by Eligius creating 919 outputs. As such, the second OP_RETURN output could be anything the miner wants.


bitcoind getrawmempool without downloading the full blockchain I'm running bitcoind from a small virtual machine on digitialocean.

I'm interested only in looking at the new transactions in bitcoind getrawmempool

Is there a way to get these transactions without downloading the whole blockchain?  Currently, I'll need a minimum of 40GB instance to have the whole blockchain on the VM.

Bitcoin core does not provide this functionality (as far as I know).

The mempool is where transactions are stored until they get put into a block. It would be hard to determine you had the correct mempool if you didn't keep track of the whole block chain, though. For example, someone could broadcast an older transaction, and you would have no way to determine that you shouldn't just add it to your mempool if you didn't keep track of the whole block chain. Transactions also have to pass some basic validation before they can be added to the mempool, validation which requires having all the blockchain data.

If there were a program to implement this, it would at least have to process all new blocks as they came in, in order to determine which transactions to take out of the mempool as blocks get solved.

With this said, you can set up a light-weight node that just monitors what transactions are being spread around on the network, but without the full blockchain data you won't be able to validate that the transactions are candidates for inclusion in the next block.

As Amaclin pointed, one such program to do this network watching is

https://github.com/sebicas/bitcoin-sniffer.


Are coin minting and difficulty level related? I am sure this question has been answered somewhere, but most searching comes up with "how blockchain works" and other unrelated results. I am trying to verify my understanding of the theoretical end of minting new coins.

Is my understanding correct that coin minting and difficulty levels are not coupled? In other words, the difficultly level changes according to hash power, while the coin minting schedule decreases in a hard-coded way. Such that, in the end, no new coins can be minted but block difficulty would remain proportionate to hashing power of the network.

I think this is right but need to confirm before educating others about this scenario.

You're basically correct.  The rate at which block reward and thus inflation (or lack there of) is determined is by block height alone.  That is, starting from a maximum of 50 new bitcoins generated per block at height 1, and halving that amount every time 210000 blocks have been generated, the maximum amount of new bitcoins that are allowed to be generated by a generation transaction in a block eventually becomes less than one satoshi, which is the smallest unit of amount of in a coin, at which point generation of new bitcoins stop.

On the other hand, the difficulty, or technically the "Target" that a block header hash must be below (it's just a big number) is only determined by the rate at which blocks were generated during the previous 2016 blocks re-target period, starting from the very first and highest target which is also the lowest difficulty (difficulty 1) onward.
This means that difficulty (or target) can change and does go up and down as hashrate enters and leaves the network.


I have watched addresses in my wallet..how do i use them? How do I use the watch only addresses that are in my wallet? I can't find the private keys. Is their any way to use them or should I just delete the wallet with the watch addresses in them?

If you do not have the private keys for those addresses, then they are not yours and you cannot do anything with them. Those addresses and their associated Bitcoin do not belong to you, so you cannot use them.

You can delete the watch only addresses if possible; you will not lose any money if you delete just those addresses because there is no money that belongs to you in the first place with those addresses. However be careful of deleting the wallet entirely, it could have addresses and private keys which do belong to you and those you do not want to delete.


Why is Bitcoin Core using LevelDB instead of Redis or SQLite? Why did Core move from BDB to LevelDB? Why don't they use SQLite or move to Redis now? Is there a technical reason for this choice?

Redis and LevelDB solve very different problems. We tried using SQLite and its performance was abysmal.

Bitcoin Core needs a database to store the set of unspent transaction outputs (UTXOs). This means we need fast simple reads, and fast batches of random updates.

We don't need a server/client architecture, as we can't have multiple applications accessing the database at once anyway: inconsistencies in the database would lead to forking risks (every node in the network needs to make exactly the same judgement about what is valid and invalid).


How can I get the transaction history of a bitcoin address? Lets say that I have a bitcoin address that is not owned by me. Is it possible to get that address's full transaction history (send/receive addresses and amount), and if the owner bought bit coins using a credit card will I be able to see that and possibly the card number? If not, what can I see with just a random bitcoin address, and who can see that credit card number?

Is it possible to get that address's full transaction history (send/receive addresses and amount)

Yes, all that information is in the public blockchain.
type the address into any blockchain explorer

if the owner bought bit coins using a credit card will I be able to see that and possibly the card number

No. That information is not public. It isn't really part of Bitcoin - not the network protocol, the blockchain or the reference software.

who can see that credit card number?

The merchant involved may, or their payment processor. But this part of your question is absolutely nothing to do with Bitcoin.


Locating Server-Grade PSU-to-PCIe Power Cables for Bitmain Antminers? Does anyone know where breaker boards and cables can be purchased online that provides four PCIe 6-pin connectors to power an Antminer C1 from a server-grade power supply unit (PSU)?

Background: I was watching a Spondoolie SP20 Jackson video that showed a server grade power supply and a breaker board that could feed four PCIe connectors. The video got me thinking... I have a couple of high quality 1100 Watt PFE1100-12-054RA 1U server-grade power supplies from canabalizing a dead 1.6 TH/s Cointerra box (was always very unreliable) that would be ashamed to waste.

One PSU's load should be ~94% efficient when powering an Antminer C1. The problem is the so called "breaker boards" in the dead Cointerra box have 4 AWG copper wires that are used to feed Cointerra mining boards. It would be a very messy hack (requires crimping and potentially a fire hazard) to fashion my own cables to connect the Cointerra "breaker board" to 4 PCIe connectors to power an Antminer C1.

FYSA - The C1 instructions showed a fat paperclip trick to have two ATX power supplies to fully power a C1 that provides the short answer How to power the Bitmain Antminer C1? Don't power your Antminer's using Coolmax products... Two Model:ZX-600 died within 30 days while using a C1's Antminer factory default settings. The C1 even burned up an old Butterfly LAbs (BFL) ATX PSU. This was the impetus for this question. From other Internet postings, it appears that server grade PSU should to be used for Bitmain Antminer products. Also if you ordered a C1 without a SysCooling Kit, use SysCooling Kit to purchase one after the fact.

A solution, but still not optimal for me, is on a Bitcoin Forum posting.

The server grade HP DPS-800GBA connectors are completely incompatible with FCI PWRLOPRO connector that my existing server-grade PFE1100-12-054RA PSUs connect to.

Wound up canabalizing the Coolmax ATX cables.  Only needed to solder the ends of the cables to prep them for crimping into a 4 AWG lug.  Tested the fashioned cables to make sure the voltage being delivered was indeed 12 volts DC. For now, the PCIe voltage sensing pins are floating, no PSU feedback being supplied. The server PSU is much noisier, but takes up significantly less space, and is about 15% more power efficient than the older ATX PSUs. Will see if everything still works in another month. See the picture below.


Why is "New Account" grayed out in Electrum? When creating my wallet, I chose the options "Create new wallet" and "Standard wallet." I think this is a BIP32-based wallet.

As you can see in the screenshot below, "New Account" is grayed out. Why is this?

As you can see, I'm using Electrum 2.0.3 on Windows. I have not sent or received any transactions since making this wallet.

The Electrum (even 2.*) is BIP32 compatible for standard Electrum wallets. But BIP32 standard describes only one account. BIP44 extends it to multi-accounts.

If you use hardware wallet (for example Bitcoin Trezor) in Electrum, in this case the Electrum works as BIP44 compatible and you will be able to create other account.


Radeon HD 6750 running at 120 Mhash/s table shows 167Mhash/s I'm using guiminer with flags -v -f30 -w128 under windows 7 but all i get is 120Mhash/s thats like 75% of what the table shows. Any idea why is that?

If you are using ATI Drivers 11.12 or 12.0 or above you need to set the worksize to 64.

Also the new drivers are a bit slower then pre 11.12 drivers.


Are there any laws that govern the use of crypto currencies in the international law? I want to start up a Bitcoin exchange in Kampala Uganda but I want to first know what the law says on crypto currencies.

Bitcoin was "banned" in Kenya, probably because the central bank realized its growing popularity among the business "creme" and its eventual increase in value to where it is now. Technically, it is not illegal to use it but you can expect some resistance from government.
Since Uganda is a neighbor, and probably thinks and acts along the same lines, my guess is that the crypto-currency will be banned there too if it hasn't already.


Blockchaind Node Monitoring and local testnet Im getting my self into blockchain. I have a few newbie questions:

I'm Running a few bitcoind Daemons on OpenStack VMs.
Can i Monitor transactions coming in? Can I log all inputs and outputs and traffic of my daemon?
Can anyone point to good documentation regarding creating a testnet, joining testnets?
Any documentation to create more currency on local wallet/local testnet and spend currency in an automated way?

Can i Monitor transactions coming in?

Yes. There are a couple of ways to do this.

Personally, I'd use the ZMQ pubsub capability and process the transactions with a separate program by subscribing to the ZMQ endpoint.

  Can i log all in and outputs and traffic of my Daemon?

Yes.

  Can anyone point to good documentation regarding creating a testnet, joining testnets?

You can run your own network using regtest.

To learn more about this, I suggest here.

Unsure what you meant by "joining testnets".

  Any documentation to create more currency on local wallet/local testnet and spend currency in an automated way?

You can create more bitcoins by mining blocks using the general block bitcoin-cli command. This is only usable in regtest.

If you want bitcoins in testnet3, you will need to get them from a faucet or another bitcoin developer.

The regtest guide should contain instructions on how to generate more bitcoins for yourself to test.

To automate the entire process, I'll assume you have some basic scripting skills to invoke bitcoin-cli commands.


Could bitcoin be destroyed if an entity cornered the market? I know the US Government is opposed to competing currencies.  It seems that it would be a rather simple solution for them to destroy Bitcoin before it grows too much by merely buying all the currency, which would be rather feasible given today's market cap of $80M (as of July 2012), and never selling.

The exchange rate at any one point in time is determined by supply and demand at the markets.

The value of all bitcoins at the current market price is $80 million because the current market price is the point where the demand for bitcoins at a certain price meets the supply.  You are describing introducing an artificial demand that would indeed cause incredible rallies in the exchange rate and cause tremendous exchange rate volatility

While some people cash out in a rally, others are buying.  This government taking this action would be enriching speculators mostly -- certainly not the best use of the governed's tax dollars.

Even in a hypothetical scenario where this party you describe were somehow able to acquire 9.49 of the 9.5 million coins issued today, there are just about 11 million more that will be issued, so this entity would need to continue buying.  But even with just 10,000 coins remember that Bitcoin is divisible down to a Satoshi (0.0000001 BTC).  That 10K BTC gives 1,000,000,000,000 Satoshi trading units.  That allows plenty enough time to get an update out that provides for even greater divisibility.

Of course, the risk then is that those 9.49 million coins are not destroyed but find their way back onto the market, creating again huge volatility and price inflation.  That can technically be done, yes.

I don't think too many speculators are losing even a wink of sleep over it though.


When (or) do ICO tokens go to an exchange? Scenario:
Company A sells "tokens" in an ICO, directly from the site.

How does one investing in an ICO know if those tokens will or won't, go to an exchange?
If they will, how would one know the exact date it goes to the exchange?
How would one know which exchange it will go to?
How would one find similar alt-coins that are brand new, and trade them?
Which exchanges (if any) allow sorting on newest altcoins added, to their exchange?

On a similar note:

There are thousnads of "Ethereum based" ICO tokens, but on Bittrex (for example), the Ethereum market only has a small fraction of those alt-coins....where are all the others?

It is not possible to know such things unless an exchange announces that they will be listing an ICO or if the ICO creator announces that an exchange will be listing an ICO. An ICO being listed is not automatic; humans are involved. In order for an ICO to be listed on an exchange, the exchange operator must manually add it. This can happen either if an ICO becomes extremely large (although there is no guarantee that a large ICO will be listed by an exchange) or if the ICO creator asks exchanges to list the ICO.

The only way to know whether, where, and when an ICO will be listed on an exchange, you will need to follow any announcements from the ICO and from all possible exchanges that the ICO may be listed on.

The same applies for altcoins.


How to change network on BitcoinJS-lib with Coininfo and generate Dogecoin address? Can't find out how to change network on BitcoinJS-lib with Coininfo and generate Dogecoin address?

In a Coininfo's example I found this: https://github.com/cryptocoinjs/coininfo#want-to-use-with-bitcore-or-bitconjs-lib

But what to do next?

Theoretically, you would just replace the network argument in the bitcoinjs function calls to the one generated by coininfo. You'll have to figure out the message prefix (don't know if mine is correct) because it doesn't look like that's defined by coininfo.

const coininfo = require('coininfo')
const doge = coininfo.dogecoin.main
const dogeNetwork = doge.toBitcoinJS()
const bitcoin = require('bitcoinjs-lib')

dogeNetwork.messagePrefix = '\x18Dogecoin Signed Message:\n'
console.log('network: ' + JSON.stringify(dogeNetwork));

const keyPair = bitcoin.ECPair.makeRandom({ network: dogeNetwork })
const wif = keyPair.toWIF()
const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey, network: dogeNetwork })

console.log('address: ' + address)


For what purposes do we need "Sign message"? I got a simple but straight question:

Why do we need "Sign message". Also give explanations and examples.

You can sign a message to prove ownership of a particular private key, without sharing the private key or spending any funds. For example, you could sign a message that says "My name is John Doe". You could give this signed message to anybody, and they can verify it with your public key. This proves that whoever has your private key claimed to be John Doe at some point.

Somebody might sign a promise to deliver funds in the future, to prove that they have access to the funds (if the address associated with the private key has the amount of money promised), without actually sending the money. Basically proving the ability to send money, without actually sending it.


Please walk me through a typical page on blockchain.info I would tremendously appreciate it if you could walk me through this page.
Why are there two addresses on the right? What is the longer hash called that is directly under "Transaction" (not the address)? Why do so many transactions occur in the middle of the ocean? Are there any other better websites to view the blockchain than blockchain.info? What makes a transaction "High Priority"?

Thanks so much!

Why are there two addresses on the right?

Bitcoin transactions often have two outputs: one is the intended recipient, the other is a change address. This is because outputs must be used in their entirety, so the remainder is sent to an address that the sender owns. In this case, the change address was the address that the money was sent from, but this is not always the case (it can marginally improve security and anonymity to use a new address each time, including for change).

  What is the longer hash called that is directly under "Transaction" (not the address)?

The transaction hash. It is used as a sort of identifier for the transaction, but beware using it for that before it's in the blockchain due to malleability.

  Why do so many transactions occur in the middle of the ocean?

That is the lat/long coordinates 0N 0E. It really just means that blockchain.info has no good data on where this came from, so it defaults there.

  Are there any other better websites to view the blockchain than blockchain.info?

Not in my opinion, as far as I'm aware.

  What makes a transaction "High Priority"?

If a transaction includes a standard transaction fee and isn't non-standard, it will quickly be transmitted to nearly every miner in the world, who will start working them quickly. Some transactions have no fees attached, e.g. see this one (estimated time is "Within 6 Blocks (Medium Priority)") or find another on the unconfirmed list. These may be transmitted across the network, based on a few rules including the age and size of the inputs. Miners and nodes might not be as quick about transmitting these or may limit it to a few free transactions per block, so the transaction might not get into the chain as quickly.


Legal status of Blockchain proof-of-existence TX (USA court) Is there any real USA court cases with Bitcoin's Blockchain used as an proof-of-existence/timestamp service (without BTC transfer)?

Can Bitcoin's Blockchain be used as a 'signing' utility same as DocuSign service (for example) that conforms to ESIGN?

Thank you.

I am not aware of any cases, but based on the long delay in relevant cases concerning the fax machine and email (proof of delivery, timestamps, etc) I would not expect such a blockchain specific case law decision anytime soon.

Technology advances far faster than the law.


Add an Address with Label to Send Coins Address Book via a RPC call Doing some ecommerce stuff

Im not a c++ guy..I know in C# this is all doable

Does the client support or could it support a RPC call on an open port to add an Address & label pair with an Amount

i.e ComputerWorld Order (5 x 7970) Order# 3340 100.5 BTC

You could have an Do you want to allow confirmation yes/No

This would then allow a 1 step process for users top purchase goods online instead of copy paste etc

If you want to add a label to an address that is used to receive coins, you best use Accounts. Later you can fetch balances of individual Accounts and see which orders have enough confirmations.

If you want to add a label to an address you send your coins to, use "comment-to" field in an RPC call that creates the transaction.


How much of BIP 62 ("Dealing with malleability") has been implemented? BIP 62 lists nine source of malleability:

Non-DER encoded ECDSA signatures
Non-push operations in scriptSig
Push operations in scriptSig of non-standard size type
Zero-padded number pushes
Inherent ECDSA signature malleability
Superfluous scriptSig operations
Inputs ignored by scripts
Sighash flags based masking
New signatures by the sender

...and proposes new rules that would fix the first seven. How many of these fixes have been implemented in Bitcoin Core?

Most of the fixes have been implemented in Bitcoin Core's master branch, or earlier versions, as standard transaction checks that prevent default Bitcoin Core nodes from relaying or mining transactions that break the rules.  Here are some details:

  Non-DER encoded ECDSA signatures

These are currently non-standard, so Bitcoin Core nodes (since 0.8.0, IIRC) by default won't relay or mine them.  When the BIP66 soft fork is successful and version-3 blocks become mandatory, this rule will be enforced on all confirmed transactions.

  Non-push operations in scriptSig

These are also currently non-standard, and are completely forbidden for signature scripts spending a P2SH output.  I don't know when they were first made non-standard, but I suspect it was 0.8 or before.

  Push operations in scriptSig of non-standard size type

These were made non-standard in 0.9.0, where they're called "non-canonically-encoded serialization sizes".

  Zero-padded number pushes

This will be non-standard in 0.10.0.

  Inherent ECDSA signature malleability

This is currently allowed, and several popular Bitcoin programs still do create full-range signatures.  Getting those programs to update to using only low-S values before BIP62 is implemented would be nice, but it isn't critical because the new BIP62 validation rules will only apply to version 2 transactions.  Programs that don't update will still be allowed to create version 1 transactions even after the soft fork.

The advantage for programs using v2 transactions is that they can generally be constructed to be non-malleable by third parties, so v2 transactions can more safely be used for applications like the initial bond part of establishing a micropayment channel.

Edit: an earlier version of this section incorrectly said getting programs to create only low-S signatures was critical.  Thanks to @PieterWuille's comment below for pointing out my error.

  Superfluous scriptSig operations

Non-standard since 0.6.0.  In master, this test has moved here.

  Inputs ignored by scripts

This is partly addressed in 0.10.0, but see the note below.

  Sighash flags based masking
  New signatures by the sender

Per BIP62, "The first six and part of the seventh can be fixed by extra consensus rules, but the last two can't. Not being able to fix #7 means that even with these new consensus rules, it will always be possible to create outputs whose spending transactions will all be malleable."

In short, rule 7 doesn't have a complete solution and rules 8 and 9 don't have any solution.  (Indeed, the malleability from 8 is a feature, and fixing 9 would require a different signature scheme.)


Atomic cross-chain trading Atomic cross-chain trading describes a method where two parties, owning different crypto currencies, can safely exchange the crypto currencies without an intermediary. The method is described in the link below:

https://en.bitcoin.it/wiki/Atomic_cross-chain_trading

Are these method of exchange already possible with Bitcoin and popular alt-coins like Litecoin/Dogecoin? Or is it still a work in progress that requires changes to the core code? If atmoic cross chain trading is possible, are there any transactions in the blockchain where atomic cross chain trading has been used?

To exchange between Bitcoin and popular alt-coins like Litecoin/Dogecoin you will need to use the first solution ('using revealing secrets of contract').

The second solution is designed around a hypothetical custom altcoin which is designed specifically to support the described exchange algorithm. I don't think that such an altcoin actually exists, but there definitely isn't support for this in Litecoin or Dogecoin.

There is a problem with the refund transactions in the first solution, however, with the current Bitcoin version, due to transaction malleability.

The problem is that refund transactions need to be signed before submitting base transactions to the blockchain, but the base transactions can potentially be mutated before they get to the blockchain, which would invalidate the refund transactions and prevent coin being reclaimed in the event of aborted exchange.

I discuss this issue in some more detail in this blog post, where I also look at a generalised form of the 'pay on reveal secret' transaction semantics in this exchange algorithm, and discuss other ways in which this can be implemented.

Note that it's possible to make this work in an embedded protocol, and then perform trustless exchange between blockchains with the embedded value tokens as intermediary steps. I've made a working version of this setup in the form of SwapBill, and this is set up and can be used, currently, for trustless exchange between testnet Bitcoin and testnet Litcoin.

  If atmoic cross chain trading is possible, are there any transactions in the blockchain where atomic cross chain trading has been used?

There are definitely SwapBill atomic exchange transactions on the Bitcoin and Litecoin testnet blockchains, but this is not really what you are asking. ;)


How does the p2p network monitor the validity of a transaction? In Bitcoin, in order for a transaction to be added to the pool of valid transactions that will be added to the chain block by the miners, at least 51% of the nodes/peers need to review that transaction and see that the public key issuing it A) has the funds to issue it, and B) has not spent them in another transaction.

Does anyone know how the peers network actually keeps track of that validation evolution?
Does each peer individually review the transaction and then send the result (valid or not) somewhere, and in this somewhere the count is made until reaching 51%?
Or does each validating peer somehow know about the validation result of other peers?
How does the system know when the 51% is reached? Isn't for that required to know the total number of nodes in the network? How can this be if each node is just connected to few peers?

I cannot somehow come up with an answer that does not imply a server knowing ALL the peers in the network...

Thank you very much for your help

in order for a transaction to be added to the pool of valid transactions that will be added to the chain block by the miners, at least 51% of the nodes/peers need to review that transaction and see that the public key issuing it A) has the funds to issue it, and B) has not spent them in another transaction.

This is incorrect, there is no requirement for a certain number or percentage of network peers to review or validate a transaction before it is included in a block. A transaction is either valid, or not.

Validation is done at the scale of each individual node: each node can validate a transaction on its own, and know that it is valid, without relying on any other node to confirm this info for them. An overview of the transaction validity rules can be found here.  Only valid transactions can be included in blocks, so miners will validate transactions before including them in a block they are mining. Including a non-valid transaction would make the block invalid, so miners are incentivized to make sure they only include valid transactions.

In fact, miners can include transactions that were not broadcast to the network first, so that the rest of the network will first hear about the transaction when they receive that miner's new block (assuming the miner finds a valid block, of course). As long as the block is valid (which requires all transactions to be valid), this is just fine, no 51% majority is needed.


I'm a developer, trying to land a job at an exchange. What type of software would an exchange need? Want to build something to use as a resume I'd like to give a good impression by solving a problem they already have, but I'm not sure what could it be.

Thanks!

I think there are few values that every exchange is looking for.

ability to work with multiple coins (exchanges = shitcoin casinos)
ability to generate the addresses and manage them securely on-scale within organization
knowledge of API interfaces

Regarding second point (as it's a bitcoin-related board) I'd advise looking at few projects that you can work on yourself, copying the ideas:

Key derivation tool: https://iancoleman.io/bip39/
Bitcoin transaction fee estimate like: https://billfodl.com/pages/bitcoinfees or https://bitcoinfees.earn.com/
Maybe some Lightning Network related project if you know that the exchange you are applying in may be interested

Although it relates to bigger exchanges only, as smaller ones use external order books and usually work only on the frontend.


Is there a way to use My Wallet account with bitcoin-qt client? I have some funds on My Wallet account (Blockchain.info) and I'd like to have a possibility to use them with my bitcoin-qt client. Is there a possibility to do that? Please give short description. I get many "Yes" answears on some forum but still can not do that.

Yes, export the private key(s) of the addresses that have funds on blockchain.info using the settings/advanced section and then import them into the bitcoin-qt software. You will then have full access to the address(es) in both wallets.

in the bitcoin-qt debug console..

importprivkey "keyhere"

Edit:  Don't forget change from transactions may not go back into the original address - so once you've made a transaction it may be that you have to repeat the export & import private key process to have the funds available on both wallets.


When importing private keys, will compressed or uncompressed format be used? I am looking into implementing support for compressed public keys on Vanity Pool. However, I have my concerns about importing solutions into a desired vanity address under that format. From what I can see about the explanation how a compressed key format works, it appears that one private key can map into two different Bitcoin Addresses.

Is there some way to specify in the Standard Client which format is to be used for importing, or will one of the formats be preferred all the time?

From a cryptographic point of view, there is just one type of private keys and one type of public keys. A private key is an integer in the range 1 to 115792089210356248762697446949407573529996955224135760342422259061068512044368, a public key is a point on the elliptic curve secp256k1. No magic here.

The problem is that Bitcoin uses addresses, and addresses are derived from the hash of a public key. As you cannot take a hash of the mathematical concept of a "point", it needs to be converted to a byte sequence first. The standard Bitcoin follows, however defines two ways of converting a public key to a byte sequence: a normal one (resulting in 65 bytes) or a compressed one (resulting in 33 bytes). There is no reason to use the normal one, except of course compatibility. As the resulting byte sequence is different in both encodings, the address will be different as well. If coins were sent to one address, the public key encoding that exactly matches it needs to be used to spend them.

Thus, in order to support both, we must remember for each public/private keypair whether the normal or compressed encoding is to be used. As you point out, we also need this information when importing a private key. To do so, the "Wallet Import Format" for private keys (the base58 form, typically starting with a '5'), was extended. If the public key/address for a particular private key are to be derived from the compressed encoding of the public key, the private key gets an extra 0x01 byte at the end, resulting in a base58 form that starts with 'K' or 'L'.

So to answer your question: when importing a private key into the reference client, it will use the normal encoding for public keys if the '5' format was used for the private key, and the compressed encoding if the 'K'/'L' format was used. It doesn't make sense to try to convert one to the other: the client must use the same encoding as was used when generating the address, or the address won't match. Unfortunately, quite a lot of software doesn't support compressed public keys yet (which is a pity, as they save block chain space).


Is it impossible to GPU mine without OpenCL? I have an Nvidia 7300 GX and want to start mining with it. This card doesn't support OpenCL. Can I still use it for mining? With BitMinter I can only use CPU mining; it doesn't see the Nvidia card.

I am using Linux Ubuntu 11.10 (Oneiric Ocelot) with all extras...

OpenCL allows all graphic cards to be handled in a higher level in a uniform fashion. As all GPU mining software relies on OpenCL, you would need to create your own software to mine on non-OpenCL card. Whereas it is possible, the process would be very complicated and the reward probably wouldn't be worth it (NVIDIA cards aren't good for mining).

So all in all, no, if the graphic card does not support OpenCL, you can't use it to mine.


Who receives the money when a bitcoin is purchased? Where does the real money when someone buys a bitcoin?

I understand that if you buy from someone or an exchange you are paying them in real money but who gets the money for a newly mined bitcoin?

Newly mined bitcoins don't "cost" anything (I'm simplifying - there are costs such as electricity and the cost of the mining hardware).

New bitcoins are simply discovered by the miner who is lucky enough to discover them.  The concept is similar to finding gold in the ground.  Once you find the gold, you take it to a market and sell it to someone who wants gold, and is willing to provide money in return for gold.  In the case of bitcoin, a miner runs a large number of mathematical equations searching for an answer that matches the difficulty requirements, and other technical criteria.  Once the answer is found, a block is produced containing the answer along with a number of new bitcoins.  The miner then either retains the new bitcoins, or trades them for some other currency.


Is there a block explorer for Ardor Testnet? I'm looking for a block explorer for Ardor Testnet, but can't find one. I know of http://ardor.tools but that is only for main net.

The ardor portal block explorer also monitors the testnet, see https://test.ardorportal.org/monitor


Can I have a bitcoin pool joining another bitcoin pool I currently having some idea of starting up a bitcoin pool company with my unique strategy pattern. However, I wouldn't have enough hash power at the start.

Hence, it is possible for one mining pool to join another mining pool? Or is there any ways that I can go about doing this?

Thanks

Yes, a pool can mine through another pool. There are pools already doing this as you can see under the "proxy mining pools" heading of the mining pool list at https://bitcointalk.org/index.php?topic=104664.0

You won't control which transactions go into the blocks or be able to vote directly with the hashpower. You'll be providing hashpower to another pool that decides how to use it.

The technical part of proxying

If the upstream pool allows you to mine with a larger extranonce2 size than the regular 4 bytes, then you could use a single connection to the upstream pool and partition up the work you receive for your downstream miners with extranonce2 size of 4 bytes. If the upstream pool does not allow this then you'd need to create one connection to the upstream pool for each downstream miner and just pass the work data through like a plain proxy.

In either case you'll need to observe work submitted by your miners and whether it is accepted or rejected by the upstream pool.

Having one upstream connection per downstream miners means a lot of connections. But it simplifies counting accepted and rejected work for your miners, as upstream and downstream difficulty would be the same. You just pass everything through and watch to see what is accepted or rejected by the upstream pool. If you are mining on a single upstream connection then you'll be mining at a very high difficulty in the upstream pool. You can't have your miners all mining at that high a difficulty. So you'd need to process the lower difficulty work that does not meet upstream difficulty yourself instead of passing it upstream for acceptance/rejection. Whenever work from low difficulty miners do meet the upstream difficulty, then their work must of course be passed upstream.

You'll probably want to contact the upstream pool ahead of time. If you create 1000 connections to their pool from the same IP address there could be problems.

Reward system

If you use the PPS reward system things are pretty simple (but extremely risky). If you use something else then you'll need to think about whether it is safe from pool hopping or not. I'm not sure if anyone has ever analyzed whether you can pool hop a PPLNS pool that proxy mines another PPLNS pool, for example.


Are transactions with the same ScriptSig a security problem? For instance while looking at the transaction stack of my address, tracing it to exchanges I use, I came across this:

https://www.blockchain.com/btc/tx/543f319e52123528847681ffc62941219196983b6b2daa51aa7fd44c9bc5c981

ScriptSig: PUSHDATA(34)[0020431a072cb6352277b34d2bd4b7963939c37c2f121feb288106f64369eb1467d6]

The same ScriptSig occurs twice on this page within the same transaction?

I know reading years ago in paper by someone was outlining how you can derive the private key from the scriptsig but I remember you need to have way more data in the field...in other words: the value between two inputs should match but there were other different values? Here it's just the exact same string but occuring twice?

aka, example of signature I am sure it's hackable:

(some header data) + (vulnerable data that occurs in other inputs) + (some more data)

very dumbed-down example:

00207777777777777777777777777123123 <- input1;
00217777777777777777777777777000000 <- input2

then by doing some simple math people can get the private key from input1 and input2 (multiplying/dviding etc, forgot how it worked just because the middle is the same of both inputs).

I have no idea what is 'witness' either, guessing miner who confirmed it?

In the example you specified, the scriptsig is duplicated as these are p2sh-p2wpkh addresses. The actual signature is still different, with unique R values.

It is only possible to recover the private key if your have two different signatures from the same key that use the same R-value. This is avoided in any sane wallet by following rfc6979, which creates an R-value deterministically from the data being signed.


Unconfirmed and rejected transaction I am quite new to the Bitcoin world. About 1 BTC was sent from my Electrum wallet to my Coinomi wallet, with 0.5 mBTC per kB commission, and it remained unconfirmed for about 50-60 hours. Then the transaction was rejected.

Yet the amount  is still reflected as "unconfirmed" in my wallet.
Two questions:
1. What can I do about the "unconfirmed" amount.
2. What did I do wrong and why it was rejected after all?
Please help

Bitcoin network is heavily loaded with thousands transactions staying unconfirmed for a long time, your funds are totally safe with Coinomi.
Your transaction will eventually get confirmed or it will be "discarded" by the blockchain network and your funds will be back in your wallet.
Unfortunatelly, there is nothing we can do to unstuck your tx.
To avoid such issues in the future you could increase the default fees for Bitcoin from Settings -> Transaction Fees.

You could also use a transaction accelerator such as https://www.viabtc.com/tools/txaccelerator/ or https://bitcointalk.org/index.php?topic=2204426.0

You could find more information about bitcoin fees through the link : https://bitcoinfees.21.co/

Coinomi Support