当前位置: 首页 > 知识库问答 >
问题:

智能合约如何在以太坊上运行(存储和打开以进行状态更改)

巴照
2023-03-14

智能合约可以编译成EVM字节码(以太坊虚拟机),并部署到具有特定区块高度的区块上的以太坊区块链,并返回交易哈希。

但是智能合约以何种方式存储在区块上?当发出交易以与智能合约交互以改变其状态(例如变量的值)时,区块链如何记录状态变化?

共有1个答案

魏鸿禧
2023-03-14

您需要区分存储在blokchain中的两个东西(它们都是无状态且不可变的):

    < li >智能合同模板 < li >交易/事件

最终的智能合约状态不会直接存储在块中。它是由节点(以太坊虚拟机)从前面提到的模板和交易中计算出来的。

 类似资料:
  • 通过java打包以太坊智能合约 Web3j可以自动打包智能合同代码,以便在不脱离JVM的情况下进行以太坊智能合同部署和交互。 要打包代码,需要先编译智能合同: $ solc <contract>.sol --bin --abi --optimize -o <output-dir>/ 然后用web3j的命令行工具打包代码: web3j solidity generate /path/to/<sma

  • 我有一个关于以太坊智能合约版本控制的问题。关于如何将逻辑和数据解耦,如何在引用其他契约时使用接口,如何使用通用键值存储来存储数据,以及如何以强类型方式通过库函数检索数据,已经写了很多文章。 从旧版本的智能合约中查询事务和事件日志怎么样?事务和发出的事件不能迁移。它们是不可变的。也许您需要在客户端应用程序中跟踪它们的历史记录。事件可以在不同的合约版本中添加、删除或更改其签名。您如何处理对多个版本的合

  • EIP-20以太坊智能合约通证标准 有一个以太坊标准EIP-20,它是作为一个以太坊改进方案EIP开始的,它定义了提供通证token的智能合约应该执行的标准功能。 EIP-20标准提供函数定义,但不提供示例实现。然而,在codegen/src/test/resources/solidity/contracts中提供了一个实现,这已经从ConsenSys’ Tokens project获得。 开源的

  • 我是区块链的新手,我开始开发一种新的代币,我已经看到许多地方讲述了这两个区块链之间的相似之处。我读到BSC与EVM(以太坊虚拟机)兼容,我的问题是,这是否意味着如果我按照教程学习在以太坊区块链上部署智能合约(以Solidity编写)。同样的合同在Binance智能链中也会起作用吗?如果没有,那么在为其中一个和另一个写合同时,主要的区别是什么?非常感谢。

  • 本文翻译自zeppelin的 https://blog.zeppelin.solutions/onward-with-ethereum-smart-contract-security-97a827e47702 如果你是以太坊开发的新手,我们推荐你在继续本文前,先读一下我们的以太坊智能合约指南(基本概念及环境搭建):https://medium.com/bitcorps-blog/the-hitch

  • 我能够使用和在以太坊进行交易。 现在我希望能够与互动。但是,由于构建