Are DAG-based crypto currencies as secure as proof-of-work based blockchains? A key feature of blockchain based cryptocurrencies is that they provide inherently secure systems that don't rely on third parties. The newer DAG-based cryptos like Byteball are being touted as superior to blockchains because they have faster transaction times and eliminate the need for miners. However, these cryptos use something called "trusted witnesses" to resolve double spend conflicts. Isn't this inherently less secure than a true trustless system like Proof of Work? I thought that the whole point of a blockchain was to provide intrinsic security without the need for trusted third parties.

You need to prove that the witness Selection process is random and independent. Alice can double-spent if she has control over the witness and the network.
Let assume Alice can double-spent, in bitcoin one can wait for 6 confirmations to rule out most of the double-spent. E.g. Seller only sends out the goods after 6 confirmation. How can you achieve this in DAG? since the account is only updated by its' own transaction. On top of that, the graph DAG is very complex compared to bitcoins' link-listed blockchain.
DOuble-spent transactions may get buried by other transactions.

It's interesting that so many believe that the original Bitcoin way is the only way to achieve Byzantine Fault Tolerance.  It is not.
Explaining why PoW with mining is more secure than other methods boils down to the math being the trusted element. This is also the case with Byteball (now called Obyte). The Obyte whitepaper explains that it considers PoW mining to be a leak of network value; to power companies, etc.
The Obyte consensus protocol follows a deterministic set of rules.  The role of the witnesses is only to order or sequence the units in a fair FIFO manner. Remember, in a DAG an unbounded number of units can be created at the same time, so in the case of an attempted double-spend, the fair ordering will have been determined by the witnesses broadcasting their encounter with the unit as they occur; and not by the amount of fee paid to prioritise them as is the case in BTC. Witnesses do not have other powers and should not be compared with bitcoin miners; they are trusted to act rationally to protect their own reputation in the real world. Full nodes are anonymous nodes which execute the consensus protocol to validate and store the unit.  The consensus protocol they execute is deterministic (while that of Bitcoin is probabilistic) so once a unit is confirmed stable in Obyte, it is final; it is then not just extremely unlikely to be invalidated as is the case with Bitcoin after x-number of confirmations; in Obyte it is 100% impossible.
The Obyte network is designed to allow for the number of witnesses to be limited only by the number of full nodes on the network, but just twelve are needed per transaction.
Anyone can set-up a witnessing node with relatively little hardware, etc. The Bittrex witness node at address QR542JXX7VJ5UJOZDKHTJCXAYWOATID2 is used by anyone who trusts it to be honest and reliable about broadcasting units as it sees them. They use it, but maybe others don't. Bittrex has a strong logical incentive to run an honest, reliable witness and Bittrex partners, customers etc. transacting Obyte Bytes with them expect Bittrex to protect their brand.  If however, they were to fail at that, it would just mean that other nodes would 'vote' away from them by not using them as a witness.  A transaction needs just seven of twelve witnesses to confirm sight of the unit. So, it would require seven simultaneous 'failed' witnesses (of a given transaction) for a unit to be stuck in an unstable position, or be sequenced in an unfair order. The probability of that is considered extremely unlikely, especially in a mature network.
The white paper explains this in full detail.


BIP32 HD Wallets: HMAC vs. "just" Hashing the Seed In A. Antonopoulus' Mastering Bitcoin (2nd edition) on page 106, there is a nice illustration showing how the basis for a BIP32 HD Wallet is generated:

So here is the one thing I don't understand about it:

In the middle of the picture there is the part where the seed is HMACed and stretched to 512 bits. Why is there a HMAC needed instead of just simply taking a hash of the seed (SHA512)?

As far as I understand, the difference between a hash and an HMAC is that the HMAC delivers some sort of non-repudiation namely that only the ones who are able to create a valid HMAC are the ones knowing a specific key (so kind of like a signature). This feature however is useless in the given use case.

So why HMAC-SHA512 instead of SHA512? Is the idea to artificially increase the workload needed for the generation of a HD Wallet to limit the possibilites of a brute-force attack?

I found this answer by David Schwartz under the cryptography tags in stackexchange, it may answer your question: HMAC . It basically states that HMAC is smaller in size and takes less CPU to compute.


Looking for revenue data of bitcoin related websites I was wondering if we can share pointers or anectodes about revenues of web projects related to bitcoin or general cryptocurrencies.

The blockchain itself is literally a database of every transaction ever, so if you download it and parse through all of the transactional data, I guess that probably qualifies as 'revenue related stats'.

Blockchain.info has a lot of stats that you may find interesting.


Does using different addresses affect subsequent transaction size, given the same number of inputs? I'm quite confused about the input count that affect the transaction size, example:

x1 = my receive btc address

x2 = my another receive btc address

x3 = my another receive btc address

Scenario A

P1 send 1 btc to address x1

P2 send 1 btc to address x1

P3 send 1 btc to address x1

Scenario B

P1 send 1 btc to address x1

P2 send 1 btc to address x2

P3 send 1 btc to address x3

So my wallet will have total balance 3 btc.

My question is when I try to send 3 btc to P4 (Another user), scenario A will count as 3 inputs or scenario B will count as 3 inputs or both is same 3 inputs?

Transaction inputs need to reference the Unspent Transaction Output (UTXO) they are spending with the outpoint of that UTXO. The outpoint is the transaction id of the transaction that created the transaction output concatenated with a colon and the output position in that transaction: txid:vout.

Let's say you were sent 1 BTC by P1 to address x1 in transaction uiaex and it was the second output (vout = 1 because we start counting at 0), the corresponding outpoint would be uiaex:1.

The UTXO reference therefore is independent of the address that the funds were sent to previously.

The transaction size is therefore the same whether you received all outputs to the same address or different addresses. There are no savings in transaction size by receiving funds to the same address multiple times.

There are three inputs to the transaction in both scenario A and scenario B.

Your scenarios, with a little more details:

Scenario A

P1 makes transaction t1, and sends 1 btc to address x1 in transaction output 0

P2 makes transaction t2, and sends 1 btc to address x1 in transaction output 0

P3 makes transaction t3, and sends 1 btc to address x1 in transaction output 0

Scenario B

P1 makes transaction t1, and sends 1 btc to address x1 in transaction output 0

P2 makes transaction t2, and sends 1 btc to address x2 in transaction output 0

P3 makes transaction t3, and sends 1 btc to address x3 in transaction output 0

Transactions

With scenario A, sending 3 btc to P4 translates to the following transaction: merge t1-output0, t2-output0, t3-output0 together, and send 3 btc to P4's address. There are no transaction fees.

With scenario B, it is the same transaction-wise: merge t1-output0, t2-output0, t3-output0 together, and send 3 btc to P4's address. There are no transaction fees.


Alternative uses of a blockchain-mechanism? Bitcoin's blockchain is basicly just a mechanism to record timestamped entries. Bitcoin uses it as a transaction ledger, but it could be used for many other things.

For example, one could create a chain for a decentral chess-game, where each move is an entry in the blockchain. All nodes can verify if the players turns are by the book, and in the correct order, and decide who is the winner.

Can anyone think of other examples of alternative chains?

Provably fair games can utilize it. For example, Satoshi dice published the hash of their daily secretkey hash list in the blockchain. In that way, they can prove that they haven't altered they secret key list. Or you could do a simple "guess a number" game that kept an encrypted copy of the result in the blockchain. Later reveal the secret key and

Essentially any kind of system that relies on the escrow of a small amount of information could use the blockchain for that escrow. You could even use it to as a communication channel if your messages were small enough.

Just a note: You cannot really add arbitrary things like text into blockchain.

You can "comunicate" by exact values and by bitcoin addresses, yes, but there is only so much that you can encode in that.


Where can I find people willing to pay me in bitcoin for services? For those of us unable or unwilling to spend our native currencies on bitcoin, but willing to work for them. Where are the bitcoin-jobs(or micro-jobs) to be found?

CoinWorker pays Bitcoins for repetitive jobs such as identifying images that contain adult content, or rating search engine results.  It acts as a Bitcoin interface to the CrowdFlower network.

Best Place less fee and secure is, http://iwill4coin.com  its  growing rapidly, post your jobs/services there and get paid with bitcoin, no other payments accepted..


Who will be the future miners? We know that the bitcoin for mining a block is going to converge to approximately zero as the number of bitcoins will be almost constant after a certain amount of time. So, mining will no more profitable in the future and if no one is going to maintain the ledgers then how the bitcoin going to survive?

If mining isn't profitable, fewer people will mine. That means the difficulty will drop, increasing the profitability of mining. That means more people will mine. The system is, by design, self-regulating.

You still have transaction fees.
And if the transaction fees will be to high maybe something like that happens:

Hard-Fork
With less incentive to mine, the transaction fees will drop
Switch to PoS that does not cost so much energy
...


How do you perform double-SHA-256 encoding? The Bitcoin Protocol-specification gives an example of double-SHA-256 encoding.

  hello
  2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round of sha-256)
  9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50 (second round of sha-256)

I've tried various SHA256 calculators and the first encoding matches no problem, but the second always resolves to

  d7914fe546b684688bb95f4f888a92dfc680603a75f23eb823658031fff766d9

I've also tried UPPERCASE and swapping the byte endianness.

You're hashing the hexadecimal representation of the first hash. You need to hash the actual hash -- the binary data that the hex represents.

Try this:

$ echo -n hello |openssl dgst -sha256 -binary |openssl dgst -sha256

It looks like you have coded your algo to always assume that
your input msg always contains data in ASCII display format.
That would explain why your first algo produced the correct
hash table.
For run2, you can have your input msg data in any format you
like, as long as you have some way of telling your algo what
to expect.
I am going to assume that when you wrote your algo, that you
coded it to always expect ASCII display format in the input
msg file.
So, if you didn't switch your first output block table to
ASCII display format, then that would explain why you didn't
get the expected final block table from your second run.
Grab a list of "The IBM PC Character Set" and you'll see
what I mean.
eg if you're providing an 'a' and it's really a hexadecimal 'a'
as opposed to a ASCII display format 'a', then you've GOT to
let your algo know what you are doing - it can't second guess
that you've switched formats without telling it.
So similarly, you may have put the hexadecimal hash or even
the binary hash table, from run1 output into run2 input,
which is fine, BUT you have let your algo know that it
should read it as what ever format you picked, to wack into
the run2 input file.
There are 2 ways to fix this IMO.
(1) convert your output hash block table from run1, to ASCII
display chars and wack them into the run2 input file.
I wouldn't do this because you get some wierd and wonderful
ASCII display chars that may do wierd things.
(2) Re-code your algo, so that you can tell it what data
will be coming at it, from the run2 input file.
That's a more flexible way to do things, and it opens up a
lot more options in terms of using any base you like, even
your own custom ones, but YMMV.
A lot of water has passed under the bridge since your problem
was published, but this may help others.


Who gets Bitcoin transaction fees? Whenever I send bitcoins from one wallet or one exchange to the next there is always a fee. This makes sense with the exchange sites, they are just collecting the fee so they can make a living. What about the open source wallets that I've installed on my computer?
Surely, nobody is collecting my bitcoins because my transactions are too long! So, is the "fee" part of the Bitcoin algorithm? Do the coins that are confiscated in the fee go to Bitcoin miners?

Also, when does the fee start? I noticed, if I send like 0.05 bitcoins there is no fee, but if I send 0.1 bitcoins there is a fee.
What if I just sent 0.05 bit coins twice? Or is it if they are in the same block I will get a fee, so I'd have to send them twice (and 10 minutes apart)?

The fee goes to the miner who mines the block that includes your transaction. The fee is based on the size (in bytes) of the transaction and the age of its inputs (how long ago the coins spent were received).

Transactions get big if they have to "pull in" a lot of outputs from previous transactions and that raises the fee. So if you got a lot of small payments and then try to make a large payment, the transaction will be expensive because it needs to gather all those small payments.

It is also important to note that if the inputs you are sending in your transaction are older then there is a greater chance they won’t require a fee. Old coins means coins that haven’t been moved for a long time.

Additionally, most times you won’t have that much control over whether your transaction requires fees or not. Your Bitcoin wallet will usually make the optimization of inputs for you so you will avoid fees when possible.


Doubt about the MultiBit wallet I'm using the MultiBit wallet and I can't get my satoshis from faucetbox. I read on MultiBit page that the most secure way to receive a payment is generating a brand new wallet address.
That's my question, I'm using an old MultiBit wallet address on faucetbox, that can be the reason for this issue? I mean, not receiving my satoshis from faucetbox?
Sorry about my bad english :D
Peace for all.

First of all, most faucets (not all) have a minimum payout of 20000 satoshis. Check the minimum payout of the faucet you are using. Try updating to one of the latest versions of multibit from here. Generate a new address and try again, it should work. Maybe because of the forks in the network the old address may not be valid.


Valid fork in regtest - Change blockchain via RPC? I've created a regtest network consisting of 2 nodes - node0 & node1.
I'd like to have a fork on the common blockchain and seemingly achieved it by doing so:

nodes start
node0 adds node1 via addnode
node0 generates 1 block with hash 4dac...
node1 generates 1 block with hash 5d8b...
node0 invalidates node0's block with hash 5d8b... via invalidate <hash>
node1 stops
node0 generates 1 block with hash 64f2...
node1 restarts
node1 generates 1 block with hash 5sfg...
node0: getchaintips returns an array with invalidated block's hash 5d8b... with status

Now my questions:
a) How can I achieve a "valid-fork" status in the output of getchaintips for the previously invalidated fork? [SOLVED]

b) Is it possible for a node to "conciously"/via RPC give up its own chain and switch to the competing chain?

The longest valid chain is always chosen automatically. Thus the way to make it forcefully switch is using the invalidateblock hidden RPC.

Regarding a) I'm not really familiar how it validates the block, but my guess is no.

as for b) it is possible to give up its own chain of the other chain is the longest valid chain.

  Blocks in shorter chains (or invalid chains) are not used for anything. When the bitcoin client switches to another, longer chain, all valid transactions of the blocks inside the shorter chain are re-added to the pool of queued transactions and will be included in another block. The reward for the blocks on the shorter chain will not be present in the longest chain, so they will be practically lost, which is why a network-enforced 100-block maturation time for generations exists.

https://en.bitcoin.it/wiki/Block_chain


Bitcoin-Qt wallet is taking forever to synchronise. Can I just use the same address elsewhere to collect coins? It will take several days before the wallet is in sync. I already purchased a bitcoin and am waiting for it to transfer into my account using the address that was generated by Bitcoin-Qt. Can I just re-divert the Bitcoin to a cloud-based wallet that doesn't need to synchronize?

Are you sure the syncing is not advancing? If you hover the icon in the lower right corner, you should see the block count. Can you see it increase?

You can export your client's wallet.dat file and import it into a new Bitcoin-Qt wallet or into another Bitcoin wallet, either using the wallet.dat file directly or by extracting the private keys from it.

It's important to first set:

type: walletpassphrase “your walletpassphrase” 600

type: dumpprivkey [your wallet string]


I have mistakenly sent my LTC to (M) address instead of (3) address I have mistakenly sent my litecoins to (M) as the starting letter of the address, whereas the Litecoin address now has changed to (3) as the starting letter. So can anyone help me to recover this?

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

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

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

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

Litecoin addresses have not changed to (3). its just SegWit address.

if you've sent funds to (M) Address so the receiver should have it now.


Why doesn't BTC depreciate in value as its supply increases? The popular intuition is that that greater supply = less demand. I've looked around and haven't found a counter-argument. Why is the BTC gaining value as its quantity increases?

The popular intuition is typically correct in well-saturated markets, but Bitcoin is not yet a well-saturated market. Though the supply of Bitcoin is currently increasing the demand is increasing dramatically faster. This is because we are during the initial adoption curve of a new technology and new demand is created as individuals discover the new tech.

In short, there is absolutely some downward pressure on Bitcoin's price exerted by the inflating supply, but it has been completely overwhelmed by upward pressure from new adoption.

The supply of Bitcoin is increasing at a decreasing rate. If the supply curve just went to infinity, Bitcoin would be less attractive over time.  But it doesn't: How many bitcoins will there eventually be?


Why do pools get so often DDoS attacked? In other words: who has incentives for attacking pools?

Do you think it's the government?

There are several groups of people that could have incentives to DDoS mining pools:

Owners of other mining pools. Mining pools make profit from the blocks mined by their miners. So it would make perfect sense for them to attack other pools to encourage users to abandon the pool and perhaps find a new home at theirs.
People mining at other pools, including their owners. When a miner is mining for a pool that has issues, chances are high their shares get lost. This means that chances exist that the pool under attack will no longer be able to find blocks and so the hash power of its users is lost, causing new blocks to be found less frequently. This can be advantageous to people mining at other pools because this will result in the difficulty being lowered, giving them a higher chance of finding blocks. (And again, as more blocks are found by another pool, the pool owner makes more profit.)
Opposers of Bitcoin. This doesn't only need to be governments, but can also include banks and payment processors like PayPal, Visa or MasterCard. Bitcoin is very innovative as a payment option and has the potential to take over a significant part of the online payment industry. Also, Bitcoin abolishes the centralized concept of money, from which banks make profit. So they all have reasons not wanting to see Bitcoin succeed as a successful currency and payment method.

I believe the main reason is competition.


What is the meaning of difficulty in Bitcoin mining? I'm a beginner in Bitcoin and Blockchain technology, so I have a question after reading about the difficulty in Bitcoin mining:
What the difficulty actually means?
I read that

A high difficulty means that it will take more computing power to mine
the same number of blocks, making the network more secure against
attacks

However, I don't clearly understand.
Ex: When the difficulty is 6, then what I can know from that number?
Thank you so much!

Suppose I give you some very complicated function f(), and I assign you the task of finding an input n with the property that f(n) is small.  That can be difficult.  I can make it more difficult by changing the definition of "small".  If I ask you to find an n such that f(n)< 100, that's difficult.  If I ask you to find an n such that f(n)< 90, that's more difficult.
Once you've compiled a block, you're confronted with a function f().  The function itself depends both on the block you've just compiled and the solution someone found for the problem associated with the preceding block.  Successfully mining the block means finding an n such that f(n) is small.  The only way that anybody knows to solve this problem is by trial and error.
The definition of "small" is periodically adjusted.  That definition of "small" is what people mean by "difficulty".

Difficulty adjustment is one of the critical features of Bitcoin that Satoshi implemented. It basically means - adjusting the bitcoin block time to ~ 10 minutes as programmed.
Think of it this way - if suddenly more miners join in then there would be more hash power and blocks would be mined quicker then before (less then 10 minutes) - the difficulty adjustment, that happens every 2016 blocks (~2 weeks) would raise the difficulty of mining making if harder to find the block eventually raising the block time back to ~10 mins.
The same thing applies if there are miners leaving (shutting of their miners) - then there would be less hashpower resulting in slower block times (more then 10 minutes) so the difficulty would lower making it easier for the remaining miners to find the block eventually lowering the block time to ~ 10 minutes.

Ex: When the difficulty is 6, then what I can know from that number?

Difficulty is measured in % of change, the current difficulty change is estimated at -10%, meaning it will be 10% easier to mine a block in the next difficulty epoch (each epoch is 2016 blocks)
check it out here https://bitcoin.clarkmoody.com/dashboard/


Help! Transaction unconfirmed after 1 day! I made a bitcoin transfer yesterday and it is still pending with 0 confirmation. The fee is around 0.003BTC and the miner preference is high though. Can anyone please help me get it confirmed? I'd greatly appreciate it.

Here is the link:
https://live.blockcypher.com/btc/tx/b79bffaec87a0e789be3465faecc394f692ef2c501ef2787dcbc3f56e16c7076/

At this point, AFAIK, no one can help you speed things up. There has been a record number of transactions over the last few days and the queue is really backed up.


How to generate a Bitcoin Private Key Checksum I want to understand how a bitcoin private key is made up.

Looking at this graphical generator
https://royalforkblog.github.io/2014/08/11/graphical-address-generator/#hello

I understand step 1, how the private key is generated:
2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824

I can see the prepended version number 80, and that I should append the compression flag  01

My question is around step 4, which is simply detailed as "Append checksum. Checksum is the first 4 bytes of double sha256 hash of whatever is being checkedsum'ed."

So I take 802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401 and double SHA-256, and I don't get anything like the expected checksum of F29E9187

Can anyone help me understand how F29E9187 is derived?

F29E9187 are indeed the first four bytes of the double sha256 of the bytes:

802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401

In order to check this, you need to compute the double sha256 of this array of bytes. However, as already discussed, passing the string 802CF2... to the hash function will not yield the right answer, as this string is not the array of bytes itself (it is a hexadecimal encoding of the array). So let us create a binary file which corresponds to the hex encoding above:

$ echo -n 802CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B982401 \
   | xxd -r -p > temp

Let us check our binary file temp has the correct bytes:

$ hexdump -C temp

00000000  80 2c f2 4d ba 5f b0 a3  0e 26 e8 3b 2a c5 b9 e2  |.,.M._...&.;*...|
00000010  9e 1b 16 1e 5c 1f a7 42  5e 73 04 33 62 93 8b 98  |....\..B^s.3b...|
00000020  24 01                                             |$.|
00000022

So far so good. We can now compute the first sha256 hash of these bytes:

$ sha256sum temp
08a9d3e1296633b2a4071316eaf597f1c93a0ec2f4b68b24c6e0ad2e7c06540c  temp

Again, we are faced with a hex encoding which we need to convert to actual bytes:

$ echo -n 08a9d3e1296633b2a4071316eaf597f1c93a0ec2f4b68b24c6e0ad2e7c06540c \
  | xxd -r -p > temp

Checking once more:

$ hexdump -C temp

00000000  08 a9 d3 e1 29 66 33 b2  a4 07 13 16 ea f5 97 f1  |....)f3.........|
00000010  c9 3a 0e c2 f4 b6 8b 24  c6 e0 ad 2e 7c 06 54 0c  |.:.....$....|.T.|
00000020

So let's compute the sha256 hash of these bytes:

$ sha256sum temp
f29e9187a566a24502d7cd2eae948e74bc4dfafc7deff44cce80e1256ef12a3e  temp

you can see that the first 4 bytes are indeed F29E9187.

Also look at this fairly simple brain wallet generator - it shows the steps needed to create the standard base58 private key from a passphrase.

Below is a partial screen capture of the above URL from the site commandlinefu.com:

Also useful - you can use brainwallet.io to cross-check the above results.


Is one quad GPU rig better than two dual GPU rigs for Scrypt mining? I want to buy four r9 280x cards for Scrypt mining. I already have all other hardware components to create two dual rigs. Would one mining rig that uses all four GPUs instead be significantly better?

I would have to buy a motherboard or riser cards to create the quad rig. I am indifferent to power consumption.

Theoretically you should see a net saving in electricity consumption for there ought to be some economies of scale in having a single motherboard with the 4 cards vs. 2 separate motherbs. each with 2 cards each.

The CPUs controlling such cards are consuming power themselves but such consumption doesn't get much bigger if you have 1, 2 or 4 cards in the same motherboard. Plus the inefficiencies in AC/DC conversion within the power supplies would double, so yes - you should definitely see some savings with that arrangement.

But then, such a machine would consume tons of power, which not a lot of power supplies would be able to yield - 500 Watts, 800 W? Plus all the heat they'd generate, which of course needs to be dissipated somehow - which means not just some big fans, but probably some heatsinks, Peltiers or just submerging the whole arrangement in a bath of mineral oil -- fluorinert would be even better, if you can afford it.

Such big initial investment costs could offset part of the savings, so I believe it would be barely more profitable than the 2 machines way.

Your assertion about "throwing" is indeed correct... Mining with GPU technology has become a money loosing proposition with the advent of ASICs.  Case and point, compare the computing power those GPUs will have against the (price)/(hashing power)/(power consumption) points of the 100 GH/s product.

With the current compounding rate of the difficulty factor, and the advertised end of February delivery date of the product, and current Bitcoin exchange rates, I'm not sure that I want to spend the money to buy this ASIC product because mining is likely to not be profitable. If current difficulty factors continue to increase at current rates, they will be at least three times the current 1,180,923,195 difficulty by early March. This compounding effect is not accounted for by calculators such as http://www.alloscomp.com/bitcoin/calculator.

Conclusion, Bitcoin mining is in a bubble unless the value of of the Bitcoin appreciates substantially. Stating that mining Bitcoins is in a bubble, does not imply the exchange rates for Bitcoins is in a bubble.


Can I restore an additional address of Bitcoin Core Once in Bitcoin Core I created an address to receive some payments from a faucet. After years I reopened the Bitcoin Core and started to synchronize it. After a while there was a crash, and I decided to remove the previous Bitcoin Core folder (it appeared to be in a USB hard drive and didn't get to Recycle Bin - when I decided to restore the removed files it was too late).
Then I reinstalled the Bitcoin Core, put there a wallet.dat from backup and successfully synchronized the blockchain. But I discovered - there's no address for the faucet, which I needed and there's no satoshi I expected. Apparently I created it before the backup (some previous history was there - so the wallet was restored - but without the latest address). So, should I consider the value on this address lost?
I tried to create the dump (dumpwallet "dump.txt") and to find the master private key there to restore the private key of this address somehow. The dump file contains some # extended private masterkey (starts with xprv). Also I know the address, which I set to the faucet (1J2ia2JZVoN8fqdvGYjkVaaX3A2C5BZzwj). So I thought I can use this data in "Mnemonic Code Converter" (https://iancoleman.io/bip39/) (extended private masterkey to BIP32 Root Key input and selected the Bitcoin Core presets everywhere). Surprisingly enough the first generated entry contained my first default address, but I couldn't find neither of the other addresses from the dump file. The address from the faucet doesn't exist in the dump either. What do I do wrong?
Here is the address I'm talking about: https://www.blockchain.com/btc/address/1J2ia2JZVoN8fqdvGYjkVaaX3A2C5BZzwj

Try it Electrum. Do import extended private masterkey


Would I be able to recover coins if Trezor went out of business? I'm considering a Trezor wallet. I've read through their info about recovering if I lose the device or forget my PIN. What if the company were to go out of business. Would I still be able to recover my coins?

Yes. Trezor uses BIP39 and is compatible with any other wallet  that would. You can in fact import your seed into electrum, though this to some extent defeats the purpose of having a hardware wallet.

You will loose all your coins*.

The Trezor wallet relies on the trezor software running from their website (wallet.trezor.io) for all user interaction.

Yes - your private keys will be safe inside that blob of plastic, but *unless you made a copy of their python github before they went away, there will not be anything you can plug your trezor into in order to get those keys out of there.

Also take a look at the Trezor CTO's replies on their website as to why they do not digitally sign their executable: They refuse to produce identification documents to Apple: https://www.reddit.com/r/TREZOR/comments/6kzj7z/trezor_bridge_mac_version_why_isnt_it_available/

IMHO: Their security and firmware are nice.  Their business practices and risk exposure is horrific.


Bitcoin in wallet transactions but not on the blockchain (old wallet) I've been checking old wallets and found an unconfirmed transaction that's on the wallet but not on the blockchain
transaction id (missing from blockchain)
ab5eb776a36b5552570088ba7bf3563780c91f0044c2a170481f75a5004dfe2a

receive address (showing 0 BTC)
1LwBvLheVfjP3RUTipZtPRRPa13GSH2sAY

My wallet showing a transaction

How do I access these BTC and get them onto the blockchain? I could be wrong but I believe that it's such an old unconfirmed transaction that it doesn't even show on the blockchain.
So far I have tried forcing the transaction to go through again with a hex code of the transaction on https://blockchain.info/pushtx, but it didn't work
Please help! It's a long shot but the amount of BTC is huge, so I want to try every approach at accessing the BTC before giving up.

I'm afraid you won't be able to access these funds.

How do I access these BTC and get them onto the blockchain? I could be wrong but I believe that it's such an old unconfirmed transaction that it doesn't even show on the blockchain.

The transaction is not, and has never been, confirmed on chain. From the perspective of the network, it doesn't exist.

So far I have tried forcing the transaction to go through again with a hex code of the transaction on https://blockchain.info/pushtx, but it didn't work

If that doesn't work, it likely means the transaction is spending funds that no longer exist (i.e., it was double spent). The error you get from sendrawtransaction does not mean anything, as your node is not fully synchronized yet.
Regardless, I'd suggest to let your node synchronize with the network. It's possible that it has received other transactions at that time, which did get confirmed.

Honestly you should be involving several federal agencies if you've misplaced your billion dollars.  FBI, IRS, SEC, Secret Service, Attorney General, 911....
Tip: for your next billion, maybe put your bitcoins in a bank, where it's federally insured.


How could a time warp attack be prevented? jarpian explains what a time warp attack (AKA zeitgeist attack) is:

  This is a 51% attack where the attacker sets the block timestamps artificially to lower the difficulty, allowing him to profit more coins than his hash rate would warrant. It works because the difficulty adjustment formula is based purely on timestamps that can be chosen quite freely by the attacker. In particular, the timestamps are not required to be in increasing order. ArtForz explains the attack in detail here.

  This attack was used against the new Geist Geld block chain. Geist Geld difficulty adjusts every 16 blocks making the chain particularly vulnerable against this attack. An attacker targeting Bitcoin would have to mine a full set of 2016 blocks at the current difficulty before starting to get any benefit compared to a "normal" 51% attack.

Obviously, performing this attack would be horrendously expensive. (Coinometrics places the cost at about $463 million at time of writing.)

However, if you were successful, you could lower the difficulty and increase the block rate by a factor of 4 every 2 weeks, letting you mint coins more than every 10 minutes.

The obvious way of fixing this - changing the block retarget period from (2016*n, 2016*n + 2015) to (2016*n, 2016*n + 2016) is problematic. Blocks produced by the new implementation would be invalid in the old implementation, and vice-versa. (Source)

So, how could a time warp attack be prevented in a non-disruptive way?

The simple solution is a soft fork that requires each block's time be equal to or greater than the time of the previous block on the block chain.  That is, time on the block chain can't go backwards.

If time can't go backwards, then the attacker can't artificially lower difficulty except by mining blocks with times in the future, and the network already rejects blocks more than 120 minutes into the future.

This proposal is a soft fork because non-upgraded miners will accept a more difficult chain whose times only increase or stay the same.  If implemented the same way as BIP34, the supermajority of hash rate would be upgraded before the new rule was applied, minimizing disruption.

Keep your eyes on networks such as Myriad, Digibyte, Digitalcoin, Unitus and others that use Multi-Algo proof of work.  As some of you may know, Myriadcoin was being Timewarp attacked toward the end of last year and has successfully ended the bad actors' efforts.  I for one, don't know where the thresholds are for a % of hashrate to be able to pull off such an attack.  An in depth analysis of the Myriad Blockchain (timestamps and all, network traffic from the attack would be nice too, but must be captured live) and a look over at https://github.com/myriadcoin/myriadcoin would be a good idea for anyone interested in solving timewarp issues.


Solo mining just for luck, realistic? Just turned my attention to mining and the concepts are quite new to me. First of let me be clear: I realize that my hardware setup is far from ideal for mining. This is also the reason why I do not want to pool, I would simply provide a too small a share. I will be CPU mining at first, ASIC later on.

I would however like to test my luck. Mostly just for fun, I'm completely fine with the idea of never actually solving a block. I see it more as a lottery. I just want to confirm my idea so that I am not missing something: Do I have a chance of solving a block?

If a block is solved every 10 minutes, and the difficulty goes up continously. Do I even have the time to attempt a solution? I understand that the current work has to be abandoned when a block has been solved, rigth? Is there, for example, a lag here that yields my efforts useless?

What are the odds? Are the actually the % of my speed vs the network's?

Check this page: How soon might I expect to generate a block?

So with the current difficulty  510,929,738, and a 1Ghash/s mining rig (faster than your CPU) you'd do this math:

510929738 * Math.pow(2,32) / Math.pow(10,9) / 60 / 60 / 24 / 365

So to find a block at this difficulty with a 1Ghash mining rig it would take you about 69 years on average.
Good Luck!

PS: Math.pow(2, 32) is simply the JavaScript version of 2^32

The beauty of Bitcoin is that it provides anyone with a chance to earn free bitcoins. No matter what statistics are used to calculate the odds of hitting the jackpot, they can never be used to predict the outcome.
As we all can read in the numerous variaties and complications (when it comes to calculating probabilities) in the above mentioned posts, it's obvious that there will never be a mathematical model able to predict the possibilities.
There are too many variables that change continously overtime (diffuclty rate, amount of miners, growing blockchain etc.)
Instead of focussing on mining itself you better try and find a way to reduce the cost. If one could use solar energy to power his/her computer then it's no problem at all to have it up and running up to 20 years or even more. In that case it's cheaper then taking part in a lottery and your chances to hit the pot will be no more or less the same either way.
That's why we call it luck ;)


Why are some BIP numbers missing from BIPs list? If I understood correctly https://github.com/bitcoin/bips contains a list of change proposals that have been accepted as BIPs by the BIP editor?
Why are some of the numbers missing, for example 0155.mediawiki to 0158.mediawiki?

If I understood correctly https://github.com/bitcoin/bips contains a list of change proposals that have been accepted as BIPs by the BIP editor?

Correct.

  Why are some of the numbers missing, for example 0155.mediawiki to 0158.mediawiki?

They haven't been assigned yet. The BIP editor sometimes chooses to reserve a range of number for BIPs around a common theme. When a BIP is proposed matching that theme, it is given a number from the range. Other BIPs get numbers outside of the range.

Because there is no central authority to assign numbers sequentially :)


How can I tell if my Bitcoin wallet is working? I'm not sure if my Bitcoin wallet is working, is there a way to check that it's ready to go? I'm using Breadwallet for iOS.

breadwallet is a standalone bitcoin client for mobile devices. There is no server which can get hacked or go offline, so you can always access the funds stored on your phone.

Using SPV mode, breadwallet connects directly to the bitcoin network with the fast performance you need on a mobile device.

Since the wallet itself has no indicator for connections and does not synchronize the blockchain, I would suggest that you use a very tiny amount of Bitcoin and send it in a micro transaction to your breadwallet to test if you are set up and connected.

By the way, did you backup your wallet yet?

If it's connected and synced, you're ready to go.


What advantages and disadvantages does Ethereum have over Bitcoin? What advantages and disadvantages does Ethereum have over Bitcoin? What can you do with Ethereum that you simply cannot with Bitcoin? What price do you pay for these additional functionalities?

I'll answer the middle question from the White Paper. Bitcoin can allow simple scripting and a weak version of smart contracts. The scripting that you can do has these limitations (quoting from the white paper, where UTXO means "unspent transaction outputs")

  Lack of Turing-completeness - that is to say, while there is a large subset of computation that the Bitcoin scripting language
  supports, it does not nearly support everything. The main category
  that is missing is loops. This is done to avoid infinite loops during
  transaction verification; theoretically it is a surmountable obstacle
  for script programmers, since any loop can be simulated by simply
  repeating the underlying code many times with an if statement, but it
  does lead to scripts that are very space-inefficient. For example,
  implementing an alternative elliptic curve signature algorithm would
  likely require 256 repeated multiplication rounds all individually
  included in the code.

  Value-blindness - there is no way for a UTXO script to provide fine-grained control over the amount that can be withdrawn. For
  example, one powerful use case of an oracle contract would be a
  hedging contract, where A and B put in $1000 worth of BTC and after 30
  days the script sends $1000 worth of BTC to A and the rest to B. This
  would require an oracle to determine the value of 1 BTC in USD, but
  even then it is a massive improvement in terms of trust and
  infrastructure requirement over the fully centralized solutions that
  are available now. However, because UTXO are all-or-nothing, the only
  way to achieve this is through the very inefficient hack of having
  many UTXO of varying denominations (eg. one UTXO of 2k for every k up
  to 30) and having O pick which UTXO to send to A and which to B.

  Lack of state - UTXO can either be spent or unspent; there is no opportunity for multi-stage contracts or scripts which keep any other
  internal state beyond that. This makes it hard to make multi-stage
  options contracts, decentralized exchange offers or two-stage
  cryptographic commitment protocols (necessary for secure computational
  bounties). It also means that UTXO can only be used to build simple,
  one-off contracts and not more complex "stateful" contracts such as
  decentralized organizations, and makes meta-protocols difficult to
  implement. Binary state combined with value-blindness also mean that
  another important application, withdrawal limits, is impossible.

  Blockchain-blindness - UTXO are blind to blockchain data such as the nonce, the timestamp and previous block hash. This severely limits
  applications in gambling, and several other categories, by depriving
  the scripting language of a potentially valuable source of randomness.

Ethereum is designed for contracts and in fact implements a Turing-complete virtual machine on the blockchain.

I Hope this primer guide helps

http://blockgeeks.com/guides/what-is-ethereum-a-step-by-step-beginners-guide/

  At its simplest, Ethereum is an open software platform based on
  blockchain technology that enables developers to build and deploy
  decentralized applications.

  Is Ethereum similar to Bitcoin? Well, sort of, but not really.

  Like Bitcoin, Ethereum is a distributed public blockchain network.
  Although there are some significant technical differences between the
  two, the most important distinction to note is that Bitcoin and
  Ethereum differ substantially in purpose and capability. Bitcoin
  offers one particular application of blockchain technology, a peer to
  peer electronic cash system that enables online Bitcoin payments.
  While the bitcoin blockchain is used to track ownership of digital
  currency (bitcoins), the Ethereum blockchain focuses on running the
  programming code of any decentralized application.

  In the Ethereum blockchain, instead of mining for bitcoin, miners work
  to earn Ether, a type of crypto token that fuels the network. Beyond a
  tradeable cryptocurrency, Ether is also used by application developers
  to pay for transaction fees and services on the Ethereum network.

  What is a smart contract?

  Smart contract is just a phrase used to describe computer code that
  can facilitate the exchange of money, content, property, shares, or
  anything of value. When run on the blockchain a smart contract becomes
  like a self-operating computer program that automatically executes
  when specific conditions are met. Because smart contracts run on the
  blockchain, they run exactly as programmed without any possibility of
  censorship, downtime, fraud or third party interference.

  What are smart contract. A beginners guide

  While all blockchains have the ability to process code, most are
  severely limited. Ethereum is different. Rather than giving a set of
  limited operations, Ethereum allows developers to create whatever
  operations they want. This means developers can build thousands of
  different applications that go way beyond anything we have seen
  before.

  What is Blockchain Technology? A step-by-step guide than anyone can
  understand

  The Ethereum Virtual Machine Before the creation of Ethereum,
  blockchain applications were designed to do a very limited set of
  operations. Bitcoin and other cryptocurrencies, for example, were
  developed exclusively to operate as peer-to-peer digital currencies.

  Developers faced a problem. Either expand the set of functions offered
  by Bitcoin and other types of applications, which is very complicated
  and time-consuming, or develop a new blockchain application and an
  entirely new platform as well. Recognizing this predicament,
  Ethereum’s creator, Vitalik Buterin developed a new approach.

  What is Blockchain Technology? A step-by-step guide than anyone can
  understand

  Ethereum’s core innovation, the Ethereum Virtual Machine (EVM) is a
  Turing complete software that runs on the Ethereum network. It enables
  anyone to run any program, regardless of the programming language
  given enough time and memory. The Ethereum Virtual Machine makes the
  process of creating blockchain applications much easier and efficient
  than ever before. Instead of having to build an entirely original
  blockchain for each new application, Ethereum enables the development
  of potentially thousands of different applications all on one
  platform.

  What can Ethereum be used for? Ethereum enables developers to build
  and deploy decentralized applications. A decentralized application or
  Dapp serves some particular purpose to its users. Bitcoin, for
  example, is a Dapp that provides its users with a peer to peer
  electronic cash system that enables online Bitcoin payments. Because
  decentralized applications are made up of code that runs on a
  blockchain network, they are not controlled by any individual or
  central entity.

  What is Ethereum? A Step-by-Step Beginners Guide

  Any services that are centralized can be decentralized using Ethereum.
  Think about all the intermediary services that exist across hundreds
  of different industries. From obvious services like loans provided by
  banks to intermediary services rarely thought about by most people
  like title registries, voting systems, regulatory compliance and much
  more.

  Ethereum can also be used to build Decentralized Autonomous
  Organizations (DAO). A DAO is fully autonomous, decentralized
  organization with no single leader. DAO’s are run by programming code,
  on a collection of smart contracts written on the Ethereum blockchain.
  The code is designed to replace the rules and structure of a
  traditional organization, eliminating the need for people and
  centralized control. A DAO is owned by everyone who purchases tokens,
  but instead of each token equating to equity shares & ownership,
  tokens act as contributions that give people voting rights.


Mastercoin vs Quantum Computers Assuming quantum computers become mature enough to effectively crack elliptic curve cryptography of the type used by bitcoin, is Mastercoin secure?

In principle the Mastercoin protocol should be exactly as safe as bitcoin (which it uses as a back end) against the powers of quantum computation.
However, there is one important difference.
bitcoin addresses that were used at least once are not safe against quantum computers (look for example in this article by Vitalik Buterin).
Since all Mastercoins were created by sending bitcoins to the exodus address it follows that any original bitcoin/mastercoin address (by that I mean, the original address from which bitcoins were sent to the exodus address) is not quantum safe.

Should we worry about it? probably not. Quantum computer attacks against bitcoins are not expected in the near future and even if they were here tomorrow it is more likely that attackers use them against bitcoin directly. Hopefully by the time this issue becomes relevant we all have nice mastercoin clients we can use to easily transfer out funds to a never-used-before address which is quantum safe.

Quantum is currently not mature as it requires helium to follow up so should be safe at this moment.


What is the bitcoind command to see how much btc a specific address has? I was wondering if I can make a query via the console on how much btc a specific address has without having to go into blockchain.info. What is this command?

There is no such command. Addresses are like a superstructure over a bitcoin transaction processing. Client does not maintain index with addresses and balances on them.

There is no command in bitcoind to view the balance of a single wallet. Your best luck is setting up a script with cURL that gets the data from api.


Blockchain to store private data and ownership As far as I know Bitcoin Blockchain can be accessed via API to enter data.
In this case I want to generate a hash/ Checksum MD5, that cannot be understood by anyone that doesn't have the private key, and store it blockchain.

Give to the client the ID of the blockchain's record where hash is stored and the private key of the hash, would be ok, to ensure the ownership, immutability, and also the privacy of the stored data (a hashed .pdf file mostly)?

Thanks!

I think these links should be more useful for you than direct answer

http://www.cryptograffiti.info/
https://app.originstamp.org/home
https://bitcointalk.org/index.php?topic=1023190.0
https://github.com/petertodd/python-bitcoinlib/blob/master/examples/publish-text.py
http://www.righto.com/2014/02/ascii-bernanke-wikileaks-photographs.html


How can I change BTC into normal cash? Can you eventually hold the bitcoins in your hand, like real cash dollars or euros or something? If so, how?

I've gone through all the service previews and introduction videos (actually, a video), and didn't see anything about this particular point.

I don't have a credit card, and I'm in a country where banking services aren't so profound and  people don't use credit cards (Libya). Does a Bitcoin account rely on having a credit card, and will the coins you gather be added to your bank account?

Bitcoins are a purely electronic currency. If you want to sell them in exchange for dollars or euros, you can do that. But as Bitcoins, they exist purely electronically. There are physical Bitcoins but basically, they're just the key to an electronic account printed in some form.

I think you're missing the concept that Bitcoins act like a currency or commodity. You can have 10 Bitcoins just like you can have 10 ounces of gold. The key difference is that the Bitcoins exist electronically rather than phyiscally. If you have Bitcoins and want dollars, you have to find someone who has dollars and wants Bitcoins, then you exchange with them.

Bitcoins are not a payment or fund transfer system for national currencies like PayPal and Western Union are. Bitrcoins are a currency that has an efficient built-in transfer system.

The article Bitcoin Funded Debit Cards might be useful to you.


What provably fair Bitcoin gambling sites work well on a mobile? Are there an Bitcoin-based gambling sites or apps that work on a mobile?

Most of the sites seem to be assuming the player is on a full size display.

If the service isn't considered "provably fair" then I'm not interested.  An example of a provably fair game is one where the host gives the hash of the secret, then a client seed is generated, then after play at some point the secret that was used is revealed.

Provably fair means the player can prove the operator didn't cheat.  With website-based provably fair systems, the generation of a random number and/or client seed is easily to see and monitor.  Unless a mobile app is open source, this same capability is not available.

So a provably fair website that provides an app doesn't mean the app provides provably fair online gaming as well.   An open source app could be provably fair.

You won't find any of (or at least not many of) these apps on the Google Play store since they are online gambling that is a prohibited app on their service.  But the apps can still be installed from external sources:

Seals With Club poker has a mobile app.
Bitcoin Video Casino has an Android app.

DoubleDownBTC has a mobile friendly version and looks great on iPads or phones.  The problem with most native apps is the legal grey area of Bitcoin gambling.  There are some self published android apps out there, but I'm a little nervous about malware, etc.  The mobile optimized websites seem like a better choice.


Which alternative currencies might experience a sharp rise in popularity like bitcoin recently did? Simple question for newbies. Which other alternative currencies (crypto and others) are possible candidates for a surge in popularity?

Is there any reason that bitcoin will always dominate the alt currencies or is it just one of many contenders waiting to be discovered by the masses any day now?

there is no real way to predict where the market goes. Therefore it is a question without an answer.

The part about bitcoin surge is just a question of supply and demand. bitcoin doesn't really have a value. the value lies in the demand from people hoarding or spending them and the supply from miners and/or brokers. It is now in high demand so it's high in price.If by popularity you mean a hyper deflation. Well then yes. bitcoin will probably always dominate the others.

If anybody could answer that question, they would be too busy buying up every last coin of said currency.


What happens to transactions included in extinct or invalid blocks? I have read that a block contains several transactions.

An attacker can forge fake a block.

The blockchain is safe because the system will choose and keep the longest chain.

So the fake block will be lost.

This is great but what happens if my transaction was included in the fake block?
Let's suppose I am buying a car. Should I wait for 6 confirmations to be sure? That would mean that I have to wait one hour!

what happens if my transaction is in the fake block?

It is also in the memory pool (mempool) of pending transactions at other nodes run by more honest people and will be included in a new and valid block in the normal way.

  Let’s suppose I am buying a Tesla car. Should I wait 6 blocks to be generated to be sure? But I have to wait 1 hour!

Yes.

There are faster payment methods for Bitcoin - e.g. Lightning Network (LN) and arguably perhaps escrow services. But they have their own trust model and characteristics you need to understand when using them.

The fake block is ignored and you have to wait until the next block, 2 blocks, 4 blocks, or 6 blocks, depending on how many confirmations the miner wants to be mined. But, if you are using Lightning, this can't happen unless you are taking out of lightning. The invalid block will not be added. If the miner will mine your block (ignoring other factors such as transaction fee, willingness of miner to fill block fully (this is not a problem anymore), average block time (if the difficulty hasn't changed recently enough, only really a problem if it goes down, it would help if it's predicted to go up), and the number of transactions sitting already), there is already a 62% chance that the confirmation will happen in 10 minutes. Although you have to wait, just be patient.


How to claim BTG from an Electrum wallet? Claiming BTG after the Fork did not work

I have tried :
using Coinomi wallet,this way.

I could not locate the address holding eligible for BTG value.
All addresses i tried was contained no fund.
In the history tab i could not spot the addresses details.

Try this: Claiming my BTG from my BTC private key
Worked for me

To know where your BTG are use this explorer: https://bitinfocharts.com/bitcoin%20gold/

bitaddress.org will not accept electrum private keys, saying invalid key version 133 not supported.

electrum only gives one private key per address.

"This is independent of the wallet you are using, and you should be able to export it, all wallets allow it" - don't think electrum does this. at least I cannot find a way.


"offline" blockchain querying library Is there a library which provides all the same address/transaction querying information as blockchain.info, depending only on having a bitcoind synchronised database?

There are a number of queries which bitcoind cannot answer. For example, bitcoind only indexes transactions which are unspent.

I realize blockchain.info has a public API, but it isn't an option for us to use this. I doubt they'd want us to spider the entire blockchain over their API anyway.

You should take a look at Abe:

Abe: a free block chain browser for Bitcoin-based currencies.

Abe reads the Bitcoin block file, transforms and loads the data into a database, and presents a web interface similar to Bitcoin Block Explorer or Blockchain.io.

Not to mention it was written in Python.

Apparently, you can force bitcoind to index spent transactions. More information here.


Is it possible to create an address from a predefined private key? I was not sure how to formulate the question title. What I want to achieve is the same as VanityGen and many other tools do to create an address starting with a predefined part, but with private keys.

So basically I want to create a Bitcoin public/private key pair of which the private key begins with a string I define.

Are there tools that already do this? If not, is it possible? How should it be done theoretically?

You can choose the private key to be whatever you want, and calculate the corresponding public key and bitcoin address.
Adding to this answer, there is really no reason to want to do this. But if one really insisted, here is a way to do it with hal. First start with generating a random private key
$ hal key generate
{
  "raw_private_key": "7019c07716861030e9334b88c24ee595b6fd922514a13de812e36cf6f910a898",
  "wif_private_key": "KzycuDEqJaMyjHWJDD9cdyPeH1rtCTgE5m1EHfCdnTs4ng2D43Bt",
  "public_key": "02260106e42d7aef51b92c6c4aa2d0a5a6f3e0c6ad68ee9fadd8bd50d8cbe1a0b4",
  "uncompressed_public_key": "04260106e42d7aef51b92c6c4aa2d0a5a6f3e0c6ad68ee9fadd8bd50d8cbe1a0b4349d9106ee1724cf51c954e6aec9522febd7fcb46d7248a0ce390810fc0ac6a0",
  "addresses": {
    "p2pkh": "1J6wqBd7QVGt7vGCNfUShoDEwQg2LFTgRR",
    "p2wpkh": "bc1qhwvl6yyrtheep7rmsxmf536m45dzfz4wrxdacu",
    "p2shwpkh": "3QLdovvKokkyiyX3jTzgfaMCv9MiaoVW5C"
  }
}%

Then change the beginning of the raw private key to deadbeef or whatever you want
7019c07716861030e9334b88c24ee595b6fd922514a13de812e36cf6f910a898
->
deadbeef16861030e9334b88c24ee595b6fd922514a13de812e36cf6f910a898

Then get the address for it
$ hal key inspect deadbeef16861030e9334b88c24ee595b6fd922514a13de812e36cf6f910a898
{
  "raw_private_key": "deadbeef16861030e9334b88c24ee595b6fd922514a13de812e36cf6f910a898",
  "public_key": "02de9367c92d7a42953e1afdf74d509d3992ba78bfb93f448859a1557e2685ca60",
  "uncompressed_public_key": "04de9367c92d7a42953e1afdf74d509d3992ba78bfb93f448859a1557e2685ca60b142aa0a4f495e16f80f811ec4556e3d33be28c930fab6e6a051e9a5bdc91d52",
  "addresses": {
    "p2pkh": "1BhftRM4fNZRYdDYMUdujq9C84bRX84Qf8",
    "p2wpkh": "bc1qw439kmezxvdff0hnalmeqvfsnttd9gkjux5rct",
    "p2shwpkh": "34KVR36eoQrf48bmjQ46JU5dGVg1gqdUFg"
  }
}%

The most common way is to create the public address, compressed or uncompressed from a hex value, through the elliptic curve, hashing and so on.
Please check this awesome web to see the whole process and with different options to start: link
And if you like to check python code to see the whole process: here


What happens if an exchange's order book has only Market Orders If a bitcoin exchange offers Market Orders, let's suppose there are X buy orders at market price, and Y sell orders at market price  (no limit orders):

How are these matched and at what price, since there is no "lowest or highest" price currently on the order book?

This situation would not exist. True market orders (buy or sell) cannot just "hang" around. If they are not executed immediately against existing limit orders, then they should be cancelled. The case in which they would not be executed would be if there are no orders on the other side. In which case it depends on how the system handles the orders but it should either say it can't fill it and never place the order to begin with.

Contractually, the market BUY order had no SELL (ASKs) to trade against.  So that order remains unfilled.

At the same time the market SELL order had no BUY (BIDs) to trade against.  So that order also remains open.

And they remain open until either cancelled or until a limit order arrives.


Why do some transactions take minutes and others take hours? I sent some bitcoins to an address and then looked on blockexplorer and it was there in about 10 minutes, which is what one should expect.

I did another send to a previously unused address and it took hours for the network to acknowledge it.

I contacted the help desk at Mt Gox and they said this happens fairly often.  My question:  Is this a known phenomena and if so what causes it?

Four factors affect this:

1) The size of the transaction. Smaller transactions get a lower priority. Abnormally small transactions look like spam.

2) The transaction fee. Abnormally low transaction fees may mean the transaction isn't even relayed. Miners have an incentive to include transactions with higher fees.

3) Luck. Some miners don't include any transactions. Some don't include any transactions without fees, even if the fee would normally be zero. So it comes down to who mines the next block or blocks. Also, 10 minutes is just the average. You could create a transaction and then by sheer bad luck the next block isn't mined for 20 minutes.

4) Security. The client 'dribbles' out its own transactions rather than broadcasting them to try to conceal the origin.

Simple (and please do correct me if I am wrong):

MtGox send their bitcoin network transactions via Eligius with no fees.

So you are at the mercy of that one pool finding a block and ensuring your transaction is included in that block.

Therefore transactions sent from MtGox do not fairly represent the experience of the majority of transactions made via the bitcoin network (which is your transaction should make it in to the blockchain in 10 minutes or less, on average).


Would it be possible to make a functional Bitcoin fork that confirmed a block of transactions every millisecond? How fast could you possibly run a blockchain like bitcoins'? Could blocks be added as fast as a microsecond while still having a functional currency?

You couldn't make functional Bitcoin-like fork with that fast of block mining. There is a tradeoff between speed of block creation and consistency of the network. In Bitcoin the blocks are created infrequently enough that the entire network can agree on the canonical blocks quickly and transactions can propogate quickly enough of that they tend to get included in blocks fairly quickly (assuming that miners aren't ignoring them due to low/no fees).

If a fork aimed for a block generated a millisecond that would imply that network latency would result in thousands of blocks happening before you could even see the first one. In Bitcoin there are occasional forks of the blockchain due to propagation delays, but they are very quickly resolved by the network. A fork with millisecond blocks (and a large user base) would certainly have thousands of competing forks at any given time, and it would take tens of thousands, maybe even millions of confirmations before it became clear that a fork was dominant. (By which time, there would be thousands of forks of that fork.)

Plus, even without any transactions, each block has a minimum size of overhead, so the size of the blockchain would be growing at an outrageous rate. The same would apply to network bandwidth: the amount of chatter between the nodes would be outrageous: none of the nodes could keep up with the volume. Especially given that the volume would have so much duplication between all of the competing forks of the blockchain.

As Colin Dean points out, Litecoin has established a 2.5 minute target. So changing the target block generation speed is possible. But every time you go lower, the overhead and consistency gets harder.

What's the theoretical maximum? It's hard to say since so much depends on how globally distributed and large the network is. My wild guess, given current technology: anything much less than a minute would have a lot of forks and a lot of overhead. Anything less than a few seconds would almost certainly fail to achieve any kind of stable consensus about the blockchain.

Litecoin is an alternative to Bitcoin that has as a feature a greatly reduced average time of 2.5 minutes between blocks instead of 10 minutes.

Thus, it is possible to create a fork of the Bitcoin protocol that accelerates block frequency.

However, it is not possible to accelerate this block frequency within the canonical Bitcoin protocol without accelerating the hash rate. The difficulty factor acts to counter this acceleration, though, so the acceleration would only be worthwhile for up to two weeks, the average time between automatic difficulty adjustments.


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

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

The ones that I know are:

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

The standard list of operations for scripts are actually within the bitcoind source-code which you can find here: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp#L90

To understand which ones are actually implemented and used, you'd have to read the source-code.

So no, there's no standard for this. The standard is the actual bitcoind program.


Is a 20% fee normal right now? I'm not an expert with BTC or other cryptocurrencies but It was a pleasant way to do some micro transactions and to deal with some vendors.

My question is, why the hell an average Fee is around 20% of the transaction? THIS IS HUGE.

Is anyone still using BTC? Maybe I'm doing something wrong here but after some checks on https://bitcoinfees.21.co/ and blockchain it seems that those are the real fees and people just keep paying them. Why?

Screenshot: http://take.ms/muElO

It's misleading to look at transaction fees as a percentage.  Bitcoin transaction fees are based on the size of the transaction in bytes, regardless of the value being transacted.

According to the site you linked,

  The fastest and cheapest transaction fee is currently 0.0000042 BTC/byte, shown in green at the top.
  For the median transaction size of 226 bytes, this results in a fee of 0.0009492 BTC.

If you are trying to send BTC 0.005, then yes, that is about 20%.  If you are trying to send BTC 0.5, then this will correspond to a fee of about 0.2%.  For comparison, credit cards typically have a fee of around 3%.

  Is anyone still using BTC?

Obviously yes.  Transaction fees are based on supply and demand - the network only allows so many (bytes of) transactions in each block, so fees are effectively bidding for space in a block.  If "nobody" was using Bitcoin, you would see fees become very low.

Note that there are several current proposals for increasing the block size, or otherwise allowing a higher volume of transactions on the network.  If and when any of those take effect, fees should come down.

  Maybe I'm doing something wrong here but after some checks on https://bitcoinfees.21.co/ and blockchain it seems that those are the real fees and people just keep paying them. Why?

Because paying a high fee to spend Bitcoins may still be better than not spending them at all?

See also Is it normal to not "own" your bitcoins? Are 6% transaction fees normal?

Unfortunately the fees are growing these days and now we can't even buy a cup of coffee because the fees will be half the price of a coffee itself. The more people using bitcoin the higher the fees.


(Why) is it difficult to merge and split wallet.dat? It is a common question, how to sync a wallet across different devices.

As far as I understand, a wallet is just a collection of private keys. Each private key can be uniquely identified using the bitcoin address associated with the key. Thus, why don't we think of wallet.dat as if it was a directory:

Filename     File Content
=Address     =Private Key

1HB5XMLmzFV  8ALj6mfBsbifRo
...          ...

Now, syncing such a directory is trivial. If the filename (address) matches, the file is identical and does not need to be synced. If a filename is only present on one side, just copy the file, it's a new address.

Is something like this going to be implemented in a future client version? Or is my idea faulty?

The ability to import and export keys is in the works, with several forks in the Github project trying out various methods. One of them will eventually be selected and make its way into the official client. Until then we're reliant on tools like pywallet to import and export keys.

As for the directory concept, the wallet.dat file stores this information in a BerkeleyDB format, as well as a transactions list. I can see the potential benefits, though there are likely downsides that I've not considered and I'm certainly not qualified to speak to the mindset of the developers. Perhaps you'll get lucky though, at least one big name from the Bitcoin devs has been known to frequent these parts.

The huge missing feature of pywallet is that you can't import many keys at once (which is strange since it can export many keys at once).


Converting satoshis to bitcoins issue using PHP I am having PHP calculation problems (I think - i am reasonably new to PHP).

I am using

function convertToBTCFromSatoshi($value){
    $BTC = ($value / 100000000 );
    return (float)$BTC;
}

If $value = 10000 the result is correct of "0.0001"

Yet if $value = 5000 the result is "-5.0E-5"

Any ideas please :-)

You really should not use floating point math for precision decimal values.  It is a little-regarded truth of computer programming that when you're dealing with money you should avoid the usual IEEE floating-point math like the plague.

This is the reason why Bitcoin transactions store values as 64-bit integers.  Because storing them as floating point numbers is error-prone.

For example, in your interactive PHP shell you can do something like this to find out where your math begins to break:

php > echo 10000.00000001 * 2;
20000.00000002
php > echo 100000.00000001 * 2;
200000.00000002
php > echo 1000000.00000001 * 2;
2000000

I'm running 64-bit PHP, too.  If you are running 32-bit PHP the situation becomes pretty dire.

The take-away here is that overall precision of floating point numbers is limited.  The bigger your number, the fewer meaningful decimal places it can have.

The correct way to address this problem is to use PHP's BC Math functions.  You keep your data as strings, and BCMath will let you perform arbitrary-precision computations.  It isn't as fast as floating point math, but it isn't exactly slow either.

/** Convert Satoshis to a string that can be displayed to users.
 *  input: $value Integer or string that can be parsed as an int.
 *  output: string (eg: "1.00400000")
 */
function convertToBTCFromSatoshi($value){
    return bcdiv( intval($value), 100000000, 8 );
}

If you want to trim the zeros from the end of the output, you can use the trim() function:

rtrim($value, "0"); // trim zeros from the right-hand side

Easiest way

sprintf('%.8f', $amount); // 0.00000000


Multibit wallet says my balance is unconfirmed, even though I've not sent a transaction in months I haven't sent any transactions for months, but my Multibit HD wallet says my entire balance is unconfirmed. I've used Wallet > Repair Wallet several times. I've close it and opened it. There is only about 1% of the balance confirmed, and it changes each time I repair the wallet.

I see that very old transactions from 2015 are showing as unconfirmed (but they are).

I tried to install version 0.1.1 and that restored the balance, but the highest fee possible is 10,000 satoshis/KB and the current fees are 400,000 satoshis/KB so I cannot send any transactions with it.

Multibit 0.5.1

OK found a way! It cost me $8 and four days to switch wallets! WTF?

Install Electrum bitcoin wallet. https://electrum.org/
Go here and save the web page to disk: https://iancoleman.github.io/bip39/
Download, install, & start TOR browser. https://www.torproject.org/ We are using TOR because it is made for anonymity and privacy, and doesn't keep cookies, storage, cache, etc. We are going offline, but a Javascript page can store data in your browser so next time you visit, it can send your secret info back. If you are not worried and think you'll just use a private browser session, look up permanent cookies and see how creepy your browser is when it comes to protecting your data.
Open the web page you saved in TOR browser. Turn on Javascript.
Start Electrum, create a new wallet, and select Import Private Keys. Wait at the input box.
Unplug your network cable, and disable your WiFi network connections.
Input your Multibit seed words into the BIP39 tool. Select BIP32 tab, and MultibitHD for client.
Scroll down and view the addresses generated. Verify the addresses match the addresses in Multibit, starting from the earliest to latest.
Copy & paste all of the private keys from the private key column. Yes, you will have to freakin' copy & paste like 20-100 keys depending on how much you have been using Multibit! (Oh it get's worse!)
These are only the original keys. Whenever you send a payment, you get change to a 'change address'. Those are not listed! If you have sent any payments, you need the change address keys also. To get the change address keys, read the following.

https://www.reddit.com/r/Bitcoin/comments/6btevz/how_do_i_import_my_12_breadwallet_seed_words_into/dhqvy31/?context=3

  If you use the BIP39 tool that I linked, put your seed in and go to the BIP32 tab, in the "client" box change it to "custom derivation path" and start with m/0'/0
  You should be able to manually go through addresses and get private keys by changing the path. (example: m/0'/0 --> m/0'/1 --> m/0'/2 and I think change addresses are probably m/1'/0 --> m/1'/1 --> m/1'/2 --> etc.)

However, the change addresses are m/0'/1 not as mentioned above.
Change the Client to Custom, and change the BIP32 derivation path to m/0'/1.
Verify the change addresses match. To find the change address, open the first transaction where you sent, view the transaction on BlockExplorer blockchain.info, and see which address the excess change went to. This is one of your change addresses. You can verify as many as you want but more than likely if the first matches the rest do.
Now repeat the copy & paste of the addresses private keys into Electrum.
Click Next on Electrum and enter a password. You must encrypt your wallet or else the private keys are in plain text on your disk!
Close TOR browser with the BIP39 tool.
Plug in your network cable and turn on your WiFi network adapter.
Electrum will synchronize and show your balance.
Go to File > New/Restore and create a new wallet, with new seed words.
Write down your seed words.
Send your bitcoins from the old wallet to the new wallet. The fees will be high due to many inputs!

I saw few of your post with multibith and I had the same problems.
First you need to restore your wallet from wallet words and it will be nice if you upgrade your wallet.


Is there any chance to check the name by bitcoin hash? Someone recently wants to sell me an iPhone, but the seller does not want to show me anything about it. It's a second-hand phone, and I'm worried about it a little bit. Is there any chance to see the information about the seller from bitcoin hash?

No, that's not possible. Bitcoin is pseudonymous. In all likelihood, you will be sent an address which never had any activity on it before. You can't find any relation between that address and the real world (including activity on the blockchain) until a transaction sending money to that address is published. Even if you knew the person who gave you the address, you wouldn't know for sure whether it belongs to them (but you'd of course assume it because why would they give you an address of a different person or one which belongs to no one). They can prove that it belongs to them but they can't prove that it doesn't and you as someone it doesn't belong to can't proof they own it nor that they don't.

no. it is not possible to know your name but indirectly they can keep record the track of your bitcoin transaction as each and every transaction is recorded in a public ledger


How are 'Not Mineable ' cryptos able to verify transactions? NEM, Stratis, BitShares are 'non mineable' cryptocurrencies.

How do they verify transactions if there are no miners? Maybe nodes only? Or... what am I missing here?

I ask because I assume with a non mineable currency I believe miner fees, aka transaction fees, would be super low. Transactions would also clear faster. Like Ripple. Takes about 10 seconds to transfer XRP.

I'm not sure about Ripple, but I know IOTA specifically uses each transaction to confirm the transactions around it. So instead of a dedicated miner, each user is essentially a "miner" for the short time they are making a transaction.

As far as I understand Ripple, every transaction you make you do the work to send and receive, which is like self serve supply the compute power required.


How can I send Bitcoins via SMS? I am considering working on giving Africans access to trade using Bitcoins.

In many ways, parts of Africa is more developed when it comes to mobile payments than the west. The success of M-PESA confirms this. Their security is based upon a special SIM card (see Step 1 in this getting-started guide).

My question

Would it be possible to set up a service where one could send and receive Bitcoins securely via SMS? An additional condition to this question is that the SMS could be sent from a good old crowbar mobile phone without any access to a computer to perform encryption. One should also notice that postal services in these countries should be considered insecure.

Motivation

My motivation for this project is the heavy costs involved with making an overseas transaction to an individual in Kenya, because M-PESA only accepts transactions from oversees using Western Union. This is important because I know that there are huge flows of money going from Africans (and more so Asians) in Western countries to their family-members at home.

Additional points

It should be noted that one can send SMS for free amongst others to Kenya via Google SMS. Their only condition is that the receiver responds to the SMS occasionally in order to avoid it getting used for spam.

Currencies in some African countries are very unstable (for example in Zimbabwe), so the Bitcoin currency could maybe be considered a "hard currency" compared to the local ones.

Just an account on http://phoneco.in/  because thats exactly what the service does.  [Update: Phoneco.in is defunct.]

Update: A new service as well to check out. http://dialcoin.com/ [DialCoin's site is up yet but has suspending service.]

http://www.37coins will work. Presently there are 37coins text gateways in over 14 countries for sending/receiving bitcoin by text (SMS) and more can be added if you have an extra cell phone. See their site on section about adding a gateway. Using the system is easy. You can open a wallet by texting your cell phone number to the appropriate gateway in your country. Once you have a wallet you can follow the short text prompts listed on the site to send bitcoin to your wallet and you can withdrawl (send) bitcoin via text to another bitcoin wallet. You can do this without a browser, internet connection or smart phone. You can use an older version cell phone and its texting capabilities.


What benefit does bitcoin provide over using a credit card? I am brand new to Bitcoin. I am retired investor.

What benefit would using Bitcoin have over, say, using a credit card, etc.? It appears that Bitcoin is primarily designed for businesses, buying, selling, and using Bitcoin as the exchange medium.

I saw a chart which showed the Bitcoin/USD value at approximately $32 and then dropped to $2 and now is back around $15 as of August 18, 2012.

I don't consider these to be competitors.

Credit cards are a convenient way of doing payment processing on top of fiat currency. Bitcoin is a digital currency on itself.

Sure, Bitcoin today can function as a very rudimentary way of doing payments (just like cash-via-mail can be), but it's not particularly good at it - all it provides is storing and transferring value. What I hope is that in the future it will become a platform upon which payment processors can build. Since the currency is already inherently digital, building a payment platform on top of it should be significantly easier. Furthermore, since it is decentralized, everyone has the ability to become their own payment processor (or bank...).

There are countless reasons why you should choose bitcoin over credit cards. Some are the following: 1) No Paperwork Involved-it does not ask for any identification information unlike credit cards wherein you’re required to input your address and contact details., 2) It’s Quick and Easy--generally confirmed within an hour or less, 3) Irreversible Transactions-only payment method that is 100% irreversible and cannot be charged back., 4) You can carry it anywhere-BTC can be store either in your desktop of smartphone; just scan the QR code and you are good to go.

Source: Bitcoin’s Advantages over Credit Cards--http://bitcoindaily.com/bitcoins-advantages-over-credit-cards/"


Stores that accept bitcoins & Alternatives to Bitmit? Are there stores that accept bitcoins?
In particular, are there alternatives to the ebay-like website Bitmit?
Bitmit has shut down, and I am looking for an alternative.

Sure, plenty of places accept bitcoin.

Here are a few links:

https://www.spendbitcoins.com/places/ - General list.
https://en.bitcoin.it/wiki/Trade - General list.
http://www.gyft.com/ (enables you to use giftcards at major retailers, from your phone and paid in BTC.)
http://coinmap.org/ for local places accepting bitcoin.
http://www.foodler.com for dinner.
https://www.bitcoinstore.com/ for electronics.
https://www.corkket.com/ for selling locally.

If you're looking for a Bitcoin auction site, like BitMit was, try http://www.halfpricedigital.com


blockexplorer is not fully synced I am working with a cryptocurrency which is a fork of bitcoin. In my blockexplorer it shows 91% synced and I cant see any latest blocks.

Does the GUI of the daemon show that you are connected to inbound peers?

If it does, you may have to do a re-sync of the blockchain from scratch. It's happened to me before.

Not sure which crypto you're using, but I'd try backing up your wallet.dat files, you can save a copy of the blockchain database as well if it's huge and restore it later just in case.

But back up your wallet files, then do a fresh install, re-sync the blockchain, and see if it gets to sync status. Then open your wallet files.


Coinbase, Bitpay and Bitcoin Core A website shows their services can be purchased via Coinbase and Bitpay.

I searched for information and found Bitcoin Core from bitcoin.org/en/choose-your-wallet and I think it is very popular among tens of wallet platforms.

What is the difference between Coinbase and Bitcoin Core? Is there any thing one can do but the other can not?
If I used an account with Bitcoin Core, will I be able to purchase their services?

There are also Dogecoin, Blackcoin and etc accepted by that company. What made people buying these new kind of coins rather than using Bitcoins?

Coinbase.com is a company that buys and sells bitcoins, as well as offers a service to manage your bitcoins for you, much like a bank manages your USD for you.

On the other hand, Bitcoin Core is a software that allows you to manage your bitcoins yourself. Bitcoin Core is not a company, so you cannot purchase any services from them.

Try Circle Pay if you are residing in US https://www.circle.com
This service costs nothing and it does not need much information of yours to run

Circle Internet is the brainchild of Fintech on their path to disrupt legacy payment platforms

With circle you accept/send fiat or cryptocurrency via email, text, hash and it stays in the currency of your choice USD or BTC. For example we worked together on a project in France and now we are back in the US but you are in NY and I'm in LA. I still owe you for a tab you picked up. With circle I can send you the the money via BTC blockchain and it will still come out as fiat on your side..amazing dont you think...oh yeah.. no fees and connect to your US bank seamlessly.


Is there any benefits to a distributed computing architecture outside of cryptocurrencies? I was recently talking to a German start-up that was in an accelerator programme. They are building a product which is a distributed database that they are proposing will have efficiency benefits over companies which keep their data on their own centralized database. They talked about leveraging the computational capacity of different computers in the company to increase efficiency. From what I know about distributed computing, it is more inefficient than having a centralized architecture. Are there scenarios where it provides some efficiency benefits and is this being applied?

The only systems which benefit from being distributed are ones that display the property of being "embarrassingly parallel", or some approximation of it. Tasks which do not require a significant amount of data to be transmitted between operating systems, or those which don't require a significant amount of coordination fit this description well. Typically anything like a database is poorly suited to being distributed due to the need for overall consistency, which is very difficult to achieve across a distance.

Bitcoin is the opposite of a distributed system at the node level, every participant in the system is expected to repeat the process of validation in perfect accuracy with the hundreds of thousands, or millions of previous attempts at synchronization that have happened before it. As the number of nodes increases, there is no change in the amount of computation done in either direction.

Generally speaking anything claiming to improve efficiency by using a decentralized, or distributed network should be met with skepticism, simply because this is typically an uphill battle that is taken on for other reasons despite its inefficiency, not in an attempt to gain efficiency. To exemplify this, Bitcoin would be most efficient, most usable, and most reliable if it ran on a single server, but that would largely defeat the design brief of being trust-less.

See DWeb, an initiative from Mozilla foundation(?). They have a vision(search engine) for DWeb( for  distributed web)such as:

Problems that we commonly encounter in day to day usage: data sharing between devices(phone needs to connect to laptops when not connected to internet- as they mention on their website). Even to help in reading old versions of a web site.

To preempt internet giants usurping web sites contents, and thereby removing from the internet world any such sites (content) that may have succumbed to darwinism.

Actionable intent for this distributed project:

Stop hate speech
Support net neutrality
Stop censorship, governmental intrusion.

To this end, there is the beaker project, a distributed web browser, an experimental browser that enables peer to peer browsing, and distributivity. This project may just be the start of something, as it allows for better person-to-person (read peer to peer) information sharing, and thus enabling distributed computing, as sharing(media, content,etc) is done on on a peer to peer basis.

A file system or database is the underpinning of distribution, and such efforts, only
start in that direction. If for instance, peer to peer sharing in an environment that has
established rules - this could be enforced by a hypermedia sharing protocol such as Dat. An example of p2p sharing

-media from entity X goes to entity Y regularly, so there is ground for distributed sharing, and shared resource allocation, a distributed browser could enable such distribution.

Data could be stored locally on your computer- just shared by people on the p2p network.
For more Beaker’s decentralized browser, sans blockchain!


Are wallet credentials really safe? I’m using Copay as my Bitcoin wallet. I see it is opensource with the code available in github. What guarantees that they uploaded binary based on that source code? Does it go through Apple approval? Storing more money in bitcoin, I want to be sure my password / credentials are safe and that the developers are not sending out in a hidden way, via backdoor.

You don't have any guarantee. You are relying completely on the developers to submit the binary application file based on that source. You are also relying on Apple not to manipulate the application binary once it gets to them.

It's no different with Bitcoin Core or any other wallet or software. In all cases you're putting your trust in whoever does the build and the source and tools they use.

One option is to look at the history of the software. If it's relatively mature and has had no faults, either malicious or competency related, then it may be safe to put a degree of trust in it.

Yes,it safe because is not like bank account and no óne can hack it wallet account unless the person share his deatials to someone


How can some exchanges/services afford to pay for customers transaction fees? Some exchanges and services (e.g. CoinBase, Bitstamp) pay for the transaction fees for their customers when the customers send bitcoins from their wallet/account.

They might have tens of thousands of transactions going out of customers wallets everyday. The 0.0001btc fees might add up really quickly and become a large cost to them.

Are they making transactions wait so that they can send to many at once? If they have enough transactions going out this might work as the customer won't feel a few seconds of delay.

Or do they create a unique transaction for each? If so, how can they afford it?

They can avoid the fees in two ways.

First, they can choose to batch multiple small transactions together into a single transaction with multiple outputs.

Second, since they have a large pool of bitcoins, they can more easily form transactions that qualify to be free transactions, for payouts over 0.01 BTC.

The most efficient way to form these free transactions would be to make a transaction that's nearly 1000 bytes, and is sent from inputs that destroy 4 Bitcoin days (e.g. a 4-day old 1 BTC input, or 2-day old 2 BTC input). This will ensure that it meets the priority requirements.

Most of bitcoin exchange hold client funds in their bitcoin address (HOT WALLET). THe trading between member is happen only in WEB VIEW and only by script. Because the real funds is sitting in exchange owned bitcoin address and only transferred to both of trader IF anyone making any withdrawals from the exchange.

Any comment on this statement? Am i right about this?


What can be changed in signed bitcoin transaction? What can be changed in signed bitcoin transaction?
I mean how is possible to modify transaction to change its hash, but keep transaction valid, without need to have sign private keys?

Here is the list of known sources of malleability from BIP62 (which has been withdrawn, and is no longer up to date, but does give some insight):

DER encoded ECDSA signatures Right now, the Bitcoin reference client uses OpenSSL to validate signatures. As OpenSSL accepts more than serializations that strictly adhere to the DER standard, this is a source of malleability. Since v0.8.0, non-DER signatures are no longer relayed already.
Non-push operations in scriptSig Any sequence of script operations in scriptSig that results in the intended data pushes, but is not just a push of that data, results in an alternative transaction with the same validity.
Push operations in scriptSig of non-standard size type The Bitcoin scripting language has several push operators (OP_0, single-byte pushes, data pushes of up to 75 bytes, OP_PUSHDATA1, OP_PUSHDATA2, OP_PUSHDATA4). As the later ones have the same result as the former ones, they result in additional possibilities.
Zero-padded number pushes In cases where scriptPubKey opcodes use inputs that are interpreted as numbers, they can be zero padded.
Inherent ECDSA signature malleability ECDSA signatures themselves are already malleable: taking the negative of the number S inside (modulo the curve order) does not invalidate it.
Superfluous scriptSig operations Adding extra data pushes at the start of scripts, which are not consumed by the corresponding scriptPubKey, is also a source of malleability.
Inputs ignored by scripts If a scriptPubKey starts with an OP_DROP, for example, the last data push of the corresponding scriptSig will always be ignored.
Sighash flags based masking Sighash flags can be used to ignore certain parts of a script when signing.

(1) has been fixed for all transactions by BIP66, and (2)-(6) are prevented by standardness rules in recent Bitcoin Core releases. A specific case of (7) is proposed to be fixed by BIP147.

Segregated Witness (BIP141) proposes fix all of them, but only for transactions that spend  solely from segwit outputs. It does this by moving the scriptSig data to a new field (the witness) which does not influence the txid.

No! The algorithms are generated by the first block created by bitcoin so if you change the hash, the transaction will not be recognized and invalid.


Versions of protocols for BTC and TEST? I'm dorking around with creating a TEST transaction using libbitcoin's bx command.  Besides setting the inputs and outputs, the bx tx-encode sub-command allows one to specify lock_time and version.  Any idea where one can look to find details about what the current version is for BTC and TEST transactions?

You should use TX_VERSION = 1 and TX_LOCK = 0xFFFFFFFF for mainnet and testnet