我使用可靠性进行智能合约开发存在问题。我有两个聪明的合同,如工厂合同和合同合同。这是我的代码。
Contract Factory {
address[] newContracts;
function createContract(uint num) {
address newContract = new Contract(num);
newContracts.push(newContract);
}
function getContract() view public returns(address[]) {
return newContracts;
}
function getNum(address _add) view public returns(uint) {
return Contract(_add).getNum();
}
}
contract Contract {
uint public Num;
function Contract(uint num) {
Num = num;
}
function getNum() public returns(uint) {
return Num;
}
}
我在私人区块链中创建工厂合同。我调用了createContract和getContract函数,它正常工作,但是当我调用getNum函数时,我无法得到该数字。谢谢你的回答!
答案 0 :(得分:2)
经过一些测试,请检查您的创世纪文件中是否有 byzantiumBlock:0 。如果没有,请添加它并重新生成您的私人链。请参阅下面的我的创世纪文件。
{
"config": {
"chainId": 1994,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0
},
"difficulty": "400",
"gasLimit": "2000000",
"alloc": {
}
}
执行此操作后,您的代码应该可以正常工作。