ETH 003 以太坊虚拟机介绍

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这篇文章主要讲解以太坊的基本原理,对技术感兴趣的朋友可以看看。 翻译作者:许莉 原文地址:How does Eth...
    蓝肥仔阅读 1,848评论 0 15
  • 1.以太币(Ether)产生规则和比特币有哪些区别? 1. 出块时间。 比特币出块时间是平均10分钟,而以太坊约是...
    爱学习的小仙女呀阅读 3,570评论 0 7
  • 简介 不管你们知不知道以太坊(Ethereum blockchain)是什么,但是你们大概都听说过以太坊。最近在新...
    Lilymoana阅读 3,986评论 1 22
  • 最近某国产古装电视剧让观众大开眼界,因为该片主演大量使用抠图和替身,为纪念这一划时代拍摄方式下的里程碑之作,吃瓜群...
    Miss张的茶馆阅读 788评论 10 1
  • 已经好几年没有写日记了,咋一写,总觉得不大得心应手。发现越大了,就是幸福度越低。这个事那个事的。日复一日的,每天早...
    庚子墨阅读 195评论 0 0

友情链接更多精彩内容