在银行转账,靠的是账号密码和银行的审核;在区块链上,没有任何机构帮你核对身份,网络只认一样东西:数字签名。弄懂它,也就弄懂了为什么私钥那么重要。

转出 $BTC 时,钱包会用私钥给交易签名,全网节点用公钥核对这个签名。当前 83,037.79(24h +0.42%)。

【一对密钥】

数字签名用一对密钥完成:私钥用来生成签名,公钥用来验证签名。私钥是一个随机生成的大数,公钥由私钥通过椭圆曲线运算算出来,比特币和以太坊用的都是 secp256k1 这条曲线。

这个运算是单向的:从私钥算公钥很容易,从公钥反推私钥在计算上不可行。所以公钥和由它得出的地址可以公开,私钥只能自己保管。

【签名证明了什么】

发送一笔交易时,钱包用私钥对交易内容签名,全网节点用公钥验证。验证通过,就同时证明了两件事:交易确实来自掌握私钥的人,而且签名之后内容没有被改过。金额、收款地址哪怕改动一个字节,原来的签名就验证不过。

要注意,签名并不加密交易内容。链上交易的金额和地址依然对所有人公开,签名解决的是“是谁发的、有没有被改”,不是“别人能不能看到”。

【防止一笔交易用两次】

以太坊的每笔交易都带有递增的 nonce,同一个 nonce 只能被打包一次;交易里还包含链 ID(EIP-155),签好的交易不能被拿到另一条链上重放。比特币则靠“每个未花费输出只能被花一次”的规则,防止同一笔币被重复花费。

【签名不只是转账】

钱包弹出的签名请求,不一定是转账,也可能是代币授权,或者是一段链下签名消息。有些链下签名一旦签下,效果和直接授权一样,对方可以凭它转走你的代币。

所以签名之前,看清操作类型、交互的地址和数量,看不懂就先不签。任何让你提供私钥或助记词来“验证签名”的,一律是骗局。

【一句话总结】

在链上,签名就是你的“亲笔签字”,而私钥是唯一能写出这个签字的笔。笔丢了或被人拿走,没有任何机构能帮你撤销。信息多个来源核实再决定,不要光听一家之言。

有补充的话,留言区说说。

加密资产波动大,杠杆别太重。