반응형
💡 심플 카운터
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 |
댓글