Blockchain
[Project#2] eth-lightwallet 모듈을 이용한 니모닉 지갑
니모닉(Mnemonic)이란? : 지갑을 복구하기 위한 12개의 단어로, 개인 키가 복잡한 단어들로 구성되어 입력이 불편하다는 단점을 보완하기 위한 형식이다. 암호화폐 지갑은 비대칭키 암호방식을 사용하기 때문에 공개키와 비밀키가 존재한다. 니모닉 단어 목록은 비밀키를 사용자가 쉽게 읽고 쓸 수 있도록 만들어주며, 덕분에 지갑을 백업하기에도 좋다. 니모닉 지갑 개발하기 니모닉 지갑을 직접 구현하지 않아도 손쉽게 만들 수 있게 해주는 라이브러리가 있다. 바로 eth-lightwallet 모듈이다. eth-lightwallet 모듈의 공식 깃허브 GitHub - ConsenSys/eth-lightwallet: Lightweight JS Wallet for Node and the browser Lightweig..
[Project#1] DID를 활용한 백신 증명 시스템
실습으로 진행했던 졸업 증명서를 응용하여 간단한 백신 증명서를 개발했다. COOV를 쓰면서 DID 인증 방식이 어떻게 돌아가는지 궁금했기 때문에 개발 과정도 재미있었다. 이번 프로젝트를 통해 solidity에 대한 이해도를 높히고, 낯가리던 블록체인 기반 dApp 개발에 조금은 친해진 기분이다. 개발 내용과 개발 과정에서 배운점을 회고하면서 앞으로의 방향을 한 번 더 다잡아보자! 1. 요구사항 백신 증명서 내용 백신 제조사 (아스트라제네카/화이자/모더나) 접종차수 (1회/2회/3회) 접종일자 (2021.03.17) 상태 (미인증/인증완료) * 요구사항 작성 중 COOV의 증명서 내용을 참고하였다. 백신 증명서 발급 주체 (Issuer) 정부 정부가 발급 권한을 위임한 기관 주요 기능 정부는 위임 기관을 ..
Error: invalid argument 0: json: cannot unmarshal hex string without 0x prefix into Go struct field TransactionArgs.data of type hexutil.Bytes
Geth console과 Web3를 사용해 스마트 컨트랙트를 이더리움 Ropsten Testnet에 배포하는 과정에서 만난 오류였다. 간단한 스마트컨트랙트 코드를 빌드하고, 컴파일한 결과값 중 바이트코드로 초기화하다가 타입 오류가 일어난 것이었다. 더보기 1. 컨트랙트 코드 // simpleStorage.sol 에 저장 // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.10; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } } 2..
[실습] 자바스크립트로 간단한 니모닉 지갑 (Mnemonic Wallet) 개발하기
니모닉 지갑에 대한 개념은 따로 포스팅하겠다 * 니모닉 지갑에 대해 알아보기 * eth-lightwallet 모듈을 이용하여 간단한 Mnemonic Wallet을 개발하고, API 테스트로 구현한 기능이 잘 동작하는지 확인했다. eth-lightwallet 모듈의 공식 깃허브 GitHub - ConsenSys/eth-lightwallet: Lightweight JS Wallet for Node and the browser Lightweight JS Wallet for Node and the browser . Contribute to ConsenSys/eth-lightwallet development by creating an account on GitHub. github.com 개발 요구 사항 eth-l..
블록체인 심화 (4) - 합의 알고리즘 PoW, PoS, DPoS, BFT, PBFT
합의 알고리즘 합의 알고리즘(Consensus Algorithm)이란? 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘 합의 모델, 합의 방식, 합의 매커니즘 또는 합의 프로토콜이라고도 불림 합의 알고리즘이 필요한 이유 블록체인 시스템의 경우 네트워크에 참여하는 모든 참여자들이 동일한 데이터를 복사하여 분산 저장하기 때문에 원본과 사본의 구별이 없으며, 통일된 의사결정을 내릴 수 있는 권위 있는 중앙(Center)이 존재하지 않는다. 다시 말해, 블록체인의 데이터는 중앙화된 서버 대신 전세계에 흩어져 있는 수많은 노드에 보관되기 때문에, 각각의 노드들은 블록에 기록하는 데이터가 위변조되지 않은 원본이라는 것을 상호간에 합의하는 과정이 필요하다 만약 블록을 생성하는, 특정 노드가 악의를 품..
블록체인 심화 (3) - 비트코인과 이더리움의 트랜잭션 데이터 구조 차이
블록체인 블록체인(Blockchain) = 블록(Block) + 체인(Chain) 블록들이 체인으로 연결되어 있는 구조 블록체인에서 블록의 데이터구조 블록(Block) = 헤더(Header) + 바디(Body) 헤더(Header): 메타데이터 (e.g.버전, 이전블록해시, 머클루트, 타임스탬프, 채굴난이도, 논스) 바디(Body): 트랜잭션들의 리스트 블록은 거래의 기록 단위로 다수의 트랜잭션을 포함할 수 있다. 여기서 헤더에 담기는 메타데이터란 무엇일까? 메타데이터: 다른 데이터를 설명하기 위한 데이터 트랜잭션은 데이터이고, 트랜잭션이 모여있는 블록 역시 데이터이다. 따라서 블록체인의 블록 메타데이터는 다음과 같은 내용을 가질 수 있다고 생각해볼 수 있을 것이다. 이 블록은 체인 중 몇 번째 블록인지 ..