Share
Sign In
공부 내용
Y
yeji Kim
👍
하이퍼레저 패브릭 -
체인코드. - 스마트 컨트랙트 역할.
여러가지 플러그 기ㅏ능 옵션. 원장 데이터는 다양한 형식으로 저장. 컨센서스도. - kafka, raft.
msp
목표
1.
허가된 참여자 대상
2.
모듈러 아키텍쳐 기반.
특징
퍼미션드
비결정적.
교체 가능한 모듈러 아키텍처
가능한 컨센서스 알고리즘 - solo, kafka, practical byzantine fault tolerant
멀티 블록체인
하나의 블록체인 네트워크를 논리적으로 독립된 여러 개의 블록체인으로 분할 가능.
순서화가 왜 필요하지? 컨센서스 알고리즘? 멀티 블록체인 지원?
컨소시엄 블록체인 - 허가된 기관만. 컨소시엄 소속 참여자가 관리 주체. r3cev, casper
프라이빗 - 허가된 기관만. 중앙 기관이 모든 권한 보유. hl fabric, eea
신원 확인 - MSP
원장 ledger - 트랜잭션 정보가 실제로 저장되는 공간.
hlf는 월드 스테이트라는 저장소에 저장.
트랜잭션 - endoersing 피어노드, ordering 서비스 노드. endorsement validation.
체인코드 -
채널 - 그성 요소 간 그룹을 나눠 트랜잭션을 수행해야 할 때. 트랜잭션의 접근 권한을 그룹 별로 설정하고 관리하는 중요 요소.
조직 - 네트워크는 조직 단위로 이뤄짐. 조직 별로 피어노드 관리 및 권한 부여, 보증 정책 등 수행. 클라이언트(네트워크 참여자)의 접근 권한도 관리함.
피어 노드 - 가장 기본적인 네트워크 구성 요소. 블록체인 네트워크를 유지하고 트랜잭션의 제안 및 응답을 처리하며, 원장과 체인코드를 관리하고 저장.
엔도싱 피어 노드 - 보증 정책에 따라 요청된 트랜잭션을 먼저 실행해보는 검토 역할 수행. 트랜잭션에 보증 사인 첨부.
커미팅 피어 노드 - 엔도싱 피어노드의 트랜잭션 결과 검증 → 확정 → 블록체인에 업데이트.
앵커 - 채널 내에 대표 역할 수행 피어 노드
리더 - 조직 내 모든 피어노드를 대표.
노드 - 일종의 물리적 시스템 단위. =서버.
피어 노드에게 트랜잭션을 전달해 전체 블록체인 네트워크를 컨트롤하는 오더링 서비스 노드 존재.
오더링 서비스 노드 - 모든 피어 노드의 분기 및 정렬 역할.오더러라고도 부름. 네트워크 내 채널에 대한 구성 정보 소유. 이를 기반으로 전체 시스템의 관리자 역할 수행. 트랜잭션 정보를 네트워크에 반영해 새로운 블록을 추가하고 업데이트하며 관리함.
solo 오더링 서비스 - 하나의 중앙 집중형 오더링 서비스. 싱글 프로세스로 구성. 가용성이나 확장성 전혀 고려 x.
kafka 기반 오더링 서비스 - pub/sub 구조의 메세지큐 미들웨어인 카프카 기반. 피어노드가 멈췄을 때 다른 분산 오더링 서비스 제공 가능 → 높은 처리량과 고가용성 제공. 비잔틴 문제에 노출되어 있다는 단점.
raft (reliable, replicated, redundant, and fault-tolerant) - 채널당 선출된 리더 노드(채널 내 오더링 서비스 노드 중 하나)가 모든 트랜잭션 처리 - 그 결과를 모두에게 복사. (리더 및 팔로워). hlf 자체에 내장. 카프카보다 구축, 관리가 쉬움.
MSP - 블록체인 네트워크에 인증 서비스를 제공.
모든 참여자에게 해당 책임을 부여. 행위 추적 책임성 보장. 트랜잭션 익명성및 비연결성을 보장하는 프라이버시 보장.
CA -암호화 인증을 위해 필요한 인증기관.
MSP로부터 접근 승인을 받으면 hlf 네트워크에 트랜잭션 발생시킬 수 있음.
앱은 트랜잭션 제안서를 엔도싱 피어 노드에게 보냄. (클라이언트 id, 클라이언트 서명)
엔도싱 피어 노드는 제안서가 잘 구성돼 있는지 확인하고 서명이 유효한지 체크한 후 체인 코드 실행.
이후 RW 세트를 포함하는 트랜잭션 결과를 생성해 반환함.
read 세트 - 시뮬 중 트랜잭션이 읽는 고유 키 및 커밋 버전의 목록 포함.
write 세트 - 고유 키 목록과 트랜잭션이 작성하는 새 값 목록을 포함.
앱은 엔도싱 피어노드 서명을 확인. 각 엔도싱 피어노드에서 받은 응답값이 동일한지 대조 → 해당 트랜잭션 보증 확보.
앱은 트랜잭션을 rw 셑과 함께 엔도싱 피어 노드들의 서명, 채널 id를 오더링 서비스 노드에 전송. 오더러는 트랜잭션 순서만 정렬.
오더러에서 tx bck을 엔도싱 피어 노드와 커미팅 피어 노드에게 전달. 각 피어 노드는 보증 정책이 충족됐는지 확인 후 원장 상태가 변경됐는지 확인 ...
엔도싱, 커미팅 피어 노드는 rw 세트가 현재 월드 스테이트 상태와 여전히 일치하는지 확인해 트랜잭션 유효성을 검사. 트랜잭션이 유효성 검사에 실패하면 피어 노드는 rw 세트가 현재 월드 스테이트 상태와 일치하지 않는 걸 알림. → 트랜잭션은 무효로 기록하고, 월드 스테이트 업데이트 x.
유효성이 검증된 트랜잭션은 모든 피어노드의 db에 저장. 이후 트랜잭션 실패, 성공 이벤트를 앱에게 알림.
시스템 체인코드
일반 체인코드와의 차이점
일반 체인코드 - 별도의 격리된 컨테이너에서 실행.
시스템 체인콛는 피어노드 프로세스 내에서 실행.
다섯가지 시스템 체인코드 제공.
LSCC - cc 라이프 사이클 관리
install - 피어 시스템에 체인 코드를 저장.
deploy - 채널에서 체인 코드를 인스턴스화
upgrade
getid - 체인코드 id
getdepspec - 설치된 cc의 배포 사양
getccdata - 채널에 설치된 cc로 저장된 데이터
getchaincodes - 배포된 체인코드 목록.
getinstalledchaincode - 피어에 설치된 cc 목록
CSCC - configuration system cc. 피어 노드 및 프로세스 채널 구성. 트랜잭션에 대한 채널 관련 정보 관리.
joinchain - 피어를 채널에 가입시킴
getconfigblock - 지정된 채널에 대한 구성 블록 가져옴
getconfigtree - cc id에 대해 현재 채널 및 자원 구성 확인
simulateconfigtreeupdate - 체인코드 id에 대해 현재 채널 및 자원 구성 업데이트.
getchannels - 피어가 가입한 채널 목록 가져옴.
QSCC - query system chaincode. 블록 저장소에 저장된 블록 및 트랜잭션 조회.
getchaininfo - 블록체인에 대한 정보 조회.
getblockbynumber
getblockbyhash
gettransactionbyid
getblockbytxid
ESCC - endorser system chaincode. 트랜잭션 실행 후 트랜잭션 상태, 체인코드 이벤트, read/write set 등 트랜잭션 결과를 포함한 응답 메세지에 서명.
VSCC - validation system cc.
개발 언어 - Go.
설치해야 할 것
가상화 - 버추얼박스
리눅스 게스트 os
우분투
cURL - url을 통해 데이터 전송 도구.
도커
도커 compose 1.14.0
Go
git
python
node.js
확장성 있는 네트워크 앱. 자바스크립트. non-blocking i/o, 단일 스레드 이벤트 루프.
npm
java jdk
gradle
ant나 maven같은 빌드 툴. 자바 빌드하기 위해서 씀.
byfn.sh
대표 옵션
generate - 각종 필요 인증서를 생성, 제네시스 블록 생성
up - first network 시작
down - first network 종료
npm으로 서버 설치? npm install -g composer-rest-server@0.20
hyperledger fabric
4.1 시작하기
중요한 파일들
byfn.sh - 간단히 네트워크 구축
configtx.yaml - 네트워크의 채널과 제네시스 블록을 만들고 앵커 피어노드 파일을 생성하기 위한 설정 파일
crypto-config.yaml - msp에서 인증서를 발급받기 위한 설정 파일. cryptogen 툴로 인증서를 발급할 때 사용. 각 조직과 참가자들에게 각각의 인증서 발급.
docker-compose-cli.yaml, ./base/docker-compose-base.yaml, ./base/peer-base.yaml
byfn 네트워크 구성
1.
cryptogen으로 인증서 생성
2.
configtxgen으로 오더러의 제네시스 블록 생성
3.
configtxgen으로 채널 생성
4.
configtxgen으로 org1msp에 대한 앵커 피어 노드 tx 파일 생성
5.
configtxgen으로 org2msp에 대한 앵커 피어 노드 tx 파일 생성
cli 컨테이너 - byfn 외부에서 각종 컨트롤이나 실행을 위한 사용자 개발 환경 컨테이너. 3개의 체인코드 컨테이너는 peer 도구로 설치할 때 만들어지는 각 피어노드 컨테이너에 연결돼 실행되는 컨테이너.
1.
5개의 노드 컨테이너, cli 컨테이너가 실행. 총 6개의 컨테이너 먼저 실행
2.
네트워크 내부의 cli 컨테이너에 접속해 생성된 channel.tx로 채널을 생성하고, 모든 피어 노드를 가입시킴.
3.
두 조직의 peer 0을 앵커로 가입시킴.
4.
피어 노드에 체인코드 설치하고 확인. 이 단계에서 해당 피어 노드의 cc 담당 cc 컨테이너 3개가 실행됨.
hlf 핵심 도구
Cryptogen - 조직 및 인증서 생성 도구
cryptogen generate —config/—output
cryptogen extend —input/—config
configtxgen - 블록 및 tx 생성 도구
-asOrg, -channelID, -inspectBlock, -inspectChannelCreateTx, -outputAnchorPeersUpdate, -outputBlock, -outputCreateChannelTx
configtxlator - 블록 및 tx 구문 분석 도구
rest 서버를 구성하도록 도움.
start, proto_encode(json→protobuf), proto_decode, compute_upate
peer - 블록체인 데이터 저장, 유지보수 cc 실행하는 마스터 노드 도구
peer chaincode
install, invoke, package, query, signpackage, upgrade, list
peer channel
create, fetch, getinfo, join, list, signconfigtx, update
peer logging
getlogspec, setlogspec
orderer - 트랜잭션 패키징, 정렬 도구
cc 프로그래밍
GO 언어 공부하기.
@Override public Response init(ChaincodeStub stub){ } @Override public Response invoke(ChaincodeStub stub){ }
직접 cc 만드는 법. 함수를 정의한 다음 init, invoke를 override해서 적절한 함수를 호출하도록 하는데...?
직접 만든 cc 테스트하기
hlf 앱 개발하기
서비스 시나리오
구성 요소들
판매자 조직 - 하이퍼
구매자 조직 - 레저
하이퍼가 등록하는 음원 - 패브릭
서비스 구상
하이퍼가 패브릭 등록 - 구매자에게 서비스. 열람 가능.
구매자 - 개인 정보, 계좌 등록.
네트워크 구축
인증서 구성 파일 작성
모든 노드는 인증서를 발급받음.
template - 피어의 수, user - 사용자의 수.
도커 컨테이너 구성 파일 작성
sales1랑 customer가 같은 channel로 묶인다.
체인코드 기본 구조 작성
initWallet, getWallet, setMusic, getAllMusic, purchaseMusic
지갑 정보 등록 cc 작성
Subscribe to '아무튼-작업일지'
Welcome to '아무튼-작업일지'!
By subscribing to my site, you'll be the first to receive notifications and emails about the latest updates, including new posts.
Join SlashPage and subscribe to '아무튼-작업일지'!
Subscribe
👍
Other posts in '공부 내용'See all
yeji Kim
OpenAI API
https://platform.openai.com/docs/guides/batch/getting-started Batch API 이용하기 Upload batch file Creating the batch Checking the status of a batch Retrieving the results 다른 LLM 알아보기 이걸로 기본적인 처리는 해야겠다!!! (와)
yeji Kim
GPT fine tuning
https://platform.openai.com/docs/guides/fine-tuning/preparing-your-dataset https://www.datacamp.com/tutorial/fine-tuning-openais-gpt-4-step-by-step-guide finetuning GPT 4o jsonl format의 데이터를 만들어야 함. {"prompt": "<prompt text>", "completion": "<ideal generated text>"} {"messages": [{"role": "system", "content": "You are teaching assistant for Machine Learning. You should help to user to answer on his question."}, {"role": "user", "content": "What is machine learning?"}, {"role": "assistant", "content": "'Tis but the art of teaching machines to think, to learn from data most fine, and decisions to link."}]} {"messages": [{"role": "system", "content": "You are teaching assistant for Machine Learning. You should help to user to answer on his question."}, {"role": "user", "content": "How doth neural networks work?"}, {"role": "assistant", "content": "They're like the brains of yon digital beast, with layers many, and nodes that cease."}]} Upload training file Create a fine-tuned model Analyze fine-tuned model UI로도 관련 정보를 볼 수 있음. fine tuning 작업이 끝나면, job details의 'fine_tuned_model' 필드에서 모델 이름을 볼 수 있음. → 아래아 같이 모델 이름을 적고 활용하면 됨.
yeji Kim
Semantic search
ENHANCING KNOWLEDGE RETRIEVAL WITH IN-CONTEXT LEARNING AND SEMANTIC SEARCH THROUGH GENERATIVE AI Method 1 : Generative text retrieval (GTR) 각 chunk에 word2vec 등으로 Embedding → vector database 구축 query embedding과 유사도 계산 → 가장 가까운 걸로. Generative tabular text retrieval (GTR-T) 먼저 database table과 meta data를 가져와서 .csv로 저장. query를 embedding하여 관련있는 table을 찾음 이 table을 Llm한테 줘서 적절한 sql 쿼리문을 생성함. Olio: A Semantic Search Interface for Data Repositories Intro Q&A, exploratory search, design search. 태블로를 활용한 시각화 → 썸네일 제공? Related works Semantic web search system keyword(structured query languages) based or NL based keyword based QUERIX - stanford CoreNLP parser + wordNet olio는 trends, location, groupings, aggregations, filters 등으로 intentfmf qnsfbgka. 의도를 특정 그룹으로 나누는 것 같음. 내가 하려는 것과 잘 어울리는지는 모르겠어서 일단 읽기 중단. Know where to go : make llm a relevant, responsible, and trustworthy searcher. Intro