Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[R4R]-{main}: release/v0.4.3 into main #1353

Merged
merged 34 commits into from
Aug 16, 2023
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
fc30663
[R4R]-{develop}: Fix typos (#1300)
omahs Aug 1, 2023
2b3c947
[R4R] - {license}: add DA license (#1263)
Ethanncnm Aug 1, 2023
ba52077
[R4R]-{develop}:Optimize the rollup service (#1301)
Ethanncnm Aug 2, 2023
ee604d1
fix mt-batcher timeout function
guoshijiang Aug 7, 2023
00cd0f7
fix flag
guoshijiang Aug 7, 2023
84ad98d
Add Mantle audit report files (#1333)
byteflyfunny Aug 4, 2023
440a741
[fix]: add change log for v0.4.3-alpha.0
Sha3nS Aug 3, 2023
30019c0
[fix]: import gasorale connection with l1 node
Sha3nS Aug 4, 2023
2562dab
[R4R]-{mt-batcher}: log optimization for mt-batcher and da-retriever …
guoshijiang Aug 8, 2023
78091f2
Merge branch 'develop' into merge/changelog
Sha3nS Aug 9, 2023
446e2af
[R4R]-{changelog}: add change log for v0.4.3-alpha.0 (#1325)
Sha3nS Aug 9, 2023
170161d
fix review
guoshijiang Aug 9, 2023
09c8c57
Merge branch 'develop' into feature/fix-mt-batcher
guoshijiang Aug 9, 2023
10f6f93
R4R: Feature/fix mt batcher (#1334)
tw5428561 Aug 9, 2023
b0736b3
delete error judge logic
Ethanncnm Aug 9, 2023
d67a238
[R4R]: delete error judge logic (#1337)
tw5428561 Aug 9, 2023
683a8cf
hotfix: polyfill mnt address for testnet
Aug 10, 2023
b1720ed
[R4R]-{develop}: handle testnet MNT token address compatibility (#1338)
shellteo Aug 10, 2023
b3bbba4
[R4R]-{develop}: Bugfix/fix gas oracle gomod (#1341)
Sha3nS Aug 14, 2023
ed203f6
[fix]: fix gasoracle docker file
Sha3nS Aug 14, 2023
db46a0c
[R4R]-{develop}: fix gas-oracle dockerfile (#1342)
Sha3nS Aug 14, 2023
ed6fa65
[fix]: fix gasoracle update frequency
Sha3nS Aug 15, 2023
0a5ea1f
[R4R]-{develop}: fix gasoracle update frequency (#1344)
Sha3nS Aug 15, 2023
09a9ef8
[fix]: fix bigint cmp formular
Sha3nS Aug 15, 2023
9803e74
[R4R]-{develop}: fix bigint cmp formula (#1345)
Sha3nS Aug 15, 2023
88f482e
[R4R]-{develop}: fix block log query range (#1347)
Sha3nS Aug 15, 2023
894f76d
[R4R]-{develop}-[gasoracle]impr: initialize fee_scalar metrics (#1346)
Tri-stone Aug 15, 2023
ca288dd
update @mantleio/sdk to version 0.2.2 (#1349)
shellteo Aug 16, 2023
dca8956
Merge branch 'develop' into release/v0.4.3
wukongcheng Aug 16, 2023
fb1ecc7
[R4R]-{develop}: release into develop (#1352)
Sha3nS Aug 16, 2023
b7aec62
[R4R]-{develop}: change log for v0.4.3 (#1351)
HXHke Aug 16, 2023
418982f
[fix]: fix merge conflicts
Sha3nS Aug 16, 2023
3d4fe79
[R4R]-{develop}: Merge/main into develop (#1356)
Sha3nS Aug 16, 2023
8b91d7f
[R4R]-{release/v0.4.3}: develop into release0.4.3 (#1354)
Sha3nS Aug 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,4 @@ ops/data/**
dist/
packages/contracts/test/data/
packages/contracts/abi/
gas-oracle/gas-oracle-data/
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,36 @@
# Changelog

## [v0.4.3-alpha.0](https://github.com/mantlenetworkio/mantle/commits/v0.4.3-alpha.0) - 2023-08-03

### Features
- DTL
- Optimized performance by separating L1 and L2 process execution time for synchronous data ([#1298](https://github.com/mantlenetworkio/mantle/pull/1298))
- SDK
- Enhanced compatibility by aligning the standard-bridge with the selected chainID ([#1268](https://github.com/mantlenetworkio/mantle/pull/1268))
- GasOracle
- Improved metric accuracy by modifying token_ratio ([#1310](https://github.com/mantlenetworkio/mantle/pull/1310))

### Bug Fixes
- Resolved a 'nonce too high' error caused by the DA verifier([#1313](https://github.com/mantlenetworkio/mantle/pull/1313))
- Fixed a panic issue during traceCall operation, eliminating unexpected program crashes ([#1305](https://github.com/mantlenetworkio/mantle/pull/1305))
- Handled unhandled errors in DA upgrade tool and NewStateTransition of l2geth, enhancing error handling and preventing potential issues ([#1288](https://github.com/mantlenetworkio/mantle/pull/1288), [#1295](https://github.com/mantlenetworkio/mantle/pull/1295))
- Strengthened seed generation process security by introducing passphrase protection ([#1297](https://github.com/mantlenetworkio/mantle/pull/1297))
- Addressed nonce overflow and other security-related concerns, bolstering system security ([#1293](https://github.com/mantlenetworkio/mantle/pull/1293), [#1292](https://github.com/mantlenetworkio/mantle/pull/1292))
- Improved JWT secret key configuration and handling for enhanced security ([#1226](https://github.com/mantlenetworkio/mantle/pull/1226))
- Renamed 'rollup' to 'Accepted on layer1', enhancing clarity and reflecting its role in the network's hierarchy ([#1314](https://github.com/mantlenetworkio/mantle/pull/1314))
- Resolved the issue of the 'Log/txstatus' element not found, addressing a gap in log information ([#1264](https://github.com/mantlenetworkio/mantle/pull/1264))
- Cleaned up unused DA contracts, optimizing the codebase by removing redundant contracts ([#1283](https://github.com/mantlenetworkio/mantle/pull/1283))
- Rectified Mantle token compilation errors on the Foundry platform, ensuring successful compilation ([#1282](https://github.com/mantlenetworkio/mantle/pull/1282))
- Fixed go mod and mt-challenger configuration issues, modified 'WMANTLE9' to 'WMANTLE' for compatibility and clarity ([#1302](https://github.com/mantlenetworkio/mantle/pull/1302), [#1281](https://github.com/mantlenetworkio/mantle/pull/1281))
- Addressed 'sigma MNT-35' issue, conducted a TSS security audit fix, ensuring accurate handling of 'sigma MNT-35' and enhancing TSS security ([#1257](https://github.com/mantlenetworkio/mantle/pull/1257))
- Fixed ConsenSys audit issue: cs-6.18, ensuring compliance with audit requirements ([#1243](https://github.com/mantlenetworkio/mantle/pull/1243))
- Addressed various ConsenSys audit issues (cs-6.30, cs-6.42, cs-6.40, cs-6.37, cs-6.14, cs-6.34, cs-6.22, cs-6.33), ensuring codebase compliance ([#1219](https://github.com/mantlenetworkio/mantle/pull/1219), [#1212](https://github.com/mantlenetworkio/mantle/pull/1212), [#1210](https://github.com/mantlenetworkio/mantle/pull/1210), [#1207](https://github.com/mantlenetworkio/mantle/pull/1207), [#1204](https://github.com/mantlenetworkio/mantle/pull/1204), [#1194](https://github.com/mantlenetworkio/mantle/pull/1194), [#1191](https://github.com/mantlenetworkio/mantle/pull/1191), [#1188](https://github.com/mantlenetworkio/mantle/pull/1188))
- Resolved lock threshold validation issue, enhancing security and preventing potential vulnerabilities ([#1227](https://github.com/mantlenetworkio/mantle/pull/1227))
- Fixed jwt secret key configuration issue, improving the handling of secret keys ([#1226](https://github.com/mantlenetworkio/mantle/pull/1226))
- Resolved ConsenSys minor audit issues (cs-6.35, cs-6.43, cs-6.44, cs-6.45), ensuring adherence to audit recommendations ([#1217](https://github.com/mantlenetworkio/mantle/pull/1217), [#1183](https://github.com/mantlenetworkio/mantle/pull/1183))
- Removed unused struct related to 'mnt-37', added a default message handler for function ProcessOneMessage:cs-6.26 ([#1202](https://github.com/mantlenetworkio/mantle/pull/1202), [#1198](https://github.com/mantlenetworkio/mantle/pull/1198))


## [v0.4.2](https://github.com/mantlenetworkio/mantle/commits/v0.4.2) - 2023-07-10

### Features
Expand Down
Binary file not shown.
Binary file not shown.
Binary file added audits/Mantle Secure3 Audit Report.pdf
Binary file not shown.
Binary file added audits/Mantle Sigma Prime Review.pdf
Binary file not shown.
Binary file not shown.
Binary file added audits/Mantle Zellic Audit Report.pdf
Binary file not shown.
85 changes: 41 additions & 44 deletions batch-submitter/batch_submitter.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import (

"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/getsentry/sentry-go"
"github.com/urfave/cli"

"github.com/mantlenetworkio/mantle/batch-submitter/drivers/proposer"
"github.com/mantlenetworkio/mantle/batch-submitter/drivers/sequencer"
Expand All @@ -17,6 +15,9 @@ import (
"github.com/mantlenetworkio/mantle/bss-core/dial"
"github.com/mantlenetworkio/mantle/bss-core/metrics"
"github.com/mantlenetworkio/mantle/bss-core/txmgr"

"github.com/getsentry/sentry-go"
"github.com/urfave/cli"
)

// Main is the entrypoint into the batch submitter service. This method returns
Expand All @@ -30,10 +31,6 @@ func Main(gitVersion string) func(ctx *cli.Context) error {
return err
}

log.Info("Config parsed",
"min_tx_size", cfg.MinL1TxSize,
"max_tx_size", cfg.MaxL1TxSize)

// The call to defer is done here so that any errors logged from
// this point on are posted to Sentry before exiting.
if cfg.SentryEnable {
Expand Down Expand Up @@ -130,23 +127,22 @@ func Main(gitVersion string) func(ctx *cli.Context) error {
var services []*bsscore.Service
if cfg.RunTxBatchSubmitter {
batchTxDriver, err := sequencer.NewDriver(sequencer.Config{
Name: "Sequencer",
L1Client: l1Client,
L2Client: l2Client,
BlockOffset: cfg.BlockOffset,
MinTxSize: cfg.MinL1TxSize,
MaxTxSize: cfg.MaxL1TxSize,
MaxPlaintextBatchSize: cfg.MaxPlaintextBatchSize,
DaUpgradeBlock: cfg.DaUpgradeBlock,
DAAddr: common.Address(common.HexToAddress(cfg.DAAddress)),
CTCAddr: ctcAddress,
ChainID: chainID,
PrivKey: sequencerPrivKey,
EnableSequencerHsm: cfg.EnableSequencerHsm,
SequencerHsmAddress: cfg.SequencerHsmAddress,
SequencerHsmAPIName: cfg.SequencerHsmAPIName,
SequencerHsmCreden: cfg.SequencerHsmCreden,
BatchType: sequencer.BatchTypeFromString(cfg.SequencerBatchType),
Name: "Sequencer",
L1Client: l1Client,
L2Client: l2Client,
BlockOffset: cfg.BlockOffset,
DaUpgradeBlock: cfg.DaUpgradeBlock,
DAAddr: common.Address(common.HexToAddress(cfg.DAAddress)),
CTCAddr: ctcAddress,
ChainID: chainID,
PrivKey: sequencerPrivKey,
EnableSequencerHsm: cfg.EnableSequencerHsm,
SequencerHsmAddress: cfg.SequencerHsmAddress,
SequencerHsmAPIName: cfg.SequencerHsmAPIName,
SequencerHsmCreden: cfg.SequencerHsmCreden,
BatchType: sequencer.BatchTypeFromString(cfg.SequencerBatchType),
MaxRollupTxn: cfg.MaxRollupTxn,
MinRollupTxn: cfg.MinRollupTxn,
})
if err != nil {
return err
Expand All @@ -164,27 +160,28 @@ func Main(gitVersion string) func(ctx *cli.Context) error {

if cfg.RunStateBatchSubmitter {
batchStateDriver, err := proposer.NewDriver(proposer.Config{
Name: "Proposer",
L1Client: l1Client,
L2Client: l2Client,
TssClient: tssClient,
BlockOffset: cfg.BlockOffset,
MinStateRootElements: cfg.MinStateRootElements,
MaxStateRootElements: cfg.MaxStateRootElements,
SCCAddr: sccAddress,
CTCAddr: ctcAddress,
FPRollupAddr: common.HexToAddress(cfg.FPRollupAddress),
ChainID: chainID,
PrivKey: proposerPrivKey,
SccRollback: cfg.EnableSccRollback,
MaxBatchSubmissionTime: cfg.MaxBatchSubmissionTime,
PollInterval: cfg.PollInterval,
FinalityConfirmations: cfg.FinalityConfirmations,
EnableProposerHsm: cfg.EnableProposerHsm,
ProposerHsmAddress: cfg.ProposerHsmAddress,
ProposerHsmCreden: cfg.ProposerHsmCreden,
ProposerHsmAPIName: cfg.ProposerHsmAPIName,
AllowL2AutoRollback: cfg.AllowL2AutoRollback,
Name: "Proposer",
L1Client: l1Client,
L2Client: l2Client,
TssClient: tssClient,
BlockOffset: cfg.BlockOffset,
MinStateRootElements: cfg.MinStateRootElements,
MaxStateRootElements: cfg.MaxStateRootElements,
SCCAddr: sccAddress,
CTCAddr: ctcAddress,
FPRollupAddr: common.HexToAddress(cfg.FPRollupAddress),
ChainID: chainID,
PrivKey: proposerPrivKey,
SccRollback: cfg.EnableSccRollback,
RollupTimeout: cfg.RollupTimeout,
PollInterval: cfg.PollInterval,
FinalityConfirmations: cfg.FinalityConfirmations,
EnableProposerHsm: cfg.EnableProposerHsm,
ProposerHsmAddress: cfg.ProposerHsmAddress,
ProposerHsmCreden: cfg.ProposerHsmCreden,
ProposerHsmAPIName: cfg.ProposerHsmAPIName,
AllowL2AutoRollback: cfg.AllowL2AutoRollback,
MinTimeoutStateRootElements: cfg.MinTimeoutStateRootElements,
})
if err != nil {
return err
Expand Down
88 changes: 42 additions & 46 deletions batch-submitter/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,18 +81,6 @@ type Config struct {
// FPRollupAddress is the fraud proof rollup contract address.
FPRollupAddress string

// MinL1TxSize is the minimum size in bytes of any L1 transactions generated
// by the batch submitter.
MinL1TxSize uint64

// MaxL1TxSize is the maximum size in bytes of any L1 transactions generated
// by the batch submitter.
MaxL1TxSize uint64

// MaxPlaintextL1TxSize is the maximum size in bytes of the plaintext tx
// data encoded in batches.
MaxPlaintextBatchSize uint64

// MinStateRootElements is the minimum number of state root elements that
// can be submitted in single proposer batch.
MinStateRootElements uint64
Expand All @@ -105,9 +93,8 @@ type Config struct {
// in a batch.
MaxTxBatchCount uint64

// MaxBatchSubmissionTime is the maximum amount of time that we will
// wait before submitting an under-sized batch.
MaxBatchSubmissionTime time.Duration
// RollupTimeout is the criterion which used to determine if the transaction is timeout.
RollupTimeout time.Duration

// PollInterval is the delay between querying L2 for more transaction
// and creating a new batch.
Expand Down Expand Up @@ -232,6 +219,15 @@ type Config struct {

// batch submitter rollback
AllowL2AutoRollback bool

// MaxRollupTxn is the maximum length of rollup batch transactions for every round.
MaxRollupTxn uint64

// MinRollupTxn is the minimum length of rollup batch transactions for every round.
MinRollupTxn uint64

// MinTimeoutStateRootElements is the minimum length of timeout rollup batch transactions for every round.
MinTimeoutStateRootElements uint64
}

// NewConfig parses the Config from the provided flags or environment variables.
Expand All @@ -250,12 +246,9 @@ func NewConfig(ctx *cli.Context) (Config, error) {
CTCAddress: ctx.GlobalString(flags.CTCAddressFlag.Name),
SCCAddress: ctx.GlobalString(flags.SCCAddressFlag.Name),
FPRollupAddress: ctx.GlobalString(flags.FPRollupAddressFlag.Name),
MinL1TxSize: ctx.GlobalUint64(flags.MinL1TxSizeFlag.Name),
MaxL1TxSize: ctx.GlobalUint64(flags.MaxL1TxSizeFlag.Name),
MaxPlaintextBatchSize: ctx.GlobalUint64(flags.MaxPlaintextBatchSizeFlag.Name),
MinStateRootElements: ctx.GlobalUint64(flags.MinStateRootElementsFlag.Name),
MaxStateRootElements: ctx.GlobalUint64(flags.MaxStateRootElementsFlag.Name),
MaxBatchSubmissionTime: ctx.GlobalDuration(flags.MaxBatchSubmissionTimeFlag.Name),
RollupTimeout: ctx.GlobalDuration(flags.RollupTimeoutFlag.Name),
PollInterval: ctx.GlobalDuration(flags.PollIntervalFlag.Name),
NumConfirmations: ctx.GlobalUint64(flags.NumConfirmationsFlag.Name),
SafeAbortNonceTooLowCount: ctx.GlobalUint64(flags.SafeAbortNonceTooLowCountFlag.Name),
Expand All @@ -266,33 +259,36 @@ func NewConfig(ctx *cli.Context) (Config, error) {
SafeMinimumEtherBalance: ctx.GlobalUint64(flags.SafeMinimumEtherBalanceFlag.Name),
ClearPendingTxs: ctx.GlobalBool(flags.ClearPendingTxsFlag.Name),
/* Optional Flags */
LogLevel: ctx.GlobalString(flags.LogLevelFlag.Name),
LogTerminal: ctx.GlobalBool(flags.LogTerminalFlag.Name),
SentryEnable: ctx.GlobalBool(flags.SentryEnableFlag.Name),
SentryDsn: ctx.GlobalString(flags.SentryDsnFlag.Name),
SentryTraceRate: ctx.GlobalDuration(flags.SentryTraceRateFlag.Name),
BlockOffset: ctx.GlobalUint64(flags.BlockOffsetFlag.Name),
SequencerPrivateKey: ctx.GlobalString(flags.SequencerPrivateKeyFlag.Name),
ProposerPrivateKey: ctx.GlobalString(flags.ProposerPrivateKeyFlag.Name),
Mnemonic: ctx.GlobalString(flags.MnemonicFlag.Name),
SequencerHDPath: ctx.GlobalString(flags.SequencerHDPathFlag.Name),
ProposerHDPath: ctx.GlobalString(flags.ProposerHDPathFlag.Name),
SequencerBatchType: ctx.GlobalString(flags.SequencerBatchType.Name),
MetricsServerEnable: ctx.GlobalBool(flags.MetricsServerEnableFlag.Name),
MetricsHostname: ctx.GlobalString(flags.MetricsHostnameFlag.Name),
MetricsPort: ctx.GlobalUint64(flags.MetricsPortFlag.Name),
DisableHTTP2: ctx.GlobalBool(flags.HTTP2DisableFlag.Name),
EnableSccRollback: ctx.GlobalBool(flags.SccRollbackFlag.Name),
EnableSequencerHsm: ctx.GlobalBool(flags.EnableSequencerHsmFlag.Name),
SequencerHsmAddress: ctx.GlobalString(flags.SequencerHsmAddressFlag.Name),
SequencerHsmAPIName: ctx.GlobalString(flags.SequencerHsmAPIName.Name),
SequencerHsmCreden: ctx.GlobalString(flags.SequencerHsmCreden.Name),
EnableProposerHsm: ctx.GlobalBool(flags.EnableProposerHsmFlag.Name),
ProposerHsmAddress: ctx.GlobalString(flags.ProposerHsmAddressFlag.Name),
ProposerHsmAPIName: ctx.GlobalString(flags.ProposerHsmAPIName.Name),
ProposerHsmCreden: ctx.GlobalString(flags.ProposerHsmCreden.Name),
RollupClientHttp: ctx.GlobalString(flags.RollupClientHttpFlag.Name),
AllowL2AutoRollback: ctx.GlobalBool(flags.AllowL2AutoRollback.Name),
LogLevel: ctx.GlobalString(flags.LogLevelFlag.Name),
LogTerminal: ctx.GlobalBool(flags.LogTerminalFlag.Name),
SentryEnable: ctx.GlobalBool(flags.SentryEnableFlag.Name),
SentryDsn: ctx.GlobalString(flags.SentryDsnFlag.Name),
SentryTraceRate: ctx.GlobalDuration(flags.SentryTraceRateFlag.Name),
BlockOffset: ctx.GlobalUint64(flags.BlockOffsetFlag.Name),
SequencerPrivateKey: ctx.GlobalString(flags.SequencerPrivateKeyFlag.Name),
ProposerPrivateKey: ctx.GlobalString(flags.ProposerPrivateKeyFlag.Name),
Mnemonic: ctx.GlobalString(flags.MnemonicFlag.Name),
SequencerHDPath: ctx.GlobalString(flags.SequencerHDPathFlag.Name),
ProposerHDPath: ctx.GlobalString(flags.ProposerHDPathFlag.Name),
SequencerBatchType: ctx.GlobalString(flags.SequencerBatchType.Name),
MetricsServerEnable: ctx.GlobalBool(flags.MetricsServerEnableFlag.Name),
MetricsHostname: ctx.GlobalString(flags.MetricsHostnameFlag.Name),
MetricsPort: ctx.GlobalUint64(flags.MetricsPortFlag.Name),
DisableHTTP2: ctx.GlobalBool(flags.HTTP2DisableFlag.Name),
EnableSccRollback: ctx.GlobalBool(flags.SccRollbackFlag.Name),
EnableSequencerHsm: ctx.GlobalBool(flags.EnableSequencerHsmFlag.Name),
SequencerHsmAddress: ctx.GlobalString(flags.SequencerHsmAddressFlag.Name),
SequencerHsmAPIName: ctx.GlobalString(flags.SequencerHsmAPIName.Name),
SequencerHsmCreden: ctx.GlobalString(flags.SequencerHsmCreden.Name),
EnableProposerHsm: ctx.GlobalBool(flags.EnableProposerHsmFlag.Name),
ProposerHsmAddress: ctx.GlobalString(flags.ProposerHsmAddressFlag.Name),
ProposerHsmAPIName: ctx.GlobalString(flags.ProposerHsmAPIName.Name),
ProposerHsmCreden: ctx.GlobalString(flags.ProposerHsmCreden.Name),
RollupClientHttp: ctx.GlobalString(flags.RollupClientHttpFlag.Name),
AllowL2AutoRollback: ctx.GlobalBool(flags.AllowL2AutoRollback.Name),
MaxRollupTxn: ctx.GlobalUint64(flags.MaxRollupTxnFlag.Name),
MinRollupTxn: ctx.GlobalUint64(flags.MinRollupTxnFlag.Name),
MinTimeoutStateRootElements: ctx.GlobalUint64(flags.MinTimeoutStateRootElementsFlag.Name),
}

err := ValidateConfig(&cfg)
Expand Down
Loading
Loading