- How do I install kornrunner/ccxt in a Laravel application?
- Install it with Composer using composer require kornrunner/ccxt. There is no official Laravel service provider or facade, so you typically bind an ExchangeClient interface or wrapper class in your own service provider and load exchange credentials from config. Keep the package behind your own adapter rather than calling it directly from controllers.
- Does kornrunner/ccxt support Laravel 11 and PHP 8.1 or newer?
- The last release was in February 2021, which predates Laravel 9, 10, and 11 and modern PHP 8.1+ constraints. Composer may refuse to resolve it alongside a current Laravel app, so teams often need pinned dependencies, a forked constraint set, or --ignore-platform-reqs workarounds. Verify installation in CI against your exact PHP and Laravel versions before committing to it.
- Is kornrunner/ccxt still maintained?
- There have been no releases since February 2021, and the repository has low adoption signals such as roughly 37 stars. Cryptocurrency exchange REST APIs change frequently, so a frozen library can silently fail against exchanges it advertises. Plan for internal ownership of patching or forking if you adopt it.
- What operations can I perform with kornrunner/ccxt?
- It provides a CCXT-style unified REST interface for calls such as fetchTicker, fetchOrderBook, fetchBalance, fetchMarkets, createOrder, and cancelOrder. The client is synchronous and request/response oriented, so it works best inside queued jobs rather than HTTP request paths. It advertises support for more than 110 exchanges, but that list is a 2021 snapshot rather than a currently validated support matrix.
- How do I fetch a ticker or order book in Laravel using kornrunner/ccxt?
- Instantiate the exchange-specific class with any required credentials, then call methods like fetchTicker with a normalized symbol such as BTC/USDT. Wrap calls in a queued job with logging, timeouts, retries, and rate limiting instead of running them synchronously in a controller. Normalize symbols and handle exchange-specific exceptions in your adapter so domain code stays isolated from the library.
- Can I place trades and withdraw funds with kornrunner/ccxt?
- Order placement methods such as createOrder exist in the CCXT-style API, but trading and especially withdrawals carry high risk with an unmaintained library. Use least-privilege API keys, disable withdrawals where possible, and validate signing and order lifecycle on each exchange testnet before production. For withdrawal-capable keys, a maintained alternative or managed gateway is usually safer.
- How should I store exchange API keys when using kornrunner/ccxt?
- Avoid relying solely on .env for production trading credentials; use a secrets manager or encrypted storage and load keys at runtime. Grant only the permissions required for the specific exchange operations and restrict keys by IP where the exchange supports it. Never commit secrets to source control, and redact API keys and signatures from logs and exception reports.
- How do I avoid blocking requests and rate-limit errors in Laravel with kornrunner/ccxt?
- Run all exchange calls as queued jobs with bounded retries, exponential backoff, and idempotency keys rather than synchronously in HTTP requests. Centralize per-exchange rate limiting and add circuit breakers so one failing exchange cannot exhaust workers. Structured logging of exchange, symbol, latency, and outcome helps detect silent API drift.
- How do I test kornrunner/ccxt integrations before production?
- Validate request signing, nonce handling, and clock skew against each required exchange's sandbox or testnet. Mock HTTP responses in unit tests and run small read-only smoke tests against live endpoints before enabling trading. Because the library is stale, test every exchange and operation you depend on rather than assuming advertised support still works.
- What are the alternatives to kornrunner/ccxt for Laravel?
- Consider the official ccxt/ccxt PHP bindings if they meet your PHP and Laravel constraints, or run CCXT as a Python or Node sidecar service behind HTTP or gRPC. If you only need a few exchanges, thin direct HTTP clients may be lower risk than a stale abstraction. Whichever option you choose, define your own ExchangeClient and MarketData contracts first so the vendor is replaceable.