chapter26-code-1

PHOTO EMBED

Thu Mar 30 2023 11:41:46 GMT+0000 (Coordinated Universal Time)

Saved by @RareSkills

// ------------------ V1 -------------------
contract GetSumV1 {

	function getSum(address adder, uint256 a, uint256 b) public returns (uint256) {
		(bool ok, bytes memory result) = adder.call(abi.encodeWithSignature("add(uint256,uint256)", a, b));
		require(ok, "call failed");
		uint256 sum = abi.decode(result, (uint256));
		return sum;
	}
}

// ----------------- V2 --------------------
interface IAdder {
	function add(uint256, uint256) external view returns (uint256);
}

contract GetSumV2 {
	function getSum(IAdder adder, uint256 a, uint256 b) public returns (uint256) {
		adder.add(a, b);
	}
}

contract Adder {
	function add(uint256 a, uint256 b) public view returns (uint256) {
		return a + b;
	}
}
content_copyCOPY