以太坊 BC 智能合约执行重复

Ethereum BC Smart Contract Execution Duplicates

我目前正在学习编写智能合约的 solidity。我了解智能合约存储在以太坊区块链上,并由网络上的所有节点广播和执行。 google: 智能合约是指由一定数量的区块链节点独立执行的一段计算机程序,以记录最新的程序状态。

这是我在理解执行周期时遇到一些问题的地方。假设我们正在做只发生一次的事情,例如用 ERC20 代币交换 ETH。以节点 A 和 B 为例。 例如,节点 A 执行传输并进行传输。 B节点在执行代码的时候,会检查智能合约里面的余额什么的,但是到底有没有到这个地步。实际的智能合约是否真的执行了不止一次,还是只执行了一次而其他的执行有些不同?

很困惑,因为我们正在编写一个执行一次操作但多次执行的合同,感谢您提供其他阅读材料的链接。

为了更好地了解这一切是如何组合在一起的,我建议查看 http://ethviewer.live/。当您编写智能合约时,您需要先将其部署到以太坊区块链。这种部署会消耗 gas,并作为交易传输到链上,就像典型的代币转移一样。您可以观察到合约创建/合约调用在被推入区块之前被汇集到交易队列中。

如果节点 A 只部署一次合约(比如说,被其他人执行数千次),节点 A 只支付将该合约部署到区块链的 gas 成本。无论谁希望在未来某个时间与节点 A 的合约进行交互(比如节点 B),都必须支付相关的 gas 成本才能执行这些合约调用。

Node A exectues the transfer and does the transfer, say for example. When Node B executes the code, there will be a check on the balance in the smart contract or something, but does it even get to this point. Is the actual smart contract really executed more than once or is it done once and the other executions are somehow different?

目前世界上所有的以太坊节点都执行区块链中的所有交易。作为挖矿节点的节点产生一个块,其中包含从状态 1 -> 状态 2 的状态转换。这就是所谓的“交易包含在块中”。然后下载该块的所有其他节点将检查该节点中的所有交易是否正确执行。