인프런의 클레이튼 강좌를 참고하였고
, 클레이튼을 이더리움으로 바꾸어서 공부하고 있다.
pragma solidity ^0.5.6;
contract AdditionGame {
address public owner;
constructor() public {
owner = msg.sender;
}
function getBalance() public view returns (uint) {
return address(this).balance;
}
function deposit() public payable {
require(msg.sender == owner);
}
function transfer(uint _value) public returns (bool) {
require(getBalance() >= _value);
msg.sender.transfer(_value);
return true;
}
}
관리자가 금액을 컨트랙트에 걸어놓으면, 덧셈 문제를 맞추는 사용자가 일정 금액의 이더를 얻는 디앱을 만들 것이다!
function getBalance() public view returns (uint) {
return address(this).balance;
}
this는 해당 함수가 수행되고 있는 contract의 주소 나타낸다.
constract 의 잔액을 반환
function deposit() public payable {
require(msg.sender == owner);
}
payable
이라서 컨트랙트 전송가능function transfer(uint _value) public returns (bool) {
require(getBalance() >= _value);
msg.sender.transfer(_value);
return true;
}
작성한 컨트랙트의 정상적인 작동을 확인하기 위해 배포전에 remix 를 이용해본다!
현재 getBalance를 통해 본 컨트랙트의 잔액은 0이다.
관리자가 금액을 컨트랙트에 올렸으니 이제 덧셈 문제를 맞춘 사용자에게 이더를 보낼 수 있어야한다.
계정을 바꾸어 준 뒤
이때 ether 가 아닌 wei 단위로 넣어주어준다! 내부에서는 wei 로 처리하고 받기 때문
ether 가 아닌 wei 로 나온다.