第1章 一台全球计算机
以太坊 历史 以太坊 发展阶段 以太坊 特色第2章 账户是什么
以太坊 基础知识 Keystore 与私钥保存 以太坊 常用钱包 以太坊 EIP-55 账户地址第3章 交易是驱动力
以太坊 交易是驱动力 以太坊 交易发送 以太坊 交易方法 以太坊 交易生命周期 共识与工作量证明 矿工与挖矿奖励第4章 数据结构
以太坊 数据结构 以太坊 Radix树 以太坊 Merkle树 Merkle Patricia树 以太坊 RLP编码 以太坊 状态树 以太坊 交易树 以太坊 收据树 以太坊 区块第5章 构建私链
以太坊 安装geth 以太坊 启动私链 以太坊 接收挖矿奖励 以太坊 转账与收款第6章 部署智能合约
以太坊 部署智能合约 以太坊 什么是智能合约 以太坊 安装编译器 Solc 编译智能合约 智能合约发布准备 部署智能合约 调用智能合约第7章 以太坊虚拟机
以太坊虚拟机 虚拟机的执行结果 虚拟机的执行资源 合约调用合约 虚拟机的输入输出 Gas 花费与退回 虚拟机指令集第8章 Solidity 语法
Solidity 语法练习 Solidity 基础语法 Solidity 语法进阶 Solidity 高级语法 Solidity 安全第9章 Truffle 开发
Truffle 合约开发 编译、测试工具安装 Truffle 启动样例 Truffle ERC20合约 Truffle ERC20合约测试Truffle 冷知识
Truffle 冷知识 短地址攻击 比特币的区块 以太坊与比特币账户的区别 “不可能的三角”问题 ETHASH 挖矿算法第1章 一台全球计算机
以太坊 历史 以太坊 发展阶段 以太坊 特色第2章 账户是什么
以太坊 基础知识 Keystore 与私钥保存 以太坊 常用钱包 以太坊 EIP-55 账户地址第3章 交易是驱动力
以太坊 交易是驱动力 以太坊 交易发送 以太坊 交易方法 以太坊 交易生命周期 共识与工作量证明 矿工与挖矿奖励第4章 数据结构
以太坊 数据结构 以太坊 Radix树 以太坊 Merkle树 Merkle Patricia树 以太坊 RLP编码 以太坊 状态树 以太坊 交易树 以太坊 收据树 以太坊 区块第5章 构建私链
以太坊 安装geth 以太坊 启动私链 以太坊 接收挖矿奖励 以太坊 转账与收款第6章 部署智能合约
以太坊 部署智能合约 以太坊 什么是智能合约 以太坊 安装编译器 Solc 编译智能合约 智能合约发布准备 部署智能合约 调用智能合约第7章 以太坊虚拟机
以太坊虚拟机 虚拟机的执行结果 虚拟机的执行资源 合约调用合约 虚拟机的输入输出 Gas 花费与退回 虚拟机指令集第8章 Solidity 语法
Solidity 语法练习 Solidity 基础语法 Solidity 语法进阶 Solidity 高级语法 Solidity 安全第9章 Truffle 开发
Truffle 合约开发 编译、测试工具安装 Truffle 启动样例 Truffle ERC20合约 Truffle ERC20合约测试Truffle 冷知识
Truffle 冷知识 短地址攻击 比特币的区块 以太坊与比特币账户的区别 “不可能的三角”问题 ETHASH 挖矿算法虚拟机的输入输出

虚拟机的输入输出
虚拟机区别于普通的计算机,它的输入输出很少。(普通的计算机有键盘、网络、鼠标等输入和显示器、打印机、网络等输出)输入的方式仅仅局限于两类来源:
- 另一个以太坊虚拟机传来的函数调用所携带的数据。
- 外部账户调用合约账户,所携带的交易数据。
以太坊虚拟机是“确定性”的–当输入确定的时候,它的输出无论重复多少次运行也是确定的输出。所以在以太坊虚拟机中寻找一个随机源是很困难的,智能合约能够获取到的随机输入值更是少的可怜。有些需要随机性的合约(例如彩票开奖)往往使用前一个区块的哈希值作为随机源,但是该随机源容易受到挖矿者的攻击。因为以太坊虚拟机不依赖于传统计算机的键盘鼠标等会产生随机熵的输入设备。这也是很多攻击以太坊的源头。
虚拟的输出也很简单,包含两种输出:
- 运行过程中修改的区块链账户的存储区。
- 日志。
每当虚拟机执行完毕后,更改存储区,并将执行结果发送归还给调用者就可以结束生命周期。但是在输出阶段其实有一个容易被忽略的输出对象,就是Log日志。以太坊虚拟机在执行过程中产生的Log日志将会永久记录在以太坊中,组织成交易的收据而存在,供日后查询。现在广泛流行的交易所,就采用监控日志的方式来确定某些虚拟货币的存取情况。
下一章:Gas 花费与退回
以太坊虚拟机的数据的存储是要花费 gas 的,尤其是存储区的存储,代价昂贵。发送交易的时候我们可以指定 gas 的花费上限,以防止智能合约代码有 bug 而导致无限循环执行下去。一旦 gas 过早耗尽,则虚拟机抛出异常, ...
AI 中文社