mirror of
https://github.com/lux-rs/chains.git
synced 2026-10-30 20:53:50 +00:00
These were in luxfi/compute, a private repo whose licence is the same BSD-3-Clause as luxfi/node's. Nothing here needed protecting, and keeping it private broke the public Rust chain builds that reference it. Sibling paths lose a level: the chains sat three deep in compute and sit one deep here. The conformance generator loses a replace naming an absolute path on one machine, and takes luxfi/chains from the proxy. Co-authored-by: Hanzo Dev <[email protected]>
56 lines
2.6 KiB
TOML
56 lines
2.6 KiB
TOML
[package]
|
|
name = "lux-fhevm"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "The Lux F-Chain in Rust: the coordination plane for confidential compute, ZAP on the wire."
|
|
license = "BSD-3-Clause-Eco"
|
|
repository = "https://github.com/lux-rs/chains"
|
|
publish = false
|
|
|
|
[dependencies]
|
|
# The ZAP runtime, emitted by zapgen into `chains/rust/zap` — one copy for
|
|
# every chain here, so the reader a chain calls is the reader the Go and C++
|
|
# chains call. A path dependency because it is generated in this tree from
|
|
# `chains/schema`, and a version between them would be a way to disagree
|
|
# about what a byte means.
|
|
lux-zap = { path = "../../../lux/node/chains/rust/zap" }
|
|
|
|
# The host. `host::Vm` and `host::Block` are the node's OWN trait definitions,
|
|
# not a copy of them: a chain that restated the seam would compile against a
|
|
# shape the node never sees, and the day the node changed a method the chain
|
|
# would still build. A path dependency because `lux-node` is not published.
|
|
lux-node = { path = "../../../lux-rs/node" }
|
|
|
|
# ML-DSA-65, and the only cryptography this chain performs beyond SHA-256.
|
|
# It reaches `libluxcrypto`, which is the C ABI of `luxfi/crypto` — the SAME
|
|
# implementation the Go reference verifies with, rather than a second one to
|
|
# keep in step with it. Naming it here also hands this crate the `links`
|
|
# metadata `build.rs` repeats, so the test binaries can load.
|
|
lux-pq = { path = "../../../lux-rs/sdk/lux-pq" }
|
|
|
|
# `Id` — `lux_consensus::finality::Id`, `[u8; 32]`. Named from the crate the
|
|
# host names it from, so a block this chain builds is named the same way the
|
|
# node that certifies it names it, with nothing in between to translate.
|
|
lux-consensus = "1.23.0"
|
|
|
|
# Every name this chain derives is a SHA-256: the ciphertext handle, the permit
|
|
# id, the request id, the committee digest, the payer's address, the
|
|
# transaction id and the block id. Writing it by hand would be a second
|
|
# implementation to keep in step with Go and C++.
|
|
sha2 = "0.10"
|
|
|
|
# The three boundaries where a chain reads a shape it did not choose: an
|
|
# operation payload and a genesis are JSON, an address inside one is CB58, and
|
|
# a public key inside one is base64. A hand-written parser at a boundary is a
|
|
# vulnerability with a schedule.
|
|
# `preserve_order`, because one of the rules this decoder copies is about
|
|
# ORDER: two members naming one field are both resolved and the LATER one is
|
|
# written. A map that sorted its keys could not express that rule at all.
|
|
serde_json = { version = "1", features = ["preserve_order"] }
|
|
bs58 = "0.5"
|
|
base64 = "0.22"
|
|
|
|
[dev-dependencies]
|
|
# Golden vectors are hex, because that is how the Go generator prints them.
|
|
hex = "0.4"
|