Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
98 lines
2.8 KiB
Go
98 lines
2.8 KiB
Go
package chainregistry
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
)
|
|
|
|
// Chain represents the chain.json file from the chain registry.
|
|
// https://raw.githubusercontent.com/cosmos/chain-registry/master/chain.schema.json
|
|
type Chain struct {
|
|
ChainName string `json:"chain_name"`
|
|
Status ChainStatus `json:"status"`
|
|
NetworkType NetworkType `json:"network_type"`
|
|
Website string `json:"website"`
|
|
PrettyName string `json:"pretty_name"`
|
|
ChainType ChainType `json:"chain_type"`
|
|
ChainID string `json:"chain_id"`
|
|
Bech32Prefix string `json:"bech32_prefix"`
|
|
DaemonName string `json:"daemon_name"`
|
|
NodeHome string `json:"node_home"`
|
|
KeyAlgos []KeyAlgos `json:"key_algos"`
|
|
Slip44 uint32 `json:"slip44"`
|
|
Fees Fees `json:"fees"`
|
|
Staking Staking `json:"staking"`
|
|
Codebase Codebase `json:"codebase"`
|
|
Description string `json:"description"`
|
|
APIs APIs `json:"apis"`
|
|
}
|
|
|
|
type Staking struct {
|
|
StakingTokens []StakingToken `json:"staking_tokens"`
|
|
}
|
|
|
|
type StakingToken struct {
|
|
Denom string `json:"denom"`
|
|
}
|
|
|
|
type Codebase struct {
|
|
GitRepo string `json:"git_repo"`
|
|
Genesis CodebaseGenesis `json:"genesis"`
|
|
RecommendedVersion string `json:"recommended_version"`
|
|
CompatibleVersions []string `json:"compatible_versions"`
|
|
Consensus CodebaseInfo `json:"consensus"`
|
|
Sdk CodebaseInfo `json:"sdk"`
|
|
Ibc CodebaseInfo `json:"ibc,omitempty"`
|
|
Cosmwasm CodebaseInfoEnabled `json:"cosmwasm,omitempty"`
|
|
}
|
|
|
|
type CodebaseGenesis struct {
|
|
GenesisURL string `json:"genesis_url"`
|
|
}
|
|
|
|
type CodebaseInfo struct {
|
|
Type string `json:"type"`
|
|
Version string `json:"version"`
|
|
Repo string `json:"repo,omitempty"`
|
|
Tag string `json:"tag,omitempty"`
|
|
}
|
|
|
|
type CodebaseInfoEnabled struct {
|
|
Version string `json:"version,omitempty"`
|
|
Repo string `json:"repo,omitempty"`
|
|
Tag string `json:"tag,omitempty"`
|
|
Enabled bool `json:"enabled"`
|
|
}
|
|
|
|
type Fees struct {
|
|
FeeTokens []FeeToken `json:"fee_tokens"`
|
|
}
|
|
|
|
type FeeToken struct {
|
|
Denom string `json:"denom"`
|
|
FixedMinGasPrice float64 `json:"fixed_min_gas_price"`
|
|
LowGasPrice float64 `json:"low_gas_price"`
|
|
AverageGasPrice float64 `json:"average_gas_price"`
|
|
HighGasPrice float64 `json:"high_gas_price"`
|
|
}
|
|
|
|
type APIs struct {
|
|
RPC []APIProvider `json:"rpc"`
|
|
Rest []APIProvider `json:"rest"`
|
|
Grpc []APIProvider `json:"grpc"`
|
|
}
|
|
|
|
type APIProvider struct {
|
|
Address string `json:"address"`
|
|
Provider string `json:"provider"`
|
|
}
|
|
|
|
// SaveJSON saves the chainJSON to the given out directory.
|
|
func (c Chain) SaveJSON(out string) error {
|
|
bz, err := json.MarshalIndent(c, "", " ")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return os.WriteFile(out, bz, 0o600)
|
|
}
|