Between 2013 and 2014, Vitalik Buterin introduced the Ethereum whitepaper, proposing to store programs on the blockchain. Users could then invoke these programs on nodes, allowing them to automatically execute transactions as agents on behalf of their creators without human involvement. This concept gave birth to smart contracts. Buterin believed that this mechanism was secure enough to carry out programmable transactions. This assumption proved to be a multi-billion-dollar mistake. In 2020 alone, security issues with smart contracts led to the evaporation of $90 billion worth of encrypted assets.
In Ethereum and its numerous imitators, each smart contract manages its own ledger of issued tokens. This means that there is not just one ledger on these blockchains. The native coin has one ledger, while each token has its own ledger. Are these decentralized distributed ledgers? The ledger for the native coin is not in dispute, but for the token ledger, we need to examine what truly constitutes decentralization.
Decentralization means that each bookkeeper (miner) independently decides the content of the ledger they record, instead of mechanically copying someone else’s ledger. This independence includes determining whether each transaction is legitimate and should be recorded. As long as there are no cheaters in the network, this method can prevent illegal transactions from becoming the consensus of the blockchain network, thus safeguarding asset security. If miners in a blockchain lack the ability to independently decide the legitimacy of each transaction, then the blockchain is not decentralized. Miners must rely on a centralized authority to determine the legality of each transaction, meaning all ledgers are controlled by a single center that can arbitrarily decide asset ownership, failing to provide security guarantees for users. In Ethereum’s smart contract transaction model, the ledger of smart contract tokens is managed by the contract rather than the miners. Each contract is issued by a single project party, and while miners record the data generated by the contract, they do not understand this data. They simply record what the contract demands. This transforms all miners from accountants into pens, with the project party commanding these pens. Therefore, the ledgers of these tokens are not decentralized but centralized, making them highly insecure.
Furthermore, Ethereum’s smart contracts cannot even be considered contracts. Yes, contracts can be executed through programs, but not every program execution constitutes a contract. Additional conditions must be met for a program’s execution to be considered a contract. For a blockchain acting as a decentralized ledger, it is crucial that transactions undergo verification. As Satoshi Nakamoto stated: “Don’t trust, verify.” This is a fundamental rule of blockchain, and any violation of it will inevitably lead to security issues. However, Ethereum does not verify the results of smart contract transactions but only the execution process of smart contracts. In Ethereum, when a user invokes a smart contract, nodes execute the contract, and as long as the smart contract returns successfully, the node deems the transaction legal and records it. What are the issues with this model? After all, smart contract invocations are initiated by users, so shouldn’t they accept the results of these invocations? This is the Ethereum way of thinking.
Legally, a contract is formed when both parties consent. Both parties must agree on the contributions and benefits for a contract to be established. When a user invokes a smart contract, what are they agreeing to? Are they accepting any results generated by the smart contract or the results claimed by the contract issuer? Most users are not programmers and cannot predict how a program will run, so they are clearly agreeing to the results claimed by the contract issuer. However, Ethereum cannot verify whether the execution results of smart contracts match the user’s expectations (i.e., the results claimed by the contract issuer) because Ethereum nodes lack this information. Therefore, every recorded smart contract transaction in Ethereum only proves that “the smart contract produced these results,” not that “both parties agreed to these results.” Blurring these two aspects can have fatal consequences.
Even worse, Ethereum stores the results of smart contract transactions as data for the contract. In other words, assets acquired from smart contracts are recorded in the contract’s own ledger, not the public ledger. Ethereum nodes do not validate the transfer of these assets. The transfer of these assets is handled and verified by the smart contract. Users cannot directly control these assets; it is the smart contract that controls them. This is akin to leaving the door open for theft. Consequently, Ethereum users are at the mercy of smart contracts, with no security guarantees when dealing with them. There is no transaction security because Ethereum cannot ensure that the results of contract execution meet user expectations, and there is no secure storage of value because smart contracts can transfer user assets without their consent.
Therefore, since its inception, Ethereum has experienced several security incidents related to smart contracts. In contrast, Bitcoin has never had any security incidents. The industry believes that the security issues with smart contracts stem from developer errors and negligence. Efforts have been made to standardize the development process of smart contracts, conduct formal verification of smart contracts, audit the security of code, and develop secure smart contract languages. However, the security issues with smart contracts fundamentally arise from the industry’s misunderstanding of decentralized contracts since Ethereum’s release, leading to inappropriate transaction models. Addressing this problem can eliminate the majority of security issues with smart contracts to date. Without resolving these issues, all current efforts cannot eliminate the security risks associated with smart contracts.