blockchain(54)
-
랜덤 변수에서 도메인까지, 블록체인 키와 계정 주소
블록체인에서 사용자 별로 보유중인 코인/토큰 수량을 구분하기 위하여 마치 은행의 계좌번호처럼 주소의 개념을 사용한다. 블록체인 개발자들은 이 주소를 어떠한 데이터를 사용하여 어떻게 표현할 것인가에 대해 많은 고민을 하였다. 사용자가 조금이라도 더 쉽게 자신의 계정을 다루기 위해 고민한 흔적들을 확인해본다.이 페이지에서는 UTXO를 사용하는 비트코인 등의 플랫폼에서, 잔액을 추적하기 위해 주소가 가변되어 고정되지 않는 경우는 제외하고 이더리움 같은 account 기반 블록체인 플랫폼을 중심으로 설명한다.Mnemonic 코드위 그림은 대표적인 블록체인 지갑앱인 메타마스크의 화면이다. 처음 메타마스크에 가입을 하고 자신의 주소를 생성할 때에 위와 같은 페이지를 발견했었을 것이다. '왜 이렇게 많은 문자를 기억..
2024.11.14 -
Golang을 이용하여 Solidity smart contract 다루기
보통 Solidity 스마트 컨트랙트를 다룰때는 JS로 되어있는 web3.js나 ethers.js를 사용하여 interaction 하고, 배포시에는 hardhat, truffle을 사용한다. 이들은 모두 javascript 기반이다. 다른 언어를 사용하여 프로그램을 개발한다면 언어 호환에 대한 고민이 있을 수 있다. Go-ethereum에서는 Golang을 기반으로 하는 서버 등의 프로그램에서 다른 언어로 이루어진 라이브러리를 사용하지 않고도 쉽고 편리하게 Solidity 컨트랙트를 다룰 수 있게 하는 기능을 제공하기 때문에 이번 페이지에서는 해당 기능을 소개하고 사용하는 방법에 대해 작성하여 한다.Bind packageGeth는 "bind" package가 존재한다. 해당 패키지의 directory는 ..
2024.11.13 -
Private transaction 전송을 위한 Tessera Overview
Tessera는 Hyperledger Besu나 GoQuorum에서 사용하는 private 보장 기술이다. 앞서 언급된 블록체인들은 모든 사용자에게 오픈된 public chain이 아닌 허가된 참여자가 사용하는 private, permissioned chain이라고 볼 수 있다. 그렇기 때문에, 태생적으로 모든 이들에게 오픈된 블록체인 특성에서 트랜잭션 거래 내역을 숨길 용도로 개발되었다. Tessera가 어떤 식으로 동작하는지 확인해본다.TesseraTessera가 적용된 블록체인 플랫폼을 확인해보면 알 수 있듯이 EVM 상에서 privacy를 보장하기 위한 기술이다. Java 기반으로 만들어져 있어 Hyperledger Besu와 더 밀접해 보이지만, Golang으로 개발된 GoQuorum에서도 AP..
2024.11.08 -
블록체인 기반 인증 서비스, DID
DID(Decentralized Identifiers)는 블록체인을 다루고 있다면 한번쯤은 들어 봤을 것이다. 블록체인을 다루지 않았더라도, 대한민국 사람들은 코로나19 시기에 DID를 어렵지 않게 만나 봤을 것이다. 백신 접종 시스템인 Coov를 사용하여 식당, 마트 등에서 QR코드로 백신 접종자라는 것을 인증하고 출입을 해본 경험이 있을텐데, Coov가 바로 DID를 적용한 신원인증 시스템이다. 이렇듯 DID는 '인증'이라는 개념으로 다른 블록체인 기반 서비스보다 일반 사용자들에게 친숙하게 다가갈 수 있는 서비스인데, 이번 글에서는 이 DID에 대한 개념과 기본적인 동작 방식에 대해 정리해보려 한다. Why DID? 왜 DID를 사용하는 것인가에 대한 물음에 먼저 답을 하기 위해서는, SSI(Self..
2023.12.18 -
CosmWasm 컨트랙트 개발 시 전략과 신경 쓰면 좋은 점
필자도 다양한 컨트랙트를 개발해 봤고, 서비스에도 적용해 봤지만 아직 많이 부족하다는 것을 안다. 그래서 항상 개발 중간중간에 제대로 개발했는지 확인하고, 나름대로 정한 전략에 맞는 개발을 하는지 확인 하는 습관을 가지려고 노력한다. 아래 글은 어느정도 개발 수준의 레벨에서는 당연한 말들이지만, 컨트랙트 개발 입문 단계의 레벨에서 지속적으로 신경 써서 개발하면 좋을 것 같은 항목들을 정리한 내용이다. 개인적인 생각이기 때문에 다른 사람들과 맞지 않을 수 있지만 공유해보면 좋을거 같아서 글을 작성한다. 1. 실행 주체가 누군지 명확히 컨트랙트를 execute하는 행위는 가장 기본적인 행위이다. 이 때 execute 트랜잭션 메시지를 보내는 행위자가 누군지 명확히 생각하며 개발하는 것이 가장 중요하다. 실행..
2023.11.01 -
ZK rollup - 4. zk-SNARK의 Circuit & QAP
Roll up Series [Blockchain/Roll up] - Rollup의 개념과 특성 [Blockchain/Roll up] - ZK rollup - 1. 목적/library [Blockchain/Roll up] - ZK rollup - 2. ZKP [Blockchain/Roll up] - ZK rollup - 3. zkEVM 프로젝트 [Blockchain/Roll up] - ZK rollup - 4. zk-SNARK의 Circuit & QAP 앞선글에서 zk rollup으로 L2를 구현 시 EVM 호환성이 힘들다는 언급을 한적이 있다. EVM의 로직 처리에 대해 모두 구현하는 것이 힘들다는 것이 이유인데, 이번 글에서는 zk-SNARK 적용 시에 어떠한 과정이 숨어 있기 때문에 힘든 것인가를 확..
2023.09.21