본문 바로가기

Blockchain113

[회고록] 코드스테이츠 프로젝트 3 시작 (DID 인증 서비스) 아쉬웠던 프로젝트 2를 뒤로하고, 바로 프로젝트 3이 시작되었다. 팀 빌딩을 하고 이번에는 DID와 Klaytn을 이용한 탈중앙화 인증 서비스를 주제로 프로젝트에 참여하게 되었다. 코드스테이츠 UR Class에 DID가 포함되긴 했지만 예제 코드에서도 전체적인 서비스를 빌딩하는 예제가 아니었기 때문에 DID를 선택했다. 또한 ERC-20, ERC-721 토큰을 발행하고 토큰 이코노미를 만드는 작업은 이미 프로젝트1, 프로젝트 2를 거치면서 계속 해왔던 부분이었기 때문에 새롭고, 잘 모르는 부분에 대해 도전하고 싶은 마음이 컸다. 본격적으로 DID를 이용해 W3C에서 표준화 되어 있는 문서를 참고하고, 프로젝트를 어떻게 기획할지 고민하는 시간을 시작으로 프로젝트3가 시작되었다. 이번 프로젝트는 1달 동안 .. 2022. 9. 1.
Decentralized Identifiers(DIDs) Reference 모음 [Youtube] 블록체인 DID CoP 발표내용 https://youtu.be/ATXw5DAUpsA [Blog] DID 및 VC : Web of Trust를 위한 분산된 식별자 및 검증 가능한 자격 증명 풀기 https://dl.acm.org/doi/fullHtml/10.1145/3446983.3446992 [Youtube] Decentralized(DIDs) fundamentals and deep dive https://youtu.be/SHuRRaOBMz4 [w3C] 검증가능한 크리덴셜 데이터 모델 https://ssimeetupkorea.github.io/vc-data-model/ [w3C] 분산 식별자(DID) v1.0 핵심 아키텍처 https://www.w3.org/TR/did-core/ [DI.. 2022. 8. 31.
[Solved] Error: truffle-plugin-verify listed as a plugin, but not found in global or local node modules! Ropsten 네트워크에 작성한 스마트 컨트랙트를 배포하고, Verify 하는 과정에서 에러가 발생했습니다. Error: truffle-plugin-verify listed as a plugin, but not found in global or local node modules! 문제 원인 배포한 컨트랙트를 Verfiy하기 위해서는 Project 디렉토리 내에서 Truffle 폴더를 사용합니다. 하지만 이 때 설치해야 하는 truffle-plugin-verify 모듈을 truffle 프로젝트에서 사용하는데, 이 모듈을 찾을 수 없다는 말입니다. 즉 truffle-plugin-verify 모듈이 Truffle 폴더 외부에 설치되어 있으면, 정상적으로 verify가 불가능합니다. 문제 해결 ① Truffle.. 2022. 8. 22.
Truffle Testing 방법 (Mocha, chai 사용) Truffle 에서 개발, 배포, 테스팅 까지 원큐에 끝낼 수 있습니다. Truffle Test Truffle에서 테스트를 할 수 있는 방법은 2가지가 있습니다. solidity파일로도 가능하고, test.js 파일로도 가능합니다. 두가지 모두 진행해본 결과 개인적으로 js 파일로 테스팅을 진행하는게 안정적이고 빠른 코드 작성이 가능했습니다. 컨트랙트에서 계정을 따로 설정해주는 부분에서 Mocha 테스트 프레임워크 기반의 test.js 이 편했습니다. 1. 컨트랙트 코드 작성 간단한 컨트랙트 코드를 작성합니다. 이름은 Noonoo고 val 변수의 값을 설정하고 읽어오는 컨트랙트입니다. pragma solidity ^0.8.7; contract SampleContract { uint public val; .. 2022. 8. 20.
Truffle develop account 확인 (기본 사용 방법) Truffle은 컨트랙트 코드를 작성하고 배포하기 위한 프레임워크 입니다. 컨트랙트를 배포하기 전 테스팅은 필수이므로, Truffle에서 테스트 기능을 적극 활용해야 합니다. Truffle 프로젝트 시작 우선 프로젝트를 시작하고 네트워크 설정을 해줘야 합니다. Truffle에서 컨트랙트를 배포하고 테스팅을 진행할 네트워크 입니다. 1. 프로젝트 초기화 $ truffle init 프로젝트를 초기화 하면, contracts / migrations / test / truffle-config.js 파일이 담긴 디렉토리가 완성됩니다. 2. 초기 컨트랙트 작성 pragma solidity ^0.8.7; contract SampleContract { uint public val; string public name; .. 2022. 8. 20.
Truffle Ropsten Deploy config migrate Testnet에 컨트랙트 배포 + verify 방법 Truffle은 이더리움 솔리디티로 제작된 스마트 컨트랙트를 컴파일, 테스트, 배포(Migrate) 할 수 있는 프레임 워크 입니다. Truffle에서 컴파일을 진행하면, ABI와 Bytecode 등 컨트랙트를 사용할 수 있는 코드가 작성되고 이를 메인넷이나 테스트넷 혹은 로컬 블록체인 네트워크에 배포하여 사용할 수 있습니다. 로컬 환경에 Truffle로 컴파일 한 컨트랙트 배포하기 Truffle Ropsten TestNet 준비 1. Truffle 프로젝트를 초기화 합니다. $ truffle init NPM을 초기화 해줍니다. $ npm init 프로젝트 구성이 완성됩니다. . ├── contracts │ └── Migrations.sol ├── migrations │ └── 1_initial_migr.. 2022. 8. 12.
[회고록] 첫번째 프로젝트(Opensea) 시작 첫번째 프로젝트를 진행하게 되었습니다. 목표는 Opensea 클론이고, 모든 기능을 다 넣기에는 시간도 우리의 지식도 부족하므로, 제한적인 기능을 Bare-Minimum으로 두고, 추가 기능은 Advanced, Nightmare로 관리하기로 합니다. 프로젝트 : Opensea Clone 스택 : Express, React, IPFS, MySQL, Solidity 기간 : 1주일 1. 기본 기능 논의 Opensea는 NFT(ERC-721) 거래 플랫폼입니다. NFT 민팅과 거래 트랜잭션이 발생해야 하고, 현재 해당 컨트랙트에서 발행된 NFT 토큰들을 모두 출력해서 보여줄 수 있어야 합니다. 기본적인 틀은 이렇지만 추가적으로 포함되는 스택들이 꽤 많습니다. 가장 최소한의 기능 구현을 1차적인 목표로 설정합니.. 2022. 8. 8.
[Blockchain] 이더스캔 서비스 구축하기 이더스캔은 블록체인 네트워크의 Block, Transaction, Account 정보를 조회할 수 있습니다. web3를 사용하면 간단한 어플리케이션을 구축할 수 있습니다. 이더스캔 기능 Account 잔액을 조회할 수 있습니다. Block 정보를 조회할 수 있습니다. Transaction 정보를 조회할 수 있습니다. Github Repository 2022. 8. 4.
[Blockchain] getTransactionsByAccount() 함수 구현하기 이더스캔을 보면 지갑 Account(EOA)나 컨트랙트 Account(CA)를 통해 해당 계정에서 발생한 트랜잭션을 모니터링 할 수 있습니다. 이더스캔의 경우 독립적인 데이터베이스를 두고, 트랜잭션이 발생할 때 마다 DB에 기록하는 방식으로 보여줍니다. Account를 통해 트랜잭션을 확인하는 getTransactionsByAccount 함수를 직접 구현할 수 있습니다. 이 함수를 구현하기 위해 web3.eth.getBlock()와 web3.eth.getTransaction() 함수를 사용합니다. 기본 설정 우선 Web3 모듈을 import 한 후 공급자를 주입해줍니다. 저의 경우는 Infura를 사용해서 엔드포인트 URL을 받아왔습니다. 함수가 작동하는 네트워크는 Ropsten 네트워크 입니다. con.. 2022. 8. 4.
[Blockchain] Web3.js 사용 방법 Web3.js를 통해 이더리움 블록체인 네트워크의 노드와 통신을 구축할 수 있습니다. JSON RPC 형식으로 통신을 지원하며, 노드에 접속하는 엔드포인트는 Infura에서 HTTP, IPC, WebSocket 프로토콜을 사용해 생성할 수 있습니다. Web3.js 개념과 Infura에 대해서는 아래 글을 참고해주세요 [Blockchain] Web3란? 이더리움 블록체인 네트워크를 사용한 Dapp을 만든다는 것은 다른 말로 하면 솔리디티 언어로 스마트 컨트랙트를 개발하는 것과, 블록체인과 상호작용할 수 있는 클라이언트(노드)를 개발하는 about-tech.tistory.com [Blockchain] Infura 사용하는 이유 방법 Infura 사용이유? 일반 사용자가 블록체인과 통신을 하기 위해서는 중간에.. 2022. 7. 29.
[Blockchain] Infura 사용하는 이유 방법 Infura 사용이유? 일반 사용자가 블록체인과 통신을 하기 위해서는 중간에서 브릿지 역할을 해주는 모듈이 필요합니다. 이더리움 블록체인의 경우 클라이언트와 노드를 연결해주는 Web3.js를 통해 블록체인 네트워크에 접근할 수 있습니다. 사실 이더리움 블록체인의 노드에 접근하는 일 뿐만 아니라 Geth(Go Ethereum)같은 클라이언트 프로그램을 통해서 직접 블록체인 내의 노드를 실행할 수도 있습니다. 그리고 해당 노드에 접근하기 위한 엔드포인트를 만들어 직접 관리할 수도 있습니다. 여기서 문제가 발생합니다. 이더리움 블록체인에서 Geth를 실행하면 주변에 있는 피어들과 동기화를 진행하고 블록체인 사본을 다운로드 받기 시작합니다. 이대시, 상태 트리, 블록 들을 다운받으면 용량이 꽤 큰 데이터를 다운.. 2022. 7. 29.
[Blockchain] Web3란? 이더리움 블록체인 네트워크를 사용한 Dapp을 만든다는 것은 다른 말로 하면 솔리디티 언어로 스마트 컨트랙트를 개발하는 것과, 블록체인과 상호작용할 수 있는 클라이언트(노드)를 개발하는 것입니다. 솔리디티로 스마트 컨트랙트를 개발하는 것은 블록체인 내에서 작동하는 프로그램을 만드는 일입니다. 반면 스마트 컨트랙트를 이용하거나, 트랜잭션을 조회하고 생성하는 일은 클라이언트 단에서 실행할 수 있는데, 이 때 사용하는 모듈이 바로 Web3.js입니다. 이더리움 재단에서는 이더리움 블록체인과 상호작용할 수 있는 클라이언트를 개발할 수 있도록 web3.js를 출시했습니다. web3.js를 통해 개발자들은 이더를 전송하거나, 스마트 컨트랙트의 함수를 실행하고 배포할 수 있습니다. 이더리움 블록체인과 클라이언트 상호.. 2022. 7. 29.
[Blockchain] 탈중앙화 신원증명 DID 컨트랙트 개발 DID는 중앙화된 신뢰기관 없이 블록체인 혹은 분산원장 기술을 통해 데이터의 소유자가 자격증명을 처리할 수 있는 기술입니다. DID는 DID Document에 공개키를 등록하고 Issuer에게 VC를 받아 VP를 Verifier에게 제출함으로써 자격증명을 가능하게 합니다. 탈중앙화 신원증명 DID란? DID 졸업증명서 개발 코드 Issuer는 Holder가 요청하는 경우 하나 이상의 Claims 집합인 Verifiable Credential을 발급합니다. 이는 암호화된 검증을 가능하게 하는 변조 방지 Credential입니다. Holder는 발급받은 Verifiable Credential에서 필요한 Claims만 추려 Verifiable Presentation을 생성해 제출할 수 있습니다. 아래 코드는 .. 2022. 7. 26.
[Blockchain] 탈중앙화 신원 증명 방법 DID 이해하기 DID란? 탈중앙화 신원증명(Decentralized Identity)는 데이터의 주권을 개인이 가지고, 중앙화된 인증기관에 의존하지 않고 신원증명을 할 수 있는 기술입니다. 기존에 사용하던 공인인증서나 금융인증서, ID/PW에 대한 주체가 개인이 될 수 있습니다. DID는 SSI(자기 주권 모델)을 분산 원장 기술 혹은 블록체인을 활용해 구현한 모델입니다. 사용자들의 개인 정보는 개인 단말기에 저장한 후 DID와 1:1 매칭되는 DID Document는 블록체인에 저장합니다. 이 후 사용자의 요청에 따라 선별된 개인정보만 추출해 블록체인의 DID Document와 비교해 인증을 마칠 수 있습니다. DID 등장 배경 2000년 초반 이후 PC가 보급되고 인터넷이 보급되기 시작하면서 Web은 눈부신 성장을.. 2022. 7. 26.
[Blockchain] VC VP DID 개념 및 작동 방식 VC(Verifiable Credentials)이란 Credential이란? 먼저 Credential이란 신원확인에 필요한 정보를 의미합니다. 예를 들어 현재 신원을 증명하기 위해 사용되는 수단으로는 주민등록증, 운전면허증이 사용되는데, 이를 물리적인 Credential로 볼 수 있습니다. 물리적인 Credential은 다음 사항을 포함하고 있습니다. 신분증 소유자를 식별할 수 있는 정보(이름, 사진, 주민등록번호 등) 신분증 발급기관(행정안전부, 외교부, 경찰청 등) 발급기관이 보증하는 정보(생년월일, 면허, 국적 등) 신분증 용도(주민등록증, 운전면허증, 여권 등) 신분증 제약조건(유효기간 등) 디지털 환경에서 신원을 증명하고 Credential의 유효성을 보증하기 위해 사용하는 것이 W3C의 Ver.. 2022. 7. 25.