我已经与
solidity
和 truffle
合作了几天来制定合同。我正在测试使用 Ganache 创建的网络作为 RPC 客户端来构建本地区块链环境。
有一件事我不明白。
我按照以下步骤操作:
truffle deploy
。我在网络上部署我的合约。truffle test
。我测试了我的合同。没问题。truffle deploy
。我尝试更新我的合同。告诉我“网络是最新的”但是如果我重新启动 Ganache 并使用
truffle deploy
更新我的合约,它就会起作用。这是我不明白的地方。
为什么?有人可以给我解释一下吗?
就像@Augusto Federico Lemble 在评论中解释的那样:
“如果您正在将合同部署在您的私人 ganache 网络中,我想如果您尝试再次部署相同的合同而不进行任何更改,它不会让您这样做,因为您将部署与您的合同相同的合同之前部署过”
为了像 @Adam Kipnis 所说的那样正确重新部署,请使用:
truffle deploy --reset
在 Truffle 中,部署脚本以数字前缀命名,以控制它们的执行顺序。该前缀系统确保在部署期间尊重合约之间的依赖关系。这是详细的解释和示例: 了解 Truffle 部署脚本中的数字前缀 Truffle 使用迁移目录来管理部署脚本。每个脚本文件必须以数字前缀开头,以指示其执行顺序。编号约定有助于 Truffle 按顺序执行迁移文件。 为什么使用数字前缀? 执行顺序:依赖于首先部署的其他合约的合约必须具有更高的数字前缀。 模块化:允许将部署过程分解为可管理的步骤。 清晰度:为部署过程提供清晰、有组织的结构。