text:
What are the risks of using Strongcoin.com as an online wallet?
Strongcoin claims it is "The Safest way to store your Bitcoins. The only Bitcoin e-wallet service that's not vulnerable to security breaches. Your Bitcoin keys are encrypted in the browser."
As I understand it, with their system your private keys are essentially encrypted by your browser before they are sent to the website. They also appear to have a method of creating an encrypted paper copy of your wallet so you can restore your wallet if the website disappears.
Even so, it seems you're still potentially vulnerable if you access your wallet from an infected computer (i.e. through keystroke loggers and more advanced logging techniques).
What other risks are there in using such a service?
Note: I have not used Strongcoin, and have no affiliation with them in any way.

Related, April 2013 incident: http://bitcoinmagazine.com/ozcoin-hacked-stolen-funds-seized-and-returned-by-strongcoin/

I'm the owner of StrongCoin.
Ben has detailed just about every possible risk with StrongCoin. You can read about how we handle server security in our FAQ.
It's not in my interests to defraud my customers, I'm pretty easy to trace and I don't fancy having angry users knocking on my door
So with Bitcoin like cash there are risks with storage, I lost a wallet.dat which spurred me to build StrongCoin.
StrongCoin is a convenient way to store and spend Bitcoins. I recommend you hold your spending Bitcoins in StrongCoin and use an offline mechanism for your savings or high value holdings.

Ian I'd like to do a lecture for my class on bitcoin covering strong wallet. Could you review my lecture after it is finished for improvements or addtions?

I agree with the answers of both Ian and Ben. Let me point out that I like the StrongCoin service. As former CEO of Hushmail, I would like to add some relevant information because Hushmail is like an encrypted wallet for email and we faced a similar set of issues.
The other risks that need to be addressed with services such as StrongCoin are:

Spoofed applet - The browser-based java applet that is served to you should be published as source code so that users may compile it themselves and/or seek review from cryptography peer-review groups, as Hushmail did. You should also have the ability to store locally a version of the trusted applet for your own use. This is important if you still want to use the service after StrongCoin receives a court order to serve compromised applets to certain persons suspected of 'something'.
Weak password - Since the private keys are stored on StrongCoin servers encrypted and protected with a passphrase, you would be subject to brute force attacks from anyone that gained access to the server data so a strong password is essential.
Keyboard sniffers and cameras - You are only as secure as your physical surroundings so be aware of keyboard loggers (hardware and software) and cameras that may have been inconspicuously placed above your computer work station to capture your passphrase.
Legal and physical jurisdiction - The StrongCoin servers are subject to court orders of the jurisdiction in which they they are located. If StrongCoin is legally domiciled in a different jurisdiction than the physical servers, then that country's courts could also have jurisdiction. Both jurisdictions should be examined for their privacy and data protection statutes.

Also see:
(a) http://www.hushmail.com/about/technology/security/
(b) http://www.schneier.com/essay-191.html

What Java applet are you talking about? I haven't seen one on neither Strongcoin nor My Wallet.

I am referring to the javascript code that Ben discusses in his first paragraph above. If the original javascript code were published somewhere for these online wallets, they could be vetted by the crypto community and the published source could serve as a check against a malicious wallet operator (or a good wallet operator acting under a court order/subpoena from law enforcement).

As this is client side javascript, the source code is already published with every view of the page.

In addition to the points made in the other answers on this page, the key derivation function used by StrongCoin to derive an AES encryption key from the user's password (which is then used to encrypt the user's private wallet key) is very weak.
This page on StrongCoin's blog explains how users' private wallet keys, which are encrypted by StrongCoin's client-side javascript, can be decrypted using openssl, by way of the following command:
openssl enc -d -aes-256-cbc -in key.txt -a -k password

This openssl command is notorious for using a very weak key derivation function - i.e. just one round of MD5 hashing, as explained in this post on security.stackexchange.com in 2013.  To quote from the accepted answer:

This is quite weak! Anybody who knows how to write code on a PC can
try to crack such a scheme and will be able to "try" several dozens of
millions of potential passwords per second (hundreds of millions will
be achievable with a GPU). If you use openssl enc, make sure your
password has very high entropy! (i.e. higher than usually recommended;
aim for 80 bits, at least). Or, preferably, don't use it at all;
instead, go for something more robust (GnuPG, when doing symmetric
encryption for a password, uses a stronger KDF with many iterations of
the underlying hash function).


text:
Ransomware requesting payment through Bitcoin
I read this article recently, talking about the emergence of "ransomware". An excerpt is:

The newer CryptoLocker differs by taking the ransom to a whole new level. Upon infection it doesn't make a fanfare, to the contrary, it acts in stealth performing a nefarious task in the background. You probably won't even notice the task running, as CryptoLocker silently encrypts your data files, including your precious family photos, vital Microsoft Word documents, spreadsheets, and email.
Upon completing the encryption of your files, it sends the unique key required for decrypting and unlocking your files over the internet to a secure remote server, and then the ransom begins. Immediately the CryptoLocker window displays containing the image of a shield, instructional text, and a countdown timer.
It's important to understand that the ransomware is not bluffing. Unless you pay the ransom, you will lose access to any files that have been encrypted. Once the countdown starts you have about three days to make payment, otherwise the key is destroyed and you permanently lose the ability to decrypt your files.

It seems like a logical step to request payment through Bitcoin, given that it would be much harder to track down the person receiving the payment than most other options. Sure enough, it's been done already! Admittedly, it could be a pretty daunting task for your average Joe Bloggs to figure out how to safely pay within 3 days using Bitcoin, but obviously the time limit can be made flexible.
Has any malware successfully used this technique yet, using Bitcoin? If so, does anyone know of a receiving address used more than once, thus giving an indication of how many people are paying a ransom?
Are there any websites that have statistics on such incidents?

Has any malware successfully used this technique yet, using Bitcoin?

I got around 10 people contacting me via localbitcoins in a day asking to buy exactly 2BTC to unlock their computers. I'd say it's pretty effective. I did get the addresses but don't seem to have it around now, when I looked around 30 people total had been paid out to two addresses.

source: Stack Exchange

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

sort: votes


text:
Modular Inverse for ECDSA in C++
I've seen several variations on "modular inverse" but I can't seem to identify the proper way of utilizing it for C++.  I'm not sure how this python code translates into c++:
def inverse(x, p):

"""
Calculate the modular inverse of x ( mod p )
the modular inverse is a number such that:
(inverse(x, p) * x) % p == 1
you could think of this as: 1/x
"""
inv1 = 1
inv2 = 0
while p != 1 and p!=0:
inv1, inv2 = inv2, inv1 - inv2 * (x / p)
x, p = p, x % p

return inv2

My current coding is here:
http://coliru.stacked-crooked.com/a/74648b16c2692525
But it only shows like the first public key properly, after that it messes up.

#include <openssl/bn.h>

[...]

BN_mod_inverse ( a, b, c, ctx );

I downloaded that library, but I don't know what to do with your inverse.  I'm only sending two variables to my inverse to be worked with.  I think it works out to the number to be modding and the number being modded by.

I'll take a shot, I don't code in C++ often. Mostly do Java, and I am completely unfamiliar with python.  I have tested this code.
int inverse(int x,int p)
{
  int orig = p;
  int inv1 = 1;
  int inv2 = 0;
  while(p != 1 && p != 0)
  {
    int temp = inv2;
    inv2 = inv1 - inv2 * (x/p);
    inv1 = temp;
    temp = p;
    p = x % p;
    x = temp;
  }
  while(inv2 < 0)
    inv2 += orig;
  return inv2;
}

It turns out that python does % differently than C++.  The while(inv2 < 0) statement corrects the sign error caused by the difference.  There is probably a more elegant way of doing this, but this was quick and easy.

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


text:
I don't have my 12 word question but I do have my PIN and my computers MAC address
I have been using my Hivewallet on my laptop for over 3 months and not once has it asked me for my 12 security words. In the past I figured it had picked up my MAC address because all it ever asked for was my PIN. I recently had problem and all my newer folders have been destroyed and cannot be taken.
I was hoping there would be a way I could still get into my folder. It has about $500-$550 worth of bitcoins and I did nothing wrong. I know everything that went on - even $750 worth or BTC that was taken only hours before the $500 of BTC was sent.

Please work with me. You have been very good and I would like to continue to do business with you. I you don't hand over my money, although small we will not do business with you again. Who are you talking to?

@NickODell I've edited that out of the question.

I'm pretty sure Hive is like the other web wallets in that they literally can't access your funds, they are encrypted. You would have been told in no uncertain terms to keep those 12 words safe and secure, it is not their fault if you haven't done that. Passwords are not recoverable on other web wallets either (e.g. blockchain.info).
Good luck, there's a chance some polite emails to their support may yield something if you have enough info for them to investigate but don't be surprised if they can't help.
Next time, store your funds somewhere safer and just keep day-to-day funds on the web wallet.

The PIN-based security is not based on your MAC address (which could be easily spoofed), it's based on a locally-stored private key that's encrypted with a token stored on their server, which they only give to you when presented with the right PIN (and which they erase if presented with 5 incorrect PINs).
If the file was only deleted and not physically overwritten yet, there may be a chance that you can still recover this deleted data from your hard drive. Without this file, Hive is completely unable to give you access to your wallet. If you want to try to recover this, stop using the computer immediately, and begin attempting to recover the data.
There's nothing Hive can do for you without this file or, better, the 12 word passphrase. You should have recorded the 12 word passphrase, as was suggested.


text:
How to get the Input Address from vin where only a txid is given (Insight-Api)
I like to find the Input Address and Amount for a vin like this:
"vin": [
    {
        "txid": "e3f0e88ce224d342a0189c1b9d2fd488d8bda2f303dbe1e1dbbaa5f51d9f4a53",
        "vout": 1,
        "scriptSig": {
            "asm": "3044022036c454ee41d67ee7c00fade55d57b573794916c1e1d9f301a038547daa5fcc0502202c99917b5590adf2ede1b8e3a6773369690a268c7b445664223ec8f92288e81e010272491cc9c405bfdc35f766bd849ddc58268088c202425cec224aa05cbf8547be"
        },
        "sequence": 4294967295,
        "n": 0,
        "unconfirmedInput": 1
    }
]

This is from txid: f4f2ddb44a8d155bc795e3e7497714fd6a1f035a6438b22403a7faa67012b9ec
Thanks

First, use the API to get the information on the txid.
/api/tx/e3f0e88ce224d342a0189c1b9d2fd488d8bda2f303dbe1e1dbbaa5f51d9f4a53

This result will include all of the details you're looking for. Here are the parts that you're asking about. The n here corresponds to the vout number above, I believe, and the value and addresses values are the input amount and address.
"value": "2405.38864196",
"n": 1,
"scriptPubKey": {
    ...
    "addresses": [
        "1NG1nT2ZuFw47f41mGjYpPp7J837yTQZhB"
    ]
},
...

So when I'm reading block 255 145 and I want to know from where is taken the input I have to rescan all the previous block looking for that TX ? :o (I'm parsing the blockchain mannualy)

@sliders_alpha Yeah, potentially. If you want to be more efficient, as you scan the blockchain going forward, keep a list of transaction id's and which block they came in.

You can code it,
Python 2.7 implementation for same is:
#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ ="cryptoKTM"

import requests,json
url="http://username:password@server:PORT"
payload={}
payload = {"jsonrpc":1,"id":"curltext"}
txid= "10ff6ff5bdc73d7bb6d711c6896618a05479d061e67f576a0950328c1389035f"
addresses = []
payload["method"]="getrawtransaction"
payload["params"]=[txid,1]
response = requests.post(url,json.dumps(payload))
response =response.json()
response= response["result"]["vin"]
for data in response:
    raw_tx1=data["txid"]
    vout_int=data["vout"]
    payload["params"]=[raw_tx1,1]
    response_ = requests.post(url,json.dumps(payload))
    response_= response_.json()
    data_ =response_["result"]["vout"]
    for item in data_:
        if item["n"] == vout_int:
            json_data ={}
            json_data[item["scriptPubKey"]["addresses"][0]] = item["value"]
            addresses.append(json_data)

print addresses

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


text:
blocknotify ignores > /dev/null 2>&1 and fills up my debug log
I have this code in my bitcoin.conf
blocknotify=/root/.nvm/versions/node/v11.15.0/bin/node /home/BTC/block.js %s > /dev/null 2>&1
I see the error
runCommand error: system(/root/.nvm/versions/node/v11.15.0/bin/node /home/BTC/block.js ea31b10db3554ba03a81166c27aa94ba27c335769 7cdd834509731c8946d6fde > /dev/null 2>&1) returned 256
As whenever I'm not running an additional script /home/BTC/block.js is automatically deleted.
Why does bitcoin debug ignore /dev/null 2>&1 and how do I stop it?
@m1xolyd1an, sorry if I am not clear:
The %s gives the block hash to the block.js nodejs script if the script exists (and when it does block.js accepts the hash fine and does what it needs to do). The problem is that the instruction to ignore all errors in the conf is not upheld by bitcoind, thus, my debug.log looks terrible when blocks.js does not exist. blocks.js only exists when it is created by another script and when that script terminates it deletes blocks.js

What are you trying to do with the %s data all by itself after block.js? I think your space after .js and before %s might be causing the problem. If you want to pass the data as a GET do something like /home/BTC/block.js?q=%s

No it works fine with no error when the file exists.

The log message
runCommand error: system(/root/.nvm/versions/node/v11.15.0/bin/node /home/BTC/block.js ea31b10db3554ba03a81166c27aa94ba27c335769 7cdd834509731c8946d6fde > /dev/null 2>&1) returned 256

is not an error log entry produced by /root/.nvm/versions/node/v11.15.0/bin/node (as such output would be redirected to /dev/null). It is an error reported by bitcoind because the command invoked returned failure. Redirecting output does not change the return value of a command.
Try adding || true at the end of the command.

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


text:
npm / node mining for litecoins
UPDATED AND CLARIFIED AND SIMPLIFIED
I'm looking through npmjs.org - My thought is can a node.js server mine (without a graphics card just using its own possessing power?) If so (there are a lot of modules for different things to do with statum) has anyone else done this?
I'm having difficulty understanding things with these npm modules on how to get them hooked up the same as my batch file (.bat) currently using cgminner ( I don't want to use cgminner just node.js)
my .bat for cgminer looks something like this:
cgminer.exe --scrypt -u example.1 -p x -o stratum+tcp://united.wemineltc.com:3334 --gpu-platform 0 -w 256 -v 1 -I 17 -g 1 -l 1 --thread-concurrency 6496

does anyone use node.js for this
can someone show me which npm modules mine
can someone show me how to add my bat details to a npm node module js script

Thanks Guys!

I recommend you clarify your question down to a single thing like "How to mine using node.js", it's hard to interpret this.

I have updated and clarified.. Please unhold, thank you

This question could be simplified down to "Is it efficient to use Node.js for mining? If so how?". All the extra info, the youtube video, mentioning your friend, is all very unnecessary and still very hard to interpret.

ok I will change now...

That's a good edit there, we have to do this because improperly worded questions will show up on all kinds of searches and confuse people who have the same question.

cazala coin-hive is the only one that can mine cryptonight coins (e.g. monero) via node.js

The answer to this is yes, it will. Mining can be done on most turing-complete languages like Javascript. But the true question is how useful is a JavaScript miner. Not to mention Node.js is optimized towards asynchronicity, something which heavy math equations that mining requires aren't. Node.js isn't suitable for CPU heavy tasks but it flies when dealing with many requests at the same time. For this reason there aren't many miners built on Node.js/Javascript. A miner written in C++ is your best bet, such as CGMiner.


text:
tx-malleability who re-signed the tx?
It would be really great if there was a way to loop through all the txids in a new block and be able to check if you (can) sign your original transaction the same way it was re-signed - that it matches the new txid
but i guess it would require that you also hold the private key of whom ever resigned your tx :/
Question(s):
if I somehow had the public key of whom ever re-signed my tx what could i observe from the new malleat-ed txid?
would i be able to run a test on the new txid to see if it is somehow related to my tx and/or my original txid?
If so how would I go about accessing the public key that relates to the private key that re-signed the txid in a new block?
Assumption(s):
the public key is named public because i could possibly/somehow have access to it easily...(??)
If the pub key is not readily accessible (massive assumption) peers on the bitcoin network should supply the public key part of their keys (to other peers) that is the pair to the private key they use to malform/re-sign transactions...(!!?)

I don't understand the premise of your question.  As I understand it, malleability means creating a different transaction with the identical payload, having a valid (but different) signature by the original key.  It doesn't involve signing the transaction with a new key.  And you can't learn anything at all about a transaction from its txid alone - the txid is a one-way hash of the transaction.

Actually, nobody else can create a valid signature for your transaction inputs, as they do not possess the private keys to do so.
When a transaction is malleated by a third party, it is not re-signed, merely it's signature is changed. ECDSA signatures are malleable, in that taking the negative of number S (modulo the curve order) does not invalidate them. As the TXID is created by hashing the complete transaction data, this will result in a new valid transaction with identical payload except for a new TXID.

I did (think/) understand that but was un-confident of my reasoning totally! Thank you so much for validation! signing would need private keys this instead looks like it's string manipulation


text:
How to get asm and hex from vout
I've got this weird string for a utx message (not my code)
CTransaction(nVersion=1 vin=[CTxIn(prevout=COutPoint(hash=41caa5bf2b814135257b26e44b111f55c067f783e3cdf9bdf914e1ef7e403d05 n=0) scriptSig=47304402200910d62908c2f386008d024c3622cae2440338ea2f65ff970c6c4140704dadc20220636e346e716b93348aab1d01893379f21e7798870dd75d566d217784ea9e0925012103e7670f57af2bd9f601f32ea5b701140e478f0f3e06a1d23e47fc4af9d1965ae2 nSequence=4294967295), CTxIn(prevout=COutPoint(hash=e87b3bb5fd83baad8cfd621ab715b21daf44bbc6165b645f9fa1730d457623b0 n=1) scriptSig=483045022100e6429685c5a935c69659af47d2487f9252724b730eee087f75c81083ca3390860220653e3f0b53c9750c3c22d46ba0d7822e0a9661d717279ccddbfb94dfad10f330012102689f559da51e353cc1d34bd1436560b92a179646e5c5e2ae7dddf116a56656a0 nSequence=4294967295)] vout=[CTxOut(nValue=0.00061000 scriptPubKey=76a91497176e06ed3ebb9fc46d983f7e976046246b8eb388ac), CTxOut(nValue=0.03000000 scriptPubKey=76a9145414feb353a36043f5257366479389263b0cba5988ac)] nLockTime=0)

In each vout there is scriptPubKey that looks like a hex.
How to I use this information to get each vouts scriptPubKey.asm and scriptPubKey.hex
The code that produced this string is python but I could also manipulate this data in javascript! I'm stuck on first why does the scriptPubKey(s) look like this in the first place and second what do I do to get the asm and hex information
I found https://github.com/bitcoin/bitcoin/blob/master/src/rpc/rawtransaction.cpp
void ScriptPubKeyToJSON(const CScript& scriptPubKey, UniValue& out, bool fIncludeHex)
{
    txnouttype type;
    vector<CTxDestination> addresses;
    int nRequired;

out.push_back(Pair("asm", ScriptToAsmStr(scriptPubKey)));
if (fIncludeHex)
    out.push_back(Pair("hex", HexStr(scriptPubKey.begin(), scriptPubKey.end())));

if (!ExtractDestinations(scriptPubKey, type, addresses, nRequired)) {
    out.push_back(Pair("type", GetTxnOutputType(type)));
    return;
}

out.push_back(Pair("reqSigs", nRequired));
out.push_back(Pair("type", GetTxnOutputType(type)));

UniValue a(UniValue::VARR);
BOOST_FOREACH(const CTxDestination& addr, addresses)
    a.push_back(CBitcoinAddress(addr).ToString());
out.push_back(Pair("addresses", a));

}
Which looks like its doing the action I require (but I don't understand the code / what's happening)

Sounds like this is what you are looking for
Example usage:

cout << "Script being executed: " << ScriptToAsmStr(script) << std::endl;


text:
What are the security considerations for hosting *your own* Electrum server?
Lets say I wanted to use an electrum client but I'm so paranoid and also can't or won't read and understand python code so that I only trust my own server.
What security considerations should I have in mind? eg: Do I need to add any encryption to the filesystem to protect the wallets that are being served?
Do you gain security by validating with other servers? Given extreme levels of paranoia should you even trust other servers?

If you can't read or understand the code, it doesn't matter much if you have control over the server that runs it...

:-) very true , I just wanted to focus the question

Electrum servers don't save any private information. All they do is create an interface to a bitcoind instance that is exposed in such a way the Electrum client, which stores the important and private data, can read it.
The only 'evil' thing an Electrum server could do is lying about certain transactions, feeding you misinformation. When you run your own server this is the only thing you will gain.
Encryption won't be needed, but is a good practice overall. No wallets will be saved on the server, except the wallet from Bitcoind. This wallet however will always be empty.

Could a server not also silently log information that could help an investigator to de-anonymise an electrum user (by linking addresses in his wallet)?

Yes this could happen. By default though Electrum connects to a random server. You can always run a server yourself though; that way you don't have to trust anybody else.


text:
Can Scripts be used to implement Chargebacks?
I went ahead and wrote this semi-detailed post about how to implement Chargebacks, when I hit my head and said "Doh, maybe this can just be implemented more cleanly with Scripts".
So ... is there a way to use scripts to create a chargeback mechanism in Bitcoin? Has this been discussed before? (please provide links)

The closest thing I've ever heard discussed would be escrow-type transactions using M of N signing. Also, in the link you posted it's apparent that the community at large seems to think chargebacks are a bad idea that go against the Bitcoin concept (I would tend to agree). Still, if you wanted to implement them, scripts would be the way to go. I don't know enough to answer the question directly, only to say that M of N signing and escrow transactions will probably solve whatever problem you're working on better.

The discussion on Bitcoin Talk pretty much convinced me that "elective Chargebacks" (where some tx be reverrsed, but not all) is essentially meaningless.
If a shop would choose to give a customer the ability to do chargebacks for a limited time, this is equivalent to just postponing the payment. Since this is the main use case, and the other use case of chargebacks is personal wallet security, for which there are better alternatives, I'll accept this answer and consider the matter closed.

For the shop scenario, some form of burn escrow (discussed for example in http://bitcoin.stackexchange.com/questions/557/decentralized-escrow-functionality-built-into-bitcoin) is probably the solution. For the server scenario, the solution is of course multi-signature, and Mike Hearn has recently proposed streamlining this using trusted computing.

Escrow of course has its uses, but the issue is more practical than technical insofar as deciding when the transaction is irreversibly settled. With credit cards etc. there is an adjudication and arbitration process, so presumably any bitcoin chargeback mechanism would also need such a (distributed) procedure.


text:
What's a good site to see bid/ask walls?
I'm currently using Mtgoxlive to view ask and bid walls.

But ... I can't see the chart beyond about $1.5 +- the current price.
Is there another site for viewing ask/bid walls graphically, in a similar fashion to Mtgoxlive, that is limiting in the displayed data?
Also, a nice to have would be historic wall data. There is the Wall Observer Thread ... is there another site that does this?

btccharts.com is a better version of mtgoxlive.com - it lets you zoom out to see more price range, and has a bunch of other features.
See its forum thread for discussion of it.
Note: the site is currently down for maintenance but should be back soon.
Also, clarkmoody will show you a live updating view of the market, but the depth is shown numerically, not on a graph.


text:
Bitcoin URLs: how to set a transaction fee?
The  Bitcoin URI scheme doesn't appear to provide any mechanism for setting a transaction fee.
Is there a way to get clients to include a transaction fee in a standard payment via a Bitcoin URI?

Great question!!!
Here is a non-authoritative answer based upon prior related experience of many years past. The Bitcoin URI-scheme is very reminiscent of the IETF HTTP and SIP URI protocol grammars.
With the suggested Bitcoin BNF Grammar documented in BIP-21, it is possible that implemented pchar "otherparam" or "reqparam" names to be abused to suggest a transaction fee. The fee is digit, not a pchar. The URI could even be made to suggest specific pool(s) to expedite the processing of the transaction (relates to High level details for bundling transactions for solo mining or pooled GBT mining). I'm guessing the issue is the the meaning of the name-value pair for a transaction fee is left up to the whim of a developer which could lead to downstream turnkey Bitcoin component interoperability issues. So does it would make sense for the BIP-021 to be tweaked to add something like the following to its grammar?
paytxfeeparam = "paytxfee=" *digit [ "." *digit ]
**The wallet application currently establishes the acceptable transaction fee. For now, Bitcoin-Qt "bitcoin.conf" "paytxfee" value is used to statically establish the transaction the client is willing to pay.
I can understand why current pool operators may not care about establishing a paytxfeeparam. However, a roaming customer may want to know what it takes to expedite an adhoc in-person brick and mortar transaction for a product or service.
To support commerce, its not too hard to also envision a need for something like:
paysalestaxparam = "paysalestax=" *digit [ "." *digit ]
BIP-21 needs to be updated with a number of other real world use cases...
From a Cybersecurity perspective, I would be very reluctant to click on a URI from that only God knows is from who that induces a very expensive transaction. I'm glad to BIP-21 talks about always requiring the user's authorization.

So the fee has nothing to do with the URL? The bitcoin client decides what the fee will be?

That appears to be the case today. But there are good use cases that could justify having the URL notation extended in BIP-21.

To compose Bitcoin URIs, experiment with a wallet such a Multibit, and go into Multibit's "Request Bitcoin" functionality.  The Label field allows the wallet's user to compose a Bitcoin URI that is embedded within a QR Code image to the right side of Multibit. If you don't have one already, get a QR scanner installed on your smart phone. Scan the QR code. Email it to yourself and analyze it. Do a few rounds of this and then you should begin to understand a purpose for BIP-021.

authors: معتز بوفارس السرغيني


text:
What protocols are built on top of Bitcoin?
Mastercoin is described as:

"both a new type of currency (MSC) and a platform. It is a new protocol layer running on top of Bitcoin like HTTP runs on top of TCP/IP. Its purpose is to build upon the core Bitcoin protocol and add new features".

Are there any other protocols or similar built on top of the Bitcoin protocol in this way?
(As an aside, the way Namecoin uses a Bitcoin-like P2P model to act as an alternative, decentralized DNS is interesting...are there similar things built on top of Bitcoin itself?)

New information:
See David Schwartz's response at examples-of-asset-backed-virtual-currencies for a short description of Ripple.
Older information:
The List of all Cryptocoins  mentions both Mastercoin (MSC) and Ripple (XRP).  This URL is dated, and Ripple is now open sourced. The ripple video is informative.  According to Wikipedia, Ripple is currency agnostic. Ripple has network consensus times of 2 to 5 seconds (which is much less than 2.5 or 10 minutes) and already has 100 billion units of XRP which probably explains why it is not visible at Mining Revenues. I've yet to dig into the Bitcoin Ripple Open Forum.
The Central Banks are scared that an open source architecture is emerging that will be redefining the FIRE Sector, and thus threatening their monopolies.  The FIRE Sector is starting to go through a very disruptive innovation revolution with the genius of Open Source Technologies. If these distributed technologies are implemented properly, we could be on the verge of another 1776. I would love to see the diagram below updated and refined by the Open Source Community so we all have a bigger picture road map to focus our efforts.


text:
I have Bitcoins in a local wallet, how do I get my Bitcoin Cash without using an exchange?
I have a few Bitcoins in a local wallet and I own my private key.
I know that on 1st August 2017, Bitcoin is splitting into BTC and BCC.
How do I get Bitcoin Cash without transferring my Bitcoins to a 3rd party exchange?

If your wallet has a Bitcoin Cash version of it (e.g. Bitcoin ABC for Bitcoin Core, Electron Cash for Electrum), then you can install that version in a second location and have it use a different data directory (the data for wallets is stored separately from the install location). Then just copy your wallet file into the second data directory and use the Bitcoin Cash version of your wallet as you normally would use your wallet. Since Bitcoin Cash has implemented two way replay protection, there isn't anything special that you need to do in order to properly create transactions for either chain.
If you do not have a wallet that has a Bitcoin Cash counterpart, you can export your private key(s) and import it into a Bitcoin Cash wallet. After the fork, you should first send your Bitcoin to another address that you control. Then you can export your private keys (excluding the private key for the address you just sent Bitcoin to) and import then into a Bitcoin Cash wallet. From there you can send your Bitcoin Cash coins to an address in the Bitcoin Cash wallet and spend normally.
NOTICE: Make sure to always backup your wallet.dat. I've heard of horror stories about people downloading bitcoinabc client and it overwrites their current bitcoin files. It's best to use a extra computer to download bitcoinabc and then use email or a USB to transfer wallet.dat to it.

Are there any light desktop wallets to support B. Cache yet? Without that, it's all kinda' just theory.

I did exactly this, but in my BCH wallet I see the same transaction I did in my BTC wallet, thus 0 balance.

@Sz Electron Cash (a fork of Electrum) is a lightweight wallet that supports Bitcoin Cash.

@siamii, what wallet software did you use? Was your transaction confirmed before or after block 478559?

Andy, thanks. Caveat emptor, though, some early problems have already been reported (as kinda' expected in such cases).

@AndrewChow It's after block 478616. Electron cash.

@siamii Your Electron Cash wallet is not using a Bitcoin Cash Electrum server, it is instead seeing a normal Electrum server for Bitcoin. This means that you will only see your Bitcoin, but cannot spend any of it with Electron Cash. You should set your Electron Cash wallet to be using a Bitcoin Cash server.

Hi, could you please advice here too https://bitcoin.stackexchange.com/questions/57899/get-bch-from-blockchain-info-after-fork? Thanks

This answer should note the possibility of your BCH client misbehaving and sending both your BTC and BCH to someone else as soon as it has your keys.  Most recommendations I've seen include steps to prevent at least the theft of the BTC.

Since you hold the private key of your wallet, you just need to import it to a BCC wallet after the fork and you will get access to your bitcoin cash,

After 12:20 UTC (or maybe you need to wait for 1 BCC block?), send all of your BTC to a totally new wallet and wait until this gets 30 confirmations. Just creating new addresses is not sufficient: you must create a totally new wallet file with a different mnemonic, etc. BCC has some replay protection (note: contrary to what they say, it is not complete replay protection, unless they changed it since I last heard), so this should typically not be replayed. Just in case it is replayed, the destination wallet should also be under your complete control.
Import your old private keys into a BCC wallet on a separate computer, or upload them to a BCC exchange/bank. Never use that wallet file again.

I've sent my BTC to a new address, then imported the private key to BCH wallet from my previous BTC address. In the BCH wallet, I see the same transaction done, and thus there 0 BCH balance. How do I get my BCH in this case?

@siamii: you did this too early, before the split! You should do the same again, send it to into a new wallet and watch your second wallet in your BCH Wallet

@rubo77 it was after the split

Hi, could you please advice here too https://bitcoin.stackexchange.com/questions/57899/get-bch-from-blockchain-info-after-fork? Thanks

Why do you need to create a whole new wallet?

You can transfer/sweep your Bitcoin Cash to a offline wallet like e.g. Coinomi using your private key and identify the addresses which hold the funds.
The process is explained at How to sweep private extended key from mycellium into coinomi for bitcoin cash coins?


text:
I have blockchain.info wallet with BTC and BCC. What will happen if I send BTC only to that address?
Previous question: In case of the Bitcoin split - when holding BTC on blockchain.info - will I receive coins on both forks?
I know that I can restore private key from the 12 words BIP 39 recovery phrase.
I was silly / stupid / risky enough to move 1.11111111 BTC pre-fork - https://twitter.com/stefek99/status/891777250089209857 - to ViaBTC and now there is ฿ 1.25469771 post-fork Bitcoin.
I have no idea how to reconcile this. Thinking about splitting my remaining pre-fork Bitcoin, trading BCC for BTC and keeping post-fork balance only.
Sending post-fork BTC to pre-fork BTC and BCC address seems risky. Is there anything I should consider?
https://blockchain.info official statement: https://blog.blockchain.com/2017/07/30/bitcoin-cash-hard-fork-blockchain-users/

At the time of the fork, your previous key now gives you access to two independent wallets one BTC, one BCH. They both start with the amount you had before the fork. There are no "pre-fork" nor "post-fork" bitcoin, there are now only one key opening two different wallets.
The two wallets are not compatible anymore, it means that you cannot move some coins from the BCH wallet to BTC wallet, nor BTC to BCH.
If you send BTC to your BTC wallet, then your BTC wallet will get the coins, and the BCH wallet will stay unchanged.
If you want to fill the BCH wallet also, you have to make another transaction, on the BCH network, of the same amount.
Best pratice would be to separate your BCH wallets from BTC wallets. You can do this with Electron Cash software with the "recovery passphrase", as described here: [https://thebot.net/threads/tutorial-how-to-get-your-private-key-from-blockchain-info-redeem-your-bch-from-blockchain-info.396919/][1]. Don't forget that until you move the coins to new wallets, the same key will give access to both BTC and BCH wallets, even if they have different lives, so keep them safe!


text:
Accepting micropayment donations via Lightning Network - what is the most efficient / recommended architecture?
The difficulty that I am experiencing at the moment - how to accept Lightning Network micropayments donations supporting (shameless plug): https://genesis.re/wiki#Plan_B
Zap / Joule:

I send on-chain BTC to lightning enabled wallet
I open a channel
I do not have inbound capacity to receive lightning payments, need to spend first

(two on-chain transactions and spending money first feels like too much)
Blue Wallet / Bitlum:

they say these are custodial wallets
I do not understand how do they work
is my account balance a cell in a database?

(feel free to educate me - comment section -  in the inner workings of custodial wallets)
Bitrefill
This seems reasonable, created by a reputable organization:
https://www.bitrefill.com/thor-lightning-network-channels

If someone's looking to receive bitcoin, as tips or other earnings, this is a quick and easy tool to get started.

Maybe there is something better available?
Maybe there is a better way?
EDIT / UPDATE
Exchange sats on Lightning Network into BTC on-chain so to have inbound capacity?

https://lightningconductor.net/invoice

Use this form to extract credit from your Lightning Channel and turn into BTC. Enter the Bitcoin address you want the funds sent to and amount you want to extract.

https://zigzag.io (temporarily out of supply)

If you’d like to engage with the LN, you will eventually need to initiate some bitcoin transaction(s), lest you’d rather depend on some custodial third party solution (but generally, service recommendations are off-topic here). The best answer (and one that would be on topic) would be one that involves you running your own LN node.

@chytrik Running my own node and...? I'm running my own node via https://medium.com/lightning-power-users/windows-macos-lightning-network-284bd5034340 and it requires multiple steps, including spending money first (inbound capacity) in order to receive, that sounds counterintuitive.

Gaining incoming capacity can be a hurdle to jump for new lightning users, but it can be accomplished in a few different ways, and the ease of UX seems to be slowly but steadily improving in regards to this. I don't have a recommendation for an architecture specific to receiving tips in an automated way though, sorry.

Lightningconductor.net should not be recommended. It's a scam site that has stolen from several people. Currently trying to find the owner to get my $. Please remove https://lightningconductor.net/invoice from answer. Don't have rep points to comment directly on prevous answer.

I was able to signup and accept Lightning payment in 2 minutes: https://www.opennode.co/

OpenNode is the easiest way to accept bitcoin.

It was easy. Looking no further. And they offer API: https://developers.opennode.co/

I admit I've spent a little bit too much analyzing which VPS and what hardware requirements. The process of configuring everything from scratch is daunting, wish there was a 1-click install: https://github.com/lightningnetwork/lnd/issues/3159
Something similar to: https://medium.com/lightning-power-users/windows-macos-lightning-network-284bd5034340 (unfairly easy, no excuses not to run a full node)


text:
What hash rate can a Raspberry Pi achieve? Can the GPU be used?
A Raspberry Pi is a credit card sized $25 (or $45, for the deluxe option) computer, designed for educational use. Has anyone tried running mining software on it? If so, what's the hashrate like? (apparently the CPU is approximately equivalent to a P2 300MHz - I know the hashrate will be very low!)
Also, can the GPU be used to mine? What's the hashrate for that, if it's been done.
From the FAQ on the above linked site: "The GPU provides Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode.
The GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24 GFLOPs of general purpose compute and features a bunch of texture filtering and DMA infrastructure.
That is, graphics capabilities are roughly equivalent to Xbox 1 level of performance. Overall real world performance is something like a 300MHz Pentium 2, only with much, much swankier graphics."
Note: The price of $25 or $45 excludes a way of powering it (via MicroUSB), a keyboard, a mouse and likely a USB hub. I think you need to provide an SD card too.

Not quite an exact duplicate of this question but there may be some good info there for you.

Did you ever try this your self? On my Mac, I have cpuminer minerd and cgminer 3.7.2 for the amd Radeon . I imagine you can run two separate mining programs.

There is a nice wiki page here: https://en.bitcoin.it/wiki/Mining_hardware_comparison
The raspberry pi is listed by its processor in the arm section: ARM1176JZ(F)-S. It gets 0.2 Mhash/s when clocked at 800 MHz.

Hey Gus, welcome to bitcoin.SE! Please don't post just a link, because if the link is dead, then the answer isn't useful. I've edited your answer to fix that. Thanks!

This is not a useful answer because that page doesn't consider the pi GPU.

The Raspberry Pi uses the VideoCore IV series of GPU, which to my understanding are either a single or dual core GPU running at or around 700 MHz. Since the primary benefit of GPU mining is that you can run many parallel processes on the hundreds of cores typically found in most GPUs, the single-core nature of the VideoCore GPU undoes most of that benefit.
I don't have exact numbers, nor the necessary knowledge to compute an estimate, but I can tell you that the Folding@Home folks already discussed this and came to the conclusion that an AMD Phenom II X4 940 was almost 5 times as efficient for their needs as utilizing both the CPU and GPU of the Raspberry Pi. Since the needs of Folding@Home are very similar (but not identical) to Bitcoin's, it's probably not a stretch to say that if CPU mining (admittedly with a fairly nice CPU) is 5x more efficient, the Raspberry Pi doesn't look like a strong contender.
Of course, until we have solid MH/s and actual at-the-wall wattage numbers it's very difficult to say if, at scale, a cluster of $35 Raspberry Pis could compete with other setups on initial price or power cost. Personally, I'd guess not.

Thanks. Will leave this one open awaiting a more definitive figure though. From the thread you linked to, it sounds like the (API) access to the GPU may not be adequate to efficiently use it for mining, which would make a big difference.

It gets less than 200kh/s on the CPU proof here http://www.youtube.com/watch?v=rrdzam7voOg&list=UUdOgdYMe-hwv2_uUtYlqLDQ&index=1&feature=plcp

The one thing I should probably answer on is about the difference between OpenGL / OpenGL-ES and OpenCL. Both OpenGL and OpenCl can be used for SHA256d hashing, but OpenCl is used much more frequently.
Where as GL means Graphics Language and CL stands for Compute Language. GL is for graphics and CL is for mathematical and scientific calculations. While your system may have OpenGL support of some sort, it's more than likely doesn't have OpenCL 1 & 2 support for the GP-GPU (VideoCore IV) which would allow you to get okay to medium hash rates. As I see to remember, the VideoCore IV in the Pi doesn't support it in hardware (OpenCL version 1 or 2).
Which means you'd have to rely on those ASIC miners that are connected via the USB port hub or even a dedicated mining rig that is connected via the UTP network connector (RJ-45 jack / Ethernet).
Well, at least we're having a good amount of information / data coming out so the next people that read this will have a good idea on what to do with their RPIs if they want to do any mining.

Here is a topic from dec 2017 https://www.raspberrypi.org/forums/viewtopic.php?t=194952&start=25 about OpenCL mining. Quote If you are referring to https://github.com/ethereum-mining/ethminer, it won't work, since its OpenCL kernel requires 64-bit data-types (ulong), which are not supported

I will step up and answer the Raspberry Pi question too. The RPI in and of itself is not worth using to do virtual currency mining on by itself. However, if you a nice powered USB hub and connect in the ASICs that plug in via the USB ports and download the proper software that can access these devices, then you've got a descent mining rig to speak of.
Note:
Due to the way in which the ASICs are designed, they can only do SHA256D and that alone although, performance per watt is the best way to go. Essentially, all the RPI does is act as the surrogate for all the ASIC slave units and constantly feeds them data and ferries the data hashes back and forth from their source.
You can't use Scrypt with these USB ASICs at all. You'll be stuck using the GETWORK protocol until someone can come up with an ASIC that can do both SHA256D and Scrypt.
One last thing, you may have heard of the Stratum protocol vs. the old GETWORK protocol. This can be used with Scrypt or SHA256D algorithms. Stratum helps you get less stale and has even better network performance than the old protocol.
Hope this clears things up like my message above.

Thanks for the answer! A Pi goes nicely with ASICs too because it keeps the overall power consumption very low, especially if you're only running small low-wattage ASICs like the 330MH/s block eruptors...

Great summary here:
https://www.electromaker.io/blog/article/cryptocurrency-mining-on-the-raspberry-pi-60
Also includes a step-by-step guide on how to mine crypto currency on the Raspberry pi

You should elaborate on what the link covers a bit. Answers containing only a link are useless in the future if the link ceases to work

Welcome to Bitcoin! Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.

Do you even know what FLOPS are, first off?
FLOPS stands for FLoating-point OPerations per Second. Hashes are calculated via signed integers in the form of hexadecimal numbers, those numbers are then run through a series of logical operations (You know; AND, OR, NOR, XOR, NAND).
FLOPS means absolutely jack when it comes to your processing speed of your Hash Bashing rig (your crypto-currency mining computer).
ATI cards are known for their single-precision floating point performance over Nvidia, that much is true.
ATI also has better signed and unsigned integer performance than Nvidia does too.
ATI has slightly better logical operations per second than Nvidia does.
Now, floating point is screaming fast on the ATIs as compared to the Nvidia but it's too bad it's not actually being used for SHA256D and Scrypt.
Integers both signed and unsigned actually take less time on the CPU or GP-GPU to calculate and thus much faster.
The logical operations are the slowest and since you use a combination of both logical and unsigned integer you get a composite average of the performance between the two and of course the implementation of the mining application.
If it's done correctly, you should get around 85 to 90% maximum of what your card or embedded system claims it's capable of doing. Simply put, you will never achieve 100% because you have an operating system that is using the card and of course interfacing to the rest of the system.
While the indicators tell you are getting 100% of the cores, what it's really means is that you are getting 100% of the 85 ~ 90% theoretical maximum you can achieve with the hardware you have.
I hope this clears things up for y'all.

I dont think you will find a Pi economic for 'mining', ASICs have far higher hashes per watt.
However if you put a Proof of Stake coin on your Pi you can get excellent ROI depending on the price of the coin and the reward structure.
PoS uses 1 hash per second per UTXO, so even a lowly Pi Zero for $8 can easily run a PoS coin from a hashing perspective (I stake Pinkcoin on mine).  The other consideration with PoS and SBCs is RAM, longer chains need to load more into RAM (I believe its the chain index), so for chains with over a million blocks Id recommend a Pi2 or 3, much over 2 million you prpbably need to look into an SBC with higher RAM, like a Rock64.


text:
Please walk me through a typical page on blockchain.info
I would tremendously appreciate it if you could walk me through this page.
Why are there two addresses on the right? What is the longer hash called that is directly under "Transaction" (not the address)? Why do so many transactions occur in the middle of the ocean? Are there any other better websites to view the blockchain than blockchain.info? What makes a transaction "High Priority"?

Thanks so much!

A link to the transaction in question would be nice (I realize most of it is not specific to this transaction, but still...)

There is only one address on the left, did you mean the right, or are you referring to the two values under "Input Scripts"?

Yes I meant right, sorry about that. Edited

And the link: https://blockchain.info/tx/922e3afd9304a3a286ae0d65f45cb58cd0d7a22dccb58c73c401bc5069810d27

Why are there two addresses on the right?

Bitcoin transactions often have two outputs: one is the intended recipient, the other is a change address. This is because outputs must be used in their entirety, so the remainder is sent to an address that the sender owns. In this case, the change address was the address that the money was sent from, but this is not always the case (it can marginally improve security and anonymity to use a new address each time, including for change).

What is the longer hash called that is directly under "Transaction" (not the address)?

The transaction hash. It is used as a sort of identifier for the transaction, but beware using it for that before it's in the blockchain due to malleability.

Why do so many transactions occur in the middle of the ocean?

That is the lat/long coordinates 0N 0E. It really just means that blockchain.info has no good data on where this came from, so it defaults there.

Are there any other better websites to view the blockchain than blockchain.info?

Not in my opinion, as far as I'm aware.

What makes a transaction "High Priority"?

If a transaction includes a standard transaction fee and isn't non-standard, it will quickly be transmitted to nearly every miner in the world, who will start working them quickly. Some transactions have no fees attached, e.g. see this one (estimated time is "Within 6 Blocks (Medium Priority)") or find another on the unconfirmed list. These may be transmitted across the network, based on a few rules including the age and size of the inputs. Miners and nodes might not be as quick about transmitting these or may limit it to a few free transactions per block, so the transaction might not get into the chain as quickly.

Tim, thanks so much for the wonderful help. Your answers were very clear, provided great explanations, and have given me a couple more topics to research so that I can continue broadening my knowledge. All the best to you!

I've spent a lot of time learning about bitcoin over the last month-plus, and really understand the network/protocol quite well--but it is so obviously not user-friendly enough yet to become mainstream.

I love thinking about the unlimited future applications of the blockchain, but it seems to me that we first need to make it "readable" or "understandable" by all. For instance, just as Netscape/Google "simplified" the internet for the masses, I think the we need to "simplify" the presentation of the blockchain. What I am saying is that I don't think blockchain.info should be the only source for acquiring information about the blockchain. It is not even close to as user-friendly as it ought to be. Thoughts?

Glad I could help, consider marking my answer as accepted. Further discussion is better suited to a forum or chat place.


text:
How to explore transaction chain via Original Bitcoin API as blockexplorer does it
Is there any possibility to explore transaction chain via Original Bitcoin API (https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list) as the blockexplorer does it.
If not, why?


text:
Why on bitcoin client sender address is 'undefined'
Despite the fact that bockexplorer allows to navigate through transaction details and discover the sender address,
why via bitcoin client the sender address remains 'undefined'.
Is it possible to discover sender address via original Bitcoin API?

What you're talking about is not a "sender address". Bitcoin doesn't have that. All you can find out (and the answer below describes) is which address(es) the coins consumed by a transaction were previously assigned to. Unless you're the sender yourself, this is not usually interesting information.

Yes, it is possible. You can use getrawtransaction <txid> and decoderawtransaction <output from getrawtransaction>. For example:
getrawtransaction 6dcaa5e7f412a9c14d0f87a2660907c37de5abac31823c22fba978b6fd616313
010000000105bbdd4f69478586a192f4904f51229690ae7f17703a8410f983c072658eb611c60200006a47304402200c64714e605c1ad63e5a52b2d4a734c3a6174e2d6a4e0aa7fcff99ec8c1451a902202005bed9f7f2969bf86989cbe295aab3d51ba77b2faf9def6010b04f24183e450121024209026dda4b136d55f92e36fb4fdf23a8beb129d872838a122a9d1e55c9f838ffffffff0240f3ad00000000001976a91452bf43c4d410b5971a37c304ba96b53dc5da7f5f88acc8a10000000000001976a914bcccc2b493e31afd0767448c8f7d7d5d6823164888ac00000000

decoderawtransaction 010000000105bbdd4f69478586a192f4904f51229690ae7f17703a8410f983c072658eb611c60200006a47304402200c64714e605c1ad63e5a52b2d4a734c3a6174e2d6a4e0aa7fcff99ec8c1451a902202005bed9f7f2969bf86989cbe295aab3d51ba77b2faf9def6010b04f24183e450121024209026dda4b136d55f92e36fb4fdf23a8beb129d872838a122a9d1e55c9f838ffffffff0240f3ad00000000001976a91452bf43c4d410b5971a37c304ba96b53dc5da7f5f88acc8a10000000000001976a914bcccc2b493e31afd0767448c8f7d7d5d6823164888ac00000000
{
"txid" : "6dcaa5e7f412a9c14d0f87a2660907c37de5abac31823c22fba978b6fd616313",
"version" : 1,
"locktime" : 0,
"vin" : [{
    "txid" : "11b68e6572c083f910843a70177fae909622514f90f492a1868547694fddbb05",
    "vout" : 710,
    "scriptSig" : {
        "asm" : "304402200c64714e605c1ad63e5a52b2d4a734c3a6174e2d6a4e0aa7fcff99ec8c1451a902202005bed9f7f2969bf86989cbe295aab3d51ba77b2faf9def6010b04f24183e4501 024209026dda4b136d55f92e36fb4fdf23a8beb129d872838a122a9d1e55c9f838",
        "hex" : "47304402200c64714e605c1ad63e5a52b2d4a734c3a6174e2d6a4e0aa7fcff99ec8c1451a902202005bed9f7f2969bf86989cbe295aab3d51ba77b2faf9def6010b04f24183e450121024209026dda4b136d55f92e36fb4fdf23a8beb129d872838a122a9d1e55c9f838"
    },
    "sequence" : 4294967295
}],
"vout" : [{
    "value" : 0.11400000,
    "n" : 0,
    "scriptPubKey" : {
        "asm" : "OP_DUP OP_HASH160 52bf43c4d410b5971a37c304ba96b53dc5da7f5f OP_EQUALVERIFY OP_CHECKSIG",
        "hex" : "76a91452bf43c4d410b5971a37c304ba96b53dc5da7f5f88ac",
        "reqSigs" : 1,
        "type" : "pubkeyhash",
        "addresses" : ["18YXY35z1HgMoKqBFgiShGuqnhR7zdwwC6"]
    }
}, {
    "value" : 0.00041416,
    "n" : 1,
    "scriptPubKey" : {
        "asm" : "OP_DUP OP_HASH160 bcccc2b493e31afd0767448c8f7d7d5d68231648 OP_EQUALVERIFY OP_CHECKSIG",
        "hex" : "76a914bcccc2b493e31afd0767448c8f7d7d5d6823164888ac",
        "reqSigs" : 1,
        "type" : "pubkeyhash",
        "addresses" : ["1JDHL5WhHNrg4HrNksnF7S1ChGVYYUkjVC"]
    }
}]
}

Look at vin[0].scriptSig.asm. It contains 2 values: 3044...4501 and 0242...f838. Second value is a compressed public key. Now you can use it to calculate address: RIPEMD160(SHA256(pubkey)) -> Base58. But you must do this by yourself.


text:
How can I copy the blockchain from my working client for use with a live CD savings wallet?
I have the Bitcoin client installed on my Windows PC, but I want to set up a savings wallet with better security that I access with an Ubuntu live CD. I don't want to have to download the entire blockchain though - can I use my blockchain from Windows in the Ubuntu OS?
And how can I copy the blockchain from my existing Windows client installation to, say, a USB stick for use by an Ubuntu live CD, then into the Bitcoin client folder?

You can find the blockchain in this directory:
C:\Documents and Settings\YourUserName\Application data\Bitcoin (XP)
or
C:\Users\YourUserName\Appdata\Roaming\Bitcoin (Vista and 7)
As blk0001.dat and blkindex.dat. Copying those files to a proper folder on your Ubundu (~/.bitcoin/) should spare you from redownloading the entire blockchain.

This answer is obsolete.

bitcoin data dir link in the wiki:
https://en.bitcoin.it/wiki/Data_directory
... shows where all the data files are located, the "a proper folder" link from ThePiachu 's post seems to have died since.


text:
How to get statistics about Bitcoin users?
Because each Bitcoin user can operate multiple Bitcoin clients and wallets, and not every user runs the client constantly, it seems very difficult to gather data about the Bitcoin community.
It's clear that many people in the community will want to remain anonymous (for good reason, if they hold a large amount of value in their wallet), and that collection of statistics in the Bitcoin client app would not be a popular option. Having read about malware that mines bitcoins, it's even possible that botnets may run a bitcoin client too. Even if such a collection technique was palatable, it couldn't be depended upon.
If statistics were gathered on a per-user basis rather than a per-client basis, a whole new data set could provide valuable information to the community, such as growth, feature popularity/desirability, usage preferences etc. Is there any mechanism with which a substantial quantity of real user data could be (or is being) collected reliably? Facebook comes to mind as a possibility, but even Facebook is easy to create fake accounts in.

Fortunately, the clients are open source and there are multiple options.   If one thinks adding some identification is a good idea we can stop using it for something that retains our privacy.

The number of downloads metrics provided from the sites where the clients are downloaded is probably about as close as you are going to finding something that will help you in measuring the number of users.
Then maybe some of the hosted services, such as My Wallet - http://BlockChain.info/wallet would volunteer totals.
The downloads numbers won't help come up with estimates that are anywhere near accurate but the exercise might help show trends (e.g., twice as much downloads month over month might give the ability to estimate a 25% increase in users, for instance.)

The closest thing I'm aware of is RowIT's Bitcoin Stats Page which counts listening hosts, unique IPs and several other statistics which come closer to, but still does not directly equal, a count of users. It is, at least, less likely for one user to run a client from two IP addresses than to simply run two clients from the same address, so unique IP statistics might be somewhat more useful to you.
Realistically, Bitcoin was explicitly created with privacy in mind, so as much data mining as we are capable of, there are certain statistics you're simply unlikely to ever lay hands on.


text:
What are the implications of a decreasing trend of MtGox "ask" depth compared with "bid" depth?
The "Mt Gox Order Book Depth" chart at the bottom of the page at http://bitcoinx.com/charts/ currently looks like this:

Since mid May the red line on the chart ("Ask sum") has a strong decreasing trend, whereas the blue line ("Bid sum") has stayed steady.
What the implications of this?

There has been a rally in price of 10% or more since May, and there is constant supply of new bitcoins entering the market, so some of the cash from the order book has since moved into bitcoins.
But no doubt, a thicker order book (reflecting lots of buying interest) lessens the risk of a selloff.
When Mt. Gox's BTC/USD represented 80% or more of the trading volume for all currencies at all bitcoin exchanges it was vulnerable to manipulation during times when there wasn't a thick order book.
Because it takes a length of time to move funds into the exchange (from hours for a wire transfer to several days for Dwolla, for instance) an aggressive seller can profit from manipulation.  The method is to sell heavily into a small order book, and then put in bids there at the lower level to buy back coins at from "weak hands" who fear a further selloff and sell into those bids.  By the time additional USD funds arrive at the exchange from other buyers, the manipulator might have been able to buy back the entire number of coins sold but at a lower price.
Now that the BTC/USD market at Mt. Gox has dropped to a threshold near the 50% mark (of all currencies traded on all markets), a manipulator no longer has a vice-like grip on all bitcoin markets by controlling just the BTC/USD at Mt. Gox.
Instead of the Mt. Gox BTC/USD market leading the price moves, it now sometimes lags.  Thus during a selloff, trading markets at other exchanges might have some order depth at higher levels and thus the manipulator doesn't get to buy back as many bitcoins because the sellers go elsewhere to get a better price.

I'm not sure this answers the question very well. My understanding is that it shows a decreasing trend of the depth of sell orders, which can mean the demand is outstripping supply and the price is more likely to rise. Admittedly, this could be manipulated by someone with a large holding, but the price has risen substantially fairly soon after I posted this question.

Ya, sorry for putting too many words to basically say:
Lots of Bitcoins have moved away from Mt. Gox (because withdrawing the proceeds after you've sold them has become such a hassle) so don't read to too much into the lower level until you have combined numbers that show all the exchanges.


text:
CLI: Generate a new private key, unrelated to any existing wallet
I have a wallet on an offline computer, which has too many backups on connected computers.
I would like to generate a totally new bitcoin address on the offline computer, and use it as a cold storage address. I will then sign an offline transaction from the wallet to that new address and be safe.
How can I create a new Bitcoin private key from the Bitcoin CLI, without using any existing wallet keys / addresses?
I've looked into getnewaddress, but it seems to be getting the keys from the keypool on the existing wallet.
Note - I know I can use bitaddress.org offline, but I would like to use the basic bitcoin-core tools for this one.

pybitcointools' CLI random_key function perhaps?

@hartmut Thanks! Nice option, but I'd rather use bitcoin-core.

Maybe do:
1.) Move to current wallet.dat to a different location (will result in creating a fresh wallet)
2.) Start bitcoind/qt with -keypool=1 (if you want to avoid keypools)
3.) Call getnewaddress
You might also consider using a hardware wallet.

Yes it grabs from the keypool which is a security/back-up feature so that you have future addresses private keys stored.
I guess I don't understand your problem, why don't you want it to pull from the keypool exactly? I suppose you could change your bitcoin.conf to keypool=1 or some other small number, and then generate new addresses. That way your newly generated address will be a new one that is not from the previously existing key pool.  But again I'm not sure what purpose this would serve. The new keys will be saved to your wallet either way, whether your have keypool=1 or keypool=1000.

This does not work with HD wallets, as of bitcoin core 0.13

Also, you can not reduce the keypool by setting keypool=1 (You actually need to drain it by calling getnewaddress repeatedly)

you need to use multiple wallet.dat files.
create multiple wallet.dat files from file > backup wallet, after encrypting each wallet from settings > encrypt wallet
create as below example :
savings-wallet-1.dat
savings-wallet-2.dat
spending-wallet-1.dat
and so on...
on linux :
replace ~/.bitcoin/wallet.dat with the one you wish to use for your current session


text:
How to securly move bitcoins from a wallet.dat file to a paper wallet?
I have an old wallet.dat file with a few Bitcoins. It is stored in an isolated computer that is not connected to the internet.
I would like to get rid of the wallet.dat file, and move all the Bitcoins in it to a few separate paper wallets (created using bitaddress.org).
The naive approach would be installing Bitcoin-QT, and make the transaction. Unfortunately, this is insecure - hackers could potentially steal my Bitcoins while I am online.
The secure way should probably be something like:

Import the private key from wallet.dat using some command-line tool, on the offline computer.
Sign a transaction on the offline computer.
Copy the signed transaction (sans any private key!) to an online computer using a flash drive.
Publish the transaction from the online computer.

I've inspected a few tools, including Electrum and Armory, but I seek for your advice regarding the simplicity and safety of these tools.
Any advice how to sign a transaction offline and publish it offline, to salvage the bitcoins from my wallet.dat file?


text:
Bitcoind error -28
The following CLI command:
$ bitcoin-cli getblockcount

Gives the following error message:
error code: -28
error message:
Activating best chain...

Any idea what is error code: -28?

Error -28 is defined as RPC_IN_WARMUP, see https://github.com/bitcoin/bitcoin/blob/master/src/rpc/protocol.h.
The bitcoind server has just started and is still processing its stored blockchain data to figure out what it has.  It can take several minutes.  Activating best chain is one stage of this, where the daemon looks at the blocks it knows so far and determines which fork is the best chain.   So it cannot yet tell you the number of blocks (in the best chain), because it doesn't yet know what the best chain is.
If you try the call again in a few minutes, it should succeed.

Seems like a patch making the bitcoin-cli error message print that text would be helpful. =)

You can follow progress by tailing the debug log: tail -f debug.log

This would be normal if you just started your bitcoind service and it is still verifying downloaded blocks.
It can be a result that bitcoind did not had time enough to write changes to disk last time it was used or that it downloaded blocks but didn't prozess them jet.
Just let bitcoind run a bit longer and try the command again.
Here is a similar answer that goes a bit into more detail:
What does "Activating Best Chain" mean?


text:
What does Bitcoin-Qt "Change Passphrase..." do to existing private keys and corresponding addresses?
"Change Passphrase..." obviously lets me encrypt the wallet with a new string of text.  I think (correct me if I'm wrong) that this creates new private key(s) inside wallet.dat.
How are existing addresses affected when the passphrase is changed?

Are they still linked to the old private key (previous passphrase)?
If so, should I send those Bitcoin to myself (sending them to a new address that was generated after the change of passphrase)?

The wallet actually uses a randomly generated master key to encrypt the keys, and this master key is encrypted using your passphrase.
When you change the passphrase, all that changes is the encrypted master key. The actually encrypted wallet keys aren't touched at all.

Randomly generated... So, is the strength of private keys dependent in any way on the strength of the master key? Will a master key passphrase = "Password1" result in strong or weak private keys?

The private keys, and the master key, will be strong no matter what. However, an attacker with access to your wallet will attack the weakest link: the password you used to encrypt the master key.

If your wallet hasn't been compromised (how can you be sure?) then it should be enough to secure it with a strong passphrase and then be sure to back it up.
If your wallet has been or even just might have been compromised then securing it with a strong passphrase now might not be enough.  Sending the Bitcoins at risk to a new address in the same wallet generated after the strong passphrase is put into place might not even be enough.  It might take creating a whole new wallet on a known to be uncompromised system (how can you be sure?) and securing it with a strong passphrase before using an address generated in it to establish security.
Backing up your wallet to a cloud, e.g. emailing it to a Gmail account, etc., puts it at risk.  If you ever did this before securing it with a strong passphrase then you should really move to a new wallet.  Deleting the pre-strong passphrase copies is an illusion.


text:
Would a reduced block generation time make the Finney attack more difficult?

Related Question:
What can be done to mitigate the risk of a Finney attack?

The Finney attack is a form of double-spending attack where the attacker pre-mines a block containing a conflicting transaction and then publishes a transaction. A merchant relies on the published transaction to do something irreversible. The attacker then succeeds if he can publish the pre-mined block after the merchant has committed and before the network can find a different block. (The merchant must act irrevocably on a published, but unconfirmed, transaction.)
It has been suggested (by David Perry) that reducing the block generation time will make the network more resistant to this kind of attack. The reasoning is (I assume) that the window in which the attacker can launch the attack, the time after he publishes the transaction and before that transaction gets into a block, would be smaller. However, I don't find this argument convincing.
First, the attacker can stretch the interval by creating a burst of meaningless transactions using older coins or with small transaction fees. He can gather lots of new inputs into his transaction to reduce its priority. Thus, he can make it very unlikely that his published transaction will get in the next block found by the network anyway.
Second, with a faster block generation time, the difficulty will be lower. The attacker has to wait until he's lucky anyway. So maybe he can just wait until he mines two blocks ahead of the network. Then while it's more likely the network will find a block before he can complete his attack, the network has to find two blocks, not just one. And meanwhile, he can keep looking for even more blocks. (Imagine he is conspiring with a mining pool that has, say, 30% of the network's hashing power.)
So what is the correct analysis? Would a faster block generation time really make any difference to the effectiveness of Finney attacks?

Assuming all else is equal (same network hashrate, etc) then the attacker still represents the same percentage of the overall hashrate and therefore may claim the same percent of the blocks for his/her attack. While it's true that faster block time increases the total number of blocks, reduces the difficulty and makes it so that the attacker has more opportunities to land an attack with the same hashrate it also lowers the detection time for such an attack and narrows the window.
In the standard Bitcoin network, a block is found roughly every 10 minutes, but realistically they are found along normal distributions with their peaks at 10 minute intervals. A block may be found immediately after another block or it may take 20 minutes to find the next block, but these are not typical cases. I don't have data to show what one standard deviation from the 10 minute mark would be, but I can say that if block time were reduced such that the region of +/- 1 standard deviation overlapped slightly, an attacker would face a statistically significant risk of a block being found before he or she could execute the Finney attack. I have no idea what other effects this might have on the network, and it would require significant testing to confirm its feasibility.
Even if the +/- 1 SD region did not overlap, the distance between their boundaries is effectively the period of time an attacker has to execute an attack, so anything which narrows this gap reduces the effectiveness of a Finney attack.
The active question which I've still not found an answer to, is this: Does the value of σ² for the distribution of block finds change along with average block time or is it somewhat static? If σ² remains the same then decreasing the block time will drastically effect the ability of an attacker to utilize this method, but if it decreases proportionally to block time then the only effect block time has on such an attack is the added requirement of greater precision in timing.
Edit: I've received confirmation that block generation isn't a normal distribution but rather a Poisson distribution and that the time window for a Finney attack does scale linearly with block time. To this end, reduced block time provides no statistical advantages over normal block time, but it does still require an increase in precision on the part of the attacker. As I've not heard of anyone executing a Finney attack, even as a proof-of-concept it's questionable how much the precision requirement would help in preventing attacks, though the effectiveness of such is probably more dependent on the merchant/business model than on the network itself.

Just realized some browsers may not correctly display "σ²" - for those who get blocky nonsense instead of pretty Greek letters that's "sigma squared" or the variance of the normal distribution.

Small correction/addition: the time between two blocks is not distributed normally but follows an exponential distribution with λ=10min^(-1). The standard deviation of this distribution equals the mean time between consecutive blocks - it therefore overlaps regardless of the block time.

Sorry, please disregard the last sentence above - I was too slow to edit. What I wanted to add: Since the block generation itself is a Poisson process, the probability of a block being found within any fixed-length time interval is always the same. The time-window for a possible Finney attack therefore scales linearly with the average time between blocks.

Good to know, I'll edit my post with this new information. Thanks!

I tried calculating the standard deviation of the time it takes for blocks to be found, but it's hard because the time stamps on blocks isn't accurate.  Sometimes the timestamp on a block is earlier than the timestamp on the previous block.  See for example blocks 163966 (2012-01-26 19:52:37) and 163967 (2012-01-26 18:41:05).  Given this, the average over the last year is 546 seconds, and the standard deviation is 593 seconds.


text:
Does Lightning Network has concept of continuous stream of value?
Examples:

Car insurance: $1000 per year.
Legal consultation: $500 per hour.
Visiting a website: $100 per hour.

Assuming 1 BTC = $8000
1 hour = $100 = 0.0125 BTC = 1,250,000 sat
1 second = 1,250,000 sat / 3600 = 347.22 sat
I could generate a new invoice and pay it every second.
Continous stream of value?
I was thinking about something else:

until further notice, please charge me 3472.22 sat per second

To avoid me going offline, there could 10 second heartbeat.
Is it overcomplicated?
Because of speed of light limit and network propagation, 1s resolution is good enough, no need for a continous stream of value.
Issuing a new invoice every second is a simple workaround and no need to overcomplicate.
Or maybe it exists natively?
EDIT / UPDATE: https://github.com/lightningnetwork/lightning-rfc/wiki/Brainstorming#streaming-payments

Streaming payments is not part of the lightning network protocol yet.
However you can build a lightning app that simulates exactly this. There was a demo by alekos Filini on lädt years lightning residency. Check out https://youtu.be/IlSVTir_9Ns
When AMP is coming streaming payments could be stimulated with AMP by setting up more and more routes. But that would be rather fancy.
So I guess you create an app on top of lightning to solve streaming payments

However you can build a lightning app that simulates exactly this. - I'm stealing this idea. Not exactly stealing because I feel partially responsible of thinking about it, just not being fully aware if this is already a part of the protocol... Also related: https://github.com/lightningnetwork/lightning-rfc/issues/399 (seems like the receiving node needs to create the invoice first in order to receive a payment)


text:
blockchain.info receiving address changes - is it OK to put BTC address on the website?
Wallet from blockchain.info change the receiving address from time to time. I guess the rationale is to protect my privacy or something.
In reality I'd be more secure in my head if I had the same BTC address...
Solution to that would be to create own vanity address, but in the meanwhile - is it OK if I publish the address on the website and will it work in 6 months?
EDIT / UPDATE: Wish the changing addresses were better explained - https://en.bitcoin.it/wiki/Deterministic_wallet - I was quite seriously worried why my address is changing.

You can view addresses by going to Settings -> Addresses, & scroll down to click on Used Addresses.

https://blockchain.info/wallet/#/settings/addresses
Source: https://twitter.com/AskBlockchain/status/857605907915657217

I'm not sure from blockchain.info because its a wallet.
You should use an address that you have to download to your computer and use a keystore file with password. No one has the keystore file or password so it'll be safe.
Try:
https://bitcoin.org/en/download
and there are many others.
You're using another company and if they go out of business (I doubt blockchain.info would ever) then you may lose your coin.

I know that address is safe, I'm worried that it constantly changes and I don't even know to see the history of all receiving addresses...

Theorically speaking, Bitcoin was designed to use 1 address per transaction and not to reuse them. Be it as it may, users always do the opposite to what developers create (trust me, I know). In your case, you may have received a transaction and the system gave you a new address - they don't change randomly.


text:
Talking to bitcoind thru web browser returns empty JSON document
I am attempting to access bitcoind's http-json-rpc api thru firefox. I enter the following URL
http://user:password@localhost:8332/getinfo

and it returns
There was an error parsing the JSON document. The document may not be well-formed.
Document contents:

So the document contents are empty, but when I inspect element and look at the response, I get
Status-code: 404 Not Found
Connection: Close
Content-Type: "application/json"
Server: "bitcoin-json-rpc/v0.8.2-815-g5f083af-beta"

So the server is replying, but doesn't recognize the request or something.
My bitcoin.conf file reads
rpcuser=user
rpcpassword=password
rpcport=8332

If I do
 http://user:password@localhost:8332/

instead, it gives me a 500 Internal Server Error
Any idea what is missing?

You need to POST the request according to the JSON RPC specifications. So this will not work using Firefox without any special extension that lets you set POST information. You cannot simply request the page http://user:password@localhost:8332/getinfo and expect bitcoind to return the getinfo. There is no page system, it's not a normal www-server (i.e. pages hyperlinked together), it just uses the HTTP protocol to transport JSON. As long as you make that POST request correctly, I don't think it mattes what page you call.


text:
Found my old wallet, is it empty?
So I found my old wallet from 2011, I was able to pull my address and my PrivateKey using  pywallet. I downloaded Bitcoin-QT, copied the old wallet over and reran with -scan. Since it was a new install the blockchain is still updating (not finished as of this post).
I searched my address at blockchain.info and it said that address didn't have a balance. With that being said, are my efforts at recovering the wallet pointless? I pulled the wallet off an old drive so it hasn't connected since 6/2011. The entire directory is intact and the block that was processed is still in the directory as well, about 301MB big. Not sure if that helps me at all in this case.
EDIT: Here'e the pywallet dump with critical data removed. The fact that there is nothing under tx makes me believe that I'm wasting my time.
{
"bestblock": "REDACTED",
"ckey": [],
"defaultkey": "1PSatNhRDmmR6rfK5c9XJvqwB92z7beRa",
"keys": [
    {
        "addr": "1PSatNhRDmmR6rfK5c9XJvqwB92z7beRa",
        "compressed": false,
        "hexsec": "REDACTED",
        "label": "",
        "private": "REDACTED",
        "pubkey": "REDACTED",
        "reserve": 0,
        "sec": "REDACTED",
        "secret": "REDACTED"
    }
],
"mkey": {},
"names": {
    "1PSatNhRDmmR6rfK5c9XJvqwB92z7beRa": ""
},
"pool": [],
"settings": {
    "addrProxy": "127.0.0.1:23075",
    "fGenerateBitcoins": "False",
    "fUseProxy": "False"
},
"tx": [],
"version": 32100
}

what do you get with listtransactions?

I get an empty dataset from Bitcoin-QT. The Blockchain hasn't finished downloading yet, so I'll try again once it has, but I'm sure it will be the same.

What do you mean by "the block that was processed"?

@nate-eldredge Sorry, my entire concept behind everything is still Beginner at best. What I'm referencing is the blk0001.dat file in the same directory as the wallet.dat on the older computer. I don't THINK it has any relevance to the recovery process, but thought I would throw it in there just in case.

Oh, I see. blk0001.dat is just blocks (transaction data) that you have downloaded, so indeed it is not relevant here. Anyway, it sounds like you never had any coins, so there is nothing to recover.

It's worth keeping in mind that your "wallet" doesn't actually contain any bitcoins. What your wallet contains is the private keys that permit you to spend coins that have been sent to any of your addresses. Which addresses have been sent coins is a matter of public record (the blockchain).
If you had previously received (or mined) coins using one or more of your addresses that are contained in that wallet, then the record of those transactions will still exist. Note that your wallet likely contains more than one address, particularly if you've used it for anything at all. The address you have shown in your question has not received any coins.
If you have copied your old wallet.dat file into a new Bitcoin client, the first thing to do would be wait for the blockchain download to complete. Your client won't know about any coins that have been sent to the addresses in your wallet without actually seeing the whole blockchain.

That's pretty much what I assumed. I've never had anyone send me any BTCs before, I had just done a bit of mining on the older computer for several months and then forgot about it. What about the processed block that's on the older drive? Anything that can be done with that?

If you had done "a bit of mining" then one of three things happened: (1) You were solo mining and you got the (then) 50 BTC mining reward (this would be really important and lucky); (2) You were solo mining and never found a block; (3) You were mining in a pool and got some share of a mined block. It sounds like (2) was probably the case. Also, I'm not sure what you mean by "processed block". Is that the blk0001.dat file?

The blk0001.dat file that you found on your old drive has no value; it is a copy of the actual blockchain at the time you stopped running that client. Your newly installed client has probably already downloaded the blockchain well past that point.

Yeah, (2) does sound like that's what happened, especially if the address I have from that wallet still reports back with no BTCs from blockchain.info

Keep downloading for sure
If you were given the address when you began to mine and then you weren’t online to receive the bitcoin then you sync that address at least up to the date the bitcoin were sent to you in order to show a balance
Also, import the private key into a wallet and then click on receive more addresses or something like that and it will give you more addresses from that wallet
I could be wrong but I’m pretty sure that’s what I remember

authors: Ярослав Малашкевич


text:
How can one remain relatively anonymous while using Ripple?
Inspired by this and that.
What can an individual that uses Ripple do in order to remain as anonymous as possible? How do Ripple's "anonymity profile" compare to Bitcoin?
One specific difference is that Ripple accounts need XRP to be opened, and that XRP has to come from somewhere, while Bitcoin accounts are free to create.

Current client doesn't expose it yet, but each account is really an Account Family of un-linkable addresses which can be single use.
https://ripple.com/wiki/Account_Family

Damn, those Ripple devs thought of everything!

They incorporated all the lessons of bitcoin and more

Wouldn't the trust network give away identities though?

It's easy to be anonymous in the crowd trusting a major gateway, real use of human-to-human trust network will have to wait for some serious project to create an easy to understand UI and some actual compelling use for it, which I believe there are plenty of but this stuff is still way ahead of even almost most ripple nerds :-)


text:
Is Ripple's distributed exchange scalable?
This question asks about the scalability of Ripple in general, and has an ok answer.
However, it doesn't mention the distributed exchange built in Ripple. How is its current/future architecture designed to cope with scale?

I'm not sure I understand the question. As long as Ripple itself works, do you have any reason to believe this subset of its feature could stop working on its own?

@Lohoris - I envision a possibility that other parts of Ripple are scalable (like Bitcoin, as the answer says), which the distributed exchange might not be. I have no idea whether this possibility is real or not, I would simply like some input from someone who understands the order matching engine, and can comment whether it, too, is "as scalable as Bitcoin".

It is designed to be highly scalable.
Offers are aggregated with others offers of the same currency pair in the same direction of the same quality (rate). The ledger has a "next index" operation and offers are indexed by quality, so finding the best offer in an order book is as simple as computing the index for the base of the order book and looking at the next ledger entry.


text:
How to import blockchain.info wallet file?

Possible Duplicate:
How to restore locally a MyWallet backup?

I have blockchain.info backups, but I never test them.
How do I make sure they work?
What client should I load them into, and how?
I just want to load the wallet and do a test transfer, so the wallet doesn't have to be very fully featured etc... does Electrum support this kind of import? (I want to save on blockchain download)

I think http://bitcoin.stackexchange.com/q/3034/659 is close enough to this question to be considered a duplicate.


text:
get utx scriptPubKey to become an object
I'm using this python script https://github.com/sebicas/bitcoin-sniffer
When I see a utx I look at each output and find the scriptPubKey
I expected to see something like
"scriptPubKey": {
   "asm": "OP_DUP OP_HASH160 2544bedede7298fe7cedb3fcd0eb5fa73729eb64 OP_EQUALVERIFY OP_CHECKSIG",
   "hex": "76a9142544bedede7298fe7cedb3fcd0eb5fa73729eb6488ac",
   "reqSigs": 1,
   "type": "pubkeyhash",
   "addresses": [
                    "14Q4MdFGqFbP9WPzz3AXjsdxZC68rCQjj1"
                    ]
                }

but instead I see
"scriptPubKey":v��_/{�/k>//��7`HH��

Is it binary or encoded or encrypted??
How do I get the information I need from the utx?
I am looking to get asm and hex

I don't know much about python, but I've had similar issues with other libs and the solution was to declare it a string.

I tried str(scriptPubKey) and v��_/{�/k>//��7HH��` is exactly what it looks like