[UDC2022] Stacks, Smart Contract

Seokhun Yoon·2022년 10월 30일
0

UDC2022

목록 보기
5/9

“비트코인에만 의존할 필요는 없지만, 당분간은 비트코인 메인넷에 의존할 것”

이번 연사는 스택스 재단의 테크 리드, 마빈 얀센입니다!

스택스는 비트코인과 연결된 체인으로 직접 비트코인에 접근할 수 있어요. 특이하게도 많은 분들이 생소하실 수 도 있는 PoX(Proof of Transfer)라는 합의 알고리즘을 사용하고, 스마트 컨트랙트를 만들기 위한 언어로 솔리디티가 아닌 Clarity를 사용해요. 그리고 Post Condition을 통해 자산을 보호한다고 해요. 그 내용에 대해서 자세히 알아보겠습니다!

Contents

스택스는 “비트코인을 활용한 인터넷을 만들어보자”라는 아이디어에서 출발했다고 해요. 그리고 PoX(Proof of Transfer) 합의 알고리즘을 통해서 비트코인 활용법을 구현했어요. 그럼 먼저 PoX에 대해서 살펴보죠!

PoX에서는 Miner와 Stacker라는 두 종류의 참여자가 존재해요. 채굴자로 선출되기 위해서는 비트코인(BTC)을 소모해야하는데요, 그 자산이 스태커에게 전송이 됩니다. 선출된 채굴자가 채굴을 완료하면 새로 발행된 스택스(STX) 코인을 보상으로 받게 됩니다.

이 방식의 단점은 비트코인에서 블록이 컨펌되는데 걸리는 시간이 그대로 영향을 미친다는 점이에요. 그래서 이를 보완하기 위해 마이크로 블록을 만들었다고 해요. (마이크로 블록에 대한 내용은 여기서 다루지는 않을거에요. 좀 더 상세하게 알고 싶은 분은 미디엄 글을 참고해주세요!)

Miner

채굴자 후보들은 일정량의 BTC를 전송하면, Weighted Random Function을 통해 일정 확률로 Block Leader로 선출돼요. (전송한 BTC/전체 전송된 BTC 값에 비례하여 리더 선출 확률을 부여)

블록 리더들은 일정 기간동안 블록을 채굴할 권한을 갖게 되며, 새로 채굴한 블록을 스택스에 보내야 해요. 채굴이 완료되면, 채굴 보상은 STX로 받으며 트랜잭션 비용도 함께 받게 돼요.

Stackers

스태커는 보유한 STX를 원하는 사이클 기간만큼 락업을 시키고, 보상을 받을 BTC 주소를 제공해야 해요. 그리고 락업한 STX의 비율만큼 BTC를 보상으로 받게 됩니다! (이때 BTC는 채굴자가 지불했던 BTC)

스택스는 Clarity라는 스마트 컨트랙트를 작성할 때 사용되는 자체 언어가 존재해요. 주요 특징으로는 Reentrancy가 불가능하며, Post Condtion을 통해 보안을 강화했다는 점이에요.

Post Condition은 스마트 컨트랙트 호출 마지막에 token balance를 검증하는데 사용되는데요. 이를 이용해서 개발자와 사용자가 스마트컨트랙트를 사용할 때 버그와 남용을 방지할 수 있어요.

또한, 응답은 반드시 확인해야 한다는 특징이 있어요. 컨트랙트 간에 콜이 발생했을 때 그 리턴값을 확인하게 되고, 제대로 실행하지 않았다면 롤백이 진행된다고 해요.

그럼 Clarity를 이용해서 NFT 스마트 컨트랙트를 어떻게 만드는지 살펴볼게요.

문법이 생소하실 수도 있지만 어떤 동작을 하는지 금방 파악할 수 있어요.

여기서는 필요한 상수와 변수를 선언하는 부분이에요. 타입을 지정하는 부분이 길긴 하지만 매우 직관적이에요.

이제 여러가지 함수를 선언하고 있어요. 함수는 define-read-only를 통해서 선언해요.

Clarity를 사용할 수 있는 여러 리소스와 무료 강의를 제공해준다고 하니, 궁금하신 분들은 한 번 확인해보세요!

스택스는 다른 레이어1 솔루션과는 다르다는 느낌을 많이 받았어요. 블록체인 중에서 비트코인과 연결해서 높은 보안성을 갖는 Dapp 서비스를 할 수 있다는게 큰 장점이라고 생각해요. 하지만, Clarity라는 생소한 언어를 배워야 한다는게 개발자 유입에 걸림돌이 될 수도 있을것 같네요.

주요 Q&A

Q: 타 체인에 비해 아직 많은 디앱이 없는데, killer DApp을 위한 앞으로의 계획이 있나요?

A: 비트코인을 거버넌스로 활용하는 프로젝트 등 여러 프로젝트가 진행 중입니다.

Q: 해킹 방지를 위한 기본적인 보안 시스템이 있을까요?

A: post condition을 통해 악의적인 행동을 막을 수 있어요. 또한, 비트코인 레이어에 작성하면 퍼블릭하게 기록이 되고, 포크가 생기려고 하면 누군가 시도하려고 한다는 내용도 공개되기 때문에 보안이 우수해요.

Q: 다른 체인을 도입할 계획이 있나요?

A: 비트코인에만 의존할 필요는 없다고 생각하고, 다른 체인을 도입하는데 관심이 있어요. 실제로 이더리움이나 도지와 같은 체인에 연결할 수 있을지 고민 중입니다. 비트코인을 선택한 이유는 보안의 우수성이고, 당분간은 비트코인에 의존할 예정입니다.

profile
블록체인 개발자를 꿈꾸다

0개의 댓글