mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 07:47:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
<!--
 | 
						|
order: 2
 | 
						|
-->
 | 
						|
 | 
						|
# State
 | 
						|
 | 
						|
## Parameters and Genesis State
 | 
						|
 | 
						|
`Parameters` define the governance parameters and default behavior of the swap module.
 | 
						|
 | 
						|
```go
 | 
						|
// Params are governance parameters for the swap module
 | 
						|
type Params struct {
 | 
						|
	AllowedPools   AllowedPools   `json:"allowed_pools" yaml:"allowed_pools"`
 | 
						|
	SwapFee sdk.Dec `json:"swap_fee" yaml:"swap_fee"`
 | 
						|
}
 | 
						|
 | 
						|
// AllowedPool defines a tradable pool
 | 
						|
type AllowedPool struct {
 | 
						|
	TokenA string `json:"token_a" yaml:"token_a"`
 | 
						|
	TokenB string `json:"token_b" yaml:"token_b"`
 | 
						|
}
 | 
						|
 | 
						|
// AllowedPools is a slice of AllowedPool
 | 
						|
type AllowedPools []AllowedPool
 | 
						|
```
 | 
						|
 | 
						|
`GenesisState` defines the state that must be persisted when the blockchain stops/restarts in order for the normal function of the swap module to resume.
 | 
						|
 | 
						|
```go
 | 
						|
// GenesisState is the state that must be provided at genesis.
 | 
						|
type GenesisState struct {
 | 
						|
	Params       Params `json:"params" yaml:"params"`
 | 
						|
	PoolRecords  `json:"pool_records" yaml:"pool_records"`
 | 
						|
	ShareRecords `json:"share_records" yaml:"share_records"`
 | 
						|
}
 | 
						|
 | 
						|
// PoolRecord represents the state of a liquidity pool
 | 
						|
// and is used to store the state of a denominated pool
 | 
						|
type PoolRecord struct {
 | 
						|
	// primary key
 | 
						|
	PoolID      string   `json:"pool_id" yaml:"pool_id"`
 | 
						|
	ReservesA   sdk.Coin `json:"reserves_a" yaml:"reserves_a"`
 | 
						|
	ReservesB   sdk.Coin `json:"reserves_b" yaml:"reserves_b"`
 | 
						|
	TotalShares sdk.Int  `json:"total_shares" yaml:"total_shares"`
 | 
						|
}
 | 
						|
 | 
						|
// PoolRecords is a slice of PoolRecord
 | 
						|
type PoolRecords []PoolRecord
 | 
						|
 | 
						|
// ShareRecord stores the shares owned for a depositor and pool
 | 
						|
type ShareRecord struct {
 | 
						|
	// primary key
 | 
						|
	Depositor sdk.AccAddress `json:"depositor" yaml:"depositor"`
 | 
						|
	// secondary / sort key
 | 
						|
	PoolID      string  `json:"pool_id" yaml:"pool_id"`
 | 
						|
	SharesOwned sdk.Int `json:"shares_owned" yaml:"shares_owned"`
 | 
						|
}
 | 
						|
 | 
						|
// ShareRecords is a slice of ShareRecord
 | 
						|
type ShareRecords []ShareRecord
 | 
						|
```
 |