V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huzhikuizainali
V2EX  ›  区块链

请问智能合约是究竟怎么在以太坊上运行的?

  •  
  •   huzhikuizainali · 238 天前 · 1314 次点击
    这是一个创建于 238 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我已经对比特币有初步了解了。对以太坊的 pow 机制,以太币账户如何通过 Modified Merkle Patricia tree 进行更新也有所了解。但是对于智能合约究竟如何运行在以太坊上的基本原理还不太了解。比如下面这幅图:

    1 、是否以太坊上的所有节点都有 EVM ?

    2 、一个人编写好的智能合约代码是否要用私钥签名然后发送给所有节点?在取得共识后打包进以太坊区块?

    3 、当智能合约被调用开始运行后是“仅仅运行在某一个节点的服务器上”? 还是所有节点的服务器都要同步运行?

    4 、假设智能合约的运行结果如果是一次以太币转账。那么如何完成转账的私钥签名并发送到全网的?

    5 、智能合约是代码既合约。那么图中右下角那个普通用户如何保证他在前端看到的文字版的合约条款与后台运行的智能合约是完全相符的?(你不能要求所有前台用户都会读智能合约的代码吧)

    6 、如果有大量智能合约占用节点的内存(假设运算次数少但常驻内存,因此不会消耗多少 gas )那么节点的内存会不会不够用?

    目前我的疑问诸如此类。之所以没有找到答案是因为:目前我找到的书籍或视频资料。要么是泛泛而谈“智能合约运行在以太坊的区块链上”,要么就直接开始讲代码编写。基本没有涉及到智能合约详细“运行原理”的讲解。不知道各位老师 有没有这方面的学习资料推荐?

    2 条回复
    xlzy905
        1
    xlzy905  
       234 天前
    调用是指状态发生改变 调用就是发生一次类似转账 同步区块后改变合约状态 不是要像某种程序一样 run 执行 evm 是状态机
    大多数不运行智能合约 只是保存智能合约的状态 了解一下 Merkle Trees
    istomyang
        2
    istomyang  
       13 天前 via Android
    如果是你做软件设计,你也会知道计算跟存储分离,链仅仅是作为存储系统保存状态,至于中心式还是分布式,业务层不关心。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1208 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:07 · PVG 02:07 · LAX 10:07 · JFK 13:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.