Siblearn Academy siblearn academy

Calling Other Contract

قرارداد می تواند قراردادهای دیگر را به 2 روش فراخوانی کند.

ساده ترین راه این است که فقط آن را مانند صدا کنید A.foo (x، y، z).

روش دیگر برای فراخوانی قراردادهای دیگر استفاده از سطح پایین است زنگ زدن.

این روش توصیه نمی شود.


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract Callee {
    uint256 public x;
    uint256 public value;

    function setX(uint256 _x) public returns (uint256) {
        x = _x;
        return x;
    }

    function setXandSendEther(uint256 _x)
        public
        payable
        returns (uint256, uint256)
    {
        x = _x;
        value = msg.value;

        return (x, value);
    }
}

contract Caller {
    function setX(Callee _callee, uint256 _x) public {
        uint256 x = _callee.setX(_x);
    }

    function setXFromAddress(address _addr, uint256 _x) public {
        Callee callee = Callee(_addr);
        callee.setX(_x);
    }

    function setXandSendEther(Callee _callee, uint256 _x) public payable {
        (uint256 x, uint256 value) =
            _callee.setXandSendEther{value: msg.value}(_x);
    }
}

روی محیط توسعه ی Remix امتحان بکنید

  • CallingContract.sol
  • بازگشت به لیست