블록체인은 안전한가?
블록체인은 데이터 분산 처리 기술로, 네트워크에 참여하는 모든 사용자가 모든 거래 내역 등의 데이터를 분산 및 저장하는 기술을 지칭하는 말이다. 분산 저장을 하기 때문에 해킹이 거의 불가능하고 중앙 관리자가 없다는 게 특징으로 높은 신뢰성과 보안성을 자랑한다. 그렇다면 블록체인은 100% 안전한 기술인 걸까?
오라클 문제
블록체인에서는 블록체인 밖의 데이터를 오프체인off-chain, 블록체인 안의 데이터를 온체인on-chain이라 한다. 이 때 오프체인 데이터가 온체인 데이터로 바꾸는 것을 오라클oracle이라 한다. 오라클은 현실 세계와 블록체인 중간에서 데이터를 블록체인 안에 넣어주는 사람 또는 장치가 될 수 있다.
그럼 생각해보자. 블록체인 내부에서는 데이터 위변조가 불가능하지만 오라클 쪽에서 위변조가 발생한다면 어떻게 될까? 블록체인으로 관리되고 있다 하더라도 신뢰하기가 어려울 것이다. 이걸 오라클 문제라고 한다.
좀 더 자세한 예시를 들어보겠다.
인형 공장에 블록체인 기술을 적용했다고 해보자. 인형 제작부터 구매자한테 전달하기까지 생산·가공·보관·운송 이력 데이터가 블록체인 내에서 투명하게 관리될 것이다.
하지만 누군가 인형 생산 또는 가공 데이터를 온체인에 넣기 전에 인형 종류를 바꿔 입력하면, 블록체인 상에서는 잘못된 정보가 입력된 건지 확인할 수 없다. 마찬가지로 인형을 배달하는 중에 누군가 인형을 바꿔치기 해간다면, 인형이 제대로 전달되었는지 블록체인 상에서는 확인하기 어렵다. 결국 기술이 문제가 아니라 사람이 문제다
이러한 오라클 문제를 방지하기 위해 투표, 중앙값, 중간자 등 다양한 솔루션이 나왔다. 그 중 하나가 체인링크다.
체인링크
체인링크Chainlink는 오라클 문제를 해결하기 위해 나온 블록체인 미들웨어(중간자) 플랫폼이다. 블록체인 미들웨어 플랫폼은 체인링크 말고도 많지만, 현재 블록체인 분야에서 제일 범용성 있게 사용되고 있는 것이 체인링크이기도 하고, 회사에서 사용중인 솔루션이기도 하여 소개하게 되었다.
체인링크가 다른 오라클 솔루션과 다른 점은 완전히 탈중앙화된 네트워크라는 것이다. 즉 데이터를 제공하는 특정 집단에 대한 신뢰 또는 의존을 제한함으로서 컨트랙트부터 end-to-end 오퍼레이션까지 조작을 불가능하게 해놓았다. 어떻게? 앞서 말했듯이 위변조된 데이터가 들어오면 블록체인을 신뢰할 수 없게 된다는 문제에 대해 체인링크는 세 가지 보완적인 접근 방법을 제시한다.
1) 데이터 소스의 분산 : 여러 소스로부터 데이터를 얻는다. (=데이터 소스의 분산화) 만약 소스의 다수가 올바르게 작동한다면 오라클은 항상 올바른 값을 내놓을 것이다. (특이치를 제거하거나 소스간 의존성을 고려하는 연구도 추진하고 있다.)
2) 오라클의 분산 : 데이터 소스를 분산화 시켰듯 여러 오라클로부터 데이터를 얻어 대표값을 집계시킨다. 결함 있는 오라클에 대한 해결책도 있는데 너무 깊은 기술 얘기라 여기선 생략하겠다-ㅡ-; (여기서 자세히 볼 수 있다.)
3) 신뢰할만한 하드웨어의 사용 :
쉽게 얘기하자면 체인링크는 신뢰할 수 있는 오라클, 데이터들을 모아 집계해서 가장 올바른 값을 제공하는 방법으로 보안성과 신뢰성을 보장한다. 물론 체인링크가 무조건 좋은 건 아니다. 이건 다른 중간자 솔루션에도 해당되는 얘기지만, 탈중앙화를 지향하는 블록체인에서 이러한 중간자 역할은 새로운 형태의 중앙이 될 가능성이 있다. 이에 대한 해결책은 앞으로도 계속 고민해볼 문제다.
체인링크 VRF
현재 체인링크에서 기술적으로 제공하고 있는 기능들은 아래와 같다.
이 중에서도 우린 VRF를 사용해보려고 한다. VRF는 신뢰할만한 랜덤성을 보장해 게임, NFT 프로젝트에서 주로 쓰인다. NFT 프로젝트를 예시로 들어보자면, NFT의 tokenId 마다 고유의 메타데이터를 가지고 있을 것이다. (메타데이터 예시) 만약 랜덤성이 없다면 민팅할 때 나올 tokenId 순서를 파악하기 쉬울 것이고, 그럼 메타데이터 링크에 쉽게 접근할 수 있다는 점을 악용하여 어떤 토큰이 좋은 혜택 또는 기능을 가지고 있는지 미리 파악하고 민팅 순서를 조작할 수 있다. 하지만 VRF를 사용하면 tokenId에 메타데이터가 랜덤하게 매칭되어 조작이 불가능하다.
체인링크 VRF를 사용하는 방법은 다음에 다루도록 하겠다.
참고자료
'블록체인 뿅뿅' 카테고리의 다른 글
체인링크 VRF 사용해보기 (3) Subscription과 컨트랙트 연동하기 (0) | 2023.06.17 |
---|---|
체인링크 VRF 사용해보기 (2) Subscription Manager 사용하기 (0) | 2023.05.28 |
오픈제플린 + 온라인 RemixIDE 로 간단 컨트랙트 구현하기 (0) | 2023.04.09 |
HardHat 튜토리얼 2편 (0) | 2023.03.09 |
HardHat 튜토리얼 1편 (1) | 2023.02.24 |