diff --git a/examples/src/main/scala/examples/commons/PublicKey25519NoncedBox.scala b/examples/src/main/scala/examples/commons/PublicKey25519NoncedBox.scala index ce2c97e49..5fb72e714 100644 --- a/examples/src/main/scala/examples/commons/PublicKey25519NoncedBox.scala +++ b/examples/src/main/scala/examples/commons/PublicKey25519NoncedBox.scala @@ -6,7 +6,7 @@ import io.circe.syntax._ import scorex.core.serialization.Serializer import scorex.core.transaction.account.PublicKeyNoncedBox import scorex.core.transaction.box.proposition.PublicKey25519Proposition -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scorex.crypto.encode.Base16 import scorex.crypto.hash.Blake2b256 import scorex.crypto.signatures.{Curve25519, PublicKey} @@ -25,7 +25,7 @@ case class PublicKey25519NoncedBox(override val proposition: PublicKey25519Propo s"PublicKey25519NoncedBox(id: ${Base16.encode(id)}, proposition: $proposition, nonce: $nonce, value: $value)" } -object PublicKey25519NoncedBox extends ScorexLogging { +object PublicKey25519NoncedBox extends ScorexEncoding { val BoxKeyLength: Int = Blake2b256.DigestSize val BoxLength: Int = Curve25519.KeyLength + 2 * 8 diff --git a/examples/src/main/scala/examples/commons/SimpleBoxTransaction.scala b/examples/src/main/scala/examples/commons/SimpleBoxTransaction.scala index 838ddacf6..3661a8e24 100644 --- a/examples/src/main/scala/examples/commons/SimpleBoxTransaction.scala +++ b/examples/src/main/scala/examples/commons/SimpleBoxTransaction.scala @@ -13,7 +13,7 @@ import scorex.core.transaction.box.BoxUnlocker import scorex.core.transaction.box.proposition.PublicKey25519Proposition import scorex.core.transaction.proof.{Proof, Signature25519} import scorex.core.transaction.state.{PrivateKey25519, PrivateKey25519Companion} -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.crypto.hash.Blake2b256 import scorex.crypto.signatures.{Curve25519, PublicKey, Signature} @@ -73,7 +73,7 @@ case class SimpleBoxTransaction(from: IndexedSeq[(PublicKey25519Proposition, Non } -object SimpleBoxTransaction extends ScorexLogging { +object SimpleBoxTransaction extends ScorexEncoding { implicit val simpleBoxEncoder: Encoder[SimpleBoxTransaction] = (sbe: SimpleBoxTransaction) => Map( diff --git a/examples/src/main/scala/examples/hybrid/HybridNodeViewHolder.scala b/examples/src/main/scala/examples/hybrid/HybridNodeViewHolder.scala index 7bca31b3c..fa79eb775 100644 --- a/examples/src/main/scala/examples/hybrid/HybridNodeViewHolder.scala +++ b/examples/src/main/scala/examples/hybrid/HybridNodeViewHolder.scala @@ -12,7 +12,7 @@ import scorex.core.settings.ScorexSettings import scorex.core.transaction.Transaction import scorex.core.transaction.box.proposition.PublicKey25519Proposition import scorex.core.transaction.state.PrivateKey25519Companion -import scorex.core.utils.{NetworkTimeProvider, ScorexLogging} +import scorex.core.utils.{NetworkTimeProvider, ScorexEncoding, ScorexLogging} import scorex.core.{ModifierTypeId, NodeViewHolder, NodeViewModifier} import scorex.crypto.encode.Base58 import scorex.crypto.signatures.PublicKey @@ -65,7 +65,7 @@ class HybridNodeViewHolder(settings: ScorexSettings, } } -object HybridNodeViewHolder extends ScorexLogging { +object HybridNodeViewHolder extends ScorexLogging with ScorexEncoding { def generateGenesisState(settings: ScorexSettings, minerSettings: HybridMiningSettings, timeProvider: NetworkTimeProvider): (HybridHistory, HBoxStoredState, HBoxWallet, SimpleBoxTransactionMemPool) = { val GenesisAccountsNum = 50 diff --git a/examples/src/main/scala/examples/hybrid/api/http/DebugApiRoute.scala b/examples/src/main/scala/examples/hybrid/api/http/DebugApiRoute.scala index c239dd85d..af4057b71 100644 --- a/examples/src/main/scala/examples/hybrid/api/http/DebugApiRoute.scala +++ b/examples/src/main/scala/examples/hybrid/api/http/DebugApiRoute.scala @@ -11,7 +11,7 @@ import io.circe.syntax._ import scorex.core.ModifierId import scorex.core.api.http.{ApiResponse, ApiRouteWithFullView} import scorex.core.settings.RESTApiSettings -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scala.util.Try @@ -19,7 +19,7 @@ import scala.util.Try case class DebugApiRoute(override val settings: RESTApiSettings, nodeViewHolderRef: ActorRef) (implicit val context: ActorRefFactory) extends ApiRouteWithFullView[HybridHistory, HBoxStoredState, HBoxWallet, SimpleBoxTransactionMemPool] - with ScorexLogging { + with ScorexEncoding { override val route: Route = (pathPrefix("debug") & withCors) { infoRoute ~ chain ~ delay ~ myblocks ~ generators diff --git a/examples/src/main/scala/examples/hybrid/api/http/StatsApiRoute.scala b/examples/src/main/scala/examples/hybrid/api/http/StatsApiRoute.scala index a35926dd6..546fd9334 100644 --- a/examples/src/main/scala/examples/hybrid/api/http/StatsApiRoute.scala +++ b/examples/src/main/scala/examples/hybrid/api/http/StatsApiRoute.scala @@ -10,14 +10,14 @@ import io.circe.syntax._ import scorex.core.ModifierId import scorex.core.api.http.{ApiResponse, ApiRouteWithFullView, ApiTry} import scorex.core.settings.RESTApiSettings -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scala.util.Try case class StatsApiRoute(override val settings: RESTApiSettings, nodeViewHolderRef: ActorRef) (implicit val context: ActorRefFactory) extends ApiRouteWithFullView[HybridHistory, HBoxStoredState, HBoxWallet, SimpleBoxTransactionMemPool] - with ScorexLogging { + with ScorexEncoding { override val route: Route = (pathPrefix("stats") & withCors) { tail ~ meanDifficulty diff --git a/examples/src/main/scala/examples/hybrid/api/http/WalletApiRoute.scala b/examples/src/main/scala/examples/hybrid/api/http/WalletApiRoute.scala index 35b6b8e80..86d6676ff 100644 --- a/examples/src/main/scala/examples/hybrid/api/http/WalletApiRoute.scala +++ b/examples/src/main/scala/examples/hybrid/api/http/WalletApiRoute.scala @@ -11,8 +11,7 @@ import io.circe.syntax._ import scorex.core.api.http.{ApiError, ApiResponse, ApiRouteWithFullView} import scorex.core.settings.RESTApiSettings import scorex.core.transaction.box.proposition.PublicKey25519Proposition -import scorex.core.utils.ScorexLogging -import scorex.crypto.encode.Base58 +import scorex.core.utils.ScorexEncoding import scorex.crypto.signatures.PublicKey import scala.util.{Failure, Success, Try} @@ -21,7 +20,7 @@ import scala.util.{Failure, Success, Try} case class WalletApiRoute(override val settings: RESTApiSettings, nodeViewHolderRef: ActorRef) (implicit val context: ActorRefFactory) extends ApiRouteWithFullView[HybridHistory, HBoxStoredState, HBoxWallet, SimpleBoxTransactionMemPool] - with ScorexLogging { + with ScorexEncoding { import scorex.core.NodeViewHolder.ReceivableMessages.LocallyGeneratedTransaction diff --git a/examples/src/main/scala/examples/hybrid/blocks/PosBlock.scala b/examples/src/main/scala/examples/hybrid/blocks/PosBlock.scala index 67b6844a6..f869dcc33 100644 --- a/examples/src/main/scala/examples/hybrid/blocks/PosBlock.scala +++ b/examples/src/main/scala/examples/hybrid/blocks/PosBlock.scala @@ -9,7 +9,7 @@ import scorex.core.block.Block._ import scorex.core.serialization.Serializer import scorex.core.transaction.proof.Signature25519 import scorex.core.transaction.state.PrivateKey25519 -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scorex.core.{ModifierId, ModifierTypeId, TransactionsCarryingPersistentNodeViewModifier} import scorex.crypto.hash.Blake2b256 import scorex.crypto.signatures.{Curve25519, Signature} @@ -38,7 +38,7 @@ case class PosBlock(override val parentId: BlockId, //PoW block override def toString: String = s"PoSBlock(${this.asJson.noSpaces})" } -object PosBlockCompanion extends Serializer[PosBlock] with ScorexLogging { +object PosBlockCompanion extends Serializer[PosBlock] with ScorexEncoding { override def toBytes(b: PosBlock): Array[Byte] = { val txsBytes = b.transactions.sortBy(t => encoder.encode(t.id)).foldLeft(Array[Byte]()) { (a, b) => Bytes.concat(Ints.toByteArray(b.bytes.length), b.bytes, a) @@ -77,7 +77,7 @@ object PosBlockCompanion extends Serializer[PosBlock] with ScorexLogging { } } -object PosBlock extends ScorexLogging { +object PosBlock extends ScorexEncoding { val MaxBlockSize = 512 * 1024 //512K val ModifierTypeId: ModifierTypeId = scorex.core.ModifierTypeId @@ 4.toByte diff --git a/examples/src/main/scala/examples/hybrid/blocks/PowBlock.scala b/examples/src/main/scala/examples/hybrid/blocks/PowBlock.scala index 9860a19a6..c0f38897f 100644 --- a/examples/src/main/scala/examples/hybrid/blocks/PowBlock.scala +++ b/examples/src/main/scala/examples/hybrid/blocks/PowBlock.scala @@ -5,12 +5,12 @@ import examples.commons.SimpleBoxTransaction import examples.hybrid.mining.HybridMiningSettings import io.circe.Encoder import io.circe.syntax._ -import scorex.core.{ModifierId, _} import scorex.core.block.Block import scorex.core.block.Block._ import scorex.core.serialization.Serializer import scorex.core.transaction.box.proposition.{PublicKey25519Proposition, PublicKey25519PropositionSerializer} -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding +import scorex.core.{ModifierId, _} import scorex.crypto.hash.Blake2b256 import scorex.crypto.signatures.{Curve25519, PublicKey} @@ -23,7 +23,7 @@ class PowBlockHeader( val nonce: Long, val brothersCount: Int, val brothersHash: Array[Byte], - val generatorProposition: PublicKey25519Proposition) extends ScorexLogging { + val generatorProposition: PublicKey25519Proposition) extends ScorexEncoding { import PowBlockHeader._ @@ -135,7 +135,7 @@ object PowBlockCompanion extends Serializer[PowBlock] { } } -object PowBlock extends ScorexLogging { +object PowBlock extends ScorexEncoding { val ModifierTypeId: ModifierTypeId = scorex.core.ModifierTypeId @@ 3.toByte implicit val powBlockEncoder: Encoder[PowBlock] = (pb: PowBlock) => { diff --git a/examples/src/main/scala/examples/hybrid/history/HybridHistory.scala b/examples/src/main/scala/examples/hybrid/history/HybridHistory.scala index d7d744eed..3ffc10ee5 100644 --- a/examples/src/main/scala/examples/hybrid/history/HybridHistory.scala +++ b/examples/src/main/scala/examples/hybrid/history/HybridHistory.scala @@ -14,10 +14,9 @@ import scorex.core.consensus.ModifierSemanticValidity._ import scorex.core.consensus._ import scorex.core.settings.ScorexSettings import scorex.core.transaction.box.proposition.PublicKey25519Proposition -import scorex.core.utils.{NetworkTimeProvider, ScorexLogging} -import scorex.core.validation.{MalformedModifierError, RecoverableModifierError} +import scorex.core.utils.{NetworkTimeProvider, ScorexEncoding, ScorexLogging} +import scorex.core.validation.RecoverableModifierError import scorex.core.{ModifierId, ModifierTypeId, NodeViewModifier} -import scorex.crypto.encode.Base58 import scorex.crypto.hash.Blake2b256 import scala.annotation.tailrec @@ -32,7 +31,7 @@ class HybridHistory(val storage: HistoryStorage, validators: Seq[BlockValidator[HybridBlock]], statsLogger: Option[FileLogger], timeProvider: NetworkTimeProvider) - extends History[HybridBlock, HybridSyncInfo, HybridHistory] with ScorexLogging { + extends History[HybridBlock, HybridSyncInfo, HybridHistory] with ScorexLogging with ScorexEncoding { import HybridHistory._ @@ -204,7 +203,7 @@ class HybridHistory(val storage: HistoryStorage, val newSuffixValid = !newSuffix.drop(1).map(storage.semanticValidity).contains(Invalid) - if(newSuffixValid) { + if (newSuffixValid) { // TODO: fixme, What should we do if `oldSuffix` is empty? and .get @SuppressWarnings(Array("org.wartremover.warts.TraversableOps", "org.wartremover.warts.OptionPartial")) val throwBlocks = oldSuffix.tail.map(id => modifierById(id).get) @@ -463,7 +462,7 @@ class HybridHistory(val storage: HistoryStorage, * Average delay in milliseconds between last $blockNum blocks starting from $block * Debug only */ - @SuppressWarnings(Array("org.wartremover.warts.TraversableOps","org.wartremover.warts.OptionPartial")) + @SuppressWarnings(Array("org.wartremover.warts.TraversableOps", "org.wartremover.warts.OptionPartial")) def averageDelay(id: ModifierId, blockNum: Int): Try[Long] = Try { val block = modifierById(id).get val c = chainBack(block, isGenesis, blockNum).get.map(_._2) @@ -486,7 +485,7 @@ class HybridHistory(val storage: HistoryStorage, override def reportModifierIsInvalid(modifier: HybridBlock, progressInfo: ProgressInfo[HybridBlock]): (HybridHistory, - ProgressInfo[HybridBlock]) = { + ProgressInfo[HybridBlock]) = { storage.updateValidity(modifier, Invalid) new HybridHistory(storage, settings, validators, statsLogger, timeProvider) -> diff --git a/examples/src/main/scala/examples/hybrid/mining/PowMiner.scala b/examples/src/main/scala/examples/hybrid/mining/PowMiner.scala index 00a0f687f..35e65f36b 100644 --- a/examples/src/main/scala/examples/hybrid/mining/PowMiner.scala +++ b/examples/src/main/scala/examples/hybrid/mining/PowMiner.scala @@ -11,7 +11,7 @@ import scorex.core.ModifierId import scorex.core.NodeViewHolder.CurrentView import scorex.core.block.Block.BlockId import scorex.core.transaction.box.proposition.PublicKey25519Proposition -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scorex.crypto.encode.Base58 import scorex.crypto.hash.Blake2b256 @@ -25,7 +25,7 @@ import scala.util.Random * and stops on a new PoW block found (when PoS ref is unknown) */ class PowMiner(viewHolderRef: ActorRef, settings: HybridMiningSettings)(implicit ec: ExecutionContext) - extends Actor with ScorexLogging { + extends Actor with ScorexLogging with ScorexEncoding { import PowMiner.ReceivableMessages._ import PowMiner._ diff --git a/examples/src/main/scala/examples/hybrid/simulations/PrivateChain.scala b/examples/src/main/scala/examples/hybrid/simulations/PrivateChain.scala index dd96fbc83..ac2377aad 100644 --- a/examples/src/main/scala/examples/hybrid/simulations/PrivateChain.scala +++ b/examples/src/main/scala/examples/hybrid/simulations/PrivateChain.scala @@ -10,7 +10,7 @@ import examples.hybrid.util.FileFunctions import examples.hybrid.wallet.HBoxWallet import scorex.core.block.Block.BlockId import scorex.core.transaction.box.proposition.PublicKey25519Proposition -import scorex.core.utils.{NetworkTimeProvider, ScorexLogging} +import scorex.core.utils.{NetworkTimeProvider, ScorexEncoding, ScorexLogging} import scorex.crypto.encode.Base58 import scorex.crypto.signatures.PublicKey @@ -23,7 +23,7 @@ import scala.util.Try /** * Private chain attack simulation */ -object PrivateChain extends App with ScorexLogging { +object PrivateChain extends App with ScorexLogging with ScorexEncoding { val proposition: PublicKey25519Proposition = PublicKey25519Proposition(PublicKey @@ scorex.utils.Random.randomBytes(32)) diff --git a/examples/src/main/scala/examples/hybrid/state/HBoxStoredState.scala b/examples/src/main/scala/examples/hybrid/state/HBoxStoredState.scala index 10ea34a67..5cd60d7c4 100644 --- a/examples/src/main/scala/examples/hybrid/state/HBoxStoredState.scala +++ b/examples/src/main/scala/examples/hybrid/state/HBoxStoredState.scala @@ -10,7 +10,7 @@ import scorex.core.VersionTag import scorex.core.settings.ScorexSettings import scorex.core.transaction.box.proposition.PublicKey25519Proposition import scorex.core.transaction.state.{BoxStateChangeOperation, BoxStateChanges, Insertion, Removal} -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scorex.crypto.authds._ import scorex.crypto.encode.Base58 import scorex.mid.state.BoxMinimalState @@ -23,7 +23,7 @@ case class HBoxStoredState(store: LSMStore, override val version: VersionTag) ex PublicKey25519NoncedBox, SimpleBoxTransaction, HybridBlock, - HBoxStoredState] with ScorexLogging { + HBoxStoredState] with ScorexLogging with ScorexEncoding { require(store.lastVersionID.map(_.data).getOrElse(version) sameElements version, s"${encoder.encode(store.lastVersionID.map(_.data).getOrElse(version))} != ${encoder.encode(version)}") diff --git a/examples/src/main/scala/examples/hybrid/validation/DifficultyBlockValidator.scala b/examples/src/main/scala/examples/hybrid/validation/DifficultyBlockValidator.scala index b0229a729..42aa270c2 100644 --- a/examples/src/main/scala/examples/hybrid/validation/DifficultyBlockValidator.scala +++ b/examples/src/main/scala/examples/hybrid/validation/DifficultyBlockValidator.scala @@ -4,13 +4,12 @@ import examples.hybrid.blocks.{HybridBlock, PosBlock, PowBlock} import examples.hybrid.history.HistoryStorage import examples.hybrid.mining.{HybridMiningSettings, PosForger} import scorex.core.block.BlockValidator -import scorex.core.utils.ScorexLogging -import scorex.crypto.encode.Base58 +import scorex.core.utils.ScorexEncoding import scala.util.Try class DifficultyBlockValidator(settings: HybridMiningSettings, storage: HistoryStorage) - extends BlockValidator[HybridBlock] with ScorexLogging { + extends BlockValidator[HybridBlock] with ScorexEncoding { def validate(block: HybridBlock): Try[Unit] = block match { case b: PowBlock => checkPoWConsensusRules(b) diff --git a/examples/src/main/scala/examples/hybrid/validation/ParentBlockValidator.scala b/examples/src/main/scala/examples/hybrid/validation/ParentBlockValidator.scala index 70816b0d7..26397b25f 100644 --- a/examples/src/main/scala/examples/hybrid/validation/ParentBlockValidator.scala +++ b/examples/src/main/scala/examples/hybrid/validation/ParentBlockValidator.scala @@ -3,13 +3,12 @@ package examples.hybrid.validation import examples.hybrid.blocks.{HybridBlock, PosBlock, PowBlock} import examples.hybrid.history.HistoryStorage import scorex.core.block.BlockValidator -import scorex.core.utils.ScorexLogging -import scorex.crypto.encode.Base58 +import scorex.core.utils.ScorexEncoding import scala.util.Try class ParentBlockValidator(storage: HistoryStorage) - extends BlockValidator[HybridBlock] with ScorexLogging { + extends BlockValidator[HybridBlock] with ScorexEncoding { def validate(block: HybridBlock): Try[Unit] = Try { block match { diff --git a/examples/src/main/scala/examples/hybrid/wallet/HBoxWallet.scala b/examples/src/main/scala/examples/hybrid/wallet/HBoxWallet.scala index 5d59f6e52..be966ff28 100644 --- a/examples/src/main/scala/examples/hybrid/wallet/HBoxWallet.scala +++ b/examples/src/main/scala/examples/hybrid/wallet/HBoxWallet.scala @@ -12,8 +12,7 @@ import scorex.core.settings.ScorexSettings import scorex.core.transaction.box.proposition.PublicKey25519Proposition import scorex.core.transaction.state.{PrivateKey25519, PrivateKey25519Companion, PrivateKey25519Serializer} import scorex.core.transaction.wallet.{BoxWallet, BoxWalletTransaction, WalletBox, WalletBoxSerializer} -import scorex.core.utils.{ByteStr, ScorexLogging} -import scorex.crypto.encode.Base58 +import scorex.core.utils.{ByteStr, ScorexEncoding, ScorexLogging} import scorex.crypto.hash.Blake2b256 import scala.util.Try @@ -21,7 +20,7 @@ import scala.util.Try case class HBoxWallet(seed: ByteStr, store: LSMStore) extends BoxWallet[PublicKey25519Proposition, SimpleBoxTransaction, HybridBlock, HBoxWallet] - with ScorexLogging { + with ScorexLogging with ScorexEncoding { override type S = PrivateKey25519 override type PI = PublicKey25519Proposition @@ -158,7 +157,7 @@ object HBoxWallet { } -object GenesisStateGenerator extends App with ScorexLogging { +object GenesisStateGenerator extends App with ScorexEncoding { private val w1 = HBoxWallet(ByteStr.decodeBase58("minerNode1").get, new LSMStore(new File("/tmp/w1"))) private val w2 = HBoxWallet(ByteStr.decodeBase58("minerNode2").get, new LSMStore(new File("/tmp/w2"))) private val w3 = HBoxWallet(ByteStr.decodeBase58("minerNode3").get, new LSMStore(new File("/tmp/w3"))) @@ -168,9 +167,9 @@ object GenesisStateGenerator extends App with ScorexLogging { (1 to 10).foreach(_ => w3.generateNewSecret()) val pks = - w1.publicKeys.map(_.pubKeyBytes).map(encoder.encode) ++ - w2.publicKeys.map(_.pubKeyBytes).map(encoder.encode) ++ - w3.publicKeys.map(_.pubKeyBytes).map(encoder.encode) + w1.publicKeys.map(_.pubKeyBytes).map(encoder.encode) ++ + w2.publicKeys.map(_.pubKeyBytes).map(encoder.encode) ++ + w3.publicKeys.map(_.pubKeyBytes).map(encoder.encode) println(pks.map(pk => s""""$pk",""").mkString("\n")) } \ No newline at end of file diff --git a/examples/src/main/scala/examples/spv/Header.scala b/examples/src/main/scala/examples/spv/Header.scala index f21cc13bc..886074450 100644 --- a/examples/src/main/scala/examples/spv/Header.scala +++ b/examples/src/main/scala/examples/spv/Header.scala @@ -7,7 +7,7 @@ import io.circe.syntax._ import scorex.core.block.Block import scorex.core.block.Block._ import scorex.core.serialization.Serializer -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.core.{ModifierId, ModifierTypeId, PersistentNodeViewModifier} import scala.annotation.tailrec @@ -33,7 +33,7 @@ case class Header(parentId: BlockId, override def serializer: Serializer[Header] = HeaderSerializer } -object Header extends ScorexLogging { +object Header extends ScorexEncoding { implicit val headerEncoder: Encoder[Header] = (h: Header) => Map( "id" -> encoder.encode(h.id).asJson, diff --git a/examples/src/main/scala/examples/spv/KMZProof.scala b/examples/src/main/scala/examples/spv/KMZProof.scala index 9aa95bc8e..deb2c8ca8 100644 --- a/examples/src/main/scala/examples/spv/KMZProof.scala +++ b/examples/src/main/scala/examples/spv/KMZProof.scala @@ -2,7 +2,7 @@ package examples.spv import com.google.common.primitives.{Bytes, Shorts} import scorex.core.serialization.Serializer -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scala.annotation.tailrec import scala.util.Try @@ -19,7 +19,7 @@ case class KMZProof(m: Int, k: Int, prefixProofs: Seq[Seq[Header]], suffix: Seq[ } } -object KMZProofSerializer extends Serializer[KMZProof] with ScorexLogging { +object KMZProofSerializer extends Serializer[KMZProof] with ScorexEncoding { override def toBytes(obj: KMZProof): Array[Byte] = { // TODO: fixme, What should we do if `obj.suffix` is empty? diff --git a/examples/src/main/scala/examples/spv/SpvAlgos.scala b/examples/src/main/scala/examples/spv/SpvAlgos.scala index 7d337f4f6..ae5086473 100644 --- a/examples/src/main/scala/examples/spv/SpvAlgos.scala +++ b/examples/src/main/scala/examples/spv/SpvAlgos.scala @@ -1,12 +1,12 @@ package examples.spv import io.iohk.iodb.ByteArrayWrapper -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scala.annotation.tailrec import scala.util.Try -object SpvAlgos extends ScorexLogging { +object SpvAlgos extends ScorexEncoding { def blockIdDifficulty(id: Array[Byte]): BigInt = { val blockTarget = BigInt(1, id) diff --git a/examples/src/main/scala/examples/trimchain/core/Ticket.scala b/examples/src/main/scala/examples/trimchain/core/Ticket.scala index 8cf3fd627..46d760906 100644 --- a/examples/src/main/scala/examples/trimchain/core/Ticket.scala +++ b/examples/src/main/scala/examples/trimchain/core/Ticket.scala @@ -4,7 +4,7 @@ import com.google.common.primitives.{Bytes, Shorts} import io.circe.Encoder import io.circe.syntax._ import scorex.core.serialization.Serializer -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.crypto.authds.SerializedAdProof import scorex.crypto.signatures.Curve25519 @@ -16,7 +16,7 @@ case class Ticket(minerKey: Array[Byte], partialProofs: Seq[SerializedAdProof]) override def toString: String = this.asJson.noSpaces } -object Ticket extends ScorexLogging { +object Ticket extends ScorexEncoding { implicit val ticketEncoder: Encoder[Ticket] = (t: Ticket) => Map( "minerKey" -> encoder.encode(t.minerKey).asJson, diff --git a/examples/src/main/scala/examples/trimchain/modifiers/BlockHeader.scala b/examples/src/main/scala/examples/trimchain/modifiers/BlockHeader.scala index 503ffcf1e..4b5cd6cbd 100644 --- a/examples/src/main/scala/examples/trimchain/modifiers/BlockHeader.scala +++ b/examples/src/main/scala/examples/trimchain/modifiers/BlockHeader.scala @@ -5,9 +5,8 @@ import examples.trimchain.core._ import io.circe.Encoder import io.circe.syntax._ import scorex.core.serialization.Serializer -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.core.{ModifierId, ModifierTypeId} -import scorex.crypto.encode.Base58 import scala.util.Try @@ -32,7 +31,7 @@ case class BlockHeader(override val parentId: ModifierId, override lazy val serializer = BlockHeaderSerializer } -object BlockHeader extends ScorexLogging { +object BlockHeader extends ScorexEncoding { implicit val blockHeaderEncoder: Encoder[BlockHeader] = (bh: BlockHeader) => Map( "id" -> encoder.encode(bh.id).asJson, diff --git a/examples/src/main/scala/examples/trimchain/utxo/PersistentAuthenticatedUtxo.scala b/examples/src/main/scala/examples/trimchain/utxo/PersistentAuthenticatedUtxo.scala index 860cdb072..cba14e4b0 100644 --- a/examples/src/main/scala/examples/trimchain/utxo/PersistentAuthenticatedUtxo.scala +++ b/examples/src/main/scala/examples/trimchain/utxo/PersistentAuthenticatedUtxo.scala @@ -10,7 +10,7 @@ import scorex.core.VersionTag import scorex.core.settings.ScorexSettings import scorex.core.transaction.box.proposition.PublicKey25519Proposition import scorex.core.transaction.state.{BoxStateChangeOperation, BoxStateChanges, Insertion, Removal} -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scorex.crypto.authds.avltree.batch.{BatchAVLProver, Insert, Lookup, Remove} import scorex.crypto.authds.{ADKey, ADValue, SerializedAdProof} import scorex.crypto.encode.Base58 @@ -54,7 +54,7 @@ case class PersistentAuthenticatedUtxo(store: LSMStore, PublicKey25519NoncedBox, SimpleBoxTransaction, TModifier, - PersistentAuthenticatedUtxo] with AuthenticatedUtxo with ScorexLogging { + PersistentAuthenticatedUtxo] with AuthenticatedUtxo with ScorexLogging with ScorexEncoding { import PublicKey25519NoncedBox.{BoxKeyLength, BoxLength} diff --git a/examples/src/test/scala/hybrid/history/HybridHistorySpecification.scala b/examples/src/test/scala/hybrid/history/HybridHistorySpecification.scala index b92ee47b0..c0ead24f1 100644 --- a/examples/src/test/scala/hybrid/history/HybridHistorySpecification.scala +++ b/examples/src/test/scala/hybrid/history/HybridHistorySpecification.scala @@ -6,7 +6,7 @@ import org.scalacheck.Gen import org.scalatest.prop.{GeneratorDrivenPropertyChecks, PropertyChecks} import org.scalatest.{Matchers, PropSpec} import scorex.core.consensus.History.{Equal, HistoryComparisonResult, Older, Younger} -import scorex.core.utils.ScorexLogging +import scorex.core.utils.{ScorexEncoding, ScorexLogging} import scorex.core.{ModifierId, ModifierTypeId} @SuppressWarnings(Array("org.wartremover.warts.TraversableOps", "org.wartremover.warts.OptionPartial")) @@ -15,7 +15,7 @@ class HybridHistorySpecification extends PropSpec with GeneratorDrivenPropertyChecks with Matchers with HybridGenerators - with ScorexLogging { + with ScorexEncoding { var history: HybridHistory = historyGen.sample.get diff --git a/examples/src/test/scala/hybrid/history/IODBSpecification.scala b/examples/src/test/scala/hybrid/history/IODBSpecification.scala index 779a392ce..46ab70bb2 100644 --- a/examples/src/test/scala/hybrid/history/IODBSpecification.scala +++ b/examples/src/test/scala/hybrid/history/IODBSpecification.scala @@ -8,8 +8,7 @@ import org.scalacheck.Gen import org.scalatest.prop.GeneratorDrivenPropertyChecks import org.scalatest.{Matchers, Outcome, fixture} import scorex.core.ModifierId -import scorex.core.utils.ScorexLogging -import scorex.crypto.encode.Base58 +import scorex.core.utils.ScorexEncoding import scorex.testkit.utils.FileUtils @SuppressWarnings(Array("org.wartremover.warts.TraversableOps")) @@ -18,7 +17,7 @@ class IODBSpecification extends fixture.PropSpec with Matchers with HybridGenerators with FileUtils - with ScorexLogging { + with ScorexEncoding { type FixtureParam = LSMStore diff --git a/src/main/scala/scorex/core/NodeViewHolder.scala b/src/main/scala/scorex/core/NodeViewHolder.scala index 61205fccc..24033be71 100644 --- a/src/main/scala/scorex/core/NodeViewHolder.scala +++ b/src/main/scala/scorex/core/NodeViewHolder.scala @@ -9,8 +9,8 @@ import scorex.core.serialization.Serializer import scorex.core.transaction._ import scorex.core.transaction.state.{MinimalState, TransactionValidation} import scorex.core.transaction.wallet.Vault -import scorex.core.utils.ScorexLogging -import scorex.core.validation.{MalformedModifierError, RecoverableModifierError} +import scorex.core.utils.{ScorexEncoding, ScorexLogging} +import scorex.core.validation.RecoverableModifierError import scala.annotation.tailrec import scala.collection.mutable @@ -28,7 +28,7 @@ import scala.util.{Failure, Success, Try} * @tparam PMOD */ trait NodeViewHolder[TX <: Transaction, PMOD <: PersistentNodeViewModifier] - extends Actor with ScorexLogging { + extends Actor with ScorexLogging with ScorexEncoding { import NodeViewHolder.ReceivableMessages._ import NodeViewHolder._ diff --git a/src/main/scala/scorex/core/NodeViewModifier.scala b/src/main/scala/scorex/core/NodeViewModifier.scala index d877dea53..438c378f5 100644 --- a/src/main/scala/scorex/core/NodeViewModifier.scala +++ b/src/main/scala/scorex/core/NodeViewModifier.scala @@ -3,11 +3,11 @@ package scorex.core import com.typesafe.config.ConfigFactory import scorex.core.serialization.BytesSerializable import scorex.core.transaction.Transaction -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scala.util.Try -sealed trait NodeViewModifier extends BytesSerializable with ScorexLogging { +sealed trait NodeViewModifier extends BytesSerializable with ScorexEncoding { self => val modifierTypeId: ModifierTypeId diff --git a/src/main/scala/scorex/core/api/http/NodeViewApiRoute.scala b/src/main/scala/scorex/core/api/http/NodeViewApiRoute.scala index 70e52f63a..1847fcd65 100644 --- a/src/main/scala/scorex/core/api/http/NodeViewApiRoute.scala +++ b/src/main/scala/scorex/core/api/http/NodeViewApiRoute.scala @@ -11,7 +11,7 @@ import scorex.core.settings.RESTApiSettings import scorex.core.transaction.state.MinimalState import scorex.core.transaction.wallet.Vault import scorex.core.transaction.{MemoryPool, Transaction} -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.core.{ModifierId, PersistentNodeViewModifier} import scala.concurrent.ExecutionContext @@ -22,7 +22,7 @@ import scala.util.{Failure, Success} case class NodeViewApiRoute[TX <: Transaction] (override val settings: RESTApiSettings, nodeViewHolderRef: ActorRef) (implicit val context: ActorRefFactory, val serializerReg: SerializerRegistry, val ec: ExecutionContext) - extends ApiRoute with ScorexLogging { + extends ApiRoute with ScorexEncoding { import scorex.core.NodeViewHolder.ReceivableMessages.GetDataFromCurrentView diff --git a/src/main/scala/scorex/core/api/http/UtilsApiRoute.scala b/src/main/scala/scorex/core/api/http/UtilsApiRoute.scala index 9079e8789..2c6f84989 100644 --- a/src/main/scala/scorex/core/api/http/UtilsApiRoute.scala +++ b/src/main/scala/scorex/core/api/http/UtilsApiRoute.scala @@ -7,12 +7,12 @@ import akka.http.scaladsl.server.Route import io.circe.Json import io.circe.syntax._ import scorex.core.settings.RESTApiSettings -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.crypto.hash.Blake2b256 case class UtilsApiRoute(override val settings: RESTApiSettings)(implicit val context: ActorRefFactory) - extends ApiRoute with ScorexLogging { + extends ApiRoute with ScorexEncoding { private val SeedSize = 32 diff --git a/src/main/scala/scorex/core/network/NodeViewSynchronizer.scala b/src/main/scala/scorex/core/network/NodeViewSynchronizer.scala index 1b2595d68..838670794 100644 --- a/src/main/scala/scorex/core/network/NodeViewSynchronizer.scala +++ b/src/main/scala/scorex/core/network/NodeViewSynchronizer.scala @@ -10,7 +10,7 @@ import scorex.core.network.message.{InvSpec, RequestModifierSpec, _} import scorex.core.settings.NetworkSettings import scorex.core.transaction.state.StateReader import scorex.core.transaction.{MempoolReader, Transaction} -import scorex.core.utils.{NetworkTimeProvider, ScorexLogging} +import scorex.core.utils.{NetworkTimeProvider, ScorexEncoding, ScorexLogging} import scorex.core.{PersistentNodeViewModifier, _} import scala.concurrent.ExecutionContext @@ -37,7 +37,7 @@ MR <: MempoolReader[TX]](networkControllerRef: ActorRef, syncInfoSpec: SIS, networkSettings: NetworkSettings, timeProvider: NetworkTimeProvider)(implicit ec: ExecutionContext) extends Actor - with ScorexLogging { + with ScorexLogging with ScorexEncoding { import History._ import NodeViewSynchronizer.ReceivableMessages._ diff --git a/src/main/scala/scorex/core/transaction/box/BoxUnlocker.scala b/src/main/scala/scorex/core/transaction/box/BoxUnlocker.scala index 73161e106..7bc98e0c2 100644 --- a/src/main/scala/scorex/core/transaction/box/BoxUnlocker.scala +++ b/src/main/scala/scorex/core/transaction/box/BoxUnlocker.scala @@ -2,9 +2,9 @@ package scorex.core.transaction.box import scorex.core.transaction.box.proposition.Proposition import scorex.core.transaction.proof.Proof -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding -trait BoxUnlocker[P <: Proposition] extends ScorexLogging { +trait BoxUnlocker[P <: Proposition] extends ScorexEncoding { val closedBoxId: Array[Byte] val boxKey: Proof[P] diff --git a/src/main/scala/scorex/core/transaction/box/proposition/PublicKey25519Proposition.scala b/src/main/scala/scorex/core/transaction/box/proposition/PublicKey25519Proposition.scala index baaf6a128..c9ca895ca 100644 --- a/src/main/scala/scorex/core/transaction/box/proposition/PublicKey25519Proposition.scala +++ b/src/main/scala/scorex/core/transaction/box/proposition/PublicKey25519Proposition.scala @@ -2,14 +2,14 @@ package scorex.core.transaction.box.proposition import scorex.core.serialization.Serializer import scorex.core.transaction.state.PrivateKey25519 -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.crypto.hash.Blake2b256 import scorex.crypto.signatures.{Curve25519, PublicKey, Signature} import scala.util.{Failure, Success, Try} case class PublicKey25519Proposition(pubKeyBytes: PublicKey) - extends ProofOfKnowledgeProposition[PrivateKey25519] with ScorexLogging { + extends ProofOfKnowledgeProposition[PrivateKey25519] with ScorexEncoding { require(pubKeyBytes.length == Curve25519.KeyLength, s"Incorrect pubKey length, ${Curve25519.KeyLength} expected, ${pubKeyBytes.length} found") @@ -44,7 +44,7 @@ object PublicKey25519PropositionSerializer extends Serializer[PublicKey25519Prop Try(PublicKey25519Proposition(PublicKey @@ bytes)) } -object PublicKey25519Proposition extends ScorexLogging { +object PublicKey25519Proposition extends ScorexEncoding { val AddressVersion: Byte = 1 val ChecksumLength: Int = 4 val AddressLength: Int = 1 + Constants25519.PubKeyLength + ChecksumLength diff --git a/src/main/scala/scorex/core/transaction/proof/Signature25519.scala b/src/main/scala/scorex/core/transaction/proof/Signature25519.scala index 5be1c74f7..3701e054a 100644 --- a/src/main/scala/scorex/core/transaction/proof/Signature25519.scala +++ b/src/main/scala/scorex/core/transaction/proof/Signature25519.scala @@ -3,7 +3,7 @@ package scorex.core.transaction.proof import scorex.core.serialization.Serializer import scorex.core.transaction.box.proposition.PublicKey25519Proposition import scorex.core.transaction.state.PrivateKey25519 -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.crypto.signatures.{Curve25519, Signature} import scala.util.Try @@ -12,7 +12,7 @@ import scala.util.Try * @param signature 25519 signature */ case class Signature25519(signature: Signature) extends ProofOfKnowledge[PrivateKey25519, PublicKey25519Proposition] - with ScorexLogging { + with ScorexEncoding { require(signature.isEmpty || signature.length == Curve25519.SignatureLength, s"${signature.length} != ${Curve25519.SignatureLength}") diff --git a/src/main/scala/scorex/core/transaction/state/BoxStateChanges.scala b/src/main/scala/scorex/core/transaction/state/BoxStateChanges.scala index 79c958262..eb4deb021 100644 --- a/src/main/scala/scorex/core/transaction/state/BoxStateChanges.scala +++ b/src/main/scala/scorex/core/transaction/state/BoxStateChanges.scala @@ -2,25 +2,26 @@ package scorex.core.transaction.state import scorex.core.transaction.box.Box import scorex.core.transaction.box.proposition.Proposition -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.crypto.authds._ abstract class BoxStateChangeOperation[P <: Proposition, BX <: Box[P]] -case class Removal[P <: Proposition, BX <: Box[P]](boxId: ADKey) extends BoxStateChangeOperation[P, BX] with ScorexLogging { + +case class Removal[P <: Proposition, BX <: Box[P]](boxId: ADKey) extends BoxStateChangeOperation[P, BX] with ScorexEncoding { override def toString: String = s"Removal(id: ${encoder.encode(boxId)})" } case class Insertion[P <: Proposition, BX <: Box[P]](box: BX) extends BoxStateChangeOperation[P, BX] -case class BoxStateChanges[P <: Proposition, BX <: Box[P]](operations: Seq[BoxStateChangeOperation[P, BX]]){ - lazy val toAppend: Seq[Insertion[P, BX]] = operations.filter {op => +case class BoxStateChanges[P <: Proposition, BX <: Box[P]](operations: Seq[BoxStateChangeOperation[P, BX]]) { + lazy val toAppend: Seq[Insertion[P, BX]] = operations.filter { op => op match { case _: Insertion[P, BX] => true case _ => false } }.asInstanceOf[Seq[Insertion[P, BX]]] - lazy val toRemove: Seq[Removal[P, BX]] = operations.filter {op => + lazy val toRemove: Seq[Removal[P, BX]] = operations.filter { op => op match { case _: Removal[P, BX] => true case _ => false diff --git a/src/main/scala/scorex/core/transaction/wallet/BoxWallet.scala b/src/main/scala/scorex/core/transaction/wallet/BoxWallet.scala index 32a40d7ae..b41f9136d 100644 --- a/src/main/scala/scorex/core/transaction/wallet/BoxWallet.scala +++ b/src/main/scala/scorex/core/transaction/wallet/BoxWallet.scala @@ -6,16 +6,15 @@ import scorex.core.transaction.Transaction import scorex.core.transaction.box.Box import scorex.core.transaction.box.proposition.{ProofOfKnowledgeProposition, Proposition} import scorex.core.transaction.state.Secret -import scorex.core.utils.ScorexLogging +import scorex.core.utils.ScorexEncoding import scorex.core.{ModifierId, NodeViewModifier, PersistentNodeViewModifier} -import scorex.crypto.encode.Base58 import scala.util.Try //TODO why do we need transactionId and createdAt case class WalletBox[P <: Proposition, B <: Box[P]](box: B, transactionId: Array[Byte], createdAt: Long) (subclassDeser: Serializer[B]) extends BytesSerializable - with ScorexLogging { + with ScorexEncoding { override type M = WalletBox[P, B] diff --git a/src/main/scala/scorex/core/utils/ScorexEncoding.scala b/src/main/scala/scorex/core/utils/ScorexEncoding.scala new file mode 100644 index 000000000..2e8765877 --- /dev/null +++ b/src/main/scala/scorex/core/utils/ScorexEncoding.scala @@ -0,0 +1,11 @@ +package scorex.core.utils + +import scorex.crypto.encode.{Base16, BytesEncoder} + +/** + * Trait with bytes to string encoder + * TODO extract to ScorexUtils project + */ +trait ScorexEncoding { + implicit val encoder: BytesEncoder = Base16 +} diff --git a/src/main/scala/scorex/core/utils/ScorexLogging.scala b/src/main/scala/scorex/core/utils/ScorexLogging.scala index 139fd6dc2..a5203674a 100644 --- a/src/main/scala/scorex/core/utils/ScorexLogging.scala +++ b/src/main/scala/scorex/core/utils/ScorexLogging.scala @@ -3,9 +3,9 @@ package scorex.core.utils import com.typesafe.scalalogging.StrictLogging import scorex.crypto.encode.{Base16, BytesEncoder} -// TODO just extend from scrypto logging after the next release -trait ScorexLogging extends StrictLogging { +/** +* TODO extract to ScorexUtils project +*/ +trait ScorexLogging extends StrictLogging { @inline protected def log = logger - - implicit val encoder: BytesEncoder = Base16 }