BPVentures & LightEcho Launch Stellar Soroban Chainlink-Compatible Randomness Oracle, Readable via SEP-40 RANDOM Symbol for Games

BPVentures & LightEcho Launch Stellar Soroban Chainlink-Compatible Randomness Oracle, Readable via SEP-40 RANDOM Symbol for Games

BPVentures & LightEcho Launch Stellar Soroban Chainlink-Compatible Randomness Oracle, Readable via SEP-40 RANDOM Symbol for Games


๐—ฃ๐—ฎ๐—ฟ๐—ถ๐˜€, ๐—™๐—ฟ๐—ฎ๐—ป๐—ฐ๐—ฒ โ€” ๐—ข๐—ฐ๐˜๐—ผ๐—ฏ๐—ฒ๐—ฟ ๐Ÿฎ๐Ÿฏ, ๐Ÿฎ๐Ÿฌ๐Ÿฎ๐Ÿฑ โ€” ๐—•๐—ฃ๐—ฉ๐—ฒ๐—ป๐˜๐˜‚๐—ฟ๐—ฒ๐˜€ and ๐—Ÿ๐—ถ๐—ด๐—ต๐˜๐—˜๐—ฐ๐—ต๐—ผ today announced the availability of a new randomness feed in their oracle network that is ๐—–๐—ต๐—ฎ๐—ถ๐—ป๐—น๐—ถ๐—ป๐—ธ-๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฎ๐˜๐—ถ๐—ฏ๐—น๐—ฒ and SEP-40 compliant, enabling game developers to consume verifiable 32-byte random โ€œwordsโ€ through a single, standard interface. The feed is exposed under the ๐—ฆ๐—˜๐—ฃ-๐Ÿฐ๐Ÿฌ SYMBOL: RANDOM identifier, so any Soroban smart contract that speak SEP-40 can read it without custom glue code.

โ€œGames need simple, unbiased, and interoperable randomness,โ€ said a spokesperson for BPVentures. โ€œBy speaking both Chainlinkโ€™s uint256 [ ] word format and SEP-40โ€™s Oracle Consumer Interface, we help teams plug in fastโ€”on Soroban today, for EVM titles plan to port and already expect VRF-style data.โ€

โ€œOur goal is developer ergonomics with strong security guarantees,โ€ added a LightEcho representative. โ€œRANDOM as a standard symbol keeps contracts clean, while our oracle network focuses on reliability, throughput, and transparent proofs.โ€

Whatโ€™s New

  • ๐—–๐—ต๐—ฎ๐—ถ๐—ป๐—น๐—ถ๐—ป๐—ธ-๐—ฐ๐—ผ๐—บ๐—ฝ๐—ฎ๐˜๐—ถ๐—ฏ๐—น๐—ฒ ๐—ผ๐˜‚๐˜๐—ฝ๐˜‚๐˜: Each โ€œwordโ€ is a ๐Ÿฏ๐Ÿฎ-๐—ฏ๐˜†๐˜๐—ฒ ๐˜‚๐—ป๐˜€๐—ถ๐—ด๐—ป๐—ฒ๐—ฑ ๐—ถ๐—ป๐˜๐—ฒ๐—ด๐—ฒ๐—ฟ (uint256), matching the format most EVM based games already expect for loot tables, rarity rolls, raffles, and mints.

  • ๐—ฆ๐—˜๐—ฃ-๐Ÿฐ๐Ÿฌ ๐—ฐ๐—ผ๐—บ๐—ฝ๐—น๐—ถ๐—ฎ๐—ป๐˜ ๐—ฐ๐—ผ๐—ป๐˜€๐˜‚๐—บ๐—ฝ๐˜๐—ถ๐—ผ๐—ป: Read randomness via the ๐—ข๐—ฟ๐—ฎ๐—ฐ๐—น๐—ฒ ๐—–๐—ผ๐—ป๐˜€๐˜‚๐—บ๐—ฒ๐—ฟ ๐—œ๐—ป๐˜๐—ฒ๐—ฟ๐—ณ๐—ฎ๐—ฐ๐—ฒ using Asset::Other(Symbol::from_str("RANDOM")). No bespoke adapters required.

  • ๐—š๐—ฎ๐—บ๐—ฒ-๐—ฟ๐—ฒ๐—ฎ๐—ฑ๐˜† ๐—จ๐—ซ: Batch โ€œwordsโ€ for multi-roll mechanics; deterministic, ABI-friendly layout makes mapping to ranges straightforward.

How It Works (At a Glance)

  • ๐—ข๐—ป ๐—ฆ๐—ผ๐—ฟ๐—ผ๐—ฏ๐—ฎ๐—ป (๐—ฆ๐—˜๐—ฃ-๐Ÿฐ๐Ÿฌ):
    Contracts call the oracleโ€™s lastprice(env, asset) (or history methods) with asset = Asset::Other(Symbol("RANDOM")).

    โˆ˜ price carries the ๐Ÿฎ๐Ÿฑ๐Ÿฒ-๐—ฏ๐—ถ๐˜ ๐˜„๐—ผ๐—ฟ๐—ฑ as an integer payload.
    โˆ˜ timestamp lets consumers enforce freshness/slippage windows.
    โˆ˜ Decimals are defined to preserve the full 256-bit space without loss; treat the value as a raw uint256 โ€œwordโ€ in consumer logic.

Developer Notes

  • ๐—ฆ๐˜†๐—บ๐—ฏ๐—ผ๐—น: RANDOM (SEP-40 Asset::Other)

  • ๐—ช๐—ผ๐—ฟ๐—ฑ ๐—ณ๐—ผ๐—ฟ๐—บ๐—ฎ๐˜: 32-byte big-endian uint256 (one or many words per request)

  • ๐—ง๐˜†๐—ฝ๐—ถ๐—ฐ๐—ฎ๐—น ๐˜‚๐˜€๐—ฎ๐—ด๐—ฒ:
    โˆ˜ ๐—จ๐—ป๐—ถ๐—ณ๐—ผ๐—ฟ๐—บ ๐—บ๐—ฎ๐—ฝ๐—ฝ๐—ถ๐—ป๐—ด: Use rejection sampling to avoid modulo bias when mapping uint256 to small ranges (e.g., 1โ€“100).
    โˆ˜ ๐—™๐—ฟ๐—ฒ๐˜€๐—ต๐—ป๐—ฒ๐˜€๐˜€ ๐—ฐ๐—ต๐—ฒ๐—ฐ๐—ธ๐˜€: Compare the timestamp in PriceData vs. the current ledger time to avoid stale reads.
    โˆ˜ ๐—•๐—ฎ๐˜๐—ฐ๐—ต๐—ถ๐—ป๐—ด: For multi-draw features, request/consume multiple words in a single call.

Soroban (Rust) Sketch

use soroban_sdk::{contractimpl, Address, Env, Symbol, Vec as SVec}; 
pub fn read_random_word(env: Env, oracle: Address) -> (i128, u64) { 
  // asset = Other(Symbol("RANDOM")) 
  let asset = Asset::Other(Symbol::short("RANDOM")); 
  // lastprice returns Option<PriceData> { price: i128, timestamp: u64 } 
  if let Some(pd) = PriceFeedClient::new(&env, &oracle).lastprice(&asset) { 
   // Interpret pd.price as a raw 256-bit word carried losslessly in i128/decimals scheme per 
  oracle docs. 
   return (pd.price, pd.timestamp); 
  } 
  panic!("No randomness available"); 
}

Availability

The randomness feed is live on the LightEcho oracle network and available to partners integrating ๐—ด๐—ฎ๐—บ๐—ฒ ๐—บ๐—ฒ๐—ฐ๐—ต๐—ฎ๐—ป๐—ถ๐—ฐ๐˜€, ๐—บ๐—ถ๐—ป๐˜๐˜€, ๐—ฟ๐—ฎ๐—ณ๐—ณ๐—น๐—ฒ๐˜€, and ๐—ฝ๐—ฟ๐—ผ๐—ฐ๐—ฒ๐—ฑ๐˜‚๐—ฟ๐—ฎ๐—น ๐—ด๐—ฒ๐—ป๐—ฒ๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป. Documentation, SDKs, and sample contracts are provided for both Soroban (SEP-40) and Soroban consumers.

About BPVentures

BPVentures builds compliant, production-grade blockchain infrastructureโ€”wallets, payments rails, and oracle servicesโ€”for real-world and gaming applications.

About LightEcho

LightEcho operates a high-reliability oracle network focused on simple developer interfaces, verifiable data delivery, and multi-chain compatibility.

Media & Developer Inquiries

Visit lightecho.io for documentation, integration guides, or email sales@bpventures.us for support options.

Trademarks and brands are the property of their respective owners. This announcement does not imply endorsement by third parties.