A Survey on Security Verification of Blockchain Smart Contracts <s> C. PERFORMANCE IMPACTS <s> Current blockchain platforms, especially the recent permissioned systems, have architectural limitations: smart contracts run sequentially, all node executes all smart contracts, consensus protocols are hard-coded, the trust model is static and not flexible, and non-determinism in smart-contract execution poses serious problems. Overcoming these limitations is critical for improving both functional properties of blockchains, such as confidentiality and consistency, as well as their non-functional properties, such as performance and scalability. We discuss these limitations in the context of permissioned blockchains, including an early version of the Hyperledger Fabric blockchain platform, and how a re-design of Hyperledger Fabric's architecture addresses them. <s> BIB001 </s> A Survey on Security Verification of Blockchain Smart Contracts <s> C. PERFORMANCE IMPACTS <s> Blockchain technology has attracted increasing attention in recent years. One reason of this new trend is the introduction of on-chain smart contracts enabling the implementation of decentralized applications in trust-less environments. Along with its adoption, attacks exploiting smart contract vulnerabilities are inevitably growing. To counter these attacks and avoid breaches, several approaches have been explored such as documenting vulnerabilities or model checking using formal verification. However, these approaches fail to capture the Blockchain and users behavior properties. In this paper, we propose a novel formal modeling approach to verify a smart contract behavior in its execution environment. We apply this formalism on a concrete smart contract example and analyze its breaches with a statical model checking approach. <s> BIB002 </s> A Survey on Security Verification of Blockchain Smart Contracts <s> C. PERFORMANCE IMPACTS <s> Modern cryptocurrency systems, such as the Ethereum project, permit complex financial transactions through scripts called smart contracts. These smart contracts are executed many, many times, always without real concurrency. First, all smart contracts are serially executed by miners before appending them to the blockchain. Later, those contracts are serially re-executed by validators to verify that the smart contracts were executed correctly by miners. Serial execution limits system throughput and fails to exploit today’s concurrent multicore and cluster architectures. Nevertheless, serial execution appears to be required: contracts share state, and contract programming languages have a serial semantics. This paper presents a novel way to permit miners and validators to execute smart contracts in parallel, based on techniques adapted from software transactional memory. Miners execute smart contracts speculatively in parallel, allowing non-conflicting contracts to proceed concurrently, and “discovering” a serializable concurrent schedule for a block’s transactions, This schedule is captured and encoded as a deterministic fork-join program used by validators to re-execute the miner’s parallel schedule deterministically but concurrently. We have proved that the validator’s execution is equivalent to miner’s execution. Smart contract benchmarks run on a JVM with ScalaSTM show that a speedup of 1.39 ::: $$\times $$ ::: can be obtained for miners and 1.59 ::: $$\times $$ ::: for validators with just three concurrent threads. <s> BIB003
Performance can affect the security execution of smart contract. Due to the miner mechanism of blockchain and the poor Ethereum concurrency mechanism, the execution efficiency of smart contracts is very low. Only 10 to 20 transactions could be completed per second, leaving many complex financial transactions in the miners' pool for a long time. Through the analysis of Abdellatif and Brousmiche BIB002 , we find that the longer the smart contract resides in the miners' pool, the more likely it is to be attacked successfully. Therefore, the performance impacts should be seriously considered. Vukolic BIB001 argued that smart contracts which executed sequentially limited the attributes of the blockchain (such as confidentiality), so they proposed the idea of executing independent smart contracts in parallel. Then Dickerson et al. BIB003 proposed a new method of parallel execution of smart contracts, in which miners scheduled transactions and allowed non-conflicting contracts to execute in parallel. This method performed well on smart contract benchmarks, greatly speeding up contract execution efficiency.