FIGYELEM! A MicroCoinnak és a fejlesztő csapatának nincs köze a Mikron nevű ICO-hoz!

ECKeyPair

Innen: MicroCoin Wiki


Az ECKeyPair, vagy TAccountKey típus írja le a kulcspárokat amelyekkel a digitális aláírásokat készítjük. Alapvetően ECDSA kulcspárok tárolására alkalmas típusok. Pascal esetén a TAccountKey record, míg C# esetén az ECKeyPair osztály látja el a feladatot.

Használt görbék (curve)

Négyféle curve van használatban. A hozzájuk tartozó konstans értékek a következőek:

Secp256K1 = 714
Secp384R1 = 715
Secp521R1 = 716
Sect283K1 = 729

Tárolási módok

A kulcspárokat bináris módon tároljuk el a következő formátumokban

Wallet kulcsok

A wallet kulcsok a tárca kulcsai amelyet a Wallet.dat fájlban tárolunk.

Név Típus Hossz Leírás
Kulcs neve BinaryString / TRawBytes 2+0-255 byte A kulcs neve
Curve word 2 byte A kulcs típusa (ECDSA Curve
Publikus kulcs X koordináta BinaryString / TRawBytes 2+32-66 byte A publikus kulcs X koordinátája bináris formában
Publikus kulcs Y koordináta BinaryString / TRawBytes 2+32-66 byte A publikus kulcs Y koordinátája bináris formában
Privát kulcs BinaryString / TRawBytes 2+32-66 byte A privát kulcs

Kulcsok a blokkokban és a checkpointokban

A blokkokban és a checkpointokban csak a publikus kulcsokat tároljuk el név nélkül. A formátuma a következő:

Név Típus Hossz Leírás
A kulcs hossza word 2 byte A kulcs hossza
Curve word 2 byte A kulcs típusa (ECDSA Curve
Publikus kulcs X koordináta BinaryString / TRawBytes 2+32-66 byte A publikus kulcs X koordinátája bináris formában
Publikus kulcs Y koordináta BinaryString / TRawBytes 2+32-66 byte A publikus kulcs Y koordinátája bináris formában

Exportálás és importálás

Exportálni a walletből tudunk

Privát kulcs

A privát kulcs exportálása és importálása esetén a hexadecimális értékét használjuk szöveges formában. Pl. 5E4311DBABC3093A823F9F4BEE37418664C89416A6B4CAB2C2B5FC4C63EA86EE

Publikus kulcs

Publikus kulcs esetén az exportált kulcs a következő módon jön létre:

Base58Encode(HexToBinary("01" + Curve + Length(X) + X + Length(Y) + Y + substr(0,4, sha256(Curve + X + Y) )));
Fontos megjegyzés, hogy little endian bájtsorrendet használunk!
Példa egy exportált privát kulcsra

Az exportált privát kulcs: 3GhhbojiSMooXcGS7U8Q12y1HMdkmAwsocGNotgNRmv8MTxLBm2DBbJvXvuYDmhvxJrkcN1avWE49HBU5pFNtePDjpQSp7GYF8LmrA

Ezt base58 dekódolva: 01CA02200001B79643A659FE6B2A8887F2A2C184C3AC3BE04A98A86BE31574328A7C7129FD20001461059A9CA88C708A9B00B4A67ED4FC1C5352C9FD7EACAB710F7DB91207EC8337CC1FBB

Felbontva: 01 CA02 2000 01B79643A659FE6B2A8887F2A2C184C3AC3BE04A98A86BE31574328A7C7129FD 2000 1461059A9CA88C708A9B00B4A67ED4FC1C5352C9FD7EACAB710F7DB91207EC83 37CC1FBB


Tárolt érték Érték (Hex/dec) Magyarázat
01 01 A 01 prefix
CA02 02CA / 714 A kulcs típusa (ebben az esetben 714, azaz secp256k1
2000 0020 / 32 Az X koordináta hossza (32 byte)
01B79643A659FE6B2A8887F2A2C184C3AC3BE04A98A86BE31574328A7C7129FD Az X koordináta
2000 0020 / 32 Az Y koordináta hossza (32 byte)
1461059A9CA88C708A9B00B4A67ED4FC1C5352C9FD7EACAB710F7DB91207EC83 Az Y koordináta
37CC1FBB Az SHA256 első 4 bájtja