Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Changelog for `odra`.

## [2.4.1] - 2025-09-10
## [2.5.0] - 2025-12-XX
### Changed
- Refactor of `CEP-95` token implementation.

Expand Down
156 changes: 91 additions & 65 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,85 +1,111 @@
[workspace]
members = [
"odra",
"odra-vm",
"benchmark",
"core",
"examples",
"examples/ourcoin",
"modules",
"odra-macros",
"odra-casper/rpc-client",
"odra-casper/livenet-env",
"odra-casper/wasm-env",
"odra-casper/test-vm",
"odra-cli",
"odra-schema",
"odra-test",
"odra-build",
"odra-bdd",
"odra-wasm-client",
"odra-wasm-client-builder",
]
exclude = [
"odra-casper/proxy-caller",
"templates/blank",
"templates/full",
"templates/workspace",
"tests",
"odra-casper/proxy-caller",
"templates/blank",
"templates/full",
"templates/workspace",
"tests",
]
members = [
"benchmark",
"core",
"examples",
"examples/ourcoin",
"modules",
"odra",
"odra-bdd",
"odra-build",
"odra-casper/livenet-env",
"odra-casper/rpc-client",
"odra-casper/test-vm",
"odra-casper/wasm-env",
"odra-cli",
"odra-macros",
"odra-schema",
"odra-test",
"odra-vm",
"odra-wasm-client",
"odra-wasm-client-builder",
]
resolver = "2"

[workspace.package]
version = "2.4.1"
authors = [
"Jakub Płaskonka <[email protected]>",
"Krzysztof Pobiarżyn <[email protected]>",
"Maciej Zieliński <[email protected]>",
"Jakub Płaskonka <[email protected]>",
"Krzysztof Pobiarżyn <[email protected]>",
"Maciej Zieliński <[email protected]>",
]
license = "MIT"
edition = "2021"
homepage = "https://odra.dev/docs"
license = "MIT"
readme = "README.md"
repository = "https://github.com/odradev/odra"
version = "2.5.0"

[workspace.dependencies]
odra-core = { path = "core", version = "2.4.1" }
odra-macros = { path = "odra-macros", version = "2.4.1" }
odra-casper-test-vm = { path = "odra-casper/test-vm", version = "2.4.1" }
odra-casper-rpc-client = { path = "odra-casper/rpc-client", version = "2.4.1" }
odra-vm = { path = "odra-vm", version = "2.4.1" }
odra-casper-wasm-env = { path = "odra-casper/wasm-env", version = "2.4.1" }
odra-schema = { path = "odra-schema", version = "2.4.1" }
odra-wasm-client = { path = "odra-wasm-client", version = "2.4.1" }
casper-contract = { version = "5.1.0", default-features = false }
casper-contract-schema = { version = "0.6.0", git ="https://github.com/odradev/casper-contract-schema.git",branch = "feature/schema-deser" }
casper-types = "6.0.0"
casper-execution-engine = "8.1.0"
casper-engine-test-support = "8.1.0"
casper-storage = "2.0.0"
odra-casper-rpc-client = { path = "odra-casper/rpc-client", version = "2.5.0" }
odra-casper-test-vm = { path = "odra-casper/test-vm", version = "2.5.0" }
odra-casper-wasm-env = { path = "odra-casper/wasm-env", version = "2.5.0" }
odra-core = { path = "core", version = "2.5.0" }
odra-macros = { path = "odra-macros", version = "2.5.0" }
odra-schema = { path = "odra-schema", version = "2.5.0" }
odra-vm = { path = "odra-vm", version = "2.5.0" }
odra-wasm-client = { path = "odra-wasm-client", version = "2.5.0" }

casper-client = { version = "5.0", default-features = false }
casper-contract = { version = "5.1", default-features = false }
casper-contract-schema = { version = "0.6.0" }
casper-engine-test-support = "8.1"
casper-event-standard = "0.7"
casper-client = { version = "5.0.0", default-features = false }
blake2 = "0.10.6"
log = "0.4.20"
env_logger = "0.11.1"
serde = { version = "1.0.195", default-features = false }
serde_json = { version = "1.0.113", default-features = false }
num-traits = { version = "0.2.14", default-features = false }
mockall = { version = "0.12.1" }
sha3 = { version = "0.10", default-features = false }
hex = "0.4"
tokio = "1.38"
casper-execution-engine = "8.1"
casper-storage = "2.1"
casper-types = "6.1"

anyhow = { version = "1.0", default-features = false }
backtrace = { version = "0.3" }
base16 = { version = "0.2", default-features = false }
base64 = { version = "0.22", default-features = false, features = ["alloc"] }
serde-json-wasm = { version = "1.0", default-features = false }
anyhow = { version = "1.0.86", default-features = false }
blake2 = "0.10"
bytes = "1.11"
chrono = { version = "0.4"}
clap = { version = "4.5"}
convert_case = "0.6"
cucumber = "0.21"
derive-try-from-ref = "0.1"
derive_more = { version = "2.1.0", features = ["full"] }
dotenv = "0.15"
futures = "0.3"
futures-util = "0.3"
gloo-utils = { version = "0.2"}
hex = "0.4"
itertools = "0.14"
js-sys = "0.3"
lazy_static = "1.5.0"
log = "0.4"
mockall = { version = "0.14" }
num-traits = { version = "0.2", default-features = false }
pretty_assertions = "1.4"
prettycli = "0.1"
proc-macro2 = "1.0"
project-root = "0.2"
quote = "1.0"
rand = { version = "0.9", default-features = false }
rand_chacha = { version = "0.9", default-features = false }
convert_case = "0.5.0"
lazy_static = "1.5.0"
cucumber = "0.21.1"
futures = "0.3.5"
derive_more = { version = "1.0.0", features = ["full"] }
project-root = "0.2.2"
backtrace = { version = "0.3" }
reqwest = { version = "0.12" }
serde = { version = "1.0", default-features = false }
serde_derive = { version = "1.0" }
serde-json-wasm = { version = "1.0", default-features = false }
serde_json = { version = "1.0", default-features = false }
sha3 = { version = "0.10", default-features = false }
syn = "2.0"
syn_derive = "0.2"
thiserror = "1.0"
tokio = "1.48"
toml = "0.9"
wasm-bindgen = "=0.2.100"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 | Confidence: Medium

The dependency wasm-bindgen is pinned to an exact version (=0.2.100) in the workspace dependencies. This strict pinning can cause dependency resolution conflicts in downstream projects and makes transitive dependency updates difficult. While pinning might be necessary for WASM compatibility, using a caret requirement (^0.2.100) would be more standard, allowing patch version updates while maintaining major/minor compatibility. This should be evaluated against the project's actual compatibility requirements.

Suggested change
wasm-bindgen = "=0.2.100"
wasm-bindgen = "0.2.100"

Evidence: path:odra-wasm-client/Cargo.toml, path:odra-wasm-client-builder/Cargo.toml

wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3"}


[profile.release]
codegen-units = 1
Expand Down
18 changes: 13 additions & 5 deletions benchmark/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
[package]
name = "benchmark"
version = "2.4.1"
edition = "2021"
description = "Benchmarking contracts and tools for Odra Framework"

authors = { workspace = true }
edition = { workspace = true }
homepage = { workspace = true }
license = { workspace = true }
readme = { workspace = true }
repository = { workspace = true }
version = { workspace = true }

[dependencies]
odra = { path = "../odra" }
odra-test = { path = "../odra-test", optional = true }
odra-modules = { path = "../modules" }
odra-test = { path = "../odra-test", optional = true }

base64 = { workspace = true }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
Expand All @@ -25,14 +33,14 @@ test = false
[[bin]]
name = "benchmark"
path = "bin/benchmark.rs"
test = false
required-features = ["odra-test"]
test = false

[[bin]]
name = "evaluate_benchmark"
path = "bin/evaluate_benchmark.rs"
test = false

[features]
default = []
benchmark = ["odra-test"]
default = []
24 changes: 16 additions & 8 deletions core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,22 +1,30 @@
[package]
name = "odra-core"
description = "Core of the Odra Framework"
edition = "2021"
version = { workspace = true }

authors = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
homepage = { workspace = true }
license = { workspace = true }
readme = { workspace = true }
repository = { workspace = true }
version = { workspace = true }

[dependencies]
casper-types = { workspace = true }
casper-event-standard = { workspace = true }
num-traits = { workspace = true }
serde = { workspace = true, default-features = false, features = ["alloc", "derive"] }
serde_json = { workspace = true, default-features = false, features = ["alloc"] }
casper-types = { workspace = true }

anyhow = { workspace = true }
rand_chacha = { workspace = true }
num-traits = { workspace = true }
rand = { workspace = true }
rand_chacha = { workspace = true }
serde = { workspace = true, default-features = false, features = [
"alloc",
"derive",
] }
serde_json = { workspace = true, default-features = false, features = [
"alloc",
] }

[dev-dependencies]
mockall = { workspace = true }
Expand Down
2 changes: 1 addition & 1 deletion examples/.cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
target-dir = "../target"

[alias]
rl = "run --features=livenet"
rl = "run --features=livenet"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 | Confidence: Low

The change appears to be only a whitespace/formatting change (adding a newline at end of file). This suggests the entire PR may have been auto-formatted or generated by a tool. While not functionally harmful, it indicates the changes weren't manually curated. Reviewers should be aware that subtle functional changes (like the schema breakages) might be hidden among formatting changes.

16 changes: 12 additions & 4 deletions examples/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,21 +1,29 @@
[package]
name = "odra-examples"
version = "2.4.1"
edition = "2021"
description = "Examples of features of Odra Framework"

authors = { workspace = true }
edition = { workspace = true }
homepage = { workspace = true }
license = { workspace = true }
readme = { workspace = true }
repository = { workspace = true }
version = { workspace = true }

[dependencies]
odra = { path = "../odra", features = [], default-features = false }
odra-modules = { path = "../modules", features = [], default-features = false }
odra-casper-livenet-env = { path = "../odra-casper/livenet-env", optional = true }
odra-modules = { path = "../modules", features = [], default-features = false }

sha3 = { workspace = true }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
odra-build = { path = "../odra-build" }
odra-cli = { path = "../odra-cli", features = [], default-features = false }

[dev-dependencies]
odra-test = { path = "../odra-test" }
hex = { workspace = true }
odra-test = { path = "../odra-test" }

[build-dependencies]
odra-build = { path = "../odra-build" }
Expand Down
13 changes: 7 additions & 6 deletions examples/ourcoin/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
[package]
name = "ourcoin"
version = "0.1.0"
edition = "2021"
version = "0.1.0"

[dependencies]
odra = { path = "../../odra", features = [], default-features = false }
odra-modules = { path = "../../modules", features = [], default-features = false }
odra = { path = "../../odra", default-features = false }
odra-build = { path = "../../odra-build", default-features = false }
odra-casper-livenet-env = { path = "../../odra-casper/livenet-env", optional = true }
odra-build = { path = "../../odra-build", features = [], default-features = false }
odra-modules = { path = "../../modules", default-features = false }

[dev-dependencies]
odra-test = { path = "../../odra-test", features = [], default-features = false }
odra-test = { path = "../../odra-test", default-features = false }

[build-dependencies]
odra-build = { path = "../../odra-build", features = [], default-features = false }
odra-build = { path = "../../odra-build", features = [
], default-features = false }

[features]
default = []
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
{
"casper_contract_schema_version": 1,
"toolchain": "rustc 1.85.0-nightly (d117b7f21 2024-12-31)",
"authors": [],
"repository": null,
"homepage": null,
"authors": [
"Jakub Płaskonka <[email protected]>",
"Krzysztof Pobiarżyn <[email protected]>",
"Maciej Zieliński <[email protected]>"
],
"repository": "https://github.com/odradev/odra",
"homepage": "https://odra.dev/docs",
"contract_name": "BalanceChecker",
"contract_version": "2.4.1",
"contract_version": "2.5.0",
"types": [],
"errors": [],
"entry_points": [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
{
"casper_contract_schema_version": 1,
"toolchain": "rustc 1.85.0-nightly (d117b7f21 2024-12-31)",
"authors": [],
"repository": null,
"homepage": null,
"authors": [
"Jakub Płaskonka <[email protected]>",
"Krzysztof Pobiarżyn <[email protected]>",
"Maciej Zieliński <[email protected]>"
],
"repository": "https://github.com/odradev/odra",
"homepage": "https://odra.dev/docs",
"contract_name": "BetterCounterFactory",
"contract_version": "2.4.1",
"contract_version": "2.5.0",
"types": [
{
"struct": {
Expand Down Expand Up @@ -83,23 +87,7 @@
"is_mutable": true,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Contextual Comment]
This comment refers to code near real line 85. Anchored to nearest_changed(87) line 87.


P0 | Confidence: High

The schema for the batch_upgrade_child_contract entry point was significantly simplified from three distinct arguments (default_args, names_to_upgrade, specific_args) to a single args argument. This is a breaking public API change. The Evidence Anchor shows a test in examples/src/factory/counter.rs that calls this method with a BTreeMap<String, BetterCounterUpgradeArgs>. The current schema change would make this call incompatible, as the contract's Wasm entry point now expects a single serialized bytes argument instead of the previous structured arguments. This will cause runtime execution failures for any existing callers. The change appears to be an unintended side effect of an automated schema regeneration.

"arguments": [
{
"name": "default_args",
"description": null,
"ty": {
"List": "U8"
},
"optional": false
},
{
"name": "names_to_upgrade",
"description": null,
"ty": {
"List": "U8"
},
"optional": false
},
{
"name": "specific_args",
"name": "args",
"description": null,
"ty": {
"List": "U8"
Expand Down
Loading