比特币哈希提取
可提取核心钱包备份文件中的哈希值
LOADING
微信:Goodbye_cq
多链活跃有币地址抓取工具,BTC,ETH,TRX,BSC
(具体用处的话我不多说,有需要的看过来就行了)
先上图
这里拿ETH地址抓取工具举例,可以一直挂着,支持自定义配置RPC节点
支持断点续扫,上次关闭的时候是哪个区块的那个批次,下次就会从哪里打开接着扫地址,这样就不会漏掉活跃地址,也不会重复。



本方案采用三层架构实现高效采集:
┌────────────────┐
│ 调度控制层 │ ← 负责任务分派与速率控制
└────────┬───────┘
↓
┌────────────────┐
│ 区块数据处理层 │ ← 并发解析交易数据
└────────┬───────┘
↓
┌────────────────┐
│ 地址验证存储层 │ ← 校验地址有效性并持久化
└────────────────┘
我们的扫描工具主要包含以下核心模块:
class Program
{
// 核心配置
const int BLOCKS_PER_BATCH = 100;
const int ADDRESSES_PER_VERIFICATION = 200;
const int MAX_CONCURRENT_REQUESTS = 15;
// 状态管理
static async Task Main(string[] args)
{
// 初始化→加载状态→扫描→验证→保存结果
}
}
我们使用JSON格式保存扫描状态,记录三个关键信息:
{
"LastBlock": 18500000,
"CurrentBatch": 3,
"ProcessedAddresses": 50
}
static ScanState LoadState()
{
if (File.Exists(STATE_FILE))
{
string json = File.ReadAllText(STATE_FILE);
return JsonConvert.DeserializeObject<ScanState>(json);
}
return null;
}
static void SaveState(ScanState state)
{
File.WriteAllText(STATE_FILE, JsonConvert.SerializeObject(state));
}
var state = LoadState();
int startBlock = state?.LastBlock ?? latestBlockNumber;
int startBatch = state?.CurrentBatch ?? 0;
int skipAddresses = state?.ProcessedAddresses ?? 0;
多线程环境下,控制台输出容易出现以下问题:
我们采用固定位置显示和更新频率控制的策略:
static void UpdateProgressBar(int processed, int total)
{
// 计算进度
double progress = (double)processed / total;
int progressChars = (int)(progress * 50);
// 进度条部分(位置1-50)
Console.CursorLeft = 1;
Console.Write(new string('█', progressChars));
// 数字部分(固定位置52-70)
Console.CursorLeft = 52;
Console.Write($"{processed}/{total} ({progress:P0}) ");
}
// 初始化进度条框架
Console.WriteLine("\n┌──────────────────────────────────────────────────┐");
Console.Write("│");
Console.Write(new string(' ', 50)); // 预留进度条空间
Console.Write($"0/{total} (0%)"); // 初始化进度文本
// 在验证任务中更新进度
int newProcessed = Interlocked.Increment(ref processed);
if (newProcessed % 5 == 0 || newProcessed == total)
{
lock (progressLock)
{
UpdateProgressBar(newProcessed, total);
}
}
使用SemaphoreSlim限制最大并发数:
var throttler = new SemaphoreSlim(MAX_CONCURRENT_REQUESTS);
await throttler.WaitAsync(); // 在任务开始时
try {
// 执行验证...
}
finally {
throttler.Release(); // 在任务结束时
}
try
{
var response = await SendRpcRequest(request);
// 处理响应...
}
catch (HttpRequestException ex)
{
LogError($"RPC请求失败: {ex.Message}");
// 切换备用节点...
}
catch (JsonException ex)
{
LogError($"响应解析失败: {ex.Message}");
}
// 添加随机延迟(50-200ms)
await Task.Delay(random.Next(50, 200));
// 批量写入结果
lock (fileLock)
{
File.AppendAllLines(OUTPUT_FILE, activeAddresses);
}
| 项目 | 数值 |
|---|---|
| 平均区块处理速度 | 120区块/秒 |
| 地址验证速度 | 80地址/秒 |
| 内存占用 | <100MB |
通过本文介绍的技术方案,我们实现了一个稳定可靠的区块链地址扫描工具。关键创新点包括:
该方案轻松适配其他链。开发者可根据实际需求调整批次大小、并发数等参数,在准确性和性能之间取得最佳平衡。





