嗨,伙计们,我的问题很简单。我有一份合同:
B.sol
...
contract A {
...
}
contract B is A {
...
}当我迁移到区块链我的B.sol时,我需要在里面部署每一个合同?选择一个答案,并解释为什么请。
发布于 2018-01-14 19:36:57
您正在寻找的答案很可能是#1,当契约从其他契约继承时,在部署期间只创建一个契约。在概念上,它和其他面向对象的语言是一样的。来自坚实的文档
当一个合同从多个合同继承时,在区块链上只创建一个合同,并且将所有基本合同的代码复制到创建的合同中。
从技术上讲,您可以有一个引用已部署的父契约的子契约(请参见下面)。但是,我想不出这是一个好的设计的情况。
pragma solidity ^0.4.18;
contract A {
uint256 public balance;
function() public payable {
balance = msg.value;
}
}
contract B is A {
uint256 i;
A a;
function B(address _a) public {
a = A(_a);
}
function receiveForParent() public payable {
a.transfer(msg.value);
}
function getParentBalance() public constant returns (uint256) {
return a.balance();
}
}在这里,您可以部署A,然后在部署B时传递该地址。在本例中,调用B.balance()或使用回退函数是有效的,因为您继承的是逻辑。然而,B.balance() != A.balance().(请注意B.getParentBalance() == A.balance())。
https://stackoverflow.com/questions/48225973
复制相似问题