diff --git a/deploy-scripts/midprice_pino/Makefile b/deploy-scripts/midprice_pino/Makefile new file mode 100644 index 0000000000..2010996df7 --- /dev/null +++ b/deploy-scripts/midprice_pino/Makefile @@ -0,0 +1,48 @@ +# midprice_pino devnet build/deploy (run from this directory or: make -f deploy-scripts/midprice_pino/Makefile) +SHELL := /bin/bash + +MIDPRICE_MK_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) +# protocol-v2-deploy repo root (contains programs/midprice_pino, target/deploy) +PROTOCOL_V2_ROOT ?= $(abspath $(MIDPRICE_MK_DIR)../..) + +SOLANA_URL ?= https://api.devnet.solana.com + +# Optional for deploy-devnet (override on CLI: make deploy-devnet DEPLOYER_KEYPAIR=...) +DEPLOYER_KEYPAIR ?= +PROGRAM_KEYPAIR ?= +SOLANA_PATH ?= +DEVNET_ADMIN ?= +IDL_JSON ?= + +.PHONY: help build-devnet deploy-devnet update-devnet-idl + +help: + @echo "midprice_pino devnet" + @echo " make build-devnet Build with cargo build-sbf, copy artifacts to target/deploy" + @echo " make deploy-devnet solana program deploy (requires wallet — see below)" + @echo " make update-devnet-idl npx @solana-program/program-metadata write idl (needs idl.json)" + @echo "" + @echo "Variables:" + @echo " PROTOCOL_V2_ROOT=$(PROTOCOL_V2_ROOT) (repo root with programs/; override if different)" + @echo " SOLANA_URL=$(SOLANA_URL)" + @echo " IDL_JSON=$(IDL_JSON) (empty = deploy-scripts/midprice_pino/idl.json)" + @echo "Deploy keypairs:" + @echo " Program id: tests/fixtures/midprice_pino-keypair.json (override: PROGRAM_KEYPAIR=...)" + @echo " Payer: DEPLOYER_KEYPAIR=... or SOLANA_PATH + DEVNET_ADMIN" + @echo "IDL upload: default idl path is deploy-scripts/midprice_pino/idl.json (override: IDL_JSON=...)" + +build-devnet: + PROTOCOL_V2_ROOT="$(PROTOCOL_V2_ROOT)" bash ./build-devnet.sh + +deploy-devnet: + PROTOCOL_V2_ROOT="$(PROTOCOL_V2_ROOT)" SOLANA_URL="$(SOLANA_URL)" \ + DEPLOYER_KEYPAIR="$(DEPLOYER_KEYPAIR)" PROGRAM_KEYPAIR="$(PROGRAM_KEYPAIR)" \ + SOLANA_PATH="$(SOLANA_PATH)" DEVNET_ADMIN="$(DEVNET_ADMIN)" \ + bash ./deploy-devnet.sh + +update-devnet-idl: + PROTOCOL_V2_ROOT="$(PROTOCOL_V2_ROOT)" SOLANA_URL="$(SOLANA_URL)" \ + DEPLOYER_KEYPAIR="$(DEPLOYER_KEYPAIR)" PROGRAM_KEYPAIR="$(PROGRAM_KEYPAIR)" \ + SOLANA_PATH="$(SOLANA_PATH)" DEVNET_ADMIN="$(DEVNET_ADMIN)" \ + IDL_JSON="$(IDL_JSON)" \ + bash ./update-devnet-idl.sh diff --git a/deploy-scripts/midprice_pino/build-devnet.sh b/deploy-scripts/midprice_pino/build-devnet.sh new file mode 100755 index 0000000000..9017b02f3e --- /dev/null +++ b/deploy-scripts/midprice_pino/build-devnet.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# Build midprice_pino and copy .so + program keypair to target/deploy. +# PROTOCOL_V2_ROOT: protocol-v2-deploy repo root with programs/midprice_pino (defaults to ../.. from this script). +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +if [[ -z "${PROTOCOL_V2_ROOT:-}" ]]; then + _default="$SCRIPT_DIR/../.." + if [[ ! -d "$_default/programs/midprice_pino" ]]; then + echo "ERROR: PROTOCOL_V2_ROOT is not set and programs/midprice_pino not found under $_default" >&2 + echo "Set PROTOCOL_V2_ROOT to your protocol-v2-deploy repo root (directory containing programs/)." >&2 + exit 1 + fi + PROTOCOL_V2_ROOT="$(cd "$_default" && pwd)" +fi + +ROOT="$(cd "$PROTOCOL_V2_ROOT" && pwd)" +MIDPRICE_DIR="$ROOT/programs/midprice_pino" + +if [[ ! -d "$MIDPRICE_DIR" ]]; then + echo "ERROR: programs/midprice_pino not found under $ROOT" >&2 + exit 1 +fi + +echo "Building midprice_pino in $MIDPRICE_DIR..." +mkdir -p "$ROOT/target/deploy" +(cd "$MIDPRICE_DIR" && cargo build-sbf --tools-version v1.52) + +cp "$MIDPRICE_DIR/target/deploy/midprice_pino.so" "$ROOT/target/deploy/midprice_pino.so" +echo "Copied -> $ROOT/target/deploy/midprice_pino.so" + +if [[ -f "$MIDPRICE_DIR/target/deploy/midprice_pino-keypair.json" ]]; then + cp "$MIDPRICE_DIR/target/deploy/midprice_pino-keypair.json" "$ROOT/target/deploy/midprice_pino-keypair.json" + echo "Copied -> $ROOT/target/deploy/midprice_pino-keypair.json" +fi diff --git a/deploy-scripts/midprice_pino/deploy-devnet.sh b/deploy-scripts/midprice_pino/deploy-devnet.sh new file mode 100755 index 0000000000..785b4675f5 --- /dev/null +++ b/deploy-scripts/midprice_pino/deploy-devnet.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash +# Deploy midprice_pino.so to devnet. +# PROTOCOL_V2_ROOT: protocol-v2-deploy repo root (defaults to ../.. from this script; same as Makefile). +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +if [[ -z "${PROTOCOL_V2_ROOT:-}" ]]; then + _default="$SCRIPT_DIR/../.." + if [[ ! -d "$_default/programs/midprice_pino" ]]; then + echo "ERROR: PROTOCOL_V2_ROOT is not set and programs/midprice_pino not found under $_default" >&2 + echo "Set PROTOCOL_V2_ROOT to your protocol-v2-deploy repo root (directory containing programs/)." >&2 + exit 1 + fi + PROTOCOL_V2_ROOT="$(cd "$_default" && pwd)" +fi + +ROOT="$(cd "$PROTOCOL_V2_ROOT" && pwd)" +SO="$ROOT/target/deploy/midprice_pino.so" + +if [[ ! -f "$SO" ]]; then + echo "ERROR: Missing $SO — run make build-devnet first" >&2 + exit 1 +fi + +SOLANA_URL="${SOLANA_URL:-https://api.devnet.solana.com}" + +# Program address comes from this keypair (same as bankrun tests/fixtures). +# Override: PROGRAM_KEYPAIR=... for a different program id keypair. +if [[ -n "${PROGRAM_KEYPAIR:-}" ]]; then + PROG_KEY="$PROGRAM_KEYPAIR" +else + PROG_KEY="$ROOT/tests/fixtures/midprice_pino-keypair.json" +fi + +if [[ -n "${DEPLOYER_KEYPAIR:-}" ]]; then + PAYER_KEY="$DEPLOYER_KEYPAIR" +elif [[ -n "${SOLANA_PATH:-}" && -n "${DEVNET_ADMIN:-}" ]]; then + PAYER_KEY="${SOLANA_PATH}/${DEVNET_ADMIN}" +else + echo "ERROR: Set DEPLOYER_KEYPAIR, or both SOLANA_PATH and DEVNET_ADMIN (payer keypair)." >&2 + exit 1 +fi + +if [[ ! -f "$PROG_KEY" ]]; then + echo "ERROR: Program keypair not found: $PROG_KEY" >&2 + exit 1 +fi +if [[ ! -f "$PAYER_KEY" ]]; then + echo "ERROR: Deployer keypair not found: $PAYER_KEY" >&2 + exit 1 +fi + +echo "Deploying midprice_pino.so to $SOLANA_URL" +echo "Program id keypair (--program-id): $PROG_KEY" +echo "Deployer / fee payer (--keypair): $PAYER_KEY" + +exec solana program deploy \ + --program-id "$PROG_KEY" \ + "$SO" \ + --url "$SOLANA_URL" \ + --keypair "$PAYER_KEY" diff --git a/deploy-scripts/midprice_pino/update-devnet-idl.sh b/deploy-scripts/midprice_pino/update-devnet-idl.sh new file mode 100755 index 0000000000..e021a30262 --- /dev/null +++ b/deploy-scripts/midprice_pino/update-devnet-idl.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +# Upload midprice_pino IDL to on-chain program metadata (devnet) via program-metadata CLI. +# Requires: idl.json (default: next to this script), payer keypair, devnet RPC. +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +if [[ -z "${PROTOCOL_V2_ROOT:-}" ]]; then + _default="$SCRIPT_DIR/../.." + if [[ ! -d "$_default/programs/midprice_pino" ]]; then + echo "ERROR: PROTOCOL_V2_ROOT is not set and programs/midprice_pino not found under $_default" >&2 + exit 1 + fi + PROTOCOL_V2_ROOT="$(cd "$_default" && pwd)" +fi + +ROOT="$(cd "$PROTOCOL_V2_ROOT" && pwd)" +SOLANA_URL="${SOLANA_URL:-https://api.devnet.solana.com}" + +if [[ -n "${PROGRAM_KEYPAIR:-}" ]]; then + PROG_KEY="$PROGRAM_KEYPAIR" +else + PROG_KEY="$ROOT/tests/fixtures/midprice_pino-keypair.json" +fi + +if [[ -n "${DEPLOYER_KEYPAIR:-}" ]]; then + PAYER_KEY="$DEPLOYER_KEYPAIR" +elif [[ -n "${SOLANA_PATH:-}" && -n "${DEVNET_ADMIN:-}" ]]; then + PAYER_KEY="${SOLANA_PATH}/${DEVNET_ADMIN}" +else + echo "ERROR: Set DEPLOYER_KEYPAIR, or both SOLANA_PATH and DEVNET_ADMIN (payer keypair)." >&2 + exit 1 +fi + +IDL_JSON="${IDL_JSON:-$SCRIPT_DIR/idl.json}" + +if [[ ! -f "$PROG_KEY" ]]; then + echo "ERROR: Program keypair not found: $PROG_KEY" >&2 + exit 1 +fi +if [[ ! -f "$PAYER_KEY" ]]; then + echo "ERROR: Deployer keypair not found: $PAYER_KEY" >&2 + exit 1 +fi +if [[ ! -f "$IDL_JSON" ]]; then + echo "ERROR: IDL file not found: $IDL_JSON" >&2 + echo "Set IDL_JSON=/path/to/idl.json or add deploy-scripts/midprice_pino/idl.json" >&2 + exit 1 +fi + +PROGRAM_ID="$(solana-keygen pubkey "$PROG_KEY")" + +echo "Writing IDL to program metadata on $SOLANA_URL" +echo " program: $PROGRAM_ID" +echo " idl: $IDL_JSON" +echo " payer: $PAYER_KEY" + +exec npx @solana-program/program-metadata@latest write idl "$PROGRAM_ID" "$IDL_JSON" \ + -k "$PAYER_KEY" \ + --rpc "$SOLANA_URL" \ + --format json diff --git a/programs/midprice_pino/Cargo.lock b/programs/midprice_pino/Cargo.lock new file mode 100644 index 0000000000..6bc711f87a --- /dev/null +++ b/programs/midprice_pino/Cargo.lock @@ -0,0 +1,410 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "rand_core", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "five8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "059c31d7d36c43fe39d89e55711858b4da8be7eb6dabac23c7289b1a19489406" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "libc" +version = "0.2.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "midprice_book_view" +version = "0.1.0" + +[[package]] +name = "midprice_pino" +version = "0.1.0" +dependencies = [ + "midprice_book_view", + "pinocchio", + "pinocchio-log", + "solana-account-view", + "solana-address", + "solana-pubkey", +] + +[[package]] +name = "pinocchio" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06810dac15a4ef83d3dabdb4f2f22fb39c9adff669cd2781da4f716510a647c" +dependencies = [ + "solana-account-view", + "solana-address", + "solana-define-syscall 4.0.1", + "solana-instruction-view", + "solana-program-error", +] + +[[package]] +name = "pinocchio-log" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd11022408f312e6179ece321c1f7dc0d1b2aa7765fddd39b2a7378d65a899e8" +dependencies = [ + "pinocchio-log-macro", +] + +[[package]] +name = "pinocchio-log-macro" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69fb52edb3c5736b044cc462b0957b9767d0f574d138f4e2761438c498a4b467" +dependencies = [ + "quote", + "regex", + "syn 1.0.109", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + +[[package]] +name = "solana-account-view" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f37ca34c37f92ee341b73d5ce7c8ef5bb38e9a87955b4bd343c63fa18b149215" +dependencies = [ + "solana-address", + "solana-program-error", +] + +[[package]] +name = "solana-address" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500b83d41bda401b84ebff6033e2e7bc828870ea444805112d15fc0a3e470b9c" +dependencies = [ + "curve25519-dalek", + "five8", + "five8_const", + "sha2-const-stable", + "solana-define-syscall 5.0.0", + "solana-program-error", + "solana-sanitize", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-define-syscall" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" + +[[package]] +name = "solana-define-syscall" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03aacdd7a61e2109887a7a7f046caebafce97ddf1150f33722eeac04f9039c73" + +[[package]] +name = "solana-hash" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8064ea1d591ec791be95245058ca40f4f5345d390c200069d0f79bbf55bfae55" + +[[package]] +name = "solana-instruction-view" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60147e4d0a4620013df40bf30a86dd299203ff12fcb8b593cd51014fce0875d8" +dependencies = [ + "solana-account-view", + "solana-address", + "solana-define-syscall 4.0.1", + "solana-program-error", +] + +[[package]] +name = "solana-program-error" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" + +[[package]] +name = "solana-pubkey" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b06bd918d60111ee1f97de817113e2040ca0cedb740099ee8d646233f6b906c" +dependencies = [ + "solana-address", +] + +[[package]] +name = "solana-sanitize" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" + +[[package]] +name = "solana-sha256-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" +dependencies = [ + "sha2", + "solana-define-syscall 4.0.1", + "solana-hash", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" diff --git a/programs/midprice_pino/Cargo.toml b/programs/midprice_pino/Cargo.toml new file mode 100644 index 0000000000..cf66c57336 --- /dev/null +++ b/programs/midprice_pino/Cargo.toml @@ -0,0 +1,26 @@ +[workspace] + +[package] +name = "midprice_pino" +version = "0.1.0" +edition = "2021" + +[features] +default = [] + +[lib] +crate-type = ["cdylib", "lib"] +name = "midprice_pino" + +[dependencies] +pinocchio = "0.10.2" +pinocchio-log = "0.5" +midprice_book_view = { path = "../../crates/midprice_book_view" } +solana-pubkey = { version = "4", default-features = false } +# Enable curve25519 so Address::try_find_program_address is available (on Solana it uses syscall instead). +# decode enables pubkey!("...") / Address::from_str_const for hardcoded IDs. +solana-address = { version = "2.2", features = ["curve25519", "decode"] } +solana-account-view = { version = "1.0", optional = true, default-features = false } + +[dev-dependencies] +solana-account-view = "1.0"