在 Truffle 中部署具有循环依赖的合约

Deploying Contracts with Circular Dependency in Truffle

CryptoKitties contracts 显然有循环依赖。我不知道如何对 Truffle 中的合约部署进行排序。

ClockAuction 的构造函数需要一个实现 "ERC721" 的合约的地址。

这段代码中,ERC721是由KittyOwnership实现的,继承自KittyBase

KittyBase 包含对继承自 ClockAuction 的 SaleClockAuction 的引用。

这里应该如何构建 Truffle 部署?

如果不先部署 SaleClockAuction,就无法部署 KittyBase。但是,SaleClockAuction 的父级构造函数需要一个继承自 KittyBase 的 KittyOwnership 地址。

简而言之:

据我所知,确定合约的哪一部分导致 setters/getters 以及哪些合约组合在一起非常重要。

它们可能有循环依赖,但它们都会导致 setter 函数,例如 setSiringAuctionAddresssetSaleAuctionAddress

跟踪实际实时合约本身的面包屑可能会更幸运:

核心:https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#code

先生:https://etherscan.io/address/0xc7af99fe5513eb6710e6d5f44f9989da40f27f26#code

促销:https://etherscan.io/address/0xb1690c08e213a35ed9bab7b318de14420fb57d8c#code