func (fbc *fakeBlockchain) CreateGenesisBlock(genesisAddr cipher.Address, genesisCoins, timestamp uint64) coin.Block { txn := coin.Transaction{} txn.PushOutput(genesisAddr, genesisCoins, genesisCoins) body := coin.BlockBody{coin.Transactions{txn}} prevHash := cipher.SHA256{} head := coin.BlockHeader{ Time: timestamp, BodyHash: body.Hash(), PrevHash: prevHash, BkSeq: 0, Version: 0, Fee: 0, UxHash: coin.NewUnspentPool().GetUxHash(), } b := coin.Block{ Head: head, Body: body, } // b.Body.Transactions[0].UpdateHeader() fbc.blocks = append(fbc.blocks, b) ux := coin.UxOut{ Head: coin.UxHead{ Time: timestamp, BkSeq: 0, }, Body: coin.UxBody{ SrcTransaction: txn.InnerHash, //user inner hash Address: genesisAddr, Coins: genesisCoins, Hours: genesisCoins, // Allocate 1 coin hour per coin }, } fbc.unspent.Add(ux) return b }
func newBlockHeader(prev coin.BlockHeader, unspent coin.UnspentPool, currentTime, fee uint64, body coin.BlockBody) coin.BlockHeader { prevHash := prev.Hash() return coin.BlockHeader{ BodyHash: body.Hash(), Version: prev.Version, PrevHash: prevHash, Time: currentTime, BkSeq: prev.BkSeq + 1, Fee: fee, UxHash: getUxHash(unspent), } }
func makeNewBlock() coin.Block { unsp := coin.NewUnspentPool() body := coin.BlockBody{ Transactions: coin.Transactions{coin.Transaction{}}, } prev := coin.Block{ Body: body, Head: coin.BlockHeader{ Version: 0x02, Time: 100, BkSeq: 0, Fee: 10, PrevHash: cipher.SHA256{}, BodyHash: body.Hash(), }} return coin.NewBlock(prev, 100+20, unsp, coin.Transactions{coin.Transaction{}}, _feeCalc) }