add base support of polkadot/substrate/vara chain (#332)
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package io.emeraldpay.dshackle
|
||||
|
||||
enum class BlockchainType {
|
||||
UNKNOWN, BITCOIN, ETHEREUM, STARKNET, POLKADOT;
|
||||
}
|
||||
@@ -30,6 +30,7 @@ data class ChainsConfig(private val chains: List<ChainConfig>) : Iterable<Chains
|
||||
val callLimitContract: String?,
|
||||
val id: String,
|
||||
val blockchain: String,
|
||||
val type: String
|
||||
) {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
@@ -49,6 +50,7 @@ data class ChainsConfig(private val chains: List<ChainConfig>) : Iterable<Chains
|
||||
callLimitContract,
|
||||
"undefined",
|
||||
"undefined",
|
||||
"unknown"
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,8 @@ class ChainsConfigReader(
|
||||
protocols.value.fold(emptyMap()) { acc, protocol ->
|
||||
val blockchain = getValueAsString(protocol, "id")
|
||||
?: throw IllegalArgumentException("Blockchain id is not defined")
|
||||
val type = getValueAsString(protocol, "type")
|
||||
?: throw IllegalArgumentException("undefined type for $blockchain")
|
||||
val settings = mergeMappingNode(default, getMapping(protocol, "settings"))
|
||||
acc.plus(
|
||||
getList<MappingNode>(protocol, "chains")?.let { chains ->
|
||||
@@ -38,6 +40,10 @@ class ChainsConfigReader(
|
||||
ScalarNode(Tag.STR, "blockchain", null, null, DumperOptions.ScalarStyle.LITERAL),
|
||||
ScalarNode(Tag.STR, blockchain, null, null, DumperOptions.ScalarStyle.LITERAL),
|
||||
),
|
||||
NodeTuple(
|
||||
ScalarNode(Tag.STR, "type", null, null, DumperOptions.ScalarStyle.LITERAL),
|
||||
ScalarNode(Tag.STR, type, null, null, DumperOptions.ScalarStyle.LITERAL),
|
||||
),
|
||||
),
|
||||
chain.flowStyle,
|
||||
),
|
||||
@@ -78,6 +84,8 @@ class ChainsConfigReader(
|
||||
val netVersion = getValueAsLong(node, "net-version")?.toBigInteger() ?: BigInteger(chainId.drop(2), 16)
|
||||
val shortNames = getListOfString(node, "short-names")
|
||||
?: throw IllegalArgumentException("undefined shortnames for $blockchain")
|
||||
val type = getValueAsString(node, "type")
|
||||
?: throw IllegalArgumentException("undefined type for $blockchain")
|
||||
return ChainsConfig.ChainConfig(
|
||||
expectedBlockTime = expectedBlockTime,
|
||||
syncingLagSize = lags.first,
|
||||
@@ -91,6 +99,7 @@ class ChainsConfigReader(
|
||||
shortNames = shortNames,
|
||||
id = id,
|
||||
blockchain = blockchain,
|
||||
type = type
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -641,3 +641,26 @@ chain-settings:
|
||||
short-names: [ astar-zkatana ]
|
||||
chain-id: 0x133e40
|
||||
grpcId: 10035
|
||||
- id: vara
|
||||
label: varanet
|
||||
type: polkadot
|
||||
settings:
|
||||
expected-block-time: 3s
|
||||
options:
|
||||
validate-peers: false
|
||||
lags:
|
||||
syncing: 10
|
||||
lagging: 5
|
||||
chains:
|
||||
- id: Mainnet
|
||||
priority: 1
|
||||
code: VARA_MAINNET
|
||||
short-names: [ vara ]
|
||||
chain-id: 0x0
|
||||
grpcId: 1027
|
||||
- id: Testnet
|
||||
priority: 1
|
||||
code: VARA_TESTMET
|
||||
short-names: [ vara-testnet ]
|
||||
chain-id: 0x0
|
||||
grpcId: 10036
|
||||
|
||||
Reference in New Issue
Block a user