* Log the right shard number for wallet/getFreeToken
* Don't try to use empty commit bitmap from genesis block
* Fail hard if block reward or finalization fails
* Log the public key if message sig verification fails
* Extract and save chain state from received blocks in order to
eliminate deep tail recursion
* Properly deep copy chain config (previously ChainID was being shared
among chains)
* Eliminate chain use-before-init window in node.New()
* Save genesis epoch shard state in new blockchain database
* Do not check epoch of the received shard state message (temp
workaround – we should introduce the check elsewhere)
* Propose an empty block if no transactions have been received for 10
seconds
utils.GetLogInstance().Info("==== New Harmony Node ====","BlsPubKey",hex.EncodeToString(nodeConfig.ConsensusPubKey.Serialize()),"ShardID",nodeConfig.ShardID,"ShardGroupID",nodeConfig.GetShardGroupID(),"BeaconGroupID",nodeConfig.GetBeaconGroupID(),"ClientGroupID",nodeConfig.GetClientGroupID(),"Role",currentNode.NodeConfig.Role(),"multiaddress",fmt.Sprintf("/ip4/%s/tcp/%s/p2p/%s",*ip,*port,nodeConfig.Host.GetID().Pretty()))
utils.GetLogInstance().Info("==== New Harmony Node ====",
utils.GetLogInstance().Debug("PROPOSING NEW BLOCK ------------------------------------------------","blockNum",node.Blockchain().CurrentBlock().NumberU64()+1,"threshold",threshold,"pendingTransactions",len(node.pendingTransactions))
utils.GetLogInstance().Debug("PROPOSING NEW BLOCK ------------------------------------------------","blockNum",node.Blockchain().CurrentBlock().NumberU64()+1,"threshold",threshold,"selectedTxs",len(selectedTxs))