feat: Add Pezkuwi chain support with custom signed extensions

- Add PezkuwiAddressConstructor for custom address type handling
- Add custom signed extensions (CheckNonZeroSender, CheckWeight, WeightReclaim, PezkuwiCheckMortality)
- Add pezkuwi.json type definitions
- Update RuntimeSnapshotExt for multiple address type lookups
- Update CHAINS_URL to use GitHub-hosted chains.json with types config
- Add feeViaRuntimeCall support for Pezkuwi chains
- Add debug diagnostics for runtime type issues (to be cleaned before production)
- Add CHANGELOG_PEZKUWI.md documenting all changes
This commit is contained in:
2026-02-03 05:41:52 +03:00
parent bb189aeb8a
commit 032cbde2d6
29 changed files with 662 additions and 55 deletions
@@ -13,7 +13,7 @@ import io.novafoundation.nova.runtime.multiNetwork.runtime.types.custom.vote.Con
import io.novafoundation.nova.runtime.util.constructAccountLookupInstance
import io.novasama.substrate_sdk_android.runtime.AccountId
import io.novasama.substrate_sdk_android.runtime.definitions.types.composite.DictEnum
import io.novasama.substrate_sdk_android.runtime.definitions.types.instances.AddressInstanceConstructor
import io.novafoundation.nova.common.utils.PezkuwiAddressConstructor
import io.novasama.substrate_sdk_android.runtime.extrinsic.builder.ExtrinsicBuilder
import io.novasama.substrate_sdk_android.runtime.extrinsic.call
import io.novasama.substrate_sdk_android.runtime.metadata.call
@@ -55,7 +55,7 @@ fun ExtrinsicBuilder.convictionVotingUnlock(
callName = "unlock",
arguments = mapOf(
"class" to trackId.value,
"target" to AddressInstanceConstructor.constructInstance(runtime.typeRegistry, accountId)
"target" to PezkuwiAddressConstructor.constructInstance(runtime.typeRegistry, accountId)
)
)
}
@@ -137,7 +137,7 @@ fun CallBuilder.convictionVotingDelegate(
callName = "delegate",
arguments = mapOf(
"class" to trackId.value,
"to" to AddressInstanceConstructor.constructInstance(runtime.typeRegistry, delegate),
"to" to PezkuwiAddressConstructor.constructInstance(runtime.typeRegistry, delegate),
"conviction" to conviction.prepareForEncoding(),
"balance" to amount
)