Symbol はデータの整合性を検証し、署名者の身元を認証するために 楕円曲線暗号 を使用します。
楕円曲線暗号は公開鍵暗号のアプローチです。暗号化システムは キーペア を使用します:
公開鍵は暗号理論によって秘密鍵から導出されます。具体的には Symbol は Twisted Edwards curve を Ed25519 デジタル署名アルゴリズムと SHA-512 ハッシュアルゴリズムを共に使用します。
catapult-server の crypto
モジュール下に implementation があります。
秘密鍵を使用して、アルゴリズムは64バイトの署名を生成するメッセージに署名できます。署名は、公開鍵を持つ特定のキーペアがエンティティに署名したことの検証に使用します。
実装は sign entities と catapult-server の crypto
モジュールの下で verify them にあります。
公開鍵はアドレスの短い形式で共有できます。 Symbol アドレスは次のものからなる Base32 エンコードされたトリプレット です:
次の手順を実行します convert a public key to an address:
Address PublicKeyToAddress(const Key& publicKey, NetworkIdentifier networkIdentifier) {
// step 1: sha3 hash of the public key
Hash256 publicKeyHash;
crypto::Sha3_256(publicKey, publicKeyHash);
// step 2: ripemd160 hash of (1)
Address decoded;
crypto::Ripemd160(publicKeyHash, reinterpret_cast<Hash160&>(decoded[1]));
// step 3: add network identifier byte in front of (2)
decoded[0] = utils::to_underlying_type(networkIdentifier);
// step 4: concatenate (3) and the checksum of (3)
Hash256 step3Hash;
crypto::Sha3_256(RawBuffer{ decoded.data(), Hash160::Size + 1 }, step3Hash);
std::copy(step3Hash.cbegin(), step3Hash.cbegin() + Checksum_Size, decoded.begin() + Hash160::Size + 1);
return decoded;
}
上記の説明通り、ブロックチェーンと疎通せずともアドレスを作ることができます。実際、ブロックチェーンはあるトランザクションにおいて、初めて現れたアドレスと公開鍵だけを追跡しています。
次項: ブロック
お探しのものは見つかりましたか? フィードバックをください。