분류 전체보기 258

21.09.19 [Indy] demo 공부 (시나리오 및 도커 실행)

하이퍼레져 인디를 사용하여 자격증명 처리 과정을 시나리오로 표현해보았다. "나는 서울에 살고있다."에 대한 자격 증명을 해보겠다. "나" 라는 사람과 "서울"이라는 도시는 서로 agent 관계로 생각할 수 있고 각각의 agent는 자신의 DID를 가진다. 자격 증명 서비스가 가능한 agent의 wallet에는 크게 5가지의 서비스로 이루어져 있다. ✔ relationship ✔ credentials ✔ proof requests ✔ issuing ✔ message 내가 서울에 살고 있다는 자격 증명을 얻기 위해 가장 먼저 relationship을 형성해야 한다. send new connection request 실행 create a new relationship 에 서울시 DID 입력하여 서울시에 rel..

SSI 2021.09.20

21.09.18 [합의알고리즘] PoS 지분 증명

PoS Proof of Stake 지분 증명 합의 알고리즘 PoS 체인: 이더리움2.0, 퀀텀, 블록 생성 과정 자신의 보유 자산을 lockup하는 transaction을 발생시키면 Validator가 됨. 이때, Validator는 블록 생성 및 검증에 참여할 수 있는 노드이다. Validator의 스테이킹 지분(수량, 기간)이 많을 수록 블록 생성 권한이 주어지는 확률 높아짐. PoS는 블록 생성 기준에 따라 아래와 같은 종류가 있다. 1. Chain-based PoS 10초 단위의 기간(슬롯)마다 랜덤으로 하나의 validator를 선정할 수 있다. 이 validator가 생성하는 블록은 길이가 가장 긴 체인의 마지막 블록을 가리키며 연결된다. 결과적으로 만들어지는 메인 체인은 보통 단일 체인이다...

블록체인 2021.09.18

21.09.17 [합의알고리즘] PoW 작업 증명

PoW 작업 증명 합의 알고리즘 PoW 체인: 비트코인, 이더리움 1.0, 블록 생성 과정 작업: 논스를 바꿔가면서 해시화했을 때, 목표값 이하의 해시를 찾는 연산 과정 채굴: 작업을 완료하여 블록을 생성한 것 보상: 새로 발행되는 비트코인과 해당 블록에 포함된 거래 수수료의 합 마이닝풀: 여러 대의 채굴기를 연결하여 1대의 슈퍼컴퓨터처럼 작동하도록 만든 네트워크 검증: 블록 헤더의 정보가 맞는지 확인 비트코인은 가장 긴 체인을 메인 체인으로 선택하는 longest chain rule을 따른다. 블록의 구조 현재 해당 블록해시, 블록헤더, 블록바디 블록헤더: 논스, 타임스탬프, 이전블록해시, 난이도, 머클루트해시, 버전 블록바디: 트랜잭션들이 담김. 코인베이스 트랜잭션(tx0), 일반 거래 트랜잭션(tx..

블록체인 2021.09.18

21.09.17 [합의알고리즘] 합의 알고리즘의 목표

합의 알고리즘은 왜 있을까? P2P 네트워크 시스템에서는 각 노드 간 정보 도달의 시차가 존재하여 블록이 유효한지 네트워크 참여자들의 합의가 필요하다. 1. 모든 사람들(노드)이 합의하기 위해 네트워크에 참여하는 모든 노드들이 합의하여 분산 저장하면 탈중앙화가 가능하여 해킹을 당해도 피해가 없을 정도의 시스템을 유지할 수 있기 때문이다. 2. 블록 생성 권한을 주기 위해 네트워크 참여자들이 블록을 생성하게 되면 보상이 주어지기 때문에 그것으로 인해 시스템을 유지할 수 있다. 여기서부터 차근차근 공부해보겠다.http://wiki.hash.kr/index.php/%ED%95%A9%EC%9D%98_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

블록체인 2021.09.18

21.09.15 이더리움 2.0 [정리 중!]

이더리움 2.0에 대해서 공부해보았다. ✔이더리움 2.0의 비콘 체인 이더리움 1.0 메인체인과 구분하기 위해서 2.0의 메인체인을 '비콘체인'이라고 부른다. beacon이 뭔지 찾아봤더니 신호등, 무선 송신소 같은 것인데 나는 다양한 형태의 정보를 신호로 받아서 다른 역할을 수행하는 것이라고 이해했다. ✔이더리움의 온체인 솔루션 이더리움의 확장성(Scalability)를 해결하기 위한 것으로 plasma와 sharding이 있다. 하나의 블록체인 밖에 없다면 모든 트랜잭션에 대해 전체 노드가 트랜잭션을 검증해야 한다. 초당 15개의 트랜잭션을 검증하게 되면 속도가 굉장히 느리게 되는데 두 개 이상의 블록체인이 있다면 스마트 컨트랙트로 네트워크를 사용할 수 있는 사람 수를 증가시켜서 검증 속도도 증가시키..

이더리움 2021.09.16

21.09.13 [프로그래머스] 기본 자료형

✔기본자료형 1. bool: true, false를 저장 2. string: 문자, 문자열을 저장 3. int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr: 정수형 int, uint, uintptr은 32비트 시스템에서는 32비트길이, 64에서는 64비트길이! 특별히 정수 크기 및 부호를 지정할 이유가 없으면 int 쓴다. 4. byte: uint8과 같다. 5. float32, float64: 실수형 7. complex64, complex128: 복소수형 ✔형 변환: 변환할 타입(변환할 값) import ( "fmt" "math/cmplx" ) var ( i int f float64 MaxInt uint64 = 1 >..

GoLang 2021.09.14

21.09.13 [프로그래머스] 여러가지 변수 선언 방법

1. var 변수 선언 2. 마지막에 타입! 3. 여러 변수 선언 시, 타입 한 번만! import "fmt" var num1 int var num2, num3 int 4. 선언과 동시에 값을 초기화하면 타입 명시 필요 X var num4, num5, str1 = 4, 5, "example" 5. = 대신 := 를 쓰면 함수 안에서!!! var로 명시하지 않아도 변수 선언 가능하다. 함수 밖에서는 := 를 쓸 수 없다. 6. 다른 타입을 가지는 변수들을 여러 개 선언 7. var 키워드 뒷부분을 괄호로 묶어서 var을 한 번만 쓸 수 있다. var ( i int b bool s string ) >>함수 실행 부분 8. 함수 안에서는 := 를 쓰면 var과 타입을 지정하지 않고 변수 선언 및 초기화 가능!..

GoLang 2021.09.13

21.09.13 [프로그래머스] 함수와 여러가지 리턴 방법

divide1과 divide2는 두 수를 매개변수로 받아서 몫 quotient과 나머지 remainder를 계산하여 return 하는 함수이다. 1. 함수명 뒤에는 리턴 타입과 갯수를, return 뒤에는 리턴 값을 적어주는 방법 import "fmt" func divide1(dividend, divisor int) (int, int) { var quotient = (int)(dividend / divisor) var remainder = dividend % divisor return quotient, remainder } 2. 함수명 뒤에는 리턴 변수와 타입을 return 뒤에는 생략하는 방법 func divide2(dividend, divisor int) (quotient, remainder int)..

GoLang 2021.09.13

21.09.13 [프로그래머스] 함수와 매개변수

1. 매개변수 타입과 리턴 타입은 이름 뒤에 지정한다. func ( ) { return } 2. 매개변수가 같은 타입일 때는 한 번만 명시해도 됨!! import "fmt" //1. 매개변수 타입, 리턴 타입은 이름 뒤에 지정한다. //괄호 안의 int들은 매개변수에 대한 타입을 지정한 것이고 //중괄호 앞의 int는 함수의 리턴 타입을 지정한 것이다. //약간 함수 리턴 타입은 솔리디티같다! func add1(x int, y int) int { return x + y } //2. 매개변수 x, y가 같은 타입일 때에는 타입을 한 번만 명시해도 된다. func add2(x, y int) int { return x + y } func main() { fmt.Println("add1(x int, y int)..

GoLang 2021.09.13