Migration 继承中的artifact.require()语句?
大家好,我的问题很简单。 我有这份合同: B.solMigration 继承中的artifact.require()语句?,migration,blockchain,solidity,truffle,Migration,Blockchain,Solidity,Truffle,大家好,我的问题很简单。 我有这份合同: B.sol ... contract A { ... } contract B is A { ... } 当我迁移到区块链我的B.sol时,我需要部署其中的每一个合同吗? 请选择一个答案并解释原因 你想要的答案很可能是1。当协定从其他协定继承时,在部署期间仅创建一个协定。从概念上讲,它与其他面向对象语言相同。从: 当一个合同从多个合同继承时,只有一个 合同是在区块链上创建的,代码来自所有基础 合同被复制到已创建的合同中 从技术上讲,
...
contract A {
...
}
contract B is A {
...
}
当我迁移到区块链我的B.sol时,我需要部署其中的每一个合同吗?
请选择一个答案并解释原因
你想要的答案很可能是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()
)
var A= artifacts.require("A");
var B= artifacts.require("B");
module.exports = function(deployer) {
deployer.deploy(A);
deployer.deploy(B);
};
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();
}
}