Ethereum: Porting Bitcoin Software to Plain C or Objective C
The Ethereum blockchain is based on the cryptographic framework known as Bitcoin, developed by Satoshi Nakamoto. Although Bitcoin software has been ported to various languages and platforms, including C++ and Boost, there have been attempts to rewrite the underlying cryptocurrency in plain ANSI C and Objective C.
Port to plain ANSI C
In 2009, a group of developers led by Mihir Patel attempted to rewrite the Bitcoin software in plain ANSI C. The goal of the project was to create a cryptographically secure open source implementation of the Bitcoin protocol. However, the project was met with considerable criticism and skepticism in the Bitcoin community.
The main reasons for this criticism are:
- Security: Plain ANSI C is not as secure as other languages such as C++ or Rust due to the lack of memory security features and built-in support for cryptographic primitives.
- Performance: plain ANSI C has a slower execution time compared to languages like C++ or Rust, which are designed to optimize performance.
- Complexity: The Bitcoin protocol is complex and requires a deep understanding of cryptography, hashing algorithms, and other underlying technologies.
Despite these problems, a simple port of ANSI C was never officially released as a separate Bitcoin implementation. However, some developers continued to maintain and update the code base over time.
Objective-C port
In 2011, a group of developers led by Richard M. Blanka attempted to rewrite the Bitcoin software in Objective-C. The goal of the project was to create a cryptographically secure, open-source implementation of the Bitcoin protocol that could be used on macOS, iOS, and watchOS devices.
The main objectives of this project were:
- Ease of Use

: Create a port of Objective-C that is easy to use and integrates with existing Apple frameworks.
- Security: Provide a more secure alternative to plain ANSI C and other languages.
- Performance: Optimize the performance of the Bitcoin protocol for mobile devices.
Although this project was partially successful, it ultimately fell short of safety and performance expectations compared to other alternatives.
Conclusion
Attempting to rewrite Bitcoin in plain ANSI C or Objective C did not yield a commercially viable solution that would be widely accepted in the cryptocurrency community. The reasons for this are complex and multifaceted, but include:
- Security: normal ANSI C and Objective-C lack built-in support for cryptographic primitives and other security functions required by modern cryptocurrencies.
- Performance: these languages have a slower execution time compared to languages like C++ or Rust.
- Complexity: The Bitcoin protocol is complex and requires a deep understanding of cryptography, hashing algorithms, and other underlying technologies.
As the cryptocurrency space continues to evolve, it will be interesting to see if alternative implementations emerge that better balance security, performance, and complexity.