Non ho letto tutto il 3ad ma mi pare di capire che il problema è nei due formati della private key, c'è il formato che inizia con a o K o L e quello che inizia per 5 e poi c'è il problema dei due indirizzi bitcoin differenti perché le due private key (che è una sola) danno due bitcoin address.
Questo è un problema dell'algoritmo ellittico e non di multibit o di altro, comunque si possono fare le conversioni e questo non dipende dal programma usato, sono specifiche matematiche che non si perdono col tempo.
Per esempio il classico
https://www.bitaddress.org permette di generare una private key (5JfkD6nME2HJ9mxpEmqQNMYvBQ7qw2CmEaeiLt9nv12uAEf4jfA) e cliccando su Wallet details e inserendo la predetta chiave privata fornisce i dati voluti ovvero:
1L8udQVzcu9ninYLunZ9bowMyTA8NvMLFA (indirizzo bitcoin)
19N68NbupPn2HngfVzFD7QY2cVvhQJ75w (indirizzo bitcoin compresso)
e ovviamente c'è anche la chiave privata corrispondente a 5... ovvero quella compressa (Kzz1iQXAGUevhjTMVnte9Fhsiu3CySJvEwXTUkmoew9PDbSwqs3f) che inizia per K o L.
Si noti che la PrivK è sempre la stessa ovvero 32 Byte di dati solo che è aggiunta l'informazione relativa alla compressione o meno della corrispondente PubK: se si vuole l'indirizzo esteso allora si fa in modo che la PrivK inizi per 5, se si vuole l'indirizzo bitcoin compresso si fa in modo che inizi per a o K o L.
Comunque quando uno importa la PrivK sul core può vedere se gli va bene:
Chiave privata WIF
51 caratteri base58, inizia per a '5'
oppure:
Chiave privata WIF compressa
52 caratteri base58, inizia per 'a' 'K' o 'L'
In realtà la chiave privata è sempre la stessa ed è lunga 32 byte, a questa corrispondono due indirizzi bitcoin.
Qui le info che ho solo letto perché non so molto:
https://bitcointalk.org/index.php?topic=129652.0Le curve ellittiche non c'entrano, il problema sta nella conversione delle coordinate di un punto della curva ellittica in un indirizzo bitcoin.
Tra chiavi private e chiavi pubbliche c'è una perfetta corrispondenza biunivoca (si tratta rispettivamente di scalari a 256 bit e di punti della curva ellittica P=(x,y) dove x e y sono numeri di 256 bit).
Per trasformare i 512 bit della chiave pubblica in una stringa di 160 bit che è l'indirizzo bitcoin, si deve fare l'hash256 delle due coordinate e poi ripmed160. Il problema nasce dal fatto che è possibile rappresentare un punto della curva ellittica usando anche solo la x e il segno di y (infatti se (x,y) è un punto della curva lo è anche (x,-y)), dal momento che il valore di y dipende solo dal valore di x --> y^2=x^3+7
Quindi poichè l'algoritmo hash produce 2 diversi risultati se gli diamo in input (x,y) o (x,+/-), si determina il problema che la stessa chiave privata, la quale determina dal punto di vista matematico un solo punto P della curva ellittica, produce in realtà due chiavi pubbliche P diverse (dal punto di vista dell'hash sono effettivamente diverse, poco importa che siano solo rappresentazioni diverse dello stesso oggetto matematico).
Quando importiamo una chiave privata nel nostro wallet, a quale delle "due" chiavi pubbliche si riferisce la chiave privata? E quindi quale indirizzo deve monitorare il wallet?
Per distinguere i due diversi casi, per quanto riguarda la chiave pubblica si usa la seguente convenzione:
"02" + 128 caratteri in formato esadecimale per la chiave pubblica standard (x,y) (8 + 512 bit)
"03" + 64 caratteri in formato esadecimale per la chiave pubblica compressa (x,pari) (8 + 256 bit)
("04" + 64 caratteri in formato esadecimale per la chiave pubblica compressa (x,dispari)) (8 + 256 bit)
Ma ricordo che la chiave privata è unica, quindi bisogna aggiungere delle informazioni quando si presenta la chiave privata al wallet (che per questo è o in formato WIF o in formato WIF compresso). In questo formato, dove si passa dalla rappresentazione binaria o esadecimale a quella base58, viene aggiunta (come dice il nome) anche quell'informazione che consente al wallet di sapere che tipo di chiave pubblica e quindi di indirizzo deve ricavare da quella chiave.
A complicare ulteriormente le cose, l'informazione che si aggiunge alla chiave privata per dire che da essa si deve ricavare la chiave pubblica compressa rende la chiave privata in formato WIF compresso più lunga rispetto alla chiave privata in formato WIF, ciononostante si chiama ancora "chiave privata compressa" poichè da essa si deve ricavare la chiave pubblica nella sua rappresentazione compressa.