From a064131488c426a02060bc6719fd21db982d900f Mon Sep 17 00:00:00 2001 From: DinhLN Date: Mon, 10 Dec 2018 13:37:40 +0700 Subject: [PATCH 1/7] Fixed only half MNs can be mining block. --- consensus/posv/posv.go | 1 + 1 file changed, 1 insertion(+) diff --git a/consensus/posv/posv.go b/consensus/posv/posv.go index 142aec836f..d060fd05eb 100644 --- a/consensus/posv/posv.go +++ b/consensus/posv/posv.go @@ -483,6 +483,7 @@ func WhoIsCreator(snap *Snapshot, header *types.Header) (common.Address, error) } func YourTurn(masternodes []common.Address, snap *Snapshot, header *types.Header, cur common.Address) (int, int, bool, error) { + masternodes = masternodes[:len(masternodes)/2+1] if len(masternodes) == 0 { return -1, -1, true, nil } From 6e2cea5da1ebae4911821356ea08d4764ee16b59 Mon Sep 17 00:00:00 2001 From: Nguyen Sy Thanh Son Date: Fri, 14 Dec 2018 14:20:12 +0700 Subject: [PATCH 2/7] update timestamp for mainnet --- genesis/mainnet.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 +} From 7623d5660a0c4e7a3a769eee05d7401eb4c544f2 Mon Sep 17 00:00:00 2001 From: etienne-napoleone Date: Tue, 18 Dec 2018 17:08:37 +0700 Subject: [PATCH 3/7] update logging Downgrade some errors to warn Replace a fmt by info close #269 close #349 --- consensus/posv/posv.go | 4 ++-- contracts/utils.go | 2 +- core/tx_pool.go | 2 +- eth/downloader/downloader.go | 2 +- eth/handler.go | 2 +- miner/worker.go | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/consensus/posv/posv.go b/consensus/posv/posv.go index 09ad9ef025..10d0b52016 100644 --- a/consensus/posv/posv.go +++ b/consensus/posv/posv.go @@ -478,7 +478,7 @@ func (c *Posv) YourTurn(chain consensus.ChainReader, parent *types.Header, signe masternodes := c.GetMasternodes(chain, parent) 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 +499,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/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/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/miner/worker.go b/miner/worker.go index ffba0b1ca1..d229c7979d 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -499,7 +499,7 @@ func (self *worker) commitNewWork() { c := self.engine.(*posv.Posv) 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 { From 109dedc35e20dd23da0068dd48eeb6429281df98 Mon Sep 17 00:00:00 2001 From: Tuna Date: Wed, 19 Dec 2018 10:29:39 +0700 Subject: [PATCH 4/7] print err --- eth/backend.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 { From 125100441a6f070a3fb4f45c56165278b3871887 Mon Sep 17 00:00:00 2001 From: Tuna Date: Sat, 22 Dec 2018 23:19:20 +0700 Subject: [PATCH 5/7] bump up a patch version --- params/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ) From 13db4ec070a31ca8e8c2d72aa59a9604665e67e5 Mon Sep 17 00:00:00 2001 From: DinhLN Date: Mon, 24 Dec 2018 10:47:31 +0700 Subject: [PATCH 6/7] Fixed only three MNs making block when --tomo-testnet flag enable. --- cmd/tomo/config.go | 6 ++++++ cmd/tomo/main.go | 1 + cmd/utils/flags.go | 4 ++++ common/constants.go | 2 ++ consensus/posv/posv.go | 10 +++++++--- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/cmd/tomo/config.go b/cmd/tomo/config.go index 6fc12571e7..51d6bf8869 100644 --- a/cmd/tomo/config.go +++ b/cmd/tomo/config.go @@ -36,6 +36,7 @@ import ( "github.com/ethereum/go-ethereum/params" whisper "github.com/ethereum/go-ethereum/whisper/whisperv6" "github.com/naoina/toml" + "github.com/ethereum/go-ethereum/common" ) var ( @@ -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 66daca10a6..3bf49e95ae 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,7 +476,11 @@ 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) - masternodes = masternodes[:len(masternodes)/2+1] + if common.IsTestnet { + // Only three mns for tomo testnet. + masternodes = masternodes[:3] + } + log.Error("masternodes", "masternodes", len(masternodes)) snap, err := c.GetSnapshot(chain, parent) if err != nil { log.Warn("Failed when trying to commit new work", "err", err) From e780bde12fc2e9f600e7b8ae384a270139cb5ca8 Mon Sep 17 00:00:00 2001 From: DinhLN Date: Mon, 24 Dec 2018 16:10:11 +0700 Subject: [PATCH 7/7] Fixed comment. --- cmd/tomo/config.go | 2 +- consensus/posv/posv.go | 1 - core/blockchain.go | 10 +++++----- miner/worker.go | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/cmd/tomo/config.go b/cmd/tomo/config.go index 51d6bf8869..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" @@ -36,7 +37,6 @@ import ( "github.com/ethereum/go-ethereum/params" whisper "github.com/ethereum/go-ethereum/whisper/whisperv6" "github.com/naoina/toml" - "github.com/ethereum/go-ethereum/common" ) var ( diff --git a/consensus/posv/posv.go b/consensus/posv/posv.go index 3bf49e95ae..6ffa7df47e 100644 --- a/consensus/posv/posv.go +++ b/consensus/posv/posv.go @@ -480,7 +480,6 @@ func (c *Posv) YourTurn(chain consensus.ChainReader, parent *types.Header, signe // Only three mns for tomo testnet. masternodes = masternodes[:3] } - log.Error("masternodes", "masternodes", len(masternodes)) snap, err := c.GetSnapshot(chain, parent) if err != nil { log.Warn("Failed when trying to commit new work", "err", err) 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/miner/worker.go b/miner/worker.go index d229c7979d..0684bfa28e 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -497,7 +497,7 @@ 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.Warn("Failed when trying to commit new work", "err", err) return