Does Mt. Gox's "Redeem a wallet.dat" feature require an unencrypted wallet? Just added to Mt. Gox's API documentation is the ability to Redeem a wallet.dat, which allows a simple way to import (via upload of wallet.dat) all your private keys to be managed by Mt. Gox.

All bitcoin amounts in your wallet will be transferred to your Mt. Gox account and any amounts received later will be swept at that time as well.

Does this feature work with an encryption-protected wallet.dat though?  The API doesn't show any way to send the passphrase as far as I can tell.

To do this Mt.Gox must have unencrypted wallet.dat.  Technically, you will have to either unencrypt yourself, or provide passphrase to Mt.Gox.  Which depend how Mt.Gox manage feature.  Maybe both work.

Be very careful how transmit wallet and passphrase.  Use some good encryption, https if doing via web, PGP (encrypt mode, not sign mode) if doing via mail.  Transmit unencrypted wallet, or encrypted wallet with unencrypted passphrase, must have first secure channel.

Also must trust Mt.Gox.  Mt.Gox has US$5M seized from accounts in last few days, and now under investigation American gov't.  Maybe difficulty paying you, specially if paying US$.  Maybe motivated give up customer secrets.  Maybe American gov't right.  Something to think about.

Cant say for you, but I would never use such service.  Suspicious bastard, me.


What mathematical property links the Armory chain to the public/private keys? According to the Armory site the Public Keys needed for the Bitcoin addresses can be generated without having access to the Private Keys, which ideally are stored on a completely different computer.

What mathematical property allows public keys to be generated without having the matching private keys? I take it they are seeded by the chain code somehow, so the chain code is the stored in the watch only copy of the wallet, while the chain code + root key make up the private wallet, right?

ECDSA can be thought of as a special form of mathematics where division is, for all practical purposes, impossible. Public keys are formed from private keys by multiplication -- the public key is multiplied by the generator G. Because of the properties of multiplication, new public keys can be generated by an entity that doesn't know the corresponding private key.

First, a master public/private keypair is generated (master, G(master)). The master private key, master, is stored securely. The master public key, G(master)) is used to generate new public keys as follows:

A new public/private key pair is generated. X, G(X)
The public key is added to the master public key. G(X) + G(master)
This new public key can now be used.

To generate the corresponding private key, the private key generated in step 1 is added to the master private key to form X + master. This works as the private key becauseG(X + Master) = G(X) + G(master) (distributive property of multiplication). Thus the public key corresponding to the sum of the two private keys is the same as the sum of the two public keys.

You can pretty easily show that producing X + master without knowing master or forging a signature of G(X + master) with only X and G(master) is as difficult as breaking ECDSA itself. So this scheme is as secure as any other method of using ECDSA.


Android Bitcoin Wallet, zero balance after keys import I imported all my private keys (including those of change addresses) to Andreas Schildbach's Bitcoin Wallet  from bitcoin-qt and my balance is still zero. This disagrees with Blockchain, which clearly shows non-zero final balance. What is the reason and how can I fix it?

Probably you didn't set the wallets birthdate correctly. In any case usage like this is strictly discouraged.


How can you operate a fractional reserve e-wallet? There are topics about the possibility of e-wallet providers operating like fractional reserve  banking. How it can be done in theory and practice? Did it ever happen on any meaningful way in Bitcoin's short history?

Edit: does this practice involve any real lending of bitcoins just like the case with real banking:

Edit 2: is it a prerequisite for e-wallet operators that they store all clients' funds on a shared bitcoin address or is it only an added benefit for them?

It is pretty simple. Persons A, B, and C store 10 BTC each with you, so you have 30BTC. You figure on any day you need 10BTC handy for all of the transactions of ABC. That leaves you with 20BTC to spend, and assuming they all don't come asking for it at the same time, you are fine.

When doing this, you need them to send you the BTC, and you keep a record of their account in a database. Transactions between them just update their db records (not the blockchain). Only when they withdraw or pay out to someone not in your system do you need to spend the money in your reserves.

Looking at mtgox, they could easily do this; the record of the coins that are yours is not what is in some address, but just what is in their db. Since they hold a huge amount of coins for a huge amount of users, it is unlikely that all of their coins will ever be withdrawn. In fact, many users may be dead or no longer interested in bitcoin or simply forgot their login. All of the bitcoins belonging to those users in essence will never be withdrawn, and mtgox can get away with spending them without worry. Using login statistics (which I am sure they have) they can probably make a guesstimate about the amount of their reserves will never be collected, and so they can spend at will.

I am not saying that mtgox is engaging in this (heck they probably make more money off of fees), but it would be so simple and totally invisible to anyone who cares.

Frational reserve banking is super easy and it just relies on a lack of transparency in addresses assigned to users with actual btc in them.

Interestingly this can make it so there are in some ways more bitcoins in circulation than in existence, as trading with db bitcoins is basically equivalent to real ones.


Why are SIGHASH flags signed as 4 bytes when only 1 byte is included in the transaction? This article brought to my attention that SIGHASH flags are 4 bytes long when signed, but only the last byte is actually included in the transaction. Then OP_CHECKSIG adds 3 bytes 0x000000 back on before verifying the signature. The article describes a clever way to introduce a fork using those three truncated bytes -- so why are the SIGHASH flags 4 bytes long in the first place? Is that a design flaw or feature?

I assume it is simply the result of lazyness.

In the original client source code (and still today), the sighash type is represented as an int. The serialization framework by default serializes ints as 4 little-endian bytes.

I assume Bitcoin's creator did not bother converting it to a single byte before serializing.

If there is any other reason, I'm afraid you'll need to ask him.


Do i delete the Bitcoin folder & data directory in Appdata after i copy it on an encrypted drive? I am trying to complete the instructions described here https://en.bitcoin.it/wiki/Securing_your_wallet#Windows . I have already done the Truecrypt part and installed the Bitcoin client. But i have one question i need help with before i can continue. Do i delete the Bitcoin folder & data directory in Appdata after i copy it onto an encrypted drive ? Or does it need to remain there to function even though it would then also be in the encrypted drive if not deleted ?

Make sure to delete wallet.dat - that's the only file with sensitive information. (You might want to run a utility such as unix shred on it to make sure it's really deleted).

Just a warning - before deleting, rename the file, and try to copy it from your backup and see if everything works.


A2 Terminator Fan Replacement I am after a couple of fans for my A2 as the bearings have gone.

From what i can see and have measured, they are a uncommon size at 105/106mm. Is this correct?

Any suggestions on replacements?

Thanks

I have a full size a2 and it is a normal 120mm fan but you need to get one with high flow fans. I'm currently trying to find the best fans to keep me under 50 c but no be as loud as the original fans


Best way to find list of UTXO related to xpub Apparently the way to find a list of UTXO related to an xpub is to derive all addresses from the master private key and query a node with each and every one of them.
It is possible to generate 4294967296 addresses from a single extended key.
How should a wallet proceed to manage this in an efficient way?
I guess that in an ideal situation, addresses are generated in a sequential order... but my intuition tells me that nothing prevents a wallet from doing otherwise.

The balance checks are cut short based on a gap limit.
A gap limit is usually set to 20, and is defined as a consecutive block of addresses with no transactions.
Since HD wallets only give out a new address on explicit request, or automatically when the previously issued address has been used, it is assumed that someone will not leave a block of 20 consecutive addresses unused.
Wallet software will generate a short list of maybe addresses when you load an xpub or other form of seed. It will then check through that, and if it doesn't find 20 consecutive unused addresses, it will generate another short list (so the first list might cover 0-100, then 100-200, etc). until it finds the block of unused addresses.
This assumption naturally falls apart if you are running an exchange, payment service, or other wallet set up where it is very likely that you will have many hundreds of unused addresses. Those systems generally keep track of assigned addresses out of band, and have specialized indexer systems that can track many millions of addresses.


Permission denied when attempting to backup wallet using backupwallet When I call bitcoin@raspberrypi:~ $ bitcoin-cli backupwallet "backup.dat", I get the following error:
error code: -4
error message:
Error: Wallet backup failed!
~/.bitcoin/debug.log shows the following:

error copying wallet.dat to backup.dat - boost::filesystem::copy_file: Permission denied: "/home/bitcoin/.bitcoin/new_wallet/wallet.dat", "backup.dat"

Is it something I'm doing wrong?  Do I need to give permissions to user "bitcoin"?
The wallet is not encrypted.
Thanks

You need to check ownership and permissions for the files and folders involved. Your current user needs permissions to read /home/bitcoin/.bitcoin/new_wallet/wallet.dat and permissions to write to the current directory for backup.dat
Try ls -ld /home/bitcoin/.bitcoin/new_wallet/wallet.dat . and pwd and id. The permissions will be shown as three triplets for owner, group and others shown as rwxr-x--- 1 bitcoin pi which means the owner (user "bitcoin") has read, write and execute permissions (rwx), members of the group ("pi") have only read and execute permission (r-x) and other people have no permissions at all (---). The id command will tell you which groups your current use is a member of. The pwd will tell you the full name of the current directory where you are trying to write your backup.dat

To further diagnose the problem try
see if the target already exists and can't be overwritten
ls -l backup.dat
mv backup.dat backup.dat.old
echo test > backup.dat

see if the source file is readable - look for messages no read permission
file /home/bitcoin/.bitcoin/new_wallet/wallet.dat

try to copy it directly
cp /home/bitcoin/.bitcoin/new_wallet/wallet.dat backup.dat


How does Blockviewer work? (tool to discover identities of "anonymous" bitcoin transactions) I'm trying to follow the logical sequence of how Blockviewer works and only see this one blog entry for the process, but no "part 2".

Can someone describe the techniques to link a wallet address to the owner?

The technique was first described in form of formal study by researchers with the Clique Research Cluster at University College Dublin, blog post: An Analysis of Anonymity in the Bitcoin System, the research paper is here.

Imagine transaction of 1 BTC from address:Alice to address:Bob, blockchain shows that there was transfer of 1 BTC

1 BTC source:Alice, destination:Bob

Now, if a person controlling address:Bob wants to spend the 1 BTC he or she has to construct transaction that shows in blockchain as

1 BTC source:Bob, destination:Charlie

Lets say you see next three transactions in the blockchain:

1 BTC source:Jessica, destination:Alan
1 BTC source:Bill,   destination:Erik
2 BTC source:Alan,Erik   destination:Manhattan

To construct the 2 BTC transaction he or she has to have control over both Alan and Eric addresses in another words the person knows the private keys of it, therefore it's the same person, this is not true for a Bitcoin exchange or web based wallet were many people have limited access to the same private key.

Now if you know for sure, e.g. from forum signature, that address:Erik belongs to Gavin Anderson then you also know that address:Alan belongs to Gavin Anderson.

So far this technique didn't uncover any BTC theft and remains to be a toy. Also, there is many ways to block it, e.g. by using Bitcoin Anonymizer.


How to enable website users to trade bitcoins on my website? How to enable website users to trade bitcoins on my website? I also want user wallets stored on my server. So users user can buy and purchase bitcoins on my website and they can completely use my website as their local wallet. Like they can gets all information regarding all transaction as history on my website.

What you would probably want to do is just create one wallet for yourself which you encrypt, and then create some kind of data type on your server called wallet that you could create arbitrarily many of.

When people want to deposite money onto "their" wallet you would generate a new address for your wallet, which you can do as many times as you want. Once the bitcoins arrive you will credit them however many bitcoins they deposited on their fake wallet, which just lives on your server.

Then when they want to withdraw money you send bitcoins from your main wallet, making sure to never allow them to withdraw more then they have been credited.

When people want to make a purchase with bitcoins on your site you just give them whatever they paid for and deduct from however many bitcoins are currently being credited to their account.

While this is all possible, unless your making a heavily bitcoin centric service such as an exchange, I would recommend using a third party service which already has tools built for merchants such as coinbase or coinlab.


How to access funds from a fork? So I want to access funds from various bitcoin forks, and I have my keys.

Are there any sites, or services that allows me to enter my keys to get access to the funds from the forks?

Point me in the right direction

You will need to download a wallet that supports the said fork.

So for example for the "Bitcoin Cash" fork, you will need to download something like this, https://electroncash.org/

Take extreme care when downloading these wallets, as a lot of them are infected/and or malware.

Always check the authenticity of the wallet files you download.

For electronCash they can be found here https://github.com/fyookball/keys-n-hashes


Is it possible to remove my bitcoins from the Bitcoin network? If I delete the Bitcoin wallet from my HD, my Bitcoins will be still alive inside the Bitcoin network, right?
Is there any way to remove my bitcoins from the network in a permanent way?

If you don't use them, nobody will be able to use them, so in a sense they will have disappeared. If you wish for them to be publicly, permanently destroyed, you could try one of the approaches at What is the Bitcoin equivalent of /dev/null?, such as sending them to the address 1111111111111111111114oLvT2, which is the address of an all-zeroes hash. There are technically many private/public keys that correspond to the address, but finding one is practically impossible.


What's the best way to transfer bitcoins between two exchanges? I'd like to transfer bitcoins in my Kraken account to my Poloniex account. What would be the best (a.k.a. cheapest) way to do that?

Withdraw your Bitcoins from your Kraken account directly to an address provided by your Poloniex account.


Recovering and transferring Bitcoin to new wallet Question from a new bee.
I received a bitcoin in 2013.
That one is on my old computer with a Bitcoin wallet (version 0.8.1-win32).
It is visible and verified
Unfortunately this wallet still has over 4.000 days to sync.
And it takes ages to complete
Besides the fact that the old laptop keeps running out of storage space :-(
On my new computer I now have the wallet Bitcoin Core (version v0.21.0)
How can I move the Bitcoin from my old laptop to my new one?
As I said, I am a bit of a nitwit on this, so please do not make it to technical ;-)
Appreciate your help.

Bitcoin Core to Electrum:
walletpassphrase "your_pass_phrase" "timeout"

dumpwallet "full path:dump_test1"

{
  "filename": "full path:dump_test1"
}

File with all the private keys dumped:

I will use private key for one of the addresses, you can enter multiple private keys here.

Address: tb1qpc8wx9sec3s7sm3j949eeg2pj3e6n3df9c5w2u
Private Key: cRGkMQJfJiBhj1Fq83cNX4pUAerB1dJSJWkvfcDuGtqwb2M6L5WK
Derivation Path: m/0'/1'/21'

Bitcoin Core to Bitcoin Core:
Backup Wallet or copy wallet.dat


missing USDT transaction in Copay or Bitpay Wallets I have a missing transaction, a guy sent me a bitcoins USDT, on his side we can see the money went out and the transaction is confirmed, on my side the money are not at my wallet, what I can do, here is the hash URL:

https://omniexplorer.info/tx/d39bf8c8ba9ad5311818c2eef20a161d3a8c6c2f64247e6ca479c0fcc3b68a0b

https://www.blockchain.com/btc/address/1Bg2UbR3QgPBsPgSKKBezjKiMEHeURx743

please help,
Deyan

As Raghav Sood commented

  It looks like you were actually sent USDT, not Bitcoin, which are not supported by Copay. You will have to move your keys to a wallet that supports USDT.


How does the variable length integer work? I'm trying to write a script that constructs a serialized bitcoin transaction from scratch.

But when it comes to the number of inputs, the field is a variable length integer.

It's typically only 1 byte (2 characters) in length and you do not have to do anything with it, because bitcoin transactions rarely have more than 0xFE (253) inputs.

But what happens when there are more than 253 inputs and the size of the field has to increase to accommodate it?

How would you put a count of 256 inputs in to this field?

https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer

From the Bitcoin forum:

  The way the variable length integer works is:

  Look at the first byte
  If that first byte is less than 253, use the byte literally
  If that first byte is 253, read the next two bytes as a little endian 16-bit number (total bytes read = 3)
  If that first byte is 254, read the next four bytes as a little endian 32-bit number (total bytes read = 5)
  If that first byte is 255, read the next eight bytes as a little endian 64-bit number (total bytes read = 9)


Is there a plausible future for the use of Bitcoin in the financial industry and corporate finance? After having read an article on the use of blockchain currency, I am wondering if there may be more to it in the time to come in the areas of corporate finance and financial industry.

My thinking is that on the one hand, the hacks against bitcoin exchanges have created an uncertainty that established banks do not want to meddle with. Then again, they have to rethink their business models very strongly.

Furthermore, with the decentralized transaction confirmations in bitcoin, the settlement cost and duration is expected to increase, as it did recently, making it not a substitute for cash and credit cards.

On the other hand, a study from Oliver Wyman that I saw referenced often, but could not access myself, mentions that banks could hope to save $65-80bn per year in settlement cost when switching to new mechanisms, probably the main reason why they started experimenting with bitcoin in the first place.

However, it seems that bitcoin suffers from longer transaction verification times (and fees), which would have to be overcome before more widespread use. Just in the last week, the backlog has increased.

Do you think bitcoin has a future to be used by large financial organizations, and why?

Generally, Bitcoin is a poor fit for the needs of most financial institutions. They want features which are incompatible with Bitcoin, or require unsupported workarounds:

Holding local currencies.
Reversing transactions.
Keeping transaction information secret from the public, but available to regulators.
The ability to kick others off of their platform if they give the platform a bad name.

What those articles talk about is Bitcoin technology (also called 'blockchain technology') which is much more broad.


How to check if a bitcoin address received a new transaction programmatically? How can I check if a bitcoin address received a new transaction programmatically?

Here is an example of the API call, but I can't figure out how to get the value of the new transation in API response:

https://blockchain.info/rawaddr/1De2yKR7q95R1CV9PhmxA3kcYVa25mDaqj

You can set up a bitcoin-core node to watch for new transactions, and notify you of them.

This is a preferable solution, since you won't have to trust anyone to supply you with the correct info (what if they lie, or are incorrect?), and you will retain your privacy (why dox yourself with respect to which addresses you are interested in, to the API provider and anyone else listening in on your connection?).

You can set the command -walletnotify=<cmd> in your bitcoin.conf file, and write a bash script to alert you of the transaction in question, in your preferred manner (write to a log file, send an alert email, blink a light, etc).

For a slightly more in-depth walkthrough of setting this up, see this question: How do I use walletnotify?


Identifying wallet file among soup of recovered .dat files Hello my friends!
Here is my situation:
I accidentally deleted a partition on my HDD containing the only copy of my bitcoin wallet. Facepalm. After running data recovery tools, I've found and restored around 150 .dat files. Unfortunately, the recovery software assigns arbitrary names to these files, so I cannot identify which one is my BTC wallet.dat.
My question :
Is there a quick way or a utility that can confirm if a .dat file is a valid bitcoin wallet? I would like to run a script to iterate through each .dat and check it in order to find the bitcoin wallet among all the .dat files I recovered.
Worst comes to worst, I will just need to try to import each one, one-by-one ( (which sounds like an awful way to spend my afternoon tomorrow). I am still pretty new to BTC and unfamiliar with the set of tools it involves, so I am hoping there is a programatic way to do this :D


Where to get difficulty data for all crypto coins? I need to get difficulty data and exchange rate for past 10 days for making a graph out of it (i.e., for all coins). Can anyone suggest where can I get it?

I suggest you take a look at CoinWarz's API, you can collect your own set of data for a period of time out of it (say 10 latest days, format it your own way and save it on a spreadsheet). You'll need to generate an API key on their site, and then you could either use your own scripts, or visit the API endpoint manually to collect the data, if you so desire (remember that you need your own API KEY to get the data).

Once you have the data you could generate your own graph within a spreadsheet or your  software of preference.

Recomendations: OpenOffice (info on graphs, download page), LibreOffice (info on making graphs, download page).

Here's the reference for that specific API call (quoted from coinWarz's documentation)

  Mining Profitability API

  The Mining Profitability API provides profitability data listed on CoinWarz.com. This >data can be for all coins or for specific hashing algorithms: SHA-256, Scrypt, Scrypt-N, >X11, X13, Keccak, Quark, Groestl, JHA, Blake-256, NeoScrypt, Lyra2RE

  API Endpoint

  http://www.coinwarz.com/v1/api/profitability/?apikey=YOUR_API_KEY&algo=all

  API Call Usage
  This value will be deducted from your API usage limit each time you successfully call this API.

  Required Input Parameters
  All input parameters are required and not case sensitive.

  Parameter - Data Type - Description

  ApiKey - String - Provide your approved API key for this parameter.

  Algo - String    - Provide one of the the following values for this parameter:
  all, sha-256, scrypt, scrypt-n, x11, x13, keccak, quark, groestl, jha, blake-256, >neoscrypt, lyra2re

Remember that each time you either visit the API Endpoint or call it to fetch the info with a script, it'll count as 1 call out of your limit, as noted on their documentation.

Now the easiest way for you to collect the data if you're not into programming your own stuff, would be to use some REST client extension for your browser such as Postman REST client (If you use a different browser look into their respective stores)

It's fairly easy to get used to and you do not need to code your own scripts.

Here's an example of how the info would be rendered for to you:

(remember you need to place your own API key in lieu of the placeholder "YOUR_API_KEY")

I recommend you use the JSON and PRETTY options so the data is more human readable.

You can then export this to a CSV file using this awesome tool (JSON to CSV)

This site allows you to pase the JSON data and transfer each value pair to a CSV file

Here an example of how it looks:

Now you have a (set of, since you need multiple days) CSV file that you can use for graph creation using the aforementioned Office Suite Tools.

Hope you'll find this helpful, and good luck!


OpenSSL and Secp256k1 differing in implementation of ECDSA signatures? OpenSSL (from ssl in Mac OS X Version 10.11.6) and Secp256k1 (from the bitcoin-core repository) seem to differ in their implementations of ECDSA. I'm having issues with these differences and want to make sure they actually exist, and if they do, how to reconcile the differences.

For example, using OpenSSL, the recoverable signatures I get can end in any byte. However, from this line in Secp256k1, it seems that the 65th byte (i.e. the last byte) is required to be between 0 and 4 inclusively.

If this is the case, then why does OpenSSL allow the last byte, which seems to be referred to as rec_id, to be of any value?

The code you are referring to in libsecp256k1 is not for ECDSA.

It implements the custom compact signatures that Bitcoin Core uses for message signing and verification.

The normal ECDSA code in libsecp256k1 should be identical in acceptance to the one in OpenSSL (apart from the fact that by default, it only accepts and produces low-s signatures, as a way to reduce malleability potential).


Accepted shares won't go above 200 I'm new to Bitcoin mining, but I'd like to think I got things set up. I'm using guiminer, on slush's pool. For some reason, my accepted shares won't go above 200.

I have no stale shares but my accepted looks like 1597 (200).

Why is that?

The first number is the number of shares you have solved.

The second number is the number of pieces of work that you have recieved, but haven't begun solving. If it drops to 0, you aren't mining. Every ten minutes or so, these will become obselete, and you'll need new work, so there's not much point in requesting a bunch ahead of time.


Parameters for buy order on BTC-E Using the BTC-E API 'm getting an error of You incorrectly entered one of fields. when I post this as the data in a buy order.

{'pair': 'btc_usd', 'amount': 0.1, 'rate': 44.7084704, 'type': 'buy', 'method': 'Trade'}

Does anyone know where I'm going wrong?

Problem solved. The error is caused by too many decimal places in the rate parameter. It would be good if the API returned a more informative error message though.

There is an API call to find the correct maximum number of places, as well as the minimum order for each currency pair. https://btc-e.com/api/3/info returns a list of currencies and information. The documentation is in Russian but translates easily with Google Translate.


Corrupt wallet.dat file - Try quitting bitcoin and running this again I have made a few major mistakes and am making a last ditch effort to recover my bitcoins. I had a wallet.dat file on a previous installation of windows, after reformatting (with no previous back up, I know I know...) I realized my mistake and immediately attempted to recover the wallet.dat file with Recurva. Recurva listed the file as "excellent" condition.

When attempting to open the file in the bitcoin client, I receive the error:

"Wallet corrupted - salvage failed".

The wallet is encrypted, the password is known.

I have attempted to do a wallet dump using pywallet, however, I always receive the error:

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

The command I am running:

python pywallet.py --passphrase=mypassphrasehere --datadir=C:\path\to\recovered\wallet --dumpwallet

I am unable to find any more resources for getting around this error - I do not have bitcoin running (even after a restart), and I am referencing a wallet that is outside of the bitcoin data directory (and also tried having the default path with bitcoin not running)

Has anyone else run into this issue? Should I assume the wallet file is corrupt and cut my loses? I've exhausted my google fu and can not seem to find any other steps to recover this wallet.

You should try to recover the wallet.dat with a different data recovery tool, I have good experiences using GetDataBack and PhotoRec. GetDataBack lets you choose different backups/versions of the file system, try all of them.


What's a unique identifier in listsinceblock output? I am trying to understand if there a unique identifier for transactions. I didn't find anything about that mentioned in listsinceblock's help.

{
  "involvesWatchonly": true,
  "account": "",
  "address": "mvd6qFeVkqH6MNAS2Y2cLifbdaX5XUkbZJ",
  "category": "receive",
  "amount": 10,
  "label": "",
  "confirmations": 69,
  "blockhash": "62967ce950fc03b14179e58f42e426b63cbfbf63c2b9e59acb6a719a09c23b94",
  "blockindex": 58,
  "blocktime": 1524872287278,
  "txid": "aac9b2d7bb7b3476a83a5ac0c2fe21625bcd961ed43a5c5fd3eacf6536dc81d5",
  "vout": 7,
  "walletconflicts": [],
  "time": 1524872276635,
  "timereceived": 1524872276635,
  "bip125-replaceable": "no"
},

Each transaction has a unique identifier which is the txid. It is the hash of the transaction and each transaction's hash is unique.


How do I get the trading screen I see on Cryprocurrency videos I see you tube videos of people checking crypto prices. It looks like a stockbrokers screen. It must be some kind of software. Does anyone know what it is?

https://www.youtube.com/watch?v=5J5ppaAxTvU

Here is the You Tube video, you can see the software he is using.

If you look closely you can read the URL: The chart in the video appears to be the Bitcoin/USD chart for Coinbase on Tradingview.com, while theme seems to be set to dark.

Another site used in the video is coinmarketcap.com.


How can I view in my shell, live, ALL activity my bitcoind is generating? Having examined the output of

bitcoind -h

and searched through all the bitcoin-cli rpc items listed here

https://bitcoincore.org/en/doc/0.19.0/rpc/

I did not find anything which produces a live stream to stdout of all the tasks my full node is running/performing.  What is required to make all that visible?

One is led to understand that the main benefit of running one's own full node is to be able to independently confirm transactions and that is all fine, but another important effect is supposedly the continual assistance the node provides to the network, serving historical blocks and so forth.  That traffic is what I would like to see.

bitcoind -printtoconsole -debug

This will output an unreasonable amount of information and break your terminal, and not particularly help you with your sovereignty.


Button generating code altering addresses I was playing with the website:

http://embedbitcoin.com/

to generate a payment button for my website. It asks for your bitcoin address, but when you click "Send Bitcoin" from the generated button, the address it outputs for the user is different than the one originally input.

That seems fishy, and I don't currently have any BTC to test that it is what it says it is.

If each address is unique, it is my understanding that it can't be linked to a single account, and therefore no other addresses could be generated from it, and this seems like a scam to send money to someone else's account.

Is this understanding correct? Is this a scam?

Looks like scam yeah. It looks like they are asking for one normal bitcoin address, so any address they generate will NOT be yours.

However it would be possible to do such a thing if they would ask for the xpub seed of your HD wallet. Even then though it wouldn't make sense to trust a service like that.

Stay away!


How can I convert bitcoin to any other new launched coins? I have a bitcoin wallet and need to convert all user wallet balance into new launched coin.

I have a bitcoin wallet and need to convert all user wallet balance into new launched coin.

Well, if you want to convert your Bitcoin balance in your wallet to a newly launched coin, you can do the following:

Find a compatible wallet for the currency you want to get. Then, register a wallet on there.
Find a trusted exchange for Bitcoin to altcoin, some are:

https://.kucoin.com/altcoin/exchange

https://www.binance.com/

Create a account onto the exchange, and finally, exchange your Bitcoin to a Altcoin.

I hope this helped!


What is the benefit of opening port 8333 to a client? I am running a bitcoin core (v0.15.01) full node according to https://bitcoin.org/en/full-node. They say

  "To support the Bitcoin network, you also need to allow incoming
  connections."

I hesitate opening ports because having a port open for incoming connection allows for anyone to connect. So is this really necessary for bitcoin to work? They to not explicitly state what kind of support this enables.

I see that the client already makes connections to various domains like

x9.dnsseed.bluematt.me
x9.seed.bitcoinstats.com
dnsseed.bitcoin.dashjr.org
x9.seed.bitcoin.sipa.be
x9.seed.btc.petertodd.org
x9.seed.bitcoin.jonasschnelli.ch

Do these represent the "distributed" properties of Bitcoin? Why are there not more of them? Or is this completely unrelated?

Note: I have read questions like this one or this one, but they more focus on the how to, than what the benefit actually is.

If you don't want to, you don't have to open ports at all. You'll still have a full node, it will just have fewer connections. Full nodes usually make 8 outgoing connections and can have many more incoming if you have the port open (for a total of 125 by default). Incoming connections can also be SPV (phone) wallets, or other full nodes.

So the benefit is that you're helping out the network a little bit more providing connection opportunities and bandwidth to more other full and non-full nodes. There's not really a shortage at the moment though.

Typically only the first time when you run the software it might do a DNS lookup on the domains you mention. Each name represents dozens of IP addresses of random other full nodes (not just nodes run by those people). Once your node has a connection to a few peers, it will learn new IP addresses from those, maintaining its own list of IP addresses which is stored when you close the software shuts down.


What year did bitcoins come out? I purchased one in 2009 or 2010 . I want to know how I would recover it. I was sent to prison I would like to know asap please and thank you .

The Bitcoin network was launched in early 2009.

To recover your coins, you'll need to find the wallet file that contains your private keys. You'll need to remember how you stored your Bitcoin, did you have a run wallet on a personal computer? etc. Remembering the answer to that question is probably your only hope of recovering your Bitcoin.

Without any additional info, I don't think there is any way that anyone here can help you further than that.


Is there a limit to the TLV size? I hear that a TLV field was recently added to the payment format. This will allow the sender to attach a message to the recipient in the payment package. How much data can be included in the TLV field? Are there other restrictions that apply? When will this be available on mainnet?

The length in a TLV uses the same variable integer representation used in Bitcoin (CompactSize). It effectively supports up to 64bit lengths, so there is no meaningful limitation there.

The limitation comes down to LN's message size limit, which is 64kb, as defined in BOLT#8. Any TLV will need to discount bytes already used in the message from this upper limit. Additionally, any TLV used in the onion layer will be limited by the maximum 1300 byte onion payload size, and bytes available to use for TLV fields will vary depending on the number of hops involved in the route.

Hard to say when it will be available. At this stage, the BOLTs are still a work in progress specification, and the plans for the 1.1 version could change.


Who created Litecoin? I've been reading about Litecoin, yet I haven't found any mention to a person or group responsible for the fork. Who created litecoin and did he write a whitepaper explaining why?

Edit:

After some searching it appears to be Charles Lee. Yet no whitepaper yet :(

This is the original announcement post by coblee. In a short bit of research, I wasn't able to find a formal paper. The post describes the changes divergent from Bitcoin.


wow, cool question, that's not very easy. Especially as there are different Segwit tx thinkable (native P2WPKH, P2SH-P2WPKH, Native P2WSH, P2SH-P2WSH or one with Bech32 address). Then there is the point of adapting all the length parameters (for signatures and scripts). I will give it a try with a standard P2WPKH. So first I'd decode your provided tx, I get this:

VERSION
 01000000

TX_IN COUNT [var_int]: hex=03, decimal=3
 TX_IN[0] OutPoint hash 9D62373BF1838B4E4F497836DB0D8EDEFFBCAD64B1474904BCDA8DC37937C0B0
 TX_IN[0] OutPoint index hex=01000000, reversed=00000001, decimal=1
 TX_IN[0] Script Length hex=6B, decimal=107
 TX_IN[0] Script Sig
  483045022100F3C0F555CD39198CAF77F6756256801FC57BCABE4892601B9DEF52259698F40A0220230262841BFF151
EB617F7D4CDDA6BF06D6FA791230C152E47F68BCDD0E6F64A01210204B3506D8903CA601C97A4ABAB6548E91004C535A5
A45E21299A494B146859CA
 TX_IN[0] Sequence (uint32_t) FFFFFFFF

 TX_IN[1] OutPoint hash B3CA9199969BD474BA0A609A1C01C3B6C2EB97885FC1DCAD2CD1704BE5EA0E06
 TX_IN[1] OutPoint index hex=00000000, reversed=00000000, decimal=0
 TX_IN[1] Script Length hex=6B, decimal=107
 TX_IN[1] Script Sig
  4830450221009DBEB64DDD4646E1118503C87FEAA95C531B5178C6E543BE782F6ECB05E8FBE602203945570F8DC56C145617F0283FA4032E0B7895A9CF2A81C7B65665B8AC608CB00121026602A5DC59C30F485B2C457AC8E2F617E27B10A1D2AE76F3231F9B01DFF08964
 TX_IN[1] Sequence FFFFFFFF

 TX_IN[2] OutPoint hash 3E90870CB2B89307514498D010EE1A1F724EE578859B8F118902DB08A45B717F
 TX_IN[2] OutPoint index hex=01000000, reversed=00000001, decimal=1
 TX_IN[2] Script Length hex=6B, decimal=107
 TX_IN[2] Script Sig
  48304502210095E300886EC4DF78E39D6D0CF5E5E531DED8F42F00E5730C371D8951867DAD5B02203C55F9403F6C2AAC444213161A93A86661E7367D4007BE74FFB3981387CC1C790121023F0AADFEB71A4964C5087FEC8B052C8236051DAE838D4747543330C6B266CE6E
 TX_IN[2] Sequence FFFFFFFF

TX_OUT COUNT, hex=02, decimal=2
 TX_OUT[0] Value hex=D578110000000000, dec=1145045, bitcoin=0.01145045
 TX_OUT[0] PK_Script Length hex=19, dec=25
 TX_OUT[0] pk_script 76A914342AB422C9E3EF285EFE9882AE54269ED9713DD688AC
 TX_OUT[1] Value hex=20A1070000000000, dec=500000, bitcoin=0.00500000
 TX_OUT[1] PK_Script Length hex=19, dec=25
 TX_OUT[1] pk_script 76A91488D924F51033B74A895863A5FB57FD545529DF7D88AC

 LOCK_TIME 00000000

Now I make a P2WPKH tx out of it. In general, the segwit  transaction is composed this way:

  [nVersion][marker][flag][txins][txouts][witness][nLockTime]

VERSION
 01000000

SEGWIT (BIP141): this is a segwit tx, marker=00
       (BIP141): flag=01

TX_IN COUNT [var_int]: hex=03, decimal=3
  TX_IN[0] 9D62373BF1838B4E4F497836DB0D8EDEFFBCAD64B1474904BCDA8DC37937C0B0
  TX_IN[0] hex=01000000, reversed=00000001, decimal=1
  TX_IN[0] Script Length hex=00, decimal=0
  TX_IN[0] Sequence (uint32_t) FFFFFFFF

  TX_IN[1] B3CA9199969BD474BA0A609A1C01C3B6C2EB97885FC1DCAD2CD1704BE5EA0E06
  TX_IN[1] hex=00000000, reversed=00000000, decimal=0
  TX_IN[1] Script Length hex=00, decimal=0
  TX_IN[1] Sequence (uint32_t) FFFFFFFF

  TX_IN[2] 3E90870CB2B89307514498D010EE1A1F724EE578859B8F118902DB08A45B717F
  TX_IN[2] hex=01000000, reversed=00000001, decimal=1
  TX_IN[2] Script Length hex=00, decimal=0
  TX_IN[2] Sequence (uint32_t) FFFFFFFF

TX_OUT COUNT, hex=02, decimal=2
  TX_OUT[0] Value hex=D578110000000000, dec=1145045, bitcoin=0.01145045
  TX_OUT[0] PK_Script Length hex=19, dec=25
  TX_OUT[0] pk_script 76A914342AB422C9E3EF285EFE9882AE54269ED9713DD688AC
 TX_OUT[1]
  TX_OUT[1] Value hex=20A1070000000000, dec=500000, bitcoin=0.00500000
  TX_OUT[1] PK_Script Length hex=19, dec=25
  TX_OUT[1] pk_script 76A91488D924F51033B74A895863A5FB57FD545529DF7D88AC

WITNESS TXIN[0] stack elements: hex=02, decimal=2
 WITNESS[0] data length (var_int), hex=48, decimal=72, data(uchar[]):
  3045022100F3C0F555CD39198CAF77F6756256801FC57BCABE4892601B9DEF52259698F4
  0A0220230262841BFF151EB617F7D4CDDA6BF06D6FA791230C152E47F68BCDD0E6F64A01
 WITNESS[1] data length (var_int), hex=21, decimal=33, data(uchar[]):
  0204B3506D8903CA601C97A4ABAB6548E91004C535A5A45E21299A494B146859CA

WITNESS TXIN[1] stack elements: hex=02, decimal=2
 WITNESS[0] data length (var_int), hex=48, decimal=72, data(uchar[]):
  30450221009DBEB64DDD4646E1118503C87FEAA95C531B5178C6E543BE782F6ECB05E8FB
  E602203945570F8DC56C145617F0283FA4032E0B7895A9CF2A81C7B65665B8AC608CB001
 WITNESS[1] data length (var_int), hex=21, decimal=33, data(uchar[]):
  026602A5DC59C30F485B2C457AC8E2F617E27B10A1D2AE76F3231F9B01DFF08964

WITNESS TXIN[2] stack elements: hex=02, decimal=2
 WITNESS[0] data length (var_int), hex=48, decimal=72, data(uchar[]):
  304502210095E300886EC4DF78E39D6D0CF5E5E531DED8F42F00E5730C371D8951867DAD
  5B02203C55F9403F6C2AAC444213161A93A86661E7367D4007BE74FFB3981387CC1C7901
 WITNESS[1] data length (var_int), hex=21, decimal=33, data(uchar[]):
  023F0AADFEB71A4964C5087FEC8B052C8236051DAE838D4747543330C6B266CE6E

 LOCK_TIME
00000000

So I assume the segwit pattern can clearly be recognized, see that the signature length is given as "0", and at the end appears per input the witness data. More to it can be found in the corresponding BIPs, and of course in the wiki.

and the serialized hex would be this:

  01000000000103b0c03779c38ddabc044947b164adbcffde8e0ddb3678494f4e8b83f13b37629d0100000000ffffffff060eeae54b70d12caddcc15f8897ebc2b6c3011c9a600aba74d49b969991cab30000000000ffffffff7f715ba408db0289118f9b8578e54e721f1aee10d09844510793b8b20c87903e0100000000ffffffff02d5781100000000001976a914342ab422c9e3ef285efe9882ae54269ed9713dd688ac20a10700000000001976a91488d924f51033b74a895863a5fb57fd545529df7d88ac02483045022100f3c0f555cd39198caf77f6756256801fc57bcabe4892601b9def52259698f40a0220230262841bff151eb617f7d4cdda6bf06d6fa791230c152e47f68bcdd0e6f64a01210204b3506d8903ca601c97a4abab6548e91004c535a5a45e21299a494b146859ca024830450221009dbeb64ddd4646e1118503c87feaa95c531b5178c6e543be782f6ecb05e8fbe602203945570f8dc56c145617f0283fa4032e0b7895a9cf2a81c7b65665b8ac608cb00121026602a5dc59c30f485b2c457ac8e2f617e27b10a1d2ae76f3231f9b01dff089640248304502210095e300886ec4df78e39d6d0cf5e5e531ded8f42f00e5730c371d8951867dad5b02203c55f9403f6c2aac444213161a93a86661e7367d4007be74ffb3981387cc1c790121023f0aadfeb71a4964c5087fec8b052c8236051dae838d4747543330c6b266ce6e00000000


Is there a way to index transactions so that filterload commands can be answered without iterating through all transactions in a block? Some SPV clients use the filterload command to only receive transactions to involving addresses in their wallet. Doing this takes the remote node linear time (with respect to the number of transactions in the block), which seems suboptimal.

Could we index transactions somehow so that we can answer these queries in faster than linear complexity? It seems possible, but I'm not sure how to go about it, especially in the presence of nTweak.

There is a known but fairly undocumented method of drastically improving SPV filtering that happens to remove this as an issue entirely, but it comes at the cost of requiring a hard fork change to Bitcoin.
Traditional BIP37 SPV
For BIP37, a client sets bloom filters on their peers and sequentially downloads transactions and blocks, relying on the remote peer to sift through all the data for that peer and produce pruned blocks which match their filter.
This is undesirable for a number of reasons:

In Bitcoin BIP37 bloom filtered SPV clients have absolutely zero privacy, even when using unreasonably high false positive rates.

Nodes in the network have to process an extremely large amount of data to return the results for just a single peer, and repeat work for every single peer connected on the receipt of a new block.

BIP37 SPV clients can be lied to by omission.

Peers loading an old wallet or rescanning one for transactions they may have missed must completely download all the filtered blocks, again at the cost of other network peers.

Bloom Filter Commitments

Before mining, a bloom filter would be deterministically constructed of all the pubkey-hash (address) and pay-to-script-hash (P2SH) elements in the candidate block.

The hash of this bloom filter would be required to be placed near the top of the block templates Merkle tree, and the contents of it not otherwise written into the block in any form.

When validating the block, this bloom filter would be deterministically reconstructed and verified to match the hash located in the Merkle tree. If the hash of the filter does not match, the block is invalid.

Fully validating nodes can cache the committed bloom filter to disk, or rebuild it at any time from the block data on disk as required (a time/storage tradeoff).

The new process for SPV clients:

Download block headers, the full committed bloom filter for every block in the chain, and the short Merkle path to the bloom filter commitment hash. Verify the header is valid, verify the Merkle path to the hash, verify the bloom filter matches the hash.

Locally compare the bloom filter for potential matches with the users wallet data (addresses, P2SH scripts). The peer independently gets to decide what blocks are interesting to them and which ones are not without having to actually download the contents. Similarly to the normal operation of bloom filters in BIP37 false positives can occur, but never false negatives.

If a block is found that may be interesting they can download the entire block and process it to find their desired transactions.

This neatly solves a number of issues with the traditional approach:

Random remote peers no longer get copies of the users bloom filter. They may be able to extrapolate that information from the blocks the client downloads, but the client can make many attempts to disguise this by downloading single blocks from various sources, making cover traffic of known uninteresting blocks, or even using non Bitcoin network storage once they know which blocks they are most likely interested in.

Remote peers can no longer lie by omission to an SPV client. If they alter the bloom filter committed in the block, it will no longer match the hash in the block, and the SPV client will know they have been deceived.

SPV clients can do quick rescans without needing to download any new data. By retaining the bloom filters once verifying them, they can do as many rescans against it without having to communicate with the network. For full storage nodes, this means significantly faster rescans without having to load whole blocks.

Nodes in the network no longer have any load serving SPV clients, beyond serving additional data when requested. It is their choice to cache the filters when verifying blocks (this comes at almost little cost as they would have to always create the filter anyway). This scales significantly better than BIP37 as the data remains the same for all peers, rather than having to be individually computed.

It's unclear if this would ever gain traction enough to be implemented in a hard fork, or what the optimal false positive rate for the committed bloom filter would be (it's a decision that needs to be made carefully, it can only be done once). There's a nasty tradeoff for usefulness between the size of the filter and it's false positive rate: too coarse means peers download far too many false positive blocks, too fine means the filters will be absolutely gigantic and impractical for anybody to download on an SPV client.
It's not obvious where that sweet spot is, or even if it exists.


How can I verify the PGP signature of https://liteaddress.org on Windows? Suppose I want to download a copy of https://liteaddress.org in order to run it offline in a safe environment. Then how can I verify that the website hasn't been hacked? How can I verify that the downloaded copy is legitimate and not compromised?

The website explains this:

  If you are familiar with PGP you can download this all-in-one HTML page and check that you have an authentic version from the author of this site by matching the SHA256 hash of this HTML with the SHA256 hash available in the signed version history document linked on the footer of this site.

I have just started to read what PGP is because I don't know what PGP and SHA256 hash even are and how they work.

My knowledge of computers is very basic. I mean, I know how to use a computer, but PGP, SHA256, etc. are too technical for me.

Can someone explain to me step by step (assuming my knowledge regarding these topics is zero) how to verify the PGP signature of liteaddress.org?

These steps can be simplified if you use UNIX, as most of the tools are already available. However I assume you use Windows.
For PGP explanation, search for videos on youtube.

These steps are for the webpage bitaddress.org.

For the PGP part:
1. Download and install Gpg4win.
2. Go to bitaddress.org and click on the link at the bottom to go to Github Repsitory.
3. On their Github page, click on 'CHANGELOG.txt.asc', then click on the 'raw' tab.
4. Right-click and save as.
5. Run Kleopatra(Gpg4win).
6. Click on Decrypt/Verify tab.
7. Find the CHANGELOG file you just downloaded and 'open'.
8. Now click on the 'search' tab, since you are missing the public key to verify the message.
9. The public key for ninja should have been found, click to import it.
10. Click OK/YES when asked to certify the fingerprints, we know it is the correct ones since the key fingerprint is posted on https://bitcointalk.org/index.php?topic=43496.0 .
11. You will be asked to create a account, click yes.
12. Type whatever you want(not important).
13. Create a simple password.
14. Click 'finish'.
15. Select all the IDs, and then tick the box ' I have verified the fingerprint'and next.
16. Click certify.
17. Enter the password you just created.
18. You will get certification successfull, click finish.
19. Now you will be shown if the contents inside CHANGELOG is valid.
20. If you get "The signature is valid and the certificate's validity is fully trusted." Then we know that the file content is authentic and hasn't been tampered with.
21. So now we know that the file CHANGELOG.txt.asc inside their Github is authentic. We can process to the SHA256 part.

For the SHA256 part:
1. Go to bitaddress.org and right-click and save as 'Webpage HTML only'
2. Download and run QuickHash.
3. In QuickHash go to 'file' tab and select SHA256 as Hash Algorithm.
4. Click 'Select File' and select the html file you just downloaded.
5. A SHA256 HASH value will appear.
6. Now go to bitaddress.org again, and at the bottom of the page click at the link to GitHub Repository.
7. Once in their GitHub, click on the file 'CHANGELOG.txt'.
8 At line 29 you will find
"bitaddress.org-v3.3.0-SHA256-dec17c07685e1870960903d8f58090475b25af946fe95a734f88408cef4aa194.html".
9. Do the "dec17c07685e1870960903d8f58090475b25af946fe95a734f88408cef4aa194" match with the SHA256 you got from QuickHash?
10. If matched, then the HTML you dowloaded is valid and authentic, if not, then something sketchy is going on.


I cannot see the expected OP_CODE in transactions According to different answers on this site the format of the standard TX claim script should be [OP_PUSH DER(R+S)+HashType OP_PUSH PubKey]

The OP_PUSH code is 4C, 4D or 4E depending on push length.

However in this transaction I cannot see the expected code. I could not even find the definition of the one there:
https://blockchain.info/rawtx/db320e85d8bef3895052d9bf002aeb185fa12eeef8445e3e45f31b9a0c90f9f6?format=hex

01 00 00 00 is txin index, 8C is the scriptin length and then comes 49.
Instead of 49 I would expect 4C.

Is it because you can leave out the OP_CODEs or what am I missing?


Miniscript or_i, d: - do they always imply a witness input? The question: is the following description of the behavior of these fragments correct?
The or_i fragment and d: wrappers all have an IF in their script that does not take the value from the argument(s), but from some external source. This external source cannot be the result of another miniscript fragment, because the fragments are composed as nested expression, not as a sequence of actions. This means that an input to IF in or_i, d: have to come from the witness that is specified at the spending time (that should be 1 or 0 due to MINIMALIF).
EDIT: removed j: wrapper from the question and the description because it does not take the value from external source, it just checks for the size of the data that X consumes

Correct. A Miniscript satisfier needs to provide the 0/1 in the witness for these fragments.
To give more than a one-word answer, we assume MINIMALIF in our analysis (for size/fee estimation). Our original design enforced it in script using the opcodes SIZE EQUALVERIFY, but we dropped it because our design assumes standardness everywhere. (If we did not assume standardness we'd have a lot of very expensive checks to add to avoid malleability ... e.g. to check that signatures are either valid or empty is pretty expensive to do in Script).


How does a P2SH script get executed? I'm trying to visualize how a typical P2SH script gets executed, as I realize that it's a special form of script that gets executed slightly differently to a standard script.

Before P2SH:

Before P2SH added new validation rules, nodes would execute the script like this:

In other words, an old node would just be happy to check the the HASH160 of the redeem script matches the HASH160 in the scriptPubKey. No MULTISIG validation would need to take place, because OP_1 (TRUE) would be left on top of the stack.

After P2SH:

With the new validation rules, I'm guessing the script executes something like this:

Question:

Does P2SH validation create a second stack using a copy of the redeem script, and then validate that stack before moving on to deserializing the redeem script (and then validating that script as normal)?

I'm hoping that my visualization of P2SH execution isn't misleading.

Does P2SH validation create a second stack using a copy of the redeem script, and then validate that stack before moving on to deserializing the redeem script (and then validating that script as normal)?

Kind of. It really isn't a second stack but rather a copy of the original stack. Once the scriptPubKey execution is completed, the original stack before scriptPubKey execution is restored and then the redeemScript is executed.

The flow is something like this:

Execute scriptSig which creates stack
Copy stack to stackCopy
Execute scriptPubKey using stack
If P2SH, replace stack with stackCopy
If P2SH, Pop top item off of stack and execute as redeemScript using stack


How to send/receive Bitcoins from cold wallet? I have generated a Cold Wallet using bitaddress.org (pub + priv key)

How do I send / receive Bitcoins from / to the generated addresses?
Is there something I should mind about?
Receiving seems to be easy: Just send Bitcoins to the generated Bitcoin Address, correct?

I have no problem to use the commandline.

Is there a way to do this (send / receive) without needing to use my private key on a computer connected to the internet?

Thanks for helping

"Is there a way to do this (send / receive) without needing to use my private key on a computer connected to the internet?"

Yes, search for 'offline wallet'. The basic idea is the following:

download the 'offline wallet' webpage you liked
you must be online to fill blanks like addresses, amount and fee
sign the transaction while offline and copy it
go to a website that broadcast transactions
paste your raw transaction already signed and push it

In my opinion, this is the safest way for non-developers to do bitcoin transactions.


As transactions are getting increasingly slow and expensive, how can Bitcoin compete against newer better currencies? If I understand correctly, every transaction needs new blocks to be created (mined), which is becoming increasingly hard, slow and expensive. Not mentioning the massive energy consumption, already raising environmental issues.

On the other hand, any new better currency would offer exactly the same service, except faster and cheaper.

Then how can Bitcoin compete against it, in long term?

When transactions are created they are essentially a payment promise. They are submitted as a message to the network, where every node checks that the promised money exists and then forwards the transaction. Some of these nodes collect transactions in order to create a new block. These miners are essentially participating in a giant lottery where the winner gets to author a new block.

To that end, miners chose which transactions they are trying to confirm and add their own Coinbase transaction. The Coinbase transactions is the first in a block and gets to collect the transaction fees, creates the block subsidy, and contains the segwit commitment (in a segwit block). All the other transactions can be chosen at the leisure of the miner, although they pick the transactions with the highest fee rate, i.e. the transactions that generate the most revenue to them, by default.

The mining process is self-adjusting, in that the difficulty of blocks gets reset every 2016 blocks. Hereby, the difficulty can increase or decreaseee by up to a factor 4. Hence, the difficulty does not always have to get larger, in fact we've seen it decrease a few times this year. There is an argument to be made for it becoming slower, in that lately the demand for transaction confirmation has been much larger than the available blocksize which caused a lot of transactions to remain unconfirmed for weeks at times.

  On the other hand, any new better currency would offer exactly the same service, except faster and cheaper.

The thing is: A new network actually cannot offer the same service. There is a huge demand for Bitcoin transactions. However, a new network can only transmit its own tokens. If you want USD, would you settle for Venezuelan Bolivars instead? Although there have been numerous clones, copies and forks, in the past eight years, just cheaper transactions don't seem to be a sufficient incentive for adoption.


Where can I find On Balance Volume for bitcoin? (or ETH, LTC?) I recently read about the usefulness of On balance Volume (OBV) in predicting price movement.

I use GDAX and don't think it has OBV.
(Or is there?)

Any exchange that displays OBV?

Thanks.

No GDAX don't offer OBV.

However, you can use www.tradingview.com and apply OBV on chart from for example Coinbase/GDAX or other exchanges.

The sign-up is free, you only have to pay if you want to use more advanced technical analysis methods.

How it looks like:


how to get confirmations about many transaction at once using bitcore node or bitcoind rpc? how to get the confirmations of many transaction at once using bitcore node or bitcoind rpc?

I think it's possible to get the confirmation of a single transaction using getrawtransaction of bitcoind rpc, but i want to check the confirmations of multiple transaction by one call. Is it possible?

Thanks

Solutions (depending on your use case)

Use JSON 2.0 batch requests (supported in Core)
Use REST with binary export https://github.com/bitcoin/bitcoin/blob/master/doc/REST-interface.md
Use the wallet if your set of scripts you want to watch is known. Use list transactions to get all relevant transactions of a set of keys/scripts


what questions should i ask when deposing a client about hidden bitcoins I am deposing a client's spouse about bitcoins they have mined since 2013.  What relevant questions should I ask to ascertain number of coins mined and transactions concerning those coins, such as number of coins still held and location of coins?

To 'own bitcoin' is to have knowledge of the private keys that allow some unspent transaction output (UTXO) to be spent (though in some cases, knowledge of a key may be delegated to a custodial service). So understand that the 'bitcoins' themselves are not what a user must keep safe, rather it is the keys that allow those coins to be spent.

With this in mind, consider that there are many ways to store bitcoin keys. A savvy user may be able to obfuscate their keys entirely, and there is not necessarily any way to prove that a person has current knowledge of a key.

"How much bitcoin have you mined since 2013" is the obvious question to ask. Consider that some amount of the bitcoin mined may have been sold in order to finance the mining operation, may have been traded into other cryptocurrencies or assets, may have been lost due to user error, etc.

Otherwise, I agree with @RaghavSood's comment, especially considering the legal implications of this question, it is difficult to answer comprehensively in a SE posting. This seems like a situation in which a paid consultant may be appropriate.


How can Bitcoin work with Ven? Bitcoin and Ven seem to have very different properties, so are there any complementary ways for them to interact? Maybe with Ven acting as a universal fiat representative?

At present I'm not aware of any ways that Bitcoin and Ven interact, but from what little I know of Ven there's no reason they couldn't interact in the same ways as any traditional currency. I see no compelling reason why a Bitcoin<->Ven exchange couldn't be opened, though I don't know if Ven allows chargebacks. Ven might also be useful as an analysis tool, since it essentially represents a "basket of currencies" and therefore the price of Bitcoin in Ven might be a better indicator of Bitcoin's actual worldwide value since differences in value of local fiat currencies would have less of an effect on the BTC/VEN price than say BTC/USD or BTC/PLN.

Update: Apparently, Ven is a private, local currency which cannot be converted back into other currencies, so the above may be inaccurate. Ven does allow private exchanges, though, so it may still be possible to build an exchange.


How does the blockchain.info shared receive work? I understand the concept of a mixer and have succesfully used Blockchain.info wallet's shared send feature. The shared receiving address however confuses me. I assumed that one needs to click "new shared address" and then send the coins to the new address that is created. However after testing with tiny amounts I got really weird results, such as coins disappearing, mixing not working etc.

I am asking for a detailed step-by-step guide on how to use the feature as well as an explanation of the mechanism behind it. Thanks!

The Shared Recieve is also a mixer. When you get a new shared address, it will also show the "Forward To" address which will be one of your main addresses. If anyone sends bitcoins to that shared address, Blockchain.info will send them through its mixer then send it to the "Forward To" address. However, there are transactions costs and blockchain.info's 1.5% fee. It's meant for bigger amounts.


Can I see the address of my direct peer? Can I see the bitcoin address (pkh) of my directly connected peers?

I'm asking this question because if I can, I can deanonymize my peers given their IP addresses (from the TCP header) right?

If this is the case, isn't this a security flaw as one can set up a node and connect to as many nodes as they can. They can then create a mapping of IP to bitcoin addresses, thus deanonymize most users if they don't use a proxy service like Tor.

First of all, nodes do not necessarily have an address, nor do they necessarily have just one. Addresses are not identities and are not tied to nodes. A node operator can operate a node without a wallet, so that node does not have any addresses. A node operator could have a wallet on their node that has many addresses, that node would have many addresses. So this idea that each node has an address is itself incorrect.

For nodes that do have wallets, the wallet and the node basically operate separately. The node part (handles P2P, tx and block validation, etc.) does not know the contents of the wallet. It does not know what addresses are in the wallet and what transactions actually belong to the wallet. So no, the node cannot directly reveal the addresses for its associated wallet(s) as it does not have access to that information.

The only way you would learn what addresses belong to a node are by observing the transactions that it sends. But in order to know what transactions it truly sends, you need to surround that node with nodes that you control so that you can control/observe everything that that node learns about and sends. When it sends a transaction, it will be a transaction that was not relayed to it by one of your nodes surrounding it so you know that transaction originated from that node and then you can do other blockchain analysis techniques on that transaction to learn further information. This kind of attack is known as a sybil attack.

Another related attack is to connect to every single node on the network and see which node first relays a transaction. However this is basically impossible to do. There are many non-listening nodes so you wouldn't be able to connect to them. Additionally due to latency and physics, this is not as reliable as your node(s) could learn the transaction from a relay node instead of the direct connection to the originator if there is too much latency on that direct connection.

However performing these attacks is not easy. Nodes have active countermeasures to make these attacks more expensive and increase their own privacy. These attacks can be fairly costly and there is no real monetary gain from learning this information.


Maximum `getdata` message size From the Bitcoin wiki's Protocol Specification page:

getdata
getdata is used in response to inv, to retrieve the content of a specific object, and is usually sent after receiving an inv packet, after filtering known elements. It can be used to retrieve transactions, but only if they are in the memory pool or relay set - arbitrary access to transactions in the chain is not allowed to avoid having clients start to depend on nodes having full transaction indexes (which modern nodes do not).
Payload (maximum payload length: 1.8 Megabytes or 50000 entries)

I see the point in the code where the client enforces the 50000 entry limit. But where does it limit how large the payload is? It's not the send limit, that's 1 MiB. (by default) It's not the receive limit, that's 5 MiB.
Is the wiki wrong?

The inv_vect object is 36 bytes long (a uint32_t for the type of object and a char[32] for the hash). 50000 * 36 / 1000000 = 1.8 MB. I think it's a simple as that or I didn't understand you properly.


following coins between blockchains Question: is it possible to further obfuscate ownership/origin of bitcoins by trading it for another cryptocurrency at an exchange? (as it is easier to do this for large amounts than it is with cash)

Lets start with 10000 bitcoins. The point here is to make the size a large and conspicuous one.

You have 10000 bitcoin that you would like to obfuscate the origin of. Right now those 10000 bitcoins are at an address you control. The object here is to move around that value between addresses.

Just sending them to another address would have a record of all the addresses they were sent to.

Sending them to an exchange and back would still have the record as well as the exchange's records.

Even breaking it up into smaller transactions just makes it more tedious to follow the pieces but it is all still easily browsable using existing services.

But what if they were traded for another cryptocurrency at an exchange?

This gives you the initial transfer to the exchange, everyone and the exchange can see that. But then they are exchanged, probably nominally, on the exchange for a different crpytocurrency. A completely different blockchain. For someone doing an analysis on the trail of these coins, how would they be able to account for switching blockchains? Would it even be possible at all?

Going to a different blockchain, and even then going back to the bitcoin blockchain at a different address seems like an impossible thing to follow.

Is there a way to follow coins exchanged between blockchains? Is there a way to know that the owner of the 10,000 bitcoins exchanged them? since on the bitcoin blockchain, it will all have happened on the exchange and the coins will simply look like they have been broken up between addresses, but you wouldn't know that the original owner is no longer holding those coins at all.

If you want to hold bitcoins anonymously then the only thing you can easily do is a cash transaction.  In the good old days you could just have mined some, but that's not an option available to most people today.

To answer the specific question, the exchange will have records of the receiving and sending transactions, so if you consider them to be compromised then there is no additional security available in using an exchange regardless of if you are moving currency within a blockchain or  between blockchains.


False error notifcation (double spent) 'code' => -4, 'message' Now and than I seem to get a consistent false error notification.

Error message:

  Request error: array ( 'code' => -4, 'message' => 'Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of the wallet and coins were spent in the copy but not marked as spent here.', ).

After the notifcation the getbalance and getbalance '' '1' are in conflict. Getbalance not showing the actual balance correct anymore.
Despite the error the bitcoin transactions gets broadcasted correctly on to the network and within a couple of days (most of the time) the transactions get processed successfully.

Info on client

{
  "version": 130000,
  "protocolversion": 70014,
  "walletversion": 130000,
  "balance": 13.56365098,
  "blocks": 455269,
  "timeoffset": 0,
  "connections": 8,
  "proxy": "",
  "difficulty": 440779902286.5892,
  "testnet": false,
  "keypoololdest": 1488349424,
  "keypoolsize": 100,
  "paytxfee": 0.00150000,
  "relayfee": 0.00010000,
  "errors": ""
}

Anyone here having the same problems lately?

The reason for this could be that you spend a long chain of unconfirmed transactions. In 0.14, Core has improved this behaviour and added an startup option called -walletrejectlongchains (needs to be enabled, default is off).

Otherwise your wallet might spend long chains of unconfirmed coins but your node/mempool won't accept them.
Also, have a look at the -limitancestorcount settings and consider reading the pull request here


IBM Hyperledger Fabric Running Multiple Nodes on Multiple Datacenters & PCs At the moment I'm playing around with some of the Hyperledger Fabric demos that IBM has on their cloud platform Bluemix.

When you initially spool up an instance you're offered more than one option of location, such as US South, and... at least one more, I forget, California or something.

Running a blockchain application on someone's private cloud somehow feels a bit hollow.

I'd like to know if it's possible at least to have multiple nodes running in multiple IBM datacenters simultaneously maintaining a ledger between eachother and exposing an IP address to demonstrate where they're located.

Is it possible that I could add more nodes to such a network that I can control, i.e. my own machine?

In the recent technical steering committee meeting of Hyperledger they discussed the planning for an initiative to connect across multiple cloud providers, to demonstrates that Fabric can be deployed to multiple cloud platforms and integrated into a highly distributed and heterogeneous consortia network.

This effort (as of the time of writing) is under way with a number of community members interested in contributing.

You can read about it more in the meeting minutes here.


What are Tonal Bitcoins? What are Tonal Bitcoins? In what application is this system of notation superior to the decimal notation? Are there any clients or other services supporting the tonal system?

After taking a quick look over the Tonal Book (free PDF) and the Wikipedia article it appears to be an early attempt at constructing a number system in base 16.

Programmers will immediately recognise this as hexadecimal. For non-programmers hexadecimal uses the following representations: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Note that decimal 10 to 15 are represented by the single letters A to F, such that FF is decimal 255 or (16 * 15)+(1 * 15). To differentiate a decimal number from a hexadecimal number the conventions 0x10 (decimal 16) or 10h are widely recognised.

The Tonal bitcoin representation attempts to offer an alternative representation of BTC known as TBC (Tonal Bitcoin) and uses the various Tonal letters to represent them. The Tonal alphabet is more complex than the hexadecimal system and requires special fonts to be available on the systems using it.

It is unlikely that this archaic approach to base 16 is ever likely to gain traction when much more widespread approaches are available.

Units covering powers of 2 in computing

It should be noted that in 1998 the International Electrotechnical Commission (IEC), Institute of Electrical and Electronics Engineers (IEEE) and the International Committee for Weights and Measures (CIPM) adopted a purely "powers of 2" approach for some use cases. Notably the representation of computer storage and data transmission rates.

This gives rise to 2 unit systems - one base 10, the other base 2:

The primary power of 10 notation we're all familiar with:

1 kilo byte (kB) = 10 ^ 3 bytes
1 mega byte (MB)= 10 ^ 6 bytes (historically 1000 * 1024 for some storage cases)
1 giga byte (GB) = 10 ^ 9 bytes

The alternative power of 2 notation:

1 kibi byte = 2 ^ 10 bytes
1 mebi byte = 2 ^ 20 bytes
1 gibi byte = 2 ^ 30 bytes

Thus there is even less reason to use the Tonal system since a widespread alternative with well-defined prefixes has already been ratified for some time.


Creating a fake transaction AttackerAlice has a BTC Wallet with 0 BTC.
AccompliceBob has a BTC Wallet.

Is it possible to transfer 100 BTC from AttackerAlice to AccompliceBob?

Suppose a BadMiner accepted this as a valid transaction, and puts this fake transaction into a block, how will it be detected and rejected?

You can create fake transactions and blocks including fake transactions all day long if you want. Your problem would be getting other people to accept those blocks and they won't because they can very easily see that it contains fake (better word: invalid) transaction(s) and simply disregard those blocks completely.

The first invalid block wil never be accepted by any non-accomplice so it doesn't matter how many blocks are put on top of that, they won't be accepted either.


spend balance using master key We can spend balance of an address if we have private key. is it true for master private key too? I mean, we could spend spend balance using master private key? or we should use child private key?

A Bitcoin transaction to an address has to be spent using the specific private key that corresponds to the public key whose hash is the address.  In this case, that's the child private key.

Of course, if you have the master private key, you can compute the child private key from it.  Your Bitcoin wallet client might even do that for you.  But at the last step, it's the child private key that is used.


24 Hour price change Mean If a currency price is showing ABC per coin and its price % is +X% or -X% then this reference is taken from which last price i.e. which point of time the price is taken

The 24h % change is the difference between the current price and the price 24 hours ago.

The current price of bitcoin is $14988 and was $14937 24h ago. So the 24h change is +0.3%, even if there was a huge spike between this period of time.


How to send money using blockchain API? I am not very familiar with php but I just want to know how this works. I am trying to use the blockchain API to send some money for testing purposes but the transaction isn't taking place. My current code is this :-

<?

$guid="xxxxxxxx";
$main_password="xxxxxxxx";
$amount = "50000";
$to = "xxxxxxxx";

$json_url = "https://blockchain.info/merchant/$guid/payment?password=$main_password&second_password=$second_password&to=$address&amount=$amount&from=$from&shared=$shared&fee=$fee&note=$note";

$json_data = file_get_contents($json_url);

$json_feed = json_decode($json_data);

$message = $json_feed->message;
$tx_hash = $json_feed->tx_hash;

?>

Please tell me what is the error in my code and also how to print out the response on the screen.

You don't have to use all the optional variables in your request link, specially when you have not set a second password, etc...

this suffice the request to send your transaction:

$json_url = "https://blockchain.info/merchant/$guid/payment?password=$firstpassword&to=$addressa&amount=$amounta&fee=$fee";

even if you remove "fee" variable, it would still work but you should consider 0.0001 miners fee that is there by default for minimum miners fee.

also you can get these values from the response:

$json_feed = json_decode($json_data);

$message = $json_feed->message;
$txid = $json_feed->tx_hash;
$notice = $json_feed->error;


There is no txid=a713489612f927ccc3c410173a8d616d6f17df0774e3e79d7715b4cfc72ec6a4 in blockchain. You are trying to spend non-existed output.


How to import say 1million bitcoin privkeys in bitcoind / bitcoin-qt? I was wondering if there are ways to automate / mass private key import into the bitcoin client. Anyone knows of a command or has a script or an idea to share?

thanks.

Well...
You could automate it using the JSON RPC and slowly work through the keys, however this will be kinda slow. If you actually need to work with 1 million keys, you may need to consider an alternative option.

What is it you need to do with the keys?


NBitcoin and Mnemonic Standards I am very new to Bitcoin development so forgive me...
I'm using NBitcoin in a .Net console app to generate a master key using a mnemonic and then derive hierarchical keys. Here is the code I am using:
Mnemonic mnemo = new Mnemonic(Wordlist.English, WordCount.Twelve);
ExtKey hdroot = mnemo.DeriveExtKey();
var wif = hdroot.GetWif(Network.Main);
var defaultAddress = hdroot.Derive(new KeyPath("m/0/0"));

Here is the Mnemonic I get as a result, as wells as a public address derived from the master key using the "m/0/0" path:

Mnemonic: dry brown drive parade drastic shine embrace hard report loan fold iron
Path: m/0/0/: 1GcchMaHAN1XRQsoi8gPg8TShqzN4sNGvu

I tested recreating my keys using the mnemonic and was always able to derive the same exact keys as expected within my console app.
Being curious I wanted to see if I could import this mnemonic into existing wallet software and get the same keys as well. Since the Exodus wallet uses a standard twelve word mnemonic I fired it up and generated my wallet using the same mnemonic. However none of the keys match up! I exported my public key and made sure it was the same path of "m/0/0" from the master. As you can see it is NOT a match:
Exported public key from Exodus using the same mnemonic:

Mnemonic: dry brown drive parade drastic shine embrace hard report loan fold iron
Address: 1DMDJ266gxMCJiTcWk5MZFbfxxx4Ss3URN
Path: m/0/0

I also tested the mnemonic on Jaxx as well as the the Coinomi wallet on Android and it derived the same keys as Exodus does.
So I am completly confused. The only thing I can think of is that there is a standard entropy that these wallets use that is missing from my implementation?
My question is, how can I use NBitcoin to create the same mnemonic standrad that wallets like Exodus, Coinomi and Jaxx use?

The mnemonic standard is BIP 39, and that is not the problem. The problem is the derivation paths.

Exodus, Jaxx, Coinomi, and many other wallets use the BIP 44 specification for deriving keys. This means the m for those wallets is actually the key at the path m/44'/0'/0'. However in your code with NBitcoin, you are using direct BIP 32 paths, so your m is actually m. So in NBitcoin, your keypath is actually m/0/0 but in other wallet software, the path is m/44'/0'/0'/0/0


access QR from a month ago First of all, I am clueless about using bitcoin.
I sent money to a friend in Japan. I used a QR that I had used before. I did not see that he        wanted me to use a new QR. Apprently he cannot access that previous QR that I used by mistake.
He says  "There is a login info and password I need to access the main account online" and he does not have that. I have the long number underneath the "bar code".
I do not believe that he cannot access that QR from just a few weeks ago.

The QR code your friend sent you encodes a bitcoin address, which your wallet will use when creating a transaction that will pay your friend. So if you re-used the old QR code, that just means you sent BTC to the same address your friend wanted you to use in the past.

If your friend no longer has access to the private key for that old address (ie, he is locked out of the wallet for whatever reason), then they will be unable to spend the BTC you sent. The only way to recover those BTC, is to get access to that wallet/private key again.

  I do not believe that he cannot access that QR from just a few weeks ago.

You'll have to decide whether you trust this friend or not. It's difficult for me to say what the nature of the issue is on his end, but given the level of responsibility a bitcoin user must have in order to  secure their funds, it is not exactly routine to just 'lose access' to a wallet. Normally, it is recommended that every effort be taken to ensure you can securely maintain access to your wallet. If you don't, and access is lost, then your coins too will be lost forever.


Is there a list of Bitcoin malware Does anyone keep a track of various Bitcoin-related malware, such as the recent DevilRobber Trojan?

Started a Wiki page on this topic.

So far I`ve found mentions of 3 different Bitcoin-related malware:

Infostealer.Coinbit - steals wallet.dat
DevilRobber Trojan - mines Bitcoins
BKDR_BTMINE.DDOS - performs DDoS attacks on miners


Merkle root Vs transaction hashes It is not clear to me, why not we can simply store transaction hashes in a block header instead of storing the Merkle root. I understand that storing transactions' hashes will slightly increase size of a block header. However, the transaction verification process will be greatly simplified as one does not have to compute Merkle tree. In that case, one can verify a transaction by simply searching that transaction hash in the header.

Noman Aslam

Storing the hash of every transaction in the block header could make the block header much larger than it currently is. Right now the whole header is 80 bytes, and the tx merkle root is 32 bytes of that. You can hash any number of transactions into a 32 byte merkle root, so it works very well as a cryptographically secure compression technique.

I can think of a few effects of larger block headers:

SPV wallets would be more resource intensive to run, they would require much more storage and bandwidth. I think computing the merkle branch is probably rarely the hardware bottleneck to be considered when designing wallets.
Miners would be incentivized to mine small blocks. This is because a larger blockheader would mean a larger input value for the SHA-256 hash function, so it would take longer to compute the hash. This is important: the fastest block hash a miner could compute would be one with no transactions in it (other than the coinbase).
You would be able to fit less transactions in a block, since more of the blockspace would be used by the header. A good implementation would not change the number of transactions you could fit in a block, see Pieter's comments below.

There are probably more, feel free to expand on this list.


Bitcoin QT Rpc Transaction date format I am trying to get information about my transactions from my wallet,

I use Listtransactions, and get all the information, but the time/blocktime/receivetime - there are all in number i can't decipher "1390424516" i thought they were ticks, but new DateTime(1390424516) gets me 01/01/0001 00:02:19 ...
I tried using them as seconds, i got to year 0045...

the documentations says
"time" : time associated with the transaction[1].
From block timestamp, unless transaction was already in memory pool then the local time when the client added the transaction to its memory pool

so i tried both methods on Blocktime too, but can't figure out how to get the time...

This is a Unix date format. As I understand, you are using c#, so it will be look like:

public static DateTime FromUnixTime(uint time)
{
    return new DateTime(1970, 1, 1).AddSeconds(time);
}


Couldn’t find my transaction I bought bitcoin from Simplex two days ago but now when I check the blockchain.info website I face to "No transactions found for this address, it has probably not been used on the network yet" error. I will really appreciate it if someone can help me. Is that normal or maybe the problem comes from the seller?

Thanks

Check the transactions section in you dashboard else contact the technical support.
here is the answer i found in their website : https://www.simplex.com/faq/

Usually, payments are processed within the hour; however, some cases require more attention and can take up to 24 hours to be approved.  You will receive an email once your payment has been reviewed.

If your transaction is still pending, it might be because you have yet to submit to a verification request.
In such cases, an email is sent asking for proof of identity or card ownership – which can land in your spam folder. In case of delays, please check your spam folder for a verification email.


What are concrete uses of Bitcoin script? I am looking at solutions to simplify the architecture of Bitcoin from a more theoretical perspective. I am thinking about removing Bitcoin script, however I am not sure what restrictions this introduces.
I find many vague arguments, that having script makes us more flexible, however I am looking for concrete examples.

I have the following things:

Payment channels
Gambling / distributed random generator
Storing data in the blockchain / Proof of publication

What else is out there?

multisig transactions
blockchain-embedded escrow
time-bound transactions
proof-of-burn
bets based on some oracle, either trusted or decentralized

I suppose there are many more and that some if not all of the above can be, more or less efficiently, realized with P2PKH, possibly with some extra protocols required.


How long could you list a sell order? Relatively simple question. Is it at all looked down on if I make a sell order at an exchange for a long time? For instance say I get some darkcoin and do the math to figure out how much of a return I'd like to get, then file the sell order in advance before it reaches the price I want. I don't know if this is normal, or seen as polluting the order list or something.

There is nothing wrong with it. Just put the order up you want, and wait for it to execute. There are far worse things to do on the internet these days then filling the orderbook. Nobody will care, because most of the time it is outside the visible range (the orderbook pages from Kraken for example).


Fixing libtool for -rpath problems I am trying compile bitcoin on Debian 7 Wheezy (64bit) but I am encountering the error Fixing libtool for -rpath problems.

I installed all dependencies

sudo apt-get install build-essential libtool autotools-dev autoconf pkg-config libssl-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libdb4.8-dev libdb4.8++-dev (like that http://askubuntu.com/questions/290094/libdb4-8-is-no-longer-available
apt-get install miniupnpc

$ ./autogen.sh
$ ./configure
...
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libsecp256k1.pc
config.status: creating src/libsecp256k1-config.h
config.status: src/libsecp256k1-config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
Fixing libtool for -rpath problems.

What is the solution to fix this error?

That's not an error.

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


How to check if the segwit2x fork was adopted? SegWit2x was scheduled to happen today at BTC block 501451 (http://b2x-segwit.io).

How do I check if the fork was adopted and by whom?

Electrum wallet docs (http://docs.electrum.org/en/latest/hardfork.html) say the app will detect a blockchain split, but mine didn't notice anything. Does this means the fork wasn't successful?

Here's an official announcement of the fork having taken place. According to the official website the fork is planned for block 501451 which has indeed occurred about 8 hours ago.

The stats of their mining pool don't look to promising though, but it might be too early to tell. Also keep an eye out on their subreddit and other social media.


inputs getting smaller noob here,

am I right in thinking that as bitcoin matures, the average size of transactions, will go up, i.e. higher kb per n BTC, as all the coin gets increasingly spent so that any sizable payment will ultimately end up being made up of increasingly large numbers of smaller inputs, and that this will contribute to the rate at which the blockchain size increases, on top of general total transaction increases over time.. ? With the current large mempool size and delays in getting transactions accepted for mining, except with big fees per kb, will this lead to increasingly large fees to send payments in a timely way or longer delays ??

Thanks

You seem to think that the number of transaction outputs must be higher than the number of transaction inputs. That's wrong.

Just have a look at transaction 19e68405b2ac2f96d5127748ff07bbd629cde93a230582317c9ff50d9644b562 (click me) which has been included in the most recent block. It took 28 inputs from 28 different addresses and produced 2 outputs in 2 address.

The transaction you describe (transactions with a lot of inputs) actually mean that there are fewer UTXO because of them. The transaction I linked to above is very big (8.6 kB) but it destroyed 28 UTXO and created only 2 new ones.

When you're fearing to have to pay higher fees as an individual, you should think about how you actually get many UTXO. If we're talking about a transaction which takes only 2 inputs and has 28 outputs, those 28 outputs will most likely to belong to 28 different people (28 people who retrieved money from an exchange at that time bundled together in 1 transaction or 28 employees payed by a single employer). But in those cases, creating many UTXO is totally justified because they belong to different people. When they spend their money, they unify the money, again, into fewer UTXO.


Can we think of an address a mini-account, and is re-useable and disposable? Can we think of an address as a mini-account, and we can keep on using one, or we can use many to add privacy to our activities, and we can transfer or sell the bitcoins in it and make them empty and dispose of them any time?

No, you should not reuse addresses/treat them as a "mini-account". You should create a new one for every transaction and not re-use old addresses.
Your wallet software will generally handle this automatically for you -- just remember to request a new receive address each time you receive new bitcoin, and it should give you a new address that you should only use once.


Is there a forum-like exchange for trading Bitcoins person-to-person? I was to trade Bitcoins for PayPal quite frequently and I know that PayPal doesn't allow Bitcoin exchanges to accept PayPal payments.
But there should exist a person-to-person trading site that works like a forum and where people choose how to pay each other, no?

I know about bitcoin-otc, but I'd prefer a forum-like concept better instead of IRC.

Thanks in advance!

LocalBitcoins.com has person-to-person PayPal trading:

http://localbitcoins.com/buy-bitcoins-online/paypal

https://localbitcoins.com/sell-bitcoins-online/paypal/

There are also discussion forums where people frequently discuss about PayPal, avoiding fraud there, etc. Here is an example:

https://localbitcoins.com/forums/#!/trading#getting-paypal-scammedive

LocalBitcoins.com has also trusted buyers list where you can set your trading parties trusted and make trading offers available only for them (to avoid scammers).


How are SIGHASH flags encoded into a signature? This page describes SIGHASH flags:

  OP_CHECKSIG extracts a non-stack argument from each signature it evaluates, allowing the signer to decide which parts of the transaction to sign. Since the signature protects those parts of the transaction from modification, this lets signers selectively choose to let other people modify their transactions.

But how can I extract the SIGHASH flags from the signature?

The SIGHASH type is serialized as a single byte and then simply appended to the DER-encoded signature.

Example of a typical P2PKH scriptSig:

304402206e3729f021476102a06ea453cea0a26cb9c096cca641efc4229c1111ed3a96fd022037dce1456a93f53d3e868c789b1b750a48a4c1110cd5b7049779b5f4f3c8b62001 03ff1104b46b2141df1948dd0df2223720a3a471ec57404cace47063843a699a0f

The second element above is the public key, serialized as per SEC 1's Elliptic-Curve-Point-to-Octet-String Conversion. The first element is the DER encoded signature, with a 0x01 appended to specify it's a SIGHASH_ALL (whose values you've already found). To break the signature string down further, if you're interested:

30 <- a sequence
44 <- of length 0x44
  02 <- an integer
  20 <- of length 0x20
    6e3729f021476102a06ea453cea0a26cb9c096cca641efc4229c1111ed3a96fd <- r
  02 <- an integer
  20 <- of length 0x20
    37dce1456a93f53d3e868c789b1b750a48a4c1110cd5b7049779b5f4f3c8b620 <- s
01 <- SIGHASH type (not part of the DER encoding)

The SIGHASH type is also temporarily appended to the transaction before it is signed so that the signature precludes its modification, see this answer for more details.


How to get total transactions on the network with RPC I have seen no concrete answer to this question anywhere.
I assume it is possible to get the total number of successful transactions on the bitcoin network using bitcoin-cli command because most explorers provide this information.
How can i get this information from a fully synced node?

I'm reasonably sure this is not exposed by the RPC API.

You could parse debug.log and look for lines like:

2019-08-20T12:17:58Z UpdateTip: new best=0000000000000000000e6c402b311740e21f79a42ed84ecf69a3ae4fe88ce882 height=590956 version=0x20000000 log2_work=90.9855 tx=446914655 date='2019-08-20T12:17:55Z' progress=1.000000 cache=277.1MiB(321228txo)

Where tx=num gives the total transaction count. I reckon that most explorers maintain a separate database of the transactions, and simply run a query against that instead of pulling data like this from a node or log.


Get private-keys from wallet using bitcoinj I'm using bitcoinj for transferring bitcoin.

Now I want to export private key of my wallet.

So how can I get the private key from bitcoinj?

for address prv key

  void key(){
        ECKey key = new ECKey();
        Address pubAddress = new Address(NetworkParameters.prodNet(), key.getPubKeyHash());
        DumpedPrivateKey privKey = key.getPrivateKeyEncoded(NetworkParameters.prodNet());
        System.out.println("Public address: " + pubAddress.toBase58() + "; Private key: " + privKey.toBase58());
}

if you want master private key then do something like this

        NetworkParameters params = NetworkParameters.prodNet();
        Wallet wallet= new Wallet(params);

        DeterministicKey watchingKey = wallet.getWatchingKey();

        // Get the standardised base58 encoded serialization
        System.out.println("Watching key data: " + watchingKey.serializePubB58(params));
        System.out.println("Watching key birthday: " + watchingKey.getCreationTimeSeconds());


How do I restore a wallet from a backup file in MultiBit HD when you have the words and cloud backup? I have read this: How do I restore a wallet from a backup file in MultiBit HD?

and have the words and mbhdxxxx.aes files in my cloud storage and the wallet password....

but the next button is not enabled when I enter the words:

update
I have had multibit before the hd client. I have a file like

  mbhd-8a659fc1-9acd420e-b2127154-b924c146-3f974bab-20150825115221.zip.aes

in the cloud and have found a file like

  mbhd-20160630143523.wallet.aes

I have used decrypt_bitcoinj_seed from github and entered my password and got 12 words to restore. The python script did not work with the long and older filename but did work with the short one. But when I have the words and try to recover it says: no datestamp found. When I use the words to continue and select a folder containing the old long file names it does proceed but with errors. I feel that I am getting closer. But I could use some pointers from people who have more experience with multibit hd and recovery.

I did found a folder in a backup on an external hdd which seems to work, but then I got:

I have had 2 wallets now in Multibit. I have selected the old one and waiting an eternity for the sync to finish. I have now my old wallet value as unconfirmed.
How can I fix this? I have read this. but there is no repair... only recover.

Be sure to write the words in correct order and with small letters, secondly use only spacebar button between them, DO NOT USE Enter button to go to the next line.