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

284 天前
 huzhikuizainali

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

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

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

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

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

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

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

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

1410 次点击
所在节点    区块链
2 条回复
xlzy905
281 天前
调用是指状态发生改变 调用就是发生一次类似转账 同步区块后改变合约状态 不是要像某种程序一样 run 执行 evm 是状态机
大多数不运行智能合约 只是保存智能合约的状态 了解一下 Merkle Trees
istomyang
59 天前
如果是你做软件设计,你也会知道计算跟存储分离,链仅仅是作为存储系统保存状态,至于中心式还是分布式,业务层不关心。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1022480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX