go test -bench $(PACKAGES)
functional-tests:
- @go test -v -timeout=30m -tags=functional ./test
+ @go test -v -timeout=5m -tags=functional ./test
-ci: test
+ci: test functional-tests
.PHONY: all target release-all clean test benchmark
package test
import (
- "github.com/bytom/consensus"
- "github.com/bytom/consensus/difficulty"
"github.com/bytom/mining/tensority"
"github.com/bytom/protocol"
"github.com/bytom/protocol/bc"
txStatus.SetStatus(0, false)
preBlockHeader := chain.BestBlockHeader()
- var compareDiffBH *types.BlockHeader
- if compareDiffBlock, err := chain.GetBlockByHeight(preBlockHeader.Height - consensus.BlocksPerRetarget); err == nil {
- compareDiffBH = &compareDiffBlock.BlockHeader
+ preBlockHash := preBlockHeader.Hash()
+ nextBits, err := chain.CalcNextBits(&preBlockHash)
+ if err != nil {
+ return nil, err
}
b := &types.Block{
PreviousBlockHash: preBlockHeader.Hash(),
Timestamp: preBlockHeader.Timestamp + 1,
BlockCommitment: types.BlockCommitment{},
- Bits: difficulty.CalcNextRequiredDifficulty(preBlockHeader, compareDiffBH),
+ Bits: nextBits,
},
Transactions: []*types.Tx{nil},
}
dbm "github.com/tendermint/tmlibs/db"
+ "github.com/bytom/consensus"
"github.com/bytom/protocol/bc/types"
"github.com/bytom/protocol/vm"
)
if err != nil {
t.Fatal(err)
}
- if err := AppendBlocks(chain, 6); err != nil {
+ if err := AppendBlocks(chain, consensus.CoinbasePendingBlockNumber+1); err != nil {
t.Fatal(err)
}
if err != nil {
t.Fatal(err)
}
- if err := AppendBlocks(chain, 7); err != nil {
+ if err := AppendBlocks(chain, consensus.CoinbasePendingBlockNumber+1); err != nil {
t.Fatal(err)
}
if err != nil {
t.Fatal(err)
}
- if err := AppendBlocks(chain, 7); err != nil {
+ if err := AppendBlocks(chain, consensus.CoinbasePendingBlockNumber+1); err != nil {
t.Fatal(err)
}
t.Fatal(err)
}
- if err := AppendBlocks(chain, 7); err != nil {
+ if err := AppendBlocks(chain, consensus.CoinbasePendingBlockNumber+1); err != nil {
t.Fatal(err)
}
{
"blocks": [
{
- "append": 6
+ "append": 100
},
{
"transactions": [
"transactions": [
{
"inputs": [
- {"height": 8, "tx_index": 1, "output_index": 0},
+ {"height": 102, "tx_index": 1, "output_index": 0},
{"height": 3, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
},
{
"inputs": [
- {"height": 11, "tx_index": 1, "output_index": 0},
+ {"height": 105, "tx_index": 1, "output_index": 0},
{"height": 4, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
"transactions": [
{
"inputs": [
- {"height": 12, "tx_index": 1, "output_index": 0},
- {"height": 12, "tx_index": 2, "output_index": 0},
- {"height": 12, "tx_index": 2, "output_index": 2}
+ {"height": 106, "tx_index": 1, "output_index": 0},
+ {"height": 106, "tx_index": 2, "output_index": 0},
+ {"height": 106, "tx_index": 2, "output_index": 2}
],
"outputs": [3000000000, 10000000, 3000000000]
},
{
"inputs": [
- {"height": 13, "tx_index": 1, "output_index": 0},
- {"height": 13, "tx_index": 1, "output_index": 2},
+ {"height": 107, "tx_index": 1, "output_index": 0},
+ {"height": 107, "tx_index": 1, "output_index": 2},
{"height": 5, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
},
{
"inputs": [
- {"height": 13, "tx_index": 2, "output_index": 0},
- {"height": 13, "tx_index": 1, "output_index": 1},
+ {"height": 107, "tx_index": 2, "output_index": 0},
+ {"height": 107, "tx_index": 1, "output_index": 1},
{"height": 6, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
{
"blocks": [
{
- "append": 6
+ "append": 100
},
{
"transactions": [
},
{
"inputs": [
- {"height": 8, "tx_index": 1, "output_index": 0},
+ {"height": 105, "tx_index": 1, "output_index": 0},
{"height": 3, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
"transactions": [
{
"inputs": [
- {"height": 8, "tx_index": 1, "output_index": 0},
+ {"height": 105, "tx_index": 1, "output_index": 0},
{"height": 4, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
{
"blocks": [
{
- "append": 6
+ "append": 100
},
{
"transactions": [
"transactions": [
{
"inputs": [
- {"height": 8, "tx_index": 1, "output_index": 0},
+ {"height": 105, "tx_index": 1, "output_index": 0},
{"height": 3, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
},
{
"inputs": [
- {"height": 11, "tx_index": 1, "output_index": 0},
+ {"height": 105, "tx_index": 1, "output_index": 2},
{"height": 4, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
{
- "rollback_to": 10,
+ "rollback": 104,
"blocks": [
{
- "append": 6
+ "append": 100
},
{
"transactions": [
"transactions": [
{
"inputs": [
- {"height": 8, "tx_index": 1, "output_index": 0},
+ {"height": 102, "tx_index": 1, "output_index": 0},
{"height": 3, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
},
{
"inputs": [
- {"height": 11, "tx_index": 1, "output_index": 0},
+ {"height": 105, "tx_index": 1, "output_index": 0},
{"height": 4, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
"transactions": [
{
"inputs": [
- {"height": 12, "tx_index": 1, "output_index": 0},
- {"height": 12, "tx_index": 2, "output_index": 0},
- {"height": 12, "tx_index": 2, "output_index": 2}
+ {"height": 106, "tx_index": 1, "output_index": 0},
+ {"height": 106, "tx_index": 2, "output_index": 0},
+ {"height": 106, "tx_index": 2, "output_index": 2}
],
"outputs": [3000000000, 10000000, 3000000000]
},
{
"inputs": [
- {"height": 13, "tx_index": 1, "output_index": 0},
- {"height": 13, "tx_index": 1, "output_index": 2},
+ {"height": 107, "tx_index": 1, "output_index": 0},
+ {"height": 107, "tx_index": 1, "output_index": 2},
{"height": 5, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
},
{
"inputs": [
- {"height": 13, "tx_index": 2, "output_index": 0},
- {"height": 13, "tx_index": 1, "output_index": 1},
+ {"height": 107, "tx_index": 2, "output_index": 0},
+ {"height": 107, "tx_index": 1, "output_index": 1},
{"height": 6, "tx_index": 0, "output_index": 0}
],
"outputs": [3000000000, 10000000, 3000000000]
{
"keys": [
{"name": "alice", "password": "alice"},
- {"name": "bob", "password": "bob"}
+ {"name": "bob", "password": "bob"},
+ {"name": "none", "password": "none"}
],
"accounts": [
{"name": "alice", "keys": ["alice"], "quorum": 1},
- {"name": "bob", "keys": ["bob"], "quorum": 1}
+ {"name": "bob", "keys": ["bob"], "quorum": 1},
+ {"name": "none", "keys": ["none"], "quorum": 1}
],
"blocks": [
{
"post_states": [
{"name": "alice", "asset": "BTM", "amount": 41250000000}
],
- "append": 6
+ "append": 100
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["alice"],
{"type": "spend_account", "name": "alice", "amount": 6000000000, "asset": "BTM"}
],
"outputs": [
- {"type": "output", "name": "bob", "amount": 1000000000, "asset": "BTM"},
- {"type": "output", "name": "alice", "amount": 4000000000, "asset": "BTM"}
+ {"type": "output", "name": "bob", "amount": 500000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 500000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 2000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 2000000000, "asset": "BTM"}
]
}
],
"post_states": [
{"name": "alice", "asset": "BTM", "amount": 39250000000},
- {"name": "bob", "asset": "BTM", "amount": 43250000000}
- ],
- "append": 6
+ {"name": "bob", "asset": "BTM", "amount": 1000000000}
+ ]
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["alice"],
"post_states": [
{"name": "alice", "asset": "BTM", "amount": 38250000000},
{"name": "alice", "asset": "GOLD", "amount": 100},
- {"name": "bob", "asset": "BTM", "amount": 85500000000}
- ],
- "append": 6
+ {"name": "bob", "asset": "BTM", "amount": 1000000000}
+ ]
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["bob"],
"inputs": [
- {"type": "spend_account", "name": "bob", "amount": 6000000000, "asset": "BTM"}
+ {"type": "spend_account", "name": "bob", "amount": 400000000, "asset": "BTM"}
],
"outputs": [
- {"type": "output", "name": "alice", "amount": 1000000000, "asset": "BTM"},
- {"type": "output", "name": "bob", "amount": 4000000000, "asset": "BTM"}
+ {"type": "output", "name": "alice", "amount": 100000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 200000000, "asset": "BTM"}
]
},
{
"passwords": ["alice", "bob"],
"inputs": [
- {"type": "spend_account", "name": "bob", "amount": 2000000000, "asset": "BTM"},
+ {"type": "spend_account", "name": "bob", "amount": 200000000, "asset": "BTM"},
{"type": "spend_account", "name": "alice", "amount": 50, "asset": "GOLD"}
],
"outputs": [
{"type": "output", "name": "bob", "amount": 50, "asset": "GOLD"},
- {"type": "output", "name": "alice", "amount": 1000000000, "asset": "BTM"}
+ {"type": "output", "name": "alice", "amount": 100000000, "asset": "BTM"}
]
}
],
"post_states": [
- {"name": "alice", "asset": "BTM", "amount": 40250000000},
+ {"name": "alice", "asset": "BTM", "amount": 38450000000},
{"name": "alice", "asset": "GOLD", "amount": 50},
- {"name": "bob", "asset": "BTM", "amount": 124750000000},
+ {"name": "bob", "asset": "BTM", "amount": 600000000},
{"name": "bob", "asset": "GOLD", "amount": 50}
- ],
- "append": 0
+ ]
}
]
}
"post_states": [
{"name": "alice", "asset": "BTM", "amount": 41250000000}
],
- "append": 6
+ "append": 100
},
{
"coinbase_account": "bob",
"post_states": [
{"name": "alice", "asset": "BTM", "amount": 41250000000}
],
- "append": 6
+ "append": 100
},
{
"coinbase_account": "bob",
{
"keys": [
{"name": "alice", "password": "alice"},
- {"name": "bob", "password": "bob"}
+ {"name": "bob", "password": "bob"},
+ {"name": "none", "password": "none"}
],
"accounts": [
{"name": "alice", "keys": ["alice"], "quorum": 1},
{"name": "bob", "keys": ["bob"], "quorum": 1},
- {"name": "multi-sig", "keys": ["alice", "bob"], "quorum": 2}
+ {"name": "multi-sig", "keys": ["alice", "bob"], "quorum": 2},
+ {"name": "none", "keys": ["none"], "quorum": 1}
],
"blocks": [
{
"post_states": [
{"name": "alice", "asset": "BTM", "amount": 41250000000}
],
- "append": 6
+ "append": 100
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["alice"],
"inputs": [
- {"type": "spend_account", "name": "alice", "amount": 10000000000, "asset": "BTM"}
+ {"type": "spend_account", "name": "alice", "amount": 40000000000, "asset": "BTM"}
],
"outputs": [
- {"type": "output", "name": "bob", "amount": 4000000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 2000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 2000000000, "asset": "BTM"},
+ {"type": "output", "name": "multi-sig", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "multi-sig", "amount": 5000000000, "asset": "BTM"},
{"type": "output", "name": "multi-sig", "amount": 5000000000, "asset": "BTM"}
]
}
],
"post_states": [
- {"name": "alice", "asset": "BTM", "amount": 31250000000},
- {"name": "bob", "asset": "BTM", "amount": 46250000000},
- {"name": "multi-sig", "asset": "BTM", "amount": 5000000000}
- ],
- "append": 6
+ {"name": "alice", "asset": "BTM", "amount": 10250000000},
+ {"name": "bob", "asset": "BTM", "amount": 15000000000},
+ {"name": "multi-sig", "asset": "BTM", "amount": 15000000000}
+ ]
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["bob", "alice"],
}
],
"post_states": [
- {"name": "alice", "asset": "BTM", "amount": 31250000000},
+ {"name": "alice", "asset": "BTM", "amount": 10250000000},
{"name": "multi-sig", "asset": "GOLD", "amount": 100},
- {"name": "multi-sig", "asset": "BTM", "amount": 4000000000},
- {"name": "bob", "asset": "BTM", "amount": 88500000000}
- ],
- "append": 6
+ {"name": "multi-sig", "asset": "BTM", "amount": 14000000000},
+ {"name": "bob", "asset": "BTM", "amount": 15000000000}
+ ]
},
{
- "coinbase_account": "multi-sig",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["alice", "bob"],
}
],
"post_states": [
- {"name": "multi-sig", "asset": "BTM", "amount": 65250000000},
+ {"name": "multi-sig", "asset": "BTM", "amount": 33000000000},
{"name": "multi-sig", "asset": "GOLD", "amount": 60},
- {"name": "alice", "asset": "BTM", "amount": 21250000000},
+ {"name": "alice", "asset": "BTM", "amount": 250000000},
{"name": "alice", "asset": "GOLD", "amount": 20},
- {"name": "bob", "asset": "BTM", "amount": 78500000000},
+ {"name": "bob", "asset": "BTM", "amount": 5000000000},
{"name": "bob", "asset": "GOLD", "amount": 20}
- ],
- "append": 0
+ ]
}
]
}
{
"keys": [
{"name": "alice", "password": "alice"},
- {"name": "bob", "password": "bob"}
+ {"name": "bob", "password": "bob"},
+ {"name": "none", "password": "none"}
],
"accounts": [
{"name": "alice", "keys": ["alice"], "quorum": 1},
- {"name": "bob", "keys": ["bob"], "quorum": 1}
+ {"name": "bob", "keys": ["bob"], "quorum": 1},
+ {"name": "none", "keys": ["none"], "quorum": 1}
],
"blocks": [
{
"post_states": [
{"name": "alice", "asset": "BTM", "amount": 41250000000}
],
- "append": 6
+ "append": 100
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["alice"],
"inputs": [
- {"type": "spend_account", "name": "alice", "amount": 6000000000, "asset": "BTM"}
+ {"type": "spend_account", "name": "alice", "amount": 30000000000, "asset": "BTM"}
],
"outputs": [
- {"type": "output", "name": "bob", "amount": 1000000000, "asset": "BTM"},
- {"type": "output", "name": "alice", "amount": 4000000000, "asset": "BTM"}
+ {"type": "output", "name": "bob", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 2000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 2000000000, "asset": "BTM"}
]
}
],
"post_states": [
- {"name": "alice", "asset": "BTM", "amount": 39250000000},
- {"name": "bob", "asset": "BTM", "amount": 43250000000}
- ],
- "append": 6
+ {"name": "alice", "asset": "BTM", "amount": 25250000000},
+ {"name": "bob", "asset": "BTM", "amount": 15000000000}
+ ]
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["alice"],
}
],
"post_states": [
- {"name": "alice", "asset": "BTM", "amount": 38250000000},
+ {"name": "alice", "asset": "BTM", "amount": 24250000000},
{"name": "alice", "asset": "GOLD", "amount": 100},
- {"name": "bob", "asset": "BTM", "amount": 85500000000}
- ],
- "append": 6
+ {"name": "bob", "asset": "BTM", "amount": 15000000000}
+ ]
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["bob"],
"inputs": [
- {"type": "spend_account", "name": "bob", "amount": 6000000000, "asset": "BTM"}
+ {"type": "spend_account", "name": "bob", "amount": 5000000000, "asset": "BTM"}
],
"outputs": [
{"type": "output", "name": "alice", "amount": 1000000000, "asset": "BTM"},
- {"type": "output", "name": "bob", "amount": 4000000000, "asset": "BTM"}
+ {"type": "output", "name": "bob", "amount": 3000000000, "asset": "BTM"}
]
},
{
}
],
"post_states": [
- {"name": "alice", "asset": "BTM", "amount": 40250000000},
+ {"name": "alice", "asset": "BTM", "amount": 26250000000},
{"name": "alice", "asset": "GOLD", "amount": 50},
- {"name": "bob", "asset": "BTM", "amount": 124750000000},
+ {"name": "bob", "asset": "BTM", "amount": 11000000000},
{"name": "bob", "asset": "GOLD", "amount": 50}
- ],
- "append": 0
+ ]
},
{
- "coinbase_account": "alice",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["alice"],
}
],
"post_states": [
- {"name": "alice", "asset": "BTM", "amount": 81500000000},
+ {"name": "alice", "asset": "BTM", "amount": 25250000000},
{"name": "alice", "asset": "GOLD", "amount": 30},
- {"name": "bob", "asset": "BTM", "amount": 124750000000},
+ {"name": "bob", "asset": "BTM", "amount": 11000000000},
{"name": "bob", "asset": "GOLD", "amount": 50}
- ],
- "append": 0
+ ]
}
]
}
{
- "rollback_to": 20,
+ "rollback": 102,
"keys": [
{"name": "alice", "password": "alice"},
- {"name": "bob", "password": "bob"}
+ {"name": "bob", "password": "bob"},
+ {"name": "none", "password": "none"}
],
"accounts": [
{"name": "alice", "keys": ["alice"], "quorum": 1},
{"name": "bob", "keys": ["bob"], "quorum": 1},
- {"name": "multi-sig", "keys": ["alice", "bob"], "quorum": 2}
+ {"name": "multi-sig", "keys": ["alice", "bob"], "quorum": 2},
+ {"name": "none", "keys": ["none"], "quorum": 1}
],
"blocks": [
{
"post_states": [
{"name": "alice", "asset": "BTM", "amount": 41250000000}
],
- "append": 6
+ "append": 100
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["alice"],
"inputs": [
- {"type": "spend_account", "name": "alice", "amount": 10000000000, "asset": "BTM"}
+ {"type": "spend_account", "name": "alice", "amount": 40000000000, "asset": "BTM"}
],
"outputs": [
- {"type": "output", "name": "bob", "amount": 4000000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "bob", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 2000000000, "asset": "BTM"},
+ {"type": "output", "name": "alice", "amount": 2000000000, "asset": "BTM"},
+ {"type": "output", "name": "multi-sig", "amount": 5000000000, "asset": "BTM"},
+ {"type": "output", "name": "multi-sig", "amount": 5000000000, "asset": "BTM"},
{"type": "output", "name": "multi-sig", "amount": 5000000000, "asset": "BTM"}
]
}
],
"post_states": [
- {"name": "alice", "asset": "BTM", "amount": 31250000000},
- {"name": "bob", "asset": "BTM", "amount": 46250000000},
- {"name": "multi-sig", "asset": "BTM", "amount": 5000000000}
- ],
- "append": 6
+ {"name": "alice", "asset": "BTM", "amount": 10250000000},
+ {"name": "bob", "asset": "BTM", "amount": 15000000000},
+ {"name": "multi-sig", "asset": "BTM", "amount": 15000000000}
+ ]
},
{
- "coinbase_account": "bob",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["bob", "alice"],
}
],
"post_states": [
- {"name": "alice", "asset": "BTM", "amount": 31250000000},
+ {"name": "alice", "asset": "BTM", "amount": 10250000000},
{"name": "multi-sig", "asset": "GOLD", "amount": 100},
- {"name": "multi-sig", "asset": "BTM", "amount": 4000000000},
- {"name": "bob", "asset": "BTM", "amount": 88500000000}
- ],
- "append": 6
+ {"name": "multi-sig", "asset": "BTM", "amount": 14000000000},
+ {"name": "bob", "asset": "BTM", "amount": 15000000000}
+ ]
},
{
- "coinbase_account": "multi-sig",
+ "coinbase_account": "none",
"transactions": [
{
"passwords": ["alice", "bob"],
}
],
"post_states": [
- {"name": "multi-sig", "asset": "BTM", "amount": 65250000000},
+ {"name": "multi-sig", "asset": "BTM", "amount": 33000000000},
{"name": "multi-sig", "asset": "GOLD", "amount": 60},
- {"name": "alice", "asset": "BTM", "amount": 21250000000},
+ {"name": "alice", "asset": "BTM", "amount": 250000000},
{"name": "alice", "asset": "GOLD", "amount": 20},
- {"name": "bob", "asset": "BTM", "amount": 78500000000},
+ {"name": "bob", "asset": "BTM", "amount": 5000000000},
{"name": "bob", "asset": "GOLD", "amount": 20}
- ],
- "append": 0
+ ]
}
]
}