목표
블록체인 open source 분석
결과
이 open source는 blockchain을 간단한 형태로 구현해놓았다.
blockchain의 "block"부터 어떻게 구현되어 있는지 살펴보자.
type Block struct {
Timestamp int64
Data []byte
PrevBlockHash []byte
Hash []byte
}
Timestamp, Data, PreBlockHash, Hash로 이뤄져 있다. 변수 이름으로 내용이 추측이 된다.
추가적으로 nonce, Proof-of-Work 관련 내용이 들어가야 하지만 이건 추후에 보자.
그럼 Hash는 어떤 방식으로 하는지 살펴보자.
func (b *Block) SetHash() {
timestamp := []byte(strconv.FormatInt(b.Timestamp, 10))
headers := bytes.Join([][]byte{b.PrevBlockHash, b.Data, timestamp}, []byte{})
hash := sha256.Sum256(headers)
b.Hash = hash[:]
}
timestamp, PreblockHash, Data를 바이트 배열로 합치고 sha256으로 해싱한 결과를 Block의 Hash로 사용한다.
func NewBlock(data string, prevBlockHash []byte) *Block {
block := &Block{time.Now().Unix(), []byte(data), prevBlockHash, []byte{}}
block.SetHash()
return block
}
최종적으로 Block을 만드는 방법이다. data와 preBlockHash를 받아서 block 구조체를 만들고 위의 SetHash function을 이용해 해싱한다.
'2024 동계 모각코' 카테고리의 다른 글
2024 동계 모각코 6회차 - 목표 및 결과 (0) | 2025.02.17 |
---|---|
2024 동계 모각코 5회차 - 목표 및 결과 (0) | 2025.02.14 |
2024 동계 모각코 3회차 - 목표 및 결과 (0) | 2025.01.27 |
2024 동계 모각코 2주차 - 목표 및 결과 (0) | 2025.01.20 |
2024 동계 모각코 1주차 - 목표 및 결과 (0) | 2025.01.12 |