【问题标题】:Object composition in SoliditySolidity 中的对象组合
【发布时间】:2018-05-31 04:13:49
【问题描述】:

对象组合在 Solidity 中是如何工作的?我还没有找到一个全面的指南,所有的例子似乎都处理了 hello world 级别的东西或 ERC20 令牌实现。

  1. 我可以与其他合同的公共财产签订合同吗?
  2. 这些合约实例能否在合约之间作为函数参数传递?

【问题讨论】:

  • 这应该继续ethereum.stackexchange.com,所以我投票结束。也就是说,您将使用指向已部署合约的地址,您可以将其存储在属性中,在您认为合适的时候传递等等。

标签: oop solidity smartcontracts


【解决方案1】:

对这两个问题都是肯定的 - 一个简单的示例如下所示:

    contract HelperContract {
        function foo() public pure returns(uint) {
            return(0);
        }
    }

    contract MainContract {
        HelperContract helperContract;

        function MainContract(address helperAddress) public {
            helperContract = HelperContract(helperAddress);
        }

        function bar() public view returns(uint) {
            return helperContract.foo();
        }
    }

部署HelperContract,然后使用现在部署的HelperContract的地址创建MainContract的实例,我们可以调用bar,然后调用foo

您可以将此代码复制粘贴到 remix 并很快验证是否属实。

如果您想查看Hello world! 类型之外的真实示例,您可以查看CryptoKitties 源代码here,他们使用这种类型的模式。

要挖掘的代码相当多,但您可以查找KittyAuction 合约,其中包含方法setSaleAuctionAddresssetSiringAuctionAddress。这些函数分别设置了对单独部署的SaleClockAuctionSiringClockAuction合约的引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    相关资源
    最近更新 更多