比特幣地址是一個由數字和字母組成的字串,可以與任何想給你比特幣的人分享。由公鑰(一個同樣由數字和字母組成 的字串)生成的比特幣地址以數字「1」開頭。下面是一個比特幣地址的例子:
1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy
在交易中,比特幣地址通常以收款方出現。如果把比特幣交易比作一張支票,比特幣地址就是收款人,也就是我們要寫入收款人一欄的內容。一張支票的收款人可能是某個銀行帳戶,也可能是某個公司、機構,甚至是現金支票。支票不需要指定一個特定的帳戶,而是用一個抽象的名字作為收款人,這使它成為一種相當靈活的支付工具。與此類似,比特幣地址使用類似的抽象,也使比特幣交易變得非常靈活。比特幣地址可以代表一對公鑰和私鑰的所有者,或是代表其他東西。現在,讓我們來看一個簡單的例子,由公鑰生成比特幣地址。
比特幣地址可由公鑰經過單向的加密哈希算法得到。哈希算法是一種單向函數,接收任意長度的輸入產生指紋或哈希。加密哈希函數在比特幣中被廣泛使用:比特幣地址、腳本地址以及在挖礦中的工作量證明算法。由公鑰生成比特幣地址時使用的算法是Secure Hash Algorithm (SHA) 和the RACE Integrity Primitives Evaluation Message Digest (RIPEMD),具體地說是SHA256和RIPEMD160。
以公鑰 K 為輸入,計算其SHA256哈希值,並以此結果計算RIPEMD160 哈希值,得到一個長度為160位(20字節)的數字:
A = RIPEMD160(SHA256(K))
公式中,K 是公鑰,A 是生成的比特幣地址。
提示比特幣地址與公鑰不同。比特幣地址是由公鑰經過單向的哈希函數生成的。
通常用戶見到的比特幣地址是經過「Base58Check」編碼的(參見「Base58和Base58Check編碼」一節),這種編碼使用了58個字符(一種Base58數字系統)和校驗碼,提高了可讀性、避免歧義並有效防止了在地址轉錄和輸入中產生的錯誤。Base58Check 編碼也被用於比特幣的其他地方,例如比特幣地址、私鑰、加密的密鑰和腳本哈希中,用來提高可讀性和錄入的正確性。