좋은 크립토 프로덕트란 어떤것일지 생각하며 정리해보았습니다.
프로덕트 관점에서 크립토 프로덕트의 특징은?
- 편리함보다는 탈중앙성, 투명성, 거버넌스라는 합의절차에 가치를 둡니다.
- 편리함을 위해서라면 굳이 블록체인을 이용할 필요가 없는 경우가 많습니다.
- 거래가 즉시 이뤄져야하는 경우 블록체인은 적합하지 않을 수 있습니다.
- 블록체인의 데이터는 검열, 위변조가 불가능 하지만 대용량 데이터를 처리하기는 어렵습니다.
- 지속가능한 프로덕트를 위해 크립토이코노미 설계가 매우 중요하고, 더 나은 서비스를 위한 고민을 계속해야 합니다.
대부분 오픈소스 기반이라 복제가 쉽고 가격상승 기대감에 의한 거품이 끼어있어 유사한 서비스가 생기고 사라짐을 반복합니다. 그 중 기존의 것을 유지하면서도 문제해결을 위해 새로운 아이디어를 적용한 프로젝트들이 주목을 받는 편입니다. (예를들어 유니스왑은 잔여 유동성 문제를 해결하기위해 v3에서 유동성공급 알고리즘을 업데이트함) 가격 불안정이라는 위험성때문에 일드파밍의 경우 일주일이면 사용자가 급속하게 줄어들고 가격도 함께 나락으로 갑니다..
- 커뮤니티형성이 프로젝트의 성공에 영향을 미칩니다.
- 신속한 커뮤니케이션
- 아이디어 확장과 문화 형성
크립토프로덕트 특성상 고객은 서비스 출시나 에어드랍 등의 이벤트 소식을 빠르게 받기를 선호합니다. 그래서 트위터 외에도 텔레그램, 디스코드 등을 운영하며 최신 소식을 전달합니다.
루트프로젝트처럼 커뮤니케이션을 통해 아이디어가 계속해서 확장되는 경우도 있으며, SNS 프로필사진을 nft로 한다던가 토큰관련 밈을 만들고 공유하며 즐기는 문화로인해 커뮤니티가 형성되고 토큰의 인기와 가격상승으로 이어지기도 합니다.
프로덕트를 만들때 Web2와 다르게 중요한점과 주의해야할 점은?
- 프로덕트의 성격에 따라 확장성, 보안성, 투명성을 고려하여 블록체인에 기록할 데이터와 비즈니스로직을 설계해야합니다.
- 퍼블릭 블록체인의 경우 기록되는 데이터를 누구나 볼 수 있기때문에 개인정보 등 보안이 필요한 정보를 기록해서는 안됩니다. Defi처럼 백엔드서버없이 스마트컨트랙트를 이용한 탈중앙성을 중요하게 생각하는 프로덕트라면 컨트랙트코드를 포함한 모든 데이터가 블록체인에 기록 되므로 더욱 주의해야 합니다.
- 프로덕트에 크립토를 이용하는 목적과 고객의 성향에 따라 블록체인에 기록할 데이터가 무엇인지 기준을 정해야합니다. 단순히 암호화폐 지불과 거래가 목적이라면 잔액과 거래사실이 체인에 기록되는것으로 충분합니다. 그러나 스마트컨트랙트를 사용하는경우, 데이터의 저장위치를 고려하여 설계해야합니다.
- 투명한 기록관리나 증명, 혹은 기타의 이유로 반드시 체인에 기록되어야하는 프로세스가 아니라면 컨트랙트와 분리하여 비즈니스로직을 구현하고 결과데이터는 DB에 저장하는것이 좋습니다. 또한, 트랜잭션 추적이 필요한경우와 결과데이터를 체인에서 쉽게 확인하고 싶을때는 이벤트함수를 이용합니다.
- (이더리움)컨트랙트 이용시 가스비를 고려하고 보안 취약점에 유의해야합니다.
- 컨트랙트의 길이와 연산의 종류에따라 가스비가 늘어남을 주의해야합니다. 가스비 절약을 위해 여러가지 트릭을 사하거나 체인상에 이미 존재하는 라이브러리나 다른 컨트랙트의 코드를 사용할수있습니다. 그러나 재사용된 코드의 데이터를 수정할수는 없다는점을 데이터 설계시 함께 고려해야합니다.
- 컨트랙트를 재사용할 경우 검증된 것을 이용해야합니다. 발견되지 않은 취약점이 있거나 컨트랙트가 소유자에의해 업그레이드될 수도 있음을 주의해야합니다.
- 진입장벽을 낮추기위한 사용자경험 개선이 필요합니다.
- 앞으로 더 많은 사람들이 크립토 서비스를 이용할 수 있도록..!
- 자세한 내용은 아래에 이어서 적겠습니다.
사용자경험 개선을 위한 설계와 고려해야할 점
현재 대부분의 크립토 프로덕트는 사용자가 블록체인의 메커니즘을 잘 이해하고 있다고 가정합니다. 도큐먼트나 화이트페이퍼에 설명이 되어있기도 하지만 블록체인과 해당 서비스에 대한 지식 없이는 용어가 낯설고 바로 이해하기 어려운 경우가 많습니다. 정보 없이 직관적인 이용이 가능하면 베스트지만 서비스의 기능에 따라 적절한 안내와 보충설명이 필요합니다.
UXUI에 대해서는 별도로 정리하였습니다.
Web3 지갑을 사용하면서 발생하는 복잡성을 개선
각종 거래에 블록체인을 이용하므로 일반적인 결제시스템이아닌 Web3 wallet을 사용합니다. 이 절차가 익숙하지 않은경우 서비스 사용에 어려움이 있습니다.
1. 각종 규제
지갑에 암호화폐를 소유하기위한 과정부터가 만만치 않습니다. 국내의경우 정부의 규제로인해 카드결제도 거의 안될뿐더러 은행에서 국내 거래소로, 또 해외 거래소나 지갑까지 화폐를 이동시키기위해 며칠을 소요해야합니다.
2. 크립토 프로덕트의 문제와 개선
1) 서비스마다 지원하는 네트워크와 지갑이 다릅니다.
- 서비스에 맞는 네트워크로 지갑의 네트워크 전환을 바로가능하게 한다.
- 지갑의 네트워크 전환이 필요할때
😨 네트워크 전환을 유도하는 메시지만 있는경우1
😨 네트워크 전환을 유도하는 메시지만 있는경우2
😃 버튼 클릭시 바로 전환 가능한 경우
- 사용자의 선택의 폭이 넓어지도록 최대한 많은 지갑을 지원한다.
2) 거래할 때마다 수수료를 부담해야합니다.
- 최대한 적은 인터랙션으로 원하는 거래가 가능하도록 설계한다.
- 서비스에서 수수료를 지원한다.
3) 로그인을 지갑을 통한 서명으로 대신하기 때문에 신원인증과 해당 주소로 가입한 서비스에대한 관리가 어렵습니다.
- ens 등을 활용한 인증서비스를 이용한다.
4) 거래에 문제가 있는경우 대처할 수 있어야합니다.
- 문제 발생을 미리 방지한다.
- pending을 막기위해 가스비를 높게 자동 세팅
- 문제 케이스를 감지하고 이에 대한 추가적인 안내를 한다.
- 잔액 부족으로 트랜잭션 실패
- 가스비가 부족해 거래가 지연됨
- 트랜잭션을 취소하고 싶을 때
- 문제에 대처할 수 있는 적합한 지갑 이용을 권한다.
- 컨트랙트 주소를 표기하여 직접 접근할수 있게 한다.
5) [wallet] 지갑을 생성하고 키를 따로 관리하기가 불편합니다.
- 비밀키를 지갑 서버에 저장하고 이에대한 안내와 안전을 보장한다.
- 기존에 사용하던 키를 추가하여 사용할수 있도록 한다.
기타
- 이용하는 Web3 기술에 따른 특징을 고려해야합니다.
- NFT서비스 등에서 데이터 손실을 방지 하기 위해서는 IPFS를 자체적으로 운영해야한다.
- 신뢰있는 기관으로부터 검증된 컨트랙트를 사용하여 믿을수 있는 서비스를 제공해야합니다.