상세 컨텐츠

본문 제목

솔리디티 강좌 34강 - payable2 생성자 적용시, msg.sender 2 owner 적용해보기

솔리디티 깨부수기 - 기본

by D_One 2021. 10. 3. 13:11

본문

 


유튜브를 통해, 쉽고 간편하게 이해 해보아요!

https://youtu.be/1pWai6spM7U

구독/좋아요 해주셔서 감사합니다 :) !!


안녕하세요. 

오늘은 지난 시간에 배운 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);
    }
    
}

관련글 더보기