text:
Retrieve address corresponding to pubkey using bitcoin-cli/RPC
We are using jgarzik/python-bitcoinrpc and in some cases curl to retrieve data from bitcoin core using RPC.
However, for some txns where pubkey is used, bitcoin-cli/rpc gives no address in corresponding vout.
e.g. for bitcoin-cli getrawtransaction 835fffaae22a3932882c50e8755407dc6dba4f41350271405765660beaa45a63 2 :
  "vout": [
    {
      "value": 0.00010000,
      "n": 0,
      "scriptPubKey": {
        "asm": "03f0cc6d142d14a40937f12dbd99dbd9021328f45759e26f1877f2a838876709e1 OP_CHECKSIG",
        "hex": "2103f0cc6d142d14a40937f12dbd99dbd9021328f45759e26f1877f2a838876709e1ac",
        "type": "pubkey"
      }
    },
    {
      "value": 0.00010000,
      "n": 1,
      "scriptPubKey": {
        "asm": "03f0cc6d142d14a40937f12dbd99dbd9021328f45759e26f1877f2a838876709e1 OP_CHECKSIG",
        "hex": "2103f0cc6d142d14a40937f12dbd99dbd9021328f45759e26f1877f2a838876709e1ac",
        "type": "pubkey"
      }
    },

Is there any way to retrieve addresses where script type is pubkey using bitcoin-cli/RPC ?
Thanks.

The ScriptPubKey 2103f0cc6d142d14a40937f12dbd99dbd9021328f45759e26f1877f2a838876709e1ac is a pay-to-public-key. There is no defined address for this output type. There is therefore no way to retrieve addresses when type is pubkey.

Yes, I know that the mentioned ScriptPubKey is a pay-to-public-key for which there is no defined address for this output type which I mentioned in question too. However, since almost all Bitcoin Explorers are able to display the address for corresponding pub-key, I was wondering if there was a simpler way to retrieve the same using RPC/bitcoin-cli. Yes, I was aware of other solutions like github.com/alecalve/python-bitcoin-blockchain-parser which directly read the data from blocks (.dat files) and calculate addresses from corresponding key.

You really shouldn't. It's a dated, confusing practice. More modern block explorers do not show P2PKH addresses for P2PK outputs, FWIW.

@pieter-wuille Since most of the explorers I used like blockchain.com, blockchair.com, blockcypher.com etc. were displaying the corresponding addresses, I believed that the process is legitimate. Can you pls explain it a bit further why it is a dated and confusing practice ?

For example blockstream.info and mempool.space correctly don't show any address for P2PK. Why is it confusing? Simply because those outputs don't have an address - the address corresponds to a different output. It dates from a time when P2PK and P2PKH were the only types used in practice, and addresses were more a way to indicate "identity" rather than "way of conveying a payment output". A block explorer started it, and others copied it for compatibility, but it is nonsensical.

@pieter-wuille Thanks for shedding light on this topic.. now it makes some sense to me. Does it mean that other old explorers which are doing the same, are displaying the wrong addresses for that particular txn/output (p2pk type) or was that technique legitimate for some period of time until new output types comes to the picture ?

@curious I've written more about the history on https://bitcoin.stackexchange.com/a/117426/208. TL;DR: the meaning of the word address has dramatically shifted starting in 2012.

@pieter-wuille Thank you for sharing the link. It has more info I was looking for.

If you want to try something beyond using the RPC, you can calculate addresses.
In the ScriptPubKey object, remove 21 from the start and ac from the end.
The 21 is hex to indicate the length of the pubkey.
ac is the opcode for OP_CHECKSIG.
You will be left with your pubkey 03f0cc6d142d14a40937f12dbd99dbd9021328f45759e26f1877f2a838876709e1. From here you can convert it to a base58 encoded address.
An example of how to do this in with python
import bitcoin
from bitcoin.core import x
from bitcoin.core import CoreMainParams
from bitcoin.wallet import P2PKHBitcoinAddress

def calc_addr_tool(pubkey, pubtype, p2shtype, wiftype):
    class CoinParams(CoreMainParams):
        MESSAGE_START = b'\x24\xe9\x27\x64'
        DEFAULT_PORT = 7770
        BASE58_PREFIXES = {'PUBKEY_ADDR': int(pubtype),
                           'SCRIPT_ADDR': int(p2shtype),
                           'SECRET_KEY': int(wiftype)}
    bitcoin.params = CoinParams

    try:
        address = str(P2PKHBitcoinAddress.from_pubkey(x(pubkey)))
        return {
            "pubkey": pubkey,
            "pubtype": pubtype,
            "p2shtype": p2shtype,
            "wiftype": wiftype,
            "address": address
        }

    except Exception as e:
        logger.error(f"[calc_addr_tool] Exception: {e}")
        return {"error": str(e)}

(from https://github.com/smk762/kmd_ntx_stats_docker/blob/master/code/kmd_ntx_api/lib_base58.py#L242-L263)
For a segwit address try
from bip32utils import Base58

def p2wpkh_in_p2sh_addr(pk, testnet=False):
    """
    Compressed public key (hex string) -> p2wpkh nested in p2sh address. 'SegWit address.'
    """
    # Script sig is just PUSH(20){hash160(cpk)}
    push_20 = bytes.fromhex("0014")
    script_sig = push_20 + hash160_bytes(bytes.fromhex(pk))

    # Address is then prefix + hash160(script_sig)
    prefix = b"\xc4" if testnet else b"\x05"
    address = Base58.check_encode(prefix + hash160(script_sig))
    return address

(from https://matthewdowney.github.io/create-segwit-address.html)
Be careful with any output and confirm with sending a small amount first.


text:
Wasabi coinjoin problem
I used some coinjoined BTC coins from my from my WASABI wallet to exchange for ADA on Godex. I sent coins from Wasabi wallet but had Godex deposit them in my Exodus wallet. It was around 500€.
There was no problem with the exchange with Godex but all the other BTC coins in my wallet that were coinjoined were sent to Blockchain and remain there unconfirmed. I did not send them. The coins are gone from my wallet but I can see them on the blockchain.
All these coins in my Wasabi wallet were not conjoined together and the same time.
They were sent in 7 separate transactions from my Exodus wallet to separate addresses in my Wasabi wallet and then coinjoined separately. Now all these separate coinjoin coins are listed as an INPUTS on the blockchain. Unconfirmed
The BTC coins seen on Blockchain are are Unconfirmed and UNspent
HOW DO I GET  THEM BACK IN MY WASABI WALLET?

When you write "on Blockchain", do you mean 1) seen in any blockchain explorer. 2) Seen in a custodial account on exchange.blockchain.com. 3) something else?  Are you using a coinjoin feature built into the Wasabi wallet.

Seen in blockchain explorer

I used coinjoin feature built into Wasabi

source: Stack Exchange

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

sort: votes


text:
How to recover corrupted Electrum wallet.dat
I invested in bitcoins at the beginning of 2015. At the same time back in 2015, i installed Electrum wallet and somehow an offline version which meant that I stored the bitcoins on the computer's hard drive, this offline version was not something I wanted, it just happened by a mistake. Once the bitcoins were sent to my Wallet, it took about 3 days until the hard drive crashed.
A good friend managed to get into the hard drive via the wrong safe mode, and ran a backup of all important files, including the files to Electrum, including my wallet.dat file, which I have understood is a relatively important file.
I bought a new computer and downloaded the files from my backup and tried to restore my wallet, but I could not solve this.
An error message appeared when I tried to access / restore Electrum. When I tried to open the wallet file in a program called something with HEX, (which people had written about in diffrent forums), it stod ”the file is corrupt” according to the program.
I let it all go and more or less forgot this until now. I have read and i was thinking, could the reason why the file apears to be "corrupt" , just because its  encrypted? I know the password for the encryption and I have just finally finished syncing the Bitcoin core. But i dont now how to decrypt it, and is my idea about the file issue, possible?
What is my next step to recover my bitcoins?

I would contact an Electrum developer, since they would be the people to know Electrum's wallet format the best ( electrumdev gmail.com taken from https://github.com/ecdsa) and offer them X percent of my funds if they succeed.

The wallet file is from Electrum, so my awnser is Electrum core. Is it possible to Open it with Bitcoin Core anyway?

No and if it's corrupted it'll need someone's manual intervention anyway.

"I hope this is taken seriously and free from trolls." An offer of $20000 will inevitably attract a lot of scammers/confidence-tricksters, be vigilant.

If the file is corrupt, it will require manual editing to be able to open it with electrum.
Depending on how corrupt the file is, it might be possible to recover and and it also might not.
Say, for example, a single bit is flipped. Then a brute-force approach might work where every bit is flipped in the file and then check which result can be opened and decrypted with electrum..
Check with electrum developers who are most familiar with how a non-corrupt file should look.
If I were in this situation myself, what I would also do is generate a few new wallet.dat files using the same electrum version you used in 2015, open them in hex viewers / text editors next to each other, and try to see the patterns. Compare to your corrupt file.
Good luck.

The fact you might be ill or not is irrelevant, as is your family story.
The fact remains you're quoting a remuneration of $20,000 for a job we don't know how much effort entails.  And I don't think you're paying $20,000 "for effort", you're paying only if the job's done.
So maybe if someone could 'crack' this in a month or even a year, it'd be worth the effort, but what if it takes their whole lifetime, and they still haven't finished?  Since the effort they need to put into this is undecidable, how will they know it will ever end?
So I would not take the job, even if it'd pay a thousand times as much.  Too much risk involved (the risk of wasting my time and earn nothing).
Secondarily, if your request is genuine, and the puzzle you're presenting can be solved, what assures you that the person who solves it won't keep the digital coins to him or herself?  If as soon as he takes the coins he disappears, and won't communicate any more with you, or make contact only to make fun of you, how could you enforce the terms (for him to give you the money)?  As even if you promise $20,000, the coins themselves could be worth more.  In these circumstances and if stealing them from you (safely) is easy, they might as well do that.  You might end up being the deceived one.
Either way I think the safest bet is to forget about the whole thing - forget you can get paid collaborators.  Either try and do the job alone yourself (though I'd say if you do this you will almost certainly fail), or ask for free collaborators (in which case most people will ignore you and move on as if your request wasn't genuine - and as I will myself do as soon as I'm done writing this answer).
You're trying to put a price on something you don't know the price for.  Time to face up to that.  You don't know how much your own life or that of your family is valued either, or your collaborators' or even people who steal from you for that matter.  Stop dreaming or playing the numbers' game.  Salvation comes from inside, or it doesn't exist at all.  Salvation grows inside or it will never be there.  Stop the chase, and make the peace.

Character-count aside, this should be a comment. But otherwise, this website is full of people that spend their time helping others, without any offer of reward. At face value I don't truly disagree with what you wrote, and offers of reward are technically not allowed here, but nonetheless the core idea of this site is that it is a place to ask others for technical help. To suggest it 'isn't worth the effort' is kinda missing the wider point of why many people contribute, in spite of not being monetarily compensated for doing so.

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


text:
How Can I Recover My Stolen Bitcoin
I need help on how to hire a legitimate recovery firm that can help recover my stolen bitcoin.

Please I need honest answers

Beware: there are MANY scammers that will masquerade as 'legitimate recovery firms'. They will promise a return of your funds, but in reality they are just looking to fleece you for even more money.

Thanks but are there real legitimate recovery companies out there?


text:
How to get "From" and "To" addresses from bitcoin transaction using the command line?
I am scanning the bitcoin blocks and looking for transactions that involve my list of addresses. This is more like a wallet hosting service. I need the "From" and "To" addresses used in the transaction.
I am using the "bitcoin-cli gettransaction" method to get transaction details.
I know that VIN block should contain the sender addresses and VOUT block should be the receiving addresses. I can see the VOUT block with receiving addresses, but I can't see the "From" addresses in VIN block.
How can I get the "from" and "To" address in bitcoin transaction?
Here is a data sample,
     "vin": [
    {
      "txid": "c5355fe45f785f14f15b3e41894e21083978e9e78ed23b7a3a00f0061ec735a5",
      "vout": 1,
      "scriptSig": {
        "asm": "",
        "hex": ""
      },
      "txinwitness": [
        "3045022100f5ee5cb40a06419c55eb2de549ee97daf77a8e2588d3e0dd800cade7605d4c760220453533f8ba09165076f4a252dc9336f2d4040a3b071754441805c94df555a5ce01",
        "02f6e670a3fcb90b40bb66fa550b5202ae8c9b50d69fcc1ffb5377b022f7f629fd"
      ],
      "sequence": 4294967293
    }
  ],
  "vout": [
    {
      "value": 0.00309202,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 2f8f5127a4f8234552e6ab2107303d1761e6ddbe OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9142f8f5127a4f8234552e6ab2107303d1761e6ddbe88ac",
        "address": "15LUSrgQ1qFtgx5237AskkjeMcX4bpHfBH",
        "type": "pubkeyhash"
      }
    },
    {
      "value": 0.06857278,
      "n": 1,
      "scriptPubKey": {
        "asm": "0 83e6911dcb2f412677376c6a70a01655dd534457",
        "hex": "001483e6911dcb2f412677376c6a70a01655dd534457",
        "address": "bc1qs0nfz8wt9aqjvaehd348pgqk2hw4x3zhupv0xw",
        "type": "witness_v0_keyhash"
      }
    }
  ]

Transaction inputs are listed via the txid and the outputs index. In the case of your example, you'd need to make a second call:
bitcoin-cli gettransaction c5355fe45f785f14f15b3e41894e21083978e9e78ed23b7a3a00f0061ec735a5
And then look at the output at the index n: 1 to find the address in question.

Thank you ! You can see this transaction here https://www.blockchain.com/btc/tx/2c33baf70886d48cc3259ca1dc5d3dde974394f476d5faa2673cb6e35721fd83     . .  The problem is that I am unable to see the "from address" in my output. I can make a second call to the txid in VIN, but I am trying to avoid that. The output is the receiver address. It has the other 2 addresses. 1 address is the actual receiver and the second address should be where it returns the remaining balance

error message:
No wallet is loaded. Load a wallet using loadwallet or create a new one with createwallet. (Note: A default wallet is no longer automatically created)
Why do you need a wallet to get info about transactions that do NOT include addresses you own?
If you have a wallet, then the error message is Invalid or non-wallet transaction id. So this answer is expected to wor for your transactions only.

@Putnik if you have txindex=1 set then you can query any transaction, otherwise it would indeed work for your wallet's transactions only.

I do have txindex=1  and all 800k+ blocks are on my disk. Maybe, something else?

@Putnik it would be best to open a new question, rather than discuss this in the comments of a somewhat unrelated question.


text:
Bitcoin RPC connection
I am trying to insert bitcoin transactions into MongoDB using python3. Below is my code :
import pymongo
import sys
import json
import time
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException

rpc_connection = AuthServiceProxy("http://xxx:xxx@ipaddress:port")

def getTransaction():
    addresses = []
    txa = []
    commands = [ [ "getblockhash", height] for height in range(400000,550000) ]
    #print(commands)

    block_hashes = rpc_connection.batch_(commands)
    blocks = rpc_connection.batch_([ [ "getblock", h ] for h in block_hashes ])
    print(blocks)
    for txpre in blocks:
        #print(txpre)
        for txs in txpre["tx"]:
            txa.append(txs)
    trans = conTransaction(txa)
    return trans

I am getting following error :
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "Test06.py", line 252, in getBTCTransaction
    block_hashes = rpc_connection.batch_(commands)
  File "/home/administrator/.local/lib/python3.6/site-packages/bitcoinrpc/authproxy.py", line 165, in batch_
    'Content-type': 'application/json'})
  File "/usr/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py", line 1065, in _send_output
    self.send(chunk)
  File "/usr/lib/python3.6/http/client.py", line 986, in send
    self.sock.sendall(data)
BrokenPipeError: [Errno 32] Broken pipe

I checked bitcoind  rpc connection,its connected.
block_hashes = rpc_connection.batch_(commands) this code line is giving error. Can somebody tell me what's wrong?
Working on a remote server.

did you obfuscate "http://xxx:xxx@ipaddress:port" for this question or do you have it like this in your code? in that case it would be clear why can't connect to it. Did you also check bitcoind to have the http-rpc interface open?

No, I have my IP address, port, user password in my code. I obfuscate it just for this question. Can you pleasse tell me how to check bitcoind to have the http-rpc interface open? I am new to bitcoind

try wget http://xxx:xxx@ipaddress:port or curl you could even check with a networking tool if you really have a port open. also check your bitcoin.conf (c.f.: https://en.bitcoin.it/wiki/Running_Bitcoin you need to uncomment the lines for the RPC)

I tried this "wget http://xxx:xxx@ipaddress:port". Its giving response 200 OK.

Given list rpc lines are uncommented and changed. Please check.        server=1
rpcuser=xxx
rpcpassword=xxx
rpcclienttimeout=60
rpcallowip=remote_ipaddress_on_which_working/port
rpcport=port                                                 rpcconnect=remote_ipaddress_on_which_working

if you get 200 OK via wget we can know that your bitcoin node really is running as expected. so the problem seems to be from your client lib. from the error log it seems that you are making the http request while doing multithreading. I don't see something like this in your code example but could it be that you are closing the TCP socket before bitcoin is able to give you an answer? have you tried doing a JSON http request yourself in pythong without this client lib? also I am wondering that the lib is located in /home/adminstrator/... did you install it with sudo?

After doing changes in bitcoin.conf now I am getting socket.timeout: timed out error

I found the solution. After doing changes in bitcoin config file, I just reduce the range of records to be inserted. RPC server cannot handle loads of data at one time. Otherwise, server down problem occurs and connection failed. Max 100 records get inserted at a time or less than that.
And one more thing, keep restarting bitcoind RPC server by stop and start commands given below:
sudo killall bitcoind
bitcoind -daemon -rpcuser=xxx -rpcpassword=xxx -txindex -rpcallowip=youripaddress

Just in case this is still relevant, I used to have broken pipe errors while using the bitcoinrpc from PyPi, stop getting them after switching to the modified version in Bitcoin Core https://github.com/bitcoin/bitcoin/blob/master/test/functional/test_framework/authproxy.py


text:
Bitcoin and Litecoin wallets with push notification API?
I am working on a project which includes btc and ltc transactions. I need Bitcoin and Litecoin wallets with APIs that could create Push notification on newly received transactions. With API I mean any kind of communication (Interface, REST API etc.). Can anybody show me the way or name the wallets? Wallet needs to be local not remote website with service.

You can run bitcoind/litecoind with the -walletnotify flag, which runs a script when a transaction is received.  The script could then send a notification.
./bitcoind -walletnotify=<your script name> %s

The %s is replaced with the hash of the incoming transaction.

blockchain.info offer an API and a notification thing.

I want local wallet. Not remote website.

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


text:
MtGox websockets api returning "400 Bad Request"
I want to get started with the Mt. Gox websockets API, but I can't seem to get a good response from the server.
I'm sending the following (captured with Wireshark):
GET /mtgox HTTP/1.1
User-Agent: websocket-sharp/1.0
Upgrade: websocket
Connection: Upgrade
Host: websocket.mtgox.com
Sec-WebSocket-Key: LtH+YFgnW1N8KDLDbocsUQ==
Sec-WebSocket-Version: 13

and the server responds:
HTTP/1.1 400 Bad Request

I've tried sending the handshake via telnet and with this C# code and I still get a 400 Bad Request error:
class Program
{
    static void Main(string[] args)
    {
        ClientWebSocket ws = new ClientWebSocket();
        Task connectionTask = ws.ConnectAsync(new Uri("ws://websocket.mtgox.com/mtgox"), CancellationToken.None);
        Console.Write("Connecting");
        while (!connectionTask.IsCompleted)
        {
            Console.Write(".");
            Thread.Sleep(100);
        }
        Console.WriteLine(ws.State);
    }
}

(The last line printed is "Closed" and when I inspect the handshake with Wireshark I see the same 400 Bad Request)
Any ideas what I'm doing wrong? I can't see much documentation or samples using the websockets API so I don't really have anything to compare to :(
In response to sta's suggestion, I tried this (using WebsocketSharp):
static void Main(string[] args)
{
    WebSocket ws = new WebSocket("ws://websocket.mtgox.com/mtgox");
    ws.Origin = "http://websocket.mtgox.com";
    ws.Connect();
    ws.OnMessage += (sender, e) =>
    {
        if (!String.IsNullOrEmpty(e.Data))
        {
            Console.WriteLine("{0}", e.Data);
        }
    };
    Console.WriteLine("{0}", ws.IsAlive);
    Console.ReadLine();
}

This displays FALSE so there's still something I'm doing wrong :/ I haven't had a chance to dig into WebSocketSharp yet though
Update:
With WebsocketSharp setting the Origin header correctly, Wireshark shows the mtgox server accepting the websocket upgrade:
HTTP/1.1 101 Switching Protocols\r\n
Upgrade: websocket\r\n
Connection: Upgrade\r\n
Sec-WebSocket-Accept: 2+1ghzJ/Itt6w1aBdUteghcsJHk=\r\n
\r\n

But WebSocketSharp still reports the connection as closed :(

Funny, I just noticed the same thing, but I'm writing a websocket client for node.js.

There seems to be a big difference between websocket.mtgox.com/mtgox server and the socketio.mtgox.com/mtgox... The sample Loourr posted below works for socketio (slightly different handshake) but I'm still not sure why I can't connect to the websocket one (with C# WebSockets or this websockets implementation for node: https://github.com/Worlize/WebSocket-Node )

It seems that the client should send the Origin header in opening handshake to the MtGox server.
If you use current websocket-sharp, you should do like the following before connecting.

ws.Origin = "http://websocket.mtgox.com";

Could you try?
Update:
Could you try again the following code?
static void Main(string[] args)
{
    var ws = new WebSocket("ws://websocket.mtgox.com/mtgox?Currency=USD");
    ws.Origin = "http://websocket.mtgox.com";
    ws.OnOpen += (sender, e) =>
    {
      ws.Send(
@"{
    ""op"": ""unsubscribe"",
    ""channel"": ""d5f06780-30a8-4a48-a2f8-7ed181b4a13f""
}"
      );
    };
    ws.OnMessage += (sender, e) =>
    {
        if (!String.IsNullOrEmpty(e.Data))
        {
            Console.WriteLine("{0}", e.Data);
        }
    };
    ws.Connect();
    Console.ReadLine();
    ws.Close();
}

It seems that an exception has occurred when the client is receiving ticker type data in a while.
I'll investigate a little further.
Update:
I've found out the cause of the exception, and fixed websocket-sharp.
Could you try your code with current websocket-sharp?

I just tried this and WebsocketSharp reports the connection to be closed: (added the code to the question)

This using wss:// works!

For one the url should be websocket.mtgox.com/mtgox. Here is a sample project which uses the node.js socket.io library.
I dont have much experience in C#, but here is an implementation in node.js
var io = require('socket.io-client');
var socket = io.connect( 'https://socketio.mtgox.com/mtgox' );

var message = {
  "op": "subscribe",
  "channel": "24e67e0d-1cad-4cc0-9e7a-f8523ef460fe" // this is the market depth channel
};

socket.send(JSON.stringify(message));

socket.on('message', function(message) { console.log(message); });

This will log market depth changes to the console.

Don't have reputation to vote up :( Thanks though! I'm going to try and figure out how the Node.JS example handshakes differently...
Changing my code to connect to https://socketio.mtgox.com/mtgox instead of what I had results in the server immediately closing the connection (doesn't even send a bad request response)

Glad it helped. You can except an answer as correct however ;-)

I'd like to use the raw websocket api. Socket.io creates bad abstractions.

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


text:
What does getinfo output mean?
I am trying to get my foot in the door wrt to bitcoind. I pulled the github version here. As suggested here, I am starting the daemon like so
bitcoind -daemon

and I am monitoring it like so
bitcoind getinfo

And I get the following output
{
    "version" : 89900,
    "protocolversion" : 70002,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 269516,
    "timeoffset" : -2,
    "connections" : 8,
    "proxy" : "",
    "difficulty" : 510929738.01615179,
    "testnet" : false,
    "keypoololdest" : 1386220819,
    "keypoolsize" : 101,
    "paytxfee" : 0.00000000,
    "errors" : "This is a pre-release test build - use at your own risk - do not use for mining or merchant applications"
}

Obviously some are self explanatory, but could someone go through and explain what all of this output means?

Also could someone add some tags, I really don't know what to add besides bitcoin =P

An explanation of the meaning of the fields given by 'getinfo' :
version - The version number of this bitcoin-qt or bitcoind program itself. Both of are equivalent. -qt is simply the graphical user interface version
protocolversion: The version of the bitcoin network protocol supported by this client (user agent software).
walletversion: The version of the wallet.dat file. Wallet.dat contains bitcoin addresses and public & private key pairs for these addresses. There is additional data on the wallet. Care must be taken to not restore from an old wallet backup. New addresses generated in the wallet since the old backup was made will not exist in the old backup! Source: https://en.bitcoin.it/wiki/Wallet
balance: The total number of bitcoins held in the wallet.dat file.
blocks: The total number of blocks which constitute the shared block chain.
timeoffset: Seconds of difference between this node's "wall clock time" and the median reported by our network peers.
connections: the number of peers on the bitcoin P2P network that this node is connected to.
proxy: If using a proxy to connect to the network, listed here, otherwise blank.
difficulty: the current mining difficulty factor. Difficulty is increased as more miners and more hash compute power compete to be the next one to have a block of transactions added to the blockchain.
testnet: Boolean value (true OR false). There is a parallel bitcoin network, the testnet, where trials and experiments may be carried out without impacting the official, live bitcoin P2P network
keypoololdest: timestamp (UNIX epoch) of the oldest key in the keypool
keypoolsize: A number of addresses are kept in reserve by the client. This is the size of that reserve.
paytxfee: Specifies what fee the client is willing to pay to expedite transactions. Miners may choose to ignore transactions that do not pay a fee, and these fee-less transactions will have low priority on queue of pending transaction and may linger there for hours.
errors: This field may inform of different status conditions. Full list of error codes in source file bitcoinrpc.h (https://dev.visucore.com/bitcoin/doxygen/bitcoinrpc_8h_source.html) (Examples: "Bitcoin not connected", "database error", "Keypool ran out"...)

This is in addition to Dan K's answer. Since he wrote it there is a new field:
relayfee: The relay fee is also the transaction fee, but it refers to a different use than what you may know. A transaction fee is included with a transaction to encourage and reward miners for including the transaction in the blockchain. It refers to the minimum fee amount that other clients on the peer-to-peer network require in order to forward transactions to other peers. This fee is in place in order to prevent the broadcast and propogation of DDoS-like spam transactions. The relay fee is coded in a different place than the transaction fee in Bitcoin. In the past, it has also been set at a different amount than the transaction fee. For a good portion of recent Bitcoin history, the minimum transaction fee used by the Bitcoin client and by most miners was 0.0005 BTC per kB, but the minimum relay fee was coded at 0.0001 BTC. The transaction fee was then lowered, bringing them in sync.

Drew, thanks for your answer, and welcome to the bitcoin stack exchange. Since your answer isn't a full answer by itself, I would suggest you use the edit button on the accepted answer to suggest an edit. Since you are a new user, someone will review your changes before they are accepted.

unlocked_until is a new getinfo field, as well.


text:
Why not send BTC between web wallets?
In this question, Is it possible to transfer BitCoins from BlockChain to CoinBase?, the answer implies that this is a bad idea.
But for me, this raises a question.
I like to Coinbase's tools for buying BTC straight through my bank account. But I like Blockchain's tools for backing up my wallet in standard encrypted format or cold storage. I would like to be able to exchange BTC on Coinbase, and then migrate those to my wallet on Blockchain.
It seems to me that whether I happen to own both accounts is irrelevant. It seems exactly the same as any other BTC transaction. Is there actually a reason against this?
Is it possible to transfer BitCoins from BlockChain to CoinBase?

Actually, the answer on the linked question states that it is possible, but that one should be careful not to return money back to the sending address, because said sending address might not be associated with the personal wallet, but rather owned by the service itself.


text:
My Multibit wallet is empty
I had a few bitcoins in a Multibit wallet version 0.5.14 on my old computer.  I decided to start up the old computer again and transfer the bitcoins to a hard wallet.  I opened it up and there's nothing in it.  The wallet appears to have synchronized.  I can remember before I used to input a password to see what was in my wallet but that option doesn't come up anymore.  Does anybody have any advice?  Please don't be too technical in your replies.  Thanks.

Did you ever write down your wallet words (seed phrase) or make a backup of the wallet?

I did write down the wallet words.  I didn't make a backup of the wallet.

I don's see anywhere to input those seed words.

Synchronisation status
First check Multibit's synchronisation status.
It probably shows a message on the bottom left status bar "wallet synchronised with network" (perhaps depending on exact version of Multibit software)
If it isnt synchronised yet, that might explain why it doesn't show the balance you expected.

Recovery from wallet words
There are two main versions of Multibit: Classic and HD. Both are no longer supported.
To recover a wallet from your wallet words (also known as recovery phrase or seed phrase) follow the instructions at
https://multibit.org/help/hd0.1/restore-wallet.html

From the unlock screen click the "Restore" button and follow the instructions on the MultiBit HD screen.

There may be different instructions for different versions of Multibit (Classic, HD2, HD3 etc) - check the appropriate instructions for your exact version if possible.
It may take a while (days) to synchronise before it shows you a balance.

Multibit is unsupported
If your money becomes visible again, because Multibit wallet software is no longer supported, you should move your money into a different type of wallet. Multibit seem to suggest Electrum (electrum.org) - maybe that is closest to Multibit in terms of user interface? However there are many alternatives which you should probably consider.
Consider a hardware wallet or an offline-wallet/cold-wallet for longer term storage.

Yes it is synchronised with the network.  I'll take a look at the recovery phrase information you sent.  Thanks.  I'll get back to you.  Possibly not today.  My version is Multibit 0.5.14   It's an early version as I understand.

You are using Multibit Classic which never used seed phrases. If Multibit is not showing your balance then it has not loaded your wallet. You need to import the wallet backup or the key backups. You will find them in the Multibit directory.


text:
Proof of Work and Proof of Stake - Competitive advantage
It is said that Proof of Stake will be the mainstream consensus mechanism in the long run. Regarding the nature perspective I totally agree. But it has been rumoured that Proof of stake is more democratic way of having consensus since at proof of work mechanism; people who have more money can invest more to hardware so they have the competitive advantage. Again correct but if we think the other way around if you have more money and buy more Ether tokens you are again have the competitive advantage at the Proof of Stake consensus mechanism. OR am I missing something?

but if we think the other way around if you have more money and buy more Ether tokens you are again have the competitive advantage at the Proof of Stake consensus mechanism. OR am I missing something?

You're not missing anything.
Instead of people investing money in hardware, it becomes people hoarding coins and investing money into buying more coins. All that serves to do is make the rich richer and is really no better than PoW in that regard. This sort of behavior can lead to stagnation of the coin's economy as people use it less and less for transacting and keep holding more for staking.
Furthermore, Proof of Stake has problems, specifically the Nothing At Stake problem. If someone wanted to fork the blockchain, they can do so without risking their money. They can then stake on both the fork and the original at no extra cost. This is not good for the coin. But with Proof of Work, if a miner forked the blockchain, they do have something at stake: they hashrate can only be used to mine the fork or the original, so they risk losing their money if they mine on the wrong fork. Thus there is an incentive to not fork.


text:
Is my account balance publicly visible?
If I'm sending someone my wallet address, am I making my account balance visible to him?
As far as I understand, all transactions are public, which means that if I know an address, I can reconstruct the current account balance via the blockchain.

If your business partner knows your address, they can learn the transaction history and balance of that address. Often it is possible to guess or deduce that other addresses also belong to you, but this requires a bit more effort and is less reliable. However, this certainly doesn't translate to your complete wallet's balance and activity to be known.
This is why Bitcoin users are advised to generate a new address for every business interaction they have and why generally Bitcoin software makes it easy to create new addresses.

If I'm sending someone my wallet-address, am I making my account balance visible to him?

Yes.

all transactions are public, means if I know the wallet address, I
  can reconstruct the current account balance

Yes. All transactions of that address are in the blockchain, so they're public.
Owners of bitcoin addresses are not explicitly identified, but all transactions on the blockchain are public.
An address is a Bitcoin public key to which transactions can be sent.
A wallet is a collection of private keys that correspond to addresses.

means I can see how much money my business partner has?

@Chris yes, it's how the bitcoin blockchain works.

when I click on "receive" in my Bitcoin Knots app, it seems to generate a new bitcoin URI, each time I click it.

I dont know what is Bitcoin Knots app, in context of one wallet address, you can find any in\out transaction of that address.

@Chris keep in mind in bitcoin terms  address != wallet.

So, if I can have different bitcoin addresses for even each transaction, I someone cannot reconstruct the content of my wallet correct?

@Chris the last comment is unclear for me.

I found this here: A Bitcoin address is a single-use token. Like e-mail addresses, you can send bitcoins to a person by sending bitcoins to one of their addresses. However, unlike e-mail addresses, people have many different Bitcoin addresses and a unique address should be used for each transaction. https://en.bitcoin.it/wiki/Address

@Chris You can use only 1 Bitcoin address, but it is not advised. If you use multiple Bitcoin addresses, it is much harder to estimate how much money you have. Most wallets will generate a new address for every transaction to keep a certain anonymity.


text:
lnd service fails frequently
I have bitcoind and lnd set up on my Raspberry Pi according to the guide here.
Everything works great for the most part, and my node is up and running. I've been able to open a channel with another node, and other nodes have opened channel with me.
However, very often when I try to run a command against lncli the operation fails with the error [lncli] rpc error: code = Unavailable desc = grpc: the connection is unavailable. The lnd logs (sudo journalctl -f -u lnd) show:
lnd.service: Main process exited, code=exited, status=1/FAILURE
lnd.service: Unit entered failed state.
lnd.service: Failed with result 'exit-code'.

At those times, it seems like bitcoin is resyncing blocks (tail -f ./bitcoin/debug.log):
init message: Rewinding blocks...
init message: Verifying blocks...
Verifying last 6 blocks at level 3
[0%]...[16%]...[33%]...[50%]...[66%]...[83%]...[99%]...[DONE].

If I wait for the above to finish and fresh UpdateTips to start rolling in, I'm able to unlock and use lncli again.
What's actually going on here? Do I just have bad luck/timing? Does bitcoind frequently rewind blocks, causing the rpc calls to fail?

That looks like part of the initial startup sequence; Perhaps bitcoind is crashing? Might be running out of memory or some other resource. Have you checked the debug.log for more info?

The init message, etc. stuff is from bitcoin. Running out of memory actually sounds like a possibility, will check that out!

Looks like it should have enough memory:
free --mega
total        used        free      shared  buff/cache   available
Mem:            994         198          35           1         759         740
Swap:          1023          24         999

@RaghavSood looked into it, and seems like the bitcoind process crashes because of db corruption: 2018-05-11 12:23:42 LevelDB read failure: Corruption: block checksum mismatch. Doesn't seem like the pi is running out of memory, though. Any ideas what might cause corruption? Shitty external USB HDD, maybe?

It's hard to say, but there are others on this site with more experience with that kind of stuff. My best guess is that the Pi was unable to keep up at some point, and the process crashed, and corrupted some part of the db.

Yeah, I think it'll require some digging. bitcoind is able to recover the db and continue syncing after crashing, but I'm not sure why it's crashing in the first place. Might need to check the memory and hard disk for errors. Thanks for your help!

Did you able to resolve this issue? I have the same issue..I have solved these issues by adding --rpcserver flag for the commands.

@cmr in the end I switched to an Odroid with an SSD, no more failures :)


text:
What does cloud instance owned means?
I am using this website for cloud mining cryptocurrency for free. I was reading about How the Cloud Mining/Hashing Works when I came to this point in which says

(Cloud SHA-256) SHA-256 algorithm, 1.0 GHS per 1.0 cloud instance owned.
(Cloud Scrypt) Scrypt algorithm, 1.0 MHS per 1.0 cloud instance owned.

Could you explain these points in an easy way so I can understand it?

It means that for each cloud instance you own, you will get exactly 1 GHS or exactly 1 MHS, depending which type of cloud instance you own (sha256 or scrypt).


text:
Litecoin binary for Linux
Is there any LiteCoin binary precompiled for Linux?
I would prefer staticaly linked but would also dynamicaly linked a try.
A plus is given for a .deb archive, two pluses for a ppa or other possibility to integrate it into ubuntu 11.10 packagemanagement.

In the meantime I figured out how to compile this one, I will try to repeat the necessary steps in the next days on a clean Ubuntu install and post a step by step explanation here.

https://github.com/litecoin-project/litecoin/downloads ctrl-f 'linux'

(I'm trying to close some old questions.)
Litecoin has a Linux download button on it's homepage now.
As Nick Odell pointed out, you can also find the downloads on GitHub.


text:
Hashage invalide
Après une demande de retrait de btc sur mon adresse de portefeuille
L adresse de hashage n'est pas valide.
Je n'ai pas reçu les btc.
Que se passe t' il quand le hash n'est pas valide?
Google translation:

After btc withdrawal request to my wallet address The hash address is invalid. I did not receive the btc. What happens when the hash is invalid?

Some older maintained Bitcoin software may not know about newer address types. For example addresses starting with bc1.
In that case the old software won't be able to create a transaction paying to that address and the money will stay where it was.
Addresses contain a checksum, if there is a small mistake when copying the address, the checksum will not be valid and software will not attempt to create a transaction paying to a mistyped or miscopied address.


text:
HOW TO SPEND THE P2SH only use Redeemscript hex ? no private key involved
the codes i use to build the transaction
import hashlib
import base58

# Define previous transaction details
prev_txid = 'ec5596bf71a498fc944e912f0bc21f0ead3806965402d74f1d670c2fff7c08c2'
prev_index = 0  # Assuming the output you want to spend is the first output of the previous transaction
prev_amount = 0.01  # Amount of the previous transaction output

# Define output details
output_address = 'tb1qyynpskfgzq7vszgra3ehvvhvu6d3xkdjqrq652'
output_amount = 0.0099  # Sending 0.01 BTC, minus 0.0001 BTC for the fee

# Construct the input script
witness_script_hex = '76a914787be176f2618457541d957dd84d2df475b5d6ec88ac'  # Witness script
witness_script = bytes.fromhex(witness_script_hex)
witness_script_hash = hashlib.new('ripemd160', hashlib.sha256(witness_script).digest()).digest()
input_script = bytes.fromhex('160014') + witness_script_hash  # OP_0 <witness_script_hash>

# Construct the output script
output_script = bytes.fromhex('0014') + base58.b58decode(output_address)[5:]  # P2WPKH output script

# Construct the transaction
version = 1
locktime = 0
tx_in_count = 1
tx_out_count = 1

tx_in = (
    bytes.fromhex(prev_txid)[::-1] +               # prev tx id, little endian
    prev_index.to_bytes(4, byteorder='little') +   # prev index, little endian
    len(input_script).to_bytes(1, byteorder='little') +  # script length
    input_script +                                 # input script
    b'\xff\xff\xff\xff'                           # sequence, little endian (0xFFFFFFFF)
)

tx_out = (
    int(output_amount * 100000000).to_bytes(8, byteorder='little') +  # value, 8 bytes
    len(output_script).to_bytes(1, byteorder='little') +              # script length
    output_script                                                     # output script
)

# Witness data
witness = (
    len(input_script).to_bytes(1, byteorder='little') +  # witness script length
    input_script                                          # witness script
)

# Constructing the final transaction
final_tx = (
    version.to_bytes(4, byteorder='little') +      # version
    tx_in_count.to_bytes(1, byteorder='little') +  # number of inputs
    tx_in +                                       # input
    tx_out_count.to_bytes(1, byteorder='little') +  # number of outputs
    tx_out +                                      # output
    locktime.to_bytes(4, byteorder='little') +    # lock time
    b'00' +                                      # marker for SegWit transaction
    witness                                       # witness data
)

# Double SHA256 hash of the transaction
tx_hash = hashlib.sha256(hashlib.sha256(final_tx).digest()).digest()

# Constructing the final transaction in hex format
final_tx_hex = final_tx.hex() + tx_hash.hex()

print("Unsigned Transaction Hex:")
print(final_tx_hex)

and result rawtransaction is

0100000001c2087cff2f0c671d4fd70254960638ad0e1fc20b2f914e94fc98a471bf9655ec00000000171600141ee06adc3ff6103b173eef823f8612345d3919d5ffffffff01301b0f00000000001c00141e2361ff02e8b850288e0b3a07f4420743b1deec45d744ced1ad000000003030171600141ee06adc3ff6103b173eef823f8612345d3919d5292a3cc2d63078d6441f02a42edc1be8debddf288fbb836bba289b1b266eb183

and gives rejection
Error validating transaction: witness redeem script detected in tx without witness data.
I got confused fixing the tx without witness data, anyone can help me ?

A few observations

You refer to P2SH but the witness data suggests you intend something else
like P2WSH or P2SH-P2WSH etc?
The witness marker and flag go after the version number.
I suspect you want your marker to be b'\x00\x01 not b'00'
The locktime goes after any witness data.
You seem to be using input_script in both the input and the witness.
AFAIK, if your sole input is really a P2SH output you shouldn't have any witness markers or other witness fields in the spending transaction.

P2SH Address: 2NBHpMh4gZNPAn79dxJ6ELm7kUhRYvd61zv
Redeem Script: 14751e76e8199196d454941c45d1b3a323f1433bd688
Unlocking Script: 5114751e76e8199196d454941c45d1b3a323f1433bd6
Witness Script: 5114751e76e8199196d454941c45d1b3a323f1433bd614751e76e8199196d454941c45d1b3a323f1433bd688
can you help me please, to spend that address fund on testnet network, i make that address without involving any private key.

can you provide the codes to spend that ?
i build anything on python from scratch, still trying and frustrated.

https://siminchen.github.io/bitcoinIDE/build/editor.html#
i check the 5114751e76e8199196d454941c45d1b3a323f1433bd614751e76e8199196d454941c45d1b3a323f1433bd688
it can be push on that stack, it should unlock the UTXO and can spend the fund

OP_1 751e76e8199196d454941c45d1b3a323f1433bd6 751e76e8199196d454941c45d1b3a323f1433bd6 OP_EQUALVERIFY


text:
Can a Bitcoin node send messages to a program on the same machine?
I`m currently programming some TCP communication in my custom Bitcoin client. I am wondering if it is possible for the official client to communicate with it if they are sitting on the same machine? For example, if I'd send a version message to localhost:8333 claiming my return address is localhost:8332, will the standard client respond as if it was communicating with a node on the internet?

Yes and no.  Don't use 8332 for your custom client's communication port, that is the default rpcport.
You can run an arbitrary number of bitcoind instances on your machine, as long as they are given different -port= and -rpcport= arguments, and they can all communicate with each other (using -addnode=127.0.0.1:...port... or -connect=127.0.0.1:...port... ).


text:
Bitcoin over HTTP?
Are there any implementations of a Bitcoin client that would run over HTTP, allowing one to communicate by, for example, sending raw message bytes as a POST?
Edit:
I'm not looking for ways to control a Bitcoin client remotely, for example telling it to send some of the coins it is holding, encrypt a wallet or the like. What I want to find is a server that takes HTTP calls and answers back similarly to how the Bitcoin client would. For example, providing its block chain, exchanging list of pending transactions, accepting signed transactions from outside, etc.

This would be useful for operating within something like a corporate intranet where the firewall blocks most traffic.

Or for servers that don't allow for TCP/IP connectivity (for example, I'm struggling with Google App Engine, probably in the end I'll create some web service that will bridge between TCP/IP and HTTP).

See also related or identical question I just asked: http://bitcoin.stackexchange.com/questions/2333/is-there-a-remote-bitcoin-api-that-doesnt-require-anything-to-be-stored-locally

The exit node part of BitcoinJS is sort of what you're looking for. Quote from wiki:

There are two main ways clients can interact with exit nodes:

REST API – HTTPS-based asynchronous API usable with almost any
  language or platform.
Socket API – Socket-based API providing realtime
  data events via JSON-RPC and – using Socket.IO – even for pure
  browser-based clients.

Example of using the REST API:
https://exit.trucoin.com:3125/pubkeys/register?keys=1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
registers a public key to get a handle.
https://exit.trucoin.com:3125/pubkeys/gettxs?handle=ManS6KcKCR1lpY0qCPiDOr9ej6HXQcVADFOMOGaMuD4=
uses that handle to get the transactions of the address.
It should also be possible to send a transaction but that part is not very well documented.

To the best of my knowledge, there is not. I did, however (shameless plug) contribute some Python scripts to the official client a while back which could easily be coupled with Python's very simple HTTP Server module to perform the tasks you're after. I know it's more of a workaround than an official in-client feature, but it should work.


text:
Signing Bitcoin transactions
There is a part of the Bitcoin protocol that I don't quite understand.
When you make a transaction, and spend the output of a previous transaction for say 1 BTC, you provide a signature using the private key matching the public key (or address) that appears in the output of the previous transaction. My first question here is what exactly is signed?
Second, when the transaction is broadcast, what prevents a malicious peer to take the input of my transaction with signature, for 1 BTC, and forge a new transaction using that same input going to their own address? To avoid that, the full transaction (including outputs) would need to be signed, I couldn't find a document indicating the whole transaction is signed.

Yeah great question, I asked myself the same question but I found the answer looking all the transcations wiki.

That is good question, I'm asking the same and can't understand how outputs list is protected, it looks like outputs signed with public key, but public keys are not secure.

good question. It is really hard to find a documentation of what exactly is signed in bitcoin transactions!

From what I gather you sign both the input and the output of the transaction, meaning that nobody can alter the content of the transaction without invalidating your signature. I also had some problems with this part of the algorithm, and even asked a similar question earlier, but this one deals with more of the low-level bit operations rather than the high-level concept.

What is being signed is indeed (a modified version of) the entire transaction. The details are complex (see the question linked to be the answer), but most importantly, the transaction inputs are stripped before signing (as otherwise, the signature would need to sign itself before signing, which is computationally infeasible).

Thanks, that makes sense. So if there are 3 inputs in a transaction, each input will contain a signature (they may be 3 different signatures) of the whole transaction (minus the inputs), correct?


text:
What is the maximum number of signature check operations a transaction script can request?
As transaction size, the number of signature checks per transaction can affect client performance and the inclusion of many O_CHECKSIG opcodes could be used as a tool for denial-of-service attacks.
I found in CTransaction::AcceptToMemoryPool() the following check:
// Rather not work on nonstandard transactions
    if (GetSigOpCount() > 2 || ::GetSerializeSize(*this, SER_NETWORK) < 100)
        return error("AcceptToMemoryPool() : nonstandard transaction");
Then I suppose the OP_CHECKSIG limit is 2, which is fine for security but this limit prevents users from using the advanced contracts Bitcoin is suppose to allow.
Also there is the limit imposed by MAX_BLOCK_SIGOPS, but the limit applies to whole blocks, and only indirectly limit the sigops of a single transaction.

The error for nonstandard transaction is simply because they are not yet supported by mainline client.  Remember as writing Bitcoin is only version 0.4 so significat portions of the protocol have not been implemented yet.
You will notice the error being thrown is "non standard transaction" which is indicating the client doesn't have support for creating or validating non-standard transactions.
Standard transactions are those with scriptPubKey of:

 OP_CHECKSIG  - transfer to IP Address OP_DUP OP_HASH160
 OP_EQUALVERIFY OP_CHECKSIG - transfer to Bitcoin Address
(hash of public key)

The only other transaction type supported is generation transaction which doesn't have a scriptPubKey to identify it.  It is easily identified because every valid block must always have one and only one coinbase transaction.
Contracts are non-standard transactions and not supported by the client yet.  The code snippet is simply to prevent client from attempting to process, broacast or validate non-standard transactions.


text:
Need help, understanding bitcoin value protection
I'm not understanding how to protect my bitcoin value from inflation.  IF I purchase bitcoins with US dollars, how to I educate myself to how to protect the value of my bitcoins in my wallet so that those bitcoins do not lose value, compared to the USD I used to buy them?  I'm not looking to use bitcoins as an investment, I just want to know that when I buy and spend bitcoins, their purchasing power is at par with my original USD or higher.  How do I educate myself to achieve this?  Sources/resources/your personal information.   ???

I'm not sure what's being asked here, and if it has't been asked before on this forum.

The value of Bitcoins will fluctuate against the dollar -- for a number of reasons, including the price rising as the result of speculation or from demand for the currency.  The price can and has dropped -- for various reasons as well.
If you want to hold bitcoins, then you expose yourself to those fluctuations.
If you simply want to use bitcoins for spending without exposure to the fluctuations, here's one method: When you add money to a bitcoin exchange, leave those funds as USDs and only exchange some of those funds to bitcoins at the time that you plan to make your purchase which uses bitcoins.
That way you are not exposed to the exchange rate fluctuations.  Do keep in mind that when holding funds at a bitcoin exchange you are trusting that the operator of the exchange is administering properly and keeping your funds (your USDs and your BTCs) safe.

Oh, and at some point there will be financial derivatives that will enable protections against the fluctuations.  For instance, options are one instrument that let you "lock in" at a certain price, for a fee of course.

Leaving them as USD is as much of a gamble as buying BTC: you are either gambling for the exchange rate to go up or to go down.

@Lohoris: A dollar has a relatively stable purchasing power. A bitcoin does not. Keeping your dollars is low risk; buying or shorting bitcoins is high risk.

Investing in Bitcoin is speculation just like most other form of investments. Assume, you only have two options, USD and BTC, the are two possible outcomes:

The value of BTC goes up against USD. Thus, you win, if you bet all your money on BTC.
The value of BTC drops against USD. In this situation, you loose if you invest in BTC.

They are investment strategies to limit the possible losses. You could try the following strategy:

Buy 1 USD worth of BTC.
State: "In the worst case, I do not want to loose more than 10% of my investment (in USD)"
State: "The yearly inflation rate is 1%"
Now, your stop-loss price for your BTC, is 0.9 * 1USD * 1.01^y, where y is the time in years since you have bought your BTC (for 1USD). Initially, this is 0.90USD, rising as the inflation goes.
Constantly observe the rate at which you could sell your bitcoin (after all fees). Initially, this is about 1USD (neglecting fees). If this price falls below the stop-loss price, you sell your BTC.

This was you are immune to market risks and (USD) inflation.

Inflation would increase the value of your Bitcoins. Inflation means the dollars you used to buy the Bitcoins are worth less, thus if the value of the Bitcoins holds steady, they are now worth more dollars.
What you would need protection against is deflation, the dollar gaining value, or the value of Bitcoins dropping due to changes in supply, demand, and hype.


text:
When backing up a wallet, is it required to shut down the bitcoin client?
I am building a website, and would like to backup my wallet.dat file after every transaction occurs, but I would not like to have to shut down bitcoind every time I make a backup.
The common wisdom seems to be that you should shut down your bitcoin client when making a backup, but that doesn't seem absolutely necessary as long as the wallet has been fully written to and flushed to disk.
Would locking the wallet be enough to ensure that the wallet has been written to before making a backup? Are there any other techniques that websites typically deploy for making "hot backups"?

You might want to check out Stratum - it's (one of several) infrastructures being built for thin clients, including thin web servers with no wallet management required. https://bitcointalk.org/index.php?topic=55842.0

The Bitcoin client's RPC interface provides a wallet backup command. It's "backupwallet <filename>".


text:
Acces Casa full node with Python
I have a bitcoin-core full node running and I want to access my node in Python, how can I retrieve the blockchain info?

You can use RPC bitcoin framework for creating the request to the node to get information.
With python exist more library, I preferer this python-bitcoinrpc but a list the library is here
For configuring the node to accepting the request look this reference
other util references

Complete bitcoin.conf file
Gui generator bitcoin.conf
Api reference with other language
Official documantation command rpc

I try to establish a rpc connection with the AuthServiceProxy method from bitcoinrpc with the following parameters:  AuthServiceProxy ("http://casa-node.lan:mycasapassword@mycasaip:8332") but I get no acces.

Do you have an error in the stack-trace python? if you want an example for using the library, I wrote this simple script for creating a simple console GUI this is the code if you have an error with my code, please public your bitcoin.conf and your bitcoin configuration


text:
How could be useful the softforks field that provides the RPC command getblockchaininfo?
When I execute the command getblockchaininfo I see useful information but I don't understand how to be useful the information that is displayed through field softforks, the example below:
bitcoin-cli getblockchaininfo
  "chain": "main",
  "blocks": 623195,
  "headers": 623195,
  "bestblockhash": "00000000000000000010596cbf2767824bbb4828b331f2533938f1650ba96202",
  "difficulty": 13912524048945.91,
  "mediantime": 1585317240,
  "verificationprogress": 0.9999826836456495,
  "initialblockdownload": false,
  "chainwork": "00000000000000000000000000000000000000000df5647c802d85a8d1fea0b0",
  "size_on_disk": 305751602545,
  "pruned": false,
  "**softforks**": {
    "bip34": {
      "type": "buried",
      "active": true,
      "height": 227931
    },
    "bip66": {
      "type": "buried",
      "active": true,
      "height": 363725
    },
    "bip65": {
      "type": "buried",
      "active": true,
      "height": 388381
    },
    "csv": {
      "type": "buried",
      "active": true,
      "height": 419328
    },
    "segwit": {
      "type": "buried",
      "active": true,
      "height": 481824
    }
  },
  "warnings": ""
}


text:
RPCConvertValues() call error
I'd like to call RPC programmatically, instead of using bitcoin-cli. when I call the function  RPCConvertValues(), it always raise error
RPCConvertValues() is defined here : https://github.com/bitcoin/bitcoin/blob/cab94cc07489f704c4b95171b23be0e8025df794/src/rpc/client.cpp#L221
test code are here :
https://github.com/bitcoin/bitcoin/blob/46fc4d1a24c88e797d6080336e3828e45e39c3fd/src/test/rpc_tests.cpp#L319
https://github.com/bitcoin/bitcoin/blob/7967104aee055476107dc17265cefc4ae4e75378/src/bitcoin-cli.cpp#L293
https://github.com/bitcoin/bitcoin/blob/eb292af309aa57f3d7998b01307dd4cb91702908/src/qt/rpcconsole.cpp#L302
My test code :
#include <iostream>
#include <rpc/blockchain.cpp>
#include <rpc/request.h>
#include <rpc/client.h>
#include <rpc/util.h>
#include <univalue/include/univalue.h>
#include <interfaces/node.h>

namespace experimental {
    void wait(int seconds) { boost::this_thread::sleep(boost::posix_time::seconds(seconds)); }

    void rpcgetblockhash() {
        wait(30);
        std::cout << "getblockhash RPC CALL!!" << std::endl;

        interfaces::Node* node;
        UniValue params = RPCConvertValues("getblockhash", {"0"}); // occurred error
    }
}

Occurred error :

I think that both are same between my function call form and function form of specified link above. I don't know why I'm getting error. can you give some guide?


text:
Will ripple automagically use the ordebook when finding a path?
I have a question regarding this scenario.

A (test-gateway)

28000 XRP in balance

B (user1)

trust line with A for 1000 USD
400 XRP in balance

C (user2)

trust line with bitstamp for 100 BTC
400 XRP in balance

A issues 100 USD/A to B

B now holds 100 USD/A in the balance

A open a trade giving 10 XRP for 1 USD/A
B wants to send 0.1 BTC/bitstamp to C using his USD/A IOUs as source.

Will ripple do this?
  USD/A => XRP => BTC/bitstamp
Because i can't make it work.
C has a trust line to bitstamp.
B has no trust line with bitstamp, should it have one?
(there's a lot liquidity XRP<=>BTC/bitstamp in the order book)

There is a missing piece in your picture, the trade offers selling BTC/Bitstamp for XRP. The values you give won't work currently since the best offers in the order book are in the range of 8300 XRP/BTC or 830 XRP for the 0.1 BTC you mention.
If the values you give were adjusted or if we assumed an alternate reality where 10 XRP could buy 0.1 BTC/Bitstamp then the following should (see note at bottom*) be what a user would see if they were to go to the client's "send" page (sorry no picture):
Recipient: C
Recipient will receive: 0.1 BTC
You can send:
    10.000 XRP  <Send XRP button>
    1.00 USD    <Send USD button>

Since User B has no BTC there is no BTC option given. If the user selects "Send XRP" then a payment path such as the following would be used:
User B 10.000 XRP
   --> trade offer for 10XRP to 0.1 BTC/Bitstamp
   --> Bitstamp
   --> User C

User B's balance goes down by 10.000 XRP. The unknown person making the trade offer has their balance go up by 10 XRP and down by 0.1 BTC/Bitstamp. Bitstamp's balances are adjusted so that 0.1 BTC less is "owed" to the trader and 0.1 BTC more is "owed" to User C. User C's balance goes up by 0.1 BTC/Bitstamp.
If instead User A selects "Send USD" then a payment path such as the following would be used:
User B 1.00 USD/A
    --> User A's offer giving 10.000 XRP for 1.00 USD
    [then as above]
   --> trade offer for 10XRP to 0.1 BTC/Bitstamp
   --> Bitstamp
   --> User C

User B's balance goes down by 1.00 USD/A. User A's balance goes up by 1.00 USD/A (they owe one less USD to User B) and User A's balance goes down by 10.000 XRP. Then it's as in the previous case: The unknown person making the trade offer has their balance go up by 10 XRP and down by 0.1 BTC/Bitstamp. Bitstamp's balances are adjusted so that 0.1 BTC less is "owed" to the trader and 0.1 BTC more is "owed" to User C. User C's balance goes up by 0.1 BTC/Bitstamp.
In both cases User C considers the payment from User A complete by ending up with a larger balance with Bitstamp. All of these balance changes happen atomically within a single transaction, either all the balances change or none of them do (e.g. if the transaction fails because a required trade offer is consumed or canceled before this transaction can be processed). User B never ends up holding something they didn't want to hold (e.g. BTC/Bitstamp).

Note that path finding in Ripple is not exhaustive, not all valid paths are found. As David Schwartz says above, pathfinding is an area they are constantly improving. If the option to pay with USD as shown above is not presented currently then it's likely it will be as the pathfinding is improved.

Also note that I omitted Bitstamp's 0.2% transfer fee for simplicity. The above values would work for sending 1/1.002 =~ 0.998 BTC at a cost of 0.1 BTC/Bitstamp==10 XRP

Oh and I also neglected the 0.000010 XRP transaction fee that will be subtracted from User B's balance when the transaction is confirmed and submitted (even if the transaction fails as described above; in that case the only balance changed will be the XRP balance of User A and only by the tx fee amount).

Short answer is: Yes. For longer detailed explanation please see http://ripple.com/wiki

It's also not clear what article on the wiki we're supposed to be looking at.

Pathfinding is an area we are constantly improving.

@DavidSchwartz theoretically the answer is correct? Maybe is not working for some reason?

@Matu: Possibly. I'm not quite sure I completely follow your scenario. For example, it's not clear which party is extending trust.

@DavidSchwartz i have added an image to clarify the scenario


text:
How does Bitcoin comply to GDPR
Update: This related question focusses on users own data. My question is mostly asked from the perspective where a person may enter someone elses personal data, like someones sexual preference.

In the data world GDPR is currently a very hot topic:

personal data must be protected and not retained too long.

For normal companies and systems it is already very difficult to meet the letter of the regulation in practice, however I image that for bitcoin it is even challenging on a much deeper level. Two core principles:

Data must be visible by all
The full history must be preserved

This brings me to a question:
How does Bitcoin respond to the introduction of GDPR?

And as bonus question:
What does this mean for other blockchain applications (like corporate concepts, not specifically for currencies)

As an aside, the core functions of the bitcoin network are incredibly conservative in regards to adopting changes. So when talking about the GDPR it is important to understand the regulations of one nation (or group of nations) will likely have no affect on the bitcoin network's rules and function. In general, changes to bitcoin are delivered bottom-up, from the users. Whereas regulations are delivered top-down, from the regulators. Bitcoin users and businesses may be subject to GDPR though, so I suppose it is still a discussion worth having.

Possible duplicate of Blockchain and user rights to ask for personal data removal

@NateEldredge I have added a comment to focus on a part that most interests me, and is not really addressed in the linked question. I think it is no longer a duplicate.

If your use of technology X does not comply with an applicable law Y, you either stop using technology X or pay the fines until jailed.

Very simply, if a person stores the personal data of another (or, of their own, or, any data) then the law is upon the first party to comply with GDPR or any other law applicable. Bitcoin itself being a series of independently operated nodes connecting to and accessing a consensus operated immutable public storage medium.
I argue that your own public key (& signatures and, so on, as is related to Bitcoin, created for the purpose, when necessary, of being stored in the blockchain) cannot possibly be considered personal data in the view of GDPR.

How does Bitcoin respond to the introduction of GDPR?

Bitcoin is not a person or legal entity that is subject to law. Only people or businesses using bitcoin have to comply with GDPR.
So far as I know, storage of personal information is not a part of the specifications of the protocols or algorithms that comprise Bitcoin.
Specific pieces of software might allow you to store personal information. For example, wallet software might enable you to keep a list of people, addresses of their bitcoin wallets and your text notes about them. The users are responsible for complying with GDPR. The software writers are only responsible for enabling this compliance (e.g. providing a delete function or something else GDPR compliance needs). The prime reposbility is with the user, if the software they use cannot be used in a way that complies with GDPR they must find other software.

The use of Bitcoin is a inherently an opt-in privacy model, versus not an opt-out privacy model.  Additionally, Bitcoin stealth transactions can be applied twice to effectively provide sender privacy until secp256k1 cryptography is potentially be broken by factoring. Privacy exposure on public blockchains are essentially forever, there is no recourse.

This explains further why the question is not easy to solve, but I don't really see an answer on what is/should be done.

There is currently no silver bullet solution; hence, everyone is fretting.  Lawyers and consultants also get a nice size window to make tons of money.


text:
Using bitcoinj to discover peers and download the block chain
I'm sorry everyone, I have looked and stared at the API and I'm coming up with nothing.
I've got a public static void main (naturally), but have no idea how to:

Connect to the network
Download the block chain
Navigate through it.

The purpose of this is to keep the block chain as a record of transactions and perform reporting on my own transactions. I don't have my wallet on the same machine.
Unfortunately for me, my ability to read the api is still underdeveloped, and the various pages I've seen don't really go step by dummy step.
Most important of the above steps is, how to get the block chain...

The class WalletAppKit is a good start. Here's a snippet of code that dumps the most recent block, you can probably take it from here. It will take a while to download the block chain and then it will print out the most recent transactions.
public class DumpLastBlock {
public static void main(String args[]) throws Exception {
    WalletAppKit kit = new WalletAppKit(MainNetParams.get(), new java.io.File("."), "test");
    kit.startAndWait();
    BlockChain chain = kit.chain();
    BlockStore bs = chain.getBlockStore();
    Peer peer = kit.peerGroup().getDownloadPeer();
    Block b = peer.getBlock(bs.getChainHead().getHeader().getHash()).get();
    System.out.println(b);
}
}


text:
Is there a standard procedure for refunding Bitcoin transactions?
I work for an online retailer, and we're currently testing a Coinbase payment implementation for our checkout. One of our big concerns is being able to send a refund in the event that we're unable to ship an item on time, or if a customer cancels an order, or for whatever other reason.
There are a few things that I've managed to find out, but I'm still confused.

Coinbase's API (relevant docs here and here) doesn't seem to have a way for us to find the address of the wallet or account that the payment for an order was sent from.
Even if it did have a "Sender Address" response, this question/answer makes it pretty clear that using that would probably not be a good idea.

So what options do we have for issuing a refund? I can think of at least a few... each has its own downsides though.

If an order can't be delivered on time, contact them and ask for an address to send BTC to.

We do get contact information (Phone, Email, and Address) when they check out - but we can't perfectly verify it.
We may be stuck in limbo if we can't get in touch with the customer.

At checkout, ask for an address to send any refunds to with a "just in case" note explaining why we're asking for that.

As far as I know, nobody does this.
Some users may have privacy concerns when they see us asking for a wallet address.

Mail a check for dollar value of the transaction to the address provided at checkout.

Again, we do get a customer's address - but we can't verify it to be 100% accurate.
Let's be honest, this really doesn't seem like a good idea at all.

Are there better ways? Is there, universe willing, a standard way of refunding transactions?

As of right now, there is not a standard way to return other than to ask the returnee for an address to which the returner can send. You could ask for them to verify the address by signing some text with its private key, however, users of web wallets are at a disadvantage because not all wallets provide this functionality.
It is too onerous to ask for a return address at the time of sale, because a conscientious user would have to create a new address for each sale's return address. Managing these would grow difficult over time.
Issuing store credit with the option to cash it out via a variety of methods is probably worth consideration, as it prioritizes consumer choice. If I'm ordering from a company from which I order frequently (e.g. Amazon) or I know that I'm going to reorder later, I'll take the store credit and save the management time. Otherwise, I'll cash out the bitcoin and find another vendor who can meet my needs.
Update 21 Feb 2014: Bitpay announced today that Bitpay is now supporting BIP70-73 payment protocol, which includes refund addresses.

Thanks for that confirmation. Store Credit is definitely on the table as well.

Don't be afraid to apply pressure to Coinbase about this, too. Your company's core competency is selling stuff, their core competency is shuffling money. They should be able to work out a solution, which may include asking the user to create an account so they can receive refunds if necessary.

I've sent an email to our contact at Coinbase with essentially this question, copy/pasta'd. Their API does allow Coinbase users to just log in and make a payment, but there's no refund API even when it's a Coinbase member (Unlike Paypal, CC processors, etc).

No,  but there is talk about it in the future.
With google / bing   there are just "talks" about it.   Nothing concrete so I cannot provide a answer with solid information.    So no standard as of yet.   Many will pop up as middle men for the purchase.   Many will fail, but it is bound to happen.
Currently Overstock.com has this statement:
http://www.cryptocoinsnews.com/2014/01/09/bitcoin-payments-live-overstock/
King of Bitcoin    http://letstalkbitcoin.com/author/andreas/#.UuksmxBdV9k

Please [edit] your answer with references and more information. What kind of solutions are being talked about? Who is talking about it?

Purpose of down-voting is for a plain wrong proven to be wrong answer.   e.g.   3 + 4 = 9   ....  Proven to be wrong.   Lacking information is no reason to downvote.   This has been shown in StackOverflow as why so many people are afraid the answer questions or ask questions.   This is also why Facebook has no down voting (dislikes , only likes)

That's nice, but I wasn't the one who downvoted your answer. Either way, I disagree with what you're saying - I think downvotes are completely appropriate for answers that an individual feels are incomplete. You can downvote if you feel that, as it says on the downvote button's title, "This answer is not useful".

Knock yourself out then   LOL.   You disagree with "There is talk about it in the future"  ????  LOL   OMG   So you disagree that people are talking about it?

I disagree with your opinion on downvotes, not your answer. Although the link you've added to your answer does not expand its usefulness in a meaningful way. Are there any references you could provide as background to support your answer?

@TomStickel I downvoted as I felt that this answer wasn't useful. The original issue with it was that it only binarily addressed the title of the question, but offered no help on solving the stated problem, i.e. was literally not useful. Now, with the edits you have made, you have added speculation, as well as links to one company's procedure and to a bio. After reading the Overstock's statement, one can learn that they use in-store credit for refunds. (Which you should just have written, in addition to providing the link as source.) The motivation for the second link remains unclear.

Sorry you feel that way.  If you are not following Andreas, who was to the big name worldwide , even on Joe Rogan's show the other day ,... then you won't see and hear what is being talked about.   "No , but there is talk about it in the future."   This means you have to dig..   Podcasts and tons of forums ... this is NOT sorted out yet.  Example is Overstock.com in that they are not refunding in bitcoin as of yet

People commenting SHOULD have answers plain and simple.


text:
Lost Exchange Account
I transferred some bitcoin from my coinbase account to another exchange to purchase some ethereum.  At that time coinbase did not have ethereum.  However, I do not remember the exchange that I used.  I have the exchange password written down in a secure location so if I can track which exchange I sent it to I can recover the ETH.  The transfer from coinbase is listed on the coinbase website.  Is there a way for me to use the wallet ID which I sent the BTC to to find out which exchange is holding my ETH?
Thanks in advance for your assistance in helping me overcome my own disorganization.

Man, maybe the answer will shock you, but... your amount of crypto is probably lost.
I say ''probably'' and not for sure.
the options may be 2:
1. the transaction was too small, so miners didn't pick it
2. it's fault of the exchange
I don't suggest you to use coinbase, I suggest you buy on spectrocoin -> https://spectrocoin.com/en/
And to trade from crypto to crypto using Binance -> https://www.binance.com/?ref=16821839
Anyway here's a guide to choose the best exchange -> https://medium.com/@bitfinexed/coinbase-insider-trading-litecoin-edition-be64ead3facc


text:
How long will it take my Coinbase account to reflect my deposit?
How long will it take a Coinbase account to reflect my deposited Bitcoin?


text:
How can nodes verify the transactions before miner ? Give me easy explaination
If Alice sends 2 Bitcoin, it goes to the nodes to be verified. If nodes are verifying, then what do miners do? I read somewhere that if miner changes the transactions in a block, the block will be invalid. How can miner change the transactions in a block?

Contrary to popular belief, it is not the miners' job to verify transactions. Rather it is the job of the full nodes on the network to verify the transactions, and miners are a subset of that (i.e. miners are also full nodes). Rather miners only exist to establish the ordering of transactions, within certain restrictions.
Full nodes can verify transactions without them being a block and without mining a block because the process of mining does not alter the transaction. A full nodes merely needs to know the transactions that a given transaction spends from in order to determine whether the transaction is valid. Miners must do the same thing so that they only include valid transactions in their blocks.
What miners exist to do is to establish the ordering of transactions. They are not there to say that a transaction is valid. Rather what they do is, when given two transactions that conflict with each other, say which one is "first" and thus the one that everyone else should believe. Bitcoin uses a first come, first serve system, and miners are only here to say which transaction was first. The two conflicting transactions must be valid as transaction validity is a precondition for this conflict resolution.

I read somewhere that if miner changes the transactions in a block, the block will be invalid. How can miner change the transactions in a block?

A transaction is just data. Anyone can alter data that they have. If a miner alters a transaction and includes it in his block, the transaction will be invalid and all full nodes on the network will reject it.

Then how can nodes verify transaction without taking that transaction to block ? And how can miners verify it ?

There is no need for a transaction to be in a block. Everything that is needed to verify a transaction is available before that transaction is included in a block.

So how can ordering of transactions is done by miners and nodes i am new here about bitcoin so?

The blockchain establishes the ordering of transactions. Miners are the ones who add blocks to the blockchain, thus miners are the ones who order the transactions.


text:
salvagewallet is not in the Bitcoin Core Console
I want to try the -salvagewallet command, but it is not in the console. What is the command line syntax?

-salvagewallet is not a command that is run from the debug console. It is not one of Bitcoin Core's RPC calls. Rather -salvagewallet is a command line option. You set it in the command that is used to run Bitcoin Core or you set it in the bitcoin.conf file by adding salvagewallet=1 to the bitcoin.conf file and then starting Bitcoin Core.
Note that -salvagewallet does not always work and sometimes may result in corruption of your wallet if it is not already corrupted. It is only as a last resort option. You should always make a backup of your wallet file prior to starting Bitcoin Core with -salvagewallet.

It has been suggested to rename it to -savagewallet.


text:
How can I protect my privacy?
Let's say I want to send BTC to a friend. This friend can now explore the blockchain and find how much money I have or what other purchase I've done or will do. What can I do in order to prevent him from being able to do that or see all of that information? Will changing my public key help, or can he figure out that all the keys belong to the same wallet if they are used in the same transaction?

The simplest way is to not reuse addresses, something that wallets do by default anyways. Every time you want to receive Bitcoin, get a new address from your wallet and give that to whoever is sending you Bitcoin. You typically do this by going to the "Receive" page or tab in your wallet and clicking "Receive Bitcoin" (or similar). By doing so, the sender will not know how much money you have in your wallet and they won't be able to see all of your transactions.
When you send Bitcoin, you should also use new change addresses every time. This is the default behavior in wallets so this is not something you need to do manually or worry about.
By not reusing addresses, it is harder to link your transactions to you and it makes it more difficult for everyone you transact with (both receive and send) to know how much money you have and who you are sending money to or receiving money from.


text:
Can I connect to Litecoin, Dash, BitcoinCash, Doge, etc. RPC with Bitcoin RPC client?
I want to set up a few nodes for different Bitcoin-derived cryptocurrencies and regularly query them for data via the JSON-RPC API.
The thing is: I can't find much information on any other RPC API except for Bitcoin one. I'm assuming it's because all the Bitcoin-derived cryptocurrency nodes have the same API. So, can I just use, for instance, Python Bitcoin JSON-RPC client to connect to all of them just by changing connection strings?
Sorry for the sloppy wording and stuff. I'm just stunned that there's so little information I was able to find.

Yes, you should be able to use a Bitcoin JSON-RPC client to interact with JSON-RPC servers for other cryptocurrencies if they are using software that is based on Bitcoin Core (which most are). Such JSON-RPC clients and libraries don't really have anything in them that is Bitcoin specific; they just handle the connection to the RPC server for you and return you the JSON formatted result.


text:
Does the Share Difficulty given to each miner matter?
I am running two 7970's and am adding a 3rd here in a few days (Mainly a Gaming Rig)but mining when I am not gaming.  I was wondering though does the minimum share difficulty that BTCguild sends to my miners make a difference?  Currently it is just the default of 1 but can go all the way up to 256 share difficulty. What is going to yield the best results for my hardware?
I am still quite new so any other advise is appreciated!

Increasing your submission difficulty will reduce the number of shares you submit, in turn reducing your bandwidth costs and your pool's bandwidth requirements.
The downside for you as a miner is that increasing your share submission difficulty increases your variance in earnings. If you mine at a pool with user determined share submission difficulty (such as HHTT and Itzod) then it's up to you to decide how much variance you can bear. I've covered in detail the amount by which your earnings variance increases with increasing share difficulty elsewhere, and you may want to look there for specific details.
Otherwise, at pools which automatically change submission difficulty to keep you submitting at a constant number of shares per minute, the variance should not be noticeable over an hour, and definitely not noticeable over a day.

Share difficulty is important to prove your computer is doing the work of mining.
You would set a higher difficulty on powerful hardware (ASICs) so that they don't need to request a new share (GetBlockTemplate, GetWork, Stratum, etc) each time.
The result is that your hardware is more active in the mining process, and less active waiting on the network or pool to give you work to do.
On the other hand, you don't want to wait too long for new work (too high difficulty) because that means you will miss out on new transactions (that pay fees), or worst case you will miss out on the block entirely and the work is wasted.

Thank you very much, Sounds like I should just leave it on 1 for the time being then since I am only hashing at like 650 mhash/s per GPU.


text:
Can I use a single Hardware Ledger for multiple coins
I am about to buy a hardware ledger to store my coins but I was wondering if I would be needing one ledger per coin I own or if one can hold all or some.

Yes, you can use a single Ledger for multiple coins.
Here is the list of supported coins.

Follow up. I see X coin coming soon. Is this a firmware upgrade that just adds support to another coin?

Never mind, saw it at the end of the site :)

Firmware update :)


text:
How to recover Bitcoin sent to example address on Bitcoin.org info page
Please,
I am very new and accidentally loaded funds into a sample wallet on the Bitcoin.org information site instead of my personal wallet.
This happened October 11, 2018.
Would you please help me.
Candace

Can you provide any more information like the address or how you loaded the funds

Absolutely I have screen shots of everything - how can I send you the screenshots

Welcome to this site. This is a question answer site meant to be a helpful reference, and not really a one-on-one help site. Anything you can needs to be in the question so it will be helpful for others in the future. If there is any sensitive information such as email address or private keys do not post it.

I have my buy crypto receipt and the address of the sample wallet from the bitcoin.org site.  So far I have been told to contact Bitcoin.org directly with no luck

where did you buy the bitcoin? And did you send it to the sample address?

Ok thanks - I loaded it at a ATM Bitcoin and loaded the funds to the following — 1AYPXMZYp5ZQvMv8cyVttjnTEONmbwCF2x

Completed Oct 11/18   10:49:48 Crypto 0.20768 BTC

Thank you so much for even responding.   I have been working at this for almost a month already.   I am obviously very new

This sample wallet is on the Coin Space Page of the Bitcoin.org information web site

@CandaceMcDonald: 1AYPXMZYp5ZQvMv8cyVttjnTEONmbwCF2x is not a valid address.  Are you sure you copied it correctly?  Also, did you get a transaction ID on your receipt?  (It would be 64 digits 0-9 and a-f).

It is a sample wallet on the Coin Space Page of Bitcoin.org site.   I thought I had downloaded a wallet and it turned out to just be a picture of a sample wallet

I’m sure the physical receipt is at home

@NateEldredge I think it is a valid address. I believe the TXID in question is e608ad0e1e0d562c8557e2e3b2008d08b0a29d5411bab3d198e25c495629c61e

@KappaDev: Ah, they're slightly different.  Guess there were some typos.

Your coins are gone.  Sorry.
As KappaDev found, the transaction was confirmed, so it cannot be reversed.  The only way those coins can possibly be accessed now is by whoever generated that address, if they still have the private key.  It could have been someone working on the web page at bitcoin.org, or it could have been someone from coinspace who provided the image.  (I wasn't able to find any image on bitcoin.org with that address in it.)
However, you can see here that several other people sent coins to that address, as far back as 2016.  None of them have ever been spent.  So it's likely that whoever generated the address no longer has the private key, or never saved it in the first place, or at any rate has no intention of using it.  And even if they did, you would have no way to force them to give the coins back to you.