我正在使用 Laravel 并尝试使用 Solana 区块链 当我尝试生成钱包地址时,我得到了正确的地址,但私钥的格式不正确 这是我下面的功能
public function generateWallet() {
try {
// Initialize the curve and generator
$adapter = EccFactory::getAdapter(); $generator = EccFactory::getNistCurves()->generator256();
// Generate private key
$privateKey = $generator->createPrivateKey();
// Generate public key
$publicKey = $privateKey->getPublicKey();
// Serialize keys to DER format
$privateKeySerializer = new DerPrivateKeySerializer($adapter);
$publicKeySerializer = new DerPublicKeySerializer();
$privateKeyDer = $privateKeySerializer->serialize($privateKey);
$publicKeyDer = $publicKeySerializer->serialize($publicKey);
// Base58 encode the 32-byte public key
$publicKeyBytes = str_pad(gmp_export($publicKey->getPoint()->getX()), 32, "\0", STR_PAD_LEFT);
$base58 = new Base58();
$walletAddress = $base58->encode($publicKeyBytes);
return [
'private_key' => bin2hex($privateKeyDer),
'public_key' => bin2hex($publicKeyDer),
'address' => $walletAddress
];
} catch (\Throwable $th) {
return [$th->getMessage()];
}
}
我想获得一个正确的私钥,然后我可以用它来连接钱包,发送交易和类似的东西
我尝试询问chatgpt,但没有有用的答案
我认为您可以使用此代码以十六进制格式查看您的私钥
private_key_bytes = bytes.fromhex(privatekey) 打印(私钥字节)
您可以使用十六进制格式登录幻像上的钱包地址,以防您的自动交易签名失败..
应该看起来像这样
ee6abb1689094e6763b93c9d9b1b220788643a9938bf6be66c441c7d2b3c3e94 b5ac482de4c8c1e9957c7bd7dc1e3d8e45ee8c6667e7c5574b9b882a6c2bd18e
对于自动签名,我相信您必须将私钥编码为 Base64 并在签名期间对其进行解码