|
rust生成tron地址都不行
grok2生成的代码:
- 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);
- }
复制代码
deepseek生成的代码:
- 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);
- }
复制代码
grok明显生成了错误的代码 |
|