: 서면으로 이루어지던 계약을 코드로 구현하고 특정 조건이 충족되었을 때 해당 계약이 이행되게 하는 script
스마트 컨트랙트를 사용 -> 두 당사자가 서로를 모르거나 신뢰하지 않더라도 계약 체결 가능
스마트 컨트랙트는 조건에 맞는 정확한 작동을 수행하는 능력 有
블록체인에서 정의된 불변의 프로그램
불변 (immutable) : 한 번 배포되면 변경 불가
결정적 (deterministic) : 실행한 결과가 모두 같음
EVM 위에서 동작
탈중앙화된 Word Computer 동일한 상태를 유지
Run을 시키기 위해선 몇 가지 정보를 요구함
-unit public fundRaisingCloses : 해당 펀드가 언제 끝나는지 정의하는 unit 함수
contract FundRaising {
unit public fundRaisingCloses;
address public beneficiary;
constructor(unit _duration, address _beneficiary){
fundRaisingCloses = block.timestamp + _duration;
beneficiary = _beneficiary;
}
}
최소 모금액 : 0.01 ether
이더리움 기본 단위 wei
10^18 wei = 1 ether
1e16 == 0.01 ether == 10**16
단위 wei,ether 등
** : 지수 연산자
function fund() public{
}
조건문 if
- 논리형 변수 : bool
전송한 이더가 최소 금액 조건을 만족하는지 판별
모금 유효시간인지 판별
유효성 체크 함수
- require(판별문, "에러 메시지");
require(msg.value>= MINIMUM_AMOUNT, "MINIMUM AMOUNT : 0.01 ether");
require(block.timestamp < fundRaisingCloses, "FUND RAISING CLOSED");
if문을 require로 대체 가능
-요구사항
1. 현재까지 모금된 금액을 누구나 확인할 수 있다.
이더 전송이 일어나는 payable 함수
함수 modifier 작성
address의 멤버 : balance, transfer
- 컨트랙트가 보유한 이더 :