现在我正在使用@openzeppelin/truffle-upgrades将基本智能合约转换为可升级的智能合约
因此,我遵循了文档中的所有必需步骤,但仍然存在一个问题:
Truffle-Upgrades 要求我用初始化器替换构造函数,这对我来说很好,但不适用于导入到我自己的智能合约中的智能合约,示例:
pragma solidity 0.6.6;
import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol";
contract Sample is VRFConsumerBase {
address private owner;
bytes32 internal keyHash;
uint256 internal fee;
constructor(address _owner)
VRFConsumerBase(
0xa555fC018435bef5A13C6c6870a9d4C11DEC329C, // VRF Coordinator
0x84b9B910527Ad5C03A9Ca831909E21e236EA7b06 // LINK Token
) public
{
keyHash = 0xcaf3c3727e033261d383b315559476f48034c13b18f8cafed4d871abe5049186;
fee = 0.1 * 10 ** 18; // 0.1 LINK (Varies by network)
owner = _owner;
}
...
Run Code Online (Sandbox Code Playgroud)
因此松露抱怨道:
../@chainlink/contracts/src/v0.6/VRFConsumerBase.sol:182: Contract `VRFConsumerBase` has a constructor
Define an initializer instead
Run Code Online (Sandbox Code Playgroud)
由于它是第三方软件包,我无法替换它:)
有什么架构技巧/配置吗?
我浏览了几乎所有关于 chainlink/truffle 的文档,但没有找到这个问题的解决方案。
谢谢!
更新1:
首先,我将 VRFConsumerBase 合约修改为:(我还删除了注释以使其简短..) …