mirror of
https://github.com/luxfi/node.git
synced 2026-10-30 15:24:05 +00:00
chains/cpp/core and quantumvm asked for LUX_GPU_DIR and stopped with a fatal error when nothing set it, so the public P, X and Q builds could not configure at all for anyone outside this machine. The seam is an ABI of four symbols over a complete CPU backend, not a kernel, so it belongs beside the chains defined over it; the kernels stay private in lux-gpu/gpu and are still only ever dlopen'd. The D and F ports move with it, to lux-cpp/chains and lux-rs/chains, both public. luxfi/compute held nothing its licence did not already cover, being the same BSD-3-Clause as this repository's. Co-authored-by: Hanzo Dev <[email protected]>
66 lines
2.8 KiB
TOML
66 lines
2.8 KiB
TOML
# SPDX-License-Identifier: BSD-3-Clause-Eco
|
|
|
|
[package]
|
|
name = "lux-platformvm"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "The Lux P-Chain in Rust — validators, staking, permissionless entry, L1s"
|
|
license = "BSD-3-Clause-Eco"
|
|
repository = "https://github.com/luxfi/node2"
|
|
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 = "../zap" }
|
|
|
|
# `Id` is the host seam's own id type — `lux_consensus::finality::Id`, which is
|
|
# `[u8; 32]`. Naming it from the same crate the host names it from is what makes
|
|
# a chain here plug into `lux-rs/node`'s `Vm` with no conversion at the join.
|
|
lux-consensus = "1.23.0"
|
|
|
|
# The seam itself. `lux-rs/node` states `Vm` and `Block` once, in `src/vm.rs`,
|
|
# and this chain names that declaration rather than restating it: a second
|
|
# declaration of the same trait is a second seam, and the two can drift while
|
|
# both compile. A path dependency because the node and the chains it runs move
|
|
# together and a version number between them would be a way to disagree about
|
|
# what a block is.
|
|
lux-node = { path = "../../../../../lux-rs/node" }
|
|
|
|
# Every primitive the chain is defined over — SHA-256, which names a tx and a
|
|
# block; RIPEMD-160 over it, which is the second half of an address; and
|
|
# public-key recovery, which is how a transaction that carries signatures and
|
|
# no keys can be checked at all. A second implementation of any of them would be
|
|
# a second answer to "which block". This crate is also where the choice between
|
|
# computing them and handing them to an installed kernel library is made — see
|
|
# gpu/README.md.
|
|
lux-gpu = { path = "../../../gpu/rust" }
|
|
|
|
# The signature a validator proves possession of. Same curve, same domain tag as
|
|
# the Go P-Chain's proof of possession — a second BLS is a second network.
|
|
blst = "0.3"
|
|
|
|
# Signing. A chain verifies signatures and never makes them, so this is the
|
|
# test and tooling half of the same curve, deliberately outside the primitive
|
|
# seam — that seam exists to make VERIFICATION agree across backends.
|
|
k256 = { version = "0.13", features = ["ecdsa"] }
|
|
|
|
# JSON-RPC is the shape the seam's `call` speaks in. Hand-parsing at a boundary
|
|
# is a vulnerability with a schedule.
|
|
serde_json = "1"
|
|
|
|
[dev-dependencies]
|
|
# The wire vectors build a proof of possession, which needs the same curve the
|
|
# chain verifies under.
|
|
blst = "0.3"
|
|
serde = { version = "1", features = ["derive"] }
|
|
|
|
# An independent second opinion, only in tests: the address check recomputes
|
|
# ripemd160(sha256(key)) by hand rather than asking the seam whether the seam
|
|
# is right.
|
|
ripemd = "0.1"
|
|
sha2 = "0.10"
|