Ethereum: Porting Bitcoin Software to Plain C or Objective C
The Ethereum blockchain is built on top of the cryptographic system known as Bitcoin, which was created by Satoshi Nakamoto. While the 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.
A Plain ANSI C Port
In 2009, a team of developers led by Mihir Patel attempted to rewrite the Bitcoin software in plain ANSI C. The project’s goal was to create a cryptographically secure, open-source implementation of the Bitcoin protocol. However, the project has received significant criticism and skepticism within the Bitcoin community.
The main reasons for this criticism were:
- Security: Plain ANSI C is not as secure as other languages such as C++ or Rust, as it lacks secure memory features and built-in support for cryptographic primitives.
- Performance
: Plain ANSI C has slower execution times compared to languages like C++ or Rust, which are designed to optimize performance.
- Complexity
: The Bitcoin protocol is complex and requires deep knowledge of cryptography, hashing algorithms, and other core technologies.
Despite these challenges, a plain ANSI C port was never officially released as a standalone Bitcoin implementation. However, some developers continued to maintain and update the codebase over time.
Objective-C Port
In 2011, a team of developers led by Richard M. Blank attempted to rewrite the Bitcoin software in Objective-C. The project aimed to create a cryptographically secure, open-source implementation of the Bitcoin protocol that could be used on macOS, iOS, and watchOS devices.
The main goals of this project were:
- Ease of Use: To create an Objective-C port that was easy to use and integrate with existing Apple systems.
- Security: A more secure alternative to plain ANSI C and other languages.
- Performance: To optimize the performance of the Bitcoin protocol for mobile devices.
While this project was partially successful, it ultimately lacked security and performance compared to other alternatives.
Conclusion
Attempts to rewrite Bitcoin in plain ANSI C or Objective C have not yielded a commercially viable solution that would be widely adopted by the cryptocurrency community. The reasons for this are complex and multifaceted, but include:
- Security: Plain ANSI C and Objective-C lack built-in support for cryptographic primitives and other security features required for modern cryptocurrencies.
- Performance: These languages have slower execution times compared to languages like C++ or Rust.
- Complexity: The Bitcoin protocol is complex and requires a deep understanding of cryptography, hashing algorithms, and other core 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.