Solana/私钥, 公钥与地址/私钥
Solana 是一个高性能的区块链平台, 安全性方面自然不能忽视. 私钥是用于签名交易和确保资金安全的关键部分. 它是一个大数, 更具体地来说,是 0 到 2²⁵⁶ 之间的任何数字(包含前者, 不包含后者). 在内存中, 通常使用长度为 32 的字节数组来储存它.
私钥标识用户的所有资产. 在交易中, 通过私钥创建签名来证明用户拥有硬币的控制权, 以便将硬币转移给他人. 因此, 用户必须始终保管好自己的私钥, 遗忘私钥等于丧失了自己硬币的控制权, 泄露私钥等于将硬币的控制权共享给他人.
现代的大多数区块链钱包(包括 phantom), 都隐藏了针对私钥的操作, 让用户自己操作私钥, 尤其是对技术不甚了解的用户, 其结果通常是灾难性的. 因此现代钱包更为流行一种叫做助记词的私钥变体, 当您看到助记词时, 应当了解它底层仍然是一个私钥.
回到我们的课程, 如果您想自己生成私钥, 你需要做的唯一一件事情就是生成一个长度为 32 的字节数组. 数组内的数据可以是任意的, 因此普遍的做法是寻找一个安全的随机源来填充数组. 下面演示几种不同的方式来生成 solana 的私钥.
python
使用代码生成私钥时, 最重要的一点是您不能使用伪随机数生成算法. 伪随机数是可复现的, 因此它们并不安全. 相反, 您应当使用密码学安全的真随机数. 假设操作系统始终能提供高质量, 加密安全的随机数据, 理想情况下由硬件熵源支持, 那么我们可以使用如下的代码来生成私钥.
import secrets
prikey = bytearray(secrets.token_bytes(32))
golang
package main
import (
"crypto/rand"
)
func main() {
prikey := make([]byte, 32)
rand.Read(prikey)
}
rust
fn main() {
let mut prikey = [0u8; 32];
getrandom::fill(&mut prikey).unwrap();
}
私钥是 solana 生态系统中不可替代的最重要的组成部分. 不要使用来源不明的私钥, 也不要将您的私钥存储在互联网上, 例如网盘或在线笔记工具中. 通过遵循正确的生成和存储流程, 您可以有效管理和保护您的数字资产. 请始终记住: 安全第一!