区块链100讲:深入了解以太坊虚拟机的汇编代码基础
Solidity提供了很多高级语言的抽象概念,但是这些特性让人很难明白在运行程序的时候到底发生了什么。我阅读了Solidity的文档,但依旧存在着几个基本的问题没有弄明白。 string, bytes32, byte[], bytes之间的区别是什么? 该在什么地方使用哪个类型? 将 string 转换成bytes时会怎么样?可以转换成byte[]吗? 它们的存储成本是多少? EVM是如何存储映射( mappings)的? 为什么不能删除一个映射? 可以有映射的映射吗?(可以,但是怎样映射?) 为什么存在存储映射,但是却没有内存映射? 编译的合约在EVM看来是什么样子的? 合约是如何创建的? 到底什么是构造器? 什么是 fallback 函数? 我觉得学习在以太坊虚拟机(EVM)上运行的类似Solidity 高级语言是一种很好的投资,有几个原因: Solidity不是最后一种语言。更好的EVM语言正在到来。(拜托?) EVM是一个数据库引擎。要理解智能合约是如何以任意EVM语言来工作的,就必须要明白数据是如何被组织的,被存储的,以及如何被操作的。 知道如何成为贡献者。以太坊的工具链还处于早期,理解EVM可以帮助你实现一个超棒的工具给自己和其他人使用。 智力的挑战。EVM可以让你有个很好的理由在密码学、数据结构、编程语言设计的交集之间进行翱翔。 在这个系列的文章中