ETH 003 以太坊虚拟机介绍

2018-12-01  本文已影响0人  三文鱼的一生

3.1 一个入门的事例

pragma solidity  ^0.5.0;
contract Storage{
    mapping(uint => string) public  storedData;
    //内存中的value数据拷贝到存储中
    function addOne(uint key, string memory  value) public {
        storedData[key] = value; 
    }
    function get(uint key) public view returns(string memory) {
        return storedData[key];
    }
}

事例里面定义了一个存储的合约,可以存储Key-Value的数据。 addOne函数会触发数据存储。

3.2 以太坊虚拟机

以太坊虚拟机是以太坊项目中运行智能合约的运行环境。以太坊虚拟机是一个完全隔绝外界通讯的沙盒。 在以太坊中运行的智能合约不允许访问外部网络,外部文件系统,其他进行。 智能合约之间的访问也是受限制的。

3.3 账号

以太坊中账号分为外部账号和合约账号两种。合约账号由公私钥控制,合约账号是由合约中的代码控制。

合约账号的地址由合约发起方的地址和该地址的nonce(可以理解为版本号)决定。
外部地址是由公钥经过换算得到。

3.4 交易

交易是从一个发起账号到目标账号的信息传递,如果发起账号携带输出数据的话,则会触发目标账号相应的代码。

外部账号之间的转账 合约调用

3.5 GAS

在以太坊的体系里面定义了一组行为,这些行为都需要消耗能量。我们将其称为GAS。其目的是无限制的循环调用。能量的提供方是交易的创建者,执行后剩下的能量,将退还给提供方。
GAS包括两个总要的概念:大小和定价,前者规定了和限制了“行为”的执行数量,或者规定了每个GAS的价格。 这两个数值会直接影响到你发起的交易被网络接受的速度。

3.6 指令集

以太坊中定义的操作行为链接如下:
https://github.com/ethereum/go-ethereum/blob/master/core/vm/opcodes.go

上一篇下一篇

猜你喜欢

热点阅读