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

scorex.transaction.TransactionSettings.scala Maven / Gradle / Ivy

The newest version!
package scorex.transaction

import play.api.libs.json.JsObject
import scorex.crypto.encode.Base58

import scala.concurrent.duration._

trait TransactionSettings {
  val settingsJSON: JsObject

  lazy val history = (settingsJSON \ "history").asOpt[String].getOrElse(DefaultHistory)

  lazy val utxRebroadcastInterval: FiniteDuration = (settingsJSON \ "utxRebroadcastInterval").asOpt[Int]
    .map(x => x.seconds).getOrElse(DefaultUtxRebroadcastInterval)

  lazy val feeMap: Map[String, Long] = (settingsJSON \ "feeMap").validate[Map[String, Map[String, Long]]].map(_.flatMap { e =>
    e._2.map { kv =>
      val assetId: Option[AssetId] = if (kv._1 == "Waves") None else Some(Base58.decode(kv._1).get)
      TransactionAssetFee(e._1.toInt, assetId).key -> kv._2
    }
  }).getOrElse(DefaultFeeMap)

  private val DefaultFeeMap: Map[String, Long] = Map(
    TransactionAssetFee(2, None).key -> 100000,
    TransactionAssetFee(3, None).key -> 100000000,
    TransactionAssetFee(4, None).key -> 100000,
    TransactionAssetFee(5, None).key -> 100000,
    TransactionAssetFee(6, None).key -> 100000,
    TransactionAssetFee(7, None).key -> 100000,
    TransactionAssetFee(8, None).key -> 100000
  )


  private val DefaultHistory = "blockchain"
  private val DefaultUtxRebroadcastInterval: FiniteDuration = 30.seconds

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy