intro
公钥是非对称密码学中公开的那一半密钥,用来验证由对应私钥产生的签名或加密信息。它本身不具备直接花费资产的能力,但任何人都可以在区块链上看到并用来生成收款地址。举例来说,比特币钱包的公钥通常是 33 字节(66 位十六进制字符)的压缩形式。
工作原理/How it works
生成公钥的过程是把私钥(一个 256 位的随机数)输入到椭圆曲线乘法运算中,得到唯一的点坐标即为公钥。该运算是单向的:从私钥可以轻易算出公钥,却几乎不可能从公钥逆推出私钥。实际使用时,发送方使用收款方的公钥生成收款地址,收款方再用对应私钥签名才能花费该地址中的币。
常见用例/Common use cases
- 收款地址生成:大多数加密貨幣(如比特幣、以太坊)會先把公钥哈希後再編碼成可讀的地址,讓使用者分享給付款者。
- 訊息驗證:開發者可以讓使用者用私钥簽署一段文字,任何人只要拿到簽名與公钥就能驗證內容未被篡改。
- 多重簽名錢包:在 2‑of‑3 多簽錢包中,需要三個不同的公钥,其中任意兩個對應的私钥簽名才能執行交易。
常见误解/Pitfalls
許多人誤以為「公開」的公钥會洩漏資金安全,事實上只有掌握私钥才能動用資產。另一個常見誤解是認為公钥可以隨意更換而不影響過去的交易,實際上已使用過的公钥對應的地址已被永久寫入區塊鏈,不能更改。最後,使用不安全的隨機數產生器生成私钥會導致相同公钥被多個使用者共享,進而造成資金被盜的風險。
FAQ
Q1:如果有人知道我的公钥,我的資產會被盜嗎?
A1:不會。公钥只能用來生成收款地址或驗證簽名,沒有私钥就無法簽署交易。
Q2:公钥與地址是一樣的嗎?
A2:不是。地址是對公钥經過哈希與編碼後的結果,通常更短且更適合人類使用,例如比特幣地址長度約 34 個字符,而公钥是 66 個十六進制字符。
Q3:是否可以自行更改已使用過的公钥或地址?
A3:不行。區塊鏈的不可變性意味著一旦交易包含某個地址,該地址及其對應的公钥就永久寫入區塊鏈,無法更改或刪除。