Developer Fundamentals

6. Ultra-Efficient Beats

Use Beats/Bloom for quick activity checks; test data too.

Prerequisites

Beats & Bloom

Minimal pulses! ⚡ Beats (/beat2) every block.

import { bloomUtils } from '@vechain/sdk-core';
const wsUrl = subscriptions.getBeatSubscriptionUrl('https://mainnet.vechain.org');
const ws = new WebSocket(wsUrl);
ws.onmessage = (msg) => {
  const beat = JSON.parse(msg.data);
  const addrTest = '0x000...0000';
  if (bloomUtils.isAddressInBloom(beat.bloom, beat.k, addrTest)) {
    console.log('Addr active! Fetch block.');
  }
  // VTHO data: const dataTest = '0x456e65726779';  // "Energy"
  if (bloomUtils.isInBloom(beat.bloom, beat.k, dataTest)) { /* Alert */ }
};
import { bloomUtils } from '@vechain/sdk-core';
const wsUrl = subscriptions.getBeatSubscriptionUrl('https://mainnet.vechain.org');
const ws = new WebSocket(wsUrl);
ws.onmessage = (msg) => {
  const beat = JSON.parse(msg.data);
  const addrTest = '0x000...0000';
  if (bloomUtils.isAddressInBloom(beat.bloom, beat.k, addrTest)) {
    console.log('Addr active! Fetch block.');
  }
  // VTHO data: const dataTest = '0x456e65726779';  // "Energy"
  if (bloomUtils.isInBloom(beat.bloom, beat.k, dataTest)) { /* Alert */ }
};
import { bloomUtils } from '@vechain/sdk-core';
const wsUrl = subscriptions.getBeatSubscriptionUrl('https://mainnet.vechain.org');
const ws = new WebSocket(wsUrl);
ws.onmessage = (msg) => {
  const beat = JSON.parse(msg.data);
  const addrTest = '0x000...0000';
  if (bloomUtils.isAddressInBloom(beat.bloom, beat.k, addrTest)) {
    console.log('Addr active! Fetch block.');
  }
  // VTHO data: const dataTest = '0x456e65726779';  // "Energy"
  if (bloomUtils.isInBloom(beat.bloom, beat.k, dataTest)) { /* Alert */ }
};

Covers gas payers/events/transfers. Lightning scans!​

REMEMBER!

Bloom can bring up false positives—always confirm with full fetch.