Bem, há diversas áreas que podem ser exploradas, e para cada uma exige-se uma linguagem de programação diferente.
O importante para entender blockchain é entender o básico de computação (bits, bytes, estrutura de dados, redes de computadores) e posteriormente conceitos de criptografia (hashes criptográficos, assinaturas digitais, encoding, nonce, merkle tree, criptografia simétrica x criptografia assimétrica, chaves). Não é totalmente necessário entender o funcionamento interno dos algoritmos de criptografia em um primeiro momento, mas ao menos a compreensão de como funcionam, para que eles servem e quando utilizá-los.
Sobre as linguagens de programação, não há uma resposta exata:
- Desenvolver o blockchain em si:
-
Bitcoin
- Bitcoin core é escrito em C e C++
- btcd é escrito em golang
-
Ethereum
- geth é escrito em golang
- parity (node ethereum) é escrito em Rust
- Programação de smart contracts (programas autônomos que rodam dentro de um blockchain, ou utilizam blockchain como meio):
- Ethereum (https://github.com/ethereum/wiki/wiki/Programming-languages-intro)
- Solidity (de longe a mais usada e com sintaxe similar a javascript)
- Serpent (parecido com python)
- Bitcoin
- RSK (rsk.co)
No meu canal tem uma série com vários vídeos sobre conceitos de criptografia e blockchain: https://www.youtube.com/watch?v=vXPlzLNIObs&list=PLmDINmHIqrRon7iFo3p0bdZDMYoZ3lKUV
Para resumir:
- estudar conceitos básicos de computação
- estudar redes (principalmente sistemas distribuídos)
- estudar criptografia
- estudar como funciona um blockchain internamente. (e algoritmos de consenso pow e pos)
- estudar smart contracts / e ou protocolos de segunda camada como lightning network.
Espero ter ajudado.