프로그래밍

블록체인/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을..

블록체인/Klaytn

10장 - 트랜잭션(Transaction)

(Recall) Ethereum 어카운트의 종류 External Account : 사용자(end user)가 사용하는 어카운트 (a.k.a. EOA) 트랜섹션을 실제로 만들고 기록하는 주 어카운트, 즉 사용자 Contract Account : 스마트 컨트랙트를 표현하는 어카운트 Ethereum은 EOA 와 스마트 컨트랙트의 상태를 기록 및 유지 스마트 컨트랙트는 특정주소에 존재하는 실행 가능한 프로그램 프로그램은 상태를 가지기 때문에 Ethereum/Klaytn은 스마트 컨트랙트를 어카운트로 표현 EOA는 블록에 기록되는 TX를 생성 블록에 기록되는 TX들은 명시적인 변경을 일으킴 (e.g., 토큰 전송, 스마트 컨트랙트 배포/실행) 프로그램 - 데이터, 함수 스마트컨트랙트 = 프로그램 어카운트 = 함수..

블록체인/Klaytn

11장 - 블록체인별 트랜잭션

Ethereum 트랜잭션 논스(nonce): 발신 EOA에 의해 발행되어 메세지 재사용을 방지하는 데 사용되는 일련번호 가스 가격(gas price): 발신자가 지급하는 가스의 가격(웨이, wei) 가스 한도(gas limit): 이 트랜잭션을 위해 구입할 가스의 최대량 수신자(recipient): 목적지 이더리움 주소 값(value): 목적지에 보낼 이더의 양 데이터: 가변 길이 바이너리 데이터 페이로드 v,r,s: EOA의 ECDSA 디지털 서명의 세 가지 구성요소 v : 식별자 (엄밀히 따지자면 서명은 아님) r, s : 서명 클래이튼 트랜잭션 type : 뭐하는 트랜잭션인지 구분해주는 역할 명시적이다. , GasPrice를 바꿀수 없다 - 상수 취급 : 전체노드들이 합의하면 가격이 바뀔수 있음 본..

MellowHoney
'프로그래밍' 태그의 글 목록 (2 Page)