Los contratos inteligentes son un tipo de programa de software conceptualizado por Nick Szabo en 1994. Son programas de software que actúan de forma autónoma en Internet para ejecutar ciertas funciones para ayudar en transacciones económicas, acuerdos entre personas y empresas, y para impulsar aplicaciones.
Uno de los ejemplos originales que propuso Nick Szabo para la función de los contratos inteligentes fue servir como agentes de custodia autónomos. Por ejemplo, cuando dos partes estuvieran involucradas en una transacción, el comprador depositaría el dinero para el pago por adelantado en un contrato inteligente, luego el vendedor entregaría el producto o servicio acordado, y cuando el contrato inteligente viera esta entrega, le pagaría el dinero al vendedor, pero si no hubo entrega, devolvería el dinero al comprador. De esta manera, la transacción sería segura para ambas partes, pero no requeriría del uso de un tercero de confianza, como un banco o un notario, para realizar estas tareas.
Las blockchains son óptimas para los contratos inteligentes porque permiten que estos programas existan y funcionen de manera autónoma y descentralizada. Sin embargo, los contratos inteligentes solo pueden existir dentro de blockchains programables como Ethereum o Ethereum Classic.
Los programas de software que componen los contratos inteligentes se descentralizan cuando se envían a las blockchains porque se replican en todas las máquinas que participan en dichas redes.
Dado que los contratos inteligentes pueden impulsar aplicaciones, y debido a que cuando se envían a cadenas de bloques se descentralizan, estas aplicaciones se denominan aplicaciones descentralizadas o dapps.