Presented Docker in 15 minutes with two of my classmates at school.
Presentation covering topics:
Virtualization
Virtual Machines
Container Technology (Docker)
Docker Compose
Docker Swarm
The demo can be found at:
https://github.com/DanishKhakwani/SimpleDockerDemo
Kubernetes is an open-source container management platform. It has a master-node architecture with control plane components like the API server on the master and node components like kubelet and kube-proxy on nodes. Kubernetes uses pods as the basic building block, which can contain one or more containers. Services provide discovery and load balancing for pods. Deployments manage pods and replicasets and provide declarative updates. Key concepts include volumes for persistent storage, namespaces for tenant isolation, labels for object tagging, and selector matching.
Multi cluster, multitenant and hierarchical kafka messaging service slideshareAllen (Xiaozhong) Wang
This document discusses Netflix's approach to scaling Apache Kafka through a hierarchical, multi-cluster architecture. It addresses the challenges of scaling a single Kafka cluster, such as increased latency and vulnerability to failures. Netflix uses multiple "fronting" Kafka clusters for data collection and buffering optimized for producers. Consumer clusters scale by adding brokers or moving partitions to new clusters. Producers and consumers can operate across multiple clusters simultaneously using routing services. This multi-cluster approach allows independent scaling of producers and consumers while balancing data distribution.
Presented Docker in 15 minutes with two of my classmates at school.
Presentation covering topics:
Virtualization
Virtual Machines
Container Technology (Docker)
Docker Compose
Docker Swarm
The demo can be found at:
https://github.com/DanishKhakwani/SimpleDockerDemo
Kubernetes is an open-source container management platform. It has a master-node architecture with control plane components like the API server on the master and node components like kubelet and kube-proxy on nodes. Kubernetes uses pods as the basic building block, which can contain one or more containers. Services provide discovery and load balancing for pods. Deployments manage pods and replicasets and provide declarative updates. Key concepts include volumes for persistent storage, namespaces for tenant isolation, labels for object tagging, and selector matching.
Multi cluster, multitenant and hierarchical kafka messaging service slideshareAllen (Xiaozhong) Wang
This document discusses Netflix's approach to scaling Apache Kafka through a hierarchical, multi-cluster architecture. It addresses the challenges of scaling a single Kafka cluster, such as increased latency and vulnerability to failures. Netflix uses multiple "fronting" Kafka clusters for data collection and buffering optimized for producers. Consumer clusters scale by adding brokers or moving partitions to new clusters. Producers and consumers can operate across multiple clusters simultaneously using routing services. This multi-cluster approach allows independent scaling of producers and consumers while balancing data distribution.
Vault is a tool for securely accessing secrets. It provides encryption of secrets at rest and controls access through authentication, authorization, and auditing. Keys are rotated automatically and secrets have time-to-live limits. Vault can be used for secrets like API keys, passwords, certificates and more. It supports multiple backends for secret storage including Consul, DynamoDB, and filesystem. Vault has built-in authentication methods and is highly available through replication across multiple nodes.
ContainerD is a daemon that controls the runC runtime to execute and manage containers according to the OCI specification. It has a gRPC API and a low-level CLI (ctr) for debugging. ContainerD is designed to be embedded in larger systems rather than directly used by end-users. It focuses on container execution, images, storage, and networking.
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
도커 무작정 따라하기
- 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커의 기본 개념부터 설치와 사용 방법까지 설명합니다.
더 자세한 내용은 가장 빨리 만나는 도커(Docker)를 참조해주세요~
http://www.pyrasis.com/private/2014/11/30/publish-docker-for-the-really-impatient-book
Union FileSystem - A Building Blocks Of a ContainerKnoldus Inc.
Namespace, CGroup, and Union file-system are the basic building blocks of a container. Let’s have our focus on file-system. Why yet another file-system for the container? Is Conventional Linux file-systems like ext2, ext3, ext4, XFS, etc. not good enough to meet the purpose? In this blog post, I will try to answer these questions. Here we will be delving deeply into the Union File System and a few of its essential properties.
Video: https://www.facebook.com/atscaleevents/videos/1693888610884236/ . Talk by Brendan Gregg from Facebook's Performance @Scale: "Linux performance analysis has been the domain of ancient tools and metrics, but that's now changing in the Linux 4.x series. A new tracer is available in the mainline kernel, built from dynamic tracing (kprobes, uprobes) and enhanced BPF (Berkeley Packet Filter), aka, eBPF. It allows us to measure latency distributions for file system I/O and run queue latency, print details of storage device I/O and TCP retransmits, investigate blocked stack traces and memory leaks, and a whole lot more. These lead to performance wins large and small, especially when instrumenting areas that previously had zero visibility. This talk will summarize this new technology and some long-standing issues that it can solve, and how we intend to use it at Netflix."
Installing and Running Postfix within a Docker ContainerDocker, Inc.
This document provides instructions for installing and running Postfix within a Docker container from the command line. It describes starting a container from the base image, updating system packages, installing Postfix, committing the image, running a new container from the image to check that Postfix is installed, and pushing the image to a Docker registry.
QEMU Disk IO Which performs Better: Native or threads?Pradeep Kumar
Pradeep Kumar Surisetty from Red Hat presented a comparison of native and threaded I/O performance in QEMU disk I/O. He outlined KVM I/O architecture, storage transport options in KVM including virtio-blk configurations, and benchmark tools used. Performance testing was done with various disk types, file systems, images and configurations. Native generally outperformed threads for random I/O workloads, while threads sometimes showed better performance for sequential reads, especially with multiple VMs.
Understanding of Apache kafka metrics for monitoring SANG WON PARK
2019 kafka conference seould에서 발표한 "Apache Kafka 모니터링을 위한 Metrics 이해" 슬라이드 자료
기존 2018년 자료에서 모니터링 관점에서 중요한 metrcis를 중심으로 정리하였고, 2019년 기준으로 추가/변경된 metrics를 반영하였다.
주용 내용은
- 업무에 최적화된 apache kafka 모니터링을 하려면?
- 어떤 정보를 모니터링 해야 할까?
- 적시성 관점의 모니터링 지표 (TotalTimeMs에 대한 세부 구조 이해)
- 안정성 관점의 모니터링 지표 (데이터 유실이 없이 중단없는 서비스)
- 언제 apache kafka 클러스터를 확장해야 할까? (어떤 지표를 봐야 할까?)
위 모든 지표는 producer/broker/consumer 3가지 측면에서 검토하였다.
컨퍼런스 영상 링크 : https://www.youtube.com/watch?v=p2RGsTOCHAg
Vault is a tool for securely accessing secrets. It provides encryption of secrets at rest and controls access through authentication, authorization, and auditing. Keys are rotated automatically and secrets have time-to-live limits. Vault can be used for secrets like API keys, passwords, certificates and more. It supports multiple backends for secret storage including Consul, DynamoDB, and filesystem. Vault has built-in authentication methods and is highly available through replication across multiple nodes.
ContainerD is a daemon that controls the runC runtime to execute and manage containers according to the OCI specification. It has a gRPC API and a low-level CLI (ctr) for debugging. ContainerD is designed to be embedded in larger systems rather than directly used by end-users. It focuses on container execution, images, storage, and networking.
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
도커 무작정 따라하기
- 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커의 기본 개념부터 설치와 사용 방법까지 설명합니다.
더 자세한 내용은 가장 빨리 만나는 도커(Docker)를 참조해주세요~
http://www.pyrasis.com/private/2014/11/30/publish-docker-for-the-really-impatient-book
Union FileSystem - A Building Blocks Of a ContainerKnoldus Inc.
Namespace, CGroup, and Union file-system are the basic building blocks of a container. Let’s have our focus on file-system. Why yet another file-system for the container? Is Conventional Linux file-systems like ext2, ext3, ext4, XFS, etc. not good enough to meet the purpose? In this blog post, I will try to answer these questions. Here we will be delving deeply into the Union File System and a few of its essential properties.
Video: https://www.facebook.com/atscaleevents/videos/1693888610884236/ . Talk by Brendan Gregg from Facebook's Performance @Scale: "Linux performance analysis has been the domain of ancient tools and metrics, but that's now changing in the Linux 4.x series. A new tracer is available in the mainline kernel, built from dynamic tracing (kprobes, uprobes) and enhanced BPF (Berkeley Packet Filter), aka, eBPF. It allows us to measure latency distributions for file system I/O and run queue latency, print details of storage device I/O and TCP retransmits, investigate blocked stack traces and memory leaks, and a whole lot more. These lead to performance wins large and small, especially when instrumenting areas that previously had zero visibility. This talk will summarize this new technology and some long-standing issues that it can solve, and how we intend to use it at Netflix."
Installing and Running Postfix within a Docker ContainerDocker, Inc.
This document provides instructions for installing and running Postfix within a Docker container from the command line. It describes starting a container from the base image, updating system packages, installing Postfix, committing the image, running a new container from the image to check that Postfix is installed, and pushing the image to a Docker registry.
QEMU Disk IO Which performs Better: Native or threads?Pradeep Kumar
Pradeep Kumar Surisetty from Red Hat presented a comparison of native and threaded I/O performance in QEMU disk I/O. He outlined KVM I/O architecture, storage transport options in KVM including virtio-blk configurations, and benchmark tools used. Performance testing was done with various disk types, file systems, images and configurations. Native generally outperformed threads for random I/O workloads, while threads sometimes showed better performance for sequential reads, especially with multiple VMs.
Understanding of Apache kafka metrics for monitoring SANG WON PARK
2019 kafka conference seould에서 발표한 "Apache Kafka 모니터링을 위한 Metrics 이해" 슬라이드 자료
기존 2018년 자료에서 모니터링 관점에서 중요한 metrcis를 중심으로 정리하였고, 2019년 기준으로 추가/변경된 metrics를 반영하였다.
주용 내용은
- 업무에 최적화된 apache kafka 모니터링을 하려면?
- 어떤 정보를 모니터링 해야 할까?
- 적시성 관점의 모니터링 지표 (TotalTimeMs에 대한 세부 구조 이해)
- 안정성 관점의 모니터링 지표 (데이터 유실이 없이 중단없는 서비스)
- 언제 apache kafka 클러스터를 확장해야 할까? (어떤 지표를 봐야 할까?)
위 모든 지표는 producer/broker/consumer 3가지 측면에서 검토하였다.
컨퍼런스 영상 링크 : https://www.youtube.com/watch?v=p2RGsTOCHAg
Hyperledger Fabric practice material for Korea Polytechnics students
- Build Your First Network
- Chaincode Development
- Chaincode Devolopment via IBM Blockchain Platform
- Balance Transfer
- Vote system example using 'Balance Transfer' tutorial
Vectorized Processing in a Nutshell. (in Korean)
Presented by Hyoungjun Kim, Gruter CTO and Apache Tajo committer, at DeView 2014, Sep. 30 Seoul Korea.
[ CB-Larva - 멀티클라우드 인프라 및 응용을 위한 네트워킹 (Networking for multicloud infrastructure and applications) ]
- 글로벌 스케일 네트워킹
- Cloud Adaptive Network 구조 및 주요 기능
- CLADNet 기술 시연: 글로벌 스케일 MCIS에 CLADNet 입혀 보기
- Cloud Adaptive Network 활용 예시
- CB-Larva의 현재, 비전, 그리고 공개SW
# 발표영상(YouTube) : https://youtu.be/6ylyEoQvNN8?t=7741
----------------------------------------------------------------------------------------------------------
# Cloud-Barista Community Homepage : https://cloud-barista.github.io
# Cloud-Barista Community GitHub : https://github.com/cloud-barista
# Cloud-Barista YouTube channel : https://cloud-barista.github.io/youtube
# Cloud-Barista SlideShare : https://cloud-barista.github.io/slideshare
본 발표자료에서는 이더리움 플랫폼의 상세 아키텍쳐와 기반 기술, 그리고 스마트 컨트랙과 이를 기반한 Dapp의 개발 방안에 대해 소개한다. 이더리움은 블록체인 기반 기술하에 암호 화폐의 생성 , 전송 등 라이프사이클 관리외에 스마트 컨트랙을 지원한다. 스마트컨트랙은 서로 모르는 당사자간의 계약을 준수하도록 강제할 수 있는 응용 프로그램이다. 컨트랙 프로그램은 바이트코드로 컴파일된 후 블록체인을 통해 배포되고 , 로컬 로드상에서 실행되는 일종의 에이전트라 볼 수 있다. 이렇게 개바된 스마트컨트랙은 기존 웹 인터페이스를 통해 접근하고 활용할 수 있으며 이렇게 스마트 컨트랙 기반하에 개발된 응용 서비스를 Dapp이라 한다.
4. fabcar 도커 네트워크 구성
4
dev-peer0.org1.example.com-fabcar-1.0
cli hyperledger/fabric-tools
peer0.org1.example.com hyperledger/fabric-peer
ca.example.com hyperledger/fabric-ca
orderer.example.com hyperledger/fabric-orderer
couchdb hyperledger/fabric-couchdb
chaincode 실행
7051/tcp, 7053/tcp
7054/tcp
7050/tcp
4369/tcp, 9100/tcp, 5984/tcp
fabric 쉘
5. peer0 도커 컨테이너 디렉터리 구조
5
/var/hyperledger/production/
chaincodes/
fabcar.1.0/
ledgersData/
000001.log, CURRENT, LOCK, LOG, MANIFEST-000000
bookkeeper/
chains/
chains/
mychannel/
blockfile_000000
index/
000001.log, CURRENT, LOCK, LOG, MANIFEST-000000
configHistory/
historyLeveldb/
ledgerProvider/
pvtdataStore/
000001.log, CURRENT, LOCK, LOG, MANIFEST-000000
000001.log, CURRENT, LOCK, LOG, MANIFEST-000000
000001.log, CURRENT, LOCK, LOG, MANIFEST-000000
000001.log, CURRENT, LOCK, LOG, MANIFEST-000000
오늘의 주제
leveldb 파일
leveldb 파일
leveldb 파일
leveldb 파일
leveldb 파일
leveldb 파일
6. 간단한 바이너리 파일 탐색
6
$ strings blockfile_000000
본격적으로 파일 분석을 시작하기 전에 Fabric SDK를
통해 조회했던 문자열 조각들이 존재함을 확인
7. 하이퍼레저 패브릭 소스 다운로드
7
https://github.com/hyperledger/fabric
fabric-release-1.2.zip 18MB (압축 해제시 42MB)
8. 전체 블록 구조
8
blockfile_mgr.go
func (mgr *blockfileMgr) addBlock(block *common.Block) error {
...
blockBytesLen := len(blockBytes)
blockBytesEncodedLen := proto.EncodeVarint(uint64(blockBytesLen))
totalBytesToAppend := blockBytesLen + len(blockBytesEncodedLen)
...
//append blockBytesEncodedLen to the file
err = mgr.currentFileWriter.append(blockBytesEncodedLen, false)
if err == nil {
//append the actual block bytes to the file
err = mgr.currentFileWriter.append(blockBytes, true)
}
• 블록 길이를 먼저 쓰고 블록 데이터를 쓰는 코드를 보면 가변 블록 구조임을 파악할 수 있음
• EncodeVarint 는 프로토콜 버퍼의 정수 인코딩이므로, 단지 gRPC 뿐 아니라 블록 파일에서도 프로토콜 버퍼를 광범위하게 사용할 것이라는
사실을 이 시점에서 추정 가능
9. 프로토콜 버퍼 인코딩
9
https://developers.google.com/protocol-buffers/docs/encoding
메모리의 정수 표현 디스크, 네트워크 입출력 시 정수 표현
int16
int32
int64
1 2
1 2 3 4
1 2 3 4 5 6 7 8
varint 0000 00011 =
300 = 1010 1100 0000 0010
10 0101100(2) = 300(10)
• 메모리에서는 일반적으로 고정 길이 공간을 사용하여 수치형을 표현합니다.
• 디스크, 네트워크 전송 시에는 I/O 대역폭 및 저장 공간 점유를 최소화하기 위해 가변 길이 인코딩을 일반적으로 사용합니다.
• VarInt (Variable-length Integer) 는 고전적인 가변 길이 인코딩 방식으로, 가장 앞 비트 (MSB)를 뒷 바이트가 이어진다는 신호로 사용하고
7비트를 이어 붙여서 전체 데이터를 표현합니다.
• 패브릭 프로토콜 버퍼는 Little Endian 기준이라 7비트 그룹을 역순으로 조립해야 합니다.
- 예를 들어 정수 300은 000 0010 010 1100 처럼 이어붙여서 해석합니다.
10. 프로토콜 버퍼 인코딩
10
https://developers.google.com/protocol-buffers/docs/encoding
타입별 인코딩 방식
타입번호 의미 타입 매핑
0 VarInt int32, int64, uint64, sint32, sint64, bool, enum
1 64비트 fixed64, sfixed64, double
2 길이 지정 string, bytes, embedded message, packed repeated fields
3 그룹 시작 groups (폐기됨)
4 그룹 끝 groups (폐기됨)
5 32비트 fixed32, sfixed32, float
길이 지정 인코딩 예시 (문자열)
복합 메시지 예시
07 74 65 73 74 69 6e 67"testing"
7글자 t e s t i n g
message Test2 {
optional string b = 2;
}
07 74 65 73 74 69 6e 67
7글자 t e s t i n g
12
메타
00010 010
2번 필드 2번 타입
• 아쉽게도 message (complex type)와
bytes, string 의 타입 구분이 안 되어서
메타데이터 정의 없이 파싱하는 것은
원천적으로 불가능
• 필드 번호를 지정하므로 optional 구현
은 간단하고 효율적임.
11. 1번 블록 구조
11
{
"header": {
"channel_header": {
"type": 1,
"channel_id": "mychannel",
"timestamp": "2018-08-20 01:12:48+0900"
}
"signature_header": {
"creator": {
"mspid": "OrdererMSP",
"id_bytes": "-----BEGIN CERTIFICATE-----
nMIICDDCCAbOgAwIBAgIRAK30hdRcBxQJYNPqPkiFo3IwCgYIKoZIzj0EAwIwaTELnMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGncmFuY2lzY
28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtncGxlLmNvbTAeFw0xNzA4MzEwOTE0MzJaFw0yNzA4MjkwOTE0MzJaMFgxCzAJBgNVnBAYTAlVTMRMwEQ
YDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpnc2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYInKoZIzj0DAQcDQgAE
UOJGzpasxjS5EJmbFIe/GtOJJAo6mhJqLyYT9PBvVSdaQ/TQnlMNlqLEZgFP6wc9CtrUp/WDnZ/M2zLpoDPjkcqNNMEswDgYDVR0PAQH/BAQDAgeAnMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgoGBqSoYKHjHJCiN4jabztrdJJe0NnIwYa9ImUCbpGrmowCgYIKoZIzj0EAwIDRwAwRAIgHsU1f4jzuul6zYGY/Xn/H5X5ngDe7/u8dZxJfWwXOGNsCICbXt6yezSzacOFQDkvAP
z5/3OYI5YKLSTl+Wilfa/qyn-----END CERTIFICATE-----n"
},
"nonce": "ef86bebfe565f8aed0c60994bd480fd013bd77808f65a554"
},
},
"data": "..미 해석 영역.."
}
헤더 타입 ENUM 설명
0 MESSAGE 서명된 메시지이나 데이터 구조가 알려지지 않은 것
1 CONFIG 채널 설정 메시지
2 CONFIG_UPDATE 채널 설정 업데이트 트랜잭션
3 ENDORSER_TRANSACTION Endorser 기반 트랜잭션 제출 (SDK에서 사용)
4 ORDERER_TRANSACTION Orderer가 사용하는 관리용 메시지
5 DELIVER_SEEK_INFO Deliver API의 Envelope 메시지 탐색 제어용
6 CHAINCODE_PACKAGE 설치 시 체인코드 패키징에 사용
8 PEER_ADMIN_OPERATION Peer에서 수행되는 관리적 작업 호출
HeaderType 정의 (protos/common/common.proto)
12. 체인코드 트랜잭션 수행 흐름 proposal.proto 참조
12
Client Endorser
Client Endorser
1
2
Client Orderer
3
이 proposal에 대한 action
전체 응답 페이로드에 대한 Endorser의 서명들
action을 요청한 proposal의 페이로드
action을 요청한 proposal의 헤더
헤더의 creator가 Transaction 에 대해 수행한 서명
전체 응답 페이로드에 대한 Endorser의 서명
이 proposal에 대한 action
이 proposal에 대한 action (생략 가능)
이 proposal의 페이로드
이 proposal의 헤더
헤더의 creator가 proposal 에 대해 수행한 서명
• 클라이언트는 1개 이상의 proposal을 모아서 하나의 트랜잭션 메
시지를 생성하고 이를 orderer에게 전송합니다.
• orderer는 여러 개의 트랜잭션을 배치 단위로 commiting peer에게
전달(deliver)합니다. committing peer는 검증 후 원장에 반영합니
다.
• 트랜잭션은 1개 이상의 action으로 구성되고, 각각 헤더, 제안
(proposal) 페이로드, 서명된 응답 페이로드 (response)를 포함합니
다.
• 응답은 성공/실패 코드, 응답 페이로드, 응답 페이로드에 대한
서명으로 구성됩니다.
• 응답 페이로드는 요청 (proposal)에 대한 해시를 포함합니다.
이는 특정 요청에 대한 응답을 안전하게 매핑할 목적입니다.
• proposal은 체인코드를 실행해달라는 요청입니다.
- 체인코드의 상태 변경 및 원장에 데이터 반영
• proposal은 헤더와 페이로드로 구성됩니다.
- 헤더: 타입, 실행요청자, 시각, 체인ID, Nonce
- 페이로드: 체인코드ID, 호출 매개변수
13. 2번 블록 구조 - 헤더
13
{
"header": {
"channel_header": {
"type": 3,
"timestamp": "2018-08-20 01:12:51+0900",
"channel_id": "mychannel",
"tx_id": "bc395ae86abbc9b75aa41b998bf2d0f4cf4e78af2bd59c20a455965d498675c2",
"extension": "120612046c736363"
},
"signature_header": {
"creator": {
"mspid": "Org1MSP",
"id_bytes": "-----BEGIN CERTIFICATE-----
nMIICGDCCAb+gAwIBAgIQFSxnLAGsu04zrFkAEwzn6zAKBggqhkjOPQQDAjBzMQswnCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZynYW5
jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eunb3JnMS5leGFtcGxlLmNvbTAeFw0xNzA4MzEwOTE0MzJaFw0yNzA4MjkwOTE0MzJanMFsxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TnYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkwnEwYHKoZIzj0C
AQYIKoZIzj0DAQcDQgAEV1dfmKxsFKWo7o6DNBIaIVebCCPAM9C/nsLBt4pJRre9pWE987DjXZoZ3glc4+DoPMtTmBRqbPVwYcUvpbYY8p6NNMEswDgYDnVR0PAQH/BAQDAgeAMAwG
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgQjmqDc122u64nugzacBhR0UUE0xqtGy3d26xqVzZeSXwwCgYIKoZIzj0EAwIDRwAwRAIgXMy26AEUn/GUMPfCMs/nQjQME1ZxBHAYZtKEu
RR361JsCIEg9BOZdIoioRivJC+ZUzvJUnkXuno2HkWiuxLsibGxtEn-----END CERTIFICATE-----n"
},
"nonce": "998d2b96865a56bda70c0e09a2acefa6e9cad8015ee17d6a"
}
},
"tx_actions": [ .... ]
}
헤더 타입 ENUM 설명
0 MESSAGE 서명된 메시지이나 데이터 구조가 알려지지 않은 것
1 CONFIG 채널 설정 메시지
2 CONFIG_UPDATE 채널 설정 업데이트 트랜잭션
3 ENDORSER_TRANSACTION Endorser 기반 트랜잭션 제출 (SDK에서 사용)
4 ORDERER_TRANSACTION Orderer가 사용하는 관리용 메시지
5 DELIVER_SEEK_INFO Deliver API의 Envelope 메시지 탐색 제어용
6 CHAINCODE_PACKAGE 설치 시 체인코드 패키징에 사용
8 PEER_ADMIN_OPERATION Peer에서 수행되는 관리적 작업 호출
HeaderType 정의 (protos/common/common.proto)