neo-devpack-solidity 0.22.0

Production-focused Solidity-to-NeoVM compilation system
Documentation
[package]
name = "neo-devpack-solidity"
version = "0.22.0"
edition = "2021"
rust-version = "1.88"
description = "Production-focused Solidity-to-NeoVM compilation system"
license = "MIT"
repository = "https://github.com/r3e-network/neo-devpack-solidity"
homepage = "https://github.com/r3e-network/neo-devpack-solidity"
documentation = "https://docs.r3e.network/neo-devpack-solidity"
authors = ["Jimmy <jimmy@r3e.network>"]
keywords = ["neo", "solidity", "smart-contracts", "neovm", "compiler"]
categories = ["compilers", "development-tools", "cryptography"]
readme = "README.md"

[dependencies]
clap = { version = "4.0", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
hex = "0.4"
thiserror = "1.0"
anyhow = "1.0"
tokio = { version = "1.0", features = ["full"] }
tracing = "0.1"
tracing-subscriber = "0.3"
regex = "1.0"
once_cell = "1.0"
dashmap = "5.0"
rayon = "1.7"
sha2 = "0.10"
sha3 = "0.10"
blake2 = "0.10"
ripemd = "0.1"
secp256k1 = { version = "0.27", features = ["recovery"] }
# secp256r1 (NIST P-256) backing the runtime's `CryptoLib.verifyWithECDsa`
# handler for Neo N3's default NamedCurveHash values (secp256r1SHA256 = 23,
# secp256r1Keccak256 = 123). secp256k1 (the `secp256k1` crate) covers curves
# 22/122. See src/runtime/execution/execution_impl_part2_native/crypto.rs.
p256 = { version = "0.13", features = ["ecdsa"] }
num-bigint = "0.4"
num-traits = "0.2"
solang-parser = { package = "foundry-solang-parser", version = "0.3.9" }
# `stacker` wraps recursive compiler entry points (`lower_expression`,
# `lower_statement`, etc.) to grow the call stack on demand instead of
# stack-overflowing on pathological nesting (e.g. `(((((...)))))` or
# `{{{{{{...}}}}}}` ~10k+ deep). See `src/ir/expressions/dispatch/entry.rs`
# and the "Recent bug class" section in docs/FUZZ.md.
stacker = "0.1"
# BLS12-381 elliptic curve operations backing the runtime's
# `CryptoLib.bls12381*` native handlers
# (src/runtime/execution/execution_impl_part2_native/crypto.rs). The runtime
# uses the `bls12_381` crate's `G1Affine`/`G2Affine`/`Scalar`/`pairing` API to
# parse compressed points, perform group arithmetic, and run the bilinear
# pairing. The same crate is used as an oracle in the differential proptests
# (tests/fuzz_tests/differential.rs::differential_bls12381_*) — keeping it on
# the runtime side keeps the implementation and oracle in lockstep.
bls12_381 = "0.8"
# Transitive of bls12_381; re-exported here so the runtime can use
# `Group::generator()` and `Group::identity()` for BLS12-381 curve constants.
group = "0.13"

[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
# Sign secp256r1 (P-256) test vectors to validate the runtime's
# CryptoLib.verifyWithECDsa handler against genuine ECDSA signatures.
# See tests/runtime_verify_ecdsa_tests.rs.
p256 = { version = "0.13", features = ["ecdsa"] }
proptest = "1.0"
quickcheck = "1.0"
tempfile = "3.0"
pretty_assertions = "1.0"
# Reference oracle for differential testing of CryptoLib.murmur32 against
# the in-runtime murmur3_x86_32 implementation. See
# tests/fuzz_tests/differential.rs::differential_cryptolib_murmur32.
murmur3 = "0.5"
# Reference oracle for differential testing of StdLib.base64Encode/Decode
# against the in-runtime hand-rolled RFC 4648 codec
# (src/runtime/execution/execution_impl_part2_native/stdlib.rs::base64_encode).
# See tests/fuzz_tests/stdlib_native_props.rs.
base64 = "0.21"
# Reference oracle for differential testing of StdLib.base58Encode/Decode
# (Bitcoin/IPFS-style alphabet — currently unimplemented in the runtime,
# so the harness pins the documented "fall through to Null" contract until
# the native lands; see Task #51 follow-up).
bs58 = "0.5"

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"

[profile.bench]
inherits = "release"
debug = true

[[bin]]
name = "neo-solc"
path = "src/main.rs"

[lints.rust]
unused_must_use = "warn"

[lints.clippy]
all = { level = "warn", priority = -1 }
# Targeted checks
enum_glob_use = "warn"
explicit_into_iter_loop = "warn"
flat_map_option = "warn"
implicit_clone = "warn"
inefficient_to_string = "warn"
manual_let_else = "allow"
uninlined_format_args = "warn"
# Allow patterns common in this codebase
map_unwrap_or = "allow"
semicolon_if_nothing_returned = "allow"
unused_self = "allow"