"time"
"github.com/bytom/bytom/consensus"
+ dbm "github.com/bytom/bytom/database/leveldb"
"github.com/bytom/bytom/protocol/bc"
"github.com/bytom/bytom/protocol/bc/types"
"github.com/bytom/bytom/protocol/vm"
- dbm "github.com/bytom/bytom/database/leveldb"
)
func TestBlockHeader(t *testing.T) {
prevHeight func() uint64
timestamp func() uint64
prevHash func() *bc.Hash
- bits func() uint64
- solve bool
valid bool
}{
{
prevHeight: chain.BestBlockHeight,
timestamp: func() uint64 { return chain.BestBlockHeader().Timestamp + 1 },
prevHash: chain.BestBlockHash,
- bits: func() uint64 { return chain.BestBlockHeader().Bits },
- solve: true,
valid: true,
},
{
prevHeight: func() uint64 { return chain.BestBlockHeight() + 1 },
timestamp: func() uint64 { return chain.BestBlockHeader().Timestamp + 1 },
prevHash: chain.BestBlockHash,
- bits: func() uint64 { return chain.BestBlockHeader().Bits },
- solve: true,
valid: false,
},
{
prevHeight: chain.BestBlockHeight,
timestamp: func() uint64 { return chain.BestBlockHeader().Timestamp + 1 },
prevHash: func() *bc.Hash { hash := genesisHeader.Hash(); return &hash },
- bits: func() uint64 { return chain.BestBlockHeader().Bits },
- solve: true,
- valid: false,
- },
- {
- desc: "invalid bits",
- version: func() uint64 { return chain.BestBlockHeader().Version },
- prevHeight: chain.BestBlockHeight,
- timestamp: func() uint64 { return chain.BestBlockHeader().Timestamp + 1 },
- prevHash: chain.BestBlockHash,
- bits: func() uint64 { return chain.BestBlockHeader().Bits + 100 },
- solve: true,
valid: false,
},
{
prevHeight: chain.BestBlockHeight,
timestamp: func() uint64 { return uint64(time.Now().Unix()) + consensus.MaxTimeOffsetSeconds + 60 },
prevHash: chain.BestBlockHash,
- bits: func() uint64 { return chain.BestBlockHeader().Bits },
- solve: true,
valid: false,
},
{
prevHeight: chain.BestBlockHeight,
timestamp: func() uint64 { return chain.BestBlockHeader().Timestamp + 3 },
prevHash: chain.BestBlockHash,
- bits: func() uint64 { return chain.BestBlockHeader().Bits },
- solve: true,
valid: true,
},
{
prevHeight: chain.BestBlockHeight,
timestamp: func() uint64 { return chain.BestBlockHeader().Timestamp - 1 },
prevHash: chain.BestBlockHash,
- bits: func() uint64 { return chain.BestBlockHeader().Bits },
- solve: true,
valid: true,
},
{
prevHeight: chain.BestBlockHeight,
timestamp: func() uint64 { return genesisHeader.Timestamp },
prevHash: chain.BestBlockHash,
- bits: func() uint64 { return chain.BestBlockHeader().Bits },
- solve: true,
valid: false,
},
}
block.Height = c.prevHeight() + 1
block.Timestamp = c.timestamp()
block.PreviousBlockHash = *c.prevHash()
- block.Bits = c.bits()
- seed, err := chain.CalcNextSeed(&block.PreviousBlockHash)
if err != nil && c.valid {
t.Fatal(err)
}
- if c.solve {
- Solve(seed, block)
- }
_, err = chain.ProcessBlock(block)
result := err == nil
if result != c.valid {
t.Fatal(err)
}
- if err := SolveAndUpdate(chain, block); err == nil {
+ if _, err := chain.ProcessBlock(block); err == nil {
t.Fatalf("test max block gas failed")
}
}
"testing"
"github.com/bytom/bytom/consensus"
+ dbm "github.com/bytom/bytom/database/leveldb"
"github.com/bytom/bytom/protocol/bc/types"
"github.com/bytom/bytom/protocol/vm"
- dbm "github.com/bytom/bytom/database/leveldb"
)
// case1: |------c1(height=7)
}
newBlock, err := NewBlock(chain, []*types.Tx{tx}, []byte{byte(vm.OP_TRUE)})
- err = SolveAndUpdate(chain, newBlock)
+ if err != nil {
+ t.Fatal(err)
+ }
+ _, err = chain.ProcessBlock(newBlock)
if err != nil {
t.Fatal(err)
}
t.Fatal(err)
}
- if err := SolveAndUpdate(chain, block); err == nil {
+ if _, err := chain.ProcessBlock(block); err == nil {
t.Fatalf("process double spent tx success")
}
}
t.Fatal(err)
}
- if err := SolveAndUpdate(chain, block); err != nil {
+ if _, err = chain.ProcessBlock(block); err != nil {
t.Fatal("process dependency tx failed")
}
}
"github.com/bytom/bytom/asset"
"github.com/bytom/bytom/blockchain/pseudohsm"
"github.com/bytom/bytom/consensus"
+ dbm "github.com/bytom/bytom/database/leveldb"
"github.com/bytom/bytom/protocol/bc"
"github.com/bytom/bytom/protocol/bc/types"
"github.com/bytom/bytom/protocol/validation"
"github.com/bytom/bytom/protocol/vm"
- dbm "github.com/bytom/bytom/database/leveldb"
)
func init() {
if err != nil {
t.Fatal(err)
}
- if err := SolveAndUpdate(chain, block); err == nil {
+ if _, err = chain.ProcessBlock(block); err == nil {
t.Fatal("spent immature coinbase output success")
}
block, err = NewBlock(chain, nil, defaultCtrlProg)
if err != nil {
t.Fatal(err)
}
- if err := SolveAndUpdate(chain, block); err != nil {
+ if _, err := chain.ProcessBlock(block); err != nil {
t.Fatal(err)
}
}
if err != nil {
t.Fatal(err)
}
- if err := SolveAndUpdate(chain, block); err != nil {
+ if _, err = chain.ProcessBlock(block); err != nil {
t.Fatalf("spent mature coinbase output failed: %s", err)
}
}
t.Fatal(err)
}
- if err := SolveAndUpdate(chain, block); err == nil {
+ if _, err = chain.ProcessBlock(block); err == nil {
t.Fatalf("invalid coinbase tx validate success")
}
}