whereNull('mnemonic_id')->count(); $this->info("unlinked addresses before: {$before}"); $result = $linker->backfill(); // Only probe mnemonics that haven't been fully discovered across all 5 // chains yet. Manual "view wallet" / "refresh" bypasses this via force=true. $discovered = 0; foreach (WalletMnemonic::query()->where('discovery_complete', false)->orderBy('id')->cursor() as $mnemonic) { $discovered += $discovery->discoverActivated($mnemonic); } $after = WalletAddress::query()->whereNull('mnemonic_id')->count(); $this->info(sprintf( 'scanned mnemonics=%d linked=%d discovered=%d unlinked_after=%d', $result['mnemonics'], $result['linked'], $discovered, $after, )); return self::SUCCESS; } }