From b3c6c72c38de863cdf1551d411d6beb52755bcc3 Mon Sep 17 00:00:00 2001 From: Alexander Slesarenko <avslesarenko@gmail.com> Date: Mon, 17 Apr 2023 23:26:05 +0200 Subject: [PATCH 1/7] sigma-v5.0.7: migrate code for new sigma --- .../scorex/crypto/authds/benchmarks/Helper.scala | 2 +- avldb/build.sbt | 3 ++- .../avltree/batch/VersionedLDBAVLStorage.scala | 2 +- .../batch/LDBVersionedStoreSpecification.scala | 2 +- .../VersionedLDBAVLStorageSpecification.scala | 4 ++-- ...ionedLDBAVLStorageStatefulSpecification.scala | 2 +- .../benchmark/LDBVersionedStoreBenchmark.scala | 2 +- .../authds/avltree/batch/benchmark/OOMTest.scala | 4 ++-- build.sbt | 2 +- .../wallet/interface4j/crypto/ErgoSignature.java | 3 ++- .../wallet/interpreter/ErgoInterpreter.scala | 15 ++++++++++++--- .../wallet/secrets/ExtendedPublicKey.scala | 16 +++++++++++----- .../wallet/secrets/ExtendedSecretKey.scala | 14 ++++++++++---- .../wallet/boxes/DefaultBoxSelectorSpec.scala | 2 +- .../wallet/crypto/ErgoSignatureSpec.scala | 2 +- .../interpreter/ErgoProvingInterpreterSpec.scala | 4 ++-- .../interpreter/ErgoUnsafeProverSpec.scala | 4 ++-- .../transactions/TransactionBuilderSpec.scala | 8 ++++---- .../ergoplatform/wallet/utils/Generators.scala | 2 +- .../org/ergoplatform/http/api/ApiCodecs.scala | 2 +- .../ergoplatform/mining/AutolykosPowScheme.scala | 11 +++++++---- .../ergoplatform/mining/CandidateGenerator.scala | 7 ++++--- .../scala/org/ergoplatform/mining/mining.scala | 2 +- .../modifiers/mempool/ErgoTransaction.scala | 4 ++-- .../nodeView/state/UtxoStateReader.scala | 2 +- .../nodeView/wallet/ErgoWalletSupport.scala | 4 ++-- src/main/scala/scorex/core/core.scala | 4 ++-- .../core/validation/ModifierValidator.scala | 2 +- .../http/routes/TransactionApiRouteSpec.scala | 2 +- .../modifiers/mempool/ErgoTransactionSpec.scala | 4 ++-- .../nodeView/wallet/ErgoWalletServiceSpec.scala | 2 +- .../nodeView/wallet/ErgoWalletSpec.scala | 2 +- .../persistence/OffChainRegistrySpec.scala | 8 ++++---- .../ergoplatform/utils/ErgoTestConstants.scala | 2 +- .../org/ergoplatform/utils/WalletTestOps.scala | 4 ++-- 35 files changed, 91 insertions(+), 64 deletions(-) diff --git a/avldb/benchmarks/src/main/scala/scorex/crypto/authds/benchmarks/Helper.scala b/avldb/benchmarks/src/main/scala/scorex/crypto/authds/benchmarks/Helper.scala index 2648c36245..66ef409502 100644 --- a/avldb/benchmarks/src/main/scala/scorex/crypto/authds/benchmarks/Helper.scala +++ b/avldb/benchmarks/src/main/scala/scorex/crypto/authds/benchmarks/Helper.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.benchmarks -import com.google.common.primitives.Longs +import scorex.utils.Longs import scorex.crypto.authds.avltree.batch._ import scorex.crypto.authds.{ADKey, ADValue} import scorex.crypto.hash.{Blake2b256, Digest32} diff --git a/avldb/build.sbt b/avldb/build.sbt index 3378dd64ee..7add06c7d9 100644 --- a/avldb/build.sbt +++ b/avldb/build.sbt @@ -5,7 +5,8 @@ name := "avldb" libraryDependencies ++= Seq( "javax.xml.bind" % "jaxb-api" % "2.4.0-b180830.0359", "ch.qos.logback" % "logback-classic" % "1.2.3", - "org.scorexfoundation" %% "scrypto" % "2.2.1" + "com.google.guava" % "guava" % "23.0", + "org.scorexfoundation" %% "scrypto" % "2.3.0" ) libraryDependencies ++= Seq( diff --git a/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorage.scala b/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorage.scala index 7e13bf73ed..6c0d4f4822 100644 --- a/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorage.scala +++ b/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorage.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.avltree.batch -import com.google.common.primitives.Ints +import scorex.utils.Ints import scorex.crypto.authds.avltree.batch.VersionedLDBAVLStorage.{InternalNodePrefix, LeafPrefix} import scorex.crypto.authds.{ADDigest, ADKey, ADValue, Balance} import scorex.util.encode.Base58 diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/LDBVersionedStoreSpecification.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/LDBVersionedStoreSpecification.scala index f3236cfff3..9eb88a4630 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/LDBVersionedStoreSpecification.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/LDBVersionedStoreSpecification.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.avltree.batch -import com.google.common.primitives.Longs +import scorex.utils.Longs import org.scalatest.matchers.should.Matchers import org.scalatest.propspec.AnyPropSpec import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala index 31e90fdecd..082c8994af 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.avltree.batch -import com.google.common.primitives.Longs +import scorex.utils.Longs import org.scalacheck.{Arbitrary, Gen} import org.scalatest.Assertion import org.scalatest.matchers.should.Matchers @@ -193,7 +193,7 @@ class VersionedLDBAVLStorageSpecification extends AnyPropSpec val rollbackVersionsTest: (PERSISTENT_PROVER, STORAGE) => Assertion = { (prover: PERSISTENT_PROVER, storage: STORAGE) => (0L until 50L).foreach { long => val insert = Insert(ADKey @@ RandomBytes.randomBytes(32), - ADValue @@ com.google.common.primitives.Longs.toByteArray(long)) + ADValue @@ scorex.utils.Longs.toByteArray(long)) prover.performOneOperation(insert) prover.generateProofAndUpdateStorage() prover.digest diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageStatefulSpecification.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageStatefulSpecification.scala index a7b6288edd..81d0e64263 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageStatefulSpecification.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageStatefulSpecification.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.avltree.batch -import com.google.common.primitives.Longs +import scorex.utils.Longs import org.scalacheck.Test.Parameters import org.scalacheck.commands.Commands import org.scalacheck.{Prop, Gen} diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/LDBVersionedStoreBenchmark.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/LDBVersionedStoreBenchmark.scala index 62c16fcc10..7e791d9b70 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/LDBVersionedStoreBenchmark.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/LDBVersionedStoreBenchmark.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.avltree.batch.benchmark -import com.google.common.primitives.Longs +import scorex.utils.Longs import scorex.crypto.authds.avltree.batch.helpers.FileHelper import scorex.utils.Random import scorex.db.LDBVersionedStore diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/OOMTest.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/OOMTest.scala index 67e3c2c26c..3783675ef0 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/OOMTest.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/OOMTest.scala @@ -3,7 +3,7 @@ package scorex.crypto.authds.avltree.batch.benchmark import java.io.File import java.nio.file.Files -import com.google.common.primitives.{Longs, Shorts} +import scorex.utils.{Longs, Shorts} import scorex.crypto.authds.{ADDigest, ADKey, ADValue} import scorex.crypto.authds.avltree.batch._ import scorex.util.encode.Base16 @@ -67,7 +67,7 @@ object OOMTest extends App { Longs.toByteArray(value) ++ propBytes ++ (0.toByte +: Array.emptyByteArray) ++ transactionId ++ Shorts.toByteArray(boxId) val id = Blake2b256.hash(bytes) - ADKey @@ id -> ADValue @@ bytes + ADKey @@@ id -> ADValue @@@ bytes } private def metadata(modId: Array[Byte], stateRoot: ADDigest): Seq[(Array[Byte], Array[Byte])] = { diff --git a/build.sbt b/build.sbt index 18b62c9859..e5e214ec56 100644 --- a/build.sbt +++ b/build.sbt @@ -37,7 +37,7 @@ val circeVersion = "0.13.0" val akkaVersion = "2.6.10" val akkaHttpVersion = "10.2.4" -val sigmaStateVersion = "5.0.5" +val sigmaStateVersion = "5.0.6-64-e991c928-SNAPSHOT" // for testing current sigmastate build (see sigmastate-ergo-it jenkins job) val effectiveSigmaStateVersion = Option(System.getenv().get("SIGMASTATE_VERSION")).getOrElse(sigmaStateVersion) diff --git a/ergo-wallet/src/main/java/org/ergoplatform/wallet/interface4j/crypto/ErgoSignature.java b/ergo-wallet/src/main/java/org/ergoplatform/wallet/interface4j/crypto/ErgoSignature.java index 8e27003ce4..989363a6f2 100644 --- a/ergo-wallet/src/main/java/org/ergoplatform/wallet/interface4j/crypto/ErgoSignature.java +++ b/ergo-wallet/src/main/java/org/ergoplatform/wallet/interface4j/crypto/ErgoSignature.java @@ -2,6 +2,7 @@ import org.bouncycastle.math.ec.custom.sec.SecP256K1Point; import scala.math.BigInt; +import sigmastate.crypto.Platform; import java.math.BigInteger; @@ -25,7 +26,7 @@ public byte[] sign(byte[] msg, BigInteger sk) { * @return `true` is the signature is valid, `false` otherwise */ public boolean verify(byte[] msg, byte[] signature, SecP256K1Point pk) { - return org.ergoplatform.wallet.crypto.ErgoSignature.verify(msg, signature, pk); + return org.ergoplatform.wallet.crypto.ErgoSignature.verify(msg, signature, new Platform.Ecp(pk)); } } diff --git a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/interpreter/ErgoInterpreter.scala b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/interpreter/ErgoInterpreter.scala index 49460d9a3b..449ff6cb9a 100644 --- a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/interpreter/ErgoInterpreter.scala +++ b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/interpreter/ErgoInterpreter.scala @@ -3,10 +3,11 @@ package org.ergoplatform.wallet.interpreter import org.ergoplatform.ErgoLikeContext.Height import org.ergoplatform.wallet.protocol.Constants import org.ergoplatform.wallet.protocol.context.ErgoLikeParameters -import org.ergoplatform.{ErgoLikeContext, ErgoBox, ErgoBoxCandidate, ErgoLikeInterpreter} +import org.ergoplatform.{ErgoBox, ErgoBoxCandidate, ErgoLikeContext, ErgoLikeInterpreter} import scorex.crypto.authds.ADDigest +import scorex.util.ScorexLogging import sigmastate.Values.ErgoTree -import sigmastate.interpreter.Interpreter.{VerificationResult, ScriptEnv} +import sigmastate.interpreter.Interpreter.{ScriptEnv, VerificationResult} import sigmastate.{AvlTreeData, AvlTreeFlags} import scala.util.Try @@ -18,7 +19,15 @@ import scala.util.Try * @param params - current values of adjustable blockchain settings */ class ErgoInterpreter(params: ErgoLikeParameters) - extends ErgoLikeInterpreter { + extends ErgoLikeInterpreter with ScorexLogging { + + /** Override default logging for all Ergo interpreters. */ + override protected def logMessage(msg: String): Unit = { + log.error(msg) + } + override protected def logMessage(msg: String, t: Throwable): Unit = { + log.error(msg, t) + } override type CTX = ErgoLikeContext diff --git a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedPublicKey.scala b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedPublicKey.scala index ad3955bf0f..56b15b3f50 100644 --- a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedPublicKey.scala +++ b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedPublicKey.scala @@ -1,13 +1,15 @@ package org.ergoplatform.wallet.secrets -import java.util +import org.bouncycastle.math.ec.ECPoint +import java.util import org.bouncycastle.util.BigIntegers import org.ergoplatform.wallet.Constants import org.ergoplatform.wallet.crypto.HmacSHA512 import org.ergoplatform.wallet.serialization.ErgoWalletSerializer import scorex.util.serialization.{Reader, Writer} import sigmastate.basics.DLogProtocol.{DLogProverInput, ProveDlog} +import sigmastate.crypto.CryptoFacade import sigmastate.interpreter.CryptoConstants import scala.annotation.tailrec @@ -24,7 +26,7 @@ final class ExtendedPublicKey(private[secrets] val keyBytes: Array[Byte], def selfReflection: ExtendedPublicKey = this def key: ProveDlog = ProveDlog( - CryptoConstants.dlogGroup.curve.decodePoint(keyBytes).asInstanceOf[CryptoConstants.EcPointType] + CryptoConstants.dlogGroup.ctx.decodePoint(keyBytes) ) def child(idx: Int): ExtendedPublicKey = ExtendedPublicKey.deriveChildPublicKey(this, idx) @@ -56,11 +58,15 @@ object ExtendedPublicKey { .hash(parentKey.chainCode, parentKey.keyBytes ++ Index.serializeIndex(idx)) .splitAt(Constants.SecretKeyLength) val childKeyProtoDecoded = BigIntegers.fromUnsignedByteArray(childKeyProto) - val childKey = DLogProverInput(childKeyProtoDecoded).publicImage.value.add(parentKey.key.value) - if (childKeyProtoDecoded.compareTo(CryptoConstants.groupOrder) >= 0 || childKey.isInfinity) { + val childKey = CryptoFacade.multiplyPoints( + DLogProverInput(childKeyProtoDecoded).publicImage.value, + parentKey.key.value) + if (childKeyProtoDecoded.compareTo(CryptoConstants.groupOrder) >= 0 || CryptoFacade.isInfinityPoint(childKey)) { deriveChildPublicKey(parentKey, idx + 1) } else { - new ExtendedPublicKey(childKey.getEncoded(true), childChainCode, parentKey.path.extended(idx)) + new ExtendedPublicKey( + CryptoFacade.encodePoint(childKey, true), + childChainCode, parentKey.path.extended(idx)) } } diff --git a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedSecretKey.scala b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedSecretKey.scala index 35825a0800..c860f979d8 100644 --- a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedSecretKey.scala +++ b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedSecretKey.scala @@ -1,8 +1,9 @@ package org.ergoplatform.wallet.secrets +import org.bouncycastle.math.ec.ECPoint + import java.math.BigInteger import java.util - import org.bouncycastle.util.BigIntegers import org.ergoplatform.wallet.Constants import org.ergoplatform.wallet.crypto.HmacSHA512 @@ -10,6 +11,7 @@ import org.ergoplatform.wallet.serialization.ErgoWalletSerializer import scorex.util.serialization.{Reader, Writer} import sigmastate.basics.DLogProtocol import sigmastate.basics.DLogProtocol.DLogProverInput +import sigmastate.crypto.CryptoFacade import sigmastate.interpreter.CryptoConstants /** @@ -30,8 +32,11 @@ final class ExtendedSecretKey(private[secrets] val keyBytes: Array[Byte], def child(idx: Int): ExtendedSecretKey = ExtendedSecretKey.deriveChildSecretKey(this, idx) + /** Returns extended public key corresponding to this secret key. */ def publicKey: ExtendedPublicKey = - new ExtendedPublicKey(privateInput.publicImage.value.getEncoded(true), chainCode, path.toPublicBranch) + new ExtendedPublicKey( + CryptoFacade.encodePoint(privateInput.publicImage.value, compressed = true), + chainCode, path.toPublicBranch) def isErased: Boolean = keyBytes.forall(_ == 0x00) @@ -60,7 +65,7 @@ object ExtendedSecretKey { def deriveChildSecretKey(parentKey: ExtendedSecretKey, idx: Int): ExtendedSecretKey = { val keyCoded: Array[Byte] = if (Index.isHardened(idx)) (0x00: Byte) +: parentKey.keyBytes - else parentKey.privateInput.publicImage.value.getEncoded(true) + else CryptoFacade.encodePoint(parentKey.privateInput.publicImage.value, compressed = true) val (childKeyProto, childChainCode) = HmacSHA512 .hash(parentKey.chainCode, keyCoded ++ Index.serializeIndex(idx)) .splitAt(Constants.SecretKeyLength) @@ -85,7 +90,8 @@ object ExtendedSecretKey { def deriveChildPublicKey(parentKey: ExtendedSecretKey, idx: Int): ExtendedPublicKey = { val derivedSecret = deriveChildSecretKey(parentKey, idx) - val derivedPk = derivedSecret.privateInput.publicImage.value.getEncoded(true) + val derivedPk = CryptoFacade.encodePoint( + derivedSecret.privateInput.publicImage.value, compressed = true) val derivedPath = derivedSecret.path.copy(publicBranch = true) new ExtendedPublicKey(derivedPk, derivedSecret.chainCode, derivedPath) } diff --git a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/boxes/DefaultBoxSelectorSpec.scala b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/boxes/DefaultBoxSelectorSpec.scala index 44f8a6e211..aee68d6250 100644 --- a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/boxes/DefaultBoxSelectorSpec.scala +++ b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/boxes/DefaultBoxSelectorSpec.scala @@ -222,7 +222,7 @@ class DefaultBoxSelectorSpec extends AnyPropSpec with Matchers with EitherValues val tokenData = genTokens(3).last tokenData._2 shouldBe 2 - val tokenId = ModifierId @@ bytesToId(tokenData._1) + val tokenId = ModifierId @@@ bytesToId(tokenData._1) val ergValue = 10 * MinBoxValue diff --git a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/crypto/ErgoSignatureSpec.scala b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/crypto/ErgoSignatureSpec.scala index f9286e5dd1..42993ec9df 100644 --- a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/crypto/ErgoSignatureSpec.scala +++ b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/crypto/ErgoSignatureSpec.scala @@ -18,7 +18,7 @@ class ErgoSignatureSpec extends AnyPropSpec with Matchers with Generators { val sig = sign(msg, secret.w) - verify(msg, sig, pk.h) shouldBe true + verify(msg, sig, pk.value) shouldBe true } property("always produce signature of fixed length") { diff --git a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/interpreter/ErgoProvingInterpreterSpec.scala b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/interpreter/ErgoProvingInterpreterSpec.scala index 438770a1f1..123b70695e 100644 --- a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/interpreter/ErgoProvingInterpreterSpec.scala +++ b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/interpreter/ErgoProvingInterpreterSpec.scala @@ -42,8 +42,8 @@ class ErgoProvingInterpreterSpec signedTxFull.inputs.map(_.spendingProof.proof).zip(signedTxFull.inputs.map(_.spendingProof.proof)) .foreach { case (fullProof, unsafeProof) => - ErgoSignature.verify(unsignedTx.messageToSign, fullProof, extendedSecretKey.publicKey.key.h) shouldBe - ErgoSignature.verify(unsignedTx.messageToSign, unsafeProof, extendedSecretKey.publicKey.key.h) + ErgoSignature.verify(unsignedTx.messageToSign, fullProof, extendedSecretKey.publicKey.key.value) shouldBe + ErgoSignature.verify(unsignedTx.messageToSign, unsafeProof, extendedSecretKey.publicKey.key.value) } } } diff --git a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/interpreter/ErgoUnsafeProverSpec.scala b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/interpreter/ErgoUnsafeProverSpec.scala index 2be289322c..e19690d8cb 100644 --- a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/interpreter/ErgoUnsafeProverSpec.scala +++ b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/interpreter/ErgoUnsafeProverSpec.scala @@ -32,8 +32,8 @@ class ErgoUnsafeProverSpec signedTxFull.inputs.map(_.spendingProof.proof).zip(signedTxFull.inputs.map(_.spendingProof.proof)) .foreach { case (fullProof, unsafeProof) => - ErgoSignature.verify(unsignedTx.messageToSign, fullProof, extendedSecretKey.publicKey.key.h) shouldBe - ErgoSignature.verify(unsignedTx.messageToSign, unsafeProof, extendedSecretKey.publicKey.key.h) + ErgoSignature.verify(unsignedTx.messageToSign, fullProof, extendedSecretKey.publicKey.key.value) shouldBe + ErgoSignature.verify(unsignedTx.messageToSign, unsafeProof, extendedSecretKey.publicKey.key.value) } } } diff --git a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/transactions/TransactionBuilderSpec.scala b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/transactions/TransactionBuilderSpec.scala index 3f41745308..9dfaad23a0 100644 --- a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/transactions/TransactionBuilderSpec.scala +++ b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/transactions/TransactionBuilderSpec.scala @@ -74,7 +74,7 @@ class TransactionBuilderSpec extends WalletTestHelpers with Matchers { property("token minting") { val inputBox = box(minBoxValue * 2) - val tokenId = Digest32 @@ inputBox.id + val tokenId = Digest32 @@@ inputBox.id val outBox = boxCandidate(minBoxValue, Seq(tokenId -> 100L)) val res = transaction(inputBox, outBox) @@ -87,7 +87,7 @@ class TransactionBuilderSpec extends WalletTestHelpers with Matchers { property("token burning") { val inputBox = box(minBoxValue * 3, Seq(Digest32 @@ idToBytes(tid1) -> 1000L, Digest32 @@ idToBytes(tid2) -> 2000L)) - val tokenId = Digest32 @@ inputBox.id + val tokenId = Digest32 @@@ inputBox.id val outBox = boxCandidate(minBoxValue, Seq(tokenId -> 100L)) val res = transaction(inputBox, outBox, burnTokens = Map(tid1 -> 400L, tid2 -> 800L)) @@ -105,7 +105,7 @@ class TransactionBuilderSpec extends WalletTestHelpers with Matchers { property("no fees") { val inputBox = box(minBoxValue) - val tokenId = Digest32 @@ inputBox.id + val tokenId = Digest32 @@@ inputBox.id val outBox = boxCandidate(minBoxValue, Seq(tokenId -> 100L)) val res = transaction(inputBox, outBox, fee = None) @@ -117,7 +117,7 @@ class TransactionBuilderSpec extends WalletTestHelpers with Matchers { property("change goes to fee, but no outFee box") { val inputBox = box(minBoxValue + minBoxValue / 2) - val tokenId = Digest32 @@ inputBox.id + val tokenId = Digest32 @@@ inputBox.id val outBox = boxCandidate(minBoxValue, Seq(tokenId -> 100L)) val res = transaction(inputBox, outBox, fee = None) diff --git a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/utils/Generators.scala b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/utils/Generators.scala index ec4f7ff88f..0a515eb024 100644 --- a/ergo-wallet/src/test/scala/org/ergoplatform/wallet/utils/Generators.scala +++ b/ergo-wallet/src/test/scala/org/ergoplatform/wallet/utils/Generators.scala @@ -77,7 +77,7 @@ trait Generators { val assetGen: Gen[(TokenId, Long)] = for { id <- boxIdGen amt <- Gen.oneOf(1, 500, 20000, 10000000, Long.MaxValue) - } yield Digest32 @@ id -> amt + } yield Digest32 @@@ id -> amt def additionalTokensGen(cnt: Int): Gen[Seq[(TokenId, Long)]] = Gen.listOfN(cnt, assetGen) diff --git a/src/main/scala/org/ergoplatform/http/api/ApiCodecs.scala b/src/main/scala/org/ergoplatform/http/api/ApiCodecs.scala index cef83cbb00..0649507c17 100644 --- a/src/main/scala/org/ergoplatform/http/api/ApiCodecs.scala +++ b/src/main/scala/org/ergoplatform/http/api/ApiCodecs.scala @@ -204,7 +204,7 @@ trait ApiCodecs extends JsonCodecs { sigma => val op = sigma.opCode.toByte.asJson sigma match { - case dlog: ProveDlog => Map("op" -> op, "h" -> dlog.h.asJson).asJson + case dlog: ProveDlog => Map("op" -> op, "h" -> dlog.value.asJson).asJson case dht: ProveDHTuple => Map("op" -> op, "g" -> dht.g.asJson, "h" -> dht.h.asJson, "u" -> dht.u.asJson, "v" -> dht.v.asJson).asJson case tp: TrivialProp => Map("op" -> op, "condition" -> tp.condition.asJson).asJson case and: CAND => diff --git a/src/main/scala/org/ergoplatform/mining/AutolykosPowScheme.scala b/src/main/scala/org/ergoplatform/mining/AutolykosPowScheme.scala index 8e07df9224..69391fe498 100644 --- a/src/main/scala/org/ergoplatform/mining/AutolykosPowScheme.scala +++ b/src/main/scala/org/ergoplatform/mining/AutolykosPowScheme.scala @@ -16,6 +16,7 @@ import scorex.crypto.authds.{ADDigest, SerializedAdProof} import scorex.crypto.hash.{Blake2b256, Digest32} import scorex.util.{ModifierId, ScorexLogging} import sigmastate.basics.DLogProtocol.ProveDlog +import sigmastate.crypto.CryptoFacade import scala.annotation.tailrec import scala.math.BigInt @@ -126,8 +127,8 @@ class AutolykosPowScheme(val k: Int, val n: Int) extends ScorexLogging { val N = calcN(header) require(s.d < b, s"Incorrect d = ${s.d} for b = $b") - require(s.pk.getCurve == group.curve && !s.pk.isInfinity, "pk is incorrect") - require(s.w.getCurve == group.curve && !s.w.isInfinity, "w is incorrect") + require(CryptoFacade.getCurve(s.pk) == group.ctx.curve && !CryptoFacade.isInfinityPoint(s.pk), "pk is incorrect") + require(CryptoFacade.getCurve(s.w) == group.ctx.curve && !CryptoFacade.isInfinityPoint(s.w), "w is incorrect") val pkBytes = groupElemToBytes(s.pk) val wBytes = groupElemToBytes(s.w) @@ -137,8 +138,10 @@ class AutolykosPowScheme(val k: Int, val n: Int) extends ScorexLogging { //height is not used in v1 val f = indexes.map(idx => genElement(version, msg, pkBytes, wBytes, Ints.toByteArray(idx), null)).sum.mod(q) - val left = s.w.multiply(f.bigInteger) - val right = group.generator.multiply(s.d.bigInteger).add(s.pk) + val left = CryptoFacade.exponentiatePoint(s.w, f.bigInteger) + val right = CryptoFacade.multiplyPoints( + CryptoFacade.exponentiatePoint(group.generator, s.d.bigInteger), + s.pk) left == right } diff --git a/src/main/scala/org/ergoplatform/mining/CandidateGenerator.scala b/src/main/scala/org/ergoplatform/mining/CandidateGenerator.scala index dbdab5b7f2..0761afb673 100644 --- a/src/main/scala/org/ergoplatform/mining/CandidateGenerator.scala +++ b/src/main/scala/org/ergoplatform/mining/CandidateGenerator.scala @@ -13,7 +13,7 @@ import org.ergoplatform.modifiers.history.header.{Header, HeaderWithoutPow} import org.ergoplatform.modifiers.history.popow.NipopowAlgos import org.ergoplatform.modifiers.mempool.{ErgoTransaction, UnconfirmedTransaction} import org.ergoplatform.network.ErgoNodeViewSynchronizer.ReceivableMessages -import ReceivableMessages.{ChangedHistory, ChangedMempool, ChangedState, NodeViewChange, FullBlockApplied} +import ReceivableMessages.{ChangedHistory, ChangedMempool, ChangedState, FullBlockApplied, NodeViewChange} import org.ergoplatform.nodeView.ErgoReadersHolder.{GetReaders, Readers} import org.ergoplatform.nodeView.history.ErgoHistory.Height import org.ergoplatform.nodeView.history.{ErgoHistory, ErgoHistoryReader} @@ -29,6 +29,7 @@ import scorex.util.encode.Base16 import scorex.util.{ModifierId, ScorexLogging} import sigmastate.SType.ErgoBoxRType import sigmastate.basics.DLogProtocol.ProveDlog +import sigmastate.crypto.CryptoFacade import sigmastate.eval.Extensions._ import sigmastate.eval._ import sigmastate.interpreter.ProverResult @@ -183,7 +184,7 @@ class CandidateGenerator( if state.solvedBlock.isEmpty && state.cache.nonEmpty => // Inject node pk if it is not externally set (in Autolykos 2) val solution = - if (preSolution.pk.isInfinity) { + if (CryptoFacade.isInfinityPoint(preSolution.pk)) { AutolykosSolution(minerPk.value, preSolution.w, preSolution.n, preSolution.d) } else { preSolution @@ -506,7 +507,7 @@ object CandidateGenerator extends ScorexLogging { ) val upcomingContext = state.stateContext.upcoming( - minerPk.h, + minerPk.value, timestamp, nBits, votes, diff --git a/src/main/scala/org/ergoplatform/mining/mining.scala b/src/main/scala/org/ergoplatform/mining/mining.scala index e7da407f4d..9b3a7fb3d3 100644 --- a/src/main/scala/org/ergoplatform/mining/mining.scala +++ b/src/main/scala/org/ergoplatform/mining/mining.scala @@ -14,7 +14,7 @@ package object mining { val PublicKeyLength: Byte = 33 - val group: BcDlogGroup[EcPointType] = CryptoConstants.dlogGroup + val group: BcDlogGroup = CryptoConstants.dlogGroup // Group order, used in Autolykos V.1 for non-outsourceability, // and also to obtain target in both Autolykos v1 and v2 diff --git a/src/main/scala/org/ergoplatform/modifiers/mempool/ErgoTransaction.scala b/src/main/scala/org/ergoplatform/modifiers/mempool/ErgoTransaction.scala index 983205c8ed..e1e16f26d8 100644 --- a/src/main/scala/org/ergoplatform/modifiers/mempool/ErgoTransaction.scala +++ b/src/main/scala/org/ergoplatform/modifiers/mempool/ErgoTransaction.scala @@ -227,10 +227,10 @@ case class ErgoTransaction(override val inputs: IndexedSeq[Input], lazy val reemissionSettings = stateContext.ergoSettings.chainSettings.reemission lazy val reemissionRules = reemissionSettings.reemissionRules - lazy val reemissionTokenId = ModifierId @@ reemissionSettings.reemissionTokenId + lazy val reemissionTokenId = ModifierId @@@ reemissionSettings.reemissionTokenId lazy val reemissionTokenIdBytes = reemissionSettings.reemissionTokenIdBytes - lazy val emissionNftId = ModifierId @@ reemissionSettings.emissionNftId + lazy val emissionNftId = ModifierId @@@ reemissionSettings.emissionNftId lazy val emissionNftIdBytes = reemissionSettings.emissionNftIdBytes lazy val chainSettings = stateContext.ergoSettings.chainSettings diff --git a/src/main/scala/org/ergoplatform/nodeView/state/UtxoStateReader.scala b/src/main/scala/org/ergoplatform/nodeView/state/UtxoStateReader.scala index 69db43c082..cc7646ec66 100644 --- a/src/main/scala/org/ergoplatform/nodeView/state/UtxoStateReader.scala +++ b/src/main/scala/org/ergoplatform/nodeView/state/UtxoStateReader.scala @@ -30,7 +30,7 @@ trait UtxoStateReader extends ErgoStateReader with TransactionValidation { protected val persistentProver: PersistentBatchAVLProver[Digest32, HF] def generateBatchProofForBoxes(boxes: Seq[ErgoBox.BoxId]): SerializedAdProof = persistentProver.synchronized { - boxes.map { box => persistentProver.performOneOperation(Lookup(ADKey @@ box)) } + boxes.map { box => persistentProver.performOneOperation(Lookup(ADKey @@@ box)) } persistentProver.prover().generateProof() } diff --git a/src/main/scala/org/ergoplatform/nodeView/wallet/ErgoWalletSupport.scala b/src/main/scala/org/ergoplatform/nodeView/wallet/ErgoWalletSupport.scala index ba19e06b59..cef8c8e37b 100644 --- a/src/main/scala/org/ergoplatform/nodeView/wallet/ErgoWalletSupport.scala +++ b/src/main/scala/org/ergoplatform/nodeView/wallet/ErgoWalletSupport.scala @@ -212,7 +212,7 @@ trait ErgoWalletSupport extends ScorexLogging { def minimalErgoAmount: Long = BoxUtils.minimalErgoAmountSimulated( lockWithAddress.script, - Colls.fromItems((Digest32 @@ assetId) -> amount), + Colls.fromItems((Digest32 @@@ assetId) -> amount), nonMandatoryRegisters, parameters ) @@ -221,7 +221,7 @@ trait ErgoWalletSupport extends ScorexLogging { valueOpt.getOrElse(minimalErgoAmount), lockWithAddress.script, fullHeight, - Colls.fromItems((Digest32 @@ assetId) -> amount), + Colls.fromItems((Digest32 @@@ assetId) -> amount), nonMandatoryRegisters ) } diff --git a/src/main/scala/scorex/core/core.scala b/src/main/scala/scorex/core/core.scala index 8609bd0eb1..b71bae65b2 100644 --- a/src/main/scala/scorex/core/core.scala +++ b/src/main/scala/scorex/core/core.scala @@ -33,8 +33,8 @@ package object core { def versionToBytes(id: VersionTag): Array[Byte] = Base16.decode(id).get - def versionToId(version: VersionTag): util.ModifierId = util.ModifierId @@ version + def versionToId(version: VersionTag): util.ModifierId = util.ModifierId @@@ version - def idToVersion(id: util.ModifierId): VersionTag = VersionTag @@ id + def idToVersion(id: util.ModifierId): VersionTag = VersionTag @@@ id } diff --git a/src/main/scala/scorex/core/validation/ModifierValidator.scala b/src/main/scala/scorex/core/validation/ModifierValidator.scala index 8e23763c69..a8c35aea5b 100644 --- a/src/main/scala/scorex/core/validation/ModifierValidator.scala +++ b/src/main/scala/scorex/core/validation/ModifierValidator.scala @@ -151,7 +151,7 @@ case class ValidationState[T](result: ValidationResult[T], settings: ValidationS case Success(_) => result case Failure(unexpectedEx) => - settings.getError(id, unexpectedEx, ModifierId @@ bytesToId(Array.fill(32)(0.toByte)), modifierTypeId) + settings.getError(id, unexpectedEx, ModifierId @@@ bytesToId(Array.fill(32)(0.toByte)), modifierTypeId) } } } diff --git a/src/test/scala/org/ergoplatform/http/routes/TransactionApiRouteSpec.scala b/src/test/scala/org/ergoplatform/http/routes/TransactionApiRouteSpec.scala index 04d0e60ca1..ab267a4c33 100644 --- a/src/test/scala/org/ergoplatform/http/routes/TransactionApiRouteSpec.scala +++ b/src/test/scala/org/ergoplatform/http/routes/TransactionApiRouteSpec.scala @@ -44,7 +44,7 @@ class TransactionApiRouteSpec extends AnyFlatSpec val dataInput = DataInput(input.boxId) val absentModifierId = "0000000000000000000000000000000000000000000000000000000000000000" - val tokens = List[(TokenId, Long)](Digest32 @@ inputBox.id -> 10) + val tokens = List[(TokenId, Long)](Digest32 @@@ inputBox.id -> 10) val registers = Map( ErgoBox.R4 -> ByteArrayConstant("name".getBytes("UTF-8")), diff --git a/src/test/scala/org/ergoplatform/modifiers/mempool/ErgoTransactionSpec.scala b/src/test/scala/org/ergoplatform/modifiers/mempool/ErgoTransactionSpec.scala index 16a2389dfa..b3f9ead789 100644 --- a/src/test/scala/org/ergoplatform/modifiers/mempool/ErgoTransactionSpec.scala +++ b/src/test/scala/org/ergoplatform/modifiers/mempool/ErgoTransactionSpec.scala @@ -41,7 +41,7 @@ class ErgoTransactionSpec extends ErgoPropertyTest with ErgoTestConstants { (seq :+ ebc) -> true } else { if (ebc.additionalTokens.nonEmpty && ebc.additionalTokens.exists(t => !java.util.Arrays.equals(t._1, from.head.id))) { - (seq :+ modifyAsset(ebc, deltaFn, Digest32 @@ from.head.id)) -> true + (seq :+ modifyAsset(ebc, deltaFn, Digest32 @@@ from.head.id)) -> true } else { (seq :+ ebc) -> false } @@ -96,7 +96,7 @@ class ErgoTransactionSpec extends ErgoPropertyTest with ErgoTestConstants { val minerPkHex = "0326df75ea615c18acc6bb4b517ac82795872f388d5d180aac90eaa84de750b942" val minerPk = Base16.decode(minerPkHex).map { point => ProveDlog( - CryptoConstants.dlogGroup.curve.decodePoint(point).asInstanceOf[CryptoConstants.EcPointType] + CryptoConstants.dlogGroup.ctx.decodePoint(point) ) }.get val inputs: IndexedSeq[Input] = IndexedSeq( diff --git a/src/test/scala/org/ergoplatform/nodeView/wallet/ErgoWalletServiceSpec.scala b/src/test/scala/org/ergoplatform/nodeView/wallet/ErgoWalletServiceSpec.scala index ba5a5015cb..044aeaafdd 100644 --- a/src/test/scala/org/ergoplatform/nodeView/wallet/ErgoWalletServiceSpec.scala +++ b/src/test/scala/org/ergoplatform/nodeView/wallet/ErgoWalletServiceSpec.scala @@ -259,7 +259,7 @@ class ErgoWalletServiceSpec val walletService = new ErgoWalletServiceImpl(settings) val signedTx = walletService.generateTransaction(wState, boxSelector, Seq(paymentRequest), inputsRaw = encodedBoxes, dataInputsRaw = Seq.empty, sign = true).get.asInstanceOf[ErgoTransaction] - ErgoSignature.verify(signedTx.messageToSign, signedTx.inputs.head.spendingProof.proof, pks.head.pubkey.h) shouldBe true + ErgoSignature.verify(signedTx.messageToSign, signedTx.inputs.head.spendingProof.proof, pks.head.pubkey.value) shouldBe true signedTx.inputs.size shouldBe 1 signedTx.outputs.size shouldBe 2 diff --git a/src/test/scala/org/ergoplatform/nodeView/wallet/ErgoWalletSpec.scala b/src/test/scala/org/ergoplatform/nodeView/wallet/ErgoWalletSpec.scala index 59ddc3e26d..9c223aa364 100644 --- a/src/test/scala/org/ergoplatform/nodeView/wallet/ErgoWalletSpec.scala +++ b/src/test/scala/org/ergoplatform/nodeView/wallet/ErgoWalletSpec.scala @@ -242,7 +242,7 @@ class ErgoWalletSpec extends ErgoPropertyTest with WalletTestOps with Eventually property("whitelist set, preserve tokens from auto-burn") { val inputs = { val x = IndexedSeq(new Input(genesisEmissionBox.id, emptyProverResult)) - Seq(encodedTokenId(Digest32 @@ x.head.boxId)) + Seq(encodedTokenId(Digest32 @@@ x.head.boxId)) } implicit val ww: WalletFixture = new WalletFixture(settings diff --git a/src/test/scala/org/ergoplatform/nodeView/wallet/persistence/OffChainRegistrySpec.scala b/src/test/scala/org/ergoplatform/nodeView/wallet/persistence/OffChainRegistrySpec.scala index def88210a8..208dd74b87 100644 --- a/src/test/scala/org/ergoplatform/nodeView/wallet/persistence/OffChainRegistrySpec.scala +++ b/src/test/scala/org/ergoplatform/nodeView/wallet/persistence/OffChainRegistrySpec.scala @@ -35,7 +35,7 @@ class OffChainRegistrySpec registry.digest.walletAssetBalances.toMap shouldEqual assetsBalance.toMap //spend all the outputs - registry = registry.updateOnTransaction(Seq.empty, boxes.map(EncodedBoxId @@ _.boxId), Seq.empty) + registry = registry.updateOnTransaction(Seq.empty, boxes.map(EncodedBoxId @@@ _.boxId), Seq.empty) registry.digest.walletBalance shouldEqual 0 registry.digest.walletAssetBalances shouldEqual Seq.empty @@ -54,12 +54,12 @@ class OffChainRegistrySpec registry.digest.walletBalance shouldEqual fbalance registry.digest.walletAssetBalances.toMap shouldEqual fassetsBalance.toMap - registry = registry.updateOnTransaction(Seq.empty, filtered.map(EncodedBoxId @@ _.boxId), Seq(scan)) + registry = registry.updateOnTransaction(Seq.empty, filtered.map(EncodedBoxId @@@ _.boxId), Seq(scan)) registry.digest.walletBalance shouldEqual fbalance registry.digest.walletAssetBalances.toMap shouldEqual fassetsBalance.toMap val scan2 = Scan(scanId, "_", p, ScanWalletInteraction.Off, removeOffchain = true) - registry = registry.updateOnTransaction(Seq.empty, filtered.map(EncodedBoxId @@ _.boxId), Seq(scan2)) + registry = registry.updateOnTransaction(Seq.empty, filtered.map(EncodedBoxId @@@ _.boxId), Seq(scan2)) registry.digest.walletBalance shouldEqual 0 registry.digest.walletAssetBalances shouldEqual Seq.empty } @@ -72,7 +72,7 @@ class OffChainRegistrySpec val height = Random.nextInt(500) + 1 //apply block to empty registry - val registry = OffChainRegistry.empty.updateOnBlock(height, boxes, boxes.map(EncodedBoxId @@ _.boxId)) + val registry = OffChainRegistry.empty.updateOnBlock(height, boxes, boxes.map(EncodedBoxId @@@ _.boxId)) val balance = balanceAmount(boxes.map(_.box)) val assetsBalance = assetAmount(boxes.map(_.box)) registry.height shouldEqual height diff --git a/src/test/scala/org/ergoplatform/utils/ErgoTestConstants.scala b/src/test/scala/org/ergoplatform/utils/ErgoTestConstants.scala index 7dabb08224..707035bf79 100644 --- a/src/test/scala/org/ergoplatform/utils/ErgoTestConstants.scala +++ b/src/test/scala/org/ergoplatform/utils/ErgoTestConstants.scala @@ -75,7 +75,7 @@ trait ErgoTestConstants extends ScorexLogging { val defaultMinerSecret: DLogProverInput = defaultProver.hdKeys.head.privateInput val defaultMinerSecretNumber: BigInt = defaultProver.hdKeys.head.privateInput.w val defaultMinerPk: ProveDlog = defaultMinerSecret.publicImage - val defaultMinerPkPoint: EcPointType = defaultMinerPk.h + val defaultMinerPkPoint: EcPointType = defaultMinerPk.value val defaultTimestamp: Long = 1552217190000L val defaultNBits: Long = settings.chainSettings.initialNBits diff --git a/src/test/scala/org/ergoplatform/utils/WalletTestOps.scala b/src/test/scala/org/ergoplatform/utils/WalletTestOps.scala index 2ad09180ad..ac6df7067d 100644 --- a/src/test/scala/org/ergoplatform/utils/WalletTestOps.scala +++ b/src/test/scala/org/ergoplatform/utils/WalletTestOps.scala @@ -78,7 +78,7 @@ trait WalletTestOps extends NodeViewBaseOps { def makeGenesisTxWithAsset(publicKey: ProveDlog, issueAsset: Boolean): ErgoTransaction = { val inputs = IndexedSeq(new Input(genesisEmissionBox.id, emptyProverResult)) val assets: Seq[(TokenId, Long)] = if (issueAsset) { - Seq((Digest32 @@ inputs.head.boxId) -> 1L) + Seq((Digest32 @@@ inputs.head.boxId) -> 1L) } else { Seq.empty } @@ -128,7 +128,7 @@ trait WalletTestOps extends NodeViewBaseOps { def isNewAsset(tokenId: TokenId, value: Long): Boolean = java.util.Arrays.equals(tokenId, newAssetIdStub) val (newAsset, spentAssets) = assets.partition((isNewAsset _).tupled) - newAsset.map(Digest32 @@ inputs.head.boxId -> _._2) ++ spentAssets + newAsset.map(Digest32 @@@ inputs.head.boxId -> _._2) ++ spentAssets } def randomNewAsset: Seq[(TokenId, Long)] = Seq(newAssetIdStub -> randomLong()) From 8cbf41d6f138f397f8c9bc84a377d3cd1261c276 Mon Sep 17 00:00:00 2001 From: Alexander Slesarenko <avslesarenko@gmail.com> Date: Tue, 18 Apr 2023 14:31:25 +0200 Subject: [PATCH 2/7] sigma-v5.0.7: update sigma dep to SNAPSHOT --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index e5e214ec56..9bfb8b46a7 100644 --- a/build.sbt +++ b/build.sbt @@ -37,7 +37,7 @@ val circeVersion = "0.13.0" val akkaVersion = "2.6.10" val akkaHttpVersion = "10.2.4" -val sigmaStateVersion = "5.0.6-64-e991c928-SNAPSHOT" +val sigmaStateVersion = "5.0.6-65-e42f8ae4-SNAPSHOT" // for testing current sigmastate build (see sigmastate-ergo-it jenkins job) val effectiveSigmaStateVersion = Option(System.getenv().get("SIGMASTATE_VERSION")).getOrElse(sigmaStateVersion) From 298cb1c505df2bd93cfed5449347d6c8606ed99d Mon Sep 17 00:00:00 2001 From: Alexander Slesarenko <avslesarenko@gmail.com> Date: Tue, 18 Apr 2023 15:30:43 +0200 Subject: [PATCH 3/7] sigma-v5.0.7: fixes after merge --- .../authds/avltree/batch/ProverNodeSerializer.scala | 2 +- .../authds/avltree/batch/VersionedLDBAVLStorage.scala | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/ProverNodeSerializer.scala b/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/ProverNodeSerializer.scala index 7a89b50ffa..a2bffc75ca 100644 --- a/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/ProverNodeSerializer.scala +++ b/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/ProverNodeSerializer.scala @@ -54,7 +54,7 @@ class ProverNodeSerializer(store: LDBVersionedStore) extends ErgoSerializer[Prov if (store != null) { new ProxyInternalProverNode(key, leftKey, rightKey, balance)(store) } else { - new ProxyInternalNode[DigestType](key, Digest32 @@ leftKey, Digest32 @@ rightKey, balance)(hashFn) + new ProxyInternalNode[DigestType](key, Digest32 @@@ leftKey, Digest32 @@@ rightKey, balance)(hashFn) } case LeafPrefix => val key = ADKey @@ r.getBytes(StateTreeParameters.keySize) diff --git a/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorage.scala b/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorage.scala index 3e3205cff7..76c7fef556 100644 --- a/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorage.scala +++ b/avldb/src/main/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorage.scala @@ -106,8 +106,8 @@ class VersionedLDBAVLStorage(store: LDBVersionedStore) val node = VersionedLDBAVLStorage.noStoreSerializer.parseBytes(nodeBytes) node match { case in: ProxyInternalNode[DigestType] => - subtreeLoop(Digest32 @@ in.leftLabel, builder) - subtreeLoop(Digest32 @@ in.rightLabel, builder) + subtreeLoop(Digest32 @@@ in.leftLabel, builder) + subtreeLoop(Digest32 @@@ in.rightLabel, builder) case _ => } } @@ -125,8 +125,8 @@ class VersionedLDBAVLStorage(store: LDBVersionedStore) val node = VersionedLDBAVLStorage.noStoreSerializer.parseBytes(nodeBytes) node match { case in: ProxyInternalNode[DigestType] if level == manifestDepth => - dumpSubtree(Digest32 @@ in.leftLabel) - dumpSubtree(Digest32 @@ in.rightLabel) + dumpSubtree(Digest32 @@@ in.leftLabel) + dumpSubtree(Digest32 @@@ in.rightLabel) case in: ProxyInternalNode[DigestType] => manifestLoop(in.leftLabel, level + 1, manifestBuilder) manifestLoop(in.rightLabel, level + 1, manifestBuilder) From 1e381888964122b939cde1c8b25968360de18e25 Mon Sep 17 00:00:00 2001 From: Alexander Slesarenko <avslesarenko@gmail.com> Date: Sat, 22 Apr 2023 11:19:31 +0200 Subject: [PATCH 4/7] sigma-v5.0.7: update sigma to v5.0.7 --- .../src/main/scala/scorex/crypto/authds/benchmarks/Helper.scala | 2 +- .../authds/avltree/batch/LDBVersionedStoreSpecification.scala | 2 +- .../avltree/batch/VersionedLDBAVLStorageSpecification.scala | 2 +- .../batch/VersionedLDBAVLStorageStatefulSpecification.scala | 2 +- .../avltree/batch/benchmark/LDBVersionedStoreBenchmark.scala | 2 +- .../scorex/crypto/authds/avltree/batch/benchmark/OOMTest.scala | 2 +- build.sbt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/avldb/benchmarks/src/main/scala/scorex/crypto/authds/benchmarks/Helper.scala b/avldb/benchmarks/src/main/scala/scorex/crypto/authds/benchmarks/Helper.scala index 51ddf00701..ab87dc73a9 100644 --- a/avldb/benchmarks/src/main/scala/scorex/crypto/authds/benchmarks/Helper.scala +++ b/avldb/benchmarks/src/main/scala/scorex/crypto/authds/benchmarks/Helper.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.benchmarks -import scorex.utils.Longs +import com.google.common.primitives.Longs import scorex.crypto.authds.avltree.batch._ import scorex.crypto.authds.{ADKey, ADValue} import scorex.crypto.hash.{Blake2b256, Digest32} diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/LDBVersionedStoreSpecification.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/LDBVersionedStoreSpecification.scala index 9eb88a4630..f3236cfff3 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/LDBVersionedStoreSpecification.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/LDBVersionedStoreSpecification.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.avltree.batch -import scorex.utils.Longs +import com.google.common.primitives.Longs import org.scalatest.matchers.should.Matchers import org.scalatest.propspec.AnyPropSpec import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala index 082c8994af..9d35b24dc8 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.avltree.batch -import scorex.utils.Longs +import com.google.common.primitives.Longs import org.scalacheck.{Arbitrary, Gen} import org.scalatest.Assertion import org.scalatest.matchers.should.Matchers diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageStatefulSpecification.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageStatefulSpecification.scala index 81d0e64263..a7b6288edd 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageStatefulSpecification.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageStatefulSpecification.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.avltree.batch -import scorex.utils.Longs +import com.google.common.primitives.Longs import org.scalacheck.Test.Parameters import org.scalacheck.commands.Commands import org.scalacheck.{Prop, Gen} diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/LDBVersionedStoreBenchmark.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/LDBVersionedStoreBenchmark.scala index 7e791d9b70..62c16fcc10 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/LDBVersionedStoreBenchmark.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/LDBVersionedStoreBenchmark.scala @@ -1,6 +1,6 @@ package scorex.crypto.authds.avltree.batch.benchmark -import scorex.utils.Longs +import com.google.common.primitives.Longs import scorex.crypto.authds.avltree.batch.helpers.FileHelper import scorex.utils.Random import scorex.db.LDBVersionedStore diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/OOMTest.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/OOMTest.scala index 2d8aa5cd15..03b34284e2 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/OOMTest.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/benchmark/OOMTest.scala @@ -3,7 +3,7 @@ package scorex.crypto.authds.avltree.batch.benchmark import java.io.File import java.nio.file.Files -import scorex.utils.{Longs, Shorts} +import com.google.common.primitives.{Longs, Shorts} import scorex.crypto.authds.{ADDigest, ADKey, ADValue} import scorex.crypto.authds.avltree.batch._ import scorex.util.encode.Base16 diff --git a/build.sbt b/build.sbt index 9bfb8b46a7..70fd1c86a1 100644 --- a/build.sbt +++ b/build.sbt @@ -37,7 +37,7 @@ val circeVersion = "0.13.0" val akkaVersion = "2.6.10" val akkaHttpVersion = "10.2.4" -val sigmaStateVersion = "5.0.6-65-e42f8ae4-SNAPSHOT" +val sigmaStateVersion = "5.0.7" // for testing current sigmastate build (see sigmastate-ergo-it jenkins job) val effectiveSigmaStateVersion = Option(System.getenv().get("SIGMASTATE_VERSION")).getOrElse(sigmaStateVersion) From 88e58c6981bbabea03331df0a991aa631dfdcdae Mon Sep 17 00:00:00 2001 From: Alexander Slesarenko <avslesarenko@gmail.com> Date: Sat, 22 Apr 2023 11:42:56 +0200 Subject: [PATCH 5/7] sigma-v5.0.7: avoid usage of scorex.utils.Longs --- .../avltree/batch/VersionedLDBAVLStorageSpecification.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala index 9d35b24dc8..443d42fd26 100644 --- a/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala +++ b/avldb/src/test/scala/scorex/crypto/authds/avltree/batch/VersionedLDBAVLStorageSpecification.scala @@ -193,7 +193,7 @@ class VersionedLDBAVLStorageSpecification extends AnyPropSpec val rollbackVersionsTest: (PERSISTENT_PROVER, STORAGE) => Assertion = { (prover: PERSISTENT_PROVER, storage: STORAGE) => (0L until 50L).foreach { long => val insert = Insert(ADKey @@ RandomBytes.randomBytes(32), - ADValue @@ scorex.utils.Longs.toByteArray(long)) + ADValue @@ Longs.toByteArray(long)) prover.performOneOperation(insert) prover.generateProofAndUpdateStorage() prover.digest From 19c3fe889b1f920d5337f3322b5a18a0ed329895 Mon Sep 17 00:00:00 2001 From: Alexander Slesarenko <avslesarenko@gmail.com> Date: Mon, 24 Apr 2023 12:55:01 +0200 Subject: [PATCH 6/7] sigma-v5.0.7: fix after merge --- .../nodeView/history/extra/ExtraIndexerSpecification.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/scala/org/ergoplatform/nodeView/history/extra/ExtraIndexerSpecification.scala b/src/test/scala/org/ergoplatform/nodeView/history/extra/ExtraIndexerSpecification.scala index b81a6b14f9..d836c47696 100644 --- a/src/test/scala/org/ergoplatform/nodeView/history/extra/ExtraIndexerSpecification.scala +++ b/src/test/scala/org/ergoplatform/nodeView/history/extra/ExtraIndexerSpecification.scala @@ -298,7 +298,7 @@ object ChainGenerator extends ErgoTestHelpers { val tokens: ArrayBuffer[(TokenId, Long)] = ArrayBuffer.empty[(TokenId, Long)] inOpt match { case Some(input) if cond => - tokens += Tuple2(Digest32 @@ input.id, math.abs(Random.nextInt())) + tokens += Tuple2(Digest32 @@@ input.id, math.abs(Random.nextInt())) case Some(tokenBox) if !cond => tokenBox.additionalTokens.toArray.foreach(tokens += _) case _ => From a36132a2ab392c59da0888564e052d81a23e2317 Mon Sep 17 00:00:00 2001 From: Alexander Slesarenko <avslesarenko@gmail.com> Date: Mon, 24 Apr 2023 13:00:34 +0200 Subject: [PATCH 7/7] sigma-v5.0.7: addressed review comments --- .../ergoplatform/wallet/secrets/ExtendedPublicKey.scala | 8 ++++---- .../ergoplatform/wallet/secrets/ExtendedSecretKey.scala | 7 +++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedPublicKey.scala b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedPublicKey.scala index 56b15b3f50..4fe572243c 100644 --- a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedPublicKey.scala +++ b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedPublicKey.scala @@ -1,7 +1,5 @@ package org.ergoplatform.wallet.secrets -import org.bouncycastle.math.ec.ECPoint - import java.util import org.bouncycastle.util.BigIntegers import org.ergoplatform.wallet.Constants @@ -65,8 +63,10 @@ object ExtendedPublicKey { deriveChildPublicKey(parentKey, idx + 1) } else { new ExtendedPublicKey( - CryptoFacade.encodePoint(childKey, true), - childChainCode, parentKey.path.extended(idx)) + keyBytes = CryptoFacade.encodePoint(childKey, compressed = true), + chainCode = childChainCode, + path = parentKey.path.extended(idx) + ) } } diff --git a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedSecretKey.scala b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedSecretKey.scala index c860f979d8..1ac40239f4 100644 --- a/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedSecretKey.scala +++ b/ergo-wallet/src/main/scala/org/ergoplatform/wallet/secrets/ExtendedSecretKey.scala @@ -1,7 +1,5 @@ package org.ergoplatform.wallet.secrets -import org.bouncycastle.math.ec.ECPoint - import java.math.BigInteger import java.util import org.bouncycastle.util.BigIntegers @@ -35,8 +33,9 @@ final class ExtendedSecretKey(private[secrets] val keyBytes: Array[Byte], /** Returns extended public key corresponding to this secret key. */ def publicKey: ExtendedPublicKey = new ExtendedPublicKey( - CryptoFacade.encodePoint(privateInput.publicImage.value, compressed = true), - chainCode, path.toPublicBranch) + keyBytes = CryptoFacade.encodePoint(privateInput.publicImage.value, compressed = true), + chainCode = chainCode, + path = path.toPublicBranch) def isErased: Boolean = keyBytes.forall(_ == 0x00)