簡體   English   中英

如何自動執行 ChainLink 作業以調用智能合約 function,要求調用者是給定的管理員地址?

[英]How to automate a ChainLink Job to call a smart-contract function that requires the caller to be a given admin address?

ChainLink 自動化支持有條件地執行智能合約功能。 但是,當從智能合約調用 function 時,調用 function 的是 ChainLink 注冊合約,而不是注冊 UpKeep 的地址。

因此,如果要調用的 function 具有強制調用者 (msg.sender) 為給定地址(例如管理地址)的要求,則調用很可能會失敗。

是否可以使用 ChainLink Automation 自動執行此類功能(將 msg.sender 設置為所需地址)?

舉個例子:

mapping() private _balance;
address public admin;

constructor {
    admin = msg.sender;
}

modifier onlyAdmin {
    require(msg.sender == admin, "Only admin");
    _;
}

function pay(address _account, uint256 _amount) public onlyAdmin {
    _balance[_account] += _amount; 
}

function getBalance(address _account) public view returns(uint256) {
    return _balance[_account];
}

通過 Chainlink 自動化更新余額。 我希望 _account 的余額更新為之前的值 + _amount。

_balance[account] = _balance[account] + _amount;

正如您所說,Chainlink 自動化發送的交易是與 Chainlink Registry 合約簽署的,據我所知,不可能用消費者合約所有者的簽名替換簽名。

我認為更好的方法是修改修飾符onlyAdmin以添加注冊表合約的地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM