区块链也是有一套虚拟机的设计机制,区块链的最重要特性莫过于不可窜改的特性,执行结果理应也是可靠的,而且也不应该开发一份智能合约之后去影响到区块链上的千千万万个智能合约,因此才会有Ethereum Virtual Machine(EVM)的产生,开发者只要专注于开发智能合约,不需要去担心环境问题,这样的隔离方式才能够让整个区块链更加健康、安全,这也就是Ethereum Virtual Machine(EVM)为什么需要存在的最大原因。

以程序语言来说,就好比Java的JVM一样,程序转译成Byte Code并执行于JVM环境之中,而作业系统只要能够运行JVM即可,而且环境独立封闭,基本上不会受到外部的干扰。

关键的ByteCode

由于Ethereum Virtual Machine(EVM)所认定的程序代码是ByteCode这种较低阶的语言,因此人类不容易阅读,通常也不会有人直接去写ByteCode,因此才发展出高阶语言Solidity,让开发更平易近人,以易读的语言来进行设计,最后再转译成ByteCode让Ethereum Virtual Machine(EVM)读取并执行。

来一段ByteCode的范例,第一眼看到的反应大部分应该会是「天啊!这什么文字天书」,相信看到就不会想玩智能合约了!

再来看看Solidity这套程序语言的范例,相对平易近人又容易读取:

也由于这种高阶语言的出现,让市面上的许多智能合约应用如雨后春笋般的出现。

重要功能

容易测试: 为了确保各式各样的智能合约能够顺利执行,必须让环境一致,而环境统一的状况下,开发者只要专注于程序代码的开发并测试逻辑的正确与否,因此不容易因为外部系统改A坏B的状况产生。 安全性: 由于沙盒的概念,因此程序代码都执行于封闭的盒子中,不会随意的攻击主链,导致链上的其他智能合约无法正常运作。 稳定性: 由于环境封闭独立,不会因为某个合约故障导致整个链上资源锁死,因此对故障的容忍度较高。

没有仔细了解区块链的相关技术之前都觉得怎么可能去开发这么复杂的技术,一步步探究之后才发现事实上与我们传统的开发核心理念相差不远,大部分技术与概念都是互相连通的,因此我们在接触新技术之前不要去排斥,并试着学习跟动手,将知识技术烙印在脑海中才能持续进步。