SatoshiTURK
Programmer
- BNB
- 0,00968229
Solidity delegatecall fonksiyonu, bir kontratın içerisinde bulunan başka bir kontratın fonksiyonunu çağırmak için kullanılır. Bu fonksiyon, çağırılan fonksiyonun yürütüldüğü kontratın sahip olduğu yetkileri kullanır ve bu sayede çağıran kontratın yetkilerini genişletir.
Aşağıdaki örnekte, Delegator kontratı içerisinde Delegatee kontratının doSomething fonksiyonunu çağırmaktadır:
Bu kod ile Delegator contracti içerisinde Delegatee contractinin doSomething() fonksiyonunu çağırmaktadır. Delegator contracti çağırırken Delegatee contractinin yetkilerini kullanarak çalışır ve Delegatee contractinin içerisinde yapılması gereken işlemler gerçekleşir.
Aşağıdaki örnekte, Delegator kontratı içerisinde Delegatee kontratının doSomething fonksiyonunu çağırmaktadır:
contract Delegator {
address delegateeAddress;
function setDelegatee(address _delegatee) public {
delegateeAddress = _delegatee;
}
function doSomething() public {
// delegateeAddress'in içerisinde bulunan kontratın doSomething fonksiyonunu çağırır
delegatecall(bytes4(keccak256("doSomething()")));
}
}
contract Delegatee {
function doSomething() public {
// burada yapılacak işlemler
}
}
Bu kod ile Delegator contracti içerisinde Delegatee contractinin doSomething() fonksiyonunu çağırmaktadır. Delegator contracti çağırırken Delegatee contractinin yetkilerini kullanarak çalışır ve Delegatee contractinin içerisinde yapılması gereken işlemler gerçekleşir.