I am new to this business, so I apologize for such a possibly basic and stupid question, I tried to find any information, but I couldn’t.
I made a number of transfers to the address shown in the following example.
I also have these transfers in my history, and they are marked as successful. For reference, I made a transfer from my wallet to the address that is linked to my\wallet.
I also have a connection to the test network.
In the wallet, as shown, everything is there, everything is fine, but when you try to check the information of my address, there is nothing there.
Here I checked the address through a special site.
I wrote a small program to check the history of the address, balance, but nothing is displayed there.
Connecting to Electrum server...
Successfully connected to Electrum server.
Address: tb1qc7j5j80s02gupl0qa3svg5kr99smjdq9a7yezd
ScriptHash: bb72dcabbea723d56aa49cd29575e53aaabf832f9dbdb45f251b56e187ce915a
Raw history response: []
Fetching transaction history...
Found 0 transactions.
Total balance for tb1qc7j5j80s02gupl0qa3svg5kr99smjdq9a7yezd: 0 satoshis (0 BTC)
Current block height: 900621
Disconnected from Electrum server.
Here is the code of the program itself:
import * as bitcoin from 'bitcoinjs-lib';
import { ElectrumClient, ElectrumClientEvents } from '@electrum-cash/network';
const ELECTRUM_HOST = 'blackie.c3-soft.com';
const ADDRESS = 'tb1qc7j5j80s02gupl0qa3svg5kr99smjdq9a7yezd';
const NETWORK = bitcoin.networks.testnet;
function addressToElectrumScriptHash(address: string, network: bitcoin.Network): string | null {
try {
const outputScript = bitcoin.address.toOutputScript(address, network);
const hash = bitcoin.crypto.sha256(outputScript);
return Buffer.from(hash.reverse()).toString('hex');
} catch (e) {
console.error(`Failed to convert address ${address} to scripthash: ${e.message}`);
return null;
}
}
async function debugScripthashHistory(client: ElectrumClient<ElectrumClientEvents>, scriptHash: string) {
try {
const history = await client.request('blockchain.scripthash.get_history', scriptHash);
console.log('Raw history response:', JSON.stringify(history, null, 2));
} catch (error) {
console.error('Error fetching raw history:', error.message);
}
}
async function checkAddress() {
const client = new ElectrumClient(
'Address Checker',
'1.4.1',
ELECTRUM_HOST,
);
try {
console.log('Connecting to Electrum server...');
await client.connect();
console.log('Successfully connected to Electrum server.');
const scriptHash = addressToElectrumScriptHash(ADDRESS, NETWORK);
if (!scriptHash) {
console.error('Failed to generate scripthash for address.');
return;
}
console.log(`Address: ${ADDRESS}`);
console.log(`ScriptHash: ${scriptHash}`);
await debugScripthashHistory(client, scriptHash);
console.log('Fetching transaction history...');
const historyResult = await client.request('blockchain.scripthash.get_history', scriptHash);
if (historyResult instanceof Error) {
console.error(`Error fetching history: ${historyResult.message}`);
return;
}
if (!Array.isArray(historyResult)) {
console.error('Unexpected history response:', historyResult);
return;
}
const history = historyResult as { tx_hash: string; height: number }[];
console.log(`Found ${history.length} transactions.`);
let totalBalance = 0;
for (const tx of history) {
const txHash = tx.tx_hash;
console.log(`Processing transaction: ${txHash} (Block height: ${tx.height})`);
const txDataResult = await client.request('blockchain.transaction.get', txHash, true);
if (txDataResult instanceof Error) {
console.error(`Error fetching transaction ${txHash}: ${txDataResult.message}`);
continue;
}
if (!txDataResult || typeof txDataResult !== 'object') {
console.error(`Invalid transaction data for ${txHash}`);
continue;
}
const txData = txDataResult as { vout: { value: string; scriptPubKey: { hex: string } }[] };
const outputScriptHex = bitcoin.address.toOutputScript(ADDRESS, NETWORK).toString('hex');
for (const vout of txData.vout) {
if (vout.scriptPubKey.hex === outputScriptHex) {
const amount = Math.round(parseFloat(vout.value) * 1e8); // Конвертация BTC в сатоши
totalBalance += amount;
console.log(`Found output to address: ${amount} satoshis`);
}
}
}
console.log(`Total balance for ${ADDRESS}: ${totalBalance} satoshis (${totalBalance / 1e8} BTC)`);
const blockHeightResponse = await client.request('blockchain.headers.subscribe');
if (blockHeightResponse && typeof blockHeightResponse === 'object' && 'height' in blockHeightResponse) {
console.log(`Current block height: ${blockHeightResponse.height}`);
}
} catch (error) {
console.error('Error during address check:', error.message);
} finally {
try {
await client.disconnect();
console.log('Disconnected from Electrum server.');
} catch (e) {
console.error('Error during disconnection:', e.message);
}
}
}
checkAddress().catch(console.error);