유튜브를 통해, 쉽고 간편하게 이해 해보아요!
구독/좋아요 해주셔서 감사합니다 :) !!
안녕하세요.
오늘은 지난 시간에 배운 payable 을 생성자에 적용시 와 msg.sender를 통해서 함수 사용에 권한에 제한을 두어 보려고 합니다.
payable 생성자 적용시
생성자에 payable을 적용할 수 있습니다.
생성자는 스마트 컨트랙 생성시 작동하게 되는데, 여기에 payable을 붙이게 된다면,
스마트 컨트랙을 배포할때 이더를 스마트컨트랙안에 넣어 줄 수 있습니다.
msg.sender 함수 사용에 권한 제한
msg.sender는 스마트 컨트랙과 상호작용하는 주체를 나타내기에, 이점을 이용해서
require관 연계하여 특정 주소를 가진 주체에게만 특정 함수를 사용할 수 있도록 권한을 부여 할 수 있습니다.
예제를 통해서 확인 해주시기 바랍니다.
영상과 같이 함께 보시기 바랍니다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 < 0.9.0;
contract MobileBanking{
address owner;
constructor() payable{
owner = msg.sender;
}
modifier onlyOwner{
require(msg.sender == owner, "Only Owner!");
_;
}
event SendInfo(address _msgSender, uint256 _currentValue);
event MyCurrentValue(address _msgSender, uint256 _value);
event CurrentValueOfSomeone(address _msgSender, address _to,uint256 _value);
function sendEther(address payable _to) public onlyOwner payable {
require(msg.sender.balance>=msg.value, "Your balance is not enough");
_to.transfer(msg.value);
emit SendInfo(msg.sender,(msg.sender).balance);
}
function checkValueNow() public onlyOwner {
emit MyCurrentValue(msg.sender, msg.sender.balance);
}
function checkUserMoney(address _to) public onlyOwner {
emit CurrentValueOfSomeone(msg.sender,_to ,_to.balance);
}
}