APIS 의 확장성 #2. Smart Contract on Canvas

안녕하세요 APIS 서포터 여러분,

오늘은 APIS 의 확장성 중 하나인 “Smart Contract on Canvas”에 대해 알아보겠습니다.

비트코인의 비트코인 스크립트가 이더리움의 스마트 컨트렉트로 확장되면서, 스마트 컨트렉트는 현재 대부분의 ICO 모금 활동과 토큰 발행, 신원조회, 분산형 파일 저장소 등 다양한 어플리케이션에 활용되어 블록체인 기반 화폐의 응용 분야를 넓히고 있습니다.

그런데 스마트 컨트렉트를 구성함에 있어서 개발자 중심의 기능 구현에 초점이 맞추어져있는 경우가 많아 사용자의 UI가 고려되지 않은 채 배포되는 스마트 컨트렉트가 대부분을 차지하고 있습니다 . 또한 사용자들이 스마트 컨트렉트를 이용할 때 각 가상화폐에서 제공하는 코어 프로그램이나 웹 기반 응용 프로그램에서 자체적으로 제공하는 UI를 그대로 이용해야 하므로 동일한 스마트 컨트렉트라 하더라도 이용 방법에 편차가 발생할 수 있어 사용자들에게 혼란을 초래할 수 있습니다. 이에 따라 사용자들은 스마트 컨트렉트를 이용하기 위해서 별도의 안내 문구를 제공받거나 경험자의 도움을 받아야하는 경우가 빈번하게 발생하여 스마트 컨트렉트가 대중적으로 보편화되는 데에 어려움으로 작용하고 있습니다. 따라서 가상화폐가 실생활에서 더욱 밀접하게 통용되고 저변을 확대하기 위해서는 스마트 컨트렉트의 UI에 대한 개선이 필요한 실정입니다.

이를 위해 APIS에서는 “스마트 컨트렉트 온 캔버스” 기능을 구현하여 앞서 서술한 문제점을 개선하고자 합니다.

개발자는 스마트 컨트렉트를 블록체인에 배포할 때 HTML 코드로 작성된 UI 요소(캔버스)를 함께 등록할 수 있습니다. 캔버스는 하나의 HTML 파일로 이루어져야하며 내부에 CSS, Javascript, 이미지를 포함할 수 있습니다. Javascript 코드는 난독화(Obfuscation)하여 포함시킬 수 있으나 스마트 컨트렉트 사용자에게 데이터 처리 과정을 공개하기 위해 난독화는 사용하지 않는 것을 권장합니다. 이미지 파일은 Base64 인코딩을 통해 문서에 등록합니다. 캔버스에서 Javascript로 구현된 SmartContract 객체를 호출하여 스마트 컨트렉트로 구현된 메서드를 이용할 있습니다.

캔버스를 구현한 HTML 파일은 블록체인에 저장되지 않으므로 개발자는 캔버스 파일을 웹 주소로 접근 가능한 환경을 제공해야 합니다. 스마트 컨트렉트 내에 CanvasLocation 변수를 생성하여 이 주소를 할당할 수 있습니다. 또한 스마트 컨트렉트에서 캔버스의 은밀한 변경(사용자에게 고지하지 않은 업데이트)을 방지하기 위해 캔버스 코드 전체를 SHA-256 해쉬화하여 스마트 컨트렉트 내의 CanvasHash 변수에 저장해야 합니다. 이를 통해 응용 프로그램에서는 스마트 컨트렉트의 캔버스 존재 여부를 판단하여 GUI를 구성하고 캔버스의 무결성을 검증할 수 있습니다.

감사합니다

APIS team