All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.wavesplatform.utils.EmptyBlockchain.scala Maven / Gradle / Ivy

The newest version!
package com.wavesplatform.utils

import com.typesafe.config.ConfigFactory
import com.wavesplatform.account.{Address, Alias}
import com.wavesplatform.block.SignedBlockHeader
import com.wavesplatform.common.state.ByteStr
import com.wavesplatform.lang.ValidationError
import com.wavesplatform.settings.BlockchainSettings
import com.wavesplatform.state.*
import com.wavesplatform.state.TxMeta.Status
import com.wavesplatform.transaction.Asset.{IssuedAsset, Waves}
import com.wavesplatform.transaction.TxValidationError.GenericError
import com.wavesplatform.transaction.transfer.TransferTransactionLike
import com.wavesplatform.transaction.{Asset, ERC20Address, Transaction}

trait EmptyBlockchain extends Blockchain {
  override lazy val settings: BlockchainSettings = BlockchainSettings.fromRootConfig(ConfigFactory.load())

  override def height: Int = 0

  override def score: BigInt = 0

  override def blockHeader(height: Int): Option[SignedBlockHeader] = None

  override def hitSource(height: Int): Option[ByteStr] = None

  override def carryFee(refId: Option[ByteStr]): Long = 0

  override def heightOf(blockId: ByteStr): Option[Int] = None

  /** Features related */
  override def approvedFeatures: Map[Short, Int] = Map.empty

  override def activatedFeatures: Map[Short, Int] = Map.empty

  override def featureVotes(height: Int): Map[Short, Int] = Map.empty

  /** Block reward related */
  override def blockReward(height: Int): Option[Long] = None

  override def blockRewardVotes(height: Int): Seq[Long] = Seq.empty

  override def wavesAmount(height: Int): BigInt = 0

  override def transferById(id: ByteStr): Option[(Int, TransferTransactionLike)] = None

  override def transactionInfo(id: ByteStr): Option[(TxMeta, Transaction)] = None

  override def transactionInfos(ids: Seq[ByteStr]): Seq[Option[(TxMeta, Transaction)]] = Seq.empty

  override def transactionMeta(id: ByteStr): Option[TxMeta] = None

  override def transactionSnapshot(id: ByteStr): Option[(StateSnapshot, Status)] = None

  override def containsTransaction(tx: Transaction): Boolean = false

  override def assetDescription(id: IssuedAsset): Option[AssetDescription] = None

  override def resolveAlias(a: Alias): Either[ValidationError, Address] = Left(GenericError("Empty blockchain"))

  override def leaseDetails(leaseId: ByteStr): Option[LeaseDetails] = None

  override def filledVolumeAndFee(orderId: ByteStr): VolumeAndFee = VolumeAndFee(0, 0)

  /** Retrieves Waves balance snapshot in the [from, to] range (inclusive) */
  override def balanceAtHeight(address: Address, height: Int, assetId: Asset = Waves): Option[(Int, Long)] = Option.empty
  override def balanceSnapshots(address: Address, from: Int, to: Option[ByteStr]): Seq[BalanceSnapshot]    = Seq.empty

  override def accountScript(address: Address): Option[AccountScriptInfo] = None

  override def hasAccountScript(address: Address): Boolean = false

  override def assetScript(asset: IssuedAsset): Option[AssetScriptInfo] = None

  override def accountData(acc: Address, key: String): Option[DataEntry[?]] = None

  override def hasData(acc: Address): Boolean = false

  override def balance(address: Address, mayBeAssetId: Asset): Long = 0

  override def balances(req: Seq[(Address, Asset)]): Map[(Address, Asset), Long] = Map.empty

  override def wavesBalances(addresses: Seq[Address]): Map[Address, Long] = Map.empty

  override def effectiveBalanceBanHeights(address: Address): Seq[Int] = Seq.empty

  override def leaseBalance(address: Address): LeaseBalance = LeaseBalance.empty

  override def leaseBalances(addresses: Seq[Address]): Map[Address, LeaseBalance] = Map.empty

  override def resolveERC20Address(address: ERC20Address): Option[IssuedAsset] = None

  override def lastStateHash(refId: Option[ByteStr]): ByteStr = TxStateSnapshotHashBuilder.InitStateHash
}

object EmptyBlockchain extends EmptyBlockchain




© 2015 - 2025 Weber Informatics LLC | Privacy Policy