본문 바로가기
블록체인/TACT

[Tact] Simple 카운터

by 제이제이_은재 2024. 5. 7.
반응형

 

💡 심플 카운터

https://tact-by-example.org/01-a-simple-counter

 

사용자 요청에 따라 값을 1씩 증가시키는 카운터를 아래와 같이 구현했다.

get fun 이 getter 함수였다면, receive 가 tact에서는 setter 함수인 듯하다. 처음에 눈으로 훑었을 땐, 솔리디티의 event 를 recieve 로 표현하나 싶었는데 그게 아니였다.

contract Counter {
 
    // persistent state variable of type Int to hold the counter value
    val: Int as uint32;
 
    // initialize the state variable when contract is deployed
    init() {
        self.val = 0;
    }
 
    // handler for incoming increment messages that change the state
    receive("increment") {
        self.val = self.val + 1;
    }
 
    // read-only getter for querying the counter value
    get fun value(): Int {
        return self.val;
    }
}



위 코드를 보며 확인한 점은 init() 부분이다. tact에서 모든 상태 변수들은 컨트랙트가 배포될 때 initialize 를 해줘야 한다는 점.

 

아래와 같은 순서로 컨트랙트를 배포 후, 테스트한 결과는 아래와 같다.

1) 컨트랙트 배포

2) Send increment

3) Get value

> 📝 Deploying contract:
Message sent: empty, from deployer, to contract, value 1, not bounced
Transaction Executed: success, Exit Code: 0, Gas: 0.003199

> 📤 Sending message increment:
Message sent: "increment", from deployer, to contract, value 1, not bounced
Transaction Executed: success, Exit Code: 0, Gas: 0.003743

> 🔍 Calling getter value:
Return value: 1

 

솔리디티로 다시 변경해보면 아래 정도로 구현할 수 있을 것 같다.

contract Counter {
    uint32 val = 0;

    function increaseCounter() public {
        val++;
    }

    function value() public view returns (uint32){
        return val;
    }
}

 

 

반응형

'블록체인 > TACT' 카테고리의 다른 글

[Tact] Bools  (0) 2024.05.15
[Tact] Integer Opertaions  (0) 2024.05.15
[Tact] Integers  (0) 2024.05.15
[Tact] getter 함수  (0) 2024.05.07
[TACT] TON 블록체인 개발을 위한 언어  (0) 2024.05.07

댓글