
不断生成随机密钥对,检查地址是否符合要求。 基本要一百万次以上才能匹配到一个。
下面是 claude code 完成的代码,Node.js 实现,使用官方库。
package.json
{ "name": "solana-v2ex-generator", "version": "1.0.0", "description": "Generate Solana addresses ending with v2ex", "main": "generate-v2ex-address.js", "scripts": { "start": "node generate-v2ex-address.js" }, "dependencies": { "@solana/web3.js": "^1.95.0", "bs58": "^5.0.0" } } generate-v2ex-address.js
const { Keypair } = require('@solana/web3.js'); const fs = require('fs'); const bs58 = require('bs58'); async function generateV2exAddress() { let attempts = 0; const startTime = Date.now(); console.log('开始生成以 V2EX 结尾的 Solana 地址...\n'); while (true) { attempts++; const keypair = Keypair.generate(); const publicKey = keypair.publicKey.toBase58(); if (attempts % 10000 === 0) { console.log(`已尝试 ${attempts} 次...`); } if (publicKey.endsWith('v2ex')) { const elapsedTime = (Date.now() - startTime) / 1000; console.log('\n 成功找到匹配的地址!'); console.log(`尝试次数: ${attempts}`); console.log(`耗时: ${elapsedTime.toFixed(2)} 秒\n`); console.log('='.repeat(60)); console.log('地址:', publicKey); console.log('私钥 (Base58):', bs58.encode(keypair.secretKey)); console.log('='.repeat(60)); const result = { address: publicKey, privateKey: bs58.encode(keypair.secretKey), privateKeyArray: Array.from(keypair.secretKey), attempts: attempts, timeInSeconds: elapsedTime }; const filename = `v2ex-address-${Date.now()}.json`; fs.writeFileSync(filename, JSON.stringify(result, null, 2)); console.log(`\n 结果已保存到: ${filename}`); break; } } } generateV2exAddress().catch(console.error); 1 hellojay 111 天前 这个有意思,感谢感谢 |
2 hellojay 111 天前 已经使用 sol 送出感谢~ |
3 hzlzh PRO 哈哈 有趣 |
4 tom8 111 天前 之前搞过 eth 888888 结尾的,go 实现下来生成快很多 |
5 itechify PRO 有意思 |
6 cat 111 天前 av2ex |
7 TracyMagic 111 天前 不需要这么麻烦。solana-keygen grind --ends-with v2ex:1 |
8 samuel 111 天前 真有趣!送出一点 V2EX 聊表心意 |
9 prefect 111 天前 有点不是很理解,这个不是本地生成的公私钥对吗?咋关联到钱包的?地址不是创建钱包的时候生成的吗~ |
10 kaichen PRO 从资产安全的角度不推荐。 如果只是生成这种 Vanity 地址玩玩没问题,但是真的别拿来存币。 区块链的公私钥机制就是为了提升抗破解能力,自己用的钱包还去撞特定前后缀,是在帮攻击者压缩搜索空间。 另外一个供给面是,让攻击者更好地容易准备一份与你地址前后缀相似的地址库,可以用这个地址库给你或者你收发对手方转垃圾代币或者小量代币,赌你看错地址转错,这是非常简单但极其有效的攻击手段。 历史上出过不少这种 Vanity Address 丢大钱的例子,网络上很容易搜索到,比如 https://www.certik.com/resources/blog/vanity-address-and-address-poisoning |
12 alinwu05 111 天前 这个有意思啊,人才! |
13 crocoBaby 111 天前 好厉害 |
14 Tink PRO 还有想法! |
15 vanillahz 111 天前 @kaichen 私钥会不会破解,取决于你用的 RNG 强度,本来空间就有 256 位,去掉 32 位也绰绰有余 第二种攻击取决于你有没有用通讯录/扫码转账的习惯。复制地址无论什么时候都是相当危险的 |
17 BeCool OP PRO @kaichen 1. 实际这个过程是“挑选”。假设你说的“压缩搜索空间”成立,那 crypto 可能要崩塌。此刻我们认为 V2EX 是 vanity 后缀,但世界上每个人可能他的 vanity 字符是不一样的。每个都是随机生成的,那么每个都可以被叫做“特定前后缀”。攻击者如果看到一个钱包有大量资金,尾数为 2fdsf 这样的,按照你的说法,攻击者可以根据这个后缀来压缩探索空间? 在第三方 app 钱包中如果刚好生成了 V2EX 或者 8888 的后缀,是否说明这个地址是不安全的? 2. 第二种攻击实际上和靓号无关,是批量无选择的攻击。不安全性依然是人导致的。 3. Solana 官方文档有一个叫做 “How to Generate a Vanity Address” 的文档,https://solana.com/developers/cookbook/wallets/generate-vanity-address 使用 solana-keygen grind 工具来生成 vanity 地址,支持前后缀,是否官方无视风险让我们使用不安全的方式? |
18 kaichen PRO |
19 ooTwToo 110 天前 可以给钱包创建一个域名,方便记住: https://www.sns.id/ |
20 BeCool OP PRO |
21 Bio 108 天前 同样疑问,自己生成的地址怎么绑定的? |
22 Oah1zO 108 天前 |