Skip to content

Commit a078ca3

Browse files
committed
added BLS smoke tests
# Conflicts: # node-it/src/test/scala/com/wavesplatform/it/sync/finalization/TwoNodesFinalizationTestSuite.scala # node/src/main/scala/com/wavesplatform/api/http/package.scala # node/tests/src/test/scala/com/wavesplatform/state/RollbackSpec.scala # node/tests/src/test/scala/com/wavesplatform/transaction/smart/VerifierSpecification.scala
1 parent 693484d commit a078ca3

File tree

199 files changed

+2933
-3900
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

199 files changed

+2933
-3900
lines changed

.github/workflows/on-push-default-branch.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,29 @@ jobs:
1010
name: Update Dependency Graph
1111
runs-on: ubuntu-latest
1212
steps:
13-
- uses: actions/checkout@v4
14-
- uses: actions/setup-java@v4
13+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
14+
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
1515
with:
1616
distribution: 'temurin'
1717
java-version: '17'
1818
cache: 'sbt'
19-
- uses: sbt/setup-sbt@v1
20-
- uses: scalacenter/sbt-dependency-submission@v3
19+
- uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
20+
- uses: scalacenter/sbt-dependency-submission@f43202114d7522a4b233e052f82c2eea8d658134 # v3.2.1
2121
with:
2222
configs-ignore: test compile-internal provided
2323
publish-snapshot:
2424
name: Publish Snapshots to Sonatype
2525
runs-on: ubuntu-latest
2626
steps:
27-
- uses: actions/checkout@v4
28-
- uses: actions/setup-java@v4
27+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
28+
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
2929
with:
3030
distribution: 'temurin'
3131
java-version: '17'
3232
cache: 'sbt'
3333
gpg-private-key: ${{ secrets.OSSRH_GPG_KEY }}
3434
gpg-passphrase: ${{ secrets.OSSRH_GPG_PASSPHRASE }}
35-
- uses: sbt/setup-sbt@v1
35+
- uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
3636
- name: Publish snapshots
3737
env:
3838
SONATYPE_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}

.github/workflows/on-release-published.yml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,21 @@ jobs:
2828
needs: publish-node-image
2929
runs-on: ubuntu-latest
3030
steps:
31-
- uses: actions/checkout@v4
32-
- uses: docker/setup-buildx-action@v3
33-
- uses: docker/login-action@v3
31+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
32+
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
33+
- uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
3434
with:
3535
username: ${{ secrets.DOCKERHUB_USER }}
3636
password: ${{ secrets.DOCKERHUB_PASSWORD }}
3737
- id: meta-private
38-
uses: docker/metadata-action@v5
38+
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
3939
with:
4040
images: wavesplatform/waves-private-node
4141
flavor: latest=false
4242
tags: |
4343
type=ref,event=tag
4444
type=raw,value=latest,enable=${{ github.event.release.prerelease == false }}
45-
- uses: docker/build-push-action@v5
45+
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
4646
with:
4747
platforms: linux/amd64,linux/arm64
4848
context: ./docker/private
@@ -57,28 +57,28 @@ jobs:
5757
environment: Docker Hub
5858
runs-on: ubuntu-latest
5959
steps:
60-
- uses: actions/checkout@v4
61-
- uses: actions/setup-java@v4
60+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
61+
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
6262
with:
6363
distribution: 'temurin'
6464
java-version: '17'
6565
cache: 'sbt'
66-
- uses: sbt/setup-sbt@v1
66+
- uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
6767
- run: sbt --batch 'buildRIDERunnerForDocker'
68-
- uses: docker/setup-buildx-action@v3
69-
- uses: docker/login-action@v3
68+
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
69+
- uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
7070
with:
7171
username: ${{ secrets.DOCKERHUB_USER }}
7272
password: ${{ secrets.DOCKERHUB_PASSWORD }}
7373
- id: meta-ride-runner
74-
uses: docker/metadata-action@v5
74+
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
7575
with:
7676
images: wavesplatform/ride-runner
7777
flavor: latest=false
7878
tags: |
7979
type=match,pattern=v(.*),group=1
8080
type=raw,value=latest,enable=${{ github.event.release.prerelease == false }}
81-
- uses: docker/build-push-action@v5
81+
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
8282
with:
8383
context: ./ride-runner/docker
8484
push: ${{ github.event_name == 'release' }}
@@ -91,7 +91,7 @@ jobs:
9191
runs-on: ubuntu-latest
9292
if: github.event_name == 'release'
9393
steps:
94-
- uses: actions/checkout@v4
94+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
9595
- id: sbt-version
9696
run: |
9797
sbt_version=$(cut -d\" -f2 version.sbt)
@@ -103,14 +103,14 @@ jobs:
103103
run: |
104104
echo "::error::Release version $RELEASE_VERSION does not match SBT version $SBT_VERSION"
105105
exit 1
106-
- uses: actions/setup-java@v4
106+
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
107107
with:
108108
distribution: 'temurin'
109109
java-version: '17'
110110
cache: 'sbt'
111111
gpg-private-key: ${{ secrets.OSSRH_GPG_KEY }}
112112
gpg-passphrase: ${{ secrets.OSSRH_GPG_PASSPHRASE }}
113-
- uses: sbt/setup-sbt@v1
113+
- uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
114114
- name: Publish release jars
115115
env:
116116
SONATYPE_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}

.github/workflows/prepare-release-draft.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ jobs:
2020
attestations: write
2121
id-token: write
2222
steps:
23-
- uses: actions/checkout@v4
24-
- uses: actions/setup-java@v4
23+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
24+
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
2525
with:
2626
distribution: 'temurin'
2727
java-version: '17'
2828
cache: 'sbt'
29-
- uses: sbt/setup-sbt@v1
29+
- uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
3030
- run: ./.github/workflows/prepare-release-draft.sh
3131
id: prepare-release-draft
3232
env:
@@ -35,6 +35,6 @@ jobs:
3535
RELEASE_BRANCH: ${{ github.ref_name }}
3636
GITHUB_TOKEN: ${{ github.token }}
3737
GITHUB_REPO: ${{ github.repository }}
38-
- uses: actions/attest-build-provenance@v2
38+
- uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
3939
with:
4040
subject-path: ${{ steps.prepare-release-draft.outputs.subject-path }}

.github/workflows/publish-aptly-repo.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
echo "aptly_cachekey=aptly-$APTLY_VERSION" >> "$GITHUB_OUTPUT"
3131
- name: Cache aptly
3232
id: cache-aptly
33-
uses: actions/cache@v4
33+
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
3434
with:
3535
path: ${{ steps.cache-aptly-path.outputs.aptly_toolpath }}
3636
key: ${{ steps.cache-aptly-path.outputs.aptly_cachekey }}
@@ -50,14 +50,14 @@ jobs:
5050
cd "$APTLY_TOOLPATH"
5151
ls -la aptly_${APTLY_VERSION}_linux_amd64/aptly
5252
echo "$PWD/aptly_${APTLY_VERSION}_linux_amd64" >> "$GITHUB_PATH"
53-
- uses: actions/checkout@v4
53+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
5454
- run: ./.github/workflows/create-aptly-repo.sh
5555
env:
5656
GITHUB_TOKEN: ${{ github.token }}
5757
GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
5858
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
5959
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
60-
- uses: actions/upload-pages-artifact@v3
60+
- uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
6161
with:
6262
path: /home/runner/.aptly/public
63-
- uses: actions/deploy-pages@v4
63+
- uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0

.github/workflows/publish-docker-image.yml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
digest: ${{ steps.push.outputs.digest }}
4949
node-version: ${{ steps.versions.outputs.node-version }}
5050
steps:
51-
- uses: actions/checkout@v4
51+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
5252
with:
5353
ref: ${{ inputs.ref }}
5454
- uses: regclient/actions/regctl-installer@4d6888fcc4842c9630f60ebc91715a45dd9bd7a3
@@ -64,12 +64,12 @@ jobs:
6464
echo "base-image-digest=$(regctl manifest digest $BASE_IMAGE)" >> "$GITHUB_OUTPUT"
6565
echo "node-version=$(echo ${{ steps.ghd.outputs.describe }} | cut -c 2-)" >> "$GITHUB_OUTPUT"
6666
id: versions
67-
- uses: actions/setup-java@v4
67+
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
6868
with:
6969
distribution: 'temurin'
7070
java-version: '17'
7171
cache: 'sbt'
72-
- uses: sbt/setup-sbt@v1
72+
- uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
7373
- name: Build tarballs for docker
7474
run: sbt --batch -Dproject.version=${{ steps.versions.outputs.node-version }} buildTarballsForDocker
7575
- name: Extract image name and tags from workflow_call inputs
@@ -107,18 +107,18 @@ jobs:
107107
echo EOF
108108
} >> "$GITHUB_OUTPUT"
109109
id: annotations
110-
- uses: docker/login-action@v3
110+
- uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
111111
with:
112112
registry: ghcr.io
113113
username: ${{ github.actor }}
114114
password: ${{ secrets.GITHUB_TOKEN }}
115-
- uses: docker/login-action@v3
115+
- uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
116116
if: inputs.environment != ''
117117
with:
118118
username: ${{ secrets.DOCKERHUB_USER }}
119119
password: ${{ secrets.DOCKERHUB_PASSWORD }}
120-
- uses: docker/setup-buildx-action@v3
121-
- uses: docker/metadata-action@v5
120+
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
121+
- uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
122122
id: meta
123123
env:
124124
DOCKER_METADATA_ANNOTATIONS_LEVELS: index,manifest-descriptor,index-descriptor
@@ -127,7 +127,7 @@ jobs:
127127
flavor: latest=${{ contains(inputs.docker-tags, 'latest') }}
128128
tags: ${{ env.TAGS }}
129129
annotations: ${{ steps.annotations.outputs.annotations }}
130-
- uses: docker/build-push-action@v6
130+
- uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
131131
id: push
132132
with:
133133
context: ./docker
@@ -159,8 +159,8 @@ jobs:
159159
id-token: write
160160
if: ${{ inputs.publish-private-node }}
161161
steps:
162-
- uses: actions/checkout@v4
163-
- uses: docker/setup-buildx-action@v3
162+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
163+
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
164164
- run: |
165165
{
166166
echo 'description<<EOF'
@@ -174,13 +174,13 @@ jobs:
174174
echo ${{ inputs.docker-tags }} | tr ',' '\n' | sed -e 's/^/type=raw,value=/'
175175
echo EOF
176176
} >> "$GITHUB_ENV"
177-
- uses: docker/login-action@v3
177+
- uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
178178
with:
179179
registry: ghcr.io
180180
username: ${{ github.actor }}
181181
password: ${{ secrets.GITHUB_TOKEN }}
182182
- id: meta-private
183-
uses: docker/metadata-action@v5
183+
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
184184
env:
185185
DOCKER_METADATA_ANNOTATIONS_LEVELS: index,manifest-descriptor,index-descriptor
186186
with:
@@ -193,7 +193,7 @@ jobs:
193193
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
194194
org.opencontainers.image.version=${{ needs.publish.outputs.node-version }}
195195
org.opencontainers.image.base.digest=${{ needs.publish.outputs.digest }}
196-
- uses: docker/build-push-action@v5
196+
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
197197
with:
198198
platforms: linux/amd64,linux/arm64
199199
context: ./docker/private

.github/workflows/publish-to-npmjs.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,17 @@ jobs:
2828
attestations: write
2929
id-token: write
3030
steps:
31-
- uses: actions/checkout@v4
31+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
3232
- uses: proudust/gh-describe@70f72d4f6304ea053cf5a3d71c36211d5acc0c73
3333
id: ghd
34-
- uses: actions/setup-java@v4
34+
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
3535
with:
3636
distribution: 'temurin'
3737
java-version: '17'
3838
cache: 'sbt'
39-
- uses: sbt/setup-sbt@v1
39+
- uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
4040
- run: sbt -Dproject.version=${{ steps.ghd.outputs.describe }} --batch ';lang-tests/test;lang-tests-js/test;repl/test;langJS/fullOptJS;replJS/fullOptJS'
41-
- uses: actions/setup-node@v4
41+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
4242
with:
4343
registry-url: 'https://registry.npmjs.org'
4444
node-version: '>=24.7.0' # Trusted publishing requires npm CLI version 11.5.1 or later.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.wavesplatform.common
2+
3+
import com.wavesplatform.account.PrivateKey
4+
import com.wavesplatform.crypto.bls.{BlsKeyPair, BlsPublicKey, BlsSignature}
5+
import org.openjdk.jmh.annotations.*
6+
import org.openjdk.jmh.infra.Blackhole
7+
import com.wavesplatform.common.utils.EitherExt2.explicitGet
8+
9+
import java.util.concurrent.TimeUnit
10+
import scala.compiletime.uninitialized
11+
12+
@OutputTimeUnit(TimeUnit.MICROSECONDS)
13+
@BenchmarkMode(Array(Mode.AverageTime))
14+
@Threads(1)
15+
@Fork(1)
16+
@Warmup(iterations = 30, time = 1)
17+
@Measurement(iterations = 30, time = 1)
18+
class BLSBenchmark {
19+
@Benchmark
20+
def verifyAgg(st: EndorsementSt, bh: Blackhole) = bh.consume(st.aggregatedSignature.verifyAgg(st.message, st.publicKeys).explicitGet())
21+
}
22+
23+
@State(Scope.Benchmark)
24+
class EndorsementSt {
25+
@Param(Array("32", "64", "128"))
26+
var generatorCount = 0
27+
var publicKeys = Seq.empty[BlsPublicKey]
28+
var aggregatedSignature: BlsSignature = uninitialized
29+
val message: Array[Byte] = {
30+
val bs = new Array[Byte](64)
31+
bs
32+
}
33+
34+
@Setup
35+
def setup(): Unit = {
36+
val privateKeys = Seq.tabulate(generatorCount) { i =>
37+
val bs = new Array[Byte](32)
38+
bs(0) = i.toByte
39+
BlsKeyPair(PrivateKey(bs))
40+
}
41+
42+
publicKeys = privateKeys.map(_.publicKey)
43+
aggregatedSignature = BlsSignature.agg(privateKeys.map(sk => sk.sign(message))).explicitGet()
44+
}
45+
}

benchmark/src/test/scala/com/wavesplatform/state/StateSyntheticBenchmark.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.wavesplatform.lang.v1.parser.Parser
1313
import com.wavesplatform.settings.FunctionalitySettings
1414
import com.wavesplatform.state.StateSyntheticBenchmark.*
1515
import com.wavesplatform.transaction.Asset.Waves
16-
import com.wavesplatform.transaction.Transaction
16+
import com.wavesplatform.transaction.{Proofs, Transaction}
1717
import com.wavesplatform.transaction.smart.SetScriptTransaction
1818
import com.wavesplatform.transaction.transfer.*
1919
import org.openjdk.jmh.annotations.*
@@ -43,7 +43,7 @@ object StateSyntheticBenchmark {
4343
for {
4444
amount <- Gen.choose(1L, waves(1))
4545
recipient <- accountGen
46-
} yield TransferTransaction.selfSigned(1.toByte, sender, recipient.toAddress, Waves, amount, Waves, 100000, ByteStr.empty, ts).explicitGet()
46+
} yield TransferTransaction.create(1.toByte, sender.publicKey, recipient.toAddress, Waves, amount, Waves, 100000, ByteStr.empty, ts, Proofs.empty).map(_.signWith(sender.privateKey)).explicitGet()
4747
}
4848

4949
@State(Scope.Benchmark)
@@ -58,7 +58,8 @@ object StateSyntheticBenchmark {
5858
recipient: KeyPair <- accountGen
5959
amount <- Gen.choose(1L, waves(1))
6060
} yield TransferTransaction
61-
.selfSigned(2.toByte, sender, recipient.toAddress, Waves, amount, Waves, 1000000, ByteStr.empty, ts)
61+
.create(2.toByte, sender.publicKey, recipient.toAddress, Waves, amount, Waves, 1000000, ByteStr.empty, ts, Proofs.empty)
62+
.map(_.signWith(sender.privateKey))
6263
.explicitGet()
6364

6465
@Setup
@@ -72,7 +73,8 @@ object StateSyntheticBenchmark {
7273
val setScriptBlock = nextBlock(
7374
Seq(
7475
SetScriptTransaction
75-
.selfSigned(1.toByte, richAccount, Some(ExprScript(typedScript).explicitGet()), 1000000, System.currentTimeMillis())
76+
.create(1.toByte, richAccount.publicKey, Some(ExprScript(typedScript).explicitGet()), 1000000, System.currentTimeMillis(), Proofs.empty)
77+
.map(_.signWith(richAccount.privateKey))
7678
.explicitGet()
7779
)
7880
)

0 commit comments

Comments
 (0)