Liberland: Europe’s Newly Formed Country to Use Bitcoin
Read Full article

http://insidebitcoins.com/news/liberland-europes-newly-formed-country-to-use-bitcoin/31979

On April 13, 2015 the Free Republic of Liberland was officially formed by a group of Czech citizens. The newly formed country of Liberland is a three square mile plot of land between Serbia and Croatia. The President of Liberland, Vit Jedlicka, has confirmed that Liberland will not have an official currency nor a printed currency. The country will however, accept all currencies, both bitcoin and other digital currencies.

The Free Republic of Liberland, or “Liberland”, is only the size of three square miles, situated between Serbia and Croatia. The west bank of the Danube river runs alongside its border. This area between Croatia and Serbia had previously been declared terra nullius or a no man’s land. On April 13, 2015 the land was officially claimed and given its name after the Preparatory Committee declared the new state and raised a flag on location.


That's just bullshit bingo material. They try to get attention by throwing a few buzzwords around. It happens all the time with other terms. Not long until some politician tells a sentence like this:

  I'm expecting exponential, rapid market growth in our big data IoT
  blockchain technology system solution tightly scheduled as a low-risk
  low-cost sales-driven facility revolutionizing the way we think about
  proactive, granular approaches to problems concerning the whole of
  humanity in the digital millennium.

You see, "blockchain" is merely one term in there, composing that bullshit.

Blockchains don't necessarily have to use proof of work but all blockchains contain the entire history of their entries in a way which wastes storage space.

In the case of Bitcoin, that's okay because all of the advantages of blockchains can be used and no better solution is available. But if the data isn't going to be disputed (e.g. because the data is stored by and retrieved from a single entity anyway or because only trusted participants can modify the data), it's just useless.

Banks won't be able to use blockchains because they are centralized entities. They are better off with normal databases. Like relational databases, NoSQL databases, etc. Heck, even just storing files with JSON or even CSV data in them on a file system would be better. And they currently use normal databases. However, they see themselves threatened by Bitcoin as people begin to dislike banks and centralized financial control more and more and Bitcoin subsequently rises in popularity. This is why they write articles, claiming they are researching how they can use blockchains.

If someone has a problem, what they ought to to is to find a solution to it. However, banks take blockchains (which is a solution) and try to find a problem fitting the solution. Not to actually solve the problem but to solve their problem of them losing popularity and trust.

In health care, there may actually be a problem which can be fixed by blockchains. That is, how does a doctor make sure they got all of a patients data with no records having been thrown out because they are unpleasant for the patient but potentially constitute relevant information?

You can imagine a scenario in which all health records of each patient are stored digitally. Each health record has a parent health record, except for the initial one. To add a new record, the record's contents together with the previous record's signature is hashed with a cryptographic hash function and signed by an authority which every day uses a different private key which is then discarded at the end of the day and only the cryptographically related public key is kept and even made public.

It then is impossible to retroactively remove health records from the chain without losing newer records, too.

However, you can easily see how people wouldn't be happy with this and would sue against it. Furthermore, there are obvious problems like people newly entering the system because they used to live in a different country which doesn't use the system.

They may be other uses but right now, most uses of the term "blockchain" other than in regards to crypto currencies are only for the sake of having used a buzzword.

Because it has almost become a tradition to link to this article in such a situation, have the link and give the article a read.


How to get input address and amount from vin using bitcoin core rpc

The address and amount of the sender can be gotten from the 'txid' and 'vout' by using getrawtransaction command. Let's see the example, the vin part of the block is as follows:

"vin": [
    {
      "txid": "0d6cbc21a1b1a3e5df1eae4fc37aa849174b6b727e53f9f505a605f066b7f000",
      "vout": 0,
      "scriptSig": {
        "asm": "304402203f198d9695a293c41d2124e790d473e68f4b35a09ece5517c7adfffc797f91760220304feb1cc2829d3c937665bcb4b7f9735acbcac50e9169bc53c9e689ce20b3bc[ALL] 025743bce4e775bb754e784dd2cfdc8dabc2023154eee539bb155612101a583e7e",
        "hex": "47304402203f198d9695a293c41d2124e790d473e68f4b35a09ece5517c7adfffc797f91760220304feb1cc2829d3c937665bcb4b7f9735acbcac50e9169bc53c9e689ce20b3bc0121025743bce4e775bb754e784dd2cfdc8dabc2023154eee539bb155612101a583e7e"
      },
      "sequence": 4294967294
    },
    {
      "txid": "aac498279d50ee81237d704cb495b243b50def5ecdcb36d9d78f596f73b1d3e9",
      "vout": 1,
      "scriptSig": {
        "asm": "3045022100b763b986b17beddac1ac96c3656fa7af188a28cfacfc87390e1e796b7fdbc0d102201e76f77db6093306028e681e2fe6354ae12649afb5c27c549243b67d505a1bb6[ALL] 0349ebb9d180938ab3a571d8c2e9771fb4fecb9f4484c337bb35d8fd8b48283ca9",
        "hex": "483045022100b763b986b17beddac1ac96c3656fa7af188a28cfacfc87390e1e796b7fdbc0d102201e76f77db6093306028e681e2fe6354ae12649afb5c27c549243b67d505a1bb601210349ebb9d180938ab3a571d8c2e9771fb4fecb9f4484c337bb35d8fd8b48283ca9"
      },
      "sequence": 4294967294
    }
  ]

It means that there are two inputs, the first input is from the "vout" 0 of the transaction "txid" "0d6cbc21a1b1a3e5df1eae4fc37aa849174b6b727e53f9f505a605f066b7f000", the second input is from the "vout" 1 fo the transaction "txid": "aac498279d50ee81237d704cb495b243b50def5ecdcb36d9d78f596f73b1d3e9". Since the vout part of one transaction has address and amount, we can get the input address and corresponding amount.

For instance, let's look the first input:

      "txid": "0d6cbc21a1b1a3e5df1eae4fc37aa849174b6b727e53f9f505a605f066b7f000",
      "vout": 0,

run following core rpc command (note that we need let the server index each transaction to support getrawtransaction, it can be done by add "txindex=1" in the bitcoin.conf)

bitcoin-cli -rpcuser=jun -rpcpassword=123 getrawtransaction "0d6cbc21a1b1a3e5df1eae4fc37aa849174b6b727e53f9f505a605f066b7f000" true

We get following vouts part as follows:

 "vout": [
    {
      "value": 0.01040000,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 af9e84db382823b9c36c40d70090ff81890c5ef5 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914af9e84db382823b9c36c40d70090ff81890c5ef588ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "1H1b9fN7wYYwTSweyPjE7wCGSHuduCcE2o"
        ]
      }
    },
    {
      "value": 147.75014395,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 35f72ce8b9123a055e27be9a0bb723b6cb502419 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a91435f72ce8b9123a055e27be9a0bb723b6cb50241988ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "15vLvDZyAjWCrfWyazMtvHRe8hDJBxXJEC"
        ]
      }
    }
  ],

Then we have the address and amount which are the first part of the vout. It is the first input of our transaction.

"addresses": ["1H1b9fN7wYYwTSweyPjE7wCGSHuduCcE2o"]
"value": 147.75014395

There is a very nice blog about the vin and vout explanation
http://www.michaelnielsen.org/ddi/how-the-bitcoin-protocol-actually-works/


It is unlikely that anyone can help.

Anyone wanting to avoid being traced is likely to follow best-practise: Bitcoin addresses are only used once. transfers of money can be forwarded to other addresses owned by the scammer and can be forwarded through bitcoin mixers which make it pretty much impossible to follow where the money went.

You can type the address into a blockchain explorer but this doesn't help identify the person who controls that address.

As you know, Bitcoin is intended to be fairly anonymous. Just as it can be very hard to find out the names of all the people who have handled a $5 bill before or after you, even if you know the serial number printed on it. This is by design, for privacy.

If you are the victim of fraud, you should report it to your local police. Even if they cannot help you recover your money it helps them and politicians to be aware of the level of such crime and helps them decide whether more resources are needed.

Other web-pages that may be of interest (this is not an endorsement)

Where to report Bitcoin Scams

Update:

Oops, I see you asked the same question last year and got a good answer, voting to close as duplicate.


pycoin is probably your best bet. You need the utxo first, which you'll need to look up somewhere (blockchain.info is fine). Once you have the utxos, they'd need to be TxIns like this:

tx_in = TxIn("<utxo hash in binary here>", <utxo position, usually between 0 and 5>)
script = standard_tx_out_script(address)
tx_out = TxOut(<btc amount to send - fee>, script)
tx = Tx(1, [tx_in], [tx_out])
lookup = <this part you have to figure out>
tx.sign(lookup)
print tx.as_hex()

You can take the results and paste to something like blockchain.info's send transaction page.

NOTE: It's very easy to screw this up and have a too-high tx fee or lose your coins altogether. I would NOT recommend it. Install Armory and import the key or do the same using Mycelium. It's a lot safer to do it that way.


Why do you need the *complete* blockchain to mine bitcoins, why not just the last n blocks?

To mine a valid block, you need to ensure that every Bitcoin transaction in your block is valid.  Because each transaction (except for coinbase transactions) spends the output from a previous transaction, you need to have processed every previous transaction in the blockchain.

This has a couple implications:

You need to download and process the whole blockchain before you can start mining (provided you only want to produce valid blocks).
You can create a database of just the information you need to validate future transactions and only store that, allowing you to get rid of the rest of the blockchain data you downloaded and processed.  Bitcoin Core 0.11.0 began supporting this blockchain data pruning feature for mining with the -prune parameter.
You can outsource validation of transactions to someone else and only mine the transactions they say are valid.  This way you don't need to store any blockchain data at all.  This is what most pool miners do.


P2WPKH - which private key is used to generate signature?

Only the private key for the second input is used in this signature as this signature is only for the second input. The first input is P2PK and is ignored in this example as it is non-segwit so the standard non-segwit sighash algorithm is used for it.


Trezor; How is it true cold storage if their is a recovery seed?

It is considered cold storage because the private keys are never exposed to an online device which can steal them.

The private keys are stored on the Trezor itself. They can never leave the Trezor, even when it is plugged into a computer. Thus they are never exposed to something which is connected to the internet that is able to steal the private keys.

The recovery seed is a BIP 39 mnemonic. This encodes a BIP 32 seed which is then used to generate all of your private keys. The Trezor actually only stores the BIP 32 seed and generates all other private keys when they are needed. Restoring a Trezor with the recovery seed (aka BIP 39 mnemonic) just tells Trezor what the BIP 32 seed should be.


That's not an error.

Continue by running make, optimally with -j set to the number of cores you have on your system.


What is the current legal status of Bitcoin around the world?

At this point, the legality of bitcoin remains largely untested. To date, there have been no legal actions brought against any bitcoin exchanges (which would likely be the first place for the legality of bitcoin to be tested, rather than end users) and multiple bitcoin exchanges are seeking legal clarification regarding the jurisdictions they are operating in.

Some non-profits including the EFF have chosen not to accept bitcoin at this point in time because of untested legal issues.


How to claim BCC/BCH having BTC in MultibitHD without having a seed, but having a password?

Unfortunately there is no easy way to do that. MultiBit does not allow you to export private keys and they use their own implementation of AES to encrypt the wallet files so no third party tool (like bitcoinj' wallet tool) can be used to extract the private keys. All you can do is modify the MultiBit source code and run it yourself in order to dump the private keys to a file.


Is there a list of all cryptocoin currencies?

The bitcoin wiki has a list:

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

There is a forum dedicated to alternative coins at bitcointalk:

https://bitcointalk.org/index.php?board=67.0


Can I see transactions in bitcoin-qt without downloading blocks? if I have a server with blocks on the local network?

It doesn’t work because the software doesn’t support operating like that. You can not connect bitcoin-qt to a remote RPC server.


Is there a Bitcoin exchange comparison site (fees, details) like distrowatch.com or http://cmsmatrix.org/?

bitcoincharts.com pretty much is what you look for I think. They got a huge list of exchanges and detailed informations about each site.


Bitcoin does not have "sender addresses". It has transactions, which spend coins you have authority to spend from, and creates new coins with potentially different owners.

Listing the previous owners of coins as senders is a practice used by some block explorer websites, but is at best uninteresting and at worst may result in monetary loss:

Not every script has a corresponding address.
The previous owner is not necessarily the sender (e.g. in the case of a service with multiple users, the addresses belong to the service, not the users).
You can't use these to refund coins (a property that is usually expected of a "sender address"), as in the case of a shared account, the address may be associated with a different user of the service.
Widely deployed privacy improvement techniques like CoinJoin result in transactions where only one of the transaction's inputs is related to the sender you care about, with no way to identify which.

So what listtransactions shows you are always receive addresses:

For a send entry, it lists the address the money was sent to.
For a receive entry, it lists the address the money was received on.


Electrum 2 validation: how is the HMAC always 01...?

When creating a new seed, Electrum 2.x does pretty much the same thing as vanity address generators, or for that matter Bitcoin miners... it "grinds".

It generates a seed based on some entropy and a nonce, and checks if the seed's HMAC starts with the required byte sequence (the "checksum"). If it doesn't, it increments the nonce and checks its HMAC again.

If you're interested, the code which does this is here on GitHub.

It should be noted that Electrum seeds have (by default) 128 bits of entropy. As a result of this grinding, Electrum discards (for standard wallets with a checksum of 0x01) 255 out of every 256 potential seeds. This effectively decreases the entropy in a seed by 8 bits (the length of the checksum). In order to compensate for this, Electrum 2.x adds an additional 8 bits to the total seed length, which brings the seed length to 136 bits and the entropy back up to 128 bits.


Bitcoin wallet on smart phone drains battery a lot?

I never tried the android version but from my experience from the desktop version, when you run the core, the bitcoin core will attempt to connect to another peer, when it received it, it will verify the transaction using your CPU which causes more power draw


If you create a raw transaction yourself, then that is the raw transaction. Whatever you put in it is exactly what the transaction will be, in the same order.
There are some conventions around output ordering. Some software will randomly permute the outputs; other software uses BIP69 which specifies a deterministic ordering. There is however no requirement to follow either rule.


How do you generate a QR code for a not so popular coin?

Do you want to just generate the QR code for one time use, or include the code generation into a program? If the latter you can use this for javascript: http://larsjung.de/qrcode/


How large can the bitcoin salt value be?

It's actually called a "nonce".

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

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

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


My passphrase doesn't work and I can't send any bitcoins from my wallet

Does this mean I lost all the bitcoin in my wallet?

Possibly.

Try typing your passphrase into a text editor (notepad, vim, emacs, whatever) - If your caps-lock or keyboard settings are wrong you will see it.

If you are typing your wallet passphrase correctly and it is not accepted by your wallet then you almost certainly wrote it down wrong. You might be invoking the wrong wallet I suppose - maybe you tried out several wallets? Maybe on several devices?

In that case you should recreate your wallet on a different (but secure) computer using one of

your earlier backups of the wallet.dat or equivalent file
your safely written down private key
your safely written down wallet recovery phrase (not applicable to bitcoin core)


Transaction size limit across a single path in a Lightning Network and fee earned

The maximum size for HTLC's are currently defined by max_htlc_value_in_flight_msat and is roughly 42mBTC. The max_concurrent_htlc that you mention seems to be the max_accepted_htlcs and states how many HTLCs can be within a commitment transaction at the same time. This has nothing to do with the maximum payment size (not transaction size) of a single path. Because the single path would only set up 1 HTLC anyway. Thus this is bound by max_htlc_value_in_flight_msat.

As for the fees this is hard to say because it depends on who pays whom and what routes are being chosen. Assuming a uniform distribution of payment pairs and a flow of payments along the cheapest path the expected earned routing fees are proportional to the betweeness centrality of a node computed on the fee graph. Note however due to the fee rate the fees also depend on the payment size thus the betweenness centrality is almost unexpressable.


how to find out where the money was picked up

You can't.

Bitcoin was designed with privacy in mind.


Wallet not updating with balance and database error

They should be there when you are done synchronizing. I would just wait for bitcoinqt to finish syncing if you are not in a rush.

As noted by this post you can do a workaround to access your coins now if needed:
My client stopped synchronizing, how can I access my wallet?


Why 'bitcoin-cli getreceivedbyaddress ...' always returns 0?

getreceivedbyaddress is a wallet RPC. It queries your own wallet for how much money it has received on that address. Arguably, the RPC should return an error if the address is not considered its by the wallet.

You can make the wallet treat addresses as its own even if it does not have the private key, by using the watch-only functionality. However, introducing a new address will require a lengthy rescan of all of history to discover the transactions.

There is no equivalent RPC that operates on the whole node, as Bitcoin Core does not maintain a full per-address index of the blockchain.

I filed an issue here: https://github.com/bitcoin/bitcoin/issues/10921


Why is my bitcoind daemon not listening on RPC port at 8332?

Two thoughts:

The wildcard syntax is not supported anymore. Instead of 192.168.*.*, use 192.168.0.0/16. Instead of 192.168.1.*, use 192.168.1.0/24.
As an additional debugging step, try running netstat -antlp | grep 8332. If that produces output like the following, that means that it is bound to the port.

tcp        0      0 0.0.0.0:8332             0.0.0.0:*               LISTEN


receive payement bitcoin api like blockchain API v1?

please check this API https://bitaps.com/api/

No registration required, no API keys, simple RESTfull API

To create payment address use: https://bitaps.com/api/#Create_payment_address

To handle callback:
https://bitaps.com/api/#Processing_the_callback

If you need help with development contact support@bitaps.com


Namecoin has not strayed from Bitcoin in this parameter, it is still set at a 1 MB block size limit. You can find it in main.h:

/** The maximum allowed size for a serialized block, in bytes (network rule) */
static const unsigned int MAX_BLOCK_SIZE = 1000000;


Blockchain MySql Implementation - Updating Database

Several options:

Connect to the bitcoin network directly, parse all messages, verify the blocks and insert all the transactions contained within it into the MySQL db. This is going to be a bit hard since you have to write code to connect to the network.
Run bitcoind side-by-side with the MySQL db and use some combination of the getblockcount, getblockhash, getblock, gettransaction RPC commands and insert the transaction data into the MySQL db. You can run a cron on this every 5 minutes or so and you should have a fairly up-to-date MySQL db. This comes at the cost of considerable disk space since you'll need to have the entire blockchain for bitcoind (30 gigs and growing).
Connect to some other service and get the data that way. Blockchain.info is the obvious one and they have a wonderful API for getting all the new data you need. Unfortunately, you'll have to trust them to provide the right data. There's also electrum servers which provide data using stratum and ABE and some others. Heck, if you can get someone to open up their RPC port (8333) on bitcoind, you can connect to their bitcoind and use the same commands as #2. The drawback here is that you have to trust a third party in some way, shape or form, though, of course, you can write your own verification code.

Regardless of which thing you choose, you'll need to handle some difficult things like orphaned blocks when trying to keep this db up-to-date.


I've seen a transaction with 24 ancestors in the mempool, Is there a sensible use of this?

Looking at the ancestor transactions this looks like someone is writing chunks of data to the chain.

The couple of transactions I looked at all have an OP_RETURN output and then send to bc1qraz56wyj28km560u2pyyml9dr3uaxv9sts67ct, chaining them together.

Looking at the OP_RETURN data, this could also be some kind of timestamping or another sort of anchoring as the data doesn't look random:

000c486100023...
000c487000029...
000c48740002e...
000c487500024...
000c48780002f...
000c487b0002a...
000c487e0002a...
000c48810002c...

It's hard to say. Maybe someone else has more insight into this.


If you provide an empty string it will return the default account every time. Note getaccountaddress is deprecated, see https://bitcoincore.org/en/doc/0.16.2/rpc/wallet/getaccountaddress/.

getaccountaddress "account"

DEPRECATED. Returns the current Bitcoin address for receiving payments to this account.

Arguments:
1. "account"       (string, required) The account name for the address. It can also
be set to the empty string "" to represent the default account. The account does not
need to exist, it will be created and a new address created  if there is no account
by the given name.


Does running pruning node make the initial sync faster?

No, pruning will not make the initial sync faster. The information that gets removed by pruning isn't accessed turning the initial sync.

Currently pruning makes the initial sync somewhat slower: more frequent flushes are performed in order to allow pruning to work, and the work of actually deleting things creates its own small slowdown. About the same is probably a fair statement in general.

The only configuration which can substantially speed up the initial sync is increasing the dbcache option.  If you have plenty of memory (e.g. >4GB) making this setting larger can radically reduce the sync time, esp. if your disk is slow. For 8GB ram I recommend setting dbcache=4096 during the initial sync.


Can I send balances to Segwit address from non-segwit address?

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

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

  Does this situation accepted?

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


Cannot build circuits because we don't have enough directory information

Solved by itself. I guess the info Localhost peer not detected was behind the scene. Now, after finding the peers I have the app synchronized to the blockchain


Can a BIP39 12-word mnemonic be used to restore a wallet through bitcoin-cli?

Bitcoin Core does not currently support BIP 39 mnemonics nor the size of the BIP 32 seed produced by a BIP 39 mnemonic. BIP 39 produces 512 bit seeds, but Bitcoin Core currently only supports importing a 256 bit seed via sethdseed.


Would a professional ASIC-machine holder eventually become a bank-like character?

Even if mining becomes more centralized, it would seem unlikely that miners would turn into banks: Their only advantage at shaping payments is that they may delay transactions by not including them in the block, so there doesn't seem a direct incentive to progress to banking.

On the other hand, payment processors and bank-like entities would have an incentive to foster mining efforts, as their business concept directly profits from a secure network.

So, banks should be interesting in paying for mining, but not vice versa.


How can I prove control of HD wallet through message signing?

It proves that you control all children of that address (i.e. the ones further down the chain). It does not prove that you own the parents of that address (i.e. the ones further up the chain), since it's not possible (AFAIK) to go from a child to a parent key.


Is there any concrete evidence that Wright & Kleiman were involved or not involved in the creation of Bitcoin?

Wright:
While his supposed credentials pointed at a polymath with a range of interests along the lines of what Satoshi must have studied, neither his contributions at a recent discussion panel, nor his published work indicate that he has worked sufficiently on the main ideas of Bitcoin. Additionally, large parts of the corroborating evidence have not been substantiated or outright disproven.

Kleiman:
After a career as a soldier, technician, deputy sheriff, and detective, Kleiman only switched to working with computers in 1995 (at 30) after a crash turned him paraplegic.
He then made career in computer forensics which, derived from the list of his publications, seemingly focused on password security, data recovery, and Windows exploits. On January 1, 2007 he was named a Microsoft MVP for Windows - Security.

It seems unlikely that Wright and Kleiman, whether solely or as a team could be the creators of Bitcoin.

Edit: I just found out that the first version of Bitcoin was Windows only. So, maybe it is a shade more likely then.


How To Transfer Coins From Bitcoin Core to Electrum to avoid Sync Process?

To relieve your space problem, You could either run it on an external drive, or run Bitcoin Core under prune mode. Depending on your OS, you'd need to find a file called bitcoin.conf, modify that, and restart your Bitcoin Core Wallet process. The file would look something like this

The line for prune mode reads

# Enable pruning to reduce storage requirements by deleting old blocks.
# This mode is incompatible with -txindex and -rescan.
# 0 = default (no pruning).
# 1 = allows manual pruning via RPC.
# >=550 = target to stay under in MiB.
prune=550 <- change this number if needed

Electrum is a light-weight wallet that relied on trusted nodes for transaction information. This page explains the steps needed to migrate from Bitcoin core to Electrum. According to that, you'd need to dump your private key from Bitcoin core and sweep that into Electrum.


When was the paper of bitcoin announced?

According to the mailing list archives, the mailing list received Satoshi's email at Fri Oct 31 14:10:00 EDT 2008. However the mailing list is moderated so perhaps the email was not received by everyone until a day later on November 1st. The first response to the email was sent on November 2nd, so it may be that the email was not forwarded to the list for a day or so.


I think solution for your use case is HD wallet where a bunch of keys is created from a single seed. There are 2 types of public/private key sets you can create with in HD wallets. Type 1 where you create sequence of keys with same seed. Type 2 where you can create a tree of keys using its branches and levels in your organisation or specific business. Type 2 below:


I transferred about 0.54 BTC and I cannot find this on Blockchain.com. Can anyone help?

Firstly, I would use Blockstream.info or mempool.space, not blockchain.com for your online block explorer.

Second, depending on the exchange, they could batch withdrawals at a certain time each day, or they could set a very low fee, which means it would take a long time to be confirmed.

As was said in the comments, you could've been scammed. I have never heard of Dasset before.

Lastly, for each transaction, generate a new receive address to ensure privacy.


Bitcore = "Error: More than one instance of bitcore-lib found"

I don't know if that's the right method but it does work.

delete global._bitcore
var bitcore = require('bitcore-lib')


The block size is the combination of the block header and the list of transactions. Specifically, the block header has these fields:

version - 4 bytes
previous block header hash - 32 bytes
merkle root hash - 32 bytes
time - 4 bytes
nBits (encoded POW target) - 4 bytes
nonce - 4 bytes

So the total bytes for a block header is
4 + 32 + 32 + 4 + 4 + 4 = 80 bytes

After the block header is the list of transactions which is

transaction count - 1-9 bytes
transactions - varies

Transactions can vary greatly in terms of the number of bytes, but the general serialization of a single transaction is:

version - 4 bytes
tx in size - 1-9 bytes
tx ins - see below
tx out size - 1-9 bytes
tx outs - see below
locktime - 4 bytes

Each tx in has these fields:

previous tx out hash - 32 bytes
previous tx out position - 4 bytes
pubkey script - varies depending on script, max 10,000 bytes
signature script - varies
sequence - 4 bytes

Each tx out has these fields:

value - 8 bytes
pubkey script length - 1-9 bytes
pubkey script - varies

The sum total of all these things in a block determine the size, which currently has to be less than 1 MB.


How to move bitcoins from an exchange into my wallet?

First thing, encrypt the wallet with a good passphrase.

You will want to go to the receive tab in Bitcoin-QT,  and create a new receiving address for yourself. You may want to create a new address for every transaction for anonymity purposes. Copy the address to your clipboard and then go to bitcoin.de, and send the coins from your account to that address.  It may take an hour or so for the transaction to complete so just leave the client running and be patient.

HINT: Be sure that bitcoin-qt is finished syncing with the blockchain before you send yourself the coins or you may not be able to accesss your coins  for the 24-48+ hours this process can initially take!  If you need it faster, might want to temporarily use either electrum or blockchain.info wallet until the client is completely synced.


Who is the programmer behind SatoshiDice?

This is all I could dig up from https://en.bitcoin.it/wiki/SatoshiDice

  SatoshiDice was the brand given the service initially created by BitcoinTalk forum user FireDuck before selling the system to another operator.


Can new types of transactions be included the current block chain?

Miners will accept block with transactions they don't understand, so long as the transactions don't attempt to create Bitcoins out of thin air. They won't include transactions they can't validate in their own mined blocks though.

There is active effort at the top levels of the Bitcoin developers to get new transaction types into the client. M-of-N transactions (transactions that require a set of signatures), for example, are close to obtaining a consensus.


The transaction fee calculated for the transaction by fundrawtransaction cannot actually predict the transaction's final size. This is because signatures are not fixed in length and can be smaller than what is predicted. However, in order to be sure enough fee is paid, fundrawtransaction will always assume the maximum signature size. This means that sometimes the signature will end up being smaller which means that you end up overpaying a little bit in fees. The feerate will be higher because the fee has stayed the same but the size of the transaction is smaller than predicted.


What Do I Do? Unconfirmed Transaction For Almost 7 Hours :(

You can thank the China government and internet censorship for the recent blockchain issues considering the two largest bitcoin miners are in China.

I have payments from yesterday almost 18 hours that have not finalized so you are not alone.

It is the beginning of the end for bitcoin brotha better start learning Monero!


Does the value of my Bitcoin fluctuate automatically?

Whether it fluctuates or not depends on how you express value. If you happen to be one of them American folks, who use dollars to express value, then a fixed amount of money in other currencies (such as euros or bitcoins) will fluctuate.

But similarly, a $10 dollar bill will fluctuate in value, if you express value in euros or bitcoins (basically, that is if you live anywhere on the planet except the US).

It's all a matter of perspective.


Can you see blockchain?
https://blockchain.info/en/unconfirmed-transactions
If unconfirmed transaction will be less as now (~70 000) then you will see your btc ;)


As pointed out by Peter in the comments of your question, you will need to wait until your node has synced with the longest chain. At the time of your comment, you are 169,245 blocks behind which, unless your transaction took place ~3 years ago, will not be known to your node yet. As soon as the block containing your transaction is verified by your node, you will be able to see the transaction.


Copying my Blockchain account to Multibit

You are looking for the export section on blockchain.info. This will provide you with your private key(s) so you can then import them on Multibit.

If you go to the "import/export" tab there will be an option to export your private-keys for every address in your wallet. There is also an import function that allows you to import a private-key into your blockchain.info wallet. You can click on export unencrypted and it will display your public and private-keys in a JSON output. The long string of what seems to be random characters after the "priv" is actually your private-key. The string of characters after the "addr" is your address. As you can see in my example there is more than one key exported. If you wanted to you could copy the private-key and then import it into another wallet program. This would allow you to access this address from more than one wallet service.

Never show anyone your private-keys.
I am only showing these keys for demonstration purposes.


How many address formats are there in dash?

Dash seems to be pretty similar to bitcoin when it comes to address and transaction formats. You have your typical P2PK, P2PKH, P2SH.

Here is how to generate a standard P2PKH address (and therefore also a P2PK address).

var bip39 = require('bip39');
var hdkey = require('hdkey');
var createHash = require('create-hash');
var bs58check = require('bs58check');

//const mnemonic = bip39.generateMnemonic(); //generates string
const mnemonic = 'thunder purchase pave tower lecture upgrade supreme half kid fitness tray shove'
const seed = bip39.mnemonicToSeed(mnemonic); //creates seed buffer
console.log('mnemonic: ' + mnemonic);

const root = hdkey.fromMasterSeed(seed);
const masterPrivateKey = root.privateKey.toString('hex');
//console.log('extended public key root:  ' + root.publicExtendedKey)

const addrnode = root.derive("m/44'/5'/0'/0/0");
console.log('addrnodePublicKey: '+ addrnode._publicKey.toString('hex'))
console.log('addernodePrivateKey: ' + addrnode._privateKey.toString('hex'))

const step1 = addrnode._publicKey;
const step2 = createHash('sha256').update(step1).digest();
const step3 = createHash('rmd160').update(step2).digest();

var step4 = Buffer.allocUnsafe(21);
step4.writeUInt8(0x4c, 0);
step3.copy(step4, 1); //step4 now holds the extended RIPMD-160 result
const step9 = bs58check.encode(step4);
console.log('Base58Check: ' + step9);

Notice the only difference between this and deriving a bitcoin address is the version bytes is not 0x00 but instead 0x4c & the derivation path coin index of 5 instead of 0.


How do I calculate transaction fee for call to createpsbt()?

If you want to implement your coin selection, the only alternative to calculating the fee manually I can think of is the following:

You select which inputs you want to be used in your transaction based on your coin selection algorithm.
You then proceed to lock every input that is not the one you selected. You can get the list of all inputs through listunspent and you can lock an input with lockunspent false [{"txid":"hex", "vout":n}, ...].
Now you can use your walletcreatefundedpsbt without being afraid it will select any input that you don't want and you can pass the option {"feerate":your_feerate}.
After getting your raw transaction, you can unlock all previously locked inputs with lockunspent true


Scripts are used to determine the person who can spend the transaction (at Bitcoin you spend using transactions, not using BTC on an address).

To understand scripts, you probably first need to understand the Bitcoin transaction model. Unlike your old style bank, where you have accounts with a certain amount of money on it, Bitcoin doesn't actually have accounts. The address you send money to is nothing like an account, even though clients show them as such for simplicity.

What Bitcoin really does is send transactions with scripts that can only be solved by one specific private key, by using the public key to create a script. If you send money, you basically destroy one or more previous transactions to create a new one. If you're sending less than the sum of the transactions you're using, just send a bit back to your own account. A transaction can only be used once.

Because of that transaction model, scripting can work. A transaction can be made with a script that doesn't indicate one specific destination address, but instead lets everyone spend it. Such a transaction does not fit in the old style bank model, but works fine for Bitcoin. There can even be scripts that require multiple private keys, or scripts that require you to answer a question.

One quick step back to the transaction model, so I can give you the full picture. Money is created with mining, via special transactions that don't have to destroy a previous transaction: coinbase transactions. All transactions have inputs and outputs. The inputs are the previous transactions it's getting the money from (exception: coinbase) and the outputs are the scripts it's sending the money to. After money is created via mining, it can be used once as an input, after which the money will be destroyed and re-created in a new transaction that can then be used. The role that scripts play in this whole process is to verify that you actually have permission to spend certain transactions.

Hope it helped. Scripts are not the easiest part of bitcoin to understand.


Public key Exceeding Mod P? A Clarification Request On The Discrete Logarithm Problem

It is important to note that the Elliptic Curve Discrete Logarithm Problem (ECDLP) is slightly different from the normal Discrete Logarithm Problem (DLP).
In DLP, the ^ operator is actually exponentiation and it is operating on integers so mod p is just the normal modulus. However for ECDLP, ^ is actually elliptic curve point multiplication. This is different from exponentiation and is a much more involved process. You also cannot mod p with a point because they are not integers. While there is a modulo, it is part of the point multiplication process itself.
The compressedness of the parameters you use does not really matter. In the end, the compression is just the encoding of a point. You need to parse this encoding to determine the X and Y coordinates of the point; both uncompressed and compressed allow you to determine them. The uncompressed just gives you the X and Y coordinates directly while the compressed one gives you the X and whether Y is even or odd so that you can compute the correct Y coordinate. When you do the point multiplication, you are not handling the encoded point as an integer and just multiplying it with x. You are doing elliptic curve point multiplication which is way more complicated.


What is the cheapest device that can run a proper bitcoin client?

Go your local goodwill/thrift/whatever.  They have usually old PCs for ~15EUR.  If storage can hold block chain and can handle internet, is enough.


A lessor, in general, is a person who leases a property to another.

NXT allows you to "lease" your forging ability to someone else.

So getAccountLessors gets a list of people who have leased their forging power to your account.


What are the advantages of running a full node in comparison with a lightweight client?

A lightweight client cannot even check for itself that a confirmed transaction is valid.  It has to trust that miners will not spend time confirming invalid transactions.

If you have an SPV client and I am an evil miner with a substantial amount of mining power, I can make a transaction with a nonexistent input (essentially creating coins out of thin air), and include it in a block I mine.  This block won't be accepted by any full node, because they will have a complete transaction register and will know that the input is nonexistent, but your SPV client would accept it.  If I then mine some more blocks on top of my bogus block, your SPV client will think that transaction has several confirmations.  This  will work particularly well if I can mess with your network connection so that you can't connect to any full nodes except for evil nodes controlled by me.

Of course this attack is fairly costly for me, since I have to spend mining power that could otherwise generate legitimate coins, but maybe it is worth it if I can buy something valuable from you and pay with fake coins.  So if you are in the business of selling high-value goods, you might very well consider it worthwhile to have a full node.


Radeon RX 580 8GB vs 4GB. Does memory matter?

Memory size does not affect mining speed.

To mine you need DAG file to be loaded into card's memory. DAG file grows in time. So when (and if) it will superpass 4GB - you could mine no more with these cards. Current Eth DAG size is ~2.3Gb. 4Gb is expected roughly on 06/FEB/2021 - after that date you will not be able to use 4Gb cards to mine Eth (and Im not even considering PoS here)


Why Coinbase hot wallet showing insane price that BTC didn't reach for the day?

With such volatility, all exchanges vary a great deal. At time of writing this answer, bitcoin price had jumped another 20% in less than a day and it wasn't too strange to see any two exchanges vary by $500 or more (Current source). Each exchange calculates their buy and sell prices a little differently.

True exchanges like Bitfinex all have different user bases in addition to variation in their buy/sell calculations. This means they may have slightly different supply and demand effects. None of the exchanges are centrally monitored, as with stock exchanges, so they must calculate buy and sell rates on their own.

Coinbase is not a true exchange. Your buy and sell orders are not filled by others buying and selling. Instead, you are buying and selling from Coinbase. Like any currency exchange you might find at banks or international airports, Coinbase offers a larger spread (the difference between buy and sell price)  as part of their profit scheme. For the user, Coinbase offers value over true exchanges by filling any order immediately and simplifying the process.


How to resolve "no block source available"?

I was having this problem. I updated my client to the newest version (https://bitcoin.org/en/download) and it solved itself. I think the clients might stop communicating with other clients who don't update. Haven't read that anywhere or anything, just a guess.

The problem has returned, but updating the client is still a good thing to do.


I am assuming you want to accomplish something akin to what SatoshiDice does. Here is how it can be done, using API calls with the Bitcoin-Qt/bitcoind client:

listunspent - you get the list of all unspent transactions
You determine which ones you want to spend
You use createrawtransaction to create your inputs / outputs, taking txid and vout from the list of transactions that you have that are playing, as well as a list of transactions that constitute a "money supply" for you.
Use signrawtransaction to sign the created transaction
Use sendrawtransaction to send the signed transaction

That should be pretty much it. I have implemented some of that code myself and it is pretty easy once you get a hang of it all.


Is there a Bitcoin testnet that is really small so you can quickly download the blockchain and test stuff?

Depending what are trying to achieve you can use  testsnet box https://github.com/freewil/bitcoin-testnet-box, it runs two nodes one connect to another in our machine without need to access or the testnet, also gives the ability to generate blocks whenever you want so you don't need to wait.


Statistically how many unconfirmed transactions get rejected?

For a transaction to be included in a block, the probability is related to the fee that transaction pays to the miner (higher fee = more likely) and varies over time based on demand of block space (more congested = higher fee needed). It's also unpredictable because miners can choose whatever transactions they want to, doesn't always have to be the x highest fees.

Here's some stats on current fee vs confirmation time estimations: https://bitcoinfees.21.co


How can the segwit witness data be "off-chain"? What does it really mean?

No, that's not accurate. Witness data is on-chain, inputs have a similar byte length as before (they are just weighed differently), and the transaction throughput is increased because segwit is a defacto blocksize increase.

Thus, with segwit, the witness data was separated from the rest of the input. More specifically, the witness data is now "off-chain". This made the input much lighter and, in turns, it made spending an UTXO cheaper and faster to process.

This is a common misunderstanding perpetuated by an abundance of (sometimes deliberately) confusing descriptions of how segwit works.
A transaction is not complete without the proof that it was authorized by the owner of the spent funds. As such, the witness is explicitly part of a "complete transaction". What segwit did was to segregate the witness (read "signature") out of the input script and move it to the "witness section" of the transaction. The witness section is at the same hierarchical level as the inputs and outputs.
The witness section is excluded when calculating the transaction id (txid), but it is part of the transaction, and used to calculate the witness transaction id (wtxid). While the merkle root in the blockheader commits to the txids of the included transactions, each segwit block additionally commits to a merkle tree of the transactions' wtxids. In conclusion, the witnesses are a) part of the transaction, b) part of the blockchain, c) necessary to fully validate the blockchain.
Segwit replaced the blocksize limit with a blockweight limit. The blocksize was based on the raw byte length of transactions and capped at 1,000,000 bytes. The blockweight limit is capped at 4,000,000 weight units, where weight is calculated by counting witness bytes with a factor of one, and non-witness bytes with a factor of 4. This happens to result in an equivalent limit if a block only includes transactions without witness data.
The actual transaction data of a segwit input compared to a non-segwit input is only marginally smaller. It is the discount of witness data that allows blocks to exceed the previous blocksize limit, making segwit an effective blocksize increase with the biggest block to date having 2,422,858 bytes (but 3,993,379 weight units).
Segwit transactions and blocks are made forward compatible to pre-segwit nodes. Segwit nodes will strip the witness data before relaying the data to pre-segwit nodes. The stripped transactions and blocks are non-standard but valid according to the pre-segwit protocol rules, and thus pre-segwit nodes can follow the blockchain and converge on the same UTXO set.
Note that pre-segwit nodes have not been "fully validating nodes" since segwit was activated on August 24th 2017 as they do not unilaterally enforce all consensus rules of the Bitcoin protocol.


Bitcoin private key, location on ECC curve

The basic elliptic curve operation is addition of points.
The operation of applying this addition repeatedly is called the scalar multiplication of a point by an integer.

The private key is the 'scalar', the point being multiplied is the 'Generator' point, the result is the public key.

Scalar multiplication is basically repeated addition. Multiplying the Generator point by 5 means: calculating G+G+G+G+G.

You calculate this by first calculating  G2= G+G,  then G4=G2+G2, then G5=G4+G.

The curve formula

The formula for the curve used by bitcoin calculations is as follows:

y^2 == x^3 + 7   ( mod p )

where p = 2^256 - 2^32 - 977

Points on the curve

a point (x,y) is on the curve if it matches the above equation

Curve Addition

Curve addition is best visualized geometrically

image from certicom

Elliptic curve cryptography does not use floating point values for it's coordinates, all calculations are done in integers modulo a large prime ( mentioned above, named p ). But the method of calculating the sum of 2 points remains the same.

adding points

Add points P1=(x1,y1) and P2=(x2,y2),  resulting in Psum= (xsum, ysum)

slope = (y1-y2)/(x1-x2)
xsum = slope^2 - (x1+x2)
ysum = slope*(x1-xsum)-y1

point doubling

if P1 and P2 are the same point, the above adding formula would
involve a division by zero, so a different formula is needed to
calculate P+P

slope = 3 * x^2 / (2*y)
xdbl = slope^2 - 2*x
ydbl = slope *(x-xdbl)-y

ecdsa keys

For ECDSA a generator point G was chosen.

The private key is just an integer, lets name it k.
The public key is the generator point added to itself k number of times. In other words, multiplied by k.

If you choose your privatekey unwisely, say 1, your public key would equal the generator point, this address: 1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm

As you can see, it was even used recently.

What makes ECDSA a useful crypto system, is that it is easy to calculate a public key from a privatekey, but not the other way around.
Another way of putting this is that multiplication is easy, but there is no (easy) division algorithm on an elliptic curve.

Example code

See this gist for an example in python


How to extract all info for a public address from a local full node's db?

Why this is hard
Bitcoin Core is chiefly a tool to synchronize with the current state of the network and to enforce the consensus rules with a self-owned piece of hardware. Beside being on the same page regarding the rules, this requires the node only to keep track of the ledger, the Unspent Transaction Output (UTXO) set. Bitcoin transactions need to be processed only once to that end.
The blockchain being now over 330 GiB, some people are actually choosing to run pruned nodes (that discard old blockchain data after processing it to calculate the UTXO set). Keeping additional indexes around with dozens of GiB in size is a special interest most users don't seem to care for.
In fact, Bitcoin Core does not feature a full address index out of the box. Originally maybe, because address reuse is considered a bad practice, later because other projects offer this, leaving Bitcoin Core developers feeling that they could focus on other things.
How you do it anyway
Bitcoin Core has an option to build a full transaction index -txindex (turning it on will require you to start over with synchronization and take about 30 GiB more space). This index is needed if you want to look up arbitrary transactions from the past. Other projects leverage this functionality and build additional indexing capability around it to offer Lightning Network support or Bitcoin explorers. I would recommend that you look into the Mempool Open Source Project or the Esplora Block Explorer. Either of these will allow you to run your own instance of a block explorer with APIs to look up blockchain data on basis of addresses. Note that the Esplora index will take about 1 TiB and apparently takes quite some time to build (H/T @Anonymous).


Why the PUSHDATA is 65 in the first transaction in blk00000.dat?

Opcodes between OP_0 (0x00) and OP_PUSHDATA1 (0x4c, 76) (exclusive range) are push opcodes.

To push data smaller than 76 bytes, data's length, which is an opcode within that range should be used.

For example, to push 0x01020304, which has four bytes, 0x04 should be used: 0x0401020304.

To push 0x12, which has one byte, prepend with 0x01: 0x0112


Automatic transfer of funds between exchanges

It's easy to transfer cryptocurrencies between exchanges, but there is no way to transfer USD without withdrawing to your bank account or some kind of e-wallet first. All exchanges I've seen do not allow withdrawals to third parties.


Mining for nil-transaction blocks only - gaming the incentive scheme by rogue miners / consortium?

(I'm certain this has been asked before, but I can't find the previous question.)

That would be true, except for the presence of the nonce and extraNonce fields. The point of these fields is that you can rehash the block without actually hashing the whole thing. On 2^32-1 out of 2^32 times, that just means hashing the last 16 bytes of block header, which can be done in 3 compressions. (That's one for the block header, and two for the following SHA256 hash. Remember, Bitcoin uses SHA256d.)

A single mining attempt takes (3 + ((log(2, number_of_transactions) + 1) * 2 / 2**32)) SHA256 compressions, on average. Having a thousand transactions in the block takes an extra 0.000000004 compressions per hash over having no transactions in the block.

The effect of all of that is that you mine at essentially the same speed no matter how many transactions you include.


What is service or entity broadcasts transactions with OP_RETURN data starting with "LP..."?

The starting bytes 4c 50 has nothing to do with ASCII encoding. 0x4c represents opcode OP_PUSHDATA1 which indicates that the next opcode bytes is data to be pushed onto the stack. So in the examples that you have given, 4c 50 will indicate pushing the next 0x50 bytes onto the stack which is 80 bytes in decimal. The question you should have been asking is why the data that has been encoded on the stack for all the transactions that you have listed starts with 00 06 4e


Is four confirmations enough if the network hash rate is so high?

Technically, one block is enough. However, a single block orphan occurs with sufficient frequency that many Bitcoin business prefer three or six confirmations. The difference is more a matter of personal choice.

The hash rate of the network does not significantly impact the time between blocks because of the difficulty level. The difficulty level helps maintain the block timing at approximately every 10 minutes.

The 11/12 March 2013 blockchain fork was a bit of a special case. Only one known double spend occurred, and that was a result of someone who crafted a raw transaction involving a company (OKpay) that did not heed the warning to cease transacting until the fork was resolved.


It looks like the relevant code is in CheckForWarningConditions().  This sets the flags fLargeWorkForkFound and fLargeWorkInvalidChainFound, which are checked by GetWarnings(), which is called in CRPCTable::execute() to check if safe mode should be enforced.

It appears that the code looks for large forks in the block chain, suggesting that miners disagree on which blocks are valid.  The two flags seem to correspond to which camp our client falls in.


History of ideas behind a bitcoin protocol

Bitcoin is roughly defined by the 2009 whitepaper. Long before, the idea of a trustless cryptographic money was discussed by Wei Dai; however, Wei Dai couldn't solve the double spend problem, which delayed the creation of magic crypto money until 2008 (yes, the Satoshi client was created before the whitepaper)

Inspired by: WeUseCoins.com


Take a look at the lower right corner of your "Bitcoin Core - Wallet" window where you see icons of BTC, a lock icon, HD, and two more to the right. The icon on the right to the HD shows how many nodes you are connected to. And, it seems like your node is not connected to any peers.

There might be two causes of this:

Your node is not connected to the internet.
There are no other bitcoin nodes available at that specific moment.

For these two problems, you should check and make sure you are connected to the internet, and wait for your node to pick up on other peers on the network.


When is the Bitcoin payout for solving a block going to change?

It halves from 50BTC to 25BTC block reward after 210,000 blocks, which at 6 blocks mined per hour by my calculations works out to be in 358 days, which is around Dec 13th, 2012.

It's likely that the number of active miners will reduce substantially at that point, but within a relatively short time the difficulty should adjust down so that approx 6 blocks per hour are mined again. In the time it takes this to happen, transactions may take somewhat longer to be processed and confirmed.


How to find partners for a Bitcoin business?

I think posting your ambitions here would return quite some feedback/interest:
https://bitcointalk.org/index.php?board=12.0


How will the migration tool from a Bitcoin Core legacy wallet to a descriptor wallet work?

The migration tool will go through all the keys in the legacy wallet and create descriptors for them. This requires considering everything that IsMine matches on. From the Bitcoin Core release notes:

IsMine refers to the function used to determine whether a script belongs to the wallet. This is used to determine whether an output belongs to the wallet. IsMine in Legacy Wallets returns true if the wallet would be able to sign an input that spends an output with that script. Since keys can be involved in a variety of different scripts, this definition for IsMine can lead to many unexpected scripts being considered part of the wallet.

For HD wallets, it is pretty simple to compute the xpriv for the HD seed using a single descriptor. For non-HD wallets but still only key things, it's a descriptor for each key. The set of scriptPubKeys is finite and O(n!) so it is doable.
For watch-only wallets and multisigs it gets more complicated. Also getting the Descriptor Wallet to treat as IsMine any future script that the Legacy Wallet would have treated as IsMine is probably impossible for all edge cases.
Thanks to Andrew Chow and Pieter Wuille for answering this question on IRC. Any errors are my own.


Mining is disabled by default, it must be switched on with RPC commands:

https://bcoin.io/api-docs/#rpc-calls-mining

Keep in mind without additional hardware, bcoin can only effectively generate blocks on test networks (like simnet and regtest). A bcoin full node can be used by a mining pool operator to generate block templates and ultimately find valid blocks, there has been at least one block mined on mainnet with a bcoin full node.


Why is everyone encouraging the use of P2Pool as the answer to the 51% problem?

BitPenny seems to be half the solution - it has centralized control, but its clients can verify it behaves nicely in some sense. But it still has central management. A 51% pool can pull off subtle attacks that aren't prevented by BitPenny. For example, it can prune competitors' blocks, which is not always detectable due to the network latency. It can also block certain transactions or all of them. See this Hacking Distributed post for more details. BitPenny won't always detect this behavior.

P2pool is the full solution - it is a truly decentralized mining pool with no central control. There is no entity that can wield its power to do anything other than honest mining.


How can one estimate the difficulty change?

You cannot predict the change in difficulty because that is a function of a number of factors that are completely unknowable.

For example, the difficulty changes because a large number of mining pools suddenly appear and have very powerful ASICs and a lot of them. How would you ever be able to "predict" this happening?

Another example is the opposite case, that the technology has reached it's absolute maximum and there are no new chips yet invented that could give performance boost. Although new miners enter the market, this does not fundamentally change the rate at which the new blocks are discovered, because fundamentally the chips being used are no more powerful.

How on earth would you be able to determine that this has happened or is occurring?

At best any calculator would be guessing.


In addition to the 32-bit nonce in the block header, miners can also update the extraNonce of arbitrary length in the coinbase transaction to get a different merkelRoot, so that a proof of work hash can always be found.


Bitcoin Core 'unable to open file' causes reindexing to fail

An exhaustive survey of Google searches relating to the failure to read blknnnn.dat files implicated data corruption on the hard drive or in files such as wallet.dat and/or blknnnn.dat.  In my case, however, I was able to rule out these factors.  I ruled out hard drive failure by using a clone of my virtual machine that ran on a substitute hard drive.  I also ruled out corruption in wallet.dat by reindexing a substituted wallet.dat that had recently worked fine.  In this case the file that could not be opened was blk1637.dat. After about four unsuccessful reindexing attempts, I looked at the file permissions for the defective block and noted that file permissions were only allowed for root user. Prior blocks were permissioned for a non-root user.  The obvious solution to this lack of uniformity in file permissions was to conform the file permission settings of the errant file, but alas making this change and then reindexing the chain did not work, for the same failure to open the block file happened again.  I noted a comment someone made in a Google search that init.cpp in the client software used the umask command to change file permissions for the block files.  Using the sudo command saved me in this situation.  After all, I have everything contained within a virtual machine environment and this security risk was nominal.  In the appropriate folder, I ran sudo ./bitcoin-qt, waited for it to catch up with the syncing, then I started up Armory.  Ordinarily, using sudo in order to force a resort to root privileges is not a good idea.  But in this case it enabled me to transfer my bitcoin to a hardware wallet, freeing me up to run a new node on a virtual machine where the block data files have a consistent 6 0 0 file permissions setting unaltered by an errant system shutdown.


How many Secp256k1 signatures exist for a piece of data?

Approximately how many unique signatures exist for a piece of data?

something like 2^256 (slightly less)

  will I have to generate before finding a duplicate signature?

It depends of the quality of you random generator. You must use "true" random generators, not pseudo-random.

  then will I ever produce the same signature?

Are you going to live eternally? The sun will go out by the time of when you repeat the signature. By the way: you can take value of 'k' as a function of your 'privateKey' and 'data-2-sign'
See https://bitcointalk.org/index.php?topic=727918.0 for more info

By the way. The signature itself is 512 bits. R and S (256 bits each). Your private key can be recovered when you sign different data with the same 'k'. In this case 'R' value will be the same for both signatures. And 'S' value will differ.


Why did my BCC disappear from my Electron Cash wallet?

Go into your Electron Cash "Tools">"Network" settings, uncheck "select server automatically" and choose a "BCC"/"Electron Cash" server.  Electron Cash has a bug where it sometimes connects to the wrong blockchain.


How is the probability of winning a block calculated from the difficulty?

If the current difficulty is D, then the target hash (the value below which block hashes must go) is:

  0x00000000FFFF0000000000000000000000000000000000000000000000000000 / D

(by definition of difficulty, which is a fraction of the maximum target), or otherwise put, the number of valid hashes is:

  65535 * 2208 / D

Which means that the ratio of all hashes over valid hashes would be:

  2256 / (65535 * 2208 / D) =
  D * 248 / 65535 =
  D * 4295032833

Which, at the current (January 2017) difficulty of D =  392963262344.3704 means that one hash in

  392963262344.3704 * 4295032833 = 1687790113931869416948

results in a valid block, or each attempt has a chance of

  1 / 1687790113931869416948 = 0.000000000000000000059 %


Could there be hyperinflation in Bitcoin?

As I understand it, this is by consensus, i.e. all the nodes in the network agree on this protocol.

No. The network doesn't vote to change itself. Read this: What can an attacker with 51% of hash power do?
Arguably, you could try to get a change to the bitcoin client implemented through astroturfing.

Here's how you'd increase monetary inflation.

Find this code:

int64 static GetBlockValue(int nHeight, int64 nFees)
{
    int64 nSubsidy = 50 * COIN;

    // Subsidy is cut in half every 210000 blocks, which will occur approximately every 4 years
    nSubsidy >>= (nHeight / 210000);

    return nSubsidy + nFees;
}

Change 50 to, I dunno, 100.
Convince everybody else to do the same thing. Not just a majority - everybody.


While calculating merkle proof, where are the other hashes being stored?

These are not stored anywhere, and are calculated by the node.

The order in which transactions are included in the tree is the same as the order in which they appear in the block, which answers your last questions. To calculate a tree, one simply traverses the block's tx list, including them in pairs of two (and duplicating the last one if needed) to build all of the leaf nodes.

When asked if a block contains a particular transactions, nodes will check that block's transaction list. If the transaction exists, they will calculate the hashes you mentioned above to produce a merkle path, which contains the minimum nodes required to verify the transaction against the merkle root.

Since SPV wallets are aware of the block headers, they can verify the merkle root of the merkle path matches the one in the block header.


What prevents a malicious user creating a new transaction using signatures of an old mined transaction if the inputs have the exact same balance?

The transaction ID and output index of the second 1 BTC that was sent to A's address will be different from the first 1 BTC that was sent there. Since transactions refer to inputs by their txid and output index, the signature used in the first transaction will not be valid for another tx trying to spend the second deposit.

Additionally, depending on the type of Signature, it may also restrict that the output can only go to B's address.


It was not on the blockchain at that point.
It was announced in February:
https://medium.com/numerai/numeraire-the-cryptocurrency-powering-the-world-hedge-fund-5674b7dd73fe

Live:
https://medium.com/numerai/an-ai-hedge-fund-goes-live-on-ethereum-a80470c6b681


are checksums included in mnemonic seed phrases?

I am assuming that you are talking about BIP 39 here.

A BIP 39 mnemonic can have any number of words with the most common being 12, 18, and 24 words. There is a checksum encoded into this mnemonic. This checksum is actually just a "part of" the last word, i.e. the last word encodes some of the actual initial entropy, and some of the checksum, depending on the size of the entropy in bits.

The way that BIP 39 makes the mnemonic is by generating some initial entropy that is n bits in length. The checksum is then the first n / 32 bits of the SHA256 hash of the entropy. This is just concatenated to the end of the entropy. The mnemonic is then encoded by dividing the entropy into groups of 11 bits and using the resulting 11 bit number as an index into a list of 2048 words.

With a 12 word seed, there are 128 bits of entropy, which gives 128 / 32 = 4 bits of checksum. This gives 132 total bits to be encoded, and 132 / 11 = 12 words. You may have noticed that the checksum is only 4 bits in length, which is shorter than the 11 bits allocated for the last word. So the last word's index is actually composed of both the last 7 bits of the entropy and the entire 4 bit checksum.

With a 24 word seed, there are 256 bits of entropy, which gives 256 / 32 = 8 bits of checksum. This is also shorter than the 11 bits for the index of the last word, so this means that the 24th word of a 24 word seed "contains" the last 3 bits of the entropy and all 8 bits of the checksum.

BIP 39 itself has a table showing the number of entropy bits, the number of checksum bits, the total bit length, and the total word length for various entropy bit lengths.


Full node or Full node third-party services pros and cons

What are the pros and cons of running full node

it all comes down to the level of trust. Whom do you trust? Your own system, or someone else? And then, how much money are we talking about? Several low values, or monthly or yearly values?

For sure I recommend a full node. And yes, it has the disadvantage of downloading the blockchain (easily up to three weeks), and you need to have that infrastructure up and running. For this you gain the absolute security, that noone faked a block or a tx in the blockchain, that is assembled on your system. Also the level of privacy is higher than e.g. SPV nodes. A full node supports the decentralization aspects of the network. More full nodes, more tamperproof is the whole bitcoin eco-system.
Using RPC calls to your local bitcoin node requires then some developer knowledge, or a dev-team. That can add to costs in setting up your environment.

Using services like bitpay or similiar has the advantage of getting quickly started. This way you can start to setup your business, and later on, if you have really big values, you are still able to convert to a full node.

So from a risk perspective: when it is low values, go ahead with services from third parties, but when you achieve higher values (above monthly income), think about securing your environment with an infrastructure, that is under your own control.


Is Namecoin actually being used for anything significant?

I have some idea of what Namecoin was trying to achieve, but as of yet I've never seen it actually used. Is it being used for anything of significance yet, or are there plans by anyone to do so in the short to medium term?

If a distributed, first-come-first-serve domain name system for the .bit top-level domain (TLD) is significant, then yes, it has done something significant. There are several draft proposals for additional namespaces to cover things like messaging, identity, and .tor and .i2p TLDs.

  If I were to register a .bit domain name and host a website, can everybody with a standard internet connection setup access it, or is special software or other setup required?

There is and will likely always be some kind of special setup required to access domains that have not been approved by ICANN. If you're unable to resolve dot-bit.bit, then your domain name servers are not configured for it. I've used the DD-WRT instructions in the How To Browse .bit Domains guide with success. The servers change infrequently.


How can I get the transaction version from a hex dump?

From https://en.bitcoin.it/wiki/Protocol_documentation#Transaction_Verification we learn :

Almost all integers are encoded in little endian. Only IP or port number are encoded big endian.

You should look at the https://en.m.wikipedia.org/wiki/Endianness and flip the order of the bitstring to have the bit at the correct position
Using an online hex converter like this one
https://www.scadacore.com/tools/programming-calculators/online-hex-converter/ you can actually see that the hex interpreted as uint32 results to 1


Public notes are simply attached to addresses/transactions in the blockchain.info database, not in the blockchain itself, it's more of a convenience service offered by this particular website than a protocol feature.

And yes, you can make them on blockchain.info, you apparently do not need to own an address to tag it (some of my addresses got tagged without me doing it). The same is probably (I haven't checked) true for transactions.


Is it possible to add two secp256k1 points to get a "shared key"?

Yes, QA + QB = (dA + dB) × G, but this isn't used in ECDH as QA + QB can be calculated by third parties.

You can read about this property here.


No, that's not how it works. Blockchain (and most other HD wallets by default, as set in BIP 44) look forward 20 addresses before deciding that no more are being used, it doesn't ignore the ones before that. Its purely a way of telling which ones you're using, because you can generate effectively as many as you want using incremental indices, and you wallet shouldnt have to check them all every time you update your balance. So it checks index 1, then 2, and so on, until it finds a stretch of 20 unused addresses in a row before assuming it's reached the end of the addresses you are using currently. If at some point in the future, you received a payment on one of those 20 in the gap, the wallet would begin looking 20 indices higher from that one.

So the only way you could miss payments is if they were too far in the higher indices not lower, e.g. no payments on indices above 10 but one on 30 would go unseen, because the wallet would give up looking after 20 unused. That's why blockchain usually warns you if you're approaching the gap limit rather than silently letting you.


How does Bitcoin protect against inflation?

Inflation is increase in price without increase in utility. A car with similar features helps you get from point A to point B just like it did one year ago (same utility). However, the cost of the car increased by 2x one year later (higher price) indicating that the currency in which the price has been quoted has been reduced to 0.5x versus its value last year.

In an economy, we have economic output and wealth generation that happens over the course of years. This is represented by increased technological progress that brings in new jobs and as a result improves consumption of goods in the economy. In traditional economics, government tends to stimulate this growth by printing money and spending it on projects like infrastructure, research etc. However, most of the times the increase in economic output trails the value of currency that has been printed. This means slightly higher economic output is now being represented by much higher money in circulation, which results in devaluation of the currency.

In Bitcoin, the supply is capped at 21M. As Bitcoin gets used in almost all of our day-to-activities, it will indirectly represent the global economic output. As technological progress increases outputs, the same number of bitcoins will represent a higher economic output every year. Thus value of a bitcoin tomorrow is worth more than what it is worth today. On a relative basis this means Bitcoin appreciates in value with respect to other fiat currencies.


How does SegWit reduce transaction size, when the signature is simply moved to another part of the transaction?

TL;DR:
SegWit does not reduce the transaction size, if you're referring to the raw byte length of transactions. Instead it introduces block weight as a new metric that does not directly correspond to the raw byte length of transactions, but treats witness data as having less weight than other parts of the transaction.

The limit for Bitcoin blocks has been changed with the activation of segwit. Blocks used to be limited to 1,000,000 bytes (1MB). Since segwit they are limited to 4,000,000 weight units.

In calculating the weight of a transaction, bytes are weighed differenty depending on whether they are part of the witness or not:

A non-witness byte weighs four weight units.
A witness byte weighs one weight unit.

This has the effect that a non-segwit transaction contributes exactly the same portion of the limit as before. E.g. the raw bytelength of a P2PKH transaction with one input und two outputs is 222 bytes, and it therefore weighs 888 WU, i.e. 222B / 1,000,000 B = 888 WU / 4,000,000 WU. This means that for non-segwit transactions, the block weight limit has exactly the same effect as the blocksize limit had before, and it is backwards compatible.

However, for segwit transactions the weight is not a quadruple of the raw transaction size. E.g. the raw bytelength of a P2SH-P2WSH 2-of-3 multisig transaction with one input and two outputs is 409 bytes, but its weight 868 WU as a large portion of the transaction input is witness data. A segwit transaction will therefore take a smaller portion of the weight limit than its raw bytelength would suggest.

To allow easier comparison to legacy fee rates, the block weight is often expressed as "virtual size" in "virtual bytes" or "vbytes". The virtual size is calculated by dividing the weight of a transaction by four and rounding up to the full integer. For non-segwit transactions, the raw bytelength and virtual size are equal.

In conclusion, the raw byte length of blocks can now exceed 1,000,000B, but the virtual size cannot exceed 1,000,000vB.


No.

BIP-16 says that client executes script and if it matches P2SH - removes top item from the stack and executes it as script. That's all. No inner loops and checks.


Can Buy Bitcoin From Different country exchange and transfer to wallet

First, answering your question. Yes, you can send BTC from any exchanges/wallet to any other wallet including ZebPay's wallet.

Second, now here is where you are getting it wrong. Indian exchanges have premium values for Bitcoin because in our country India, it is very difficult to send money internationally without any strong reasons.

And even if you are able to send some money, you won't be able to do this for a large sum which can make a considerable profit for you in the long run.

Sending money internationally by wrong reasons can even get you a hefty fee to be paid and even jail.

But Indian exchanges like Zebpay, Coinsecure, Unocoin, etc make it easy and legally binding to buy BTC in our country.

So, unless someone find an easy way to send funds internationally and buy there and sell and continue this cycle, the BTC price in India atleast will be premium for that time.


Do we have to trust at least one DNS seed?

What you are saying is correct.

I'll quickly elaborate on why these hardcoded dns seeds are required. The attack you mention is called "peer list poisoning", a strategy that can be used to segregate someone from the network. There are two main types of peer list poisoning:

Dishonest nodes: the attacker poisons your peer list with real nodes, but malicious ones. All of your transactions would always be forced through these nodes.
Void nodes: the attacker poisons your peer list with non-working nodes, a strategy often used to dismantle malicous P2P botnets.

You may think the DNS seed require an element of trust but it doesn't. There are ways to verify that a DNS seed is honest: if you run your own 24/7 Bitcoin Node with the right setup then your address should be available in a list returned by a DNS seed. They crawl the whole network and regularly revisits known nodes to check their availability. DNS seeds do not return a full list, so it's not very practical.

There are alternatives to using DNS seeds, such as crawling the network yourself, or even bruteforcing IP addresses and attempting a connection.


Stratum Server Exception "[coin] is not connected"

If anyone runs into this problem then check your coin daemon settings.

I got it because my client didn't find any nodes to connect to. I found a list of nodes and added them in my COIN CLIENT SETTINGS.

I.e:

addnode=xx.xx.xx.xx

Restart the client, run client-cli getinfo to make sure you're downloading blocks. If it works you should be seeing

ERROR mining __init__.setup # CoinD downloading blockchain... will check back in 30 sec

Let your client update to the latest block and everything should be just peachy.


The answer to this is probably much larger and more general than just being applied to your question.  From a generalised point of view, businesses that specialise in certain activities are able to master them, which in an even more general sense, is the same reason usain bolt never competed in javelin and high jump.

More specifically, exchanges and wallets ARE combined.  All user accounts in exchanges have wallets in order for their users to be able to hold their coins there.  Admittedly the wallet systems in exchanges are different, in that they are only representations of the value you’ve transferred to the exchange, and not actually a wallet in which you have key-control over, but still the same purpose is served.

With regards to combining mining and trading, there is very little benefit from combining these two, in that there are no reductions in complexity or increased efficiencies for users to be had here.  Transferring coins from a mining pool to an exchange, or visa versa, is easy anyway, and if you were trying to establish either of these businesses focusing on one of these would reduce the amount of resource-splitting needed to successfully set up the conjoined version.

ICOs are not really location dependant and can be run from platforms like waves, or from the website of the ico.  ICOs and mining are quite incongruent, in that there is very little benefit from crossover.  A platform to handle trading and ico offering in the same place is however more of an interesting concept.


OP_LSHIFT & OP_RSHIFT purpose & functionality

For all intents and purposes, Bitcoin has no such opcodes.
Very early versions of Bitcoin's reference implementation did, until version 0.3.10 (August 2010) when they were disabled together with a number of other opcodes. New opcodes with identical functionality could be re-introduced now with a softfork, but the fact that similar opcodes existed historically wouldn't make that any easier (or harder) - they'd just be new opcodes.
As for what they did: they implemented an operation similar to the >>= and <<= C/C++ style operators, multiplying and dividing by a specified power of two.


I think HASH160 is the standard/preferable to SHA-256 in locking/unlocking scripts just because its digest is smaller (20-byte digest instead of 32-byte of SHA-256) and, therefore, it takes less space in the blockchain. As it takes less space, you pay less in mining fees with no security cost (160 bits is well above the 128-bit threshold)

Remember that with HASH160 you are already hashing twice (HASH160 = RIPEMD160(SHA-256)) so the little security benefit compared to two rounds of SHA-256 doesn't compensate for the extra fee/blockchain space.


What stops people attacking my new coin?

Firstly, if he downloads the client wouldn't he have to sync with the existing block and be up to date.
From what I'm able to understand your concern is time warping (it should be but it kinda got solved in july 2010 for bitcoin if your coin is a fork of the bitcoin source). But to simply answer your question his solved blocks would have to get approved and even if they do they will get added to the network and synced to the current ledger. Therefore, only the blocks 10000 to 12000 would be solved by him and no it won't make it sync to his nodes.


Yes. On their sales listing they note specifically that they have passed FCC and CE approval, and their products bear the markings for this accordingly.


Is it possible to add funds to an already-open lightning network channel?

This proposal (or similar solutions requiring an on-chain transaction) would move funds in the channel back from user B (Bob) to user A (Alice).  This is useful, because a channel may have more traffic in one direction, meaning at some point no more transactions can flow in that direction.  A single on-chain transaction is preferable to the two that would be required to close and then reopen the channel.

However, to say that this is adding money to the channel is incorrect.  That is not possible without reopening the channel.  Let me illustrate:

Let's say that Alice and Bob each contribute 0.5 BTC to opening transaction of the channel.  This means there is a total of 1 BTC in the channel to begin with:

Alice (0.5) ================== (0.5) Bob

After some time, more traffic has gone from Alice to Bob than from Bob to Alice.  This means that Alice's side of the channel is depleted, but Bob's still has plenty of funds:

Alice (0.05) ================== (0.95) Bob

Now, let's say that Alice sends Bob an on-chain transaction (not over the channel), to essentially buy back some of her BTC:

                  on-chain
              -----(0.45)---->
  +--->--->--->--->--->--->--->--->---+
  |                                   |
Alice (0.5) ================== (0.5) Bob
              <----(0.45)-----
                 over-channel

This works to rebalance the channel, but it does not add any funds to it.  There is still only 1 BTC in the channel.  The funds from the on-chain transaction goes into Bob's personal Bitcoin wallet, and is not on the lightning network.  It does nothing to increase the size of the channel.

This technique may prove to be useful to prevent channels from becoming unbalanced, so I don't mean to imply that this is not useful.  It is also important to note that a similar technique could work by using an alternate lightning route from Alice to Bob:

            routed through Charlie
              -----(0.45)---->
  ===============(Charlie)=============
  |                                   |
Alice (0.5) ================== (0.5) Bob
              <----(0.45)-----
                 over-channel

This would eliminate the need for an on-chain transaction.  However, if an alternative route exists, it would probably make more sense to leave the Alice-Bob chain unbalanced, and simply route payments along the Alice-Charlie-Bob route.


blockchain.info api (Balance Updates [POST]) confirmations not received

You need to set onNotification to KEEP, otherwise all future notifications such as those for confirmation number will not be sent.

From the docs:

  You are required to specify the request's notification behaviour. Setting the behaviour to 'DELETE' will delete the request after the first relelvant notification is sent to your callback address. Setting the behaviour to 'KEEP' will send additional notifications every time a transaction with the specified confirmations and operation type is sent to or from the address in the request.


How do I receive Bitcoins from my clients who owe me money?

You send them a bitcoin address along with the invoice. Use a different address each time, so that you can tell who paid you.


Does Bitcoin Core validate signatures by default?

Bitcoin Core does validate all signatures after a certain point, and can be configured to validate all signatures in history if so desired.
The assumevalid feature only disables signature validation for blocks prior to a specific configured block which is updated for each version. This block is typically several (tens of) thousand blocks deep by the time the release is actually made. Any block which is an ancestor of that particular block (and that block is in the main chain) will not have the signatures checked. All blocks that come after it will have their signatures checked. This means that once your node is synced, all new blocks will have the signatures checked.
Furthermore, this assumevalid is not a checkpoint nor does it operate on block heights. If, for some reason, there was a reorg which removed the assumevalid block from the main chain, then all signatures in the blockchain would be validated. It is merely an optimization and does not affect the security of your node.

can Bitcoin core even claim to be a full node?

Yes, there is more to being a full node than validating signatures. There is more to validation than just signatures. Bitcoin Core still checks the PoW, that the outputs being spent existed, etc.


Bitcoin database needs to rebuild every time after defrag or reboot

Shutdown Bitcoin-QT cleanly and no reindexing is needed.

The reindexing of bitcoind database is only needed if the application did not have time to properly shut itself down and write all information in its memory to disk.


Why are Lighthouse campaigns limited to 684 pledges?

Lighthouse's Frequently Asked Questions (FAQ) says:

  Currently you cannot accept more than 684 pledges for your project. This is due to limitations in the Bitcoin protocol - the final contract that claims the pledges is a single Bitcoin transaction, and thus is limited to 500 kilobytes by the Bitcoin block size and protocol relay rules.

Note: "500 kilobytes" is a typo---I just confirmed this via email with Lighthouse author Mike Hearn.  The correct size for standard transactions is 100 KB.  Mike is also thinking about bumping up the standard size in his Bitcoin XT project to allow miners to opt-in to the larger size.  (That hard limit, for now, is slightly less than 1 megabyte---a whole block.)

Of that 100 KB, a small part is the output (TxOut) that pays the receiver of the funds (you, in your case).  If you use a standard P2PKH or P2SH pubkey script, the output will be 34 bytes or less.  There's also a small part dedicated to the transaction metadata (such as the transaction version number); the size of the metadata varies a bit by how many pledges you get, so lets round it up to 20 bytes.  That leaves 99,946 bytes left for pledges.

99946 / 684 = 146 bytes per plegde (rounded down).  A pledge is a single input (TxIn) that pays the output described above.  The input is (if necessary) pre-spent to ensure it has exactly the pledge amount---that means there's no change output to worry about.  The Lighthouse design document doesn't explicitly say what type of input it spends, but I'll assume it only spends P2PKH inputs using compressed public keys, which are:

36-byte outpoint
up to 72-byte signature
1-byte signature hash
33-byte compressed public key
2 bytes of data pushes

... for a total of 144 bytes.

The Lighthouse FAQ also says in that same section:

  A future version of Lighthouse could optimise its usage of transaction space to bump up the maximum number of pledges by another few hundred.

I suspect the optimization Mike is implying would be using P2PK inputs, which would be:

36-byte outpoint
up to 72-byte signature
1-byte signature hash
1 byte of data pushes

... for a total of 110 bytes.  If implemented, this would allow 99946 / 110 = 908 pledges per transaction, or about a 30% increase.  There are a few other ways to optimize, such as requiring smaller signatures, but these provide rapidly diminishing marginal gains.


requesting transaction information through peer2peer network got notfound

This only works for unconfirmed transactions. Nodes do not maintian an index of confirmed transactions because this is unnecessary, so you will receive notfound.


Do USA-based miners need to register with FinCEN?

No, the fincen guidance you posted has it in plain english that you do not. A miner is simply a user.

 c. De-Centralized Virtual Currencies

        A final type of convertible virtual currency activity involves a
de-centralized convertible virtual currency (1) that has no central
repository and no single administrator, and (2) that persons may obtain
by their own computing or manufacturing effort.

        A person that creates units of this convertible virtual currency and
uses it to purchase real or virtual goods and services is a user of the
convertible virtual currency and not subject to regulation as a money transmitter.
By contrast, a person that creates units of convertible virtual currency and sells
those units to another person for real currency or its equivalent is
engaged in transmission to another location and is a money transmitter....

On the exchange you are buying/selling bitcoins. The exchange carries the burden of giving you legal tender or a different cryptocurrency. The exchange carries the burden of regulation, according to the FinCen regulations. In the US, the equivalent of real currency is only treasury bonds.

Also, Fincen regulations only take affect at certain dollar amounts, if you feel you need to be concerned about them.

You can also try to get even further clarification from the Treasury yourself, because on this matter it doesn't matter what kind of legal counsel you ask, nobody knows all the semantics until an issue comes up that is actually decided in the courts.


Why is my bitcoin wallet keep telling me: there was a problem sending your transaction uneconomical UTXO requested

To state simply, you don't have enough money to send, your output was 4142 satoshi in the previous transaction but you need 22013 satoshi, try to find out if this is because of hidden tx fees or your trying to send from the wrong wallet/ transaction chain


What are the most respectable Bitcoin news websites?

Here are a list of blogs/sites I follow to keep up with bitcoin news:

reddit/r/bitcoin - user aggregated bitcoin links/topics, usually anything notable will be posted here.

Bitcoin Magazine - also available as an actual physical print magazine.

Cryptocoin News - mentions altcoins, but Bitcoin is most prominent

CoinDesk - a relatively new entrant to the Bitcoin news space

The Genesis Block

The Monetary Future - not exclusively bitcoin related but often covers bitcoin or related topics. This blogger (Jon Matonis)  is now a Forbes blogger and the content will typically appear on the Forbes site first.

Coding in my sleep - a personal blog  but more and more bitcoin related topics recently.

The Bitcoin Trader - excellent blog on bitcoin related topics. (less active recently (end 2012))

Bitcoin Money - another bitcoin blog.

Bitcoin Miner - bitcoin mining focused blog.

Bitcoin Watch - has a collection of links to the latest news along with exchange stats etc.

stuffexists.com - collection of lots of useful links.

Bitcoin Media - blog with articles mainly by Amir Taaki (genjix) (a Bitcoin developer)

blockchained.com - has a Top 16 Hot Topics from Bitcointalk.org (seems to use an algorithm to rank the most active current topics) as well as charts an some news links (was bitcoinx.com but that currently only has charts)

Bitcoin on Quora

Bitcoin on Twitter

The press sub-forum of bitcointalk.org is usually kept up to date with any press on bitcoin


Bitcoin client downloads blocks from different peers

Since Bitcoin Core 0.10, the following mechanism is used:

We start off by asking peers for their best headers, and thus learn the most-work chain's headers quickly, and which peers have which parts of it available.
In the background, we continually ask peers for their blocks, in sequential height order, under the following conditions:

If a block is already asked from another peer, we don't ask for it again.
If a peer's known best block's corresponding chain has less total work than our currently active (fully downloaded and validated and accepted) chain, we ignore that peer - they'd only get us onto a fork that's worse than what we have.
If the only available blocks from a given peers that aren't already being downloaded already, are more than 1024 blocks ahead of our currently active chain, we don't ask anything (more) from that peer.
If there are already 16 or more blocks in transit from a given peer, we don't ask any more blocks from that peer.

All of this is subject to various timeout rules. In particular, when we're waiting for blocks from a single peer before we can download more from everyone else (because every other block in the 1024 that succeed our active chain is already downloaded), we disconnect that peer, and mark all its in flight blocks are available for fetching again from others.


If I sent Bitcoins to family in Europe, would they be able to convert it to physical cash?

When bitcoins are converted to local currency (EUR, USD, BGN, etc.) and you want to take control of them yourself (as opposed to it being stored as that currency in the exchange you're using), they typically are sent to your bank account. From there, you could easily withdraw the money as cash. There's nothing that would make them have euros but only be able to spend them online.

One place to trade the bitcoins for various local currencies is LocalBitcoins. You might also see if Mt.Gox has options to transfer to bank accounts in Bulgaria.

You and/or your family should research the available options, and how they compare to more traditional international money transfers and choose what works for you. While the bitcoin transaction itself has only a tiny fee, buying and selling might be more trouble and expense than it's worth.