본문 바로가기

Blockchain113

[Blockchain] DID 자기 주권 신원(SSI)이란? DID와 SSI SSI(Self-Sovereign Identity)는 블록체인 기술을 근간으로 자신 스스로를 증명할 수 있는 정보를 스스로 관리 및 저장하고, 신원증명이 필요한 서비스를 이용하는 경우 사용자가 직접 관리하여 데이터 주권을 스스로 가지는 기술 개념입니다. DID는 SSI를 탈중앙화 방식으로 구현한 자기 주권형 신원증명 기술이라고 할 수 있습니다. SSI는 큰 개념으로 사용자가 자신의 신원정보를 스스로 관리하고, 공개 범위를 결정할 수 있도록 하여 프라이버시를 높이는 개념으로 여러가지 구현방법 중 하나가 DID라고 할 수 있습니다. 즉 DID는 SSI를 블록체인으로 현실화 한 것이다라는건 반은 맞고 반은 틀린 말입니다. SSI를 탈중앙화 방식으로 구현하는 방법 중 하나가 블록체인입니다. SS.. 2022. 7. 25.
[Blockchain] W3C DIDs 탈중앙화 식별자 표준 W3C는 DIDs로 DID(Decentralized Identity)를 구현하는 기술을 표준화하였습니다. 탈중앙화 식별자(DIDs, Decentralized Identifiers) DIDs는 탈중앙화되어 있으며, 검증가능한 새로운 식별자 입니다. 현재 사용하고 있는 ID, Password와 유사한 개념입니다. 누구든 DID Method로 자신의 주소를 생성할 수 있고, DIDs는 마스터키를 활용해 생성할 수 있습니다. DIDs의 개념은 Identity(식별자), DID 문서(DID Document), DID Method로 구성됩니다. Identity(식별자) 개인 또는 단체를 구분하는 고유한 데이터입니다. 간단한 예로 이메일 주소를 꼽을 수 있습니다. 이메일은 특정 사용자를 구분할 수 있는 유일한 식별자.. 2022. 7. 25.
[Blockchain] W3C 데이터 탈중앙화 표준 DID란? DID란 무엇인가? DID(Decentralized Identity)는 데이터의 주권을 개개인이 가지고 있고, 중앙집중화된 시스템을 거치지 않고 신원을 증명할 수 있는 기술입니다. DLT(Distributed Ledger Technology, DLT) 기술을 기반으로 유저의 데이터를 저장하고 인증할 수 있도록 합니다. DID를 구성하는 요소는 데이터 저장소(Registry), 데이터 제공자(Provider), 인증기관(Certificate Authorities)로 구분되고, 탈중앙화 방식으로 작동합니다. DID를 구현하는 기본 기술은 SSI(Self-Sovereign Identity)입니다. DID가 등장하게 된 배경은? 현재도 사용중인 월드 와이드 웹(WWW, W3C)는 인터넷에 연결된 각 컴퓨터들이 .. 2022. 7. 25.
[Blockchain] 블록체인 샤딩(sharding) 이란? 샤딩(sharding) 이란? 샤딩(Sharding) 조각내다라는 뜻을 가지고 있고 규모가 큰 데이터베이스 혹은 네트워크에서 여러개의 작은 조각으로 쪼개어 분산 저장/관리하는 방법을 의미합니다. 작은 조각으로 쪼갠 블록들의 구간(Epoch)를 샤드(shard)라고 부릅니다. 블록체인에서 각 노드들은 체인의 사본을 저장하는데, 만약 데이터의 규모가 큰 경우 샤딩을 통해 빠르게 데이터 검증이 가능하고 결과적으로 트랜잭션의 속도를 향상시키게 됩니다. 기존 데이터베이스에서 샤딩(sharding)은 수평 분할의 대표적인 방법입니다. 블록체인에서의 샤딩은 전체 블록체인 네트워크를 분할하고 트랜잭션을 영역별로 저장하게 됩니다. 병렬적으로 트랜잭션을 처리하면서 블록체인이 해결해야할 확장성을 부여하는 온체인 솔루션으로 .. 2022. 7. 22.
[Blockchain] 이중 지불 문제란? 이중 지불(Double Spending)은 블록체인에서 반드시 해결해야할 이슈입니다. 디지털 자산이 두명의 수신자에게 동시에 전송되는 문제를 의미합니다. 예를 들어 철수가 영희에게 100만원을 보내는데, 송금이 다 처리되기도 전에 민수에게 다시 100만원을 전송한다고 가정합니다. 철수는 자신이 가지고 있는 100만원이라는 자산을 단순 복사해서 2명에게 동시에 전달합니다. 정상적인 경우 트랜잭션의 ACID 특성을 가지므로 1개의 송금이 먼저 처리되면서 민수에게는 송금이 되지 않을 것입니다. 하지만 이중 지불이 가능한 공격에서는 몇번이고 자산을 복제해서 다른 계정으로 전송하는게 가능해집니다. 디지털 자산의 복제를 방지해야만 디지털 자산을 현금처럼 사용할 수 있습니다. 따라서 이중 지불 문제를 해결하기 위해 .. 2022. 7. 22.
[Blockchain] Local 환경에서 NFT 민팅하는 방법 로컬 환경에서 NFT 발행하기 NFT를 민팅해서 OpenSea 플랫폼에서 판매도 가능하지만 테스트 목적으로 NFT를 발행하는 경우 Local 환경에서도 가능합니다. 로컬 환경에서 컨트랙트를 블록체인에 배포하고, NFT를 발행하기 위해서는 Ganache와 Truffle를 사용합니다. 우선 Truffle 환경을 준비합니다. $ truffle init Starting init... ================ > Copying project files to /home/ys/project/BEB_05/22_ERC721/02_ERC721_truffle Init successful, sweet! Try our scaffold commands to get started: $ truffle create contrac.. 2022. 7. 21.
[Blockchain] OpenSea NFT 민팅 하는 방법 OpenSea는 NFT를 거래하는 대표적인 플랫폼입니다. OpenSea에서 지원하는 블록체인은 이더리움, 폴리곤, 솔라나, 클레이튼이 있습니다. 테스트넷으로는 이더리움 Rinkeby와 클레이튼의 Baobab을 지원하고 있습니다. OpenSea에서 이더리움 메인넷으로 테스트를 진행하기에는 민팅 비용이 상당하기 때문에 Rinkeby 테스트넷으로 NFT를 진행합니다. NFT를 발행하는 순서는 다음과 같습니다. ERC-721 표준을 사용해 컨트랙트 배포 tokenURI를 AWS S3에 배포 배포된 컨트랙트를 사용해서 NFT 민팅 Sell 시작 ① ERC-721 컨트랙트 컴파일 & 배포 ERC-721 컨트랙트를 컴파일/배포 하기 위해 Remix를 사용합니다. 먼저 Rinkeby 테스트넷에서 사용할 Rinkeby .. 2022. 7. 21.
[Blockchain] NFT 만드는 법 (ERC-721 표준 사용) ERC-721 컨트랙트 컴파일 ⓐ Remix IDE를 실행합니다. ⓑ 새로운 프로젝트를 실행하고 contracts 폴더에 testNFT.sol 파일을 생성합니다. ⓒ openzeppelin에서 제공하는 라이브러리를 사용해 ERC-721 컨트랙트 코드를 다음과 같이 작성합니다. NFT를 민팅하기 위해서는 NFT Mint 함수를 작성해줘야 합니다. //SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; import "@openzeppelin/contracts/access.. 2022. 7. 20.
[Blockchain] ERC-721 구조? ERC-721 표준은 NFT(대체 불가능한 토큰, Non-fungible Token)을 발행하는 스마트 컨트랙트를 정의하고 있습니다. ERC-20을 기본으로 해서 제작되어 유사한 함수를 가지고 있지만, 특정 자산에 대해 대체 불가능 토큰을 발행한다는 점과, 소유권을 이전할 때 이전가능한 수량을 지정하지 않고, 전체 토큰을 양도하는 점이 다른 부분입니다. NFT란 같은 스마트 컨트랙트로 발행한 토큰이라고 할지라도, 토큰에 지정되는 대상에 따라 토큰의 가치는 다른 가치를 가지게 되는 것입니다. 만약 동일한 keyboard에 저의 SIGN이 들어간다면 이 키보드는 세상에 1개 밖에 존재하지 않는 유일한 키보드가 됩니다. [Blockchain] ERC-721 vs ERC-20 차이점 (NFT vs FT) ERC.. 2022. 7. 20.
[Blockchain] ERC-721 vs ERC-20 차이점 (NFT vs FT) ERC-721 표준 스펙은 이더리움 블록체인에서 NFT(Non-Fungible Token)을 생성하는 표준입니다. 이더리움 개선 제안인 EIP에서 721번째 토론에서 나온 표준이며, 구분 가능한(대체 불가능한) 토큰 발행에 대한 기술적인 표준을 담고 있습니다. EIP-721은 이더리움 커뮤니티에서 동의를 얻어 ERC-721로 최종 정의되었습니다. ERC-721을 통해 발행되는 대체 불가능한 토큰으로 가상 공간의 디지털 자산이나 주택, 예술작품 등 물리적 자산에 대한 소유권을 주장할 수 있게 됩니다. 소유권을 주장할 수 있는 이유는 개별 NFT들은 고유한 값을 가지며, 식별가능하기 때문입니다. NFT의 소유권 증명 예술품이나 명품 가방을 구매하면 진품을 보증하는 Certificate가 동봉됩니다. 이 문서.. 2022. 7. 19.
[Blockchain] KIP-7 vs ERC-20 차이점? 이더리움에 ERC-20이 있다면 클레이튼(Klaytn)에는 KIP-7이 있습니다. ERC-20을 기반으로 제작되었고, 대체 가능 토큰(FT, Fungible Token)을 생성하는 기술 표준입니다. 대체 가능한 토큰(FT)는 각 토큰 단위가 동일한 가치를 가지고 가용 토큰간 상호 교환이 가능합니다. KIP-7으로 제작된 토큰은 표준 인터페이스를 통해 클레이튼 블록체인에서 지갑부터 DEX까지 여러가지 애플리케이션에 사용될 수 있습니다. ERC-20에서 토큰을 발행해 이더리움 블록체인 위에서 상호교환할 수 있는 기능을 그대로 사용할 수 있으며, 추가된 기능도 함께 사용가능합니다. KIP-7 vs ERC-20 KIP-7에서는 ERC-20에서 제공하지 않는 부가 기능을 제공합니다. 대표적으로 mint, burn.. 2022. 7. 18.
[Blockchain] ERC-20 투표로 관리자 owner 설정 하는 방법 ERC-20 토큰은 이더리움 블록체인 네트워크에서 대체 가능한 토큰을 발행하는 기술 표준입니다. 이더(ETH)와 교환가능하며, 이더리움 블록체인 위에서 발행된 토큰들과 SWAP이 가능한 토큰을 발행하기 위해서는 ERC-20 표준을 지켜서 토큰을 발행해야 합니다. 토큰을 발행하는 ERC-20에는 관리자 계정이 존재합니다. 관리자는 자신의 권한을 다른 사용자에게 넘길 수 있고, 계정의 Lock 을 잠그거나 해제할 수도 있습니다. 1명의 관리자에 의해 관리자 권한이 관리될 수 있지만 좀 더 민주적인 방법인 투표를 통해 관리자 권한을 관리할 수 있습니다. ① 총 3명의 사용자가 관리자 후보로 등록됩니다. 이 때 관리자 후보로 등록하는 권한은 현재 관리자만이 할 수 있습니다. ② 총 3명의 관리자가 투표하고 가장.. 2022. 7. 18.
[Blockchain] Truffle(트러플) 프레임워크 사용법(개발 배포 테스트) Truffle framework는 솔리디티로 스마트 컨트랙트 개발시 배포/테스트 환경을 제공합니다. node.js 위에서 작동하며 NPM으로 설치합니다. Truffle을 사용하기 위해서는 NodeJS Version 5.0이상이 필요하며, JSON RPC API를 지원하는 이더리움 클라이언트가 필요합니다. Truffle 설치방법 Truffle은 npm으로 설치합니다. 전역으로 설치해줍니다. $ npm install -g truffle Truffle 프로젝트 생성하기 먼저 Simple Project를 생성합니다. truffle init은 프로젝트 기본 틀을 구성합니다. $ mkdir simple $ cd simple $ truffle init contracts : 솔리디티로 개발된 스마트 컨트랙트 소스 파일.. 2022. 7. 15.
[Blockchain] 가나슈(Ganache) 로컬 테스트 환경 구축하기(설치방법 사용법 메타마스크 연동) 가나슈(Ganache)는 가상 이더리움 네트워크를 구축하여 스마트 컨트랙트를 테스트할 수 있는 툴입니다. Ganache를 통해 생성된 가상 환경을 TestRPC라고 부릅니다. 일반적으로 스마트 컨트랙트를 개발하고 배포할 때 먼저 TestRPC에서 로컬환경 개발을 진행하고, TestNet에서 개발이 완료된 컨트랙트를 MainNet과 동일한 환경에서 테스트를 진행합니다. 최종적으로 실제 서비스에 사용될 수 있도록 MainNet에 배포하는 과정을 거치게 됩니다. TestRPC => TestNet => MainNet 가나슈(Ganache) 우분투 20.04 LTS 설치하기 우선 Appimage 파일을 다운로드 받습니다. Ganache 홈페이지에서 직접 다운로드 받으셔도 되고, 터미널에서 wget으로 받아오셔도 .. 2022. 7. 15.
[Blockchain] 이더리움 토큰 발행하기 (ERC-20 라이브러리 사용) 이더리움 블록체인에서 자신만의 토큰을 발행하고, 다른 토큰과 교환하거나 이더(ETH)와 교환해 현금화할 수 있습니다. 토큰을 발행하기 위해서는 ERC-20 표준 스펙을 준수하는 스마트 컨트랙트를 통해 발행이 가능합니다. ERC-20은 기본적으로 대체 가능한 토큰을 생산합니다. [Blockchain] 이더리움 토큰 발행 ERC-20 이란? 이더리움 블록체인 메인넷에서 토큰을 발행하고, 관리할 수 있습니다. 내가 만든 토큰으로 디앱을 구동하고, 특정 행동을 유인하는 수단으로 사용할 수 있습니다. ERC(Ethereum Request for Comment)는 이 about-tech.tistory.com 이더리움 테스트넷 토큰 발행하기 토큰을 발행하기 전 토큰 발행 스마트 컨트랙트를 배포하기 위해서는 소량이 이.. 2022. 7. 14.