美文网首页
ETH 003 以太坊虚拟机介绍

ETH 003 以太坊虚拟机介绍

作者: 三文鱼的一生 | 来源:发表于2018-12-01 17:37 被阅读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

    相关文章

      网友评论

          本文标题:ETH 003 以太坊虚拟机介绍

          本文链接:https://www.haomeiwen.com/subject/hhqwqqtx.html