KIP7 스마트컨트랙트 transform

안녕하세요. KIP7 스마트 컨트랙트 코드 관련 질문 드립니다.

function transferToken(address _to, uint256 amount) external payable nonReentrant canTransfer(_to, amount) {
        _transfer(ownerAddress, _to, amount);
    }

위 코드 _transfer 의 첫번째 인자에 msg.sender 를 넣는것과 ownerAddress를 넣는것의 차이점이 무엇인지 알 수 있을까요???
ownerAddress는 토큰 발행 후 토큰을 가지고 있는 지갑의 주소입니다.

일단 ownerAddress 를 넣으시려면, transferToken(address ownerAddress, …) 형태로 인수를 추가해 주셔야겠죠?
msg.sender 의 경우에는 별도의 인자 없이, 해당 컨트랙트를 실행시키는 (트랜잭션에 서명한) 주소를 활용할수 있습니다.

@lorance.call
안녕하세요. 답변 감사합니다!

ownerAddress 는 상수로 관리하고 있습니다.

구현하고자 하는게 사용자가 토큰을 달라고 할 때 amount 만큼 ownerAddress에서 전송해 주려고 합니다.

ownerAddress를 상수로 넣어놔서 다른 사람이 토큰 컨트랙트 주소 및 abi파일만 알 면 토큰을 계속 빼갈거 같은데 혹시 어떤식으로 구현해야 할까요?

transferToken 함수에

required( 조건 ); 을 넣으시면됩니다. 예를들어
mapping(address → bool) allowedAddress;

function addAllowedAddress(address user) {
allowedAddress[user] = true;
}

이런 식의 프로퍼티를 생성하시고,

required(allowedAddress[msg.sender], ‘Not allowed address’);

이런식으로 조건이 부합하지 않은경우 revert 되도록 처리하시면 됩니다.