From 4aaa17244a313a9b1fddd44142cfb2de0c6ff38b Mon Sep 17 00:00:00 2001 From: Liam Lai Date: Sun, 11 Feb 2024 17:15:54 +1100 Subject: [PATCH 1/3] stop create xdcx tx --- common/constants.go | 1 + common/constants/constants.go.devnet | 1 + common/constants/constants.go.testnet | 1 + miner/worker.go | 45 +++++++++++++-------------- params/config.go | 3 ++ 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/common/constants.go b/common/constants.go index 71b1093cf05e..7f2d764513c2 100644 --- a/common/constants.go +++ b/common/constants.go @@ -45,6 +45,7 @@ var TIPXDCX = big.NewInt(38383838) var TIPXDCXLending = big.NewInt(38383838) var TIPXDCXCancellationFee = big.NewInt(38383838) var TIPXDCXCancellationFeeTestnet = big.NewInt(38383838) +var TIPXDCXDISABLE = big.NewInt(99999999900) var TIPXDCXTestnet = big.NewInt(38383838) var IsTestnet bool = false diff --git a/common/constants/constants.go.devnet b/common/constants/constants.go.devnet index c121d305239f..b1dcc5b33e5f 100644 --- a/common/constants/constants.go.devnet +++ b/common/constants/constants.go.devnet @@ -45,6 +45,7 @@ var TIPXDCX = big.NewInt(225000) var TIPXDCXLending = big.NewInt(225000) var TIPXDCXCancellationFee = big.NewInt(225000) var TIPXDCXCancellationFeeTestnet = big.NewInt(225000) +var TIPXDCXDISABLE = big.NewInt(15894900) var TIPXDCXTestnet = big.NewInt(0) var IsTestnet bool = false diff --git a/common/constants/constants.go.testnet b/common/constants/constants.go.testnet index 0c1db046cfb8..059592de5c2e 100644 --- a/common/constants/constants.go.testnet +++ b/common/constants/constants.go.testnet @@ -45,6 +45,7 @@ var TIPXDCX = big.NewInt(23779191) var TIPXDCXLending = big.NewInt(23779191) var TIPXDCXCancellationFee = big.NewInt(23779191) var TIPXDCXCancellationFeeTestnet = big.NewInt(23779191) +var TIPXDCXDISABLE = big.NewInt(99999999900) var TIPXDCXTestnet = big.NewInt(23779191) var IsTestnet bool = false diff --git a/miner/worker.go b/miner/worker.go index bc3982094e87..7619d97220df 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -652,7 +652,7 @@ func (self *worker) commitNewWork() { log.Warn("Can't find coinbase account wallet", "coinbase", self.coinbase, "err", err) return } - if self.config.XDPoS != nil && self.chain.Config().IsTIPXDCX(header.Number) { + if self.config.XDPoS != nil && self.chain.Config().IsTIPXDCX(header.Number) && !self.chain.Config().IsTIPXDCXDisable(header.Number) { XDCX := self.eth.GetXDCX() XDCXLending := self.eth.GetXDCXLending() if XDCX != nil && header.Number.Uint64() > self.config.XDPoS.Epoch { @@ -710,8 +710,13 @@ func (self *worker) commitNewWork() { if XDCX.IsSDKNode() { self.chain.AddMatchingResult(tradingTransaction.Hash(), tradingMatchingResults) } + // force adding trading, lending transaction to this block + if tradingTransaction != nil { + specialTxs = append(specialTxs, tradingTransaction) + } } } + if len(lendingInput) > 0 { // lending transaction lendingBatch := &lendingstate.TxLendingBatch{ @@ -735,6 +740,9 @@ func (self *worker) commitNewWork() { if XDCX.IsSDKNode() { self.chain.AddLendingResult(lendingTransaction.Hash(), lendingMatchingResults) } + if lendingTransaction != nil { + specialTxs = append(specialTxs, lendingTransaction) + } } } @@ -756,32 +764,23 @@ func (self *worker) commitNewWork() { if XDCX.IsSDKNode() { self.chain.AddFinalizedTrades(lendingFinalizedTradeTransaction.Hash(), updatedTrades) } + if lendingFinalizedTradeTransaction != nil { + specialTxs = append(specialTxs, lendingFinalizedTradeTransaction) + } } } } + XDCxStateRoot := work.tradingState.IntermediateRoot() + LendingStateRoot := work.lendingState.IntermediateRoot() + txData := append(XDCxStateRoot.Bytes(), LendingStateRoot.Bytes()...) + tx := types.NewTransaction(work.state.GetNonce(self.coinbase), common.HexToAddress(common.TradingStateAddr), big.NewInt(0), txMatchGasLimit, big.NewInt(0), txData) + txStateRoot, err := wallet.SignTx(accounts.Account{Address: self.coinbase}, tx, self.config.ChainId) + if err != nil { + log.Error("Fail to create tx state root", "error", err) + return + } + specialTxs = append(specialTxs, txStateRoot) } - - // force adding trading, lending transaction to this block - if tradingTransaction != nil { - specialTxs = append(specialTxs, tradingTransaction) - } - if lendingTransaction != nil { - specialTxs = append(specialTxs, lendingTransaction) - } - if lendingFinalizedTradeTransaction != nil { - specialTxs = append(specialTxs, lendingFinalizedTradeTransaction) - } - - XDCxStateRoot := work.tradingState.IntermediateRoot() - LendingStateRoot := work.lendingState.IntermediateRoot() - txData := append(XDCxStateRoot.Bytes(), LendingStateRoot.Bytes()...) - tx := types.NewTransaction(work.state.GetNonce(self.coinbase), common.HexToAddress(common.TradingStateAddr), big.NewInt(0), txMatchGasLimit, big.NewInt(0), txData) - txStateRoot, err := wallet.SignTx(accounts.Account{Address: self.coinbase}, tx, self.config.ChainId) - if err != nil { - log.Error("Fail to create tx state root", "error", err) - return - } - specialTxs = append(specialTxs, txStateRoot) } work.commitTransactions(self.mux, feeCapacity, txs, specialTxs, self.chain, self.coinbase) // compute uncles for the new block. diff --git a/params/config.go b/params/config.go index 337dae4a04a3..fdf0a1a77e4e 100644 --- a/params/config.go +++ b/params/config.go @@ -526,6 +526,9 @@ func (c *ChainConfig) IsTIPXDCX(num *big.Int) bool { return isForked(common.TIPXDCX, num) } } +func (c *ChainConfig) IsTIPXDCXDisable(num *big.Int) bool { + return isForked(common.TIPXDCXDISABLE, num) +} func (c *ChainConfig) IsTIPXDCXLending(num *big.Int) bool { return isForked(common.TIPXDCXLending, num) From c81584b2a85822022bf32cd9fcc16501c278cf4c Mon Sep 17 00:00:00 2001 From: Liam Lai Date: Mon, 12 Feb 2024 01:44:17 +1100 Subject: [PATCH 2/3] refactor disable flag --- params/config.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/params/config.go b/params/config.go index fdf0a1a77e4e..7840bfe72690 100644 --- a/params/config.go +++ b/params/config.go @@ -520,22 +520,18 @@ func (c *ChainConfig) IsTIPNoHalvingMNReward(num *big.Int) bool { return isForked(common.TIPNoHalvingMNReward, num) } func (c *ChainConfig) IsTIPXDCX(num *big.Int) bool { - if common.IsTestnet { - return isForked(common.TIPXDCXTestnet, num) - } else { - return isForked(common.TIPXDCX, num) - } + return isForked(common.TIPXDCX, num) && !isForked(common.TIPXDCXDISABLE, num) } func (c *ChainConfig) IsTIPXDCXDisable(num *big.Int) bool { return isForked(common.TIPXDCXDISABLE, num) } func (c *ChainConfig) IsTIPXDCXLending(num *big.Int) bool { - return isForked(common.TIPXDCXLending, num) + return isForked(common.TIPXDCXLending, num) && !isForked(common.TIPXDCXDISABLE, num) } func (c *ChainConfig) IsTIPXDCXCancellationFee(num *big.Int) bool { - return isForked(common.TIPXDCXCancellationFee, num) + return isForked(common.TIPXDCXCancellationFee, num) && !isForked(common.TIPXDCXDISABLE, num) } // GasTable returns the gas table corresponding to the current phase (homestead or homestead reprice). From a36911d07f1fe06d0a8b2eb69d40881c82e9c898 Mon Sep 17 00:00:00 2001 From: Liam Lai Date: Mon, 12 Feb 2024 21:59:09 +1100 Subject: [PATCH 3/3] disable miner only --- miner/worker.go | 2 +- params/config.go | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/miner/worker.go b/miner/worker.go index 7619d97220df..6967ae5207eb 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -652,7 +652,7 @@ func (self *worker) commitNewWork() { log.Warn("Can't find coinbase account wallet", "coinbase", self.coinbase, "err", err) return } - if self.config.XDPoS != nil && self.chain.Config().IsTIPXDCX(header.Number) && !self.chain.Config().IsTIPXDCXDisable(header.Number) { + if self.config.XDPoS != nil && self.chain.Config().IsTIPXDCXMiner(header.Number) { XDCX := self.eth.GetXDCX() XDCXLending := self.eth.GetXDCXLending() if XDCX != nil && header.Number.Uint64() > self.config.XDPoS.Epoch { diff --git a/params/config.go b/params/config.go index 7840bfe72690..d501303befe0 100644 --- a/params/config.go +++ b/params/config.go @@ -520,18 +520,18 @@ func (c *ChainConfig) IsTIPNoHalvingMNReward(num *big.Int) bool { return isForked(common.TIPNoHalvingMNReward, num) } func (c *ChainConfig) IsTIPXDCX(num *big.Int) bool { - return isForked(common.TIPXDCX, num) && !isForked(common.TIPXDCXDISABLE, num) + return isForked(common.TIPXDCX, num) } -func (c *ChainConfig) IsTIPXDCXDisable(num *big.Int) bool { - return isForked(common.TIPXDCXDISABLE, num) +func (c *ChainConfig) IsTIPXDCXMiner(num *big.Int) bool { + return isForked(common.TIPXDCX, num) && !isForked(common.TIPXDCXDISABLE, num) } func (c *ChainConfig) IsTIPXDCXLending(num *big.Int) bool { - return isForked(common.TIPXDCXLending, num) && !isForked(common.TIPXDCXDISABLE, num) + return isForked(common.TIPXDCXLending, num) } func (c *ChainConfig) IsTIPXDCXCancellationFee(num *big.Int) bool { - return isForked(common.TIPXDCXCancellationFee, num) && !isForked(common.TIPXDCXDISABLE, num) + return isForked(common.TIPXDCXCancellationFee, num) } // GasTable returns the gas table corresponding to the current phase (homestead or homestead reprice).