체인을 위한 txwrapper 생성
체인 사용자들을 위한 오프라인 서명 옵션을 확장하세요.
Last updated
"publishConfig": {
"access": "public"
},// src/index.ts
import { typesBundleForPolkadot } from '@foo-network/type-definitions';
import { OverrideBundleType } from '@polkadot/types/types';
import {
getRegistryBase,
GetRegistryOptsCore,
getSpecTypes,
TypeRegistry,
} from '@substrate/txwrapper-core';
// 사용자에게 편의를 위해 하드코딩된 체인 속성을 제공할 수 있습니다.
// 이는 일반적으로 `system_properties` 호출에 의해 반환되지만, 변경되는 경우가 거의 없으므로 하드코딩하는 것이 안전합니다.
/**
* txwrapper-foo가 지원하는 네트워크의 `ChainProperties`입니다.
*/
const KNOWN_CHAIN_PROPERTIES = {
foo: {
ss58Format: 3,
tokenDecimals: 18,
tokenSymbol: 'FOO',
},
bar: {
ss58Format: 42,
tokenDecimals: 18,
tokenSymbol: 'FOO',
},
};
// `GetRegistryOptsCore`의 `specName` 속성을 오버라이드하여 더 좁은 유형의 특정성을 얻을 수 있도록 합니다.
/**
* `getRegistry` 함수의 옵션입니다.
*/
export interface GetRegistryOpts extends GetRegistryOptsCore {
specName: keyof typeof KNOWN_CHAIN_PROPERTIES;
}
/**
* txwrapper-foo가 지원하는 네트워크의 타입 레지스트리를 가져옵니다.
*
* @param GetRegistryOptions 현재 런타임의 specName, chainName, specVersion 및 metadataRpc
*/
export function getRegistry({
specName,
chainName,
specVersion,
metadataRpc,
properties,
}: GetRegistryOpts): TypeRegistry {
const registry = new TypeRegistry();
registry.setKnownTypes({
// 타입이 `OverrideBundleType` 형식으로 패키지화되지 않은 경우,
// `RegisteredTypes`에서 지원하는 형식 중 하나로 타입을 지정할 수 있습니다:
// https://github.com/polkadot-js/api/blob/4ff9b51af2c49294c676cc80abc6476565c70b11/packages/types/src/types/registry.ts#L59
typesBundle: (typesBundleForPolkadot as unknown) as OverrideBundleType,
});
return getRegistryBase({
chainProperties: properties || KNOWN_CHAIN_PROPERTIES[specName],
specTypes: getSpecTypes(registry, chainName, specName, specVersion),
metadataRpc,
});
}// src/methods/currencies/index.ts
// 메서드를 내보내어 `currencies` 네임스페이스 아래에서 사용할 수 있도록 합니다.
export * from "./transfer";
// src/methods
// `methods` 내부에서 `currencies` 네임스페이스를 포함하여 모든 것을 내보내어,
// `methods.currencies.transfer`를 통해 메서드에 액세스할 수 있도록 합니다.
export * as methods from "./methods";