Current blockchain systems do not scale with the network resources. Sharding, as a promising proposal to achieve horizontal scalability, fail to maintain security of the system in the presence of adaptive adversaries. This talk will cover an emerging paradigm of designing scalable and secure blockchain protocols using error correcting codes. Specifically, we consider the following two problems 1) transaction verification, and 2) verifying data availability for light clients. For transaction verification, we propose PolyShard that creates coded shard ledgers and input transactions using Lagrange polynomial interpolation. PolyShard scales system throughput with the network size, while maintaining the security of verification results via Reed-Solomon decoding. For the problem of verifying data availability, we propose a novel cryptographic accumulator named Coded Merkle Tree (CMT) to commit a block. CMT iteratively encodes a block and the hashes of its chunks using a family of regular LDPC codes, into a constant number of hash values that are stored in the block header. CMT enables verifying the availability of a block with constant number of samples, a liner decoding complexity, and a constant size of fraud proof for incorrect coding.