CosmWasm
# 개요
- Cosmos SDK 기반의 Blockchain에 WebAssembly 기반의 Smart contract runtime을 제공하는 module
# 도입 동기
- 원래 Cosmos SDK 진영은 Smart contract 보다는 여러개의 고성능 App chain (aka. Application-specific Blockchain)을 만들고 이들을 IBC(Inter-Blockchain Communication)로 연결하는 개념을 지향. 즉, dApp마다 Blockchain을 따로 운영하는 개념을 추구
- 하지만 현실적인 문제들 발생
- dApp 로직 수정시 chain upgrade필요. 이 과정이 큰 작업이고 breaking change면 더욱 번거롭다
- app chain 별로 validator를 구해야 한다. 소형 dApp사가 진행하기엔 무리
# 왜 CosmWasm 인가?
- WebAssembly는 언어에 종속적이지 않다
- 현실은 Rust말고는 어렵긴 하지만 LLVM 상의 언어를 모두 포함할 예정
- Actor model을 도입하여 EVM의 Reentrancy 공격을 원천차단한다. 즉, 더 안전한 runtime이다
- 실행속도가 빠르다
- Code와 instance의 분리