kornrunner/ethereum-util
kornrunner/ethereum-util is a lightweight PHP library for common Ethereum utilities, including address validation, EIP-55 checksum handling, and conversion helpers for working with keys and hex data in PHP applications.
composer require replaces hand-rolled hashing/checksum/unit math, which is exactly the kind of code where subtle bugs (bad checksum comparison, wrong decimals, off-by-one on gwei) become user-facing incidents. Cost of adoption is near zero; cost of a homegrown version is maintenance plus audit.ext-secp256k1, GMP quirks) and no sidecar service. That simplifies CI, Docker images, and shared-hosting/legacy deployment targets.Adopt when:
EthereumUtils interface, so the vendor can be swapped later.Look elsewhere when:
Mitigations if adopted: pin the exact version, wrap it behind an internal interface, add our own regression tests against known Ethereum test vectors, and keep a documented fallback (kornrunner/keccak, simplito/elliptic-php, or a managed key service) for the signing paths.
For executives: This is a small, MIT-licensed, pure-PHP library that gives our Laravel stack the Ethereum plumbing we would otherwise hand-write or buy through a vendor. Adoption cost is one Composer dependency and no infrastructure change. It reduces the risk of the quiet, expensive bugs — mis-validated addresses, wrong decimal handling, broken signature checks — that turn into lost funds or support escalations. The trade-off is maturity: it is a low-adoption, single-maintainer project, so we pin the version, wrap it in our own interface, and keep an exit path. Net: low cost, contained risk, faster delivery of any feature that touches wallets, tokens, or on-chain payments.
For engineering: Narrow, composable, MIT-licensed, actively released. It handles the tedious correctness-critical bits — EIP-55 checksums, keccak-256, unit conversion, selectors — so we don't reimplement them. No extensions, no sidecar, easy to containerize. It is not an RPC or ABI client: we still own the transport and contract layer. Recommended integration: pin the version, hide it behind an internal service/interface, cover it with known-vector tests, and treat key-handling paths as requiring additional review or an external signer before we ship them.
How can I help you explore Laravel packages today?