智能合约文档-以太坊虚拟机篇一

292 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

概述

以太坊虚拟机或 EVM 是以太坊中智能合约的运行时环境。它不仅是沙盒,而且实际上是完全隔离的,这意味着在 EVM 内运行的代码无法访问网络、文件系统或其他进程。智能合约甚至对其他智能合约的访问权限有限。 #remix环境安装 1、下载node.js nodejs.org/en/

1652373951(1).png 2、cmd输入命令下载remix

npm install remix-ide -g

3、启动remix-ide

remix-ide

4、可打开127.0.0.1:8080/index或直接打开remix.ethereum.org/

account 账户

1、以太坊中有两种账户共享相同的地址空间:由公私钥对(即人类)控制的外部账户和由与账户一起存储的代码控制的合约账户。

外部账户的地址是由公钥确定的,而合约的地址是在合约创建时确定的(由创建者地址和从该地址发送的交易数量得出,即所谓的“随机数”)。

无论账户是否存储代码,EVM 都会平等对待这两种类型。

每个帐户都有一个持久的键值存储,将 256 位字映射到 256 位字,称为storage

此外,每个账户都有一个Ether余额(准确地说是“Wei” ),可以通过发送包含 Ether 的交易进行修改。1 ether``10**18 wei

Transactions(交易)

交易是从一个帐户发送到另一个帐户的消息(可能相同或为空,见下文)。它可以包括二进制数据(称为“有效负载”)和以太币。

如果目标帐户包含代码,则执行该代码并将有效负载作为输入数据提供。

如果没有设置目标账户(交易没有收款人或收款人设置为null),则交易创建一个新合约。如前所述,该合约的地址不是零地址,而是从发送者及其发送的交易数量(“nonce”)派生的地址。这种合约创建交易的有效负载被视为 EVM 字节码并被执行。此执行的输出数据作为合约代码永久存储。这意味着,为了创建合约,您无需发送合约的实际代码,而是发送实际执行时返回该代码的代码。 在创建合约时,其代码仍然是空的。因此,在构造函数完成执行之前,您不应该回调正在构建的合约。