bytomd-simd:
@echo "Building SIMD version bytomd to cmd/bytomd/bytomd"
- @cd mining/tensority/cgo_algorithm/lib/ && make
@go build -tags="simd" $(BUILD_FLAGS) -o cmd/bytomd/bytomd cmd/bytomd/main.go
bytomcli:
-h, --help help for node
--log_file string Log output file (default "log")
--log_level string Select log level(debug, info, warn, error or fatal)
- --mining Enable mining
--p2p.dial_timeout int Set dial timeout (default 3)
--p2p.handshake_timeout int Set handshake timeout (default 30)
--p2p.keep_dial string Peers addresses try keeping connecting to, separated by ',' (for example "1.1.1.1:46657;2.2.2.2:46658")
"github.com/bytom/bytom/crypto"
"github.com/bytom/bytom/crypto/ed25519/chainkd"
"github.com/bytom/bytom/crypto/sha3pool"
+ dbm "github.com/bytom/bytom/database/leveldb"
"github.com/bytom/bytom/errors"
"github.com/bytom/bytom/protocol"
"github.com/bytom/bytom/protocol/bc"
"github.com/bytom/bytom/protocol/vm/vmutil"
- dbm "github.com/bytom/bytom/database/leveldb"
)
const (
return cp, json.Unmarshal(rawProgram, cp)
}
-// GetMiningAddress will return the mining address
-func (m *Manager) GetMiningAddress() (string, error) {
- cp, err := m.GetCoinbaseCtrlProgram()
- if err != nil {
- return "", err
- }
- return cp.Address, nil
-}
-
// IsLocalControlProgram check is the input control program belong to local
func (m *Manager) IsLocalControlProgram(prog []byte) bool {
var hash common.Hash
m.utxoKeeper.RemoveUnconfirmedUtxo(hashes)
}
-// SetMiningAddress will set the mining address
-func (m *Manager) SetMiningAddress(miningAddress string) (string, error) {
- program, err := m.getProgramByAddress(miningAddress)
- if err != nil {
- return "", err
- }
-
- cp := &CtrlProgram{
- Address: miningAddress,
- ControlProgram: program,
- }
- rawCP, err := json.Marshal(cp)
- if err != nil {
- return "", err
- }
-
- m.db.Set(miningAddressKey, rawCP)
- return m.GetMiningAddress()
-}
-
func (m *Manager) SetCoinbaseArbitrary(arbitrary []byte) {
m.db.Set(CoinbaseAbKey, arbitrary)
}
start, end := getPageRange(len(addresses), ins.From, ins.Count)
return NewSuccessResponse(addresses[start:end])
}
-
-type minigAddressResp struct {
- MiningAddress string `json:"mining_address"`
-}
-
-func (a *API) getMiningAddress(ctx context.Context) Response {
- miningAddress, err := a.wallet.AccountMgr.GetMiningAddress()
- if err != nil {
- return NewErrorResponse(err)
- }
- return NewSuccessResponse(minigAddressResp{
- MiningAddress: miningAddress,
- })
-}
-
-// POST /set-mining-address
-func (a *API) setMiningAddress(ctx context.Context, in struct {
- MiningAddress string `json:"mining_address"`
-}) Response {
- miningAddress, err := a.wallet.AccountMgr.SetMiningAddress(in.MiningAddress)
- if err != nil {
- return NewErrorResponse(err)
- }
- return NewSuccessResponse(minigAddressResp{
- MiningAddress: miningAddress,
- })
-}
m.Handle("/validate-address", jsonHandler(a.validateAddress))
m.Handle("/list-pubkeys", jsonHandler(a.listPubKeys))
- m.Handle("/get-mining-address", jsonHandler(a.getMiningAddress))
- m.Handle("/set-mining-address", jsonHandler(a.setMiningAddress))
-
m.Handle("/create-asset", jsonHandler(a.createAsset))
m.Handle("/update-asset-alias", jsonHandler(a.updateAssetAlias))
m.Handle("/get-asset", jsonHandler(a.getAsset))
BytomcliCmd.AddCommand(getTransactionFeedCmd)
BytomcliCmd.AddCommand(updateTransactionFeedCmd)
- BytomcliCmd.AddCommand(isMiningCmd)
- BytomcliCmd.AddCommand(setMiningCmd)
-
BytomcliCmd.AddCommand(netInfoCmd)
BytomcliCmd.AddCommand(gasRateCmd)
+++ /dev/null
-package commands
-
-import (
- "os"
- "strings"
-
- "github.com/spf13/cobra"
- jww "github.com/spf13/jwalterweatherman"
-
- "github.com/bytom/bytom/util"
-)
-
-var isMiningCmd = &cobra.Command{
- Use: "is-mining",
- Short: "If client is actively mining new blocks",
- Args: cobra.NoArgs,
- Run: func(cmd *cobra.Command, args []string) {
- data, exitCode := util.ClientCall("/is-mining")
- if exitCode != util.Success {
- os.Exit(exitCode)
- }
- printJSON(data)
- },
-}
-
-var setMiningCmd = &cobra.Command{
- Use: "set-mining <true or false>",
- Short: "start or stop mining",
- Args: cobra.ExactArgs(1),
- Run: func(cmd *cobra.Command, args []string) {
- param := strings.ToLower(args[0])
- isMining := false
- switch param {
- case "true":
- isMining = true
- default:
- isMining = false
- }
-
- miningInfo := &struct {
- IsMining bool `json:"is_mining"`
- }{IsMining: isMining}
-
- if _, exitCode := util.ClientCall("/set-mining", miningInfo); exitCode != util.Success {
- os.Exit(exitCode)
- }
-
- if isMining {
- jww.FEEDBACK.Println("start mining success")
- } else {
- jww.FEEDBACK.Println("stop mining success")
- }
- },
-}
func init() {
runNodeCmd.Flags().String("prof_laddr", config.ProfListenAddress, "Use http to profile bytomd programs")
- runNodeCmd.Flags().Bool("mining", config.Mining, "Enable mining")
runNodeCmd.Flags().Bool("simd.enable", config.Simd.Enable, "Enable SIMD mechan for tensority")
// TCP or UNIX socket address for the profiling server to listen on
ProfListenAddress string `mapstructure:"prof_laddr"`
- Mining bool `mapstructure:"mining"`
-
// Database backend: leveldb | memdb
DBBackend string `mapstructure:"db_backend"`
return BaseConfig{
Moniker: "anonymous",
ProfListenAddress: "",
- Mining: false,
DBBackend: "leveldb",
DBPath: "data",
KeysPath: "keystore",
baseSubsidy = uint64(41250000000)
InitialBlockSubsidy = uint64(140700041250000000)
- // config for pow mining
- BlocksPerRetarget = uint64(2016)
- TargetSecondsPerBlock = uint64(150)
- SeedPerRetarget = uint64(256)
-
// MaxTimeOffsetSeconds is the maximum number of seconds a block time is allowed to be ahead of the current time
MaxTimeOffsetSeconds = uint64(60 * 60)
MedianTimeBlocks = 11
type mockStore struct{}
-func (s *mockStore) GetBlockHeader(hash *bc.Hash) (*types.BlockHeader, error) {
- panic("implement me")
-}
-
-func (s *mockStore) GetCheckpoint(hash *bc.Hash) (*state.Checkpoint, error) {
- panic("implement me")
-}
-
-func (s *mockStore) GetCheckpointsByHeight(u uint64) ([]*state.Checkpoint, error) {
- panic("implement me")
+func (s *mockStore) SaveChainStatus(*state.BlockNode, *state.UtxoViewpoint, *state.ContractViewpoint) error {
+ return nil
}
-
+func (s *mockStore) GetBlockHeader(hash *bc.Hash) (*types.BlockHeader, error) { return nil, nil }
+func (s *mockStore) GetCheckpoint(hash *bc.Hash) (*state.Checkpoint, error) { return nil, nil }
+func (s *mockStore) GetCheckpointsByHeight(u uint64) ([]*state.Checkpoint, error) { return nil, nil }
func (s *mockStore) BlockExist(hash *bc.Hash) bool { return false }
func (s *mockStore) GetBlock(*bc.Hash) (*types.Block, error) { return nil, nil }
func (s *mockStore) GetStoreStatus() *BlockStoreState { return nil }
func (s *mockStore) GetUtxo(*bc.Hash) (*storage.UtxoEntry, error) { return nil, nil }
func (s *mockStore) LoadBlockIndex(uint64) (*state.BlockIndex, error) { return nil, nil }
func (s *mockStore) SaveBlock(*types.Block, *bc.TransactionStatus) error { return nil }
-func (s *mockStore) SaveChainStatus(*state.BlockNode, *state.UtxoViewpoint) error { return nil }
func TestAddOrphan(t *testing.T) {
cases := []struct {
type mockStore1 struct{}
-func (s *mockStore1) GetBlockHeader(hash *bc.Hash) (*types.BlockHeader, error) {
- panic("implement me")
-}
-
-func (s *mockStore1) GetCheckpoint(hash *bc.Hash) (*state.Checkpoint, error) {
- panic("implement me")
-}
-
-func (s *mockStore1) GetCheckpointsByHeight(u uint64) ([]*state.Checkpoint, error) {
- panic("implement me")
+func (s *mockStore1) SaveChainStatus(*state.BlockNode, *state.UtxoViewpoint, *state.ContractViewpoint) error {
+ return nil
}
-
+func (s *mockStore1) GetBlockHeader(hash *bc.Hash) (*types.BlockHeader, error) { return nil, nil }
+func (s *mockStore1) GetCheckpoint(hash *bc.Hash) (*state.Checkpoint, error) { return nil, nil }
+func (s *mockStore1) GetCheckpointsByHeight(u uint64) ([]*state.Checkpoint, error) { return nil, nil }
func (s *mockStore1) BlockExist(hash *bc.Hash) bool { return false }
func (s *mockStore1) GetBlock(*bc.Hash) (*types.Block, error) { return nil, nil }
func (s *mockStore1) GetStoreStatus() *BlockStoreState { return nil }
}
return nil
}
-func (s *mockStore1) GetUtxo(*bc.Hash) (*storage.UtxoEntry, error) { return nil, nil }
-func (s *mockStore1) LoadBlockIndex(uint64) (*state.BlockIndex, error) { return nil, nil }
-func (s *mockStore1) SaveBlock(*types.Block, *bc.TransactionStatus) error { return nil }
-func (s *mockStore1) SaveChainStatus(*state.BlockNode, *state.UtxoViewpoint) error { return nil }
+func (s *mockStore1) GetUtxo(*bc.Hash) (*storage.UtxoEntry, error) { return nil, nil }
+func (s *mockStore1) LoadBlockIndex(uint64) (*state.BlockIndex, error) { return nil, nil }
+func (s *mockStore1) SaveBlock(*types.Block, *bc.TransactionStatus) error { return nil }
func TestProcessTransaction(t *testing.T) {
txPool := &TxPool{
func mockConfig() *cfg.Config {
var config = cfg.DefaultConfig()
config.Wallet.Disable = false
- config.Mining = true
config.ApiAddress = "127.0.0.1:9888"
return config
}