CosmWasm:进化的虚拟机与智能合约
确定性
。由于运行节点的计算机或其它计算设备可能支持不同的CPU指令集,X86、ARM等;操作系统处理精度不同,32位,64位。不同机器对相同数据类型的表示也不一致,这样很难确保所有机器运行的结果一致。传统的 Java 虚拟机对于计算结果的少量的差异有一定的容忍度,但是在区块链上所有结果必须一致,因此一个新的、适用于区块链的虚拟机是必不可少的。多语言支持 - Rust / C++ / Javascript / AssemblyScript
。前端会对特定语言进行词法分析、语法分析、语义分析,然后生成中间表达形式 IR(Intermediate Representation)。后端对 IR 进行优化,然后生成目标代码 Wasm。
工具链支持
mapping
, 但是连遍历操作都没有原生支持,这个和 SQL 比起来就很简陋了。CosmosSDK 中提供了更多的存储数据操作,例如可以针对容器做遍历操作,但是依然是缺少像传统数据库的那种抽象层。于是CosmWasm 提供了 cosmwasm-storage 这个存储库,里面提供了类似 Singleton
和 Bucket
这种高级存储数据类型。CosmWasm 在之后还添加了加强版的存储库 cw-storage-plu
,里面提供了 Item
和 Map
这样的数据类型。这些抽象存储类型的添加充分释放了开发的可能性提高了开发效率,也隔绝了对于原始数据的直接操作降低风险。Ethan 最后还说,用过了这些存储库之后,他再也不想回去用 CosmosSDK 进行开发了。