主パッケージ
のインポート(
「時間」
、「暗号化/ SHA256 」
「バイト」
)
// ブロック体
型ブロック構造体{
// バージョン情報
バージョンのInt64
// ハッシュ値ブロック連鎖前
PrevBlockHash [] バイト
// 現在ブロックハッシュ
ハッシュ[] バイト
// メイKaerルート
MerkelRoot [] バイト
// タイムスタンプ
timeStampにint64モード
// 難易度の値の
ビットのint64
// 乱数
ナンスのint64
// トランザクション情報
データ[] バイト
}
FUNC(ブロックブロック)setHash(){
TEP: = [] [] バイト{
IntToByte(block.Version)、
block.PrevBlockHash、
block.MerkelRoot、
IntToByte(block.TimeStamp)、
IntToByte(block.Bits )、
IntToByte(block.Nonce)、
block.Data、
}
データ: = bytes.Join(TEP、[] バイト{})
ハッシュ: = sha256.Sum256(データ)
block.Hash = ハッシュ[:]
}
NewBlock FUNC(データ列、prevBlockHash [] バイト)*ブロック{
VARのブロックブロックの
ブロック = ブロック{
バージョン:1 、
PrevBlockHash:prevBlockHash、
MerkelRoot:[] バイト{}、
タイムスタンプ:。time.Now()UNIX()、
ビット:1 、
ノンス:1 、
データ:[] バイト(データ)
}
block.setHash()
リターン・ブロック
}
// 传世区块
FUNC NewGenesisBlock()* ブロック{
リターン NewBlock(" ジェネシスブロック!"、[]バイト{})
}