본문 바로가기

:D/block chain

[Solidity] Msg.sender

 

 

솔리디티에는 모든 함수에서 이용 가능한 특정 전역 변수들이 있음.

참고 (https://solidity-kr.readthedocs.io/ko/latest/units-and-global-variables.html#)

그 중 하나가 현재 함수를 호출한 사람 (혹은 스마트 컨트랙트)의 주소를 가리키는 msg.sender

(솔리디티에서 함수 실행은 항상 외부 호출자가 시작. 컨트랙트는 누군가가 컨트랙트의 함수를 호출할 때까지 블록체인 상에서 아무것도 안 하고 있기 때문에 항상 msg.sender가 있어야 함.)

 

 

msg.sender를 이용하고 mapping을 업데이트하는 예시

 

 

mapping (address => uint) favoriteNumber;

function setMyNumber(uint _myNumber) public {
  // `msg.sender`에 대해 `_myNumber`가 저장되도록 `favoriteNumber` 매핑을 업데이트한다 `
  favoriteNumber[msg.sender] = _myNumber;
  // ^ 데이터를 저장하는 구문은 배열로 데이터를 저장할 떄와 동일하다 
}

function whatIsMyNumber() public view returns (uint) {
  // sender의 주소에 저장된 값을 불러온다 
  // sender가 `setMyNumber`을 아직 호출하지 않았다면 반환값은 `0`이 될 것이다
  return favoriteNumber[msg.sender];
}

 

 

 

setMyNumber을 호출하여 본인의 주소와 연결된 우리 컨트랙트 내에 uint를 저장할 수 있음

msg.sender를 활용하면 자네는 이더리움 블록체인의 보안성을 이용할 수 있게 됨

즉, 누군가 다른 사람의 데이터를 변경하려면 해당 이더리움 주소와 관련된 개인키를 훔치는 것 밖에는 다른 방법이 없다는 것.

' :D > block chain' 카테고리의 다른 글

[Solidity] 상속  (0) 2022.02.15
[Solidity] Require  (0) 2022.02.15
[Solidity] Mapping 과 Address  (0) 2022.02.15
[Solidity] Keccak256과 형 변환  (0) 2022.02.15
[Solidity] 함수의 반환값과 함수 제어자  (0) 2022.02.15