Ripemd 160 bitcoin utility makes it easy to deal with Bitcoin private keys and addresses in their native and various intermediate formats. There is a bunch of information here. The secret exponent is displayed in decimal and in hex. Note that the WIF simply contains the exponent encoded using “hashed base 58”.
The “hashed base 58” encoding is used to represent an integer with a checksum for validity. A 32-bit checksum is appended to the binary form of the integer, forming another integer. Bitcoin clients use public keys to validate that transactions are signed by an entity that has knowledge of the corresponding secret exponent. The x, y value is on the elliptical curve used by bitcoin.
Type “help”, “copyright”, “credits” or “license” for more information. This is the internal format that Bitcoin uses in transaction signatures to encode public keys. There is an uncompressed format, which has a prefix of a single 04 byte, followed by the x and y coordinates, and a compressed format, which has a prefix of 02 or 03 depending upon whether the y coordinate is even or odd, followed by the x coordinate. The hash160 value is the ripemd160 hash of the sha256 hash of the bytestream of the sec version of the key. The bu utility will accept input in nearly any format, automatically determining the input type, and display output of all values that can calculated. Obviously if you enter a Bitcoin address, you won’t get the corresponding WIF! The only thing that it can be converted to is a hash160.
I’m really liking your pycoin implementation. The code seems really cleanly written and the BIP0032 implementation is very useful. M-of-N Bitcoin transactions and for creating and signing transactions to spend from those addresses? The VM in pycoin does not currently support OP_CHECKMULTISIG, which would be the first requirement in validating M-of-N transactions.
Signing M of the keys might be fairly straightforward to do all at once, but that’s not a very useful use case, since generally one person does not have access to M of the private keys. M could create a partially signed transaction, pass it on to the next person, who could then add a signature, and so on. So doing this would be a bit of work, since a partial transaction would have to be created. Are there any M-of-N transactions in the blockchain? Finding one would be a good first step. How do you propose people make wallets, do we really want pure random or could someone make a WIF based on the sha256 of a very good passphrase? In this last case nothing needs to be stored in order to be able to access the bitcoins.