tmp use PubK instead of Addr, Add test add genesis block

This commit is contained in:
arnaucube
2019-04-09 09:58:01 +02:00
parent 670b215e0a
commit 985f03bb14
4 changed files with 65 additions and 16 deletions

View File

@@ -78,8 +78,8 @@ func (node *Node) NewBlock(txs []core.Tx) *core.Block {
func (node *Node) CreateGenesis() (*core.Block, error) {
block := &core.Block{
Height: uint64(0),
PrevHash: core.Hash{},
Height: node.Bc.LastBlock.Height,
PrevHash: node.Bc.LastBlock.Hash,
Txs: []core.Tx{},
Miner: node.Addr,
MinerPubK: &node.PrivK.PublicKey,
@@ -93,5 +93,6 @@ func (node *Node) CreateGenesis() (*core.Block, error) {
if err != nil {
return nil, err
}
block.CalculateHash()
return block, nil
}

View File

@@ -62,9 +62,13 @@ func TestBlockFromPendingTxs(t *testing.T) {
node, err := NewNode(privK, bc, true)
assert.Nil(t, err)
addr0 := core.Address(core.HashBytes([]byte("addr0")))
addr1 := core.Address(core.HashBytes([]byte("addr1")))
tx := core.NewTx(addr0, addr1, []core.Input{}, []core.Output{})
privK0, err := core.NewKey()
assert.Nil(t, err)
pubK0 := privK0.PublicKey
privK1, err := core.NewKey()
assert.Nil(t, err)
pubK1 := privK1.PublicKey
tx := core.NewTx(&pubK0, &pubK1, []core.Input{}, []core.Output{})
node.AddToPendingTxs(*tx)
block, err := node.BlockFromPendingTxs()
assert.Nil(t, err)
@@ -87,10 +91,15 @@ func TestBlockFromPendingTxsIteration(t *testing.T) {
node, err := NewNode(privK, bc, true)
assert.Nil(t, err)
addr0 := core.Address(core.HashBytes([]byte("addr0")))
addr1 := core.Address(core.HashBytes([]byte("addr1")))
privK0, err := core.NewKey()
assert.Nil(t, err)
pubK0 := privK0.PublicKey
privK1, err := core.NewKey()
assert.Nil(t, err)
pubK1 := privK1.PublicKey
for i := 0; i < 10; i++ {
tx := core.NewTx(addr0, addr1, []core.Input{}, []core.Output{})
tx := core.NewTx(&pubK0, &pubK1, []core.Input{}, []core.Output{})
node.AddToPendingTxs(*tx)
}
block, err := node.BlockFromPendingTxs()
@@ -98,3 +107,35 @@ func TestBlockFromPendingTxsIteration(t *testing.T) {
assert.True(t, core.CheckBlockPoW(block, node.Bc.Difficulty))
assert.True(t, node.Bc.VerifyBlock(block))
}
func TestFromGenesisToTenBlocks(t *testing.T) {
dir, err := ioutil.TempDir("", "db")
assert.Nil(t, err)
db, err := db.New(dir)
assert.Nil(t, err)
privK, err := core.NewKey()
assert.Nil(t, err)
dif := uint64(1)
bc := core.NewBlockchain(db, dif)
node, err := NewNode(privK, bc, true)
assert.Nil(t, err)
// create the genesis block
genesisBlock, err := node.CreateGenesis()
assert.Nil(t, err)
assert.NotEqual(t, genesisBlock.Signature, core.Signature{})
assert.NotEqual(t, genesisBlock.Hash, core.Hash{})
// add the genesis block into the blockchain
err = node.Bc.AddBlock(genesisBlock)
assert.Nil(t, err)
assert.NotEqual(t, genesisBlock.Hash, core.Hash{})
assert.Equal(t, genesisBlock.Hash, node.Bc.LastBlock.Hash)
// TODO add another block
block := node.NewBlock([]core.Tx{})
err = node.Bc.AddBlock(block)
assert.Nil(t, err)
}