mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-07 03:16:45 +01:00
Allow serving API only via new cli command
- Add new command to the cli/node: `serveapi` that alows serving the API just
by connecting to the PostgreSQL database. The mode flag should me passed in
order to select whether we are connecting to a synchronizer database or a
coordinator database. If `coord` is chosen as mode, the coordinator
endpoints can be activated in order to allow inserting l2txs and
authorizations into the L2DB.
Summary of the implementation details
- New SQL table with 3 columns (plus `item_id` pk). The table only contains a
single row with `item_id` = 1. Columns:
- state: historydb.StateAPI in JSON. This is the struct that is served via
the `/state` API endpoint. The node will periodically update this struct
and store it int he DB. The api server will query it from the DB to
serve it.
- config: historydb.NodeConfig in JSON. This struct contains node
configuration parameters that the API needs to be aware of. It's updated
once every time the node starts.
- constants: historydb.Constants in JSON. This struct contains all the
hermez network constants gathered via the ethereum client by the node.
It's written once every time the node starts.
- The HistoryDB contains methods to get and update each one of these columns
individually.
- The HistoryDB contains all methods that query the DB and prepare objects that
will appear in the StateAPI endpoint.
- The configuration used in for the `serveapi` cli/node command is defined in
`config.APIServer`, and is a subset of `node.Config` in order to allow
reusing the same configuration file of the node if desired.
- A new object is introduced in the api: `StateAPIUpdater`, which contains all
the necessary information to update the StateAPI in the DB periodically by
the node.
- Moved the types `SCConsts`, `SCVariables` and `SCVariablesPtr` from
`syncrhonizer` to `common` for convenience.
This commit is contained in:
33
common/eth.go
Normal file
33
common/eth.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package common
|
||||
|
||||
// SCVariables joins all the smart contract variables in a single struct
|
||||
type SCVariables struct {
|
||||
Rollup RollupVariables `validate:"required"`
|
||||
Auction AuctionVariables `validate:"required"`
|
||||
WDelayer WDelayerVariables `validate:"required"`
|
||||
}
|
||||
|
||||
// AsPtr returns the SCVariables as a SCVariablesPtr using pointers to the
|
||||
// original SCVariables
|
||||
func (v *SCVariables) AsPtr() *SCVariablesPtr {
|
||||
return &SCVariablesPtr{
|
||||
Rollup: &v.Rollup,
|
||||
Auction: &v.Auction,
|
||||
WDelayer: &v.WDelayer,
|
||||
}
|
||||
}
|
||||
|
||||
// SCVariablesPtr joins all the smart contract variables as pointers in a single
|
||||
// struct
|
||||
type SCVariablesPtr struct {
|
||||
Rollup *RollupVariables `validate:"required"`
|
||||
Auction *AuctionVariables `validate:"required"`
|
||||
WDelayer *WDelayerVariables `validate:"required"`
|
||||
}
|
||||
|
||||
// SCConsts joins all the smart contract constants in a single struct
|
||||
type SCConsts struct {
|
||||
Rollup RollupConstants
|
||||
Auction AuctionConstants
|
||||
WDelayer WDelayerConstants
|
||||
}
|
||||
@@ -22,9 +22,9 @@ var FeeFactorLsh60 [256]*big.Int
|
||||
// the coordinator according to the tx type (if the tx requires to create an
|
||||
// account and register, only register or he account already esists)
|
||||
type RecommendedFee struct {
|
||||
ExistingAccount float64 `json:"existingAccount"`
|
||||
CreatesAccount float64 `json:"createAccount"`
|
||||
CreatesAccountAndRegister float64 `json:"createAccountInternal"`
|
||||
ExistingAccount float64 `json:"existingAccount"`
|
||||
CreatesAccount float64 `json:"createAccount"`
|
||||
CreatesAccountInternal float64 `json:"createAccountInternal"`
|
||||
}
|
||||
|
||||
// FeeSelector is used to select a percentage from the FeePlan.
|
||||
|
||||
Reference in New Issue
Block a user