The fundamental problem in digital record-keeping is to establish consensus on an update to a ledger, e.g., a payment. Consensus must be achieved in the presence of faults—situations in which some computers are offline or fail to function appropriately. Traditional centralized record-keeping systems rely on trust in a single entity to achieve consensus. Blockchains decentralize record-keeping, dispensing with the need for trust in a single entity, but some instead build a consensus based on the wasteful expenditure of computational resources (proof-of-work). An ideal method of consensus would be tolerant to faults, avoid the waste of computational resources, and be capable of implementing all individually rational transfers of value among agents. We prove a Blockchain Trilemma: any method of consensus, be it centralized or decentralized, must give up (i) fault-tolerance, (ii) resource-efficiency, or (iii) full transferability.