diff --git a/.gitignore b/.gitignore index 07526794a..2dbde8e1b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ /target/ /ledger-tool/target/ /wallet/target/ +/core/target/ /book/html/ /book/src/img/ /book/src/tests.ok diff --git a/Cargo.lock b/Cargo.lock index 1cb1d4c5d..c42e00238 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2377,6 +2377,26 @@ dependencies = [ "solana-vote-signer 0.12.0", ] +[[package]] +name = "solana-workspace" +version = "0.12.0" +dependencies = [ + "bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "solana 0.12.0", + "solana-logger 0.12.0", + "solana-netutil 0.12.0", + "solana-runtime 0.12.0", + "solana-sdk 0.12.0", + "sys-info 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "solana_rbpf" version = "0.1.10" diff --git a/Cargo.toml b/Cargo.toml index 1176a6d01..9e5adab0f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "solana" +name = "solana-workspace" description = "Blockchain, Rebuilt for Scale" version = "0.12.0" documentation = "https://docs.rs/solana" @@ -14,55 +14,28 @@ edition = "2018" codecov = { repository = "solana-labs/solana", branch = "master", service = "github" } [features] -chacha = [] -cuda = [] -erasure = [] -ipv6 = ["solana-netutil/ipv6"] -test = [] -unstable = [] +chacha = ["solana/chacha"] +cuda = ["solana/cuda"] +erasure = ["solana/erasure"] +ipv6 = ["solana/ipv6", "solana-netutil/ipv6"] +test = ["solana/test"] +unstable = ["solana/unstable"] -[dependencies] +[dev-dependencies] bincode = "1.1.2" bs58 = "0.2.0" -byteorder = "1.3.1" -chrono = { version = "0.4.0", features = ["serde"] } hashbrown = "0.1.8" -indexmap = "1.0" -itertools = "0.8.0" -jsonrpc-core = "10.1.0" -jsonrpc-derive = "10.1.0" -jsonrpc-http-server = "10.1.0" -jsonrpc-pubsub = "10.1.0" -jsonrpc-ws-server = "10.1.0" -libc = "0.2.49" log = "0.4.2" -nix = "0.13.0" rand = "0.6.5" -rand_chacha = "0.1.1" rayon = "1.0.0" reqwest = "0.9.10" -ring = "0.13.2" -rocksdb = "0.11.0" -serde = "1.0.89" -serde_derive = "1.0.89" serde_json = "1.0.39" -solana-drone = { path = "drone", version = "0.12.0" } +solana = { path = "core", version = "0.12.0" } solana-logger = { path = "logger", version = "0.12.0" } -solana-metrics = { path = "metrics", version = "0.12.0" } solana-netutil = { path = "netutil", version = "0.12.0" } solana-runtime = { path = "runtime", version = "0.12.0" } solana-sdk = { path = "sdk", version = "0.12.0" } -solana-vote-signer = { path = "vote-signer", version = "0.12.0" } sys-info = "0.5.6" -tokio = "0.1" -tokio-codec = "0.1" -untrusted = "0.6.2" - -[dev-dependencies] -hex-literal = "0.1.3" -matches = "0.1.6" -solana-vote-program = { path = "programs/native/vote", version = "0.12.0" } -solana-budget-program = { path = "programs/native/budget", version = "0.12.0" } [[bench]] name = "banking_stage" @@ -88,6 +61,7 @@ members = [ ".", "bench-streamer", "bench-tps", + "core", "drone", "fullnode", "fullnode-config", diff --git a/bench-streamer/Cargo.toml b/bench-streamer/Cargo.toml index 9c06a4875..be672a2a8 100644 --- a/bench-streamer/Cargo.toml +++ b/bench-streamer/Cargo.toml @@ -9,7 +9,7 @@ homepage = "https://solana.com/" [dependencies] clap = "2.32.0" -solana = { path = "..", version = "0.12.0" } +solana = { path = "../core", version = "0.12.0" } solana-logger = { path = "../logger", version = "0.12.0" } solana-netutil = { path = "../netutil", version = "0.12.0" } diff --git a/bench-tps/Cargo.toml b/bench-tps/Cargo.toml index e4b917e23..02f3d412e 100644 --- a/bench-tps/Cargo.toml +++ b/bench-tps/Cargo.toml @@ -11,7 +11,7 @@ homepage = "https://solana.com/" clap = "2.32.0" rayon = "1.0.3" serde_json = "1.0.39" -solana = { path = "..", version = "0.12.0" } +solana = { path = "../core", version = "0.12.0" } solana-drone = { path = "../drone", version = "0.12.0" } solana-logger = { path = "../logger", version = "0.12.0" } solana-metrics = { path = "../metrics", version = "0.12.0" } diff --git a/ci/publish-crate.sh b/ci/publish-crate.sh index 74c78078a..024587e70 100755 --- a/ci/publish-crate.sh +++ b/ci/publish-crate.sh @@ -18,7 +18,7 @@ CRATES=( metrics drone programs/native/{budget,bpf_loader,native_loader,noop,system,vote} - . + core fullnode-config fullnode genesis diff --git a/core/Cargo.toml b/core/Cargo.toml new file mode 100644 index 000000000..d6d0df5cd --- /dev/null +++ b/core/Cargo.toml @@ -0,0 +1,66 @@ +[package] +name = "solana" +description = "Blockchain, Rebuilt for Scale" +version = "0.12.0" +documentation = "https://docs.rs/solana" +homepage = "https://solana.com/" +readme = "README.md" +repository = "https://github.com/solana-labs/solana" +authors = ["Solana Maintainers "] +license = "Apache-2.0" +edition = "2018" + +[badges] +codecov = { repository = "solana-labs/solana", branch = "master", service = "github" } + +[features] +chacha = [] +cuda = [] +erasure = [] +ipv6 = ["solana-netutil/ipv6"] +test = [] +unstable = [] + +[dependencies] +bincode = "1.1.2" +bs58 = "0.2.0" +byteorder = "1.3.1" +chrono = { version = "0.4.0", features = ["serde"] } +hashbrown = "0.1.8" +indexmap = "1.0" +itertools = "0.8.0" +jsonrpc-core = "10.1.0" +jsonrpc-derive = "10.1.0" +jsonrpc-http-server = "10.1.0" +jsonrpc-pubsub = "10.1.0" +jsonrpc-ws-server = "10.1.0" +libc = "0.2.49" +log = "0.4.2" +nix = "0.13.0" +rand = "0.6.5" +rand_chacha = "0.1.1" +rayon = "1.0.0" +reqwest = "0.9.10" +ring = "0.13.2" +rocksdb = "0.11.0" +serde = "1.0.89" +serde_derive = "1.0.88" +serde_json = "1.0.39" +solana-drone = { path = "../drone", version = "0.12.0" } +solana-logger = { path = "../logger", version = "0.12.0" } +solana-metrics = { path = "../metrics", version = "0.12.0" } +solana-netutil = { path = "../netutil", version = "0.12.0" } +solana-runtime = { path = "../runtime", version = "0.12.0" } +solana-sdk = { path = "../sdk", version = "0.12.0" } +solana-vote-signer = { path = "../vote-signer", version = "0.12.0" } +sys-info = "0.5.6" +tokio = "0.1" +tokio-codec = "0.1" +untrusted = "0.6.2" + +[dev-dependencies] +hex-literal = "0.1.3" +matches = "0.1.6" +solana-vote-program = { path = "../programs/native/vote", version = "0.12.0" } +solana-budget-program = { path = "../programs/native/budget", version = "0.12.0" } + diff --git a/src/bank_forks.rs b/core/src/bank_forks.rs similarity index 100% rename from src/bank_forks.rs rename to core/src/bank_forks.rs diff --git a/src/banking_stage.rs b/core/src/banking_stage.rs similarity index 100% rename from src/banking_stage.rs rename to core/src/banking_stage.rs diff --git a/src/blob_fetch_stage.rs b/core/src/blob_fetch_stage.rs similarity index 100% rename from src/blob_fetch_stage.rs rename to core/src/blob_fetch_stage.rs diff --git a/src/blockstream.rs b/core/src/blockstream.rs similarity index 100% rename from src/blockstream.rs rename to core/src/blockstream.rs diff --git a/src/blockstream_service.rs b/core/src/blockstream_service.rs similarity index 100% rename from src/blockstream_service.rs rename to core/src/blockstream_service.rs diff --git a/src/blocktree.rs b/core/src/blocktree.rs similarity index 100% rename from src/blocktree.rs rename to core/src/blocktree.rs diff --git a/src/blocktree_processor.rs b/core/src/blocktree_processor.rs similarity index 100% rename from src/blocktree_processor.rs rename to core/src/blocktree_processor.rs diff --git a/src/broadcast_stage.rs b/core/src/broadcast_stage.rs similarity index 100% rename from src/broadcast_stage.rs rename to core/src/broadcast_stage.rs diff --git a/src/chacha.rs b/core/src/chacha.rs similarity index 100% rename from src/chacha.rs rename to core/src/chacha.rs diff --git a/src/chacha_cuda.rs b/core/src/chacha_cuda.rs similarity index 100% rename from src/chacha_cuda.rs rename to core/src/chacha_cuda.rs diff --git a/src/client.rs b/core/src/client.rs similarity index 100% rename from src/client.rs rename to core/src/client.rs diff --git a/src/cluster_info.rs b/core/src/cluster_info.rs similarity index 100% rename from src/cluster_info.rs rename to core/src/cluster_info.rs diff --git a/src/cluster_info_vote_listener.rs b/core/src/cluster_info_vote_listener.rs similarity index 100% rename from src/cluster_info_vote_listener.rs rename to core/src/cluster_info_vote_listener.rs diff --git a/src/cluster_tests.rs b/core/src/cluster_tests.rs similarity index 100% rename from src/cluster_tests.rs rename to core/src/cluster_tests.rs diff --git a/src/contact_info.rs b/core/src/contact_info.rs similarity index 100% rename from src/contact_info.rs rename to core/src/contact_info.rs diff --git a/src/crds.rs b/core/src/crds.rs similarity index 100% rename from src/crds.rs rename to core/src/crds.rs diff --git a/src/crds_gossip.rs b/core/src/crds_gossip.rs similarity index 100% rename from src/crds_gossip.rs rename to core/src/crds_gossip.rs diff --git a/src/crds_gossip_error.rs b/core/src/crds_gossip_error.rs similarity index 100% rename from src/crds_gossip_error.rs rename to core/src/crds_gossip_error.rs diff --git a/src/crds_gossip_pull.rs b/core/src/crds_gossip_pull.rs similarity index 100% rename from src/crds_gossip_pull.rs rename to core/src/crds_gossip_pull.rs diff --git a/src/crds_gossip_push.rs b/core/src/crds_gossip_push.rs similarity index 100% rename from src/crds_gossip_push.rs rename to core/src/crds_gossip_push.rs diff --git a/src/crds_value.rs b/core/src/crds_value.rs similarity index 100% rename from src/crds_value.rs rename to core/src/crds_value.rs diff --git a/src/db_window.rs b/core/src/db_window.rs similarity index 100% rename from src/db_window.rs rename to core/src/db_window.rs diff --git a/src/entry.rs b/core/src/entry.rs similarity index 100% rename from src/entry.rs rename to core/src/entry.rs diff --git a/src/erasure.rs b/core/src/erasure.rs similarity index 100% rename from src/erasure.rs rename to core/src/erasure.rs diff --git a/src/fetch_stage.rs b/core/src/fetch_stage.rs similarity index 100% rename from src/fetch_stage.rs rename to core/src/fetch_stage.rs diff --git a/src/fullnode.rs b/core/src/fullnode.rs similarity index 100% rename from src/fullnode.rs rename to core/src/fullnode.rs diff --git a/src/gen_keys.rs b/core/src/gen_keys.rs similarity index 100% rename from src/gen_keys.rs rename to core/src/gen_keys.rs diff --git a/src/gossip_service.rs b/core/src/gossip_service.rs similarity index 100% rename from src/gossip_service.rs rename to core/src/gossip_service.rs diff --git a/src/leader_confirmation_service.rs b/core/src/leader_confirmation_service.rs similarity index 100% rename from src/leader_confirmation_service.rs rename to core/src/leader_confirmation_service.rs diff --git a/src/leader_schedule.rs b/core/src/leader_schedule.rs similarity index 100% rename from src/leader_schedule.rs rename to core/src/leader_schedule.rs diff --git a/src/leader_schedule_utils.rs b/core/src/leader_schedule_utils.rs similarity index 100% rename from src/leader_schedule_utils.rs rename to core/src/leader_schedule_utils.rs diff --git a/src/lib.rs b/core/src/lib.rs similarity index 100% rename from src/lib.rs rename to core/src/lib.rs diff --git a/src/local_cluster.rs b/core/src/local_cluster.rs similarity index 100% rename from src/local_cluster.rs rename to core/src/local_cluster.rs diff --git a/src/local_vote_signer_service.rs b/core/src/local_vote_signer_service.rs similarity index 100% rename from src/local_vote_signer_service.rs rename to core/src/local_vote_signer_service.rs diff --git a/src/packet.rs b/core/src/packet.rs similarity index 100% rename from src/packet.rs rename to core/src/packet.rs diff --git a/src/poh.rs b/core/src/poh.rs similarity index 100% rename from src/poh.rs rename to core/src/poh.rs diff --git a/src/poh_recorder.rs b/core/src/poh_recorder.rs similarity index 100% rename from src/poh_recorder.rs rename to core/src/poh_recorder.rs diff --git a/src/poh_service.rs b/core/src/poh_service.rs similarity index 100% rename from src/poh_service.rs rename to core/src/poh_service.rs diff --git a/src/recvmmsg.rs b/core/src/recvmmsg.rs similarity index 100% rename from src/recvmmsg.rs rename to core/src/recvmmsg.rs diff --git a/src/repair_service.rs b/core/src/repair_service.rs similarity index 100% rename from src/repair_service.rs rename to core/src/repair_service.rs diff --git a/src/replay_stage.rs b/core/src/replay_stage.rs similarity index 100% rename from src/replay_stage.rs rename to core/src/replay_stage.rs diff --git a/src/replicator.rs b/core/src/replicator.rs similarity index 100% rename from src/replicator.rs rename to core/src/replicator.rs diff --git a/src/result.rs b/core/src/result.rs similarity index 100% rename from src/result.rs rename to core/src/result.rs diff --git a/src/retransmit_stage.rs b/core/src/retransmit_stage.rs similarity index 100% rename from src/retransmit_stage.rs rename to core/src/retransmit_stage.rs diff --git a/src/rpc.rs b/core/src/rpc.rs similarity index 100% rename from src/rpc.rs rename to core/src/rpc.rs diff --git a/src/rpc_mock.rs b/core/src/rpc_mock.rs similarity index 100% rename from src/rpc_mock.rs rename to core/src/rpc_mock.rs diff --git a/src/rpc_pubsub.rs b/core/src/rpc_pubsub.rs similarity index 100% rename from src/rpc_pubsub.rs rename to core/src/rpc_pubsub.rs diff --git a/src/rpc_pubsub_service.rs b/core/src/rpc_pubsub_service.rs similarity index 100% rename from src/rpc_pubsub_service.rs rename to core/src/rpc_pubsub_service.rs diff --git a/src/rpc_request.rs b/core/src/rpc_request.rs similarity index 100% rename from src/rpc_request.rs rename to core/src/rpc_request.rs diff --git a/src/rpc_service.rs b/core/src/rpc_service.rs similarity index 100% rename from src/rpc_service.rs rename to core/src/rpc_service.rs diff --git a/src/rpc_status.rs b/core/src/rpc_status.rs similarity index 100% rename from src/rpc_status.rs rename to core/src/rpc_status.rs diff --git a/src/rpc_subscriptions.rs b/core/src/rpc_subscriptions.rs similarity index 100% rename from src/rpc_subscriptions.rs rename to core/src/rpc_subscriptions.rs diff --git a/src/service.rs b/core/src/service.rs similarity index 100% rename from src/service.rs rename to core/src/service.rs diff --git a/src/sigverify.rs b/core/src/sigverify.rs similarity index 100% rename from src/sigverify.rs rename to core/src/sigverify.rs diff --git a/src/sigverify_stage.rs b/core/src/sigverify_stage.rs similarity index 100% rename from src/sigverify_stage.rs rename to core/src/sigverify_stage.rs diff --git a/src/staking_utils.rs b/core/src/staking_utils.rs similarity index 100% rename from src/staking_utils.rs rename to core/src/staking_utils.rs diff --git a/src/storage_stage.rs b/core/src/storage_stage.rs similarity index 100% rename from src/storage_stage.rs rename to core/src/storage_stage.rs diff --git a/src/streamer.rs b/core/src/streamer.rs similarity index 100% rename from src/streamer.rs rename to core/src/streamer.rs diff --git a/src/test_tx.rs b/core/src/test_tx.rs similarity index 100% rename from src/test_tx.rs rename to core/src/test_tx.rs diff --git a/src/thin_client.rs b/core/src/thin_client.rs similarity index 100% rename from src/thin_client.rs rename to core/src/thin_client.rs diff --git a/src/tpu.rs b/core/src/tpu.rs similarity index 100% rename from src/tpu.rs rename to core/src/tpu.rs diff --git a/src/tpu_forwarder.rs b/core/src/tpu_forwarder.rs similarity index 100% rename from src/tpu_forwarder.rs rename to core/src/tpu_forwarder.rs diff --git a/src/tvu.rs b/core/src/tvu.rs similarity index 100% rename from src/tvu.rs rename to core/src/tvu.rs diff --git a/src/voting_keypair.rs b/core/src/voting_keypair.rs similarity index 100% rename from src/voting_keypair.rs rename to core/src/voting_keypair.rs diff --git a/src/window.rs b/core/src/window.rs similarity index 100% rename from src/window.rs rename to core/src/window.rs diff --git a/src/window_service.rs b/core/src/window_service.rs similarity index 100% rename from src/window_service.rs rename to core/src/window_service.rs diff --git a/fullnode/Cargo.toml b/fullnode/Cargo.toml index 740c1260b..1bfd5c18d 100644 --- a/fullnode/Cargo.toml +++ b/fullnode/Cargo.toml @@ -12,7 +12,7 @@ homepage = "https://solana.com/" clap = "2.32.0" log = "0.4.2" serde_json = "1.0.39" -solana = { path = "..", version = "0.12.0" } +solana = { path = "../core", version = "0.12.0" } solana-drone = { path = "../drone", version = "0.12.0" } solana-fullnode-config = { path = "../fullnode-config", version = "0.12.0" } solana-logger = { path = "../logger", version = "0.12.0" } diff --git a/genesis/Cargo.toml b/genesis/Cargo.toml index 6f48e363c..a98a70caf 100644 --- a/genesis/Cargo.toml +++ b/genesis/Cargo.toml @@ -11,7 +11,7 @@ homepage = "https://solana.com/" [dependencies] clap = "2.32.0" serde_json = "1.0.39" -solana = { path = "..", version = "0.12.0" } +solana = { path = "../core", version = "0.12.0" } solana-sdk = { path = "../sdk", version = "0.12.0" } [features] diff --git a/ledger-tool/Cargo.toml b/ledger-tool/Cargo.toml index 7c10089af..4a55a06a9 100644 --- a/ledger-tool/Cargo.toml +++ b/ledger-tool/Cargo.toml @@ -11,7 +11,7 @@ homepage = "https://solana.com/" [dependencies] clap = "2.32.0" serde_json = "1.0.39" -solana = { path = "..", version = "0.12.0" } +solana = { path = "../core", version = "0.12.0" } solana-sdk = { path = "../sdk", version = "0.12.0" } solana-logger = { path = "../logger", version = "0.12.0" } solana-runtime = { path = "../runtime", version = "0.12.0" } diff --git a/programs/Cargo.toml b/programs/Cargo.toml index 95cb5d7e3..ea999d392 100644 --- a/programs/Cargo.toml +++ b/programs/Cargo.toml @@ -18,7 +18,7 @@ cuda = ["solana/cuda"] erasure = ["solana/erasure"] [dependencies] -solana = { path = "..", version = "0.12.0" } +solana = { path = "../core", version = "0.12.0" } solana-bpfloader = { path = "native/bpf_loader", version = "0.12.0" } solana-logger = { path = "../logger", version = "0.12.0" } solana-native-loader = { path = "native/native_loader", version = "0.12.0" } diff --git a/replicator/Cargo.toml b/replicator/Cargo.toml index 421820351..d6c2f77c1 100644 --- a/replicator/Cargo.toml +++ b/replicator/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://solana.com/" [dependencies] clap = "2.32.0" serde_json = "1.0.39" -solana = { path = "..", version = "0.12.0" } +solana = { path = "../core", version = "0.12.0" } solana-logger = { path = "../logger", version = "0.12.0" } solana-fullnode-config = { path = "../fullnode-config", version = "0.12.0" } solana-sdk = { path = "../sdk", version = "0.12.0" } diff --git a/wallet/Cargo.toml b/wallet/Cargo.toml index 531e3b903..6e3634e08 100644 --- a/wallet/Cargo.toml +++ b/wallet/Cargo.toml @@ -16,7 +16,7 @@ chrono = { version = "0.4.0", features = ["serde"] } dirs = "1.0.5" log = "0.4.2" serde_json = "1.0.39" -solana = { path = "..", version = "0.12.0" } +solana = { path = "../core", version = "0.12.0" } solana-drone = { path = "../drone", version = "0.12.0" } solana-logger = { path = "../logger", version = "0.12.0" } solana-sdk = { path = "../sdk", version = "0.12.0" }