<p>Writing a fully fledged cryptocurrency in an <em>interpreted</em> language will see many performance issues. The difference is not whether you implement the code in a high or low level language, it’s whether that language is compiled or interpreted.</p>

<p>JavaScript was traditionally an interpreted language, but many new JS engines (including Google’s V8, used in Node.js as well as Chromium) are actually Just-In-Time (JIT) compilers, meaning source code is taken as input and compiled to machine code at runtime. This is why we see many Bitcoin and other cryptocurrency libraries in JavaScript: performance gains of compiling to machine code, but using a high level language for what some consider a better development experience. Python, on the other hand, may be a poor choice, depending on your runtime (I know there are now Python environments that can compile to machine code, but it is mostly an interpreted language today)</p>

<p>Wallet software may be implemented in different languages to resolve concerns about portability+ease of setup, as performance should be less of an issue here than it would for software designed for validating transactions and mining.</p>

CC BY-SA 3.0
2017-12-19T23:18:42.430Z
There is no bright-line distinction between "compiled" and "interpreted" programming languages. In any case, such a distinction would not be a property of the *language*, but rather of the *implementation* of the language. Since a language can have multiple different implementations, you can't attach such a label to the *language* as a whole. Also, Python has always compiled to an internal bytecode, which is no less compiled than say Java is. Python would be a perfectly reasonable choice to write wallet software, it can handle databases just fine and hashing is implemented in native code.
Greg Hewgill
CC BY-SA 3.0
2017-12-19T01:50:15.807Z
2017-12-19T01:56:53.510Z
2017-12-19T01:56:53.510Z
Ivan G.
<p>There's no reason why a cryptocurrency <em>needs</em> to be written in a low level language. It's just that Satoshi's original implementation of Bitcoin happened to be in C++ (perhaps that was the language he/they felt most comfortable with), so now a lot of people seem to think it <em>has</em> to be that way. It doesn't.</p>

<p>You could certainly implement a cryptocurrency (either an existing one, or a totally newly designed one), in Python, or Javascript, or pretty much anything else. Wallet software is mostly managing a big database with a bunch of hashing.</p>

CC BY-SA 3.0
2017-12-19T01:27:34.010Z
2017-12-19T01:27:34.010Z
Greg Hewgill
<p>Some cryptocurrencies/systems by implementation language:</p>
<p><strong>C++</strong></p>
<p><a href="https://github.com/bitcoin/bitcoin/tree/master/src" rel="nofollow noreferrer">Bitcoin</a> and derivatives</p>
<p><strong>Erlang</strong></p>
<p><a href="https://github.com/aeternity/aeternity" rel="nofollow noreferrer">Aeternity</a>, <a href="https://github.com/ArweaveTeam/arweave/tree/master/apps/arweave/src" rel="nofollow noreferrer">Arweave</a></p>
<p><strong>Go</strong></p>
<p><a href="https://github.com/ethereum/go-ethereum" rel="nofollow noreferrer">Ethereum</a></p>
<p><strong>Haskell</strong></p>
<p><a href="https://github.com/input-output-hk/cardano-node" rel="nofollow noreferrer">Cardano</a></p>
<p><strong>Python</strong></p>
<p><a href="https://github.com/Chia-Network/chia-blockchain" rel="nofollow noreferrer">Chia</a></p>
<p><strong>Rust</strong></p>
<p><a href="https://github.com/paritytech/polkadot" rel="nofollow noreferrer">Polkadot</a> and derivatives</p>
<p>Feel free to update this answer...</p>

CC BY-SA 4.0
2021-12-09T17:23:18.543Z
2021-12-09T17:23:18.543Z
Lee
<p>I'm curious from a performance perspective if writing a cryptocurrency from the ground up in a language other than C/C++ be stupid?</p>

<p>For example, if I wanted to write a cryptocurrency and protocol in Python or Nodejs, would I run into performance and speed issues later down the rode since these languages aren't as "low-level"?</p>

<p>Or are there any other issues besides performance I would run into?</p>

<p>Any thoughts are appreciated. Thanks</p>

<development><protocol><currencies><cryptography>
Would writing one's own cryptocurrency in a language other than C/C++ be stupid?
Ben B
# Would writing one's own cryptocurrency in a language other than C/C++ be stupid?

(Asked by: username_0 on 2017-12-19)

I'm curious from a performance perspective if writing a cryptocurrency from the ground up in a language other than C/C++ be stupid?

For example, if I wanted to write a cryptocurrency and protocol in Python or Nodejs, would I run into performance and speed issues later down the rode since these languages aren't as "low-level"?

Or are there any other issues besides performance I would run into?

Any thoughts are appreciated. Thanks

**Tags:** development, protocol, currencies, cryptography


---

## 3 answers

### Answer by username_1 on 2017-12-19. Score: 1

Writing a fully fledged cryptocurrency in an *interpreted* language will see many performance issues. The difference is not whether you implement the code in a high or low level language, it’s whether that language is compiled or interpreted.

JavaScript was traditionally an interpreted language, but many new JS engines (including Google’s V8, used in Node.js as well as Chromium) are actually Just-In-Time (JIT) compilers, meaning source code is taken as input and compiled to machine code at runtime. This is why we see many Bitcoin and other cryptocurrency libraries in JavaScript: performance gains of compiling to machine code, but using a high level language for what some consider a better development experience. Python, on the other hand, may be a poor choice, depending on your runtime (I know there are now Python environments that can compile to machine code, but it is mostly an interpreted language today)

Wallet software may be implemented in different languages to resolve concerns about portability+ease of setup, as performance should be less of an issue here than it would for software designed for validating transactions and mining.

> **Comments:**
> **username_2**: There is no bright-line distinction between "compiled" and "interpreted" programming languages. In any case, such a distinction would not be a property of the *language*, but rather of the *implementation* of the language. Since a language can have multiple different implementations, you can't attach such a label to the *language* as a whole. Also, Python has always compiled to an internal bytecode, which is no less compiled than say Java is. Python would be a perfectly reasonable choice to write wallet software, it can handle databases just fine and hashing is implemented in native code.  

---

### Answer by username_2 on 2017-12-19. Score: 1

There's no reason why a cryptocurrency *needs* to be written in a low level language. It's just that Satoshi's original implementation of Bitcoin happened to be in C++ (perhaps that was the language he/they felt most comfortable with), so now a lot of people seem to think it *has* to be that way. It doesn't.

You could certainly implement a cryptocurrency (either an existing one, or a totally newly designed one), in Python, or Javascript, or pretty much anything else. Wallet software is mostly managing a big database with a bunch of hashing.


---

### Answer by username_3 on 2021-12-09. Score: 0

Some cryptocurrencies/systems by implementation language:

**C++**

[Bitcoin](https://github.com/bitcoin/bitcoin/tree/master/src) and derivatives

**Erlang**

[Aeternity](https://github.com/aeternity/aeternity), [Arweave](https://github.com/ArweaveTeam/arweave/tree/master/apps/arweave/src)

**Go**

[Ethereum](https://github.com/ethereum/go-ethereum)

**Haskell**

[Cardano](https://github.com/input-output-hk/cardano-node)

**Python**

[Chia](https://github.com/Chia-Network/chia-blockchain)

**Rust**

[Polkadot](https://github.com/paritytech/polkadot) and derivatives

Feel free to update this answer...


---

