Despite the fact that VeChainThor is EVM compatible, the protocol has its unique design of constructing a transaction that can include multiple clauses representing different tasks. Moreover, each transaction is uniquely identified by a 32-byte id in the system instead of an address and nonce pair. These features make it difficult for developers to test their smart contracts on VeChainThor using tools (e.g., Truffle) built fo Ethereum.

I encountered the difficulties and started to build my own tool to make the job easier for me. The tool is not perfect, however, it does allow me to relatively efficiently write TS…


Users, when using public-blockchain-based decentralized applications (dApps), are typically responsible for two things:

  1. Signing transactions using their private keys to invoke smart contract functions, and
  2. Paying crypto for their transactions to be executed and included in the public ledger.

The second responsibility requires users to be able to acquire and manage crypto, endure the volatility associated with the crypto market as well as navigate potentially variable transaction costs. Such issues make the mass adoption of dApps difficult and so far, have proven a significant hindrance to the entire blockchain space.

At VeChain, we strongly believe that a public blockchain should…


This article discusses the design of Solidity contracts that implement the structure as illustrated in the above figure. The requirements are:

  • To describe and operate an object (e.g., an on-chain vote or token-swapping pool) on blockchain, which can normally be achieved by defining storage variables and functions that implement the operations;
  • To create multiple instances of the object and manage these instances such that we have a single-point entrance (e.g., a single contract address) for users/dapps to interact with the instances.

Typically, the operations are complex. For instance, for a privacy-preserved voting system, you would need operations to generate and…


By Zhijie Ren and Peter Zhou

Consensus mechanism is the core of any blockchain system, which determines its security and capacity of processing transactions. VeChain has adopted the Proof-of-Authority (PoA) consensus that belongs to the family of Nakamoto consensus and is well known for its practicality and efficiency. However, as applications and businesses running on the VeChainThor public blockchain thrive, there is an ever growing demand for better preformance (higher TPS and faster transaction confirmation) and uncompromised security to empower business innovations within VeChain’s ecosytesm.

Designing a consensus that delivers both performance and security is a hard problem. Most of…


Smart contracts benefit from the immutability (of code) and decentralization (of computation) provided by blockchain. However, they inherit problems because of the same reasons. The immutability prevents developers from patching the contract code to fix the bugs that are previously undetected. Any undetected bug could result in significant disruption (e.g., a loss of digital assets). What makes it even worse is that the decentralized nature of blockchain would make it almost impossible (unless a hard fork is performed) to revert the damage once the transactions from the attackers are processed and packed in blocks.

Passive Protection

The current best practice for smart…


Decentralization, by definition, is the process of distributing and dispersing power in a system so that we don’t have to rely on a central authority to make decisions. It has become one of the main factors for evaluating blockchain systems.

When we compare the level of decentralization of different blockchain systems, we have to put it in the context of the decision-making power in the systems. There have been many misleading statements about blockchain decentralization without a proper context and this article is aimed to address this problem by breaking down the decision-making power in a blockchain system.

Note that…


This is the 7'th article of the “What you might not know about VeChainThor yet” series. You can find the links of the previous articles at the end.

VeChainThor deploys the builtin contract ExtensionV2 to allow any contract method to be aware of the runtime information of the transaction that invokes the method. Here by "runtime", we mean the kind of information available to the method only when its code is executed by the blockchain system.

Contract ExtentionV2 is deployed at address

0x000000000000000000457874656e73696f6e5632

at block height 3337300 on both the mainnet and testnet. …


The Proof-of-Authority (PoA) consensus is a consensus algorithm that demands nodes to be authorized in order to participate in blockchain consensus. Once authorized, nodes are given equal chances to publish new blocks and gain rewards. As a result, there is no need for nodes to spend vast amount of resources to compete with each other. In addition, richer nodes won’t have more advantages than other nodes in the system.

PoA is also an efficient consensus algorithm in terms of network bandwidth usage. It takes little time to decide block producers and thus, allows more time for transmitting transaction data. …


This is the 6'th article of the “What you might not know about VeChainThor yet” series. You can find the links of the previous articles at the end.

VeChainThor’s on-chain governance is about stakeholders or its governing body making decisions on some critical on-chain actions and executing those actions. (The governing body of the main-net is the steering committee of VeChain Foundation.) The actions can, for instance, be authorizing or revoking consensus validators (i.e., …


This is the fifth article of the “What you might not know about VeChainThor yet” series. You can find the link of the previous article at the end.

VeChainThor allows users to customize and deploy their own blockchain networks. The rest of this article consists of two parts. The first part focuses on customization while the second part provides an example of deploying a customized VeChainThor.

Customization

You can customize VeChainThor through configuring a JSON file and passing it to the Thor client when you launch a node. The configuration file tells the system your settings of global parameters, authority masternodes…

Peter Zhou

Chief Scientist @ VeChain

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store