【Blockchain】Smart Contract가 유지하는 가상 통화를 조작한다
Smart Contract가 보유한 가상 화폐 취득
스마트 계약이 보유한 가상 통화를 얻는 것은 매우 간단합니다.
우선, 아래와 같이
getBalance
라고 하는 함수를 구현합시다.이 함수는 정보
get
를 얻고 싶으므로 수수료가 부과되지 않도록 한정자 view
를 추가합시다.function getBalance() public view returns (uint) {
return address(this).balance;
}
다음 코드에서
address(this).balance
Smart Contract가 보유한 가상 통화를 얻을 수 있습니다.취득하는 통과 단위는
wei
이므로, ether
로 변환해 취득하고 싶은 경우는, 다음의 함수도 만들어 둡시다.function getBalanceAsEther() public view returns (uint) {
return getBalance() / 1e18;
}
자, 실행하고 확인합시다.
다음과 같이
Value
에 3 ether
를 설정하고 setMessage
에 "Hello World"를 넣어 실행합니다.이제 Smart Contract에
3 ether
를 보냈습니다.그런 다음
getBalance
또는 getBalanceAsEther
를 실행하면 다음과 같이 Smart Contract가 보유한 가상 통화를 확인할 수 있습니다.스마트 계약에서 소유자로 가상 화폐 이동
다음은 Smart Contract가 보유한 가상 통화를 소유자로 이동하는 방법을 설명합니다.
그 전에, 상속 을 설명했을 때, 소유자의 주소를 보관 유지하는 속성을
private
로 하고 있던 곳을 internal
로 변경할 필요가 있습니다. 그렇지 않으면 상속 대상에서 owner
를 사용할 수 없기 때문입니다.※ 덧붙여서,
internal
는, 다른 오브젝트 사고 언어에서는 protected
라고 알려져 있습니다.이제 실제로 가상 통화를 이동하는 함수를 다음과 같이 구현합니다.
function transfer(uint amount) public isOwner { // (1)
require(address(this).balance >= amount); // (2)
owner.transfer(amount); // (3)
}
(1) 우선, 함수는, 오너 이외 실행할 수 있어 버리면(자) 곤란하므로,
isOwner
한정자modifier (을)를 붙입니다.(2) 그런 다음 인수
amount
가 실제로 Smart Contract가 보유한 암호화폐를 초과하지 않는지 확인합니다.(3) 마지막으로 소유자로 가상 통화
amount
분만큼 이동합니다.※ 특히 변환 계산을 하지 않으므로
amount
는 wei
로 지정해야 한다.스마트 계약에서 다른 계정으로 가상 화폐 이동
Smart Contract가 유지하는 가상 통화를 다른 계정으로 이동하는 방법은 다음 함수
transerTo
구현에서 설명합니다.function transferTo(uint amount, address to) public isOwner { // (1)
require(address(this).balance >= amount); // (2)
require(to != address(0)); // (3)
to.transfer(amount); // (4)
}
(1) 인수로 가상 통화를 이동하려는 계정
to
을 정의합니다.(2) 인수
amount
가 실제로 Smart Contract가 보유하는 가상 통화를 초과하지 않는지 확인합니다.(3) 인수
to
가 잘못된 계정이 아닌지 확인합니다.(4) 마지막으로
to
로 가상 통화 amount
분만큼 이동합니다.
Reference
이 문제에 관하여(【Blockchain】Smart Contract가 유지하는 가상 통화를 조작한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/toshiok/items/9a57ca720faaceaa9895텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)