CodeChain Tech Blog


CodeChain Tech Blog

Open Sourcing language-solidity, a Solidity parser written in TypeScript

Solidity is a new experimental language for writing smart contracts. It is still in an early stage of development and lacks the tooling needed to be considered a serious programming language. One of the big problems that Solidity has is that it lacks a formal language specification. The official Solidity compiler is the only Solidity compiler available and unfortunately it is its implementation detail, and not the spec, that specifies the behavior of the programs. ... Read more

EVM STATICCALL opcode

The Byzantium hardfork added a new opcode called STATICCALL to EVM. In this post, we will take a look at this new opcode and explain in detail the problem it addresses to solve. What is it? STATICCALL is a new variant of CALL that permits only non-state-changing calls to other contracts (including itself). Any opcode that performs modifications to the state results in an exception instead of performing the modification. ... Read more

Idioms of Solidity Smart Contract Programming

Solidity is a new and highly experimental programming language for writing Ethereum-flavoured smart contracts. When Solidity first came out, nobody likely knew how to write smart contracts. One could learn the syntax and semantics of the language, but it was impossible to refer to other idioms. Fortunately, as developers started to write smart contracts over time, several patterns and idioms have emerged. For example, smart contract developers realized that they tended to write the same life cycle management and access control code again and again. ... Read more

Solidity Language Support for VSCode

Solidity Language Support for VSCode is now available at the Visual Studio Code Marketplace. This extension is powered by solidity-language-server which was released as an open source project a few days ago. Solidity Language Support provides: Syntax highlight Diagnostics via solc and solium Auto-completion Solidity Language Support extension automatically recognizes the project structure created by truffle and resolves modules located under “installed_contracts” directory which are installed by truffle install command. ... Read more