生成一个 V2EX 结尾的 solana 地址 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
BeCool
118.45D
17.41D
V2EX    分享创造

生成一个 V2EX 结尾的 solana 地址

  •  1
     
  •   BeCool
    PRO
    111 天前 4131 次点击
    这是一个创建于 111 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原理

    不断生成随机密钥对,检查地址是否符合要求。 基本要一百万次以上才能匹配到一个。

    注意

    • 在安全的环境运行。
    • 生成后,彻底删除本地 JSON 文件。
    • 不要相信别人提供的在线地址生成器。

    代码

    下面是 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 条附言    111 天前
    如果你点击向我打赏,可以看到地址为:EiXwKoconqc6fccnjRJiPULaWBLvfeUhBFBM6dFav2ex
    第 2 条附言    111 天前
    评论区 v 友提醒,安装 solana-cli 工具也可以直接生成,使用 solana-keygen grind 命令,可以指定前后缀。
    Solana
    V2EX 支持通过 Solana 网络向内容作者打赏
    Livid 打赏了 100 $V2EX
    24 条回复    2025-08-09 22:34:24 +08:00
    hellojay
        1
    hellojay  
       111 天前
    这个有意思,感谢感谢
    hellojay
        2
    hellojay  
       111 天前   1
    已经使用 sol 送出感谢~
    hzlzh
        3
    hzlzh  
    PRO
       111 天前
    哈哈 有趣
    tom8
        4
    tom8  
       111 天前
    之前搞过 eth 888888 结尾的,go 实现下来生成快很多
    itechify
        5
    itechify  
    PRO
       111 天前
    有意思
    cat
        6
    cat  
       111 天前
    av2ex
    TracyMagic
        7
    TracyMagic  
       111 天前   5
    不需要这么麻烦。solana-keygen grind --ends-with v2ex:1
    samuel
        8
    samuel  
       111 天前
    真有趣!送出一点 V2EX 聊表心意
    prefect
        9
    prefect  
       111 天前   1
    有点不是很理解,这个不是本地生成的公私钥对吗?咋关联到钱包的?地址不是创建钱包的时候生成的吗~
    kaichen
        10
    kaichen  
    PRO
       111 天前   2
    从资产安全的角度不推荐。

    如果只是生成这种 Vanity 地址玩玩没问题,但是真的别拿来存币。

    区块链的公私钥机制就是为了提升抗破解能力,自己用的钱包还去撞特定前后缀,是在帮攻击者压缩搜索空间。

    另外一个供给面是,让攻击者更好地容易准备一份与你地址前后缀相似的地址库,可以用这个地址库给你或者你收发对手方转垃圾代币或者小量代币,赌你看错地址转错,这是非常简单但极其有效的攻击手段。

    历史上出过不少这种 Vanity Address 丢大钱的例子,网络上很容易搜索到,比如 https://www.certik.com/resources/blog/vanity-address-and-address-poisoning
    JackMaMa
        11
    JackMaMa  
    PRO
       111 天前
    @kaichen +1 ,这种靓号有碰撞风险
    alinwu05
        12
    alinwu05  
       111 天前
    这个有意思啊,人才!
    crocoBaby
        13
    crocoBaby  
       111 天前
    好厉害
    Tink
        14
    Tink  
    PRO
       111 天前
    还有想法!
    vanillahz
        15
    vanillahz  
       111 天前   1
    @kaichen 私钥会不会破解,取决于你用的 RNG 强度,本来空间就有 256 位,去掉 32 位也绰绰有余
    第二种攻击取决于你有没有用通讯录/扫码转账的习惯。复制地址无论什么时候都是相当危险的
    bearbest
        16
    bearbest  
    PRO
       111 天前
    @cat 你是懂华点的
    BeCool
        17
    BeCool  
    OP
    PRO
       111 天前
    @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 地址,支持前后缀,是否官方无视风险让我们使用不安全的方式?
    kaichen
        18
    kaichen  
    PRO
       111 天前
    @BeCool

    如果是一个人或者少数人这么玩问题不大,但当大量的用户这么用,那么以 V2EX 为结尾的钱包变多,撞库的搜索空间就被压缩了。

    我只是想让人了解存在这样的风险

    如果只是为了好记,那么去买个 sns.id 是更好的选择。
    ooTwToo
        19
    ooTwToo  
       110 天前
    可以给钱包创建一个域名,方便记住:
    https://www.sns.id/
    BeCool
        20
    BeCool  
    OP
    PRO
       110 天前
    @ooTwToo 这个我有: https://v2ex.com/planet/becool.sol
    它和生成 V2EX 后缀钱包其实是两件事,因为不是为了易记。
    Bio
        21
    Bio  
       108 天前
    同样疑问,自己生成的地址怎么绑定的?
    Oah1zO
        22
    Oah1zO  
       108 天前
    @kaichen 就算所有 holder 都改成 V2EX 后缀的地址..几个而已..真的有影响么...

    数量级在那呢。你要说被破解率上升了 1000 倍是吧...

    一滴水和一杯水放到大海里,有区别么?
    ershierdu
        23
    ershierdu  
       108 天前 via Android
    @kaichen
    纯好奇,这为什么会压缩状态空间?如果我撞出了 123456789……123456789 这个地址,其他人有办法破解吗?
    BeCool
        24
    BeCool  
    OP
    PRO
       108 天前
    @GreyChou 在钱包中导入私钥,然后绑定就可以。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5794 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 01:56 PVG 09:56 LAX 17:56 JFK 20:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86