일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 블록체인
- 플레이프레임워크
- 스칼라
- Play2
- 파이썬 동시성
- 스칼라 동시성
- Hyperledger fabric gossip protocol
- Play2 로 웹 개발
- CORDA
- 주키퍼
- 그라파나
- 스칼라 강좌
- 파이썬 데이터분석
- 스위프트
- akka 강좌
- 파이썬
- 안드로이드 웹뷰
- 이더리움
- Golang
- 파이썬 강좌
- play2 강좌
- 하이브리드앱
- Adapter 패턴
- 엔터프라이즈 블록체인
- 하이퍼레저 패브릭
- play 강좌
- Akka
- Actor
- hyperledger fabric
- 파이썬 머신러닝
- Today
- Total
목록전체 (688)
HAMA 블로그
go언어에서 가장 재밌으며, 강력한 키워드인 select/채널의 다양한 패턴을 살펴봄으로써 우리의 코딩력을 향상시켜 보겠습니다. 이러한 go특유의 핑퐁스타일의 코딩에 빠져들면 헤어나오기 힘들겁니다 :-) switch 먼저 형제 관계에 있는 switch를 통해 몸풀기를 좀 하구요. 1. switch (1) // 일반 switch func main(){ i := "korea" switch i { case "korea": fmt.Println("korea") case "usa": fmt.Println("usa") case "japan": fmt.Println("japan") } } switch문은 보통 우리가 생각하는 듯 그러합니다. 2. switch (2) func main(){ t := time.Now()..
go로 간략히 구현한 블록전파/Gossip Protocol 지난 글(400라인의 go코드로 구현한 하이퍼레저 패브릭)에 이어 이번에는 하이퍼레저 패브릭의 블록전파/가쉽프로토콜을 추가 구현 해 보는 시간을 갖겠습니다. 이번 설연휴동안 여유있게 코딩했는데 역시나 세세한 부분이 많이 생략되습니다만 중요맥락에 대해서는 대략 비슷하게 동작되게 하는 목표로 구현하였습니다. (더 줄일 수도 있었지만, 앞으로 추가될 기능들을 위한 기반으로 600라인이 넘어갔습니다.) 1개의 리더피어와 여러개의 일반 Commit 피어가 작동하게 될 것이며, 각 피어는 포트로 구분 될 것입니다. 리더피어가 오더러에게 메세지를 10초에 한번씩 가져와서 몇개의 피어에만 전파시키면 결국은 모든 피어가 모두 동일한 데이터를 담고 있게 할 것입니..
400라인의 go코드로 구현한 하이퍼레저 패브릭 [1] - 전체조망 몇일전에 200라인으로 구현한 블록체인 (golang) 을 우연히 알게 됬는데 해당 블로그 주인은 블록체인/네트워크/P2P/POW/IPFS 등 다양하게 구현해 놓았습니다. 초창기 블록체인에 대한 이해가 잘 안갔을때 저렇게 간략히 구현된 코드를 보고 오히려 이해가 잘 됬던 경험이 떠올라 그렇다면 하이퍼레저 패브릭을 간단하게 구현해 놓으면 누군가에겐 도움이 될 수 있지 않을까 하여 코드를 구현 해 봤습니다.왜 golang 냐구요? 예전에 스칼라 기반의 Akka로 코딩을 즐겁게 한 기억이 있는데, go의 동시성 모델은 더욱 심플하고 자유로우며 훨씬 더 큰 재미가 있었습니다. 그리고 최근엔 많은 서비스에서 golang이 채택되고 있으며 특히 하..
이더리움의 P2P에서 리모트 피어와 메세지를 읽고/쓸때에는 위의 그림처럼 peer ( 이더리움에서 peer객체는p2p 와 eth에 각각있으며, eth의 peer 는 위 그림의 peer 와 protoRW를 포함한다) 를 통하는데, peer객체는 읽고/쓰기를 rlpxFrameRW를 통해서 한다. 이 글에서는 rlpx의 transport부분은 빼고 rlpxFrameRW를 살펴 볼 것이다.func (pm *ProtocolManager) handleMsg(p *peer) error { msg, err := p.rw.ReadMsg() switch { case msg.Code == GetBlockHeadersMsg: ... case msg.Code == BlockHeadersMsg: ... case msg.Code ..
이더리움에서 TCP기반의 스트리밍을 위해 peer끼리 커넥션을 맺을때 아래와 같은 순서를 갖는데 1. 암호화키를 교환하여 앞으로는 이 키 기반으로 통신하게 함 2. 프로토콜 정보(버전등)를 교환하여 서로 동업자인지 확인하고 3. rlp 로 엔코딩하고 서로 약속된 frame에 맞춰서 메세지를 주고 받는다.이 글에서는 1번에 대해서 코드와 함께 알아 볼 것이다. 접속을 하는 peer를 initiator 라고 하고 접속을 받는 peer를 receiver 라고 한다. 한번 접속했던 경우 known peer라고 하고, 처음 접속하는 peer를 new peer라고 한다. 한번 접속했던 경우에는 session token을 보관하는데, 그렇더라도 항상 접속할때마다 그 기반으로 새로운 키를 만들어 사용한다.(참고: 스트..
얼마전에 블록체인사 CTO분들하고 대화중에 하이퍼레저 패브릭의 합의 알고리즘에 대해서 얘기하다가 "뇌정지"가 온적이 있다. 비트코인 POW부터 POS,DPOS,PBFT,텐더민트식,캐스퍼등에 대한 이해를 거친후에 더 이상은 컨센서스 알고리즘에 대한 공부는 그만 뒀고, (분산네트워킹만이라도 잘하자 싶어서..) 하이퍼레저 패브릭은 그냥 실행-오더링-커밋이지 뭐...라고 평소에 생각했었는데 이번 기회를 통해 정리를 좀 해보려 한다. 알고리즘 자체에 대한 내용이라기 보다는 전체조망이랄까? 주저리주저리 해 볼 생각이다. 거의 유일한 하이퍼레저 패브릭 서적이라고 볼 수 있는데, 이 책을 완독한 후에도 합의 관련된 이해는 할 수 는 없다. 관련 내용이 (구체적으로) 없으니까~ 즉 모든 원흉은 이 책이다. 농담이다.. ..
3줄 정리- 자신과 연계된 UTXO 를 소비 하려면 그때 자신의 서명을 생성해서 트랜잭션 내부의 INPUT에 넣어 보낸다.- 검증노드들은 해당 서명을 이전 트랜잭션의 OUTPUT과 매칭이 되면 ㅇㅋ 해줌- 즉 현재 트랜잭션 내부의 INPUT은 이전 트랜잭션의 OUTPUT과 매칭용이고, 현재 트랜잭션의 OUTPUT은 받는 사람의 계정과 연결되되, 나중에 받는 사람이 이 UTXO를 사용하는 트랜잭션을 만들 때 그 INPUT과 매칭될 것이다. - 최종적으로 TxID를 만드는 과정은 : https://steemit.com/kr/@niipoong/id-create-bitcoin-txid 를 참고한다.받는 사람 : ScriptPubKey(잠금스크립트)에서 OP_HASH160 다음에 위치한 문자열(B라고하자)를 이..
[이더리움으로 배우는 GO언어] 자료구조 & 컬렉션 이번 글에서는 사실 이더리움하고 크게 상관없이 go 자료구조 기본에 대해서 알아 봅니다.Array var a [5]int // [0 0 0 0 0] a[4] = 100 // [0 0 0 0 100]5개의 비어있는 배열 생성과 값 삽입 b := [5]int{1, 2, 3, 4, 5} // [1 2 3 4 5] 5개 요소가 들어있는 배열 생성 a2 := [...]string{"USA", "China", "India", "Germany", "France"} b2 := a2 // a copy of a is assigned to b b2[0] = "Singapore" fmt.Println("a is ", a2) // [USA China India Germany ..
컴포지트(composite) 디자인 패턴과 이름이 헷갈린 컴포지션은 UML 측면에서는 연관(Aggregation) 하고도 헷갈리기도 하는데 이 글에서는 컴포지션과 연관을 구분하지 않겠다. 컴포지션이란 간단히 말해 내가(객체)가 가지고 있어야 하는 특성을 외부에서 가져오는 것을 말하는데, 가져오는 방식이 상속을 통하는 방법과 다르게 외부에서 주입되는 방식이다. 상속의 경우는 폴리모피즘이 반드시 필요하면 제한적으로 사용하되, 컴포지션을 통해서 객체를 구축하는 방식을 추천한다. 이 글에서는 Golang에서 컴포지션을 어떻게 지원하는지 살펴 볼 것이다. 자바/C++ 보다는 훨씬 깊숙히 임베디드 되는 모습을 보게 될 것이란 것을 미리 귀뜸해 둔다.먼저 자바의 컴포지션을 살펴보자. abstract class For..
윤대근님의 하이퍼레저 패브릭으로 배우는 블록체인의 내용을 참조하여 구성되었습니다.간단정리: Fabric-CA를 통한 보안메터리얼들 생성 가. Fabric-CA 를 이용해서 각 조직의 admin msp 를 생성한다. 나. 각 조직의 admin은 조직이 가지고 있는 각 Peer의 msp 를 생성한다. ---- 여기까지가 8번 ----- 인프라 (채널등) 구성하고 시작하기 다. genesis.block 을 각 조직의 공개키를 가지고 생성하여 오더러를 구동한다. 라. 각 peer 들을 구동한다. 마. 채널을 생성한다. 바. 채널에 peer들을 참여시킨다. 사. 앵커피어 업데이트 ------ 여기까지가 15번 ----체인코드 설치 및 읽고,쓰기 아. 각 Peer에 체인코드 설치 자. 하나의 peer 에서 체인코드..