farbcode/laravel-evm
Simple, reliable Ethereum integration for Laravel with EIP-1559 fees, queued async transactions, nonce tracking, and events for every step from queued to mined. Requires PHP 8.4+ and ext-gmp.
Architecture fit. farbcode/laravel-evm is a Laravel-native EVM integration: service provider, facade, config publishing, queue-backed transaction submission, Laravel events (TxQueued, TxBroadcasted, TxMined, TxFailed, and now TxReverted), plus nonce and EIP-1559 fee strategies. That makes it a reasonable fit for a Laravel application that needs occasional contract reads and asynchronous contract writes without introducing a separate blockchain service. It is not an indexer, custody platform, or high-throughput transaction engine. The package’s scope should be treated as “Laravel-friendly EVM RPC client with queued writes,” not as chain infrastructure.
Integration feasibility. Installation is straightforward for a greenfield Laravel 11/12/13 application on PHP 8.4 with ext-gmp: Composer install, config publish, env-based RPC URL/chain ID/private key, then Evm::at() and sendAsync(). The hard constraints are real, though: PHP >= 8.4 and ext-gmp narrow the hosting matrix, and the env-based private key is suitable only for development or tightly controlled pilots. Production use needs a KMS/HSM-backed Signer implementation and an external secrets path. The queue dependency is also architectural: writes require a correctly configured worker, timeout, retry policy, and dead-letter/monitoring path.
Technical risk. Adoption is the dominant risk: 4 GitHub stars, 0 dependents, a v0.x version line, and what appears to be a small maintainer base. The v0.4.0 changelog is both reassuring and cautionary: it documents a substantial audit, a jump from 14 to 165 tests, and fixes for silent wrong-value bugs, reverted transactions being reported as successful, credential leakage into logs, nonce-cache wedging, and queue-job safety. That is a credible maturity step, but it is also evidence that earlier versions had defects in exactly the areas that matter for money movement. The package is now more trustworthy than its star count suggests, but it is not yet proven by third-party production usage.
Key questions.
evm_transactions tracking table provide enough idempotency and reconciliation for finance/audit requirements?TPM recommendation. Approve for a bounded pilot in a greenfield Laravel service with read-only calls first, then testnet writes, then low-value production writes behind caps and reconciliation. Do not make it the foundation of high-value payment flows or multi-chain treasury operations until the key-management, reorg/finality, and operational-support questions are answered.
Stack fit. The package aligns well with a standard Laravel stack: Laravel queues for async submission, events for workflow state, facades for ergonomics, and config/env for RPC endpoints. It expects Redis or database queues and a stable RPC provider. The team must also accept PHP 8.4 and ext-gmp as platform requirements. For applications already on Laravel 11+ and comfortable operating queue workers, the fit is good; for older PHP/Laravel estates, the fit is poor.
Migration path. Treat this as a greenfield integration rather than a drop-in replacement for an existing blockchain client. Wrap the package behind an internal interface such as ChainWriter/ChainReader so facades and package-specific types do not leak across the domain. Persist the sendAsync() job/transaction ID and reconcile it against receipts and the optional evm_transactions table. If an existing service already submits transactions, migrate only read paths first; keep the current writer until the new path has proven reconciliation and failure handling.
Compatibility. The package is explicitly compatible with Laravel 11, 12, and 13 and PHP 8.4+, with ext-gmp declared. The v0.4.0 release contains behaviour changes that affect application correctness: integers are now decimal strings, at() returns a new handle instead of mutating a singleton, fee defaults changed, and nonce/fee extension points changed. Any application code doing native PHP arithmetic on returned values must move to bcmath/GMP. Pin the package version, read UPGRADING.md before every minor upgrade, and keep Laravel/PHP versions inside the tested matrix.
Sequencing.
evm-send queue, worker timeout, retry guard, monitoring, and secret storage; confirm the GMP extension in all environments.sendAsync(), receipts, TxMined/TxReverted, nonce recovery, fee bumps, and replacement transactions.Signer and document key-rotation and incident procedures.Maintenance. The package is small and MIT-licensed, but v0.x with a single visible maintainer means the team should budget for dependency ownership. Expect occasional breaking changes, require changelog review on upgrade, and consider vendoring/forking only if the project becomes business-critical. The v0.4.0 audit and expanded test suite reduce maintenance risk, but they do not eliminate the bus-factor risk.
Support. Support appears to be community/documentation-based: README, docs site, changelog, releases, and GitHub issues. There is no evident commercial SLA. For production money movement, the team needs an internal on-call owner who understands Ethereum transaction lifecycle, not just Laravel. Escalation to the maintainer should be treated as best-effort.
Scaling. Throughput is bounded less by Laravel than by RPC rate limits, queue worker capacity, and the package’s one-transaction-at-a-time-per-signing-address lock. A single signing address will serialize writes; scale by using multiple signing addresses, separate queues, and disciplined nonce management. Log queries need chunking (evm.logs.max_chunk) and should not be used as a general-purpose indexer. Receipt polling and fee bumping add load during congestion, so queue concurrency and RPC quotas must be sized for failure, not just happy-path volume.
Failure modes. The important ones are: RPC provider outage or credential exhaustion; nonce desynchronization and stuck queues; dropped or replaced transactions; reverted transactions that must not be credited; fee under/overpayment during base-fee spikes; queue worker timeout killing a broadcast job mid-poll; secret leakage through logs or exception traces; and precision errors if callers do arithmetic on decimal strings with native ints. The package now types RPC errors and separates revert from transport failure, which helps, but the application still needs idempotency keys, reconciliation jobs, alerting on TxFailed/TxReverted, and a manual intervention path for stuck nonces.
Ramp-up. The team needs more than Laravel familiarity: EIP-1559 fee mechanics, nonce semantics, receipt status versus inclusion, ABI encoding, event topic filtering, and chain finality. The decimal-string return type is a deliberate operational change; developers must use bcmath/GMP consistently. A realistic ramp-up is one experienced backend engineer for two to three weeks to build the pilot, plus ops time for queue/RPC monitoring and a security review of key handling.
How can I help you explore Laravel packages today?