A choice of programming language is not the be-all and end-all of smart contract development. But it does influence the security, efficiency and accessibility of blockchain applications.
Each language comes with its own set of capabilities and limitations that can impact how contracts are executed, the potential for vulnerabilities, and the ease of finding and fixing errors.
Algorand is becoming the first layer-1 blockchain to adopt Python as its canonical language, in what the Algorand Foundation Chief Technology Officer John Woods calls a “seismic change.”
“Python is a massive step forward on the roadmap towards removing all barriers to entry for developers,” said Woods.
With over 10 million developers worldwide, it’s perhaps surprising that the language has been historically overlooked by smart contract platforms, given that the total pool of specialized smart contract developers remains relatively tiny.
Read more: Electric Capital finds veteran Web3 devs are on the rise
Mariano Dominguez, software developer at Vestige.fi, an Algorand-based DeFi dapp, told Blockworks there are a few reasons for this.
For one, “most chains that have a smart contract execution layer operate in a resource constraint scenario that isn’t typical in modern development environments,” Dominguez said. “Because of this, it’s oftentimes easier and cheaper to build a Domain Specific Language (so Solidity, PyTEAL/TEAL, or Move for example), than it is to integrate a “normal” language since you can exercise these limitations from the get go.”
TEAL was Algorand’s earlier smart contract language and PyTEAL was a mechanism to call TEAL instructions from a Python file.
The difference now, the Foundation told Blockworks, is that native Python is compiled to the bytecode of the Algorand Virtual Machine (AVM), making it compatible with Python-native tooling, including testing suites.
That sets it apart from both PyTEAL and languages like Vyper for the EVM, which are only “Python-like.”
Read more: Move Chains are making moves
However, Dominguez added, Python’s “simplistic nature…makes it hard to adapt to a blockchain context.”*
That simplicity is a double-edged sword, agreed Deian Stefan, co-founder and chief scientist at Cubist, which specializes in developer tooling for cross-chain interoperability.
“I think it’s fair to say the barrier to entry for the average Python developer is lower,” Stefan told Blockworks. However, he added, “from our experience working with different teams in the ecosystem: It’s not [yet] clear that the barrier is the language so much as everything around it.”
Stefan finds technical factors related to core platform performance, the ease of end-user onboarding, as well as non-technical factors like liquidity and network effects as being more significant.
While Algorand offers technological advantages like high throughput and low transaction fees, the network has historically struggled to attract a critical mass of compelling use cases and dapps, despite its strong roots in foundational cryptography and theoretical computer science.
Algorand’s latest effort, AlgoKit 2.0, is an attempt to “build tools that meet devs where they are,” Dominguez said, estimating that for a skilled Python dev, time needed to make the jump to writing smart contracts would shrink from “weeks” to “a matter of hours.”
It also helps Vestige’s own business, enabling the dapp to integrate a new dex written in Python for Algorand within days, or even quicker with access to the source code, he said.
“At the end of the day, the faster you can go from idea to product, the more things you can try out and the more innovation can occur,” Dominguez said.
But will it be safe?
Dean Tribble, CEO of smart contract platform focused on Javascript, Agoric, has his doubts.
“It’s a non-starter from a security perspective,” Tribble told Blockworks, citing technical reasons that Python is widely used for data analysis by the likes of Google, but not for applications managing trillions of dollars.
Read more: Solving Web3’s developer problem: Web2 remains hesitant
“We’ve already paid $10 billion dollars in losses for the current Solidity DeFi contracts that have been battle tested and survived,” Tribble said. “This is not to suggest we should be afraid to use contracts out there — they’ve paid the price (and it’s a steep check!) — but doing new, innovative work is very dangerous.”
For both adoption and security, the ability to use existing libraries and design patterns like battle-tested OpenZeppelin contracts in Solidity is key to the success of any language, Cubist’s Stefan said, noting that nuts and bolts factors like securely managing cryptographic keys, testing infrastructure deployments and executing upgrades are more important in practice.
Read more: Stellar sparks smart contract upgrade — and it’s not an EVM
AlgoKit 2.0 ships with a new templating system, a comprehensive library of smart contract templates, and all necessary infrastructure to run applications locally, according to the Algorand Foundation.
The hope is to court a range of developers, from students fresh out of computer science classes to advanced AI and machine learning researchers.
For dapp users, the chain, programming language or other technical factors shouldn’t matter, according to Dominguez. What does is “that the app they’re using solves the need that they have.”
“I think with Algorand the type of products and solutions that can be built are on par, and in some cases even better, than those that employ legacy systems,” Dominguez said, pointing to real estate tokenization platform Lofty as an example, where “people can invest in individual properties that they proceed to own as a legal DAO, without going through a custodian.”
Customers of these dapps will care about security, whether or not they understand the technical underpinnings. There, Tribble was skeptical.
“It is not likely to me that Python will ever be a language that you could run robustly on a blockchain,” the Agoric CEO said.
As for the number of Python developers? It’s a non-issue, he said: “Most Python developers already know JavaScript!”
*Such as the lack of static typing and uint math — arithmetic operations using unsigned integers to avoid negative numbers.