💡 Tact?
Tact는 효율성과 단순성에 초점을 맞춘 TON 블록체인을 위한 프로그래밍 언어이다. Tact를 공부하려다 보니 Solidity 와는 다르게 정보가 가 많이 없다. 최대한 여러 다큐먼트들을 찾아보면서 정리해볼 계획. https://tact-lang.org/
일단, Tact는 개발자들이 많이 사용하는 Javascript, Typescript, Rust, Swift 와 비슷해 다른 언어를 사용하는 개발자들이 배우기에 어렵지는 않은편으로 일단은 보인다. 아래 예시를 보면, 문법은 모르지만 코드가 이해는 간다.
receive("increment") {
self.val = self.val + 1;
}
get fun value(input: Int): Int {
return input + self.val;
}
또한, Tact는 TL-B 체계와 호환되는 대수 데이터 유형을 제공한다고 한다. 이는 정수와 같은 데이터 타입에 정확한 범위를 제공하기 때문에 산술 연산이 안전하다는 것을 의미한다고 한다. 또한 Tact Compiler는 자동 검사를 수행하여 예기치 못한 오류를 방지한다고 한다. 아래와 같이 struct 를 정의하는데 문법은 익숙치 않지만 보자마자 이해가 가는 코드이다. solidity 로 변형해보면 아래와 같다.
// tact
struct ContractData {
index: Int as uint32;
admin: Address;
}
// solidity
struct ContractData {
uint32 index;
address admin;
}
solidity에서 low-level에서 코드를 제어하기 위해서는 assembly 언어를 썼듯이, tact에서도 FunC를 쓰는듯하다. (확실하지 X)
자세한 내용은 tact 다큐먼트에서 확인해보길 https://tact-lang.org/
tact가 무엇인지 간단히 살펴보았지만, 아직 감이 오지 않는다. 실제 코드를 보고 개발을 진행하며 tact 라는 언어에 대해 자세히 느껴볼 예정이니 아래 코드를 따라해보자. https://docs.tact-lang.org/
1. 노드 버전 체크 - 노드 버전은 18.0.0 이상이 되어야 함
node --version
2. SimpleCounter 컨트랙트가 있는 프로젝트 생성하기
npm create ton -- simple-counter --type tact-counter --contractName SimpleCounter
위 코드를 실행하니 아래와 같은 출력이 확인된다. blueprint가 hardhat 같은 건가....??
Success!
____ _ _ _ _____ ____ ____ ___ _ _ _____
| __ )| | | | | | ____| _ \| _ \|_ _| \ | |_ _|
| _ \| | | | | | _| | |_) | |_) || || \| | | |
| |_) | |__| |_| | |___| __/| _ < | || |\ | | |
|____/|_____\___/|_____|_| |_| \_\___|_| \_| |_|
TON development for professionals
Your new project is ready, available commands:
> cd simple-counter
change directory to your new project
> npx blueprint build
choose a smart contract and build it
> npx blueprint test
run the default project test suite
> npx blueprint run
choose a script and run it (eg. a deploy script)
> npx blueprint create AnotherContract
create all the necessary files for another new contract
디테일한 부분은 다르겠지만, 솔리디티가 익숙한 나로서는 아래 정도로 이해하고 공부를 시작하면 될 듯.
Tact | Solidity |
Func | Assembly |
Blueprint | Hardhat |
'블록체인 > TACT' 카테고리의 다른 글
[Tact] Bools (0) | 2024.05.15 |
---|---|
[Tact] Integer Opertaions (0) | 2024.05.15 |
[Tact] Integers (0) | 2024.05.15 |
[Tact] Simple 카운터 (0) | 2024.05.07 |
[Tact] getter 함수 (0) | 2024.05.07 |
댓글