• 진행
    • 신분증 (여권확인)
    • 접속한 시험사이트 화면 상단의 "CAMARA 및 Desktop" 버튼으로~ WebCam&Mic 및 PC화면 공유해 줌.
    • (CAMARA 공유시... 이상한 하울링 괴음이 귀를 찔러서, 아주 Bad함. LiveChatter는  소리없는데~ 왜??? 이래?)
    • (Desktop 공유는 노트북 & 모니터 각각 한번씩만 클릭! 실수로 중복해서... 사이트 재접속함. 왜! 취소가 없어!! Bad한 기분)
    •  CAMARA 수색
      • 내 모습을 정중앙에 잘보이도록 요구. (내 얼굴 클로즈업 한번 해달라 함)
      • (WebCam 피드백 화면이 엄청 끈키게 나오고... LiveChat 과 동시에 보는게 엄청 불편)
      • Four-Wall 이 다 보이도록, Slowly 보여달라함.
      • 책상을 보여달라하고, 방금쓴 여권조차 치우라고 함. (키보드 밑 등등도 다 확인)
      • 책상 밑을 보여달라했고... 노트북을 내리는 과정에서... 모니터 선이 막 꼬여서 고생 ㅠ 내 하의 잘못 보이고ㅋ Bad함.
      • 팬&물&음식 다 허용안되고, 누구도 없는 혼자만의 공간이여야 한다는점을 상기함.
    • Desktop 수색
      • 시험 사이트 화면에서 -> 우클릭 -> 'Share window,tab or desktop' -> 취소버튼 해라고 함.
      • (우클릭에 저런 기능이 있는 줄 처음 알았음... 먼소리인지 한참 실랑이 하다가... 겨우 인지함ㅋ TooBad)
      • 브라우져의 모든 탭을 닫으라고 함. (허용되는 FabDocs 사이트도... 일단 닫으라고 함.
      • Mac 기준, '사과'버튼 -> '강제종료' 기능으로~ 백그라운드 프로세스 확인 해달라 함.
      • ...
  • 주석
    • LiveChatter 의 검문이 완료된후 -> 메인 시험화면 전환 -> 안내화면은 'hide'버튼이 있음. (조냉 인지가 안되 이상하게 생김ㅎ)
    • 일단, FabDocs 주소를 미리 복사해두고... 바로 탭하나 열어서~ 바로 접속해!
    • (기본 홈 터미널 node1 에서 굳이 fabric-samples 클론 받을 필요는 없음)
    • BYFN 튜터리얼에서 실습해보는 cmd와 거의 똑같이 나옴. (각종 경로조차 일치)
    • 그래서 FabDocs 의 예제를 "복/붙" 하는 식으로도 풀 수 있음. (당연 예제 흐름을 많이 외우고 있어야... 인지가 됨...)
    • FabDocs 의 주요예제는 거의 손에 익을듯, 시험전 한번 다 뚫어봐놔야~ 딱 그 문제에서 맨붕없이 빠르게 풀수있음.
    • (오히려... Hyperledger 각 핵심 개념을 잘모라도, No상관. 어중간히 공부한건~ No도움. 진짜 튜토리얼 따라쟁이가 가성비로 젤 유리할듯ㅠ)
    • https://github.com/hyperledger/fabric-samples/tree/release-1.4/first-network 으로 기초적인 공부도 좋음.
    • 일단, 두시간동안... 14문제를 다 풀기는 가능하긴 한거 맞음??? 시간을 매우 부족함.
    • 먼저, 14문제를, 한번씩 다 훑고 -> 어떤어떤 가중치 높은... 확실히 풀수있는 문제가 어떻게 있는지? 파악을 하는게 좋을듯!
    • 중간중간 .yaml 를 수정할때... 리눅스 권한이슈 등이 나오고, sudo -i 써도~ 이상하게 안먹히는 상황 발생!!! 맨븅옴.
    • 가십, 디스커버리, 앵커, 리더, msp, ACL, CA, private-data, Node-OUs, lscc, orderer.yaml, core.yaml 등등등
      • 각 톱바퀴 맞물려 정 ... ...
    • NotePad : 터미널 우상단에 제법 좋게 위치. 문제글을 막 복사해 둬도... 재제안함. 시험퇴장시 다 복사 훔쳐오기 가능!!
    • (스위칭 단축키가 없어서 불편 하긴함) (각각의 문제별 cmd를 누적적으로 쓰다보면... 먼가 뒤죽박죽 되는 느낌)
    • ...
  • 문제
    • 1) 주어진 경로의 '체인코드'를 peer에 install 및 instantiate 하고, 해당 peer에 install 및 instanticate 된 list를 -> 특정 txt파일에 쓰기.
      • 처음에, 해당문제 노드로 ssh 접속한뒤... (깜빡 옛기억안놔~) 거기서 막, cmd 뚜둘기다 해맴.
      • 해당 환경의 "cli 도커 bash"에  접속을 해서 cmd 하면되고, 문제에 주어진것 잘~ 보임.
      • ssh fabadm@fab-00-01
      • docker exec -it cli bash
      • peer channel list
      • peer chaincode install -n examplecc -v 1.0.0 -l node -p /opt/gopath/src/github.com/chaincode/chaincode_example02/node
      • ...
      • sudo -i chmod 777 /srv/HFAL00101/installed.txt
      • sudo -i chmod 777 /srv/HFAL00101/instantiated.txt
      • peer chaincode list --installed >> /srv/HFAL00101/installed.txt
      • peer chaincode list -C mychannel --instantiated >> /srv/HFAL00101/instantiated.txt
    • 2) 채널의 모든 쓰기에 "majority of admins" 가 필요하도록 수정하기
      • 음... configtx의 channel 부분에 ACL 수정 하려고, vi로 열었는데~ 루트권한이 필요함...
      • 그런데 sudo -i 가 잘 안됬던... 황당... 음....뭐지...
      • restart.sh 가 제공됨. 해당 docker-compose를 재시작 하는거였던거 같음.
      • configtx 수정후, genesis.block 재생성후, restart 하면 되나
      • (genesis 생성시~ 어떤? 프로파일로 하면 됨?)
    • 3) 주어진 configtx의 특정 Profile에 '이름' 을 바꾸고, 해당 프로파일로 gensis.block 만들고 -> order.yaml 처리
      • configtxgen -profile Sample1OrdererGenesis -channelID mychannel -outputBlock /srv/fabric-samples/genesisA.block
      • ...
    • 4) 'Fabric CA 서비스' 의 설정을 업데이트 하고, 정상적으로 재시작 하기
      • ...
    • 5) 채널의 maximum message count of Batch size설정을 수정하기. (재시작없이)
      • jq 이용해서 -> 채널의 block설정부분을 업데이트 tx를 만들어서 -> 해당 트랜젝션 처리하기
      • 전형적인 그 튜토리얼 내용
    • 6) 기존의 nodejs 체인코드를 v 3.0 으로, 특정 endorse정책으로! 인스턴티에이트 다시 하기
      • peer chaincode install -n mycc3 -v v3.0 -l node -p /opt/gopath/src/github.com/chaincode/chaincode_example02/node/
      • peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile $ORDERER_CA_TLS_CERT_PATH -C mychannel -n mycc3 -l node -v v3.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"
      • source /opt/envfiles/org1_peer0.env 식으로, cli bash에서 peer를 스위칭 할수있는 부분이 있다... (여기맞나?)
      • 모든 peer에 다 설치 해줘야 하나?
      • 음... 문제에서 "v3.0"으로 복사 해주었던거 같은데~ "3.0"으로 했어야 했나? (암튼 기존 버전과 맞추는 통밥굴려)
      • 체인코드 이름을 "이름+버젼" 이렇게 작위적으로? 
      • peer chaincode invoke -o orderer.example.com:7050 --tls --cafile $ORDERER_CA_TLS_CERT_PATH -C mychannel -n mycc3 -c '{"Args":["query","a"]}'
    • 7) 특정 peer의 로그를 -> 특정경로의 txt파일로 쓰고 -> 해당 이슈를 체인코드 고쳐서 잡은뒤 -> 다시 instantiating 해라
      • 해당피어의 "docker logs 피어" 하는데... 처음에~ 해당 피어를 다른 피어명으로 오타해서, 짱남.
      • 음... 해당 시험노드에서 logs >> txt 가 안됭?~ vi 으로 수작업 땜빵 문제될려나? (cli bash에서 했어야?)
      • go으로 짜여진 체인코드 였음
      • ...
    • 8) fabric admin user 로 "admin // adminpw" 을 새로 등록하기
      • ...
    • 9) 기존 golang 체인코드를 v3.0.2 으로, 특정 init agrs 으로 업그래이드 하기.
      • 6번 문제와 뭐가 다른거지???
      • 해당 golang 체인코드 처리하는데~ path 권한? 관련 이상한 오류가 나옴... 뭐지ㅎㅎ
      • peer chaincode install -n thecc302 -v 3.0.2 -l golang -p /opt/gopath/src/github.com/chaincode/chaincode_example02/go/

      • peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile $ORDERER_CA_TLS_CERT_PATH -C mychannel -n thecc302 -l golang -v 3.0.2 -c '{"Args":["init","a","786","b","200"]}'

      • peer chaincode invoke -o orderer.example.com:7050 --tls --cafile $ORDERER_CA_TLS_CERT_PATH -C mychannel -n thecc302 -c '{"Args":["query","a"]}'

    • 10) 'trucks' 명의 신규 채널 생성 후, peer0.org1.example.com 을 해당 채널에 조인 시키기
      • ...
    • 11) "static leader election" 정책을 configure에 enable 시켜라
      • 리더Peer 선출을 정적으로 설정.
    • 12) Fabric CA 서버 실행이 문제가 있으니, 해당 이슈를 진단하고 고쳐서~ start 되도록 하게하라
      • ...
    • 13) The user2 identity 가 다음과 같은 특권한(privileges)을 가지도록 하게하라
      • 1. new identities of type peer 을 등록할수있는 권한
      • 2. the identities 을 revoke 할수있는권한
    • 14) orderers 가 Raft 방식을 사용하도록 설정되있는, genesis-block을 생성해라
      • Raft 오더러로 다시 블록체인 만들기
  • 후기
    • 어어어

-끝-

+ Recent posts