diff --git a/cmd/tomo/config.go b/cmd/tomo/config.go index 6fc12571e7..b6ec2db452 100644 --- a/cmd/tomo/config.go +++ b/cmd/tomo/config.go @@ -28,6 +28,7 @@ import ( "unicode" "github.com/ethereum/go-ethereum/cmd/utils" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/dashboard" "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/internal/debug" @@ -151,6 +152,11 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, tomoConfig) { ctx.Set(utils.NATFlag.Name, cfg.NAT) } + // Check testnet is enable. + if ctx.GlobalBool(utils.TomoTestnetFlag.Name) { + common.IsTestnet = true + } + // read passwords from environment passwords := []string{} for _, env := range cfg.Account.Passwords { diff --git a/cmd/tomo/main.go b/cmd/tomo/main.go index 9a125d0485..751c4babf0 100644 --- a/cmd/tomo/main.go +++ b/cmd/tomo/main.go @@ -109,6 +109,7 @@ var ( //utils.TestnetFlag, //utils.RinkebyFlag, //utils.VMEnableDebugFlag, + utils.TomoTestnetFlag, utils.NetworkIdFlag, utils.RPCCORSDomainFlag, utils.RPCVirtualHostsFlag, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index f158819e42..a33380d9ff 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -139,6 +139,10 @@ var ( Name: "testnet", Usage: "Ropsten network: pre-configured proof-of-work test network", } + TomoTestnetFlag = cli.BoolFlag{ + Name: "tomo-testnet", + Usage: "Tomo test network", + } RinkebyFlag = cli.BoolFlag{ Name: "rinkeby", Usage: "Rinkeby network: pre-configured proof-of-authority test network", diff --git a/common/constants.go b/common/constants.go index 0571a8cf11..89ded09a84 100644 --- a/common/constants.go +++ b/common/constants.go @@ -16,3 +16,5 @@ const ( LimitThresholdNonceInQueue = 10 MinGasPrice = 2500 ) + +var IsTestnet bool = false diff --git a/consensus/posv/posv.go b/consensus/posv/posv.go index 09ad9ef025..6ffa7df47e 100644 --- a/consensus/posv/posv.go +++ b/consensus/posv/posv.go @@ -45,8 +45,8 @@ import ( ) const ( - inmemorySnapshots = 128 // Number of recent vote snapshots to keep in memory - M2ByteLength = 4 + inmemorySnapshots = 128 // Number of recent vote snapshots to keep in memory + M2ByteLength = 4 ) type Masternode struct { @@ -476,9 +476,13 @@ func whoIsCreator(snap *Snapshot, header *types.Header) (common.Address, error) func (c *Posv) YourTurn(chain consensus.ChainReader, parent *types.Header, signer common.Address) (int, int, int, bool, error) { masternodes := c.GetMasternodes(chain, parent) + if common.IsTestnet { + // Only three mns for tomo testnet. + masternodes = masternodes[:3] + } snap, err := c.GetSnapshot(chain, parent) if err != nil { - log.Error("Failed when trying to commit new work", "err", err) + log.Warn("Failed when trying to commit new work", "err", err) return 0, -1, -1, false, err } if len(masternodes) == 0 { @@ -499,7 +503,7 @@ func (c *Posv) YourTurn(chain consensus.ChainReader, parent *types.Header, signe log.Info("Masternodes cycle info", "number of masternodes", len(masternodes), "previous", pre, "position", preIndex, "current", signer, "position", curIndex) } for i, s := range masternodes { - fmt.Printf("%d - %s\n", i, s.String()) + log.Info("%d - %s\n", i, s.String()) } if (preIndex+1)%len(masternodes) == curIndex { return len(masternodes), preIndex, curIndex, true, nil diff --git a/contracts/utils.go b/contracts/utils.go index 8046d0603f..05e10740d7 100644 --- a/contracts/utils.go +++ b/contracts/utils.go @@ -85,7 +85,7 @@ func CreateTransactionSign(chainConfig *params.ChainConfig, pool *core.TxPool, m // Add tx signed to local tx pool. err = pool.AddLocal(txSigned) if err != nil { - log.Error("Fail to add tx sign to local pool.", "error", err, "number", block.NumberU64(), "hash", block.Hash().Hex(), "from", account.Address, "nonce", nonce) + log.Warn("Fail to add tx sign to local pool.", "error", err, "number", block.NumberU64(), "hash", block.Hash().Hex(), "from", account.Address, "nonce", nonce) } // Create secret tx. diff --git a/core/blockchain.go b/core/blockchain.go index e68f0bdedd..1ea79d0440 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -127,11 +127,11 @@ type BlockChain struct { bodyRLPCache *lru.Cache // Cache for the most recent block bodies in RLP encoded format blockCache *lru.Cache // Cache for the most recent entire blocks futureBlocks *lru.Cache // future blocks are blocks added for later processing - resultProcess *lru.Cache // Cache for processed blocks - calculatingBlock *lru.Cache // Cache for processing blocks - downloadingBlock *lru.Cache // Cache for downloading blocks (avoid duplication from fetcher) - quit chan struct{} // blockchain quit channel - running int32 // running must be called atomically + resultProcess *lru.Cache // Cache for processed blocks + calculatingBlock *lru.Cache // Cache for processing blocks + downloadingBlock *lru.Cache // Cache for downloading blocks (avoid duplication from fetcher) + quit chan struct{} // blockchain quit channel + running int32 // running must be called atomically // procInterrupt must be atomically called procInterrupt int32 // interrupt signaler for block processing wg sync.WaitGroup // chain processing wait group for shutting down diff --git a/core/tx_pool.go b/core/tx_pool.go index ec029ed939..41f1a09887 100644 --- a/core/tx_pool.go +++ b/core/tx_pool.go @@ -1171,7 +1171,7 @@ func (pool *TxPool) demoteUnexecutables() { if list.Len() > 0 && list.txs.Get(nonce) == nil { for _, tx := range list.Cap(0) { hash := tx.Hash() - log.Error("Demoting invalidated transaction", "hash", hash) + log.Warn("Demoting invalidated transaction", "hash", hash) pool.enqueueTx(hash, tx) } } diff --git a/eth/backend.go b/eth/backend.go index 3f998e098e..c1d5b1a553 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -355,7 +355,7 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { currentHeader := eth.blockchain.CurrentHeader() snap, err := c.GetSnapshot(eth.blockchain, currentHeader) if err != nil { - log.Error("Can't get snapshot with current header ", "number", currentHeader.Number, "hash", currentHeader.Hash().Hex()) + log.Error("Can't get snapshot with current header ", "number", currentHeader.Number, "hash", currentHeader.Hash().Hex(), "err", err) return false } if _, ok := snap.Signers[address]; ok { diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 4c285db2e6..6fbcc28a83 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -295,7 +295,7 @@ func (d *Downloader) UnregisterPeer(id string) error { logger := log.New("peer", id) logger.Trace("Unregistering sync peer") if err := d.peers.Unregister(id); err != nil { - logger.Error("Failed to unregister sync peer", "err", err) + logger.Warn("Failed to unregister sync peer", "err", err) return err } d.queue.Revoke(id) diff --git a/eth/handler.go b/eth/handler.go index f1a408d53d..322a888ade 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -205,7 +205,7 @@ func (pm *ProtocolManager) removePeer(id string) { // Unregister the peer from the downloader and Ethereum peer set pm.downloader.UnregisterPeer(id) if err := pm.peers.Unregister(id); err != nil { - log.Error("Peer removal failed", "peer", id, "err", err) + log.Warn("Peer removal failed", "peer", id, "err", err) } // Hard disconnect at the networking layer if peer != nil { diff --git a/genesis/mainnet.json b/genesis/mainnet.json index 555fa89457..7567f06c21 100644 --- a/genesis/mainnet.json +++ b/genesis/mainnet.json @@ -17,7 +17,7 @@ } }, "nonce": "0x0", - "timestamp": "0x5c107ff8", + "timestamp": "0x5c1358f5", "extraData": "0x00000000000000000000000000000000000000000000000000000000000000001b82c4bf317fcafe3d77e8b444c82715d216afe845b7bd987fa22c9bac89b71f0ded03f6e150ba31ad670b2b166684657ffff95f4810380ae7381e9bce41231d5dd8cdd7499e418b648c00af75d184a2f9aba09a6fa4a46fb1a6a3919b027d9cac5aa6890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "gasLimit": "0x47b760", "difficulty": "0x1", @@ -119,4 +119,4 @@ "number": "0x0", "gasUsed": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/miner/worker.go b/miner/worker.go index ffba0b1ca1..0684bfa28e 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -497,9 +497,9 @@ func (self *worker) commitNewWork() { if self.config.Posv != nil { // get masternodes set from latest checkpoint c := self.engine.(*posv.Posv) - len, preIndex, curIndex, ok, err := c.YourTurn(self.chain, parent.Header(),self.coinbase) + len, preIndex, curIndex, ok, err := c.YourTurn(self.chain, parent.Header(), self.coinbase) if err != nil { - log.Error("Failed when trying to commit new work", "err", err) + log.Warn("Failed when trying to commit new work", "err", err) return } if !ok { diff --git a/params/version.go b/params/version.go index 02e09f535d..b3f510f330 100644 --- a/params/version.go +++ b/params/version.go @@ -23,7 +23,7 @@ import ( const ( VersionMajor = 1 // Major version component of the current release VersionMinor = 1 // Minor version component of the current release - VersionPatch = 0 // Patch version component of the current release + VersionPatch = 1 // Patch version component of the current release VersionMeta = "stable" // Version metadata to append to the version string )