forked from AmazingAng/WTF-Solidity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CallContract.sol
46 lines (38 loc) · 1.28 KB
/
CallContract.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
contract OtherContract {
// Variável de estado x
// Recebendo evento eth, registrando amount e gas
event Log(uint amount, uint gas);
// Retorna o saldo de ETH do contrato
function getBalance() view public returns(uint) {
return address(this).balance;
}
// Você pode ajustar a função da variável de estado _x e também pode enviar ETH para o contrato (payable)
function setX(uint256 x) external payable{
_x = x;
// Se ETH for transferido, dispara o evento Log
if(msg.value > 0){
emit Log(msg.value, gasleft());
}
}
// Ler x
function getX() external view returns(uint x){
x = _x;
}
}
contract CallContract{
function callSetX(address _Address, uint256 x) external{
OtherContract(_Address).setX(x);
}
function callGetX(OtherContract _Address) external view returns(uint x){
x = _Address.getX();
}
function callGetX2(address _Address) external view returns(uint x){
OtherContract oc = OtherContract(_Address);
x = oc.getX();
}
function setXTransferETH(address otherContract, uint256 x) payable external{
OtherContract(otherContract).setX{value: msg.value}(x);
}
}