Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Candidate v5.0.14 #943

Merged
merged 198 commits into from
Apr 4, 2024
Merged
Show file tree
Hide file tree
Changes from 180 commits
Commits
Show all changes
198 commits
Select commit Hold shift + click to select a range
8d1ea8f
sigma-ast: SType moved to sigma.ast package of core module
aslesarenko Aug 27, 2023
55e4a8e
sigma-ast: tests pass in core, interpreter, parsers, sdk
aslesarenko Aug 27, 2023
f8fafbc
sigma-ast: all code compiles
aslesarenko Aug 27, 2023
d479754
sigma-ast: all tests passed
aslesarenko Aug 27, 2023
6d2bb9d
sigma-ast: fix Scala 2.11 compilation
aslesarenko Aug 27, 2023
d0bff03
sigma-ast: fix ReflectionData
aslesarenko Aug 27, 2023
e629124
sigma-ast: TypeSerializer code moved to CoreTypeSerializer
aslesarenko Sep 8, 2023
142fcc8
sigma-ast: TypeSerializer code moved to CoreTypeSerializer (fix compi…
aslesarenko Sep 9, 2023
01190bb
sigma-ast: AvlTreeData moved to core
aslesarenko Sep 10, 2023
f5d01ff
sigma-ast: everything compiles
aslesarenko Sep 10, 2023
69d4f7a
sigma-ast: fix Reflection initialization
aslesarenko Sep 10, 2023
a5c27b3
Merge remote-tracking branch 'origin/minimize-modules' into sigma-ast
aslesarenko Sep 10, 2023
c7fd85d
sigma-ast: fix after merge
aslesarenko Sep 10, 2023
e162665
sigma-ast: CryptoContext moved to core
aslesarenko Sep 10, 2023
a22282d
sigma-ast: GroupElementSerializer moved to core
aslesarenko Sep 10, 2023
02f6ad2
Merge remote-tracking branch 'origin/sigma-ast' into core-serializers
aslesarenko Sep 10, 2023
0e45513
sigma-ast: fix after merge
aslesarenko Sep 10, 2023
1a86c84
sigma-ast: fix Reflection for SigmaCompiler
aslesarenko Sep 10, 2023
fedb4f6
sigma-ast: fix Reflection for SigmaCompiler
aslesarenko Sep 10, 2023
c6585e1
Merge remote-tracking branch 'origin/sigma-ast' into core-serializers
aslesarenko Sep 11, 2023
61f2bda
core-serializers: CGroupElement moved to core
aslesarenko Sep 11, 2023
0c7e09a
core-serializers: fix compilation Scala 2.11
aslesarenko Sep 11, 2023
198e028
core-serializers: removed toBits unfinished method
aslesarenko Sep 11, 2023
5b07d30
core-serializers: removed all xxxQ methods from BigInt
aslesarenko Sep 11, 2023
637ecff
core-serializers: introduced SPCodes
aslesarenko Sep 11, 2023
d12e488
core-serializers: SigmaBoolean moved to a separate file
aslesarenko Sep 11, 2023
e16540d
core-serializers: SigmaBoolean became sealed
aslesarenko Sep 11, 2023
728895b
core-serializers: SigmaBoolean moved to core
aslesarenko Sep 11, 2023
c8de983
core-serializers: CSigmaProp moved to core
aslesarenko Sep 11, 2023
44d2463
core-serializers: CSigmaProp.propBytes implemented without ErgoTree
aslesarenko Sep 12, 2023
2d00c56
core-serializers: toColl extension method moved to core
aslesarenko Sep 12, 2023
c8c5eda
Merge remote-tracking branch 'origin/v5.0.12-RC' into sigma-ast
aslesarenko Sep 12, 2023
744c381
sigma-ast: cleanups
aslesarenko Sep 12, 2023
d9b6b23
core-serializers: CAvlTree moved to core
aslesarenko Sep 13, 2023
dd91fa3
core-serializers: CoreDataSerializer introduced
aslesarenko Sep 13, 2023
c973adb
core-serializers: js.Type moved to core.js
aslesarenko Sep 13, 2023
4912a3c
Merge remote-tracking branch 'origin/sigma-ast' into core-serializers
aslesarenko Sep 13, 2023
5695687
core-serializers: fixes after merge
aslesarenko Sep 13, 2023
4fcd2a7
core-serializers: Value moved to core.js
aslesarenko Sep 13, 2023
feebe24
core-serializers2: renamed CostingBox -> CBox
aslesarenko Sep 20, 2023
d503dbe
core-serializers2: renamed CostingSigmaDslBuilder -> CSigmaDslBuilder
aslesarenko Sep 20, 2023
094beeb
core-serializers2: renamed CostingDataContext -> CContext
aslesarenko Sep 20, 2023
3f85433
core-serializers2: moved CAnyValue to core
aslesarenko Sep 20, 2023
2ddc80d
core-serializers2: moved Digest32Coll to core
aslesarenko Sep 20, 2023
42541ac
core-serializers2: ErgoTree moved out of Values object
aslesarenko Sep 20, 2023
731409f
core-serializers2: fix Scala 2.11 compilation
aslesarenko Sep 20, 2023
7f7120a
ergotree-version: introduced HeaderType
aslesarenko Sep 23, 2023
11c98a3
ergotree-version: upgrade default VersionContext
aslesarenko Sep 24, 2023
c2f27b2
ergotree-version: update DefaultHeader to latest version
aslesarenko Sep 24, 2023
ebb8f51
ergotree-version: fix test
aslesarenko Sep 24, 2023
8e64044
ergotree-version: fix tests (2)
aslesarenko Sep 24, 2023
3c25033
ergotree-version: abstract classes for BlockchainParameters and Block…
aslesarenko Sep 25, 2023
32a4652
ergotree-version: removed implicit conversions to ErgoTree
aslesarenko Sep 25, 2023
9d8b446
sigma-ast: addressed review comments
aslesarenko Oct 3, 2023
8442400
Merge pull request #913 from ScorexFoundation/sigma-ast
aslesarenko Oct 3, 2023
b43dfe1
Merge remote-tracking branch 'origin/v5.0.13-RC' into ergotree-version
aslesarenko Oct 3, 2023
484622b
ergotree-version: fixes after merge
aslesarenko Oct 3, 2023
17e5c59
ergotree-version: use ZeroHeader as DefaultHeader
aslesarenko Oct 3, 2023
9cdcbde
Merge remote-tracking branch 'origin/ergotree-version' into core-seri…
aslesarenko Oct 4, 2023
a8ba147
core-serializers: fixes after merge
aslesarenko Oct 4, 2023
9617c12
Merge remote-tracking branch 'origin/core-serializers' into core-seri…
aslesarenko Oct 4, 2023
69a9148
core-serializers2: fixes after merge
aslesarenko Oct 4, 2023
26345ad
move-js-export: js.ErgoTree moved to interpreter module
aslesarenko Oct 5, 2023
3e12acd
towards-data-module: AvlTreeVerifier into separate file
aslesarenko Oct 5, 2023
c3f4ef4
towards-data-module: cleanup code + v6.0 todos
aslesarenko Oct 5, 2023
2d767ae
towards-data-module: Value class moved to sigma.ast package (Values r…
aslesarenko Oct 5, 2023
0ded24b
towards-data-module: partially removed code related to TaggedVar
aslesarenko Oct 5, 2023
dc23717
core-serializers2: cleanup code
aslesarenko Oct 5, 2023
c9d30ce
Merge remote-tracking branch 'origin/core-serializers2' into towards-…
aslesarenko Oct 6, 2023
a79834b
towards-data-module: types.scala moved to sigma.ast package
aslesarenko Oct 6, 2023
7638ec5
towards-data-module: renaming types.scala -> methods.scala
aslesarenko Oct 6, 2023
3af15da
towards-data-module: JitCost and CostKind moved to sigma.ast package
aslesarenko Oct 6, 2023
e265ade
towards-data-module: Operations.scala moved to sigma.ast
aslesarenko Oct 6, 2023
cd36fbf
towards-data-module: SMethod moved to sigma.ast
aslesarenko Oct 6, 2023
d99cdc9
towards-data-module: trees.scala moved to sigma.ast
aslesarenko Oct 6, 2023
fb12391
towards-data-module: transformers.scala moved to sigma.ast
aslesarenko Oct 6, 2023
5e298d1
towards-data-module: serializers moved to sigma package
aslesarenko Oct 6, 2023
dc5c693
towards-data-module: more ops moved to sigma.ast package
aslesarenko Oct 6, 2023
061629c
towards-data-module: Fold.sum moved to tests
aslesarenko Oct 6, 2023
b903cd5
towards-data-module: move some crypto to sigma.crypto
aslesarenko Oct 7, 2023
19381c1
towards-data-module: Overloading.scala moved to sigma.utils
aslesarenko Oct 7, 2023
f3517ed
towards-data-module: SparseArrayContainer.scala moved to sigma.utils
aslesarenko Oct 7, 2023
9be3489
towards-data-module: ValueOps moved to sigma.ast.defs
aslesarenko Oct 7, 2023
bf2d61f
towards-data-module: Terms.scala removed and the contents moved to si…
aslesarenko Oct 7, 2023
19bca73
towards-data-module: SigmaExceptions.scala moved to sigma.exceptions
aslesarenko Oct 7, 2023
95f1749
towards-data-module: SigmaBuilder, SigmaPredef, SourceContext moved t…
aslesarenko Oct 7, 2023
935fcf5
towards-data-module: CostItem, InterpreterReflection, DataValueCompar…
aslesarenko Oct 7, 2023
5b4c0fb
towards-data-module: exceptions moved to sigma.exception
aslesarenko Oct 7, 2023
9fd2386
towards-data-module: remove dependence on Interpreter
aslesarenko Oct 7, 2023
3239444
towards-data-module: moved to sigma.data
aslesarenko Oct 8, 2023
8c9d672
towards-data-module: Exceptions.scala moved to sigma.exceptions
aslesarenko Oct 8, 2023
523051a
towards-data-module: BigInt moved to sigma.exceptions
aslesarenko Oct 8, 2023
2a77625
towards-data-module: SigmaDsl moved to sigma.eval
aslesarenko Oct 8, 2023
cd088ca
towards-data-module: some Extensions moved to sigma.eval
aslesarenko Oct 8, 2023
3027599
towards-data-module: ensureTypeCarringValue moved to sigma.eval
aslesarenko Oct 8, 2023
7c37b92
towards-data-module: rename CErgoTreeEvaluator
aslesarenko Oct 8, 2023
f758de7
towards-data-module: replace CErgoTreeEvaluator with ErgoTreeEvaluator
aslesarenko Oct 9, 2023
1331a44
towards-data-module: moved EvalSettings.scala to sigma.eval
aslesarenko Oct 9, 2023
034530c
towards-data-module: introduced Profiler
aslesarenko Oct 9, 2023
8f45459
towards-data-module: CAvlTreeVerifier
aslesarenko Oct 9, 2023
6b7201c
towards-data-module: AvlTreeVerifier abstraction
aslesarenko Oct 9, 2023
f509f2f
towards-data-module: sigmastate.Platform moved to sigma package
aslesarenko Oct 11, 2023
f4dadd4
towards-data-module: `sigma` package moved to `data` module
aslesarenko Oct 11, 2023
b0bf543
towards-data-module: js.ErgoTree moved to `data` module
aslesarenko Oct 11, 2023
0b9279e
Merge pull request #920 from ScorexFoundation/ergotree-version
aslesarenko Oct 21, 2023
3435531
Merge pull request #917 from ScorexFoundation/core-serializers2
aslesarenko Oct 21, 2023
af2cb8f
towards-data-module: moved AvlTree operations to CErgoTreeEvaluator
aslesarenko Oct 21, 2023
7b6659d
towards-data-module: added missing ScalaDocs
aslesarenko Oct 21, 2023
0ef3efa
towards-data-module: added missing ScalaDocs (2)
aslesarenko Oct 24, 2023
bd606fc
towards-data-module: added missing ScalaDocs (3)
aslesarenko Oct 24, 2023
0c2e59a
towards-data-module: def isProven extension method removed
aslesarenko Oct 28, 2023
2630ed8
towards-data-module: renamed sigmastate.lang.syntax -> sigmastate.lan…
aslesarenko Oct 28, 2023
aae4118
towards-data-module: renamed defs -> syntax
aslesarenko Oct 28, 2023
77623d2
towards-data-module: ScalaDocs for sigma.ast.syntax methods
aslesarenko Oct 28, 2023
b5c5dbb
towards-data-module: cleanup code, more ScalaDocs
aslesarenko Oct 28, 2023
90c51a0
Merge pull request #924 from ScorexFoundation/towards-data-module
aslesarenko Oct 31, 2023
8fb2f3f
Add flag isUsingBlockchainContext to ErgoTree
megatron00999 Nov 7, 2023
44844ac
Populate isUsingBlockchainContext during parsing
megatron00999 Nov 7, 2023
8436c3d
new-sigma-js: exported Address JS class
aslesarenko Nov 13, 2023
bccb03a
new-sigma-js: implemented all types of addresses
aslesarenko Nov 13, 2023
4efd5d4
new-sigma-js: typescript definitions in sigmastate-js.d.ts
aslesarenko Nov 13, 2023
b745c5f
new-sigma-js: more js tests and fixes
aslesarenko Nov 13, 2023
22f0586
Cache and use the method names
megatron00999 Nov 14, 2023
58e24d0
new-sigma-js: exported js.ContractTemplate
aslesarenko Nov 14, 2023
b26930c
new-sigma-js: js.ContractTemplate: iso with Scala class, from/to Json…
aslesarenko Nov 15, 2023
4438109
new-sigma-js: fix Scala 2.11 compilation
aslesarenko Nov 15, 2023
6d774a3
new-sigma-js: implemented js.ContractTemplate.applyTemplate method
aslesarenko Nov 15, 2023
c18c88e
new-sigma-js: README.md updated
aslesarenko Nov 15, 2023
681dc40
draft implementation skeleton code
ross-weir Nov 18, 2023
c86d75f
impl contract template doc parser
ross-weir Nov 21, 2023
698aa13
small test helper update
ross-weir Nov 21, 2023
3c77e64
expose parse method that can be used in fastparse combinator
ross-weir Nov 21, 2023
df95bee
transaction-signer: towards js.SigmaPropProver
aslesarenko Nov 21, 2023
b3df521
impl ContractSignature parser
ross-weir Nov 22, 2023
0035204
start template compiler
ross-weir Nov 22, 2023
2fe857e
pedantic rename
ross-weir Nov 22, 2023
f154eb8
transaction-signer: finised js.SigmaPropProver + tests
aslesarenko Nov 22, 2023
0aeede7
Add a handle-all in match case
megatron00999 Nov 24, 2023
9e2f4ba
rough working
ross-weir Nov 27, 2023
2becae3
new-sigma-js: exported js.SigmaPropVerifier + tests
aslesarenko Nov 28, 2023
bc8e874
new-sigma-js: exported js.Expr
aslesarenko Nov 28, 2023
1f919d9
new-sigma-js: renamed TypeObj -> Type$, ValueObj -> Value$
aslesarenko Nov 29, 2023
643e799
new-sigma-js: renamed GroupElementObj -> GroupElement$
aslesarenko Nov 29, 2023
f106deb
new-sigma-js: renamed SigmaPropObj -> SigmaProp$, ErgoTreeObj -> Ergo…
aslesarenko Nov 29, 2023
bfefcd1
new-sigma-js: renamed SigmaPropProverObj -> SigmaPropProver$
aslesarenko Nov 29, 2023
a60f999
new-sigma-js: renamed SigmaCompilerObj -> SigmaCompiler$
aslesarenko Nov 29, 2023
f9999b7
new-sigma-js: renamed ContractTemplateObj -> ContractTemplate$
aslesarenko Nov 29, 2023
288f3c2
new-sigma-js: renamed AddressObj -> Address$
aslesarenko Nov 29, 2023
355f3f0
new-sigma-js: renamed Obj -> $ for ProverHints, ProverSecret, SigmaPr…
aslesarenko Nov 29, 2023
c11c707
new-sigma-js: sigma-js/README.md updated
aslesarenko Nov 29, 2023
0bf3eb0
new-sigma-js: cleanups
aslesarenko Nov 29, 2023
82dba18
Merge remote-tracking branch 'origin/master' into v5.0.14-RC
aslesarenko Nov 29, 2023
09c4cbc
v5.0.14-RC: fixes after merge
aslesarenko Nov 29, 2023
381aaeb
Merge remote-tracking branch 'origin/v5.0.14-RC' into new-sigma-js
aslesarenko Nov 29, 2023
bc91e48
consolidate parsers into ContractParser
ross-weir Dec 1, 2023
13cf3b4
use sigma parsers where possible
ross-weir Dec 1, 2023
24a7443
add documentation to code
ross-weir Dec 1, 2023
4eb3142
revert import deletion
ross-weir Dec 1, 2023
0a2390d
Assign to _wasUsingBlockchainContext instead of wasUsingBlockchainCon…
megatron00999 Dec 9, 2023
111e8ad
address feedback
ross-weir Dec 11, 2023
84174fc
new-sigma-js: updated README.md
aslesarenko Dec 12, 2023
db72677
new-sigma-js: fixed export of Parameter
aslesarenko Dec 12, 2023
ef1fd14
Merge pull request #929 from megatron00999/isUsingBlockchainContext
aslesarenko Dec 12, 2023
33c50c2
parse contract body at once
ross-weir Dec 13, 2023
b252834
Merge remote-tracking branch 'origin/v5.0.14-RC' into new-sigma-js
aslesarenko Dec 13, 2023
4a01b4e
Merge pull request #936 from ScorexFoundation/new-sigma-js
aslesarenko Dec 13, 2023
2097bc1
Merge pull request #937 from ross-weir/impl-contract-template-compiler
aslesarenko Dec 13, 2023
46e9daf
removing unused code #1
kushti Dec 18, 2023
ca581f9
fixing tests compilation in sc
kushti Dec 18, 2023
bcdd669
more unused parameter args elimination
kushti Dec 18, 2023
4aa4552
ProgramGraph.transform and withoutContext removed
kushti Dec 18, 2023
6178e39
tranform() removed from ProgramGraph, more unused imports
kushti Dec 18, 2023
4ad22f0
v5.0.14-RC: fixes after merge
aslesarenko Dec 19, 2023
961834e
merging w. 5.0.14-RC
kushti Dec 25, 2023
6235b66
sanity check back
kushti Dec 25, 2023
112346c
Merge pull request #944 from ScorexFoundation/unused-code
aslesarenko Dec 26, 2023
0480ec4
removing unused methods from Helpers, unused imports
kushti Dec 30, 2023
20ed01d
complexity removed
kushti Jan 4, 2024
d8911d4
tests fixed
kushti Jan 4, 2024
efa68e7
Merge pull request #946 from ScorexFoundation/unused-code
aslesarenko Jan 5, 2024
105bd4e
unused mapReduce removed
kushti Jan 15, 2024
8168ea0
DoubleOps removed
kushti Jan 15, 2024
c33801a
unused imports in SigmaDslImpl.scala
kushti Jan 15, 2024
bd27625
removing unused endPass; more unused imports
kushti Jan 15, 2024
d378c3b
fixing Coll.mapReduce test
kushti Jan 15, 2024
9613050
Merge pull request #949 from ScorexFoundation/unused-code
aslesarenko Feb 19, 2024
b744225
v5.0.14-RC: added property("Pay2SHAddress.script should use VersionCo…
aslesarenko Mar 2, 2024
4531c76
v5.0.14-RC: added property("using default VersionContext")
aslesarenko Mar 3, 2024
f0396e2
p2sh-version: rollback ErgoTree version changes
aslesarenko Mar 27, 2024
ffdc732
p2sh-version: rollback changes in tests
aslesarenko Mar 27, 2024
aeff536
p2sh-version: rollback default VersionContext
aslesarenko Mar 31, 2024
155a08d
Merge pull request #953 from ScorexFoundation/p2sh-version
aslesarenko Apr 3, 2024
4771208
v5.0.14-RC: ScalaDoc for Extensions
aslesarenko Apr 4, 2024
881ef94
Merge remote-tracking branch 'origin/v5.0.14-RC' into v5.0.14-RC
aslesarenko Apr 4, 2024
fcb7229
v5.0.14-RC: rollback potentially breaking changes
aslesarenko Apr 4, 2024
5899701
v5.0.14-RC: Added ScalaDocs for CoreXXX classes
aslesarenko Apr 4, 2024
de8c362
v5.0.14-RC: CFunc removed
aslesarenko Apr 4, 2024
6196e90
v5.0.14-RC: ScalaDoc for ReflectionData is improved
aslesarenko Apr 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
27 changes: 17 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ For development of Ergo applications using JVM languages (Java/Scala/Kotlin/etc)
a better alternative is to use
[Appkit](https://github.com/ergoplatform/ergo-appkit).

The library is cross-compiled to JS using Scala.js and the main abstractions can be used
from JS directly by importing [NPM module](https://www.npmjs.com/package/sigmastate-js).
See [README](sigma-js/README.md) for details.

## Sigma Language Background

Every coin in Bitcoin is protected by a program in the stack-based Script
Expand Down Expand Up @@ -93,19 +97,21 @@ This library is
on Maven repository and can be added to the SBT configuration of Scala project.

```scala
libraryDependencies += "org.scorexfoundation" %% "sigma-state" % "5.0.6"
libraryDependencies += "org.scorexfoundation" %% "sigma-state" % "5.0.14"
```

## Repository Organization

| sub-module | description |
|-------------|-------------------------------------------------------------------------------------------|
| common | Used in all other submodules and contain basic utility classes |
| core-lib | Contains core classes such as Coll, BigInt used by interpreter |
| docs | Collection of documents |
| graph-ir | Implementation of graph-based intermediate representation of ErgoTree, which is used in by ErgoScript compiler |
| interpreter | Implementation of ErgoTree Interpreter |
| sc | Implementation of ErgoScript compiler |
| sub-module | description |
|-------------|------------------------------------------------------------------------------------|
| core | contains core classes of Sigma library |
| data | contains classes for working with ErgoTree, addresses and all related serializers |
| docs | Collection of documents |
| interpreter | contains an implementation of ErgoTree Interpreter |
| sdk | contains and implementation of transaction reduction and signing |
| parsers | contains an implementation of ErgoScript parsers using FastParse library |
| sc | contains an implementation of ErgoScript compiler |
| sigma-js | root directory of sigmastate-js JS module (see [package.json](sigma-js/README.md)) |

## Contributing

Expand Down Expand Up @@ -151,12 +157,13 @@ innovative and intelligent tools for profiling Java and .NET applications.

- [Ergo Site](https://ergoplatform.org/en/)
- [Ergo Sources](https://github.com/ergoplatform/ergo)
- [Sigma-js](https://www.npmjs.com/package/sigmastate-js)
- [Ergo Appkit](https://github.com/ergoplatform/ergo-appkit)
- [Ergo Appkit Examples](https://github.com/aslesarenko/ergo-appkit-examples)
- [ergo-android](https://github.com/aslesarenko/ergo-android)
- [ergo-wallet-android](https://github.com/MrStahlfelge/ergo-wallet-android)
- [ErgoTree Specification](https://ergoplatform.org/docs/ErgoTree.pdf)
- [Ergo Documents](https://ergoplatform.org/en/documents/)
- [Ergo Documents](https://docs.ergoplatform.org/)



79 changes: 43 additions & 36 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import scala.language.postfixOps
import scala.sys.process._
import org.scalajs.linker.interface.CheckedBehavior
import scala.sys.process.*
import org.scalajs.linker.interface.{CheckedBehavior, ModuleSplitStyle}

organization := "org.scorexfoundation"

Expand Down Expand Up @@ -196,7 +196,12 @@ lazy val core = crossProject(JVMPlatform, JSPlatform)
scorexUtilDependency,
publish / skip := true
)
.jvmSettings( crossScalaSettings )
.jvmSettings(
crossScalaSettings,
libraryDependencies ++= Seq(
bouncycastleBcprov
)
)
.jsSettings(
crossScalaSettingsJS,
scalacOptions ++= Seq(
Expand All @@ -212,10 +217,40 @@ lazy val core = crossProject(JVMPlatform, JSPlatform)
)
lazy val coreJS = core.js
.enablePlugins(ScalaJSBundlerPlugin)
.enablePlugins(ScalablyTypedConverterGenSourcePlugin)
.settings(
stOutputPackage := "sigmastate",
scalaJSLinkerConfig ~= { conf =>
conf.withSourceMap(false)
.withModuleKind(ModuleKind.CommonJSModule)
},
Compile / npmDependencies ++= Seq(
"sigmajs-crypto-facade" -> sigmajsCryptoFacadeVersion,
"@fleet-sdk/common" -> "0.1.3"
)
)

lazy val data = crossProject(JVMPlatform, JSPlatform)
.in(file("data"))
.dependsOn(core % allConfigDependency)
.settings(
commonSettings ++ testSettings2,
commonDependenies2,
testingDependencies2,
scorexUtilDependency, fastparseDependency, circeDependency, scryptoDependency,
publish / skip := true
)
.jvmSettings( crossScalaSettings )
.jsSettings(
crossScalaSettingsJS,
useYarn := true
)
lazy val dataJS = data.js
.enablePlugins(ScalaJSBundlerPlugin)

lazy val interpreter = crossProject(JVMPlatform, JSPlatform)
.in(file("interpreter"))
.dependsOn(core % allConfigDependency)
.dependsOn(core % allConfigDependency, data % allConfigDependency)
.settings(
commonSettings ++ testSettings2,
commonDependenies2,
Expand All @@ -226,24 +261,10 @@ lazy val interpreter = crossProject(JVMPlatform, JSPlatform)
.jvmSettings( crossScalaSettings )
.jsSettings(
crossScalaSettingsJS,
libraryDependencies ++= Seq (
"org.scala-js" %%% "scala-js-macrotask-executor" % "1.0.0"
),
useYarn := true
)
lazy val interpreterJS = interpreter.js
.enablePlugins(ScalaJSBundlerPlugin)
.enablePlugins(ScalablyTypedConverterGenSourcePlugin)
.settings(
stOutputPackage := "sigmastate",
scalaJSLinkerConfig ~= { conf =>
conf.withSourceMap(false)
},
Compile / npmDependencies ++= Seq(
"sigmajs-crypto-facade" -> sigmajsCryptoFacadeVersion,
"@fleet-sdk/common" -> "0.1.3"
)
)

lazy val parsers = crossProject(JVMPlatform, JSPlatform)
.in(file("parsers"))
Expand All @@ -260,9 +281,6 @@ lazy val parsers = crossProject(JVMPlatform, JSPlatform)
)
.jsSettings(
crossScalaSettingsJS,
libraryDependencies ++= Seq(
"org.scala-js" %%% "scala-js-macrotask-executor" % "1.0.0"
),
useYarn := true
)
lazy val parsersJS = parsers.js
Expand All @@ -271,28 +289,23 @@ lazy val parsersJS = parsers.js
scalaJSLinkerConfig ~= { conf =>
conf.withSourceMap(false)
},
Compile / npmDependencies ++= Seq(
"sigmajs-crypto-facade" -> sigmajsCryptoFacadeVersion
)
)

lazy val sdk = crossProject(JVMPlatform, JSPlatform)
.in(file("sdk"))
.dependsOn(core % allConfigDependency, interpreter % allConfigDependency, parsers % allConfigDependency)
.dependsOn(core % allConfigDependency, data % allConfigDependency, interpreter % allConfigDependency, parsers % allConfigDependency)
.settings(commonSettings ++ testSettings2,
commonDependenies2,
testingDependencies2,
scodecBitsDependency,
circeDependency,
publish / skip := true
)
.jvmSettings(
crossScalaSettings
)
.jsSettings(
crossScalaSettingsJS,
libraryDependencies ++= Seq(
"org.scala-js" %%% "scala-js-macrotask-executor" % "1.0.0"
),
useYarn := true
)
lazy val sdkJS = sdk.js
Expand All @@ -302,9 +315,6 @@ lazy val sdkJS = sdk.js
conf.withSourceMap(false)
.withModuleKind(ModuleKind.CommonJSModule)
},
Compile / npmDependencies ++= Seq(
"sigmajs-crypto-facade" -> sigmajsCryptoFacadeVersion
)
)

lazy val sc = crossProject(JVMPlatform, JSPlatform)
Expand Down Expand Up @@ -348,20 +358,17 @@ lazy val scJS = sc.js
.withArrayIndexOutOfBounds(CheckedBehavior.Compliant)
)
},
Compile / npmDependencies ++= Seq(
"sigmajs-crypto-facade" -> sigmajsCryptoFacadeVersion
)
)


lazy val sigma = (project in file("."))
.aggregate(core.jvm, interpreter.jvm, parsers.jvm, sdk.jvm, sc.jvm)
.aggregate(core.jvm, data.jvm, interpreter.jvm, parsers.jvm, sdk.jvm, sc.jvm)
.settings(libraryDefSettings, rootSettings)
.settings(publish / aggregate := false)
.settings(publishLocal / aggregate := false)

lazy val aggregateCompile = ScopeFilter(
inProjects(core.jvm, interpreter.jvm, parsers.jvm, sdk.jvm, sc.jvm),
inProjects(core.jvm, data.jvm, interpreter.jvm, parsers.jvm, sdk.jvm, sc.jvm),
inConfigurations(Compile))

lazy val rootSettings = Seq(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package sigmastate.crypto
package sigma.crypto

import sigma.data.RType
import scorex.util.encode.Base16
import sigmastate._
import sigma.Coll
import sigma._
import sigma.ast._

import java.math.BigInteger
import scala.scalajs.js
Expand Down Expand Up @@ -128,7 +128,7 @@ object Platform {
class Curve

// TODO JS: Use JS library for secure source of randomness
type SecureRandom = sigmastate.crypto.SecureRandomJS
type SecureRandom = sigma.crypto.SecureRandomJS

/** Opaque point type. */
@js.native
Expand Down Expand Up @@ -184,28 +184,28 @@ object Platform {
private val ctx = new CryptoContextJs

/** The underlying elliptic curve descriptor. */
override def curve: crypto.Curve = ???
override def curve: Curve = ???

override def fieldCharacteristic: BigInteger = Convert.bigIntToBigInteger(ctx.getModulus())

override def order: BigInteger = Convert.bigIntToBigInteger(ctx.getOrder())

override def validatePoint(x: BigInteger, y: BigInteger): crypto.Ecp = {
override def validatePoint(x: BigInteger, y: BigInteger): Ecp = {
val point = ctx.validatePoint(Convert.bigIntegerToBigInt(x), Convert.bigIntegerToBigInt(y))
new Ecp(point)
}

override def infinity(): crypto.Ecp =
override def infinity(): Ecp =
new Ecp(ctx.getInfinity())

override def decodePoint(encoded: Array[Byte]): crypto.Ecp = {
override def decodePoint(encoded: Array[Byte]): Ecp = {
if (encoded(0) == 0) {
return infinity()
}
new Ecp(ctx.decodePoint(Base16.encode(encoded)))
}

override def generator: crypto.Ecp =
override def generator: Ecp =
new Ecp(ctx.getGenerator())
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sigmastate.crypto
package sigma.crypto

import debox.cfor

Expand Down
50 changes: 50 additions & 0 deletions core/js/src/main/scala/sigma/js/AvlTree.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package sigma.js

import sigma.Extensions.ArrayOps
import sigma.data.Iso.{isoStringToArray, isoStringToColl}
import sigma.data.{AvlTreeData, AvlTreeFlags, CAvlTree, Iso}

import scala.scalajs.js
import scala.scalajs.js.UndefOr
import scala.scalajs.js.annotation.JSExportTopLevel

/** Equivalent of [[sigma.AvlTree]] available from JS. */
@JSExportTopLevel("AvlTree")
class AvlTree(
val digest: String,
val insertAllowed: Boolean,
val updateAllowed: Boolean,
val removeAllowed: Boolean,
val keyLength: Int,
val valueLengthOpt: UndefOr[Int]
) extends js.Object

object AvlTree {

implicit val isoAvlTree: Iso[AvlTree, sigma.AvlTree] = new Iso[AvlTree, sigma.AvlTree] {
override def to(x: AvlTree): sigma.AvlTree = {
CAvlTree(
AvlTreeData(
digest = isoStringToArray.to(x.digest).toColl,
treeFlags = AvlTreeFlags(x.insertAllowed, x.updateAllowed, x.removeAllowed),
x.keyLength,
valueLengthOpt = sigma.js.Isos.isoUndefOr(Iso.identityIso[Int]).to(x.valueLengthOpt),
),
)
}

override def from(x: sigma.AvlTree): AvlTree = {
val tree = x.asInstanceOf[CAvlTree]
val data = tree.treeData
new AvlTree(
digest = isoStringToColl.from(tree.digest),
insertAllowed = data.treeFlags.insertAllowed,
updateAllowed = data.treeFlags.updateAllowed,
removeAllowed = data.treeFlags.removeAllowed,
keyLength = data.keyLength,
valueLengthOpt = sigma.js.Isos.isoUndefOr(Iso.identityIso[Int]).from(data.valueLengthOpt),
)
}
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.ergoplatform.sdk.js
package sigma.js

import sigmastate.crypto.{CryptoFacade, CryptoFacadeJs, Ecp, Platform}
import sigmastate.eval.Extensions.ArrayByteOps
import sigma.Extensions.CoreArrayByteOps
import sigma.crypto.{CryptoFacade, CryptoFacadeJs, Ecp, Platform}

import scala.scalajs.js
import scala.scalajs.js.annotation.JSExportTopLevel
Expand All @@ -17,7 +17,7 @@ class GroupElement(val point: Ecp) extends js.Object {
}
}

@JSExportTopLevel("GroupElementObj")
@JSExportTopLevel("GroupElement$")
object GroupElement extends js.Object {
/** Creates a new [[GroupElement]] from the given hex string (ASN.1 encoding)
* representation of the underlying [[sigmastate.crypto.Platform.Point]].
Expand Down
Loading
Loading