5 如何在合约中调用另一个合约的public方法,且其他人不能调用另一个合约的public方法,麻烦各位大佬看看有没有什么实现思路

问题概述:
PositionContract合约中有minimumReserve合约方法
UnsettledReserve合约中有updateMinimumReserve合约方法

现在想通过IUnsettledReserve(liquidity).updateMinimumReserve(positionAddress,removeReserve,addReserve);
实现PositionContract合约调用UnsettledReserve合约中的updateMinimumReserve合约方法
如果updateMinimumReserve合约方法是public类型的,如何保证只能由PositionContract合约调用,而不是所有人都能调用UnsettledReserve合约中的updateMinimumReserve合约方法
合约代码如下图所示:

0b74e302a3d6dff0d8d2d658d36f961.png

dd87cc769e1a5df49463858700eb9d9.png

请先 登录 后评论

2 个回答

Elvis - 智能合约开发工程师

updateMinimumReserve加上onlyOwner,将UnsettledReserve的所有权给 PositionContract。或者直接require(msg.sender ==PositionContractAddress)

请先 登录 后评论
Ric Li C

UnsettledReserve合约代码:

address public positionContractAddress;

function updateContractAddress(address newPositionContractAddress) public OnlyOwner {
          positionContractAddress = newPositionContractAddress;
}


function updateMinimumReserve (...) public {
	require (msg.sender == positionContractAddress, "Insufficient Permissions");
	...
}

请先 登录 后评论
  • 2 关注
  • 0 收藏,1948 浏览
  • 醒梦无痕 提出于 2023-08-29 18:30