mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-07 03:16:45 +01:00
Merge pull request #229 from hermeznetwork/feature/api-getstate
Add struct get state endpoint
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
USAGE="Available options:
|
||||
doc Start documentation UI at http://loclahost:8001 and the mock up server at http://loclahost:4010
|
||||
mock Start the mock up server at http://loclahost:4010
|
||||
editor Start the documentation editor at http://loclahost:8002
|
||||
doc Start documentation UI at http://localhost:8001 and the mock up server at http://localhost:4010
|
||||
mock Start the mock up server at http://localhost:4010
|
||||
editor Start the documentation editor at http://localhost:8002
|
||||
stop Stop all runing services started using this script
|
||||
help display this message"
|
||||
|
||||
|
||||
17
api/state.go
Normal file
17
api/state.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"github.com/hermeznetwork/hermez-node/common"
|
||||
"github.com/hermeznetwork/hermez-node/db/historydb"
|
||||
"github.com/hermeznetwork/hermez-node/eth"
|
||||
)
|
||||
|
||||
// Status define status of the network
|
||||
type Status struct {
|
||||
Network historydb.Network `json:"network"`
|
||||
Metrics historydb.Metrics `json:"metrics"`
|
||||
Rollup eth.RollupVariables `json:"rollup"`
|
||||
Auction eth.AuctionVariables `json:"auction"`
|
||||
WithdrawalDelayer eth.WDelayerVariables `json:"withdrawalDelayer"`
|
||||
RecommendedFee common.RecommendedFee `json:"recommendedFee"`
|
||||
}
|
||||
357
api/swagger.yml
357
api/swagger.yml
@@ -2177,145 +2177,230 @@ components:
|
||||
$ref: '#/components/schemas/PaginationInfo'
|
||||
State:
|
||||
type: object
|
||||
description: Gobal statistics of the network.
|
||||
description: Gobal variables of the network
|
||||
properties:
|
||||
lastBlock:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthBlockNum'
|
||||
- description: Last synchronized Etherum block.
|
||||
- example: 3457437
|
||||
lastBatch:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/BatchNum'
|
||||
- description: Last batch that has been forged.
|
||||
- example: 76523
|
||||
currentSlot:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/SlotNum'
|
||||
- description: Slot where batches are currently being forged.
|
||||
- example: 2334
|
||||
transactionsPerBatch:
|
||||
type: number
|
||||
description: Average transactions per batch in the last 24 hours.
|
||||
example: 2002.7
|
||||
batchFrequency:
|
||||
type: number
|
||||
description: Average elapsed time between batches in the last 24 hours, in seconds.
|
||||
example: 8.9
|
||||
transactionsPerSecond:
|
||||
type: number
|
||||
description: Average transactions per second in the last 24 hours.
|
||||
example: 302.3
|
||||
totalAccounts:
|
||||
type: integer
|
||||
description: Number of created accounts.
|
||||
example: 90473
|
||||
totalBJJs:
|
||||
type: integer
|
||||
description: Number of different registered BJJs.
|
||||
example: 23067
|
||||
avgTransactionFee:
|
||||
type: number
|
||||
description: Average fee percentage paid for L2 transactions in the last 24 hours.
|
||||
example: 1.54
|
||||
nextForgers:
|
||||
$ref: '#/components/schemas/NextForgers'
|
||||
network:
|
||||
type: object
|
||||
description: Gobal statistics of the network
|
||||
properties:
|
||||
lastBlock:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthBlockNum'
|
||||
- description: Last synchronized Etherum block.
|
||||
- example: 3457437
|
||||
lastBatch:
|
||||
$ref: '#/components/schemas/Batch'
|
||||
currentSlot:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/SlotNum'
|
||||
- description: Slot where batches are currently being forged.
|
||||
- example: 2334
|
||||
nextForgers:
|
||||
$ref: '#/components/schemas/NextForgers'
|
||||
additionalProperties: false
|
||||
require:
|
||||
- lastBlock
|
||||
- lastBatch
|
||||
- currentSlot
|
||||
- nextForgers
|
||||
metrics:
|
||||
type: object
|
||||
description: Metrics of the network
|
||||
properties:
|
||||
transactionsPerBatch:
|
||||
type: number
|
||||
description: Average transactions per batch in the last 24 hours.
|
||||
example: 2002.7
|
||||
batchFrequency:
|
||||
type: number
|
||||
description: Average elapsed time between batches in the last 24 hours, in seconds.
|
||||
example: 8.9
|
||||
transactionsPerSecond:
|
||||
type: number
|
||||
description: Average transactions per second in the last 24 hours.
|
||||
example: 302.3
|
||||
totalAccounts:
|
||||
type: integer
|
||||
description: Number of created accounts.
|
||||
example: 90473
|
||||
totalBJJs:
|
||||
type: integer
|
||||
description: Number of different registered BJJs.
|
||||
example: 23067
|
||||
avgTransactionFee:
|
||||
type: number
|
||||
description: Average fee percentage paid for L2 transactions in the last 24 hours.
|
||||
example: 1.54
|
||||
additionalProperties: false
|
||||
require:
|
||||
- transactionsPerBatch
|
||||
- batchFrequency
|
||||
- transactionsPerSecond
|
||||
- totalAccounts
|
||||
- totalBJJs
|
||||
- avgTransactionFee
|
||||
rollup:
|
||||
type: object
|
||||
description: Rollup parameters
|
||||
properties:
|
||||
forgeL1L2BatchTimeout:
|
||||
type: integer
|
||||
description: Max ethereum blocks after the last L1-L2-batch, when exceeds the timeout only L1-L2-batch are allowed.
|
||||
example: 5
|
||||
feeAddToken:
|
||||
type: integer
|
||||
description: Fee to pay when registering tokens into the network.
|
||||
example: 5698
|
||||
withdrawalDelay:
|
||||
type: integer
|
||||
description: Withdraw delay in seconds
|
||||
example: 432000
|
||||
buckets:
|
||||
type: array
|
||||
description: List of buckets state
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
ceilUSD:
|
||||
type: integer
|
||||
description: Max USD value
|
||||
example: 1000
|
||||
blockStamp:
|
||||
type: integer
|
||||
description: Last time a withdrawal was added ( or removed if the bucket was full)
|
||||
example: 4475934
|
||||
withdrawals:
|
||||
type: integer
|
||||
description: Available withdrawals of the bucket
|
||||
example: 4
|
||||
blockWithdrawalRate:
|
||||
type: integer
|
||||
description: Every `blockWithdrawalRate` blocks add 1 withdrawal
|
||||
example: 8
|
||||
maxWithdrawals:
|
||||
type: integer
|
||||
description: Max withdrawals the bucket can hold
|
||||
example: 4
|
||||
additionalProperties: false
|
||||
require:
|
||||
- ceilUSD
|
||||
- blockStamp
|
||||
- withdrawals
|
||||
- blockWithdrawalRate
|
||||
- maxWithdrawals
|
||||
additionalProperties: false
|
||||
require:
|
||||
- forgeL1L2BatchTimeout
|
||||
- feeAddToken
|
||||
- withdrawalDelay
|
||||
- buckets
|
||||
auction:
|
||||
type: object
|
||||
description: Auction parameters.
|
||||
properties:
|
||||
bootCoordinator:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum address of the boot coordinator.
|
||||
- example: "0x997dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
slotDeadline:
|
||||
type: integer
|
||||
description: Number of blocks after the beginning of a slot after which any coordinator can forge if the winner has not forged any batch in that slot.
|
||||
example: 3
|
||||
closedAuctionSlots:
|
||||
type: integer
|
||||
description: Amount of slots between the current slot and the slot auction that is closed. Example if the value is 2, when slot 10 begins, the auction of the slot 12 gets closed.
|
||||
example: 2
|
||||
openAuctionSlots:
|
||||
type: integer
|
||||
description: How many days in advance are auctions opened.
|
||||
defaultSlotSetBid:
|
||||
type: array
|
||||
description: "Initial minimal bid for each auction. Expressed as an array of 6 values. To calculate which value corresponds to each slot: `initialMinimalBidding[slotNum%6]`."
|
||||
items:
|
||||
type: integer
|
||||
example: [32,0,68,21,55,99]
|
||||
outbidding:
|
||||
type: number
|
||||
description: Minimum outbid over the previous one to consider it valid.
|
||||
example: 3.64
|
||||
donationAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum address where the donations will go to.
|
||||
- example: "0x887dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
allocationRatio:
|
||||
type: array
|
||||
description: Percentage in which fees will be splitted between donations, governance and burning. The sum of the tree values should be 100.
|
||||
items:
|
||||
type: integer
|
||||
example: [80,10,10]
|
||||
additionalProperties: false
|
||||
require:
|
||||
- bootCoordinator
|
||||
- slotDeadline
|
||||
- closedAuctionSlots
|
||||
- openAuctionSlots
|
||||
- defaultSlotSetBid
|
||||
- outbidding
|
||||
- donationAddress
|
||||
- allocationRatio
|
||||
withdrawalDelayer:
|
||||
type: object
|
||||
description: Withdrawal delayer parameters
|
||||
properties:
|
||||
hermezRollupAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum address of the rollup smart contract.
|
||||
- example: "0x777dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
hermezGovernanceDAOAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum address of the governance DAO.
|
||||
- example: "0x667dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
whiteHackGroupAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum Address that can claim the funds in an emergency when the maximum emergency mode time is exceeded.
|
||||
- example: "0x557dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
hermezKeeperAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum Address that can enable emergency mode and modify the delay to make a withdrawal.
|
||||
- example: "0x557dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
withdrawalDelay:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthBlockNum'
|
||||
- description: The time that anyone needs to wait until a withdrawal of the funds is allowed, in Ethereum blocks.
|
||||
- example: 539573849
|
||||
emergencyModeStartingTime:
|
||||
type: integer
|
||||
description: Ethereum block in which the emergency mode will be activated.
|
||||
example: 10
|
||||
emergencyMode:
|
||||
type: boolean
|
||||
description: Indicates if emergency mode has been activated.
|
||||
example: false
|
||||
additionalProperties: false
|
||||
require:
|
||||
- hermezRollupAddress
|
||||
- hermezGovernanceDAOAddress
|
||||
- whiteHackGroupAddress
|
||||
- hermezKeeperAddress
|
||||
- withdrawalDelay
|
||||
- emergencyModeStartingTime
|
||||
- emergencyMode
|
||||
recommendedFee:
|
||||
$ref: '#/components/schemas/RecommendedFee'
|
||||
governance:
|
||||
type: object
|
||||
description: Network setings that are updatable by the governance.
|
||||
properties:
|
||||
rollup:
|
||||
type: object
|
||||
description: Rollup parameters.
|
||||
properties:
|
||||
forgeTimeout:
|
||||
type: integer
|
||||
description: Time delay between the beggining of a slot and the beggining of the period in which anyone can forge if the auction winner of the slot hasn't forged any batch yet. Time is measured in Ethereum blocks.
|
||||
example: 5
|
||||
feeAddToken:
|
||||
type: integer
|
||||
description: fee to pay when registering tokens into the network.
|
||||
example: 5698
|
||||
auction:
|
||||
type: object
|
||||
description: Auction parameters.
|
||||
properties:
|
||||
bootCoordinator:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum address of the boot coordinator.
|
||||
- example: "0x997dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
slotDeadline:
|
||||
type: integer
|
||||
description: Number of blocks at the end of a slot in which any coordinator can forge if the winner has not forged one before.
|
||||
example: 3
|
||||
closedAuctionSlots:
|
||||
type: integer
|
||||
description: Amount of slots between the current slot and the slot auction that is closed. Example if the value is 2, when slot 10 begins, the auction of the slot 12 gets closed.
|
||||
example: 2
|
||||
openAuctionSlots:
|
||||
type: integer
|
||||
description: How many days in advance are auctions opened.
|
||||
defaultSlotSetBid:
|
||||
type: array
|
||||
description: "Initial minimal bid for each auction. Expressed as an array of 6 values. To calculate which value corresponds to each slot: `initialMinimalBidding[slotNum%6]`."
|
||||
items:
|
||||
type: integer
|
||||
example: [32,0,68,21,55,99]
|
||||
outbidding:
|
||||
type: number
|
||||
description: Minimum outbid over the previous one to consider it valid.
|
||||
example: 3.64
|
||||
donationAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum address where the donations will go to.
|
||||
- example: "0x887dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
allocationRatio:
|
||||
type: array
|
||||
description: Percentage in which fees will be splitted between donations, governance and burning. The sum of the tree values should be 100.
|
||||
items:
|
||||
type: integer
|
||||
example: [80,10,10]
|
||||
withdrawalDelayer:
|
||||
type: object
|
||||
description: Withdrawal delayer parameters.
|
||||
properties:
|
||||
rollupAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum address of the rollup smart contract.
|
||||
- example: "0x777dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
governanceAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum address of the governance mechanism.
|
||||
- example: "0x667dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
whitheHackerGroupAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum Address that can claim the funds in an emergency when the maximum emergency mode time is exceeded.
|
||||
- example: "0x557dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
keeperAddress:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthereumAddress'
|
||||
- description: Ethereum Address that can enable emergency mode and modify the delay to make a withdrawal.
|
||||
- example: "0x557dc4262BCDbf85190C01c996b4C06a461d2430"
|
||||
withdrawalDelay:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/EthBlockNum'
|
||||
- description: The time that anyone needs to wait until a withdrawal of the funds is allowed, in Ethereum blocks.
|
||||
- example: 539573849
|
||||
emergencyModeStartingTime:
|
||||
type: integer
|
||||
description: Ethereum block in which the emergency mode will be activated.
|
||||
example: 10
|
||||
emergencyMode:
|
||||
type: boolean
|
||||
description: Indicates if emergency mode has been activated.
|
||||
|
||||
additionalProperties: false
|
||||
require:
|
||||
- network
|
||||
- metrics
|
||||
- rollup
|
||||
- auction
|
||||
- withdrawalDelayer
|
||||
- recomendedFee
|
||||
PaginationInfo:
|
||||
type: object
|
||||
description: Give pagination information
|
||||
|
||||
@@ -154,3 +154,21 @@ type BatchAPI struct {
|
||||
FirstItem int `json:"-" meddler:"first_item"`
|
||||
LastItem int `json:"-" meddler:"last_item"`
|
||||
}
|
||||
|
||||
// Network define status of the network
|
||||
type Network struct {
|
||||
LastBlock int64 `json:"lastBlock"`
|
||||
LastBatch BatchAPI `json:"lastBatch"`
|
||||
CurrentSlot int64 `json:"currentSlot"`
|
||||
NextForgers []HistoryCoordinator `json:"nextForgers"`
|
||||
}
|
||||
|
||||
// Metrics define metrics of the network
|
||||
type Metrics struct {
|
||||
TransactionsPerBatch float64 `json:"transactionsPerBatch"`
|
||||
BatchFrequency float64 `json:"batchFrequency"`
|
||||
TransactionsPerSecond float64 `json:"transactionsPerSecond"`
|
||||
TotalAccounts int64 `json:"totalAccounts"`
|
||||
TotalBJJs int64 `json:"totalBJJs"`
|
||||
AvgTransactionFee float64 `json:"avgTransactionFee"`
|
||||
}
|
||||
|
||||
@@ -61,21 +61,21 @@ type Coordinator struct {
|
||||
// AuctionVariables are the variables of the Auction Smart Contract
|
||||
type AuctionVariables struct {
|
||||
// Boot Coordinator Address
|
||||
DonationAddress ethCommon.Address
|
||||
DonationAddress ethCommon.Address `json:"donationAddress" meddler:"donation_address"`
|
||||
// Boot Coordinator Address
|
||||
BootCoordinator ethCommon.Address
|
||||
BootCoordinator ethCommon.Address `json:"bootCoordinator" meddler:"boot_coordinator"`
|
||||
// The minimum bid value in a series of 6 slots
|
||||
DefaultSlotSetBid [6]*big.Int
|
||||
DefaultSlotSetBid [6]*big.Int `json:"defaultSlotSetBid" meddler:"default_slot_set_bid,json"`
|
||||
// Distance (#slots) to the closest slot to which you can bid ( 2 Slots = 2 * 40 Blocks = 20 min )
|
||||
ClosedAuctionSlots uint16
|
||||
ClosedAuctionSlots uint16 `json:"closedAuctionSlots" meddler:"closed_auction_slots"`
|
||||
// Distance (#slots) to the farthest slot to which you can bid (30 days = 4320 slots )
|
||||
OpenAuctionSlots uint16
|
||||
OpenAuctionSlots uint16 `json:"openAuctionSlots" meddler:"open_auction_slots"`
|
||||
// How the HEZ tokens deposited by the slot winner are distributed (Burn: 40% - Donation: 40% - HGT: 20%)
|
||||
AllocationRatio [3]uint16
|
||||
AllocationRatio [3]uint16 `json:"allocationRatio" meddler:"allocation_ratio,json"`
|
||||
// Minimum outbid (percentage) over the previous one to consider it valid
|
||||
Outbidding uint16
|
||||
Outbidding uint16 `json:"outbidding" meddler:"outbidding"`
|
||||
// Number of blocks at the end of a slot in which any coordinator can forge if the winner has not forged one before
|
||||
SlotDeadline uint8
|
||||
SlotDeadline uint8 `json:"slotDeadline" meddler:"slot_deadline"`
|
||||
}
|
||||
|
||||
// AuctionState represents the state of the Rollup in the Smart Contract
|
||||
|
||||
@@ -109,11 +109,21 @@ type RollupPublicConstants struct {
|
||||
WithdrawDelayerContract ethCommon.Address `json:"withdrawDelayerContract"`
|
||||
}
|
||||
|
||||
// Bucket are the variables of each Bucket of Rollup Smart Contract
|
||||
type Bucket struct {
|
||||
CeilUSD uint64 `json:"ceilUSD"`
|
||||
BlockStamp uint64 `json:"blockStamp"`
|
||||
Withdrawals uint64 `json:"withdrawals"`
|
||||
BlockWithdrawalRate uint64 `json:"blockWithdrawalRate"`
|
||||
MaxWithdrawals uint64 `json:"maxWithdrawals"`
|
||||
}
|
||||
|
||||
// RollupVariables are the variables of the Rollup Smart Contract
|
||||
type RollupVariables struct {
|
||||
FeeAddToken *big.Int
|
||||
ForgeL1L2BatchTimeout int64
|
||||
WithdrawalDelay uint64
|
||||
FeeAddToken *big.Int `json:"feeAddToken" meddler:"fee_addtoken"`
|
||||
ForgeL1L2BatchTimeout int64 `json:"forgeL1L2BatchTimeout" meddler:"forge_l1l2_timeout"`
|
||||
WithdrawalDelay uint64 `json:"withdrawalDelay" meddler:"withdrawal_delay"`
|
||||
Buckets [RollupConstNumBuckets]Bucket `json:"buckets" meddler:"buckets,json"`
|
||||
}
|
||||
|
||||
// QueueStruct is the queue of L1Txs for a batch
|
||||
|
||||
@@ -16,7 +16,7 @@ import (
|
||||
WithdrawalDelayer "github.com/hermeznetwork/hermez-node/eth/contracts/withdrawdelayer"
|
||||
)
|
||||
|
||||
// WDelayerConstants are the constants of the Rollup Smart Contract
|
||||
// WDelayerConstants are the constants of the Withdrawal Delayer Smart Contract
|
||||
type WDelayerConstants struct {
|
||||
// Max Withdrawal Delay
|
||||
MaxWithdrawalDelay uint64 `json:"maxWithdrawalDelay"`
|
||||
@@ -26,6 +26,17 @@ type WDelayerConstants struct {
|
||||
HermezRollup ethCommon.Address `json:"hermezRollup"`
|
||||
}
|
||||
|
||||
// WDelayerVariables are the variables of the Withdrawal Delayer Smart Contract
|
||||
type WDelayerVariables struct {
|
||||
HermezRollupAddress ethCommon.Address `json:"hermezRollupAddress" meddler:"rollup_address"`
|
||||
HermezGovernanceDAOAddress ethCommon.Address `json:"hermezGovernanceDAOAddress" meddler:"govdao_address"`
|
||||
WhiteHackGroupAddress ethCommon.Address `json:"whiteHackGroupAddress" meddler:"whg_address"`
|
||||
HermezKeeperAddress ethCommon.Address `json:"hermezKeeperAddress" meddler:"keeper_address"`
|
||||
WithdrawalDelay uint64 `json:"withdrawalDelay" meddler:"withdrawal_delay"`
|
||||
EmergencyModeStartingTime uint64 `json:"emergencyModeStartingTime" meddler:"emergency_start_time"`
|
||||
EmergencyMode bool `json:"emergencyMode" meddler:"emergency_mode"`
|
||||
}
|
||||
|
||||
// DepositState is the state of Deposit
|
||||
type DepositState struct {
|
||||
Amount *big.Int
|
||||
|
||||
Reference in New Issue
Block a user