Solana中 PDA、ATA 与 普通Account 的区别与关系
普通账户地址 对于账户地址的创建是由一个密钥对来生成的,但在Solana中账户地址与以太坊中的账户地址还是有一些区别的。
以太坊账户地址 以太坊账户地址的生成过程:
通过私钥生成公钥 对公钥进行 Keccak-256 哈希 取哈希值的最后 160 位(20 字节)作为地址 将地址以 0x 开头,并根据需要选择是否使用 EIP-55 格式 地址中通常是小写字母,但也有大写字母的变种,称为 EIP-55 格式。在 EIP-55 中,某些字符会根据哈希值的大小写进行区分,从而增加地址的错误检查能力。
Solana 账户地址 Solana账户地址的生成过程:
通过私钥生成公钥,一般通过调用 Keypair.generate() 生成 公钥直接映射为账户的地址,长度为 32 字节 为了使用方便,一般对其进行 Base58 编码,将公钥转换为地址字符串 代码:
const { Keypair } = require('@solana/web3.js'); // 生成一个新的密钥对 const keypair = Keypair.generate(); // 获取公钥,实际上就是账户地址 const publicKey = keypair.publicKey; // 转换公钥为 Base58 编码的字符串(即账户地址) const address = publicKey.toBase58(); console.log("Solana Account Address (Base58):", address); 可以看到 Solana 中的账户地址就是公钥,平时使用的账户地址,一般都是指 Base58 编码后的字符串。
read more