text:
Backing up Bitcoin using only private keys?
So I'm really new to Bitcoin and cryptocurrencies, and I don't truly understand realtion between Bitcoin private and public key, and address!
I understand that for every private key, there is a public key, and that public key can be made and is made from a private key. So for every transaction you would have one private key and corresponding public key.
What I can't understand is how to backup Bitcoin wallet using private key!
Everyone says you just need to backup your private keys, but do I need to backup every private key, or just the first one, or i just need one private key to access my wallet?
Lets say i would like to backup my Bitcoin wallet by writing private keys on a piece of paper and storing that somewhere safe:

Do I need to save only first ever created private key to have access to all bitcoins I own, even i added them through multiple transactions?
Do I need to save every single private key generated, from every transaction to have access to all Bitcoins on blockcain?
If I save only half of private keys, from half of my transactions, does it mean i can only access Bitcoins from those transactions i own private keys?

I'm really confused about this one, and cant find answer anywhere! I'm not interested in backing up wallet, i need to store my private keys on a paper!
Sorry if question seems silly, I'm an old guy trying to learn all this new wonders! Thank you!

Private and public key pair is related to the address you keep funds in.  Actually public key can be considered to be the address. for someone to send you funds they need your address. You need private key to control the funds that are on that address (that is to send them from that address).

Thanks croraf! So lets say I have made 3 transactions to 3 different addresses. I would have to own 3 corresponding private keys to access bitcoins on those public keys, correct? If I would own only 1 private key, I would have access to just one transaction? OK, I get that part now!
So if I have software wallet on my PC, and have many transactions and private / public key pairs, if I lose one private key, I can't get Bitcoins from that transaction right? So the best way would be to transfer all the bitcoins to new public key / address, and save corresponding private key? Thanks again!

It depends on what kind of wallet you have.
Traditionally each private key was generated randomly by your wallet software. In this case every private key needs to be backed up.
Recently deterministic wallets have become popular. Deterministic wallets randomly generate a seed, and then use that seed to deterministically derive the private keys in a cryptographically secure way.
To answer your questions specifically:

It depends on whether you use a deterministic wallet. Traditional method: If you make multiple transactions, new keys are periodically generated and these need to be backed up too. Deterministic wallet: backing up only the seed is sufficient.
Also depends on wallet. Traditional: back up every key. Deterministic: just backup the seed.
Yes. Private key ownership = ownership of the bitcoin held at the addresses derived from those keys. If you don't have the key, you can't spend the bitcoin.

In Bitcoin Core, both kinds of wallet can be sufficiently backed up by backing up your wallet.dat file. There is an HD (Hierarchical Deterministic) symbol in the bottom right that is greyed out and crossed out if you do not have a deterministic wallet.
Since you want to backup on paper, maybe Bitcoin Core is not the best solution for you. You could try using a wallet that implements BIP 39 (there is a list of them on the deterministic wallet article), which derives the seed from a human-readable list of words. In this case, writing down the seed words is a sufficient backup.

So I can think about Bitcoin wallet as a software that creates public and private keys, and enables me to send Bitcoins to public keys, and retrieve them with private keys. And if I have lets say 5 public / private keys, it just sums all the Bitcoins on that 5 addresses and shows me the sum of Bitcoins on those 5 addresses, correct? And I can easily create new public address, send all the Bitcoins to that address, save the private key and write it on a paper and all my Bitcoins are on that public key / address, and I can spend them using corresponding private key? Did I get that right?

That's the basic idea, yes. There are later additions to bitcoin called script hashes which are an alternative to public keys that complicate things a bit. You can tell you're dealing with a public key because the address starts with a 1, not a 3.

@geppetto Wallet allows you to create private/public key pairs, to send Bitcoins from some of your public keys (addresses) using respective private keys that control the addresses. But you don't retrieve with private keys. You don't retrieve anything. Showing your balance does not require private keys, just your walled has to know which addresses belong to you.

Try this Android App.
This saves a private key or any text message into an image in an encrypted state.
https://lnkd.in/ew7Vjzi

iOS app is also available.
Please check this http://www.ethereummiddleman.com/secretimage.html


text:
Electrum wallet is showing not enough fund
My electrum wallet presently have 0.0047BTC. i'm trying to send 0.001btc to another wallet but it says not enough fund. Any limitations i need to know?

It's likely because of transaction fees. Go to tools > preferences > fees tab and check edit fees manually and set "propose replace by fee" to "always". Now on the send tab you'll be able to set fees manually. Note that if you set a fee that is too low and your transaction doesn't confirm you can right click on it on the history tab and choose increase fee to bump the fee higher.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
Why does "pre-allocating..." still happen during -reindex?
I thought -reindex read blocks from disk to rebuild the index, without downloading the chain from the network. If that's so, why is bitcoind allocating memory in the files on disk? Like this:
Pre-allocating up to position 0x3000000 in blk00205.dat

It shouldn't. Can you provide some more of your debug.log?

Ok I must have done something else wrong. At the top of the log is the message 2017-04-22 18:37:28 LoadBlockIndexDB: last block file = 209  even though the directory ~/.bitcoin/blocks/ contains files up to blk00834.dat. The first pre-allocating message in the log continues from blk00209.dat
I started with -reindex earlier today, stopped and then restarted a few times...

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Electrum via command-line: can generic blockchain info be requested?
For example can I ask the Electrum client via it's API what the height or version of the latest block is? Looking through the docs all I currently see is wallet commands.


text:
Is Electrum's label sync a decentralized service?
I have some questions about the electrum tool plugin "label sync".
How does it work?
I had a look into in the QA's here how electrum server/client do work, the random server setup sounds quite resilent.
Do the electrum server save IP information by default?
How and where are the labels stored?
Does the plugin direct to a central server or is the information some how stored on all the server nodes?
Is the transmission of the labels encrypted?
thanks in advance

You can view the source of the Electrum label sync plugin on github.

How and where are the labels stored?

They appear to be stored on sync.bytesized-hosting.com:9090.

Is the transmission of the labels encrypted?

The labels are encrypted with AES using using a truncated SHA1 of the wallets Master Public Key, this should be reasonably safe. IV appears to be static, this is fairly weak but not disastrous. For most people the server should not be able to decrypt any of the information stores within the label sync service.
    self.encode_password = hashlib.sha1(mpk).digest().encode('hex')[:32]
    self.iv = hashlib.sha256(self.encode_password).digest()[:16]
    self.wallet_id = hashlib.sha256(mpk).digest().encode('hex')

Do the electrum server save IP information by default?

The source of the sync server is available on github, however you should ideally assume that all traffic to it is logged. This would include the hash of your master public key, your IP address, and the times you were using the wallet which can be correlated with transactions. This is probably never going to be an issue for most people but it is something to be aware of.

No, it's not a hash of the wallet password, but of the master public key.

@ThomasV You're right, I got that completely wrong, fixed.


text:
Constructing, signing, and pushing a Bitcoin transaction by using pybitcointools with Python
I'm utilizing the pybitcointools module in python 3.4
I've went through time and time again in the examples listed on the github page, but it isn't documented very well nor is the code.
My situation is this: I have a list of private keys in a CSV and I want to generate a raw transaction for each address and spend their unspent_outputs to a single address by pushing the signed transaction to blockchain.info
I'm having a problem when it comes to the these functions: mktx, mksend, sign
If someone could create an example of the process while also documenting each step and explaining what each argument for each function is for and how it's used. This would be an amazing help if someone could give a hand here! I've searched far and low, but I just can't find a good documentation of this process. I'm sure this would help many others as well!

Give me an hour and I'll write up an answer. You're right, the code is severely lacking in documentation. Check out this fork for some better code comments until i reply but note it's not tested for 3.4 only 2.7,

OK, so first off:

Use Python 2.7; there's numerous pieces of code which doesn't work with Python 3.4, namely make_request
Check out this pybitcointools fork, as there's a lot of added functionality (see the README.txt file)

The functions you've named work as so:

mktx(ins, outs) where ins is an array of "hexTxIdString:index" and outs is an array of {"value": 12345, "address": 1base58addressString}
mksend(ins, outs, txfee, 1changeAddress) where txfee is again in Satoshis

sign(unsignedtx, index to sign, privkey for utxo) where index is the input index to sign

We'll start by making the ins:
utxos = [(utxo_txid, utxo_index), (txid2, i2)....]
ins = ["%s:%d" % utxo for utxo in utxos]
change_addr = "1thisIsAChangeAddressYouOwn123"
txfee = int(0.45 * len(ins) * 10000) # you may want to check this 10000 value, it could be 100000
rawtx = mksend(ins, txfee, change_addr)

Right, so let's assume, you have the UTXOs' TxID and corresponding vout for each private key. Make an dict of privkeys ={ 'TxID:vout' : privkey, 'TxID2:vout2': privkey2 } Then finally, signall(rawtx, privkeys) to get your signed Tx. Then to broadcast it, use pushtx(signedTx, source="bci") or pushtx(signedTx, "testnet", source="blockr") for Testnet. Done!

What function are you using to easily get the values for utxos ? What's the best way to go about it?

I use that fork I linked; you can filter a list of the history/unspent, then use get_outputs to return the string required. Have had this exact same issue

In the code block above you have there doesn't show you using mktx but you explained it above.

address = 164QpJNZPYtHNVZiNmzuG2yEeWok2UfymZ
So, I should use history(address) rather than unspent(address) ?
It doesn't look like history gives me the unspent_output hash? I'm still really, really confused because it seems like in the pybitcointools example they do it in a completely different way.
I'm trying to imagine how to do it from the very beginning with creating my variables and everything.
"2e204724677fb2f6cc80ed4cc92f0d068e8ec7774f49bfbf4b075aea76154f2b:0"
is the outspent output and index, am I right?
Getting my ass kicked with formatting on here for some reason.

Actually, you're right, use unspent: unspent_1 = [unspent(privtoaddr(x)) for x in privs]. I believe that'll return an array of "txid:index", which you'll need to filter through for unspents which have len>1, with [x for y in unspent_1 for x in y] which returns the flattened list. Re: mktx, mksend calls mktx, it just works out the difference and refunds that to a change address

I'll give it a whirl here in a bit. Thanks for all the help.

@encodex cool, I'll edit my answer shortly to show you exactly the process


text:
Checkout time for consumers in stores accepting bitcoins
If the general practice is use to different bitcoin address for every new transaction, does it mean that merchant in a retail store that accepts bitcoins has to change his QR code for every new customer in the line. Would it not increase the checkout time for consumers significantly

I also wanted to understand, if the merchant also has to keep a track of different private keys corresponding to these numerous bitcoin addresses in a single day.

Why should it increase the checkout time?  In such a situation, the QR code would normally be displayed on a computer or tablet screen, not printed on paper, so a new one can easily be displayed for each customer.  Generating a new Bitcoin address doesn't take much time - a few milliseconds, maybe - and can be incorporated into the merchant's point-of-sale software so that it happens automatically as soon as the clerk touches the "customer paying with Bitcoin" button.  Alternatively, the addresses can be generated ahead of time and used one by one, which would be even faster.
The merchant does have to keep track of a separate private key for each address; but this is easily handled by software.  Bitcoin wallets are designed to efficiently handle large numbers of private keys, and automatically select coins from the many available addresses when sending a transaction.
What would increase the checkout time is if the merchant feels it's necessary to wait for one or more confirmations of the transaction.  Each confirmation takes, nominally, an average of ten minutes.  Most people assume that this wouldn't be used for small purchases; for large purchases, the customer might be asked to wait after sending the coins (but of course other customers can be served in the meantime).


text:
Extortion attempt
If an extortion attempt is made telling the victim to deposit a specific amount to a bitcoin account "or else" what law enforcement agency takes lead?  How can one determine the jurisdiction of an account?

If an extortion attempt is made telling the victim to deposit a specific amount to a bitcoin account "or else" what law enforcement agency takes lead?

Assuming that you're in the United States, the FBI.
https://www.fbi.gov/contact-us/when

How can one determine the jurisdiction of an account?

You can't, particularly if they've never used that address before. It sounds like that's what they've done, assuming they want to know when each person has paid up.
If you pay the ransom, and they deposit the money into an exchange, then you have somewhere to start. Of course, if they just sit on the money for the next five years, you don't have anything to go on. Either way, this isn't easy.


text:
What new JSON-RPC calls are available with SegWit activation?
For example, I can see getblock now returns two fields for a block's size:
size (all data) and strippedsize (base block size, NOT including witness data)
Are there any more RPC updates to interact with witness data? Like return the number of segwit transactions in a block? Or return the wtxid or witness data from a specific transaction?

As you mentioned, strippedsize was added as a parameter to getblock() that shows the block size excluding witness data.
txinwitness has been added as value to the response from getrawtransaction() and decoderawtransaction().
That's all I was able to pick up from the RPC... I suspect looping through the transactions in each block and checking for the txinwitness value could get the number of segwit transactions.

authors: นายพิชัย นุ่มดี


text:
Why doesn't getblockchaininfo reveal BIP9 signaling statistics?
An example of the output of getblockchaininfo is here:
https://chainquery.com/bitcoin-api/getblockchaininfo
The softforks field describes the number of required / found blocks signaling the soft fork, but the bip9_softforks field does not. It just indicates a generic status message ("defined", "started", "locked_in", "active", "failed").
Is there an RPC command that will return the number of SegWit blocks?

The answer is pretty boring. Nobody did the work to implement it (yet).

Works for me :-)
https://github.com/bitcoin/bitcoin/pull/9571


text:
Are SegWit signatures all required to follow BIP143?
...or is there any way for a SegWit witness to contain a "legacy" signature?

Do you mean 'Can a tx spend both segwit and non-segwit outputs?' or 'Can a segwit output be spent using a legacy signature?'

The latter. In theory. Like, if I ripped the signature from a segwit transaction and reformed it to non-segwit, would it be valid? Or vice-versa. If I took a valid pre-segwit signature and reformatted to segwit, would it be valid? Or would it require re-signing following the BIP143 rules?

I don't think that's possible, even if you intentionally construct the transaction to be used as both segwit or non-segwit, and if you assume that there are segwit and non-segwit outputs for the same address.
The first ~36 bytes of a hashed transaction look like this:
non-segwit:
byte
count   field name
4       version
1-3     varint of number of txins
32      sha256d of previous transaction

segwit:
byte
count   field name
4       version
32      sha256d of concatenated prevout fields

You would need to find two pieces of data such that hash(x)[1:16] = hash(y)[0:15] or hash(x)[3:16] = hash(y)[0:13], which I think is about as difficult as a collision attack (to a factor of 2^24 :P).
You can try to get around this by setting SIGHASH_ANYONECANPAY on the segwit side, but that puts a zero where the number of inputs should go on the non-segwit transaction, and that's definitely not valid in any signature mode. I think even if you sign in SIGHASH_NONE, you can't convert a segwit transaction to a non-segwit transaction, or vice versa.

No, it cannot. There are several reasons this won't work. For example, the signatures in Bitcoin transactions commit to the complete transaction by means of signing the sighash. However the sighash is formed by a different scheme in SegWit than for legacy transactions. Another is that SegWit transactions contain elements that are not present in regular transactions, namely marker, flag and witness. Thus even if sighashes were using the same scheme, the content that they commit to could never match up.


text:
What is the minimum amount of network messaging needed to get the latest block hash from a node?
Reference: https://en.bitcoin.it/wiki/Protocol_documentation#inv
I want to be able to write the simplest possible script that is able to contact a Bitcoin full node (given it's IP and port) and get the latest block hash.
I don't need to verify blocks or send transactions or even be a good peer.
Are the messages all http? And how many messages (handshake? Network magic bytes? Service bits?) are required to get to the point where I can get useful information?


text:
Does bitcoind (as of 0.15) support BIP39 mnemonic phrase for wallets?
Can bitcoind print out a BIP39 seed phrase to backup the wallet?
Can I import a BIP39 seed phrase (from, for example, Breadwallet on iOS)into bitcoind?
I know bitcoind wallets have been BIP32 format since 0.13, what is used as the seed? What is backed up when I make a copy of wallet.dat? If the wallet is encrypted, does the seed change (the way BIP32 uses a passphrase as "the 13th word"?)

No, bitcoind does not support BIP39 seed phrase backup. It supports deterministic key derivation (BIP32), and the seed is just random number generated on wallet creation. Moreover, the generated keys do not follow BIP44 key paths, so even if you imported successfully in some way your seed to bitcoind wallet, there is no chance to see your money from wallets which follow BIP44 key paths.
As far I know wallet encryption in bitcoind has more to do with symmetric encryption of private key data. It has nothing to do with seed converted to seed phrases.

Thanks. I ask about the encryption because at https://bitcoincore.org/en/2016/08/23/release-0.13.0/#bip32-hd-wallet-support "If you create a new wallet with 0.13.0 (or above) and you change from the default unencrypted wallet to an encrypted wallet, a new HD wallet will be generated for you." Which reminded me of adding a pass phrase to a Trezor (for example)


text:
Why are some of my peers rejecting this CSV transaction?
The CSV-redeeming TX I broadcast: https://www.blocktrail.com/tBTC/tx/807d464fff227ce98cfb5f1292069e2793e99f21b0539a1729cc460af32add77
The locktime was set for ten minutes, and the redeeming tx (linked above) was broadcast after twenty minutes.
I have 8 peers and 4-5 reject CSV txs every time for reason=non-BIP68-final Here's one example...
Log messages (running bcoin):
[W:2018-10-09T22:43:03Z] (net) Received reject (52.62.75.209:18333): msg=tx code=nonstandard reason=non-BIP68-final hash=807d464fff227ce98cfb5f1292069e2793e99f21b0539a1729cc460af32add77.

RPC getpeerinfo:
  {
    "id": 12,
    "addr": "52.62.75.209:18333",
    "addrlocal": "18.191.117.102:57474",
    "name": "ec2-52-62-75-209.ap-southeast-2.compute.amazonaws.com",
    "services": "0000040d",
    "relaytxes": true,
    "lastsend": 1539125540,
    "lastrecv": 1539125540,
    "bytessent": 445546,
    "bytesrecv": 465329,
    "conntime": 13977,
    "timeoffset": 0,
    "pingtime": 0.195,
    "minping": 0.194,
    "version": 70015,
    "subver": "/Satoshi:0.16.2/",
    "inbound": false,
    "startingheight": 1414448,
    "besthash": "00000000210004840364b52bc5e455d888f164e4264a4fec06a514b67e9d5722",
    "bestheight": 1414433,
    "banscore": 0,
    "inflight": [],
    "whitelisted": false
  },

The peer is running updated software and besides CSV has been locked in forever

First of all, the Bitcoin network does not have a time granularity of minutes. At best, you can expect things to be within hours of what you want the time to be. So timelocking something for 10 minutes is useless and not very helpful as the "network time" updates only every 10 minutes. The time that you set does not correspond to real time, it corresponds to "network time" which is nowhere near real time.
The "network time" is the median time stamp of the last 11 blocks which will generally be an hour or so behind real time. But it is based on the block timestamps so it does not increase at a fixed increment nor is it a consistent amount of time behind. Combined with the fact that blocks are not found on a consistent timing, the "network time" has a granularity of a few hours at best.
So your transaction has a locktime of 10 minutes in the future from real time. But for network time, that's at least an hour, probably an hour and a half, before "network time" catches up to your transaction's locktime. So your transaction will remain non-final until that time.

Thanks, in my script I set the CSV locktime to 1 "unit" in time mode (not blocks), defined as 512 seconds by BIP68, and did not send the redeeming tx until 20 minutes had passed since the CONFIRMATION of the funding tx. This is a relative time-lock so even if wall-clock-time and network mean time are wildly divergent, I thought the relativity would still work. On testnet, there was something like 20 blocks in the following 15 minutes :-) so again, I expected the MTP to be sufficient. Perhaps the better question is, why did some of my peers ACCEPT this tx?

They almost certainly didn't, why do you think they did?   re time, I think you are not understanding achow's response.   "Time" for the purpose of locktime is block MTP based... relative or not.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
call to bip39_mnemonic_from_bytes in libwally-core returns NULL
what am I doing wrong? it always returns with error -2... I included libwallycore to my project and my IDE tells me it it is available after I also did include <wally_bib39.h>
I tried mainting a wordlist myself but then I run into even more mistakes so I guess I am missusing the API. Ca anyone help out pls?
static void display_mnemonic_word_list(void){
    char **mnemonic_secret=NULL;
    //wordlist_init(bip39_wordlist)
    const unsigned char myArray[] = { 0x00, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22,  0x33 };
    int ret = bip39_mnemonic_from_bytes(NULL,myArray,32,mnemonic_secret);
    if (ret!=WALLY_OK){
        printf("mnemonic did not work. error: %d",ret);
    }
    printf("HSM: your should remember / write down the following words do recover your funds!");
    if (mnemonic_secret){
        int i = 0;
        while ( *mnemonic_secret )
            printf( "%d. %s", ++i, *mnemonic_secret++ );
    }
}

There are a few problems, you are passing mnemonic_secret incorrectly resulting in the API call getting a NULL pointer hence returning WALLY_EINVAL. Here is a corrected version, although note that your myArray is still the wrong size:
#include <stdio.h>
#include <wally_bip39.h>

int main()
{
    /* Note that this array is 34 elements long which seems incorrect, it should be 32 */
    const unsigned char myArray[] = { 0x00, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, 0x22,  0x33 };
    char *mnemonic_secret;

    int ret = bip39_mnemonic_from_bytes(0, myArray, 32, &mnemonic_secret);
    if (ret != WALLY_OK) {
        printf("mnemonic did not work. error: %d",ret);
        return 1;
    }
    printf("HSM: your should remember / write down the following words do recover your funds!\n");
    printf("%s", mnemonic_secret);
    wally_free_string(mnemonic_secret);
    return 0;
}

You may get a faster response with wally question by asking on their github at https://github.com/elementsproject/libwally-core.

yes the array is also to long but it doesn't matter the problem was about passing char ** pointer. In the setting where I am I don't create myArray myself but have it already under control.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
How much did I make in profit from Bitcoin rising in price
I bought $30.00 of Bitcoin. The price at that time was $6,896.00. The price now is $8,074.00. How much did I make?
And how do I do the math?

"It concerns me that people who lack such basic knowledge of economy would invest in a cryptocurrency."– Myridium

Crazy how you make a comment like that, as if that is supposed to mean something. This is a new market, something like when Wall Street started. By no means should you judge or underestimate anyone. This is not the platform for that. So with that being said. How about teaching someone something.

@Badrobot, you clearly posted this naive question in hopes that it would get attention, and you could spam the comments with cloud mining links.  You have been reported.

Ok didn't mean to offend. Just seen that Bitcoin is back up

I'm voting to close this question as off-topic because it is more of a maths or investment question than a cryptocurrency one.

Yeah, also, the rule of three seems to be well covered in other parts of the internet… :p

You have not made any money until you have sold your bitcoin. The numbers in the previous answer refer to your unrealised capital gains. Remember that you may have to pay tax on your gains if you do decide to sell and adjust your winnings accordingly.

30 / 6896 * 8074 = 35.1247099767981
So, you've made a net profit of $5.12., which is (5.12 / 30) a profit margin of 17.06 percent.
For a more indepth answers about realized and unrealized profit/loss for investments, and specifically Bitcoin, check What happens if I buy Bitcoins and the price goes down?

@Badrobot remember to accept this answer if it satisfies your question, don't leave it "unanswered" :)


text:
How to list all the HD address in Electrum?
I tried to restore all my HD address by importing my xprv in new wallet file but it only shows 20 addresses.
How can I make it show all the child addresses of my xprv?

Is not feasible to show all possible addresses, there are just too many.
However you can change the gap limit.
By default, Electrum shows the first 20 private keys.
You can change that by going to console tab (view menu > show console) and typing in this:
wallet.change_gap_limit(200)
wallet.synchronize()

The above will increase the number of unused addresses past the index of the last used address to 200 i.e. this becomes the new Electrum lookahead window.
If you want to generate change addresses instead you can do the following:
for thing in range(1,200): wallet.create_new_address(True)


text:
Can I transfer ETH between apps?
Let's say I have Blockchain wallet, and I want to use another andoid app, or other wallet. Can I do it? Will there be a fee?

And, if I have created a wallet in android Blockchain app, can I use the same wallet in other app?


text:
How can I use a hardware wallet with a pool
This might be a totally dumb question but I am trying to understand bitcoin mining, I hope I am bearable.
I am trying to figure out if I can use a hardware wallet with a mining pool. I have an account on slushpool.com but I don't yet have a mining device yet.
In my current understanding (which might be totally useless), I have to install a software (that works with slushpool) on a computer and configure it, connect the mining device to the computer and have some kind of a wallet for payout. The pool with give me a payout every time I reach a threshhold.
How can I use a hardware wallet with this setup? Is there something different that I need to know? My goal is to come up with a setup with as little dependency on external entities that need a "cut" from what I make.
I would appreciate any help on this.
Thanks,
Paras


text:
Blockchain.info testnet websocket doesn't work
When I try to connect testnet websocket provided by blockchain.info api. Connection doesn't establish, when i looked into the code. It says for testnet it uses "wss://ws.testnet.blockchain.info/inv" url. I guess that blockchain.info stops the service for testnet. Is there any other websocket api provider for bitcoin testnet?

I'd recommend using the Esplora API that powers blockstream.info for testnet blockchain data.
For example you can use curl to get the latest testnet block hash:
curl https://blockstream.info/testnet/api/blocks/tip/hash

~> curl --head https://testnet.blockchain.info
HTTP/1.1 503 Service Unavailable
It's likely the service just isn't something that exists.

I found out another way to do this. smartbit.com.au provide api for both testnet and mainnet for bitcoin with some awesome api playground. I built my app over this website. But thanks for your comment though. :)


text:
How do I solo mine my own modified altcoin
I forked DASH a week ago. I am able to generate genesis block hash, merkle hash. I created one VM (ubuntu 16.04) for rpc server. Another one VM For mining. I am able to establish connetion between two VMS's. But when I want to mine genesis block. I cant able to do so and I get the following error.
Launching miner...

[2018-08-09 12:03:38] Binding thread 2 to cpu 2
[2018-08-09 12:03:38] Binding thread 3 to cpu 3
[2018-08-09 12:03:38] Binding thread 1 to cpu 1
[2018-08-09 12:03:38] Binding thread 0 to cpu 0
[2018-08-09 12:03:38] 4 miner threads started, using 'X11' algorithm.
[2018-08-09 12:03:38] HTTP request failed: Failed to connect to
192.168.0.105 port 80: Connection refused
[2018-08-09 12:03:38] json_rpc_call failed, retry after 30 seconds

I am currently trying to mine using ("minerd") provided by dash. Could anyone please help on how to solo mine using minerd or anyother app.
My Configuration for miner VM. (sampcoin.conf)
addnode=192.168.0.105

My Configuration for RPC VM. (sampcoin.conf)
server=1
rpcuser=user
rpcpassword=password
listen=1
daemon=1

My Altcoin creation method based on this tutorial (https://www.youtube.com/watch?v=mDGxGYvkDEE)

The mining software (darcoin-cpu-miner- in dashpay github). It used getwork method. I changed to cpuminer which uses getblocktemplate and supports x11 also. After that I run my altcoin mining. Then it started working.


text:
51% attack on New coins
I have experienced 51% attack after launching a new altcoin last month.
While i mined only 100 blocks using coin-cli generate 1, i noticed somebody already mined 2000 blocks within minutes attacking my network. I was running 2 nodes (without wallet) and 1 node (with wallet installed) in Ubuntu server.

Why would the attacker target new cryptocurrencies? Is he after coins?
What changes in the code i have to implement to prevent the 51% attack?

My altcoin is based on scrypt (litecoin), Block generation time is 10 minutes/hour, Coin maturity 100 blocks, with parameters almost same as bitcoin.

Why would the attacker target new cryptocurrencies?

Why not? He has the same reasons as you to create blocks

What changes in the code i have to implement to prevent the 51% attack?

Disable decentralization. Allow mining from one pubkey/address only :)

Where in the code i implement allow mining from one pubkey and address?

It's not a serious suggestion.

It is serious. I have to say that it is ONLY choice. No other suggestions can prevent attack-51 in any crypto


text:
What is BIP34Height and BIP65Height?
I am looking at the litecoin code and i cant seem to understand these lines. I am learning to create a new coin.
What exactly is BIP34Height and BIP65Height and BIP66Height?
What is the purpose and what it does to the blocks and what effect it has on mining?
        consensus.BIP34Height = 710000;
        consensus.BIP34Hash = uint256S("f1a13ec4ed9235d9792c581d6549b42340db403e21a16be0a2fe57f7119bc920");
        consensus.BIP65Height = 918684; // bab3041e8977e0dc3eeff63fe707b92bde1dd449d8efafb248c27c8264cc311a
        consensus.BIP66Height = 811879; // 7aceee012833fa8952f8835d8b1b3ae233cd6ab08fdb27a771d2bd7bdc491894
        consensus.powLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");


text:
How to disable mining functionality in wallet debug console?
I am creating a new altcoin and i cant seem to figure out how to disable mining functionality with wallets using the debug console window.
I am trying to mine all the coins myself, is there way to restrict all mining to me or specific IP addresses.
I am using forking litecoin to create my altcoin.
Any advice or help with code is much apppreciated and helpful

I am creating a new altcoin and i cant seem to figure out how to disable mining functionality with wallets using the debug console window.

Remove the generate and generatetoaddress commands.

I am trying to mine all the coins myself, is there way to restrict all mining to me or specific IP addresses.

Unless you modify blocks to include IP address information, no, there is not. You could restrict coinbase transactions to have only a specific output script which belongs to you so that blocks that have coinbase transactions where the coins go to another output script are considered invalid. However you will need to modify the mining code to use a fixed script instead of generating a new one for each block.

I did remove generate and generatetoaddress, it disables wallet mining, but i cannot generate blocks myself using litecoin-cli. Anyworkarounds?

Don't remove generate and generatetoaddress for yourself. Remove it for the publicly available version of your coin.


text:
How was FORKID used in Bitcoin Cash at the original fork point and in all upgrades since?
References:
https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/replay-protected-sighash.md
https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/2018-nov-upgrade.md
It looks to me like at the original fork point, Bitcoin-ABC added an extra value 0x40 called SIGHASH_FORKID that is xor'ed with the standard SIGHASH flags to produce a SIGHASH byte that is incompatible with Bitcoin Core. This provides replay protection for all transactions that are signed with ECDSA pubkeys.
Questions:
Is the FORKID updated with each "protocol upgrade" for example the recent "Magnetic Anomaly" upgrade? If not, why not?
It looks like the May 2019 upgrade will change the FORKID to 0xFF0001 but the spec mentions "Wallets that follow the upgrade should not have to change anything." -- how is that possible?
Did Bitcoin-SV change its FORKID for its recent hard fork away from Bitcoin-ABC? Is there any replay protection at all between those two chains?

The purpose for "after certain time, set FORKID to 0xSMTHNG" is to keep the old chain alive but separate, in case of a bug in hard fork. After a Bitcoin Cash hardfork, let's say November 2018, if you're using an incompatible client, a client that complies with May 2018, it'll make transactions with a FORKID that starts with 0xFF00, and those transactions will be invalid in the new chain. Wallets shouldn't enforce this rule, as it is assumed that they're not nodes and they are not interested in (some of) the new consensus rules, which are usually little changes, like new opcodes.
Trivia: Bitcoin SV was derived from Bitcoin ABC complying with May 2018. If they didn't commit this, there would be replay protection.

Do you mean May 2019? (not 2019)
Has BCH incremented the FORKID with every hard fork? There have been a few already and I don't think they have.
Aren't wallets literally the thing that USES SIGHASH? Do we just mean SPV wallets here? Wouldn't they need to follow the FORKID rule to get tx included in the chain?
I do not understand the logic with 0xdead, what it happening there?

No, may 2018 2) No, ForkId is changed if a client that supports current consensus rules but not the rules of next consensus is running after the next fork date comes. It’s always been 0 on main Bitcoin Cash (not the dead forks) 3) Yes, that rule is confusing and illogical. It assumes that wallets dont need to upgrade for hard forks and only their backends do. 4) Nodes change the valid forkid value in case of a hard fork they don’t support, to keep that old chain alive and with 2way replay protection. Don’t hesitate to ask more questions if something’s unclear.

Got it thank you. My misunderstanding was that FORKID is switched in by non-upgrading nodes on the fork time. I had that backwards :-)


text:
Merging blockchains after algorithm change
When a cryptocoin changes algorithm (eg. scrypt to X11), how does one achieve the merging of the two blockchains?
I'm assuming that they couldn't be directly compatible based on being completely different algorithms, it would cause a loadBlock() error. They also couldn't just make two blockchains, as all of the scrypt mined coins would be unspendable on the x11 blockchain and vice versa.
I have seen instances of crypto developers having a v1 to v2 exchange (usually at some ratio like 0.8:1), however that would require the v2 blockchain to have a premine for the conversion distribution.
Hopefully I'm not too far off on my thoughts here, any clarification would be greatly appreciated.
I should specify that by merging I don't mean running both algorithms on one coin (saffron-style), I mean how to implement something along the lines of
if blockNumber <= (maxScryptBlock) do
    {block.readHash(scrypt);
    }
else if blockNumber >= (maxScryptBlock) do
    {block.readhash(x11);
    }

I can't seem to find any writings anywhere on how a developer makes the switch from one algorithm to another, or really any for cloning any non-scrypt/sha256 coin.

That seems possible, but I'm not aware of any instances of it being done before.
You have three major problems:

Bitcoin generally assumes that there is one single ordering of transactions. That ordering can change, but there's always only one. The danger is that your two blockchains contain transactions that are mutually exclusive: transaction A and transaction B both spend the same coins, so only one can exist in the new master chain.
Everyone needs to upgrade to a client that supports the new merged blockchain, and the algorithms in both chains. Some people might have been screwed over by the previous step in the process (because a transaction they relied upon was essentially reversed,) so they might be a little reluctant to do this.
You need to avoid introducing any subtle security bugs while doing this.

awesome answer (I would upvote if i had more rep lol), and thank you for the explanation. However, I dont think i properly explained my question, or I'm possibly misinterpreting your answwer. I have  edited my OP for better clarification.

You're describing a hardfork, which is much easier to do correctly the first time than merging the chains after the fact.


text:
Forwarding BTC without approval
Since all I need in order to send a transaction is the receiver address.
What is the mechanism  (if any) that stops me to send transactions to someone BTC without his approval?

Since all I need in order to send a transaction is the receiver
  address.

You also need a private key. In order to send someone coins from your wallet, you need a signed transaction with your private key.

What is the mechanism (if any) that stops me to send transactions to
  someone BTC without his approval?

You don't need an approval of someone to send him transaction.


text:
What is happening to the none approved transactions?
Every 10 minutes only 1MB of transactions are been approved, so what happened to the rest of them? Let's say my transaction was not entered into the block, can I be sure that no one is going insert it to the next block?

You may also have a look to this epic thread on delays with tx: https://bitcoin.stackexchange.com/questions/9046/why-is-my-transaction-not-getting-confirmed-and-what-can-i-do-about-it

Each node on the peer-to-peer network may store the transaction in its mempool, during which time they will continue to relay it to other nodes.  After some amount of time, the node will drop it from the mempool.  The default time in Bitcoin Core is two weeks but individual nodes are free to use a different value.

Let's say my transaction was not entered into the block, can I be sure that no one is going insert it to the next block?

No, you can't be sure of that.  Certainly while the transaction is in most node's mempools, it will continue to be considered for inclusion in new blocks.  That's desirable for most people, who would prefer that the transaction get confirmed soon, even if it isn't confirmed immediately.
In principle it's possible that some node sits on your transaction, and that it makes its way into a block a long time later - years, even.  The only way to be sure your transaction is never going to confirm is to double-spend it: make a new transaction which spends at least one of the same inputs.  If the new transaction is confirmed (with a sufficient number of confirmations, say 6) then the old one can't be, because the block chain isn't allowed to contain conflicting transactions.

"make a new transaction which spends at least one of the same inputs."
This is not an easy thing to do with a normal wallet because usually you can't control this info.

@Mr.Turing: In general, yes.  Though Bitcoin Core has a "coin control" feature where you can choose the inputs for your transaction.  Of course, you first have to convince it that those inputs are actually available, and make it forget that it spent them once before.


text:
Bitcoin pool with GETWORK support
I study bitcoin and found a simple open source miner on githab. It runs on the CPU, and uses the outdated GetWork protocol, but it's enough to study. Is there now a bitcoin pool that still supports the GetWork?

GetWork requires you to make a new request every 2**32 nonces, modern miners would be making 50,000+ requests a second. No pools have supported this since 2011.


text:
Trying to transfer BTC from Coinbase to Binance, commission 13 USD?
So basically I bought the equivalent of 100EUR in BTC with CoinBase (they took 3 EUR for this operation)
Now I would like to buy other currencies with binance, but if I try to send my BTC to my Binance BTC address it says the network fee are 13 USD.
Are them really so high? Is there something else that i could do?

Note that it's important to keep straight the distinction between a commission (paid to an exchange for a trade between BTC and EUR/USD/...), and transaction/network fees (paid to miners for a transaction which moves BTC from one address to another).

I have solved it by transfering with GDAX, no fee

You can see current Bitcoin transaction fees at https://bitcoinfees.earn.com/.  Right now it is suggesting a fee of about BTC 0.001 which is about USD 13, so that's about right.  Note that transaction fees don't depend on the amount transacted; you'd pay the same fee of about USD 13 whether you were sending the equivalent of USD 100 or USD 100,000.
A few weeks ago, the fees were 2-3 times higher than they are now.  This is something you have to take into account when thinking about trading and moving Bitcoin.

You can pay a lower fee but this will risk it being stuck in the mempool forever—-not an advisable option.

I would try to convert your Bitcoin to ether and transfer that to binance especially if the plan is to buy alt coins. If you want to keep it as btc than yes you have to pay the fee which is actually lower than it has been over the last month or two.


text:
Has there been a big uptake of merchants accepting Bitcoin Cash?
With Bitcoin Cash still relatively new (August 2017), are there any statistics available on the percentage of merchants who previously accepted Bitcoin, that now also accept Bitcoin Cash, or that switched over to accepting Bitcoin Cash instead of Bitcoin?

Looking at the community created webpage: https://acceptbitcoin.cash/
If you are looking at the percentage of merchants who previously accepted Bitcoin, that now also accept Bitcoin Cash, there is a statement that says that 131 out of 1053 websites listed support Bitcoin Cash.


text:
Why do crypto exchanges impose withdrawal limits for BTC and other coins
Many crypto exchanges impose quite low limits on withdrawing balances from their sites. For example Binance has an equivalent limits of 100 BTC for a daily withdrawal.
The question is, why do they need to impose a limit at all? Are the customers coins not in segregated custody, and when sold in a transaction on the exchange, the funds should be there irrespective of the size of the transaction. In short, why would an exchange need to limit withdrawals at all?

Limits could be in place for a number of reasons, such as:

Regulations imposed by the government of the country the exchange is operating within (eg unverified customers can only withdraw a certain amount)
The majority of the exchange's coin reserves are held in an offline, cold storage wallet. So a very large withdrawal may require more coins than the exchange has available in an automated hot wallet (this is a security consideration)

Every exchange will have its own considerations in this regard, but these examples should give you some basic understanding of why limits would exist.

Sounds wrong. Governments don't regulate the exchanges as far as I know. If they can do $200 000 for a level 3 individual then then they can do the same for a level 1. If you do normal trades with banks there is no restriction. That stuff about it being in cold storage is wrong.

@jackblack please remain friendly and polite, no need for that language here


text:
Retrieve bitcoin
I recently paid a website with Bitcoin, they requested a certain amount which I sent to them however due to the network fees the amount didn't match the amount requested as a result it wasn't credited to them. Is there a way to retrieve the balance?

If you sent a transaction to the website's bitcoin address and the transaction was confirmed, then you will need to contact the website to have your bitcoin refunded. Bitcoin transactions are not reversible once confirmed in the blockchain, only the person that controls the receiving address can move those coins now.


text:
All CryptoCurrency historical values api
I am making a cryptocurrencies tracker and I want to implement a Chart. The only thing i need is a api that has the values of a lot of cryptocurrencies. Does anybody know a api like that? Please help

related: https://bitcoin.stackexchange.com/questions/748/where-can-i-get-historic-data-series-of-bitcoin-prices


text:
Can Circulating supply decrease?
Looking at the historical data of Loopring, I noticed something strange.
On Jan 4, Market cap was $163,805,000 and closed price was $0.65. That means, circulating supply was around 252M.
On Jan 5, closed price increased to $1.03 BUT market cap decreased to $41,138,000. And this means, circulating supply went down to around 39M.
Shouldn't Market Cap increase when price increases?
Can circulating supply decrease? or is there something that I am missing?

BYW, I noticed similar change in other coins as well

Is just CMC using the wrong data/fucked up somewhere/ forgot a zero. Example the real Circulating Supply is 734,089,390 but CMC shows 561,167,415.  If you want to know the "real" market cap. Multiply the current price with the correct Circulating Supply.

Shouldn't Market Cap increase when price increases?

It depends. MarketCap = circulating supply x unit price
Giving : MC=10, CS=10, UP=1
Example of an increase in MC : MC=20, CS=10, UP=2
Example of steady MC : MC=10, CS=20, UP=0.5
Example of a decrease in MC : MC=5, CS=10, UP=0.5

Can circulating supply decrease?

Yes circulating supply decrease, especially in centralized coins(controlled by individuals or corporations)
Example : Ripple decided to lock a huge number for XRP in mid 2017 which lead to unit price increase


text:
Do blockchain.info wallets correspond to a single wallet on the blockchain?
To learn about bitcoin in a hands-on way, I decided to buy some. I created a wallet with blockchain.info, and then used Bitonic (A Dutch bitcoin seller, not an exchange) to buy a small amount of bitcoin. Later, I added some more.
So far, so good, the money arrived in my wallet, and I've been enjoying the recent surge.
However, I decided to use the blockchain explorer to have a look at what was actually happening during these transactions, and when I look at my wallet's address (the one I give to Bitonic), it's empty and there are are no transactions to it. Looking at the actual transactions that blockchain.info points to, there are outputs with the right amount, but they have different addresses.
I was expecting to find my wallet on the blockchain, with the current amount of BTC I own and two transactions going in.
What's happening here? Is Bitonic actually sending blockchain.info the coins off-chain? Bitonic only gets the wallet address, so they shouldn't be able to tell who manages the keypair for me. On the other hand, if bitonic sends it to the address I gave them, why does a different address show up on the transaction output? Is there some mapping between addresses going on inside the blockchain that I'm not aware of?

It's normal . Your blockchain.info wallet change the address in every transaction. You can learn more by google " bitcoin hd wallet".


text:
GUIMiner not utilizing 2nd GPU
I've just setup GUIMiner, I have two graphics cards, and they are both running. However, one is getting ~400 Mhash/s, the other is getting ~10 Mhash/s.
The monitoring of the GPU's also shows one running at 95%, the other at ~5%.
Is there an obvious reason for this?

I rebooted my machine, and now both GPU's are running at ~50%, with GUIMiner reporting speeds of ~200Mhash/s for both workers.

We don't use GPU miners today, the amount you can mine with one is many orders of magnitude below the sensible minimum output size of a Bitcoin transaction. They have been irrelevant for 3 years now, and support has been removed from all updated software.


text:
What is confirmation notificaion in bitcoin via block chain API
I have used bitcoin block chain API in my website, it works and i updated the db when call back the function call but the problem is that db updated multiple times
my codes are
if ($_GET['confirmations'] >= 6) {
    //payment confirmed
    //do some DB oparation
}

i want to know in which case the paymnet is confirmed and how could i update DB once.
Thanks


text:
A conflicting transaction has been detected in our memory pool. The transaction hash displayed below may change
SO i received this transaction from my other wallet
1)  https://blockchain.info/tx/06810d392213a7453bbe6ad4ab95c0892875b0db2b56b3db5ef942b0a42eced4
for 1.02BTC
and sent these for 1btc and 0.2btc while the previous transaction was unconfirmed:
2)  https://blockchain.info/tx/44f68a0987fe9dfe88045c977c5d66534a65ca399f0d2b27fec7c80785ddc759
3)  0.2 (similar to 2) )
Now suddenly from my other wallet automatically
 4)  a new transaction for the same value but different hash
and the transaction number 1) shows
 A conflicting transaction has been detected in our memory pool. The transaction hash displayed below may change.
Can you tell me when 1) will be confirmed, and are 2) and 3) dependent on 1).
How long until the transcation is unconfirmed that the bitcoin is refunded.
I have paid the fees for all transcations.
Pls help!

sounds like some sort of transaction malleability attack

There has been some malleability attacks recently - third party duplicating the transactions.
See https://en.bitcoin.it/wiki/Transaction_Malleability for details on the attack technique.
The attack is merely an annoyance as far as I've understood, and there is a BIP in the making (BIP 62) to deal with this attack vector.
Perhaps this explains your problems.


text:
How to generate transaction history from all addresses that are part of common xpub/ypub without having the xpub/ypub?
I have 20 addresses generated  which are part of a common xpub/ypub. I want to create a combined transaction history of all addresses similar to that of how trezor has the export CSV function. I understand that trezor generates it from the xpub, but in my case I have the addresses but not the xpub.


text:
Can a transaction have a single 0-value OP_RETURN as its only output?
My goal is to create a transaction that spends dust outputs to a miner. Since the goal is to reduce the UTXO set by consuming low value outputs, I do not want to create any new UTXO by actually sending Bitcoin to an address.
Is it valid to make a transaction with several inputs and only one single, zero value prunable OP RETURN output?

there are ~50 million UTXO. your efforts are teardrop in ocean

It's a technical question not a charity proposal. But consider all those useless UTXOs produced by Counterparty. A large scale clean up could be effective

Services like http://www.cryptograffiti.info/ encode arbitrary data in unspent outputs every single day.

Yes. Such transactions are valid and standard.


text:
Huge price difference across exchanges
Currently on Bitfinex 1 bitcoin = $15190 while on CEX.IO 1 bitcoin = $16800. How is it possible that there's over $1500 difference? Is this just because of market forces or is Bitfinex malfunctioning?


text:
old encrypted bitcoin wallet keys
I imagine someone has answered this already but i cant find it.
i found a file from 2013, which is my only backup i have of some small amount of bitcoins ...bitcoin-wallet-keys and date.
it seems it is encrypted...long string of characters starting with U.
i downloaded a wallet to try and import it but i can't remember the password. i tried everything i could think of and got message that it couldn't decrypt, check password.
is there any way to retrieve the bitcoins?
thx!

Yes you can run a password cracker on it. Depending on the length and complexity of the passwords this could take some time or an inifinite number of years. Let me know if you need help with that.

You need the password, otherwise they're gone for good.


text:
Bitaddress.org - How does it use random mouse movement?
I am reviewing https://www.bitaddress.org/. I have downloaded the code from Github. I see first screen they show is to increase randomness on the private key generated.
I am trying to figure it out how it use it in the code. I see the hexcode is shown in a div with id:
seedpooldisplay

If I look that, I find a method:
showPool: function () {
        var poolHex;
        if (SecureRandom.poolCopyOnInit != null) {
            poolHex = Crypto.util.bytesToHex(SecureRandom.poolCopyOnInit);
            document.getElementById("seedpool").innerHTML = poolHex;
            document.getElementById("seedpooldisplay").innerHTML = poolHex;
        }
        else {
            poolHex = Crypto.util.bytesToHex(SecureRandom.pool);
            document.getElementById("seedpool").innerHTML = poolHex;
            document.getElementById("seedpooldisplay").innerHTML = poolHex;
        }
        var percentSeeded = Math.round((ninja.seeder.seedCount / ninja.seeder.seedLimit) * 100) + "%";
        document.getElementById("mousemovelimit").innerHTML = percentSeeded;
        for (var wIndex in ninja.seeder.seederDependentWallets) {
            document.getElementById(ninja.seeder.seederDependentWallets[wIndex]).innerHTML = percentSeeded;
        }
    },

Then I loose track where is used, any ideas?. I understand this is used to create the private key,


text:
What wallets can be used to double spend (low tx fee workaround)?
I've got myself in a bit of a pickle. I withdrew some Bitcoin from a service last month, however they sent it with a really low fee (40 sat/byte), so it is still pending and is unconfirmed. I understand Child Pays for Parent, but the inputs of this transaction, around five levels deep, are also unconfirmed. I asked them to resend the transactions with a higher fee, but that might take a while.
Today I sent a transaction from Blockchain info. I used a reasonable fee for today (250 sat/byte), so normally it would be confirmed within a few hours. However the transaction used the unconfirmed transaction as an input, so that transaction would need to be confirmed first, which probably isn't going to happen.
As I understand if I send a new transaction, with a higher fee, I can reuse the (confirmed) inputs and that transaction will be accepted, then the transaction with the unconfirmed input will be abandoned. I've tried using Electrum to resent the transaction with a higher fee  (and making sure it doesn't use the unconfirmed inputs), however it just says an error saying my balance is too low, as it treats the unconfirmed transaction as spent.
Are there any wallets (preferably that don't require downloading the whole blockchain) that would allow me to create a transaction to work around this?

"I withdrew some Bitcoin" ...more than the half of the current balance of the address? if no: both transactions can be confirmed (independent of each other)

As I understand if I send a new transaction, with a higher fee, I can reuse the (confirmed) inputs and that transaction will be accepted, then the transaction with the unconfirmed input will be abandoned.

No. It seems to me you are trying to do Replace-by-Fee, which you need same input that is unconfirmed transaction.
I assume that there are two transactions that you want to get confirmations. Can you post these transaction id so that I might be able to help you.


text:
Why is my transaction not confirming after a month?
My Bitcoin transaction 016a647fdb45d0f1a679ae7b3b4465ced76b817f63595c37e3214d63098ddd47
is still unconfirmed. Although I do realise this transaction was made with a low fee 10.044 sat/B, it is not as low that the transaction should not confirm. According to data provided on https://bitcoinfees.earn.com/, this transaction should still confirm within a day.
I tried everything already. I have heard a reset of the wallet may work, however I do not have an actual wallet, but only use the Blockchain.info wallet, where I believe a restart of the wallet is not an option. I also tried rebroadcasting the transaction with various websites, however none of it worked.
What am I supposed to do at this point, that my coins have been stuck in limbo for a month now?

You may also have a look to this epic thread on delays with tx, and there are some hints further down: https://bitcoin.stackexchange.com/questions/9046/why-is-my-transaction-not-getting-confirmed-and-what-can-i-do-about-it

The simplest thing you can try is to rebroadcast the transaction and see if you get lucky. You can search for a Bitcoin accelerator and use some of the free ones.
Failing that you can ask a mining pool for some help. For example ViaBTC offer a service described here https://www.cryptocompare.com/coins/guides/how-to-accelerate-your-bitcoin-transaction/
And failing that you can create a Child Pays For Parent (CPFP) transaction to increase the fee paid https://bitzuma.com/posts/how-to-clear-a-stuck-bitcoin-transaction/

get the private address of this transactions, install electrum and import this transactions privatekey then you will be able to send this transaction again with no issues.
consider sending it with a higher fee.


text:
Why do prices of all cryptocurrencies move in sync?
For example, when bitcoin moves up/down, most other cryptocurrencies also move for a similar amount. What is the reason behind this? I almost see no point in investing in different cryptocurrencies, when it seems that when Bitcoin falls, Ethereum (or any other crypto) also falls.
Only reason I can figure out myself is because all cryptocurrencies belong into the same group of currencies, but is there something else that affects these same price changes?

The reason is that many altcoins are traded in BTC/ALTcoin pairs, not $$/ALT pairs.
So if an altcoin is trading 0.1 BTC/ALT, and the dollar price of bitcoin falls, then the $ price of the ALT will fall an equal amount.
Some altcoins trade against dollars as well, so their dollar price may be less coupled to the BTC dollar price. But for many of those alts, a large amount of the trading volume will still be from the BTC/ALT pair, and so the influence is still there.


text:
Gekko science USB miner
I connect to slushpool with Gekko science USB miner at 500 Mh/s, but my workers statistitcs on slushpool say workers disconnected.

Slushpool is for mining BTC.
Attempting to mine BTC with anything less than an ASIC (minimum 2TH/s) is pointless.
You are currently running about 0.0005TH/s.
You might as well not be mining at all.


text:
How to get the historical data from bitfinex.com with out a limit?
I am drawing a chart using the data pulled from bitfinex.com via a simple API query. As the result, i will need to render a chart which is going to show the historical data of BTCUSD for the past two years. Docs are available right here: https://bitfinex.readme.io/v2/reference#rest-public-candles Everything works fine except the limit of the retrieved data.
This is my request: https://api.bitfinex.com/v2/candles/trade:1h:tBTCUSD/hist?start=1514764800000&sort=1
The result can be seen over here or you can copy the request to the browser: https://docs.google.com/document/d/1sG11Ro0X21_UFgUtdqrlitcCchoSh30NzGCgAe6M0u0/edit?usp=sharing
The problem is that I receive candles for only 5 days no matter what dates or parameters I use. I can get more candles if i add the limit parameter to the string. But still, I can not get more than 1100-1000 candles. I even get the 500 error from the server:
Server error: GET https://api.bitfinex.com/v2/candles/trade:1h:tBTCUSD/hist?limit=1100&start=1512086400000&end=1516233600000&sort=1 resulted in a 500 Internal Server Error response:\n ["error",10020,"limit: invalid"]. What should be the valid limit? There is no such information in the docs.
How can I get the desired amount of data for the two years period of time? I do not want to break my query down into smaller pieces and go step by step. It will look ugly.

My suggestion is to get data by fragments for example:

Jan 1 2017 - July 31 2017
Aug 1 2017 - Dec 31 2017

Then merge on your code

Here is one way to do it: https://github.com/nateGeorge/bitfinex-ohlc-import
Also check out the original repo I forked from.  Basically I get the earliest candles, then work up from there.  If there are some candles in the DB already, it updates to the current time.

limit=1000 is the most you can get.


text:
What function to use to model probabilistic bitcoin mining?
I would like to calculate profitability of various mining strategies. For that, i need to simulate many random mining intervals, that reflect probabilistic distribution of real block mining. What would be such formula that could use random number generator?

Block arrival times follow the Poisson Distribution with λ = 10 minutes. See this SO question on how to do it in pure python

...given constant network hashrate and that no one keeps their blocks to themselves


text:
Why does getNewAddress take so long? Often times out python-bitcoinrpc
Bitcoin 0.11 on a Raspberry Pi 2:
https://github.com/jgarzik/python-bitcoinrpc
I am using this RPC auth proxy to talk to bitcoind from Python. I have a script that requests getmempoolinfo every 1 second. Occasionally given user input a new address is needed, and the script requests getnewaddress. This RPC-call often times out.
Sometimes the time-out causes even weirder behavior in other RPC calls until python is interrupted and the script killed: for example, getmempoolinfo returns the same information every time it is called until the script is restarted. Even querying bitcoind from the command line in a separate terminal window bitcoin-cli getmempoolinfo indicates that the mempool is not growing at all until the script that timed-out calling getnewaddress is terminated.
I also notice from the command line bitcoin-cli getnewaddress can take up to 30 seconds, without any python scripts running or other in-progress RPC calls.
I thought bitcoind is just retrieving a new address from wallet.dat, what is taking so long? It's not decrypting the wallet, it's not generating a whole new address from entropy... yet this specific RPC call is causing me lots of downstream problems.

How large is your wallet, in keys/transactions/megabytes?

101 keys, 0 transactions. I wonder if it's disk io? The wallet and the blockchain are both on the same USB flash drive.

Wallet.dat is 294 kb. Interesting, command line dumpwallet works instantly.

Please report this as a bug in that case: https://github.com/bitcoin/issues.

https://github.com/bitcoin/bitcoin/issues/7486

Judging from the discussion on github, you probably have found out what the issue was. Could you please summarize your findings by answering your own question for other users that find this question later?

@Murch I'm still working on it...

Oh, sorry, it appeared to me that it would probably have been the USB stick. Nevermind then! Good luck.

@Murch last night I switched out the stick with an SSD drive, a lot of things went faster but I think there's another process running on my Pi that is still making getnewaddress timeout - even up to 45 minutes! I'm using the Pi's GPIO to drive an LED matrix.

Oh wow, that's too bad. Hope you'll figure it out.

The problem has to do with other processes on the computer with too high CPU priority:
https://raspberrypi.stackexchange.com/q/42474/39301


text:
What is the difference between inbound and outbound connections?
I have port 8333 open with 8 outbound and 2 inbound connections.
Is my node transmitting and receiving transactions and blocks from both types of connections? Or does the "inbound" flag mean I am just downloading from that peer, and not sending any information back?
If, for the sake of saving RAM, I set maxconnections to 8, will they all be outbound? Even if port 8333 is open? In this configuration, is my node still "helping" the network?

To the best of my understanding: Inbound means the remote peer initiated the connection to you. Outbound means you made the connection to a remote peer. This is just diagnostic info and doesn't affect behavior. Transactions and blocks can flow in both directions with any peer - unless the peer has the relay bit set to off.

@NayukiMinase: Feel free to post that as an answer! :)

I feel that what I wrote doesn't provide objective evidence to support the statements, and I haven't answered all parts of the OP's question...

If your node initiated the connection, it's outbound, otherwise it's inbound. Nodes will send and receive data from both types of connections exactly the same way.
maxconnections sets a limit on the total number of connections, so if you set it to eight, your node will probably initiate connections to other eight nodes before any node can initiate a connection to it.
Keep in mind that according to this forum post, each open connection will take only a few kilobytes of RAM, so reducing the number of connections might not save all that much of memory.
EDIT: By running a full node that has no slots for incoming connections, you act as a leecher, and you do more bad than good for the Bitcoin network, as Gavin Andresen said on Reddit. You would help the network if you allowed a few inbound connections. As discussed earlier, that's unlikely to take up any significant amount of RAM.

By running a full node, you still help the network, even if your node has no slot for incoming connections. How? If nothing is using you're node as a trusted source of data, you're just relaying blocks and transactions. More peers, however, means more hops and more validation, which means slower propagation times for both transactions and blocks.

@StephenM347 you are correct. I did some extra research and confirmed what you said. Edited the answer, thanks.

Why would you automatically be a leecher just because you don't accept inbound connections? Don't honest full nodes send and receive data regardless of who made the connection (outbound or inbound)?


text:
How much extra disk space does txindex=1 require?
For example for a 1 MB block, does the extra Tx index database take up another 100 kB on average?
And a follow-up: once my node has completed -reindex after setting txindex=1 can I COPY the blockchain AND the TX index database together to other nodes? I know the blockchain can be copied but I'm not sure if the new node needs to reindex the blockchain itself or if the index database copies over as well.

I’m voting to close this question because the answer becomes out-of-date very quickly to be useful to others in the future.

@MCCCS do you know of any block explorer, etc that publishes charts for blockchain size in MB?

https://www.blockchain.com/en/charts/blocks-size but not txindex

Maybe a new best answer could describe the ratio of the index directory to the blockchain size as described by that chart. This will be a common enough question to maintain some kind of answer here. For example the indexes/txindex directory seems to be about 10% the size of the blocks directory.

The total extra size is around 27GB as of June 2020. You can check by looking at the size of the $DATADIR/blocks/index directory.
If you copy that directory, you'll copy the index with it.

Historic data:

Date
GB
Reference

2016-11-18
7
original answer

2017-05-08
11
ens

2019-07-16
21
Vasil Toshkov

2020-06-14
27
Anonymous

I just reindexed after setting txindex=1. My data directory increased in size about 3GB, but it seems like it might be saving data in another location since moving the data directory to other nodes is asking me to reindex.

Given the table above from Pieter's accepted answer and considering the historic blockchain size at the same dates, index data is around 10% the size of the blockchain.


text:
What technical properties does a confirmed Tx have that an unconfirmed Tx does not?
From a user perspective, each block confirmation reduces the probability that a transaction payment will be reversed.
However from the perspective of the software, what happens when a transaction is confirmed? For example, I know it is removed from the mempool. Is there any other technical difference between confirmed and unconfirmed transactions? Are both outputs stored in the same UTXO set? Does anything happen on any lower level (data storage, etc) inside a node or on the network or in the protocol once a Tx is included in a block?
Do confirmed transactions have any special properties besides the human perception of safety?

when we speak about specific transaction: no. The unconfirmed transaction looks exactly the same as the same transaction with 1,2.. confirmations.
yes. There are 3 types of transaction: confirmed, unconfirmed, and nonexistent
example of nonexistent are those 10BTC I'll give you tomorrow.
difference between unconfirmed and nonexistent is not "obvious"
When you see an Unconfirmed tx on your PC, this does not "guarantee" that everybody else sees it too. If internet connectivity fails, you may be precisely the only person who sees it.
Unconfirmed transactions can be very different from confirmed, in many ways:
Unconfirmed transaction can spend funds that already have been spend, or funds that never existed.
Unconfirmed transaction get lost in the Internet (never get confirmed).
Unconfirmed transaction can be reversed and be replaced by different Unconfirmed transaction sending the funds to somebody else.
Unconfirmed transaction can contain technical error that prevent it to be confirmed.
Unconfirmed transaction can have low fee (less than dust limit) and this can cause confirmation delay of 12 or more hours.
Unconfirmed transaction can be one of many abusive (spam) transaction (in an attack). Such Unconfirmed transactions will typically never get confirmed and most likely all miners will delete these abusive transactions.
Unconfirmed transaction can be censored by all miners. This can happen if some address belongs to a person who is anti-bitcoin or some large corporation that has a conflict of interest with bitcoin (like a large bank). If all miners agree that they do not wish such entity to transact on bitcoin, they may decide to censor the activity of such an entity or person. This transaction may never get confirmed.

"Unconfirmed transaction can contain technical error that prevent it to be confirmed" - Wouldn't such technical errors prevent an unconfirmed tx from being relayed as well? That is, a tx containing technical errors that would prevent it from being ever confirmed, would most likely not even be broadcasted throughout the network, right? Although this is up to each individual nodes, I'd say the vast majority of nodes are not configured to relay invalid or non-legit transactions?

There is no difference between a confirmed and unconfirmed transaction, which is why you need the full blockchain to verify exactly what you're seeing.
As for storage: A confirmed transaction will have affected the UTXO set by consuming/spending old UTXO's and creating some new ones.
If your node also maintains a mempool, it holds transactions in memory (not anywhere persistent), and transaction selection is based on (i) validation rules and (ii) the node's local policy.
An interesting case is if your broadcasting transactions with non-standard outputs: nodes might refuse to allow them into the mempool, and refuse to relay them. Should a miner hear about the transaction, he can still include it in a block however. So the block would override a node's policy of not accepting these transactions.
A transaction that can never confirm is due a rule violation, instead of local policy. An example would be spending outputs which don't exist, or a signature which is entirely invalid.

Transactions are the same before and after confirmation. Each confirmation just means that it has been mined into a block.

Technically speaking, the difference between a confirmed transaction and an unconfirmed transaction is that confirmed transactions have been hashed into a block, where the header of that block hashes to an extremely unlikely value. They are set in stone within the block and cannot be changed as long as that block remains part of the best chain. Unconfirmed transactions live by themselves, just a few kilobytes of data floating around the network, waiting to be hashed into a block.

I know all this about blocks and PoW, but what happens to THE ACTUAL TRANSACTION after a confirmation? Blocks "establish that a transaction is final" -- but is a flag bit set somewhere? Is data moved or copied or deleted from RAM or the file system? Does the client care at all whether or not a Tx is confirmed? Do confirmed Tx's have any special properties besides the USER feeling better about it?

Technically, no, the transaction data is exactly the same as the unconfirmed data before it was put into the block.


text:
Is -blocknotify triggered during catch-up?
My node is way behind and I noticed the -blocknoitfy action specified in bitcoin.conf is not being triggered. Which is OK for now, because the node has so much catching up to do, the script wouldn't do any good anyway.
Is this correct behavior? At what point does blocknotify start triggering again? My experience is that after a few hours or even a day of downtime, it gets triggered for every block during catch-up (so it could be a dozen triggers all at once, for example)

Yes, this is by design.
The notify action is run in the function BlockNotifyCallback (init.cpp), and you can see:
static void BlockNotifyCallback(bool initialSync, const CBlockIndex *pBlockIndex)
{
    if (initialSync || !pBlockIndex)
        return;
    // ...
}

The initialSync argument comes from the return value of IsInitialBlockDownload() (in validate.cpp).  It checks several things to determine if the initial block download is ongoing.  Probably the operative one here is a check whether the most recent known block has a timestamp that is more than 24 hours earlier than the current system time.
So it appears you will start getting notifications when you are 24 hours behind or less.


text:
Can multisig transaction contain two destination addresses beside transaction fee and UTXO?
I understand that "classic" bitcoin multisig transaction contains following parts: 1) Amount sent to another BTC address, 2) fee, 3) UTXO, which can be returned back to original source address or other address (in same HD wallet).
I am wondering if the same transaction, that is being signed by multiple parties, can contain more of (1) - more destination addresses. In other words - is it possible that mediator, who has the role of escrow, can charge fee that is paid by the very same transaction that both seller and buyer sign? Thanks

To clarify, a transaction spends one or more inputs (which are outputs of previous transactions) and creates one or more outputs (often including a "change output" sending excess value back to the sender). The mining fee is only given implicitly by the difference between the total input and output values.
If a transaction contains one or more inputs whose prevouts are encumbered with a multisignature script, we might call it a multisig transaction, but the multisig only really happens at the individual input level. The signature accompanying this input must be a result of an agreement between multiple parties, but this doesn't place any other limitations on what the transaction can look like, as long as the parties agree on it. A multisig transaction can have a hundred outputs to a hundred different addresses, just like a non-multisig transaction.
So yes, it is definitely possible for the escrow to have an output that pays them a fee in the transaction that also pays out the seller.


text:
Can multisig wallet can be fooled by adding one more key?
Please consider this scenario. I agree with other party that we will create 2/2 multisig wallet, so we can only spend funds from that wallet together. The other party will create its wallet, generates first key as her/his own (public+private) and then imports my public key as second key. That is correct 2/2 multisig wallet.
But I will create 2/3 wallet on my side. I will generate two own keys and as third key I will import public key of other party. That means I can use only my own keys to fully sign the wallet.
Will both wallets see funds when one of us will deposit? In theory I could then withdraw funds only myself, because I have necessary two keys of three, while other party things the wallet is 2/2. Or will these be two different wallets?

No, when a receiver generates an address, the address instructs the sender what scriptPubKey to assign funds to. A scriptPubKey commits to specific spending conditions. The scriptPubKey for a 2-of-2 will be different than for a 2-of-3. When the money is sent to the 2-of-2 address, it can only be spent by an input that satisfies the given spending conditions, in that case, a 2-of-2 OP_CHECKMULTISIG with exactly the two original public keys in the order as originally determined.
Further, only wallet software looking for the original 2-of-2 will recognize the output as its own.


text:
NBitcoin vs Bitcoin Core RPC
I initially thought NBitcoin was a wrapper for Bitcoin Core JSON RPC and that Bitcoin Core was the only way to communicate with the bitcoin network. But now that I've discovered it's not, I'm curious to know how both communicate with the bitcoin network under the hood?

Bitcoin has a network protocol that all nodes use to communicate with each other. So long as a software can speak that protocol, it can join the network. Since Bitcoin Core is open source, the protocol details are freely available for anyone to see and implement themselves elsewhere. The protocol details are also described on bitcoin.org.


text:
Which one is more effective for attacking the system, controlling 51% of the mining power or 51% of the full nodes?
I used to think it is the miner who verify the transaction, but it turns out this is really a joint work by the miner and the full nodes; the miner broadcasts the newly discovered block, which contains transactions to the network of full nodes, but it is up to the full node to decide whether to accept them.
Then my question is, even if someone controls the majority of the hash rate, if he does not compromise majority of the full node, can the network simply reject to include the blocks that he broadcasts?

How would the network know which blocks to reject? The system uses mining power to agree on precisely this.

51% of mining power would be more effective for attacking the system. if you have 51% of all full nodes, you can't do any attack with your nodes.

I used to think it is the miner who verify the transaction, but it turns out this is really a joint work by the miner and the full nodes; the miner broadcasts the newly discovered block, which contains transactions to the network of full nodes, but it is up to the full node to decide whether to accept them.

Miners' job is to produce blocks that the network (of fully validating nodes) finds acceptable. Their job is deciding which version of otherwise valid history is the one to accept. They do verify transactions - not because it is their job, but because they are incentivized to. If they didn't, they could be tricked into creating a block the network wouldn't accept, a monetary loss for them.

Then my question is, even if someone controls the majority of the hash rate, if he does not compromise majority of the full node, can the network simply reject to include the blocks that he broadcasts?

"Majority of full nodes" does not mean anything. Nodes don't have an identity, and they're not counted in any way. It's not like nodes will be persuaded by their peers to accept an invalid block if there are enough peers. No, fully validating nodes fully validate. They will accept any blockchain that satisfies all their rules - and among those, treat the one with the most amount of work as reality. But they will never accept invalid blocks, regardless of the amount of work, or how many of their peers accept it.
However, the big question of course how do you choose what rules to enforce. Or more practically, how do you choose what node software to run; there is no authority to declare what rules are the real ones - having that would just be moving the problem of centralization elsewhere. As a result, it is often said that this is decided by the "economic majority". This is a confusing term, as there is no majority (as in 51%) of anything involved here. It is a sociopolitical concept applying to humans and organizations, and not a technical term.
So to answer your question: the number of nodes is completely irrelevant. However, if most businesses and organizations involved in bitcoin would announce they're going to switch to different rules, perhaps you would be convinced to do the same.


text:
how can i get blockchain private key using just my wallet address
Please i can get a  private key using the 12 phrases of my wallet using Bip32 but how can i get my wallet private key without the phrases and just having the wallet address

You cannot get the private key from the bitcoin address. No way. Maybe be a bit more specific, so help is possible. This question was already marked as „unclear“. What wallet you use, for what reason you need the privkeys extracted, maybe there are solutions to your demand on a different way.

This is exactly what is supposed to not be possible and gives value to the blockchain. So, unless you have an advanced quantum computer at your disposal I'm afraid you will not be able to do it.

what is a quantum computer helping here? Is ECDSA (privkey -> pubkey) not quantum save? From what I have read, I understand encryption is in danger, but haven't read about ECDSA and Hash256/RipeMD. Are there any links?

It was a tongue-in-cheek reference/joke. But yes, the rumors say that as soon as quantum computers with 100 Q-Bits exist, the first types of encryption will become crackable.


text:
blockchain.info wallet doesn't show transactions made through api
I've been accepting orders on my website for several months using blockchain.info api. Everything worked smoothly until few days ago. At the moment I have two transactions made through api, both seem to get through, but I can't see them in my main wallet. Sent an email to customer support, no answer yet.
https://blockchain.info/address/19USdV4ENhRkcRbmjL2gZWBUPJqhc7xyuW
https://blockchain.info/address/1FApdPwewC8VCNzEJ9SCbECFqf2cPQyqZG
How is it working? How do I get those funds in my main wallet? Am I doing something wrong?
Actually, I recently had the problem with the gap limit. I changed the gap limit to 50 (default is 20) and then made a small payment from my main wallet back to myself to make the gap=0. And after that, these two transactions appeared.
Please advice. Appreciate your assistance.

found the reason. it's the gap limit. just paid one of those 20 unpaid transaction and everything is working

The problem
When you make requests from the Receive V2 API, we create new addresses for you sequentially, ensuring that you don’t give two users the same address. If you request several addresses on behalf of your users without any of them making a payment, this will leave empty gaps between addresses with funds. This is fine unless this consecutive empty address gap reaches 21 addresses or more.
Most wallet software will only look ahead 20 addresses from the highest index address it can see (due to the BIP 44 standard we are following). Let’s say you get paid to the first address, address 1 — the wallet will look ahead 2-21 addresses to see if there are any additional funds or transaction history in those addresses. If it doesn’t find anything, it will stop looking. So, if you get paid to address 22, the wallet software will not see the funds because it stopped at 21. However, if you get paid to address 2, the wallet software will look ahead addresses 3-22, see the funds that were sent to the address 22, and then look an additional 20 ahead (addresses 23 – 43).
How to know if you’re affected
You can call the checkgap API via the following endpoint:
https://api.blockchain.info/v2/receive/checkgap?xpub={xpub}&key={apikey}
You’ll get a JSON response that looks like:
{ “gap”: 1 }

This gap value represents the difference between the index of the most recent address paid to, and the most recently-requested address. If that value is 20 or greater, funds paid to any further addresses created will be hard to access until earlier addresses receive funds.


text:
How to mine any coin with computers on a network?
I have a network that I fully own with around 55 computers. I have heard of the ways malicious websites have used CPU power to mine for them with code in their sites.
Since I have full ownership of these computers, and they are not being used past a certain time every day (4pm but they remain on 24/7) how can I set up a program in which I don't necessarily have to install a program such as NiceHash or MinerGate on every single computer, and take advantage of these computers still being on, connected to my domain?

I completely understand, I mean to ask how can I configure any and all computers on the domain to mine? Without the process of installing and setting up software like you would if you had a mining rig, but yet in the same sense of those with access to the malware websites had.

Malware is basically remote administration software but sneakier.  With 55 computers, surely you already have some good remote administration solution?  You'd create a script or whatever to install and automatically start the software on all of them.  Just like if you wanted to install any other program (web server, word processor, etc) on all of them.

Malware gets the remote admin software installed in the first place via some sort of exploit in a browser or other software, or by tricking the user into running it. If this is possible on your network then you're already doing something wrong. But again it shouldn't be necessary because you presumably already have some convenient way to get the machines to do whatever you need, with your authorization.

@NateEldredge Thanks Nate, I do understand that aspect of it, but in terms of which program to use, and how I would get each machine to mine to a specific address, is where I am confused. Yes I have the Administration software, and yes I would need to provide my authorization which I can, but the direction of how to start and then point to an address is where I am having trouble

Keep in mind that even though the computers are on, having them mine will substantially increase their power consumption and likewise their heat output (meaning you need more air conditioning to keep the temperature under control).  Expect to see a bump in your energy bills.  Unless your machines are pretty carefully configured for efficiency, it's very likely this will exceed any revenue you earn from mining.  If their cooling isn't adequate, also expect to see machines failing or running unreliably due to overheat.

@NateEldredge I do understand that, but for a month test im sure we will be able to withstand.. not worried about electricity or ac through this situation as of right now


text:
What's the difference between a 4 core VM running a Bitcoin Node vs. a 16 core VM?
I'm trying to help out the Bitcoin network as efficiently as possible. I have access to VM's, with a $1200 monthly budget. I'm trying to figure out if a single 16 core/ 56gb RAM VM would be better than a multiple barebone dual core/3.5gb RAM VMs.
Here's the pricing list:
https://azure.microsoft.com/en-us/pricing/details/virtual-machines/
How would you set up these VM's the most efficient way with a $1200/month budget?

There's very little value in running a Bitcoin node on Microsoft servers. The idea of nodes is not to add processing power to the network, but to increase decentralization and redundancy. Running multiple instances on servers completely controlled by Microsoft does not help that goal.

Ok got it, multiple lower power nodes are better than one giant VM

@Mike: That's only true if the nodes are run in independent locations. If they're all in the same datacenter, one small node = many small nodes = one big node = many big nodes.


text:
Why do compiled binaries still require libdb, BerkeleyDB, and others?
I compiled Bitcoin Core on one Raspberry Pi from source after installing all the necessary dependencies including all the libboost's and BerkeleyDB. That application runs fine, and bitcoind lives happily in /usr/local/bin
So I tried copying bitcoind and the other Bitcoin executables from that directory to a brand new Raspberry Pi running a brand new clean operating system, and the applications wouldn't run. I got errors until I installed libboost and BerkeleyDB and all the other dependencies on that second computer as well.
I thought the compiling process made a stand-alone executable program? Why did the compiled binary still require these shared libraries?
Like, executables are available to download from bitcoin.org that are truly stand-alone. How can I compile from source an executable as stand-alone as these?

Executables can still require libraries to be available. It is possible to compile (or actually link) those libraries into the executable itself so the executable becomes truly stand alone. This is called a statically linked binary. On phone atm, can't look up details.

The standard compile process does not static "include" dependencies in the executable file. It refers to the installed libdb, boost, etc.
This (dynamic linkes libraries) is an efficient concept. Otherwise each executable that uses – as example – boost would require to include the whole boost dependency in the binary.
The "official" Bitcoin-Core binaries offered through bitcoin.org are static compiled executables (they include everything). This is required to gain linux/distribution independence as well as to fully build the binaries deterministic (security/integrity).
You can build a static linked bitcoind yourself by following the "depends" build process:
https://github.com/bitcoin/bitcoin/tree/master/depends


text:
How to unset fee rate after setting with RPC `settxfee`
After setting the fee rate with settxfee -- how do I re-allow bitcoind to set the fee automatically again? Or does the settxfee command only apply to the next outgoing transaction?

Looking at the source code suggests that settxfee 0 should return you to the automatic fee setting.  However this behavior is undocumented and there is a TODO suggesting that it might go away in the future.  Otherwise, you can restart bitcoind.


text:
help unconfirmed for a day
hi can someone help I forgot to send fee one time is there anyway to speed up
https://blockchain.info/tx/fb4840af0ad51804eb8975d7e0afacd2e2c176748e98de502a9ffd19ed46d53b
thankyou

looks like your tx was confirmed a while ago.