Extract sender ID and recipient ID of a bitcoin transaction I'm new to this world and I'm trying to learn the blockchain world and especially now I've concentrated du bitcoin-core, I would like to parser and get the various information like the various sites where you enter ID of the wallet and you get all its information including transactions.

In particular I am interested in getting information on the type transactions, Id wallet sender and Id wallet recipient.

I do not ask any ready solution but only a hand to understand where to start and where to document.

I saw that on the net there are various blockchain parsers but at least the ones I met did not allow me to obtain the information I'm trying to figure out how to get them.

Thank you and above all excuse me if I asked stupid questions but I'm learning

Extract sender ID and recipient ID of a bitcoin transaction

Transaction data in the blockchain does not include any ID for a "sender" or "recipient".

Transaction data includes scripts used to spend cryptocurrency amounts listed in the transaction data. The most common of these scripts specify what is commonly called an "address" but that is derived from a public key and is nowadays usually unique to a transaction. It is designed to be difficult or impossible to identify a sender or recipient from these "addresses".

  sites where you enter ID of the wallet

There are no sites (in general) that do that because cryptocurrency wallets don't have wallet-IDs. Certainly none that are part of transaction data in the blockchain.

The only really significant data in a wallet is the private-keys it contains. Recovery-phrases or seed-phrases may be used to re-create these private keys. A wallet's data may be protected by being encrypted on disk using a password or pass-phrase. None of these constitute a wallet-ID.

Blockchain explorer websites generally allow you to examine blockchain data associated with one of

address
transaction-ID
block number (height)
block hash

None of those really constitute a sender-ID a recipient-ID or a wallet-ID.

Decoding Transaction Data

A good explanation of the structure of a Bitcoin transaction in a blockchain block can be found at https://en.bitcoin.it/wiki/Transaction

This gets more complex as time goes on and new features are added (SegWit, Bech32, ...) or when you need to fully decode lesser-used types of transactions (n of m multisig?).

Search for Code to parse a Bitcoin transaction

A few unintuitive aspects of Bitcoin and similar cryptocurrencies:

Wallets don't contain bitcoins.
The blockchain does not contain bitcoins.
Bitcoins are not really sent or transmitted through the Internet.
Bitcoins don't really exist anywhere - they are more a unit of measure.
The blockchain is not really a ledger (it is a journal).
Bitcoin addresses don't label places or people or wallets.
Bitcoin addresses are not used to deliver transactions or bitcoins somewhere.
Bitcoin transactions don't have to include any addresses.


Calculating Hardware Efficiency through Hash Rate per Second I was wondering if any of you could help me in making my own mining calculator. I know there are many good web apps out there, but I would like to make one myself.

What I don't understand is how to calculate the statistical outcome, knowing a given hardware's hashrate per second and the difficulty level.

Do you know what formula should I use?

If you have Excel, try:

BTC Per Day = (B3*POWER(10,9)/B1)*(B4*B6)/B5
B1 = 907549524 (Difficulty Factor - obtained from http://bitcoindifficulty.com/ or
http://bitcoinwatch.com/)
B3 = 70 (Hashing Rate in GH/s)
B4 = 25 (Block Award in BTC)
B5 = POWER(2,32) (Is a constant, is the number of integer nonce
values that can be hashed with a 32 bit integer register)
B6 = 86400 (seconds per day)

Answer for #1 is 0.038790162 when the data from B3, B4, B5 and B6.

I add two other fields in my spreadsheet: 1) Difficulty Factor Compound Rate in % per 2048 Blocks (somewhere around 15% to 20%), 2) the value in BTC denominated in USD. The remainder of the spreadsheet I use determines risks associated with late ASIC hardware deliveries in terms of BTC or USD opportunity losses.  Absolutely, don't use any of the online mining calculators to make big Mining H/W acquisition decisions... You must take into account the non-linear difficulty factor compounding rate to make reasonable computations of what your profits are likely to be. Otherwise, your estimated profits are likely to be losses...


bcoin watch only address Can anyone tell me how to set up a watch-only address using bcoin?

while using the command:

bcoin wallet create myNewWallet

this will always be a  "watchOnly": false wallet by default. Is there any documentation for these commands?

The commands are listed on the bcoin GitHub wiki

The command you are looking for is
bcoin wallet watch [address]


What does best block time mean in wallet.dat I have a wallet.dat file that states:

Best block at time of backup was 42603 (0000000013136bd812212959a15ef0ea0f084ee2c64e2f7f0e127d198f67a37f),
mined on 2010-02-26T00:36:08Z

Does that mean that one of my address mined on that block?  Or is it just referenced with no correlation to my private keys with unspent coins?

Its the time the wallet was last synchronized to, it won't know about any transaction changes in or out past this time until it has been loaded again by a synchronized node. It has nothing to do with your transactions specifically.


How to look what you have mined in 2011 I want to get rid of an old computer, but I checked it for bitcoins, because I knew I tried to mine in the past.
If found this

[img]https://snag.gy/YjCtkI.jpg[/img]

wallet.dat file from june 2011

among with some other files like

__db.001 etc.

blk001.dat

db.log

I'm just curious if there are some coins in it. But I dont know how to access it.
So my question is :
Do I need to download an mining program and sync with the the complete blockchain ?
Anyone an Idea where I can find instructions what to do?
And anyone knows where all these files are for?

What you need are the private keys, which are contained in the file wallet.dat.

You can access them by importing wallet.dat into a new installation of Bitcoin Core, or any other wallet client that is able to read the wallet.dat format.  You will then be able to spend the coins, if any, using that wallet client.

If you choose a wallet client which is a full node (e.g. Bitcoin Core), then you do have to download and sync the entire blockchain (currently about 130 GB).  You can also choose a "thin" (SPV) client such as Electrum which does not need to do this, at the cost of slightly increased vulnerability to certain kinds of fraud.  You can see a list of currently available wallet clients at
https://bitcoin.org/en/choose-your-wallet.

You could also use a tool like pywallet to list the addresses whose keys are in the file, and look up those addresses on a block explorer like http://blockchain.info.  This will tell you whether you have any coins, though you would still have to import the file (or at least the keys, which you can also list with pywallet) into another wallet client in order to spend them.

All the other files store the full blockchain and transaction register as of the last time you ran the program in 2011.  You don't need these files for anything.  If you install a new wallet client, it will re-download this data if it needs it.


How does Bitcoin transmit transactions? What is the underlying mechanism?

Do you transmit a message to a local node who then relays it? How does that relay work? I know about DNS seeding but then how does the rest of the relaying occur? If every node transmitted every transaction it received then that's a lot of network use and a lot of retransmitting the same message to the same nodes.

Bitcoin uses a gossip protocol to transmit blocks and transactions. When you connect to the Bitcoin network, your wallet becomes a node on that network. It maintains one or more connections to other nodes. When you send a transaction, you send it to all of the nodes that you are connected to. Then they check the transaction against their node policy rules (which also typically include consensus rules). If it passes all of the checks, the node will store it locally and then broadcast the transaction to all of the nodes it is connected to. And so on and so forth until all nodes have heard the transaction.

The same happens with blocks except that they are only verified against the consensus rules, there are no local policy rules for blocks.

There are things done to prevent nodes from receiving the same transaction multiple times. Most nodes, when broadcasting a transaction, actually first announce to all of the nodes it is connected to that it has a transaction. Then those nodes must ask for that transaction before it is actually transmitted. This way nodes won't receive a transaction multiple times since they are asking for the transaction, not actually being sent it right away.


Linking bitcoin addresses Is it possible to link multiple bitcoin addresses under one private key?

This would make signing raw transactions easier.

Is it possible to link multiple bitcoin addresses under one private key?

It is possible to derive different addresses from a single private key, namely one address from the private key's compressed public key, and one from the private key's uncompressed public key.

If you sent bitcoins to each of these two addresses, they would exist as separate UTXOs, even though the same private key could sign to spend the funds in either address.

  This would make signing raw transactions easier.

I'm not sure what is meant by 'easier' here, but in general, it is advised that users do not handle keys themselves, rather let the software take care of this.

Perhaps also worth mentioning: BIP 32 HD wallets allow many keypairs/addresses to be generated from a single seed/extended key. However each address generated in the HD wallet can only be spent by signing with the private key associated with that address. A parent extended private key cannot sign for child address transactions (it is instead used to derive the child private keys, which can then be used to sign transactions).


Bitcoins didn't arrived 3-4 days ago, I transferred bitcoins from Virwox to my Electrum wallet, but this bitcoins didn't arrived, what can i do?
1JPSVx7hjcu7rR2Vr6nyz7z8mok3yryGZ

Don't worry, you're coins are safe. You only need to fix the connection. You should go to Tools -> Network and then choose a server.


How can I convert my Bitcoin to Western Union urgently? I tried posting in some forums but got no replies.

Is there any reputable exchanger out there that can send me Western Union transaction for my Bitcoins? It's not a big amount and I don't mind paying fees to both exchanger and the Western Union.

There are many Bitcoin buyers on LocalBitcoin who are willing to pay via Western Union. Look for someone with a very high feedback rating and do not release the Bitcoins from escrow until you are sure the payment you have received is final.

https://localbitcoins.com/sell-bitcoins-online/western-union/


Could Bitcoin be based on accounts instead, more like banks? In banking, a user's account will have a balance, and when they spend an amount is credited from their balance. For example, the account #310 could have $100, and spending $10 would reduce it to $90.

Bitcoin on the other hand makes you spend all $100 from the account in a transaction, but the transaction could have two outputs ($10 and $90 - you would keep control of the new $90 account).

Why was Bitcoin set up that way instead of the other way? The other way seems more natural. You'd just sign a transaction as coming from your account and going to someone else's account.

It could, yes. Ethereum works on something similar to an account system, at least as far as ethereum balance is concerned. Both models are valid, and have their benefits and drawbacks.

The UTXO model allows for great parallelism and privacy. Each transaction can create UTXOs to new addresses, and different UTXOs can be spent independently and parallely.

The account model requires some form of ordered execution (achieved via a nonce in ethereum). Moreover, a single transaction cannot combine balance for two different accounts in current implementations, while you can combine UTXOs from as many addresses are you wish in a single transaction.

As to why Bitcoin chose a UTXO model over a balance one, I don't think an authoritative answer exists on that. It's what the creator(s) of Bitcoin started with, and there is no pressing reason to change it.


Do mining pools eliminate the need to store blockchain? Suppose I want to design generic crypto currency miner starting from scratch . By generic I mean it can be configured to support a large number of available crypto currencies.

This generic miner must be able to connect to mining pools for the coins it supports in addition to being able to mine solo. In the case that it is configured to connect to mining pool , it does not need to store the blockchain on the PC on which miner is running? In this case the blockchain is stored on the server running mining pool? In this case the miner PC only has the current block?

The answers to above questions do not depend on wether the miner is configured to use CPU or GPU or both?

A mining pool does need to store the entire blockchain, however that doesn't mean that every participant of the mining pool needs to store it.  Someone in the pool needs it, but not everyone.

Individuals in a pool can just be sent block headers and perform the proof-of-work without ever verifying the transactions themselves.  This does not require the full blockchain.  However, someone should have already verified the transactions ahead of time, and this node does need the blockchain.


What are the factors that drive the cost of bitcoin mining? Bitcoin mining is vital for maintaining the integrity of the blockchain ledger. If the cost of bitcoin mining gets too high and enough miners give up, the ledger will not be maintained properly and many transactions will fail. To understand this risk, I would like to understand the factors that drive the cost of bitcoin mining.

The main factors making mining attractive are :

The coin's value
The mining difficulty
The price of electricity
The price of the required hardware
The mining fees

The higher the coin's value the higher the miner is rewarded. The less difficult it is, will likely result in more coins. Some countries have almost free electricity which makes mining much cheaper. There's also the initial investment, which is the required hardware for mining. Mining fees also help increase mining's profitability.

When mining a coin becomes attractive more miners will come which would result in more CPU power which gets corrected by a higher difficulty. If suddenly half the mining power was to disappear, we would see a difficulty adjustment.


Transaction with Multiple Inputs having Same Address Why do transactions have multiple inputs with the same address? Is it because the amounts were obtained in the address through multiple separate transactions. Shouldn't the amounts be clubbed to a single input since the addresses are the same. An example is this one.

Shouldn't the inputs be 1LS1h8UJFgAFqRsw8WqjszBdJWDQg3hj6d with 0.01580432 BTC instead of repeating the same address with 0.00396188 BTC and 0.01184244 BTC.

Thank you.

Inputs do not refer to addresses, but rather unspent transaction outputs (UTXOs).  If there are multiple UTXOs payable to the same address, then a transaction spending those UTXOs will have to list them individually, and cannot lump them together into a single input.  The fact that all the UTXOs are payable to the same address doesn't matter; they still need to be listed as inputs separately.


What is the algorithm used to sign data within Nxt? I understand that Nxt uses Curve25519 to generate pubkeys for user accounts, however, I can't find a reference that states what which signing algorithm/process is used for transactions and blocks. (Sorry, I also don't have access to the source at the moment.)

How does Nxt sign and validate transactions and blocks?  Note, I'm not interested in discussing POS.  I'm strictly interested in how Nxt signs and verifies its data.


How secure is an encrypted wallet? Would you store an encrypted wallet (backup) of significant value on dropbox?

Assuming the passcode is good and secure.

The wallet in question is bitcoin-qt, encrypted using the built-in encryption feature.

Yes, you could store encrypted wallet in the dropbox.
From the first glance into the source code, the encryption algorithm is AES 256 CBC. This is industry standard protocol that is NOT known to be brute-force crackable* (subject to correct usage). You can read up more on the B. Schneier blog AES tag, where the most recent post say

[...] Reading the above, the obvious question to ask is: can the NSA
break AES?
My guess is that they can't. That is, they don't have a
cryptanalytic attack against the AES algorithm that allows them to
recover a key from known or chosen ciphertext with a reasonable time
and memory complexity. I believe that what the "top official" was
referring to is attacks that focus on the implementation and bypass
the encryption algorithm: side-channel attacks, attacks against the
key generation systems (either exploiting bad random number generators
or sloppy password creation habits), attacks that target the endpoints
of the communication system and not the wire, attacks that exploit key
leakage, attacks against buggy implementations of the algorithm, and
so on. These attacks are likely to be much more effective against
computer encryption.

There are chances, that the satellite code around the algorithm wasn't used correctly, or that there is a back door. There are some talks on the general security concepts in this thread. Despite it being open-source, there is no guarantee there are no bugs.
As an alternative you can store your wallet on the encrypted TrueCrypt partition. TrueCrypt source code is currently being investigated by the independent body for the security flaws.
Personally, I would use default encryption and trust it provides sufficient level of protection. Make sure your pass-phrase is strong, long and random, and that it is stored securely.


Getting multiple OHLCV candles with API with one request i don't know if this is the right place to ask this, but i haven't found a proper one to do so, so here we go :

I wanna get only the LAST OHLCV candle from multiple markets with the cryptocompare api using only one request. Is that possible ?

For example : I can get multiple coin prices using only one request by doing this : https://min-api.cryptocompare.com/data/pricemulti?fsyms=NXT,OK,XRP,LTC,1ST,PAY,XVG,XLM,BCH&tsyms=BTC&e=Bittrex

I want to do the same thing, but getting the last OHLCV (1 min, 5 min, 15 min...etc) instead. Is that possible ? If it is, can someone explain me how to do it ? If cryptocompare does not support this, is there any other API that allow me to do this ?

Thanks in advance!

You can do this with ClueDex. By default, all Bittrex markets are returned in a single query. You can specify how many candle data you wish to get with the "periodqty" parameter. In your case, you make periodqty equal to 1 for the last period.

Additionally, you can create your own period, you aren't limited to the standard periods. For example, if you wanted 30-second periods, you just specify the "period" parameter as 30S.

If you had a need to go back in time Cluedex also has the capability to do that, too.

The only drawback is, if it even is one, is that it's not a free API, it's premium. However, the prices are reasonable and the data isn't cached.


Should I deposit 0.01 bitcoins? I recently won 0.32 in bitcoins as I have been getting into NFT. I wanted to sell the bitcoins that I won, but in order for me to withdraw the bitcoins it’s asking me to deposit 0.01 bitcoins. Is this process usually like this?
The website is www.recrypto.com. Would it be smart if I invest in the 0.01 bitcoin to be able to withdraw it all (as the 0.01 deposit is just a verification step)? I would then withdraw 0.33 bitcoins.

I'm sorry to say this is a scam.  Put it in dollar terms.  Someone is telling you that you've won a surprise $20,000 (not very believable in the first place).  But to get it, you have to send $600 for "verification" -- what possible reason could there be for this except to enrich the scammer?  They'll never send the $20,000, and you'll be out the $600.   (If you send the $600, they may try to  finagle more money from you until you eventually give up on ever getting the non-existent "prize  money".)


Why does my wallet say that I have 0.00BTC and 8.91 unconfirmed, when I had done nothing with them? Here is my BTC wallet page. Is it normal that I have 0.00 ?

Once your client finishes downloading the block chain then everything should show as confirmed.


How can you tell a block is Classic vs Core? Sites like http://xtnodes.com/ are tracking which versions of Bitcoin software are being used to create blocks. Where are they looking in the block structure to determine which software version generated the block?

Ah, not surprisingly, it's in the block's "version" field. It looks like core blocks are versioned as "v4", while "classic" blocks are versioned as "v805306368" and "BIP109".


Is there anything preventing Lightning Network from passing embedded data in OP_RETURN? As long as you pay a BTC fee for all the routing node incentives and the last layer in the onion routing includes a transaction with OP_RETURN, wouldn't that allow using OP_RETURN for various applications?

I realize the current implementations don't do this, but am I missing if there's anything that prevents it fundamentally?

Thanks!

(If the issue is that the local channel at the end won't keep track of OP_RETURN on next update, couldn't the last transaction include virtually opening a channel to the original node (the person who sent it originally) that is OP_RETURN-aware and thus would keep updating it?)

Not sure if I might miss a point of your question. But to me it seems that what you suggest is conceptionally not possible.

Lightning payments work fundamentally different than Bitcoin transactions. In particular lightning payments themselfes don't have any Bitcoin script inside them. The onion format for the payment is really just an amount, a payment hash and a next hop.

The lightning nodes themselves use the data from the onion to construct htlc outputs in their respective local channels (commitment transactions) this is where Bitcoin transactions are used to fulfill the contracts needed for lightning. The sender however has no influence on the used scripts. So there is no way to squeeze in any OP_CODES


How to find/view derivation path in Bitcoin Core I have found many default derivation path online which is used in bitcoin core, but i still can't get the correct one so that i can import my bitcoin wallet to my electrum wallet (BIP 39 option) with 18 words seed which i had got from bitsblock.io while initial download. I wanted to know how can we exactly find the derivation path in Qt GUI, as i had found a command online wallet.keystore.derivation but it doesn't work.

How to find/view derivation path in Bitcoin Core

See Default derivation paths

  so that i can import my bitcoin wallet to my electrum wallet

I've read this cannot be done in Electrum.

  18 words seed which i had got from bitsblock.io while initial download.

That's not Bitcoin core!

The bitsblock.io website copied the visual style of Bitcoin.org -- which seems a bit suspicious?

It is a recently created domain

Domain Name: BITSBLOCK.IO
Creation Date: 2019-10-23T15:24:40Z


Am I Being Prodded By A Bitcoin Mining Scammer? I had someone approach me via an insta post, because i found his account and liked a photo. He said he was a bitcoin miner and forex trader in LA california, and asked if i was interested in earning returns daily. We exchanged whatsapp numbers and the conversation below happened (hopefully the pictures upload

After this he led me through the process of downloading and setting up a wallet with the app BlockChain (popular trusted app right?) And showed me where the recieving wallet was. I shared my receiving wallet code with him.
He then had me go on the site www.coinmama.com to buy bitcoin for my wallet.

I told him i would do this tomorrow, and am now trying to think the situation over.

Is there a scam around bitcoin mining that involves this process, and what should I be aware of?

I don’t plan on sharing my sending code to anyone, or my bank account. But if he knows my receiving code, is he planning on scamming all the money?

Many thanks for any replies. I have a nominal education on the exchanges but I have a head in me, and a massive scam detector.

This is most certainly a scam, the scammer's messages explaining  how Bitcoin works are pretty much nonsensical. Disregard all the jibberish he wrote to you, if you'd like to learn about Bitcoin, this is a great question to start with: I am new to Bitcoin, how can I get started?.

DO NOT use the wallet you created with his help. Just forget you ever created it, if you want to learn to use Bitcoin, you must create a new wallet in the future.

There is a known scam where the scammer will 'assist' when setting up a wallet, and they will copy down a wallet 'seed phrase' that will let them re-create your wallet on a different computer later. It doesn't matter if you change your password, once they have the seed phrase they can have access to your coins.


What is ASIC hardware good for besides mining? Are there any other uses for ASIC hardware besides mining crypto?
Also what are the consequences of the hashing power race?

ASIC stands for Application Specific Integrated Circuit.

This is hardware that is specifically designed for one use case.

Bitcoin mining ASICs are good at one thing: Bitcoin mining. If they were good at more things, they'd be less efficient and/or more costly than they need to be, and competition would replace them.


What are the weakest cryptographic guarantees in Bitcoin? I read in this Github pull that Bitcoin relies on weaker cryptographic guarantees than SHA256.

What are the weaker cryptographic guarantees being referred to?

Could it be that RipeMD is 160 bits? ... or is it something else? Perhaps in the ECC curve itself?

This doesn't directly answer your question, but in ECDSA, if the private key is close to one of the 768 rendezvous points on the secp256k1 curve, it is considered a weak private key and can be compromised. See this BitcoinTalk thread. In practice, this isn't a huge threat as long as you use a good source of randomness since the space around those rendezvous points is a miniscule fraction of the total keyspace.


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 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?

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.


Blockchain.info Wallet Format I've noticed that BCI's Wallet version has been updated to version 2 in recent times (and also employs key stretching, amongst other security features).

I've referred to BCI's Wallet Support Page and it says Version 2 wallet data is of the following format:

{
"version" : "2.0",
"pbkdf2_iterations" : 10000,
"payload" : "ENCRYPTED VERSION 1 PAYLOAD (SEE BELOW)"
}

What about the below JSON object (which can be accessed via URL of format https://blockchain.info/wallet/INSERT_GUID_HERE?format=json&resend_code=false)? What version does this correspond to?

To be clear, the difference is my JSON data is missing:

the pbkdf2_iterations variable
the version (=2) variable

For the data in question, here is the (edited) JSON object which is taken from the aforementioned link (replacing GUID with the actual GUID):

{"initial_error":"For Improved security add an email address to your account.","auth_type":0,"real_auth_type":0,"symbol_local":{"symbol":"$","code":"USD","symbolAppearsAfter":false,"name":"U.S. dollar","local":true,"conversion":442752.14734791},"clientTimeDiff":26055161055,"war_checksum":"c8c296cf351e7691","language":"en","symbol_btc":{"symbol":"mBTC","code":"MBC","symbolAppearsAfter":true,"name":"MilliBit (mBTC)","local":false,"conversion":100000.00000000},"extra_seed":"89e4807b343acfed576c474a675da1daac3ddb76691d05963a9e0a76533ca7ad4cd12ff058b40a1dd2f57a40759bb484a3708c3545ccfd995913964f148d405f","payload":"PAYLOAD DATA","guid":"GUID","serverTime":1423127480609,"payload_checksum":"8f8e16d79e7528e9725bef006a9752894e5d344d0324ba4ac6f6e4d804e02971","sync_pubkeys":false}

Compare this to current JSON data (for a wallet created for this purposehttps://blockchain.info/wallet/1d39195b-d918-4b7b-acae-d47db3324454?format=json&resend_code=false

{"initial_error":"For Improved security add an email address to your account.","extra_seed":"92a5d897af5c491e9e36dfad95f72b616553b23e02777859729c49b934ebbe1a575aa31a8ce0ba9978b9901caae649dd112d1759da5e48117379fbab0a91b083","auth_type":0,"real_auth_type":0,"payload":"{\"pbkdf2_iterations\":5000,\"version\":2,\"payload\":\"RyUtA4LJw69ly2ADu+zZLfoQ447o0gKhwXUAtzdbKpWOtvwjzHM8VY+zXU1z\/FklZJK\/in7XpWzz+zKnw3kHw0oSkLf1FaYVNR4zivUTRuXUaj5g\/Yq6DPhxpHyjEJGtXriqPP\/X713FePGBW5QolJplgIY15Q4GLNdPbanxfEI9LGuvO87tIXxUWY597MtqNzQQH67P+zCMw4q+kgS4wzchI\/D\/cQHRYH2gNSjMiv9rZbUPM7NKVR6IYJPokyoslHBBpN\/9qyCFNUHy1l\/SdPeNXRa\/UnBSsXu7Sf8TZuLL1REvYfoyFm3JOE3Fk3iJWbjN\/mgzDOFuF9sMXiqL5r7+guMm05da3bVvyLYOSMK7ZXRFKnDle53ga5FUhy+GUYcnHTSbXU3qTmDzr4Y4J1EE\/CDm7ceNXs9kl9OLy5bVU6MyezVvRR7hIDrBQLsA5kQMtZz6KTE7L5AaZ6aoigP94iP06SB8ZDOlcjVX\/nkDGS2Ajk2bPu5LiZwxglEgzEUpRrd3rglWp14n3X7EhF8w3PUgNeZTO2znOVwYNi568u+ORE3iOgOOkWLYTjV0QWOAdUn2OCR95lUna5MJbD19v5B0Jhn18grhJM\/2k34R\/F\/U2qhhRm6\/qVajAMSW7OTQzRdx0pyYXAHkbXjEUW1q0GyvEru9eg\/gkzc8j6PTZCp1avxevyqctddkgie4MM2saL09sH2rbrWfyV2Ihw==\"}","symbol_local":{"symbol":"$","code":"USD","symbolAppearsAfter":false,"name":"U.S. dollar","local":true,"conversion":443419.65235899},"guid":"1d39195b-d918-4b7b-acae-d47db3324454","payload_checksum":"030de1efb09ee9485eaf009095b02b5ec8536432fa3ccc5588e8831b9c9983ea","war_checksum":"c8c296cf351e7691","language":"en","symbol_btc":{"symbol":"BTC","code":"BTC","symbolAppearsAfter":true,"name":"Bitcoin","local":false,"conversion":100000000.00000000},"sync_pubkeys":false}

I mostly detailed the various encryption schemes used in version 1 wallets over here: https://bitcointalk.org/index.php?topic=1012475.msg11105755#msg11105755

Incidentally, it's not trivial to create such a wallet any longer, now that the default is version 2. It is easy to convert a version 1 wallet into version 2: just change the iteration count under security settings.

(edited to include the referenced content here, on request)

That's a version 1 (what the code refers to as version 0 IIRC) encrypted wallet. There have been several different encryption schemes used for this wallet version—the only way to differentiate them is to try them all, and see which one works.

The schemes have some shared attributes: the payload is stored base-64 encoded, the first 16 bytes is used as both the KDF's salt and the encryption mode's IV (and the rest is the ciphertext), the password is UTF-8 encoded (it's not normalized), and the KDF is PBKDF2-SHA1. The scheme differences, in most recent to oldest order, are:

the KDF iteration count is 10, encryption is AES-256 in CBC mode with ISO 10126 padding (same as version 2 wallets, but with a hard-coded iteration count)
same as the above, but the iteration count is 1
the iteration count is 1, encryption is AES-256 in OFB mode with ISO 7816-4 padding

Likewise, the second-password encryption has gone through a number of schemes; I think they parallel the ones above, but I'm not sure and don't have the details readily available.

The second password is also stored hashed inside the wallet file, and I do have the details of the various hashing schemes (again, password is UTF-8 encoded, most recent to oldest):

the salt is the sharedKey field (the literal string, not the underlying UUID bytes), the hash is PBKDF1-SHA256 with an iteration count of 10 (same as version 2 wallets, but with a hard-coded iteration count)
same as the above, but the iteration count is 1
the hash is SHA256(password) (unsalted)


How can I transfer tether(USDT) using omni JSON RPC API? I looked for the information but I couldn't find that. It seemed to be done as I always do for Bitcoin though.

Any idea?

So for Omni layer token you do this omni_send
https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#omni_send
This is what you need (at least on Kraken and Bittrex USDT is Omnilayer token). To send Omnilayer transaction you need to have some BTC on the same address for transaction fee. And you also need to know USDT propertyId which is 31 (https://omniexplorer.info/asset/31)

Just in case:

For ETH token you do eth_sendTransaction(different methods are possible like eth_sendRawTransaction) https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendtransaction. You need to know contract address of the token and it is your parameter to, from is normal address from here is the funny part - token transaction is defined in data. Lets take an example https://etherscan.io/tx/0x6fcf7dc3f6bc2b7e8a9e6b13689d042e659b2d016a3bdf7beffd033ab9b6db1e
this is 2.55 BNB(contract address 0xB8c77482e45F1F44dE1745F52C74426C631bDD52,  parameter to) token transfer(method name encoded in data as first 10 digits 0xa9059cbb) from 0x0861d1b074eb2489dd7878a5d6d869db5896a5f0 (parameter from) to 0x4283f315788b09a357ca83b8134cd48bde8b556f (middle part of data with some padding 0000000000000000000000004283f315788b09a357ca83b8134cd48bde8b556f). Last part of data is token amount in wei. BNB has 18 decimal places and the best way to explain that IMHO is this python assertion:

assert int('0x00000000000000000000000000000000000000000000000023803234a2f38c00', 16) * 1e-18 == 2.55809979


Bitcoin-cli cannot estimate fees I am trying to send transaction using bitcoin-cli but I am constantly getting:

admin@XXXX:~$ bitcoin-cli sendtoaddress "XXXXXXX" 0.1 "" "" false true 5 "ECONOMICAL"
error code: -4
error message:
Fee estimation failed. Fallbackfee is disabled. Wait a few blocks or enable -fallbackfee.

I do not wish to set up fallbackfee. I want my running bitcoind to estimate the fees based on what is currently going on in the network and based on my confirmation target (5 in this case)

Any idea what is going on and how fix this? Thanks!

P.S. My blockchain is fully synced.

EDIT: after some digging, can blocksonly=1 option in my bitcoin.conf be blamed? Look at my mempool info

bitcoin-cli getmempoolinfo
{
  "size": 0,
  "bytes": 0,
  "usage": 0,
  "maxmempool": 300000000,
  "mempoolminfee": 0.00001000,
  "minrelaytxfee": 0.00001000
}

such empty :(

You can’t estimate a fee without a mempool, so blocksonly mode will cause this failure. Explicitly you don’t download transactions with this turned on.


Does Bitcoin's high price make payments in stores less viable? With bitcoins values getting so high (now is $2250/BTC) is it still viable to use bitcoins as a way of payment in stores?

It's not that common now, but I thought that people would use it more with time. Now with the high values of BTC the fees to the miners are pretty high. In order to get a fast transaction I had to pay around $2. This would discourage low values transactions, right?

Is there a way to improve this situation? Would it for example help to increase the number of miners?
Is it otherwise correct to assume that Bitcoin will only be viable for high value transactions?

Bitcoin for Point-of-Sale

Bitcoin is inherently ill-suited as a form of instant payment. This is due to transactions needing confirmations before they become reliable which even at best times can take between several minutes and an hour. Before a transaction is confirmed, it is merely a declaration of intent open to replacement by another transaction sending to a different recipient, i.e. a doublespend. This is in crass conflict with the requirements of a quick payment, e.g. at a super market with a line forming behind you or when purchasing hot food.

Value of transactions and fee market

Fees in Bitcoin are paid for the blockchain space that a transaction occupies, not relative to the amount of value that is transferred. As the data-wise smallest possible transaction could transfer $1 or $1,000,000 of value, it is obvious that a more valuable transaction can afford to pay a higher fee for the same blockspace while remaining economically viable. It is therefore inevitable that more valuable transactions will push out less valuable transactions in the competition for blockspace.

More miners and throughput

To discover a new block, a miner has to find a block template that fulfills the current difficulty level. This is a rebalancing system, if mining power increases, the difficulty will follow suit to slow down block discovery. Adding more mining power will only briefly create more capacity before the difficulty catches up.


What is the difference between bitcoin core vs bitcoinj vs bitcoind vs bitcoinqt? What is the difference between bitcoin-core vs bitcoinj vs bitcoind vs bitcoin-tx vs bitcoin-cli vs bitcoinqt?
There are many github repo with different names around bitcoin.
Can someone really help me understand differences in between them in terms of what they offer?

bitcoind, and bitcoin-qt are all part of the same program. Bitcoind and bitcoin-qt are both Bitcoin Core and do the same thing except that bitcoind has no GUI. Both are part of the Bitcoin Core project and referred to as Bitcoin Core. Both share a large amount of code and are full nodes.

bitcoin-tx is a utility that is part of the Bitcoin Core project that allows you to create, modify, and sign raw transactions.

bitcoin-cli is a utility that is part of the Bitcoin Core project that allows you to interact with the headless (i.e. no stdin input, no gui) bitcoind and a bitcoin-qt if -server is set.

bitcoinj is a Java library for using Bitcoin. It does not have full node capability and is primarily used for Android apps and lightweight clients.


What is the definition of a P2P exchange? Bitcointalk member BTCLuke suggested the following six criterion for a P2P Exchange:

A P2P Distributed Exchange MUST:

Be without any central points of failure, since a government or two WILL be coming after it one day. I suggest a Bitorrent-like software schematic.
Show everyone a very large number of possible trades to choose from, (thousands?) so assets can form a stable price. (e.g. a Bitcoin is going for $120)
Transact trades pretty much INSTANTANEOUSLY, so when you're watching a graph and want to trade at a very specific time you can do so. (This is extremely important for arbitragers and other traders who help keep the price fluctuation down.)
Offer Graphs and APIs for for graphing like MtGox does.
Have three-user (trustless) trading, so a non-interested 3rd party always hosts the trade between the buyer and seller. (And should provide Escrow too!)
Hold and transfer IOUs without the need for trust

Does there exist a whitepaper or open sourced project that has a solution for all six criterion? Furthermore, who in the community has been working on P2P exchanges and what regulations would impact them?

Decentralized peer to peer exchange of digital currencies to/from fiat currencies will always have the following constraints:

Fiat currencies cannot be encrypted and represented digitally by a decentralized entity/organization/system. Therefore, fiat currencies will always need to be transferred between traders through the banking system or physically using cash.

Peer to peer trades of fiat<=>digital currencies will always depend on trust. A peer to peer exchange protocol could easily ensure that one party would always send the Bitcoins. The transaction can be verified. The protocol could safely hold the Bitcoins until the other party sends the dollar (Decentralized escrow). But the protocol can never confirm the dollar transaction. It can never know for sure that the transaction has occurred. This introduces the below:

Who's going to send first?
I sent the money. No he didn't
Who will this person be that I'll receive a transfer from? Is he a criminal? Are the funds stolen?
What if this person tells his bank that I fraudulently received this payment.
I went to the cash exchange and had to confirm the transaction at gun point

Remember that transactions  within the banking system are monitored, they can be reversed and funds can be frozen.
I have studied all projects aiming to accomplish a peer to peer decentralized exchange:

Dark Exchange
BitcoinX
Ripple - which is actually a payment system that will hypothetically allow trades as well.

I haven't seen a solution for the above mentioned constraints. All of these projects will be bound by them.
Ripple protocol proposes to allow dollars to be represented on the network and allow peer to peer transfer of dollars, therefore enabling btc->dollar trades. However, their model depends on Gateways -the entry/exit points of fiat currencies to the network. Users will still need to trust that these Gateways will actually hold and be able to pay the amount of dollars within the network as/when needed. There is no guarantee that these Gateways will not fraud the network or individuals. Neither is there a guarantee that the governments will not shut them down. (Read the first line here: https://ripple.com/wiki/Gateway_List)
My view on the future of fiat=>dollar exchanges:
First and foremost: The significance of exchanges will diminish as the adoption of Bitcoin grows. The less the need to trade your Bitcoins, the less important exchanges are. I truly believe this.
Are you saying that we not need exchanges? Absolutely not. No matter how much the adoption rate grows, there will always be a need to trade Bitcoins -this will be true for at least our  lifetime. So we need better and more exchanges.
So what's it gonna be? A ton of local options for people to buy/sell Bitcoins and lots of big exchanges that local shops can trade with. You need to remember that currency exchange does not always have to be in continuous double auction format. When you go to an exchange office and buy euros with dollar, they are not actually matching that with another order. They put a safe profit margin on the price and we pay it. See: CoinBase
Overall, I truly hope that I'm proven wrong. But I don't think a peer to peer decentralized exchange can be built.
Important last note: All of the above are true only for fiat to Bitcoin exchanges. A digital to digital currency exchange can be made peer to peer and decentralized given that both allow peer to peer public transfers and both are decentralized. (Ex. Litecoin to Bitcoin)


How can 6.10 ₿ be the average value of a Bitcoin transaction (lately)? Number of Bitcoins sent in the last 24 hours: 1.84 million ₿.
Number of Bitcoin transactions in the last 24 hours: ~301,900.
This becomes on average 6.10 ₿ per transaction. That's shocking to me. Since I just started with this little "formula", I don't know how normal/unusual this is.
It sounds extremely strange. I would've guessed that 0.01 ₿ or something would be the most common amount. Not multiple Bitcoins at once. Certainly not 6.10 ₿ on average.
Is this an extreme 24 hours in that sense? Or is this normal?! Or has there been some really MASSIVE single one which skews the average for today grossly?

This is normal. Here you can see a chart of average transacted value every day: https://blockchair.com/bitcoin/charts/average-transaction-amount-btc
There are 2 things that contribute to this:

The very large transactions skewing the numbers. This becomes more apparent if you take a look at the median transaction values, which are around the 0.02-0.03 BTC range, closer to your expected value: https://blockchair.com/bitcoin/charts/median-transaction-amount-btc

The fact that many transactions aren't just sending money from one person to another person, but in most cases, includes change (sending money back to the sender's own wallet), and batched transactions (a single transaction that sends money to multiple people, often used by exchanges to process withdrawals while saving money on fees).


full node bitcoin, l have a 32 bit pc,can I run a node with an SSD? full node bitcoin
I have a 32-bit Windows 7 PC, can I run a node with an SSD?

Most likely. This page has instructions on how to download and run bitcoin core. You can checkout the Cost and Warnings section to see if your machine is capable.

If you need to store the blockchain on an external ssd, you need to edit the bitcoin.conf file to point the datadir at your drives location. Here's more information on bitcoin.conf.


UpdateTip logs appear in debug.log unsolicitedly I'm running Bitcoin core daemon v0.17 on Ubuntu 18.04.
bitcoind -daemon -debug=addrman

Why do I receive UpdateTip logging in ~/.bitcoin/debug.log?

2018-11-16T15:54:18Z UpdateTip: new best=0000000000000000002d2353cdb7fa05bb8f81a2afb0f7d4f56a2fe546d3f91c height=521925 version=0x20000000 log2_work=88.768551 tx=315301499 date='2018-05-09T15:07:29Z' progress=0.890480 cache=11.4MiB(86353txo)
2018-11-16T15:54:18Z UpdateTip: new best=000000000000000000089d2f02570814347b4dac2b16eb9a1c9fac2d46e218fe height=521926 version=0x20000000 log2_work=88.768598 tx=315303612 date='2018-05-09T15:12:11Z' progress=0.890486 cache=12.2MiB(93273txo)
2018-11-16T15:54:18Z UpdateTip: new best=0000000000000000000eb79a519b462b48fe02b4e4061ff18fb473eadba174b7 height=521927 version=0x20000000 log2_work=88.768645 tx=315305269 date='2018-05-09T15:21:55Z' progress=0.890491 cache=12.8MiB(97831txo)

It is just simply annoying since I want to check logs of Addrman only.

Turn out the validation.cpp is performing many checks and they use LogPrintf() instead of logging tag.

So by default the debug.log always include them.


How to communicate between Java and bitcoind? I am having problems communicating between Java and bitcoind - every JSON RPC library I try has some issues. Can anyone provide a working implementation of even the most basic JSON RPC communication between Java and bitcoind ?

Here's an early experimental client I had played around with a while back. It supports getInfo, getBalance and getNewAddress, and can easily be expanded. In order to run it, the credentials for your local bitcoind have to match the values in the client class:

httpclient.getCredentialsProvider().setCredentials(new AuthScope("localhost", 8332),
                    new UsernamePasswordCredentials("btc", "123"));

Feel free to use this code in any way, but understand that it's only 5 minutes of work on a start, not a realistic client implementation. Hope it helps you generate some ideas!


How do I create a new address in the Bitcoin-Qt client? I am using a Mac and downloaded Bitcoin-Qt as my wallet, and it has "synchronised". However, I am unable to use this program to generate a new address. I click on "new address", and all it makes me do is enter an address and name it…

Is it safe to use a website like Instawallet to "create" an address for me, and then  use this address to receive coins with Bitcoin-Qt?

If two different people are using the same Bitcoin address, in a client like Bitcoin-QT, and if both receive money to the very same address, how will the network know who "owns" the bit coins associated to that address?

What is this "Private Key"? Is there a private key for every Bitcoin address? Where do I find it?

Lastly, if I want to sell my bitcoins, how does the "Private Key" play into all of this?

The address field is unused and disabled - you can't put anything in even if you wanted. It is probably an artifact of reusing the dialog for adding a new sending address.

So you can't use Instawallet to create an address and import it; and even if such a strange procedure was possible, it would not be safe because then Instawallet would have your private key, which should be kept secret.

Since the address is generated locally using pseudorandom data, it is inconceivably improbable that 2 people will share an address (it is less likely that it will ever happen to anyone than that I will be struck by lightning while writing this answer). In this highly unlikely event, funds in this address can be spent by either of them, whoever gets to first.

Every address has an associated private key, which must be kept secret and is what allows the owner to claim funds in that address. Bitcoin-qt stores private keys in the wallet.dat file in the application data directory.

When sending bitcoins to someone (whether to sell them, donate them or to pay with them), the software internally uses the private key to prove prior ownership of them and announce to the network that they shall now belong to the owner of address X. You don't give your own private key to anyone; the new owner will use his own key to send them from his address.


Please i need help about BitlyCore.com Please I need help. I want to know if anyone knows about BitlyCore.com I have been running the full block for days now and it's just stuck at 87% please I need help.

Tons of red flags here.

I've been around for a while and have never heard of this client.
Browsing the site, all the pages dedicated to code or developer documentation are non-existent or lead to placeholders.
I reached out to Will Binns whose name is given as the maintainer of
the ostensible "Bitcoin client" Bitly Core on the "developer
documentation page" (which looks like it was scraped from
bitcoin.org). Will Binns tells me that he is unaffiliated with the
project.

The obvious explanation is that the software is either malware or part of a scam. I would recommend that you do not install it, do not let it interact with any wallet backups, and regard anyone who recommended its use with suspicion.


Where can I direct download the NXT blockchain data instead of from the client? When installing the nxt nrs client from scratch I need to redownload the nxt_db database blockchain. Is there a place where I can just download it from directly on a fast connection? It seems that it takes at least 3+ hours to download the nxt blockchain from other peers.

Go to http://www.peerexplorer.com.
Click on the orange link at the bottom of the page: "Download Nxt Blockchain"
In the pop-up window, click on the "Mirror 1" link. This takes you to dropbox.com.
Click on "Download". You can skip registration.


Do you have to have bitcoin core fully downloaded (150gb+) in order to run a lightning node? Looking to setup a lightning node, but what are the EXACT requirements? Do you have to install bitcoin core and fully have the blockchain downloaded of 150gb+?

Yes.

A lightning node needs a way to refer a copy of the blockchain that it trusts, so the node can either have it locally or might refer to one using neutrino. That would allow you to run it without an external hard drive at all. You could run a lightning node on a rpi off just an ssd card by this method.


Imported keys to electrum I recently had an unconfirmed transaction on my btc qt wallet. I am upgrading my btc qt now and it is syncing. In the meantime I imported my keys from all my receiving addresses to a software wallet. I am still short my whole balance. Can someone explain this to me? Btc qt had X-an unconfirmed transaction. Now I have about X+half my unconfirmed transaction. Any suggestions?

What did you actually import in Electrum? A master privatekey, or a list of private keys?
In the first case, it could be that your gap limit (i.e. the addresses actively monitored by Electrum) is set too low, so it doesn't see some of your UTXOs. You can check this out :

wallet.gap_limit

Then increase the number you will see, for example if it tells you "20" try something like "50"

wallet.change_gap_limit(50)

wallet.storage.write()

Restart Electrum and see if your balance is back.


Why are there different mining hardware for different hashing algorithms? I have a question about mining hardware and hashing algorithms.
Why are there different types of mining hardware for different hashing algorithms? Why can't we use an Antminer ASIC for Ethereum or Lightcoin mining? Is Antminer more "optimized" for calculating SHA256 hashes?

The hardware you are referring to are called Application Specific Integrated Circuits (ASICs), and they are named that for a reason.  It's because they are not general purpose computers like desktops, tablets, and mobile phones.  Instead, they are computers designed to do a very specific thing.  In the case of an AntMiner, that thing is the SHA256 algorithm.  It cannot be reprogrammed to perform other hashing algorithms, such as SCRYPT (used by litecoin).  In fact, it can't be reprogrammed at all.

By hard-wiring these devices to perform one, and only one task, they are much faster and more energy efficient than would be a general purpose computer programmed for the same task.  This is why all Bitcoin mining is currently done with ASICs, and is not feasible to do with CPUs anymore.  It's also why the same miner cannot perform anything other than what it was built for.


Hiding identity in digital currency era I have a question about the security of digital currencies, however still I have find a clear answer for that. No matter what is the currency, e.g bitcoin, monero, ..., at the end of the day, I have to go to somewhere and change the digital money to physical money. Isn't that?

For example, I have 20 XMR. I need to change that to Dollar. So, I have to tell somebody (a bank or someone else) to take this 20 XMR and give me some money. At this point the identity is revealed.

Specifically, I have to first transfer the digital money to the person in the other side and then take the physical money.

Can someone explain that?

I have to go to somewhere and change the digital money to physical money.

Although that is the current reality, with a few exceptions, it is not the vision of how cryptocurrencies would work.

The intent is that everyone globally would accept your cryptocurrency directly without any need to convert to or from other currencies.

We can see that the Euro has replaced lots of national fiat currencies in the Eurozone. The dream of cryptocurrency promoters is that at least one cryptocurrency will become globally pervasive to the extent that you never need any fiat currency.


How does blockchain.info detect double spends? http://blockchain.info/tx-index/242749/36080ed09eeb0fd66ad5dc8a909a49e364f55ff860c12327c2ff9fbe4a9dde77

  Warning! this transaction is a double spend. You should be extremely
  careful when trusting any transactions to/from this sender.

All valid transactions are relayed through the network. A client does not know which transactions will be a part of a block, so it stores and relays both double-spent transactions. If you regularly poll your bitcoind, you can see every transaction before it is put in a block. Then it is just a matter of checking txin data for duplicate inputs.


Understanding "Bitcoin Inflation vs. Time" chart I keep seeing this chart on many sites. This discussion page offers a vector version, so I presume it was generated by the author of the post.

Now, while I understand what the graph is meant to show, I struggle to understand how it's generated, i.e. what function produces the two Y's plotted on the X (210k blocks steps).

Could someone clarify this for me?

Thanks!

The blue line on the graph represents the total supply of BTC in existence at that point in time (right axis).
The red line represents the instantaneous annualized inflation of the BTC supply (left axis).
Looking at the link you posted, OP also posted with some explanations of the charts, this is a quote taken from one of their posts:

user/Fjordbit: The first curve should have met at 25%, but it looks more like 29%.
user/whitslack (OP):How do you figure? Before block 209,999, there were 10,499,950 BTC in existence. Then block 209,999 added 50 more, bringing the total up to 10,500,000 BTC. That was an increase of 0.000476193%. To calculate the annualized inflation rate, you take the natural log of 1.00000476193, multiply by the number of blocks in a year (52,595.9856), and exponentiate the product, base e, which yields 1.28461321188. So the annualized inflation rate at block 209,999 was 28.46%.


How do I switch from Bitcoin-QT to a lighter, faster (SPV) Bitcoin client? So, keeping up to date with the blockchain is getting ridiculous in Bitcoin-QT, especially on my laptop.  If I leave it off or away from the internet for even a short period of time, it takes forever to catch up.

But, fortunately, the Bitcoin network allows for a simpler model, called Simplified Payment Verification (or SPV) mode where only the headers of blocks are needed.  In addition, the Bitcoin network has recently been updated to support bloom filtering so that a client only needs to download the transactions that it is interested in (plus some margin for privacy).

First question:  Is there a client capable of importing my Bitcoin-QT wallet that supports these two options? (and preferably has a light resource footprint if I'm not asking too much)

And secondly, if so, how can I accomplish the switch with minimal pain?

From my experience, your solution is the MultiBit Wallet software - it should satisfy all your requirements: https://multibit.org/index.html

I use it on a regular basis and found it satisfying, and also have the possibility of storing more than one wallet, you should give it a try.

Cheers.


Is there any statistical analysis of the security of a "Brain Wallet"? Assume that a transaction is paid to a brain wallet address. (not P2SH, or M of N)

Is there any statistical approximation (or tiers of approximation) of how secure a Brain Wallet is to

A key generated from pure random
The non-random keys created by a broken random on Android pre 2013
any other key generation technique

My goal is to get an approximation based on complexity relative to the other methods.  A constructive thing that this would help with is what complexity is necessary for the Brain Wallet to have 2^64 bits of pure random?

Some additional question that may come of this line of thinking include:

In a Brain Wallet, what is the relationship between complexity, length and the random output?
What patterns are there to avoid? (vowel frequency, other letter statistical distribution)
Is a Brain Wallet more secure if written in a foreign language that has more characters in it (more entropy)?

Much of this may be in a Cryptanalysis book, but I'm looking for someone who may have studied passwords in the past and can offer suggestions on how to brute force a Brain Wallet.

There are roughly 170,000 words in the english dictionary according to this link. If you combine 4 random words (170,000^4) , you get 8.3*10^20 potential combinations which is more than 2^64 (1.8*10^19). However 64 bits of security is generally considered weak these days.  Bitcoin uses 256 bit keys (1.1*10^77 combinations) so if you want that level of security you need to use at least 15 words (2.8*10^78). Altering cases will obviously increase the potential combinations by a significant factor. Different languages have different number of words so that will change the calculations as well.

This calculation only applies if you choose the words completely randomly. People keep ignoring this important detail, and is the reason why brain wallets are not recommended. There are many cases of people getting their bitcoin cleaned out because they choose common phrases or include commonly used words in their private key.


Can a merchant using Square Register accept bitcoins? Square's marketing department appears to be successful at convincing some retailers to chuck their old register and instead buy an iPad, receipt printer and cash drawer and use the Square Register app instead.

Can this same set of hardware be used to also accept bitcoin payments?  Is there an app for accepting Bitcoin payments that will work on the iPad?  If so, can multiple apps run simultaneously?  Could the retailer print some type of receipt?

[Assuming the Internet access is through a Wi-Fi access point.]

Bit-Pay has a mobile app that allows acceptance of mobile payments. It's not native for the iPad, but it should work, albeit at a lower resolution. There are a few other iPad apps, but none that implement any sort of payment functionality.


Switching back and forth between Bitcoin ABC and Core nodes (Ubuntu) I need to get my pre-fork BCH and the only way to do this turned out to be through Bitcoin ABC client. How do I switch from a Bitcoin Core node installed on Ubuntu to a Bitcoin ABC node and again to Bitcoin Core. Do I need to remove the node completely every time I am switching to another node? I guess both types of nodes can use the same blockchain data (up to the date of the fork) so it would be great to avoid downloading 150GB of data every time. I am new to Ubuntu so I would appreciate clear instructions. Thanks!

While you can feed the Bitcoin Core blockchain to Bitcoin ABC, the blockchain will be changed by Bitcoin ABC.  So you will need two copies of the blockchain if you wish to also run Bitcoin Core.

Also, unfortunately, you can not easily run these two clients side-by-side.  If you try to install Bitcoin ABC it will install itself over Bitcoin Core and use the same config file.  The only solution is some kind of containerization.  You can do this by using a second computer.  I'm doing it by installing a second Ubuntu into a virtual machine.  I use KVM/QEMU with Virt-Manager.  Then I install Bitcoin ABC into that virtual machine.  I keep a second copy of the blockchain on my host machine and mount that via NFS.  Simply add to your /etc/fstab something like:

192.168.122.1:/home/User/BitcoinCash        /home/User/BitcoinCash   nfs     hard,timeo=14           0       0

Note that 192.168.122.1 is the default address at which your host machine can be reached.  See here.

So far this has worked and I have been able to sync up to the fork, but beyond that I am having some trouble which I am asking about here.  [I am now able to complete the sync.  See that link.  Be sure that when copying the .bitcoin directory for use with Bitcoin ABC, you delete the chainstate/ directory and the blocks/{blk,rev}*.dat that contain blocks beyond the fork, or the client will freeze.]

Note also that you should be careful about the wallet that you feed to Bitcoin ABC.  Do not feed it your Bitcoin wallet if you have anything left in it.  First, transfer everything out to a second wallet.  Then give Bitcoin ABC your first wallet.  Since that first wallet had BTC in it at the fork, those BTC will become BCC even though somewhere post-fork the wallet becomes empty.  The reason to transfer your BTC out of the wallet to a second one, is that you never want to trust a second piece of software, in this case Bitcoin ABC, with the keys that could give it access to your (classic) bitcoins.


Can dust outputs become an economic problem? I'm thinking about actually economic problems, not about UTXO set size.
One example would be:
Bitcoin adoption gets global and the value of a Bitcoin gets to be ridiculously high, let's say $100,000,000 could that make a large number of dust UTXO (now with a non-negligible value) unspendable? Could that cause any economic problems?
Is there any literature about this?

"Dust" refers to UTXOs whose cost of spending is a significant portion of their total value. In Bitcoin Core's source code, "dust" specifically refers to UTXOs that are smaller than three times their fee at minTxRelayFeeRate. For a Pay to Public Key Hash (P2PKH) output, this is 546 satoshi because an output has 34 bytes and an input has 148 bytes. It's a bit smaller for single-sig segwit outputs.
Given that, an increase of the Bitcoin exchange rate would not directly change the definition of dust, but dust amounts would correspond to a larger amount of purchasing power. On the other hand, the cost of spending such a small UTXO would also be significantly higher, making such payments similarly uneconomic as before, just at higher value.
If the price actually goes up by multiple magnitudes (like the 4,000× you suggest), we may see the minRelayTxFee get reduced by one or two magnitudes. Very unlikely we could even see a hardfork that increases the precision of the amounts on the network to a fraction of satoshis. More likely, the transaction fees on the base layer will be prohibitive for all but the largest payments and smaller payments will live on other layers or sidechains.
Transaction fees in Bitcoin are paid per their blockweight and not per value transacted. This means that on-chain transactions generally don't lend themselves to micropayments since smaller payments have a high relative cost. Micropayments will almost inevitably get pushed out of the blockchain layer to either systems like the Lightning Network, where fees scale with the payment's value, or to off-chain payment systems, where they might be essentially free.


Why are chain parameters hardcoded rather than defined in a configuration file? I'm interested in running a private test network to experiment with various chain parameters. These are hardcoded in chainparams.cpp.

https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp

Unfortunately, this means that to run any experiments, I need to recompile Bitcoin Core.

What I'd like to do instead is simply edit a configuration file, then restart Bitcoin Core.

Why are chain parameters hard coded this way? Is there any way to inject my own chain parameters through a configuration file without recompiling Bitcoin Core?

I don't think there's really any better reason than "Satoshi Nakamoto chose to write the code that way, and nobody ever changed it".

There's no inherent reason why these values couldn't be loaded from a configuration file, but there's a general principle that config files are intended for parameters that are user configurable.  A Bitcoin user couldn't change anything in that config file or their client would quit working with the rest of the network.  Developers might want to, but they are expected to be comfortable with recompiling.  So presumably nobody thought it was worthwhile to write the code to parse a config file for these values.

So if you want to be able to modify those values by editing a config file, you'll first have to write the code to parse and load the config file.  Which, of course, also involves recompiling (and a lot more work besides).  Perhaps now you can see why nobody has wanted to do it so far.  But if you do, you can offer the code back to the main Bitcoin Core development line, and maybe it will be incorporated, thus saving someone in the future from this quandary.

Recompiling Bitcoin Core is not all that much work, once you have a development environment and necessary dependencies installed.  And when you have compiled it once, changes to the chain parameters should only require you to recompile one file and relink (which Make will do automatically).


How do I develop web applications for Bitcoin? Although similar to this question about mobile app development, I would like to know how I should go about the development of web applications that make use of Bitcoin. It can be assumed that all the standard recommendations mentioned in this famous question will have been noted and implemented where applicable.

This question is about Bitcoin specific design requirements that experienced developers would like to hand down to those just starting out.

Edit to clarify further

I'm looking for design requirements that a web application using the Bitcoin protocol in some way would be advised to apply before releasing their code to the public. For example

additional security arrangements (offline elements? manual interventions?)
network connectivity concerns (what is an appropriate uptime expectation? does Bitcoin introduce greater bandwidth consumption than standard web technologies?)
recommended deployment configurations (distributed via EC2+EBS+S3? personally managed servers? and so on)
data privacy concerns (Know Your Customer?)

There have been many issues with Bitcoin web applications suffering from design issues that should have been avoided. Hopefully, the answers to this question will help other developers working on these projects to not repeat them.

All points by Nefario are spot-on.  In addition to these, here are some Bitcoin-specific suggestions from Camp BX's experience so far:

1) Use testnet.
Testnet is an excellent resource, that unfortunately does not see as much use as it should outside the core development team.  Make sure you launch your project on testnet, and test all major subsequent releases there as well.

2) Bounties are overrated.
If you want to find bugs in your Bitcoin project, do not rely on bounties.  Perform L&P testing, Unit testing, System testing on all your code and hire professional security auditors if possible.

3) Use 64-bit architecture
 (This may not apply to all projects.)  Many developers use an old 32-bit server for testing and 64-bit system as production server.  It is worth the extra investment to make sure your test server is 64-bit architecture as well.

Hope this helps.


Are there any commercial nodes available so my transactions won't show my IP address? Oftentimes my own IP address shows up as the "Relayed by ip" piece of data reported by Blockchain.info.

Is there a commercial node available that I can conract with to act as relay so that my IP won't be known?  (and has as part of the agreement their assurance to not log IPs for transactions)?

I know there are certain well connected nodes that I can connect to, but I don't have the guarantee from them that they aren't collecting and sharing my IP info.

Bitcoin will run over Tor. There an article on the Bitcoin wiki that explains the process.

Just install Tor and let it set up a proxy on its default IP (127.0.0.1) and port (9050).

For bitcoind, use the flag --proxy=127.0.0.1:9050.

For the GUI client, under Options, check Connect through socks4 proxy. Set the proxy IP to 127.0.0.1 and the port to 9050.


Are there proposed hardfork changes that couldn't be made if the market was filled with ASIC miners? Suppose a year from now most of the hashrate is being produced by ASICs.

Bitcoin is not feature-complete yet. Out of the changes in the hardfork wishlist, would any of these changes be hard/impossible to implement on ASICs that have been sold already?

To make such breaking changes, it most likely that a majority of the mining power will be needed. If ASICs become the majority, and they can't adjust to these changes, do we have a problem?

I say "most likely we need a majority" because maybe breaking changes could be done without a majority of hash power, but rather a near-majority, accompanied by strong user support. But it would certainly make life more complicated.

As long as no changes are done to the structure of the block header, the ASICs should work just fine. There are some proposed changes that could alter it, like protecting the block chain against pre-mining, or adding a new field to the block header.

So yes, when the ASIC miners become the majority it will be hard to push those changes unless Bitcoin faces some serious issue that forces the change (for example, an attempt at a 51% attack).


Is Light Bitcoin a legitimate site or a SCAM? Is light Bitcoin a legitimate Mining site or another SCAM?

There is no mention that they are doing mining at all, nor a figure for their current mining power, or blocks that they found, just some vague explanations that they are investing any deposits and promises of large gains.
It actually looks like they are incorporated to a superficial check, the certificate of incorporation does lead to a gov.uk site that lists the company and other companies that I'm aware off.

So:

No mining
Large featuring of referral rewards
Vague business plan
No mention of the owners or team

I'd treat it as a scam until palpable evidence of the contrary is presented.


Is there a similar server like Bitcoin core that truly supports accounts? Is there a similar server like Bitcoin core that truly supports accounts (and also RPC)?

I was hoping for something like the ethereum geth node. where each account has it's address and individually password protected.

Bitcoin Core since 0.15 supports multiwallet.

That is probably much closer to what people expected the accounts feature to be (and confusion about it is one of the reasons for deprecating it).

Using multiwallet, one Bitcoin Core instance can maintain multiple entirely separated wallets simultaneously. They all have their own addresses, own keys, own transactions, own coins, own labels.

This is in contrast to the older accounts feature, where the keys, coins, and labels are shared across all accounts - only a balance was maintained per account.


Is eltoo more memory efficient for watchtowers? I vaguely remember a paper which stated that in their current implementation, lightning watchtowers require a lot of memory because they need to store information about (a penalty TX for) every balance change that happens on a channel they watch. And that eltoo would be more memory-efficient because it only requires storing information pertaining to the latest respective state. However, when talking about this in a large group of bitcoiners, there was no consensus about this. Does anyone know whether this is actually the case? Does a watchtower really need to store info about every channel balance change?

Without eltoo (ie today) a watchtower needs to store a different justice transaction for every channel update in case the channel counterparty broadcasts (deliberately or accidentally) an expired channel state.
With eltoo (once/if we have SIGHASH_ANYPREVOUT enabled onchain) a watchtower will only need to store a single justice transaction in case the channel counterparty broadcasts an expired channel state. The watchtower can delete old justice transactions.
This presentation from Christian Decker at Chaincode Labs is a great resource on eltoo.


Which Two-factor authentication methods are available at which exchanges? I see that Mt. Gox now supports the Google Authenticator app (on Android, iOS - iPhone, iPad, iPod Touch, and on Blackberry) for 2-factor authentication (in addition to support for Yubikey, of course).

What are all the various 2-factor (also referred to as multi-factor) methods available for Bitcoin-related sites (exchanges, eWallets, mining pools, other services, etc.)?

Bitcoin Currency Exchanges:

Mt. Gox: OTP using YubiKey or Google Authenticator

Options: [On Login] | [For WIthdrawals] | [For Changes To Security]

Camp BX: OTP/Google Authenticator
Bitstamp: OTP/Google Authenticator
Bitcoin-24: OTP using Google Authenticator and for withdrawal SMS messaging
Bitcoin-otc: GPG authentication with gribble bot
BitMarket.eu: OTP/Google Authenticator
Coinbase - OTP/Authy or OTP/Google Authenticator
FYB-SG (Singapore) - OTP/Google Authenticator
VirWoX - OTP/Google Authenticator
WeExchange.co - OTP/Google Authenticator
BTC-E - OTP/Google Authenticator
Local Bitcoins - OTP/Google Authenticator
bitcoin.de - OTP/Google Authenticator or Yubikey (but not Mt. Gox Yubikey)

Other Exchanges:

MPEx: GPG authentication
ICBit.se: OTP/Google Authenticator
BTC Trading Corp (BTC-TC): OTP/Google Authenticator or YubiKey
BitFunder: OTP/Google Authenticator

Other Services:

BitPay: OTP/Google Authenticator

EWallets:

Blockchain.info/wallet - Google Authenticator, e-mail verification, SMS, and YubiKey (but not Mt. Gox YubiKey).
WalletBit - SecureCard (or perhaps OTP/Google Auth has been added now?)
Coinbase - SMS text messaging-based two-factor, Authy (Android/iOS app similar to Google's)
Paytunia - OTP/Google Authenticator or Yubikey (but not Mt. Gox Yubikey)
bitZino - OTP/Google Authenticator
Just-Dice - OTP/Google Authenticator

Mining Pools:

MaxBTC - Yubikey and Google Authenticator
EclipseMC - Supports Yubi/GA OTP


What is the address of the servers that run the BlobVault and authd API? I am building a native Ripple Android wallet.

I understand that the BlobVault is currently centralized so what are the Ripple Labs server addresses that is safe to connect to those API servers - BlobVault and authd?

Maybe my understanding is limited and I am asking the wrong question, but:

What is the address of the servers that run the BlobVault and authd API?

Thanks!

The correct domain addresses for Ripple Labs are listed at https://ripple.com/ripple.txt.

See https://wiki.ripple.com/Ripple.txt


Is Bitcoin-lightning still not scalable? Bitcoin verifies about 220 million transactions a year. Even when using Lightning, wouldn't I want to verify my Bitcoins at least once a year on the Blockchain? With 8 billion humans verifying once a year, wouldn't it take on average 40 years to get verified in the blockchain? What if you're forced to close a Lightning channel?
Wouldn't this make the Bitcoin use not secure anymore?

Yes.
But with the coming  taproot upgrade and schnorr signatures we can create a single Bitcoin tx that is n - of - n multisig which enables us to do multiparty channels with n participants in 1 transaction. So if you take n=40 we can onboard 8bn people in 1 year. If you choose n=480 we can do it in 1 month. So let's keep fingers crossed for that Bitcoin upgrade.


How is difficulty enforced in the bitcoin blockchain? Is it through some sort of voluntary acceptance by miners or is it hardcoded into the bitcoin blockchain to not accept a block which doesn't achieve a given difficulty level?

Difficulty progresses in epochs of 2016 blocks. The difficulty for a given epoch is calculated from the difficulty of the preceding epoch and the difference of the timestamps between the first and the last block of the preceding epoch. The rules governing difficulty are part of the consensus rules.
Following the consensus rules is sort of voluntary but it's pointless not to. The network can only converge on a shared ground-truth by adhering to a set of shared rules. Generally, all nodes enforce those consensus rules. While you'd be free to create a block that doesn't adhere to the consensus rules, the block will be considered invalid by all other nodes.


Is there a Counterparty Whitepaper? Is there a counterparty whitepaper? What about a specification?

The link you provided seems dead by now but there is an online documentation available at http://counterparty.io/docs/about_counterparty/.


Does mnemonic phrase contain everything in my wallet including future keys? I am confused about something important ...
Most wallets allow wallet recovery using "Mnemonic phrase", but (in general) with this phrase, do I get access to all my data ? E.g future generated addresses that will hold my bitcoins ?
Another way to ask: is this the only thing I need to store or do I also need to export my actual wallet/keys when I generate a new address or receive new coins ?
I know each wallet works differently but I think this would be a general question.
If it matters, I noticed the Mnemonic feature on Electrum and Coinomi wallets.
Edit: how can Coinomi give me access to different coins using same mnemonic phrase ? Does this mean that it is more like a password to my data (data stored by them) and if their wallet service becomes unavailable I don't really have access to any of my different coins ?

Generally, yes, mnemonic phrase contains enough data for software wallets to derive the keys. With the caveat.
Some software wallets imports are supporting only 12 word or 24 word combinations. Some support different BIPs and thus path derivation schemes (32/44/84) by default, and some only single one of them. Some have additional feature for a specific seed passphrase. All of the differences you can check on https://walletsrecovery.org/
And there are at least three popular mnemonic schemes:

bip39 - used in most cases
aezeed for lnd
electrum format

So to answer your question in practice - you have to install the wallet that uses the same seed format and path derivation as the one you've originally created for it to work.
Answering edit section:
Because BIP44 (which coinomi uses) defines derivation as:
m / purpose' / coin_type' / account' / change / address_index

You can derive multiple types of independent cryptocurrency paths from a single seed by changing coin_type parameter, creating a subtree for every coin type. This is a list of registered coins:
https://github.com/satoshilabs/slips/blob/master/slip-0044.md


How to get last transactions made to a non-wallet bitcoin address? I know I can rebuild my block index by setting txindex=1 in my bitcoin.conf file and restart bitcoind with -reindex so that I can view non-wallet transactions using:

bitcoind getrawtransaction a93a668d9332e21d51380c7251bbf5ad47295ca9795e0ad6f2fe8d63b76af9aa 1

I'm currently in another situation however, in which I only have the recipient address. So my question is, can I list all transactions that have been received by a certain address, preferably including the confirmations that this transaction has gotten?

All tips are welcome!

There is a blockchain tool call Obelisk which works like bitcoind in effect, they do have public servers open to save you having to download the whole blockchain. You need to install obelisk and sx tools (same authors)..

Info:  http://libbitcoin.dyne.org/  also  http://sx.dyne.org/history.html
sx tools Git:  https://github.com/spesmilo/sx
Obelisk Git:  https://github.com/libbitcoin/obelisk/


Can the blk0001.dat and blk0002.dat files be deleted? I have a Bitcoin installation on an SD card, and the blockchain files (blk0001.dat specifically) take up nearly 4 GB of disk space.

Can the blk0001.dat and blk0002.dat files be safely deleted to free up space on my SD card? Will the blockchain just be downloaded again next time I run my bitcoin client?

You can delete them just fine, as long as you delete blkindex.dat too. They will be downloaded and processed again. This will take a while, these days, though.


Can i transfer/deposit bitcoin from another exchange into my bit coin account for trading purposes? Can I deposit bitcoin from another exchange to be used for trading?

In general you should be able to transfer your bitcoin between any two exchanges for trading.

As an example, you may wish to move BTC from GDAX to Gemini for trading. First you should get you'll need to get a deposit address for your Gemini account. Next you should follow the instructions to withdraw digital currency to an external address from GDAX.

You'll need to have created an account at each exchange you wish to use. You should also make sure that you have completed any required identity checks before you send an exchange your bitcoin. You should also expect transfer fees and possible withdrawal delays.

I recommend transferring a small amount between exchanges first. You should also try selling that small amount on your new exchange and withdrawing money to your bank account.


Should I Encrypt my Wallet for Cold Storage? I understand that the Bitcoin QT wallet is already encrypted to some extent when I use a password. Is it best-practice to further encrypt the wallet file for long term storage?

From Bitcoin Wiki:

Wallet encryption uses AES-256-CBC to encrypt only the private keys
that are held in a wallet. The keys are encrypted with a master key
which is entirely random. This master key is then encrypted with
AES-256-CBC with a key derived from the passphrase using SHA-512 and
OpenSSL's EVP_BytesToKey and a dynamic number of rounds determined by
the speed of the machine which does the initial encryption (and is
updated based on the speed of a computer which does a subsequent
passphrase change).

This means that it doesn't encrypt metadata or pubkeys.
If you want to achieve a greater degree of security and privacy, I recommend to further encrypt the wallet file.


How to reconstruct a transaction detail from the blockchain? Based on the following blockchain json data, I picked a random transaction and want to understand the amounts transacted:

source: https://blockchain.info/block-height/502070?format=json

{
   "lock_time":502039,
   "ver":1,
   "size":225,
   "inputs":[
      {
         "sequence":4294967294,
         "witness":"",
         "prev_out":{
            "spent":true,
            "tx_index":318981069,
            "type":0,
            "addr":"1MppuHQwHjmYunvpzd8LjHMKDhtk2974aD",
            "value":153295388,
            "n":0,
            "script":"76a914e46e0d4e9420768f3b0925069f92fdde2136d5db88ac"
         },
         "script":"47304402207f77cd1b8e82bba37b0d0636fa9f10b67f1aebd3cc20ff30223495825f1af8200220300ae8a8985e9a183ff5522dc86421eff5592dc74e96750330501b41d61de99f012102acb5fd6d1f86719ee9a0c0da3d7a0d63a068cba7c123c2e77988d130884b20c3"
      }
   ],
   "weight":900,
   "time":1514824905,
   "tx_index":318988523,
   "vin_sz":1,
   "hash":"a712e4036222c2cc821443bfbbeb33f94903d2fee08b8e8f1eccada75cf6a9d8",
   "vout_sz":2,
   "relayed_by":"0.0.0.0",
   "out":[
      {
         "spent":true,
         "tx_index":318988523,
         "type":0,
         "addr":"1AeqgtHedfA2yVXH6GiKLS2JGkfWfgyTC6",
         "value":500000,
         "n":0,
         "script":"76a91469e12a40d4a2218d33f208b9a0447894dc9bea3188ac"
      },
      {
         "spent":true,
         "tx_index":318988523,
         "type":0,
         "addr":"1GawcJQjTQtzYUX2wgxfbjDTQcVJiPLUqW",
         "value":151985709,
         "n":1,
         "script":"76a914aaf532cf834863dcdeb4164ec3a4ab413619d98388ac"
      }
   ]
}

Based on this I would guess that the input address sent 153295388 satoshis.
And the two out addresses both received some satoshis, but the sum do not add up:

153295388 - 500000 - 151985709 = 809679

I see a difference of 809679 satoshis between the input and the sum of output. Is that the transaction fee, and if yes, how is this decided?

I can see the answer now here concerning the fee:

https://blockchain.info/tx/a712e4036222c2cc821443bfbbeb33f94903d2fee08b8e8f1eccada75cf6a9d8

so yes, 809679 is the transaction fee.


Is Lightning Network a risk for Bitcoin security since it reduces miner fees? does LN represent a risk for the Bitcoin ecosystem since it will reduce miner fees (the only income they'll have in a post-btc-minting world) and displace them into second layers?

I couldn't find any analysis that addresses this concern (the reduction of hashrate).

If fees are reduced for miners it will centralize even more mining, since even less organizations could support mining operations in a profitable way.

Will it centralize mining even more and reduce hashrate, thus reducing Bitcoin decentralization?

The idea that Lightning will reduce the amount of fees going to miners is very common, and we probably won't know for sure until we actually try it. However, I'll try to provide some arguments as to why I don't believe it'll result in a drop in fees for miners, let alone a drop in hashrate.

I think the idea that Lightning will drain transaction fees from the Bitcoin network is wrong. First of all Lightning will enable completely new use-cases for Bitcoin, increasing its reach and resulting in a vast increase in the transaction rate and tapping into markets that are currently simply too expensive to serve. Every single one of these transfers will result in some (small) fees for the channel operator, which she can then use to pay for the on-chain transaction for the maintenance of the channel. The fees can be much higher than a classical Bitcoin transfer since the utility the operator derived from the coins in the channel are much higher, since they have been sent back and forth an arbitrary number of times.

Think of Lightning as an aggregation layer for Bitcoin: it processes transfers that the current Bitcoin cannot process itself, accumulates fees and then releases some of those fees back to the Bitcoin layer.

Secondly, Lightning shifts the security model from a model where we broadcast a transaction and eventually it'll confirm, to a model in which the confirmation time becomes time-critical. There are transactions in Lightning, which we need to get confirmed before a timeout, otherwise we risk losing some coins, due to an old state being committed to the blockchain. This time-critical confirmation encourages channel operators to attach larger than usual fees to these settlement transactions. Fees that end up with the miners.

Finally, on-chain Bitcoin and off-Chain Lightning transactions have different tradeoffs, I don't see the world becoming Lightning only, but I do hope that Lightning is a useful tool for some use-cases. In the end Lightning is a system that is built on Bitcoin, and thus can only be as secure as Bitcoin itself.

(disclaimer: I am one of the developers working on Lightning)


descriptions of the bitcoin-qt files bitcoin-qt creates files under ~/.bitcoin/ in my file system. i know that the ~/.bitcoin/blocks/blk*dat files contain the blockchain, but what do the following other files contain:

~/.bitcoin/blocks/rev*dat
~/.bitcoin/chainstate/*sst
~/.bitcoin/blocks/index/*sst

i know sst stands for "sorted string table" and i gather these files belong to a leveldb database, but i'd like to know in more detail what is in each of them.

Bitcoin data directory files details are here: https://en.bitcoin.it/wiki/Data_directory


API for converting currency such as Euro/USD to BTC Basically what I'm looking for is a reliable API that allows for the conversion of an imputed currency amount such as USD/Euro amount and a conversion would be made that would  convert the amount to BTC.

I want to also point out that I am not looking to convert hard cash for actual bitcoin. I am only looking to determine the current value conversion of a particular USD/Euro at that particular time period.

I am hoping to use this feature on a current website (HTML/PHP/ETC..) that I am working on.

If anyone can point me to a reliable API that can perform such a task please let me know. Also if you happen to have any guides in regards to implementing/using the API that would also be greatly appreciated.

EDIT:

I want to also point out that I have gathered a few API URLs from numerous websites which can be viewed at the comment section. Now my question is how do I go about choosing the most efficient API and is their any step to step guides, that guides someone in implementing a particular API?

See bitcoin-prices.js library for JavaScript (front end, no server-side components needed) that uses free bitcoinaverage.com API.


Best way to update an outdated blockchain I have a relatively slow computer and a slow internet connection. For this reason, I only open the bitcoin client when I really have to (because it uses a whole lot of bandwidth and CPU to download and verify the blockchain). However, as a consequence each time I open the client I now have even more to download and verify. At this point, I haven't opened the client for about 8 months. What is the best way to update the blockchain on my computer? I care much more about speed than about verification of the block chain.

I have initiated the torrent file (bootstrap.dat), but it will take about a week to download and in this question I read that it is not supported nor updated anymore. Before I continue this very lengthy download, I wanted to see if this is actually the right method for my situation.

Using linux and the bitcoin-qt client.

You probably want to simply update your client to the latest version (0.10.1 was just published) and just run it. As of 0.10 it will download the missing months much faster. (As well as many wallet improvements.)

Forget about the bootstrap file, just cancel the download. It's three months old, so you would still end up with the same problem.

Also: you're probably better off regularly running the bitcoin client (maybe a scheduled task, once a week?) instead of letting it get behind 8 months. You might want to add the -listen=0 option, that way you won't have others connect to you and download blocks from you (saving you some bandwidth).

If it's really too heavy for you, you might consider a different wallet as Pieter mentioned.


Transferring many bitcoins without restoring a seed I was thinking about how would someone transferring a handful of bitcoins say 10 or so to a new hardware wallet.

Say you have 10 coins and want to transfer those coins to a different hardware wallet but do not want to use the original seed.

How would one go about transferring those coins while being as anonymous as possible but doing so safely.  Because if you just send those 10 coins to a new address now 1 address has 10 coins from tons of different inputs. So it decreases the privacy of the account from what I am understanding.

You would want to use a mixing service. Essentially, you would send your 10 coins from your old wallet to the mixing service and get the same amount out to the new wallet. This effectively anonymizes your coins if the mixing service is doing its job correctly.

A similar effect can be done by sending your coins to an exchange from your old wallet and taking it out to the new wallet. Obviously, the exchange would be able to connect the two addresses, so it wouldn't be as anonymous.


Hidden fees in a transaction: How to anticipate one and avoid another? On Bitcoin.org, the page on getting started has a button for "Buy Bitcoin". It links to page with a dialog box that appears to be an interface to the service, MoonPay. MoonPay has a page, "What fees do you charge?" From that page and other analysis (described below), I infer that there are at least three fees incurred in a transaction:

Processing fee of either 1% or 4.5% for depositing or withdrawing fiat currency, depending on how the transfer is done. (Strangely, the fees page seems to indicate that withdrawals can only be made to a bank in the EU or UK, which could be a problem for people living elsewhere.)

Dynamic network fee, which is apparently calculated when a transaction is proposed. Nothing is said about how much it might be. Is there a way to know what amount of fee one should anticipate? I have seen block data for a transaction in which the transaction amount was 0.00130696 BTC and the fee was 0.00125343 BTC, or 95% of the transaction amount. Why would anyone ever make a transaction in which the fee is almost equal to the amount of the transaction?

Currency spread, or premium. I compared the exchange rate shown on Bitcoin.org to that shown by Google in the same second:

The difference shows a spread of 35,026.27 / 33,935.1 = 1.032. This indicates that there is a price premium of at least 3% built into the exchange rate used on Bitcoin.org. This premium is like the premium charged by banks for conversion of fiat currencies. It is a hidden fee that both banks and MoonPay don't state in their fee schedules. I figure this is how the crypto exchanges make most of their money.
So my two questions are:

I understand that the "dynamic network fee" is part of the process of operating the blockchain and cannot be avoided. But how can I anticipate in advance how much to expect this fee to be?

I've read that it's possible to transact bitcoin without using an exchange, and I suppose this would eliminate the price premium. What does one have to do in order to transact without an exchange?

I understand that the "dynamic network fee" is part of the process of operating the blockchain and cannot be avoided. But how can I anticipate in advance how much to expect this fee to be?

Without knowing how the exchange operates their wallet internally, this is unpredictable. Many exchanges will display an estimate for the transaction fee, but the transaction fee itself all depends on how they work. The transaction fee is not based on the amount being transacted; rather it is based on the size in bytes of the transaction itself. This size cannot be known without knowing how the exchange is creating their transactions.

I've read that it's possible to transact bitcoin without using an exchange, and I suppose this would eliminate the price premium. What does one have to do in order to transact without an exchange?

You simply download and install a Bitcoin wallet software and use it to receive and send Bitcoin. The wallet software will allow you to create Bitcoin addresses which you can give out in order to receive Bitcoin. It will also allow you to send Bitcoin to addresses that you have received from others. Bitcoin.org has a page which lists out some wallet software that you can download.


Spending own generated unconfirmed change in the v.0.9.0 era Reading about spending own generated unconfirmed change some time ago I stumbled upon this reddit thread  that convinced me that doing so is a really bad idea and could prove catastrophic for any business that allows it.

Now in the bitcoin core 0.9.0 release notes there are some fixes regarding the infamous malleability issue (search for text: "Transaction malleability-related fixes").

My question is pretty straightforward:

Is it now safe to spend unconfirmed change generated by my own txs, after the 0.9.0 upgrades?
If not, what is considered to be a safe number of confirmations for this change before I can use it as an input for another tx?

It is basically never a good idea to be spending from an unconfirmed transaction, regardless of transaction malleability fixes or other improvements. Unconfirmed transactions are not final and thus you shouldn't be spending from them unless you are willing to take the risk that transactions in the unconfirmed transactions chain can become invalidated. Since a transaction malleability fix is not a consensus rule yet, transactions are still malleable (and can still be after segwit too) and can be vulnerable to transaction malleability attacks.

As with any other transaction, you should only spend from it after it has at least 1 confirmation.