cardanoGetAddress
使用要求
- 固件版本要求
- UKey Lite 24 / UKey Lite 25: 1.1.0
- UKey Core 26: 1.1.0
Cardano:获取地址
根据指定的 BIP32-Ed25519 路径派生地址,并把结果返回给调用方。开启设备展示时,用户需要在 Ukey Wallet 上核对并确认导出该地址。
const response = await HardwareSDK.cardanoGetAddress(
connectId,
deviceId,
params,
);
参数
导出单个地址
addressParameters- 必需,地址参数对象,具体字段说明请参考下方内容。protocolMagic- 必需Integer,用于指定网络魔数;主网为764824073,Preprod 测试网为1,Preview 测试网为2。networkId- 必需Integer,用于标识当前网络;主网为1,测试网为0。address- 可选string,用于执行地址校验;详情请参考下方“处理按钮请求”部分。showOnUKey- 可选boolean,用于控制是否在设备上展示地址确认信息;默认值为true。derivationType- 可选CardanoDerivationType,用于设置地址派生方式;默认采用ICARUS=1。isCheck- 可选boolean,用于仅执行基础地址检查。
导出批量地址
bundle-Array数组对象,包含单个地址请求所需的字段。
地址参数
addressType- 必需CardanoAddressType | number,用于指定地址类型;可传入 Flow 中的CARDANO.ADDRESS_TYPE对象值,或 TypeScript 中的CardanoAddressType枚举值,支持全部地址类型。path- 必需string | Array<number>,用于指定支付路径;字符串数组最小长度限制为5。stakingPath- 可选string | Array<number>,用于指定质押路径;字符串数组最小长度限制为5,可用于基础地址和奖励地址派生。stakingKeyHash- 可选string,质押密钥哈希的十六进制字符串;在派生基础地址时可替代stakingPath。certificatePointer- 可选CardanoCertificatePointer,用于派生指针地址;对象中必须包含number类型的blockIndex、txIndex和certificateIndex。paymentScriptHash- 可选string,支付脚本哈希的十六进制字符串。stakingScriptHash- 可选string,质押脚本哈希的十六进制字符串。
示例
在设备上核对第二个 Cardano 账户的 Byron 地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.BYRON,
path: "m/44'/1815'/1'/0/1",
},
protocolMagic: 764824073,
networkId: 1,
});
在设备上核对第二个 Cardano 账户的基础地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.BASE,
path: "m/1852'/1815'/1'/0/1",
stakingPath: "m/1852'/1815'/1'/2/0",
},
protocolMagic: 764824073,
networkId: 1,
});
显示带有脚本支付部分的基础地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.BASE_SCRIPT_KEY,
paymentScriptHash:
"1a6bdcf7b2e0c1d9835f71ea425a98326dd0f89cc7d10ab704e679af",
stakingPath: "m/1852'/1815'/1'/2/0",
},
protocolMagic: 764824073,
networkId: 1,
});
显示带有脚本质押部分的基础地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.BASE_KEY_SCRIPT,
path: "m/1852'/1815'/1'/0/1",
stakingScriptHash:
"9e8cfcd8b6902d8c60c8da4a2182fde4c62c1437a66330d9666454ba",
},
protocolMagic: 764824073,
networkId: 1,
});
显示支付和质押部分都是脚本的基础地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.BASE_SCRIPT_SCRIPT,
paymentScriptHash:
"1a6bdcf7b2e0c1d9835f71ea425a98326dd0f89cc7d10ab704e679af",
stakingScriptHash:
"9e8cfcd8b6902d8c60c8da4a2182fde4c62c1437a66330d9666454ba",
},
protocolMagic: 764824073,
networkId: 1,
});
在设备上核对第二个 Cardano 账户的指针地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.POINTER,
path: "m/1852'/1815'/1'/0/1",
certificatePointer: {
blockIndex: 2,
txIndex: 3,
certificateIndex: 4,
},
},
protocolMagic: 764824073,
networkId: 1,
});
显示指针脚本地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.POINTER_SCRIPT,
paymentScriptHash:
"1a6bdcf7b2e0c1d9835f71ea425a98326dd0f89cc7d10ab704e679af",
certificatePointer: {
blockIndex: 2,
txIndex: 3,
certificateIndex: 4,
},
},
protocolMagic: 764824073,
networkId: 1,
});
在设备上核对第二个 Cardano 账户的企业地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.ENTERPRISE,
path: "m/1852'/1815'/1'/0/1",
},
protocolMagic: 764824073,
networkId: 1,
});
显示企业脚本地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.ENTERPRISE_SCRIPT,
paymentScriptHash:
"1a6bdcf7b2e0c1d9835f71ea425a98326dd0f89cc7d10ab704e679af",
},
protocolMagic: 764824073,
networkId: 1,
});
在设备上核对第二个 Cardano 账户的奖励地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.REWARD,
stakingPath: "m/1852'/1815'/1'/2/0",
},
protocolMagic: 764824073,
networkId: 1,
});
显示奖励脚本地址:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
addressParameters: {
addressType: CardanoAddressType.REWARD_SCRIPT,
stakingScriptHash:
"9e8cfcd8b6902d8c60c8da4a2182fde4c62c1437a66330d9666454ba",
},
protocolMagic: 764824073,
networkId: 1,
});
批量获取 Cardano 地址,并跳过设备展示:
HardwareSDK.cardanoGetAddress(connectId, deviceId, {
bundle: [
// Byron 地址,第4个派生账户路径
{
addressParameters: {
addressType: 8,
path: "m/44'/1815'/3'/0/0",
},
protocolMagic: 764824073,
networkId: 1,
showOnUKey: false,
},
// 带有质押密钥哈希的基础地址,第5个派生账户路径
{
addressParameters: {
addressType: 0,
path: "m/1852'/1815'/4'/0/0",
stakingKeyHash:
"2cd539f5831813fce6ebc50c286435d2a3edacc87dd6eb067f4d9e10",
},
protocolMagic: 764824073,
networkId: 1,
showOnUKey: false,
},
// Byron 地址,第6个派生账户路径,测试网
{
addressParameters: {
addressType: 8,
path: "m/44'/1815'/5'/0/2",
},
protocolMagic: 1,
networkId: 0,
showOnUKey: false,
},
],
});
返回结果
单个地址返回示例
{
success: true,
payload: {
addressParameters: {
addressType: number,
path: Array<number>, // 派生路径
stakingPath?: Array<number>, // 质押派生路径
stakingKeyHash?: string,
certificatePointer?: {
blockIndex: number,
txIndex: number,
certificatePointer: number,
},
paymentScriptHash?: string,
stakingScriptHash?: string,
}
serializedPath?: string,
serializedStakingPath?: string,
protocolMagic: number,
networkId: number,
address: string,
xpub: string,
stakeAddress: string, // 如果创建了基础地址,会同时返回质押地址
}
}
批量地址的结果
{
success: true,
payload: [
{
addressParameters: {
addressType: number,
path: Array<number>, // 派生路径
stakingPath?: Array<number>, // 质押派生路径
stakingKeyHash?: string,
certificatePointer?: {
blockIndex: number,
txIndex: number,
certificatePointer: number,
},
paymentScriptHash?: string,
stakingScriptHash?: string,
}
serializedPath?: string,
serializedStakingPath?: string,
protocolMagic: number,
networkId: number,
address: string,
},
{
addressParameters: {
addressType: number,
path: Array<number>, // 派生路径
stakingPath?: Array<number>, // 质押派生路径
stakingKeyHash?: string,
certificatePointer?: {
blockIndex: number,
txIndex: number,
certificatePointer: number,
},
paymentScriptHash?: string,
stakingScriptHash?: string,
}
serializedPath?: string,
serializedStakingPath?: string,
protocolMagic: number,
networkId: number,
address: string,
},
{
addressParameters: {
addressType: number,
path: Array<number>, // 派生路径
stakingPath?: Array<number>, // 质押派生路径
stakingKeyHash?: string,
certificatePointer?: {
blockIndex: number,
txIndex: number,
certificatePointer: number,
},
paymentScriptHash?: string,
stakingScriptHash?: string,
}
serializedPath?: string,
serializedStakingPath?: string,
protocolMagic: number,
networkId: number,
address: string,
},
]
}
错误
{
success: false,
payload: {
error: string // 错误消息
}
}