블록체인

블록체인/자기주권 신원증명 구조 분석서

DID (1)

DID 💡 DID (Decentralized IDentifier) 사용하는 사람 스스로 생성하고 제어할 수 있는 분산형 식별자(혹은 탈중앙화된 식별자) 분산형 식별자 통신에서 객체들을 식별하기 위해 UUID(Universally Unique IDentifiers)라는 분산형 식별자가 많이 사용중 UUID 32개의 16진수와 4개의 하이픈(’-’)으로 구성 8-4-4-4-8 동일한 식별자가 생성되지 않는 구조충돌 : 동일한 식별자가 생성되는 것 충돌에 안전한 랜덤함수 사용 DID와 UUID DID UUID 객체에 대한 식별자로 사용될 뿐만 아니라 인증 수단인 DID document를 참조할 수 있는 URI 역할까지 동시에 수행 객체를 식별하는 식별자로만 사용할 수 있고, 해당 객체를 인증하기 위해서는 별도..

블록체인/Klaytn

18장 - 공급망(Supply Chain) 관리

공급망 관리(Supply Chain Management) 부품 제공업자, 생산자, 배포자, 고객에 이르는 물류의 흐름을 하나의 가치사슬 관점에서 파악하고 필요한 정보가 원활히 흐르도록 지원하는 시스템 SCM은 글로벌화된 시장에 필수 글로벌 마케팅, 소싱,제조,지역별 특성화 및 전세계 제품 전략 수립이 필요 고품질, 저가격, 적기 납기의 중요성 증대 제품가치의 60~70%가 제조 이외의 부분에서 발생하므로 전체라인의 관리가 필요 Ex) Walmart Food Trust Chain 식품 병충해 발생시 빠르게 근원지 파악하는 것이 목적 글로벌 소싱에 대응한 투명성을 강조한 시스템 병충해 발생시 문제가 되는 유통경로를 다른 유통경로들로부터 격리시켜 피해를 최소화 2건의 PoC 실행 Hyperledger Fabr..

블록체인/Klaytn

17장 - 지갑

지갑 (Wallet) TX를 서명하려면 키가 필요 키 → 어카운트 서로 다른 키는 다른 어카운트에 매핑 하나의 어카운트로 여러 BApp을 사용하려는 사용자의 니즈가 존재 지갑 = 키 관리 프로그램 키를 보관하고 BApp이 요청할 때마다 보관 중인 키로 TX를 서명 여러 유형의 지갑이 존재 브라우저 플러그인, DApp 브라우저 내장 지갑, 클라우드 지갑, 디바이스 지갑 지갑을 고려한 BApp 개발 어떤 지갑을 사용하느냐에 따라 사용자 환경 변화 BApp의 목적 및 타겟 사용자를 분석하여 어느 형태로 키를 관리할지 결정

블록체인/Klaytn

16장 - BApp

Blockchain Application (BApp) 블록체인 어플리케이션(BApp)은 블록체인을 사용하는 어플리케이션 기존의 기술로 풀기 어려운 문제들을 블록체인의 특성을 활용하여 풀어내는 것이 목적 불변성과 투명성이 대표적인 블록체인 특성 한번 기록된 정보는 변경할 수 없다. 정해진 규칙(e.g., 블록생성 등 프로토콜이 가진 규칙, 컨트랙트로 구현된 규칙)에 따라 상태를 변경 기록의 내역이 블록에 공개되어 있으므로 누구든지 정보의 진실여부를 확인 가능 BApp들이 블록체인을 사용하는 유형 As a Payment Channel 토큰 사용 결제 As a Storage 블록체인을 안전한 저장소로 인식 As a World Computer 모든 노드가 동일한 연상 수행 어느 한 노드에 의전하지 않는 탈중앙화..

블록체인/Klaytn

15장 - Klaytn SDK: caver-js

Klaytn SDK(SoftwareDevelopmentKit) Klaytn은 BApp(BlockChain Application) 개발을 위해 필요한 SDK를 제공 caver-js는 Node.js로 Klaytn BApp을 만들 때 필요한 라이브러리를 제공 다음 온라인 문서에서 사용방법을 확인: https://docs.klaytn.com/sdk/caverjs 개발환경 셋팅 Node.js 설치 https://nodejs.org에서10.16.3LTS설치(installer/pkg실행) 개발 디렉토리 생성 및 Caver-js설치 성공적으로 Node.js를 설치한 뒤 원하는 위치에 개발 디렉토리를 생성 $ mkdir Count && cd Count 디렉토리 생성 후 npm으로Node.js프로젝트를초기화,caver-j..

블록체인/Klaytn

14장 - 소스코드 컴파일링

Test.sol Simple Storage 컨트랙트를 정의하는 test.sol이 있다고 가정 다음과 같은 방법으로 test.sol을 컴파일 $ ls test.sol $ solcjs --bin true --abi true -o out test.sol //npm방식 $ ls out test.sol $ tree out out ├── test_sol_SimpleStorage.abi └── test_sol_SimpleStorage.bin 0 directories, 2 files Bytecode&ABI Solidity 소스코드(.sol파일)를 컴파일하면 Bytecode(.bin파일)와 ABI(.abi파일)가생성 Bytecode 컨트랙트를 배포할때 블록체인에 저장하는 정보 Bytecode는 Solidity 소스코드를..

블록체인/Klaytn

13장 - Solidity 기본 구조

https://docs.soliditylang.org/en/v0.6.1/introduction-to-smart-contracts.html#subcurrency-example 컨트랙트 // Solidity로 간단한 포인트 시스템을 구현 // [Coin 컨트랙트] // 컨트랙트 생성자가 관리하는 포인트 시스템 컨트랙트로 포인트 시스템 고유의 // 주소공간(address space)을 가지며 각 주소의 포인트 잔고를 기록한다. // 컨트랙트 생성자는 사용자 주소(e.g., 0xALICE)에 포인트를 부여할 수 있고 // 사용자는 다른 사용자에게 포인트를 전송할 수 있다 (e.g., 0xALICE → 0xBOB, 10 Coins) contract Coin { // [omitted for brevity] } 상태..

블록체인/Klaytn

12장 - 스마트 컨트랙트

특정 주소에 배포되어있는 TX로 실행가능한 코드 스마트 컨트랙트 소스코드는 함수와상태를표현 컨트랙트는 어카운트로취급; 컨트랙트 소스코드는 블록체인에저장 함수는 상태를 변경하는 함수, 상태를 변경하지 않는 함수로 분류 스마트 컨트랙트는 어카운트이기 때문에 주소를 부여 사용자(enduser,EOAowner)가 스마트 컨트랙트 함수를 실행하거나 상태를 읽을때 주소가 필요 스마트컨트랙트는사용자가실행 상태를 변경하는 함수를 실행하려면 그에 맞는 TX를 생성하여 블록에 추가 (TX체결=함수의 실행) 상태를 변경하지 않는 함수, 상태를 읽는 행위는 TX가 필요없음(노드에서 실행) Solidity Ethereum/Klaytn에서 지원하는 스마트 컨트랙트 언어 Klaytn은 Solidity버전 0.4.24, 0.5.6을..

MellowHoney
'블록체인' 태그의 글 목록