1. 程式人生 > >初識比特幣——比特幣地址

初識比特幣——比特幣地址

比特幣地址是比特幣網路的身份標示,用於接收bitcoins轉賬。它是由1或3開頭的26到35位的數字和字母組成,生產不需要任何代價,一個使用者可以擁有多個地址。很多錢包工具可以方便的生成和管理比特幣地址。下面我會簡單介紹下比特幣地址的生成原理。

  1. 隨機生產一個符合ECDSA規範的私鑰;

    18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725
  2. 根據ECDSA,生成公鑰;

    0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6
  3. 對公鑰執行SHA-256hash演算法;

    600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
  4. 對3的結果執行RIPEMD-160hash演算法;

    010966776006953D5567439E5E39F86A0D273BEE
  5. 在4的結果前面增加版本號(0x00是主網路 - Main Network);

    00010966776006953D5567439E5E39F86A0D273BEE
  6. 對5的結果執行SHA-256hash演算法

    445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094
  7. 對6的結果再次執行SHA-256hash演算法

    D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30
  8. 取7的前4個位元組,這是地址的校驗和(checksum)

    D61967F6
  9. 將8的結果追加到5的結果後面,形成25位元組的比特幣地址

    00010966776006953D5567439E5E39F86A0D273BEED61967F6
  10. 對9的結果執行 Base58Check 編碼演算法,得到常用格式的比特幣地址

    16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

從上述步驟中明顯可以看出,比特幣地址和公鑰並不是一個概念,只不過為了簡單起見把比特幣地址說成了公鑰而已。
比特幣地址不推薦重複使用,正常情況下,應該一個交易一個地址,這樣能更好的保護比特幣私鑰和利用的比特幣網路的準匿名性。