0. Introduction Ethereum(이더리움)? = 스마트 계약을 수행할 수 있는 분산형 플랫폼 이때 스마트 계약이란? 고장, 검열, 부정이나 제 3자에 의한 방해가 전혀없이 프로그래밍 대로 동작하는 app Ether - 이더리움은 "ether"이라는 단위 사용 - 가장 작은단위 "wei", 1ether은 10wei Gas - Ether은 송금과 계약을 실행하기 위해서는 수수료와 이더리움 지불 필요 -> Gas 1. Geth - Geth = go-ethereum - Go 언어로 만들어진 클라이언트 1. https://www.slideshare.net/xyrho123/blockchain-study3-geth
1. 배열 Person[] public people uint[] memory result = new uint[](3) 2. 랜덤문자 생성 keccak256("aaaa") 3. 형변환 uint a = 5; uint b = 6; uint8 c = a*uint8(b) 3.1 uint 3.2 캐스팅 - uint32(uint256 변수) 4. 이벤트 5. Address 0x0cE446255506E92DF41614C46F1d6df9Cc969183 6. Mapping - 솔리디티 Storage에서 구조화된 데이터를 저장하는 또다른 방법, 오직 상태변수로만 선언 - 기본적으로 키 - 값(key - value) 저장소로 데이터를 저장하고 검색하는데 이용됨 - key는 실제로 저장되지 않고 키의 keccak256 해시값이..
합의알고리즘 (Consensus algorithms) - 다수의 참여자들이 통일된 의사 결정을 하기위해 사용하는 알고리즘 - 권위있는 중앙이 존재하지 않기 때문에 통일된 의사결정필요! 들어가기 앞서서... 비잔틴 장군 문제 - 합의 시스템에서 악의적으로 정보를 변경시키는 행위에 대해 전체 시스템이 올바른 합의를 이룰 수 있도록 하는가? - 비잔틴 장군들 --> 어떠한 공격을 한다고 할때 일정 비율 이상 동시에 지역 공격해야지 성공 - 정보전달때 누군가가 악의적으로 정보 변경하지만 대다수의 장군들이 정확한 시간 날짜에 공격성공 - 결국 POW라는 증명 알고리즘을 통해 해결한것! 1. 작업증명(Proof of Work, PoW) - 목표값 이하의 해시를 찾는 과정을 무수히 반복함으로써 해당 작업에 참여했음을..
1. 암호화의 종류 1.1 단방향 암호화(One-way encryption) 오직 암호화만이 가능하다 1.2 양방향 암호화(Two-way encryption) 평문을 암호화할 수 있고 암호문을 다시 복호화 가능 양방향 암호화의 경우 당사자 2명을 제외한 나머지 사람들이 몰라야 하기 때문에 비밀키(Private Key)를 정한다. 하지만 이 비밀키를 알 수 있기 때문에 당사자 2명 각각 서로 다른 키를 가지고 암호화와 복호화를 하도록한다면 이러한 문제는 일어나지 않을것이다! ---> 비대칭키 암호 2. 공개키 알고리즘(public key enryption) 비대칭키 암호는 서로 다른 키를 가지고 있음 공개키(Public key) 와 비밀키(Private Key) 공개키 알고리즘은 두가지 방식으로 분류가능한..
1. 이더리움 기반으로 블록체인 네트워크를 구축 이더리움의 대표적인 클라이언트 프로그램은 geth(go-ethereum)과 parity geth를 활용하여 네트워크 구축하는 방법 다루기 geth - google에서 개발한 Golang 기반으로 만들어진 이더리움 프로그램 2. docker가 무엇인가 2013년 3월 docker, Inc 에서 출시한 오픈 소스 컨테이너 프로젝트 AWS, Google Cloud Platform, Microsoft Azure 등의 클라우드 서비스에서 공식지원 인기를 끄는 이유? 복잡한 리눅스 application을 컨테이너로 묶어서 실행할 수 있음 개발, 테스트, 서비스 환경을 하나로 통일하여 효율적으로 관리가 가능 컨테이너(이미지)를 전 세계 사람들과 공유 한마디로 경량화된 ..
0. 블록체인이란? - 관리 대상 데이터를 '블록'이라고 하는 소규모 데이터들이 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장환경에 저장되어 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술 - 데이터 분산 처리 기술, 암호학적으로 안전한 블록들의 체인 - 중앙에서 데이터를 처리하거나 관리하는 기관이 없음 - 모든 사용자가 데이터 내역을 가짐 1. 블록체인 비대칭키 암호화 방식 - 비트코인에서 거래가 안전하게 이루어질 수 있도록 사용하는 암호화 기술 1.1 암호화 기술 * 대칭키 암호화 - 키가 하나 - 암호화를 할 떄와 암호를 풀 때 동일한 키를 사용한다 * 비대칭키 암호화 - 암호화할 때 사용하는 키와 암호를 풀..
0. UUIC - UUID(Universal Unique Identifier) - 기본적으로 어떤 개체(데이터)를 고유하게 식별하는 데 사용되는 16바이트(128비트) 길이의 숫자 - 이 숫자는 32개의 16진수로 구성, 4개의 그룹으로 표시되고 각 그룹은 하이픈으로 구분 - 식별자를 사용하는 목적? 식별자의 고유성을 보장하는 여러 구성요소로 구성된 특정 형식의 고유한 문자열을 만드는데 사용되는 알고리즘 - 매번 run 할때마다 바뀜 6eecfd2f-5c5a-44df-84e1-dfefac57a863 1. UUIC 예제 1 2 import uuid print(uuid.uuid4()) cs
0. 클라이언트 -> 서버 정보 보내기 1. Get , Post 1.1 Get - 모든 파라미터를 url로 보내는 것 (눈에 보임) - 데이터 용량 제한이 있음, 보안에 취약 -> url에 붙어서 보내져야 하기 때문에 - 중요정보 포함하지 않는다. - url을 통해서 값이 넘어가기 때문에 특정한 리소스를 검색하는 경우 1.2 Post - 전달하려는 정보가 HTTP body에 포함되어 전달되는 것 (눈에 보이지 않음) - 전송되는 http 내부에 데이터 추가하여 보내는 방식이 POST - 파라미터 노출되지 않으며 데이터 용량 제한이 없음 - form을 통해 서버로 넘겨진 데이터 데이터를 데이터 베이스등에 저장
#기초 1. API란? - Application Programming Inteface => 응용 프로그래밍 인터페이스 - 응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 - Open API 대부분 JSON을 활용하여 데이터를 주고 받음 1.1. JSON(JavaScript Object Notation) - 경량의 Data 교환 형식 - JSON 표현식은 사람과 기계 모두 이해하기 쉬우며, 용량이 작아, 최근에는 JSON이 XML을 대체해서 데이터 전송등에 많이 사용 - 특정 언어에 종속되지 않으며, 대부분의 프로그래밍언어에서 JSON포맷의 데이터를 핸들링할 수 있는 라이브러리 제공 - 위키 정의: "키-값 쌍"으로 이루어진 데이터 오브젝트를..