|
rust生成tron地址都不行
grok2生成的代码:
[ol]use secp256k1::{Secp256k1, SecretKey};use sha2::{Sha256, Digest};use ripemd160::{Ripemd160};use base58::{ToBase58};use rand::rngs::OsRng;fn generate_tron_address() -> String { // 生成私钥 let secp = Secp256k1::new(); let mut rng = OsRng::new().expect("OsRng"); let secret_key = SecretKey::new(&mut rng); // 从私钥派生公钥 let public_key = secret_key.public_key(&secp); // 压缩公钥 let serialized_public_key = public_key.serialize(); // 计算公钥的SHA256哈希 let mut hasher = Sha256::new(); hasher.update(&serialized_public_key[..]); let sha256_result = hasher.finalize(); // 计算SHA256哈希的RIPEMD160哈希 let mut ripemd160_hasher = Ripemd160::new(); ripemd160_hasher.update(&sha256_result); let ripemd160_result = ripemd160_hasher.finalize(); // 添加Tron地址前缀 let mut address_bytes = vec![0x41]; // Tron地址前缀 address_bytes.extend_from_slice(&ripemd160_result); // 计算地址的SHA256哈希 let mut hasher = Sha256::new(); hasher.update(&address_bytes); let sha256_result = hasher.finalize(); // 再次计算SHA256哈希 let mut hasher = Sha256::new(); hasher.update(&sha256_result); let sha256_result = hasher.finalize(); // 添加校验和 address_bytes.extend_from_slice(&sha256_result[..4]); // 转换为Base58编码 let address = address_bytes.to_base58(); address}fn main() { let tron_address = generate_tron_address(); println!("Tron Address: {}", tron_address);}[/ol]复制代码
deepseek生成的代码:
[ol]use secp256k1::{Secp256k1, SecretKey, PublicKey};use rand::rngs::OsRng;use sha3::{Digest, Keccak256, Sha3_256};use bs58;fn main() { // 生成私钥 let secp = Secp256k1::new(); let mut rng = OsRng::default(); let secret_key = SecretKey::new(&mut rng); // 导出公钥(压缩格式) let public_key = PublicKey::from_secret_key(&secp, &secret_key); let public_key_bytes = public_key.serialize_compressed(); // 对公钥进行Keccak-256哈希,取后20字节作为地址主体 let mut keccak = Keccak256::new(); keccak.update(&public_key_bytes); let pub_key_hash = keccak.finalize(); let address_body = &pub_key_hash[12..]; // 后20字节 // 添加版本号0x41 let mut address_with_version = vec![0x41]; address_with_version.extend_from_slice(address_body); // 计算校验和:两次SHA3-256哈希,取前4字节 let mut first_sha3 = Sha3_256::new(); first_sha3.update(&address_with_version); let first_hash = first_sha3.finalize(); let mut second_sha3 = Sha3_256::new(); second_sha3.update(&first_hash); let checksum = &second_sha3.finalize()[..4]; // 组合成25字节 let mut final_bytes = address_with_version.clone(); final_bytes.extend_from_slice(checksum); // Base58编码 let tron_address = bs58::encode(final_bytes).into_string(); println!("Private Key: {}", hex::encode(secret_key.secret_bytes())); println!("Public Key: {}", hex::encode(public_key_bytes)); println!("Tron Address: {}", tron_address);}[/ol]复制代码
grok明显生成了错误的代码 |
|