블록체인
블록체인 용어 정리
- 채널 채널은 데이터 분리와 기밀화를 가능하게 하며 채널용 장부는 채널 사용 허가를 받아야 사용할 수 있다.
- 장부(ledger) 장부가 우리가 아는 변경 불가능한 상태 데이터 베이스이다.
- 피어(peer) 피어는 장부를 물리적으로 호스팅하고 chaincode를 저장하고 있는 독립체로, CA로부터 배정받고, 참여할 수 있다.
- 체인코드(chaincode)
장부에 저장된 상태를 업데이트하는 코드이다.
피어 노드에 체인코드를 설치하고, 피어가 로직을 담게 설치한다.
채널을 호스팅하는 모든 피어들에 같은 체인 것을 설치할 수는 있지만 필요는 없다.
체인코드를 사용하려면 로직이 아닌 체인코드의 인터페이스를 다른 피어들에게 알리는 instatiate 를 수행하게 된다.
수행 순서 정리
- sdk를 통해 transaction proposal 발생
- 체인코드의 보증 정책에 명시된 노드들이 체인코드 실행
- 결과 값 ordering service에 전달
- 먼저 도착한 순으로 블록을 만들어 채널의 모든 피어들에게 전달
- 모든 피어들은 보증 정책을 만족하는지, 트랜잭션이 일어나는 동안 안바뀌었는지 확인
- 블록을 채널의 체인에 붙이고 또 붙이면서 상태 업데이트
이렇게 수행하는 것을 통해 query와 invoke를 해보았다.
개발모드에서 체인코드 개발하는 법
개발모드/운영모드는 같은 프로세스에서 진행되느냐 마느냐
- 개발모드에서는 단일 PEER에 체인코드가 붙어서 동작
- 운영모드에서는 체인코드 디플로이 하면 모든 PEER에 체인코드 복제되어 모든 PEER가 동일한 체인코드로 동작
- 순서는 체인코드 실행->테스트->디버깅->체인코드 빌드->체인코드 실행