卡尔达诺结算层钱包后端

地址章节讨论的地址是发送和接收资金的基础,而钱包是简化用户最终流程的一种方式。

什么是钱包?

在卡尔达诺中,钱包的定义如下:

data CWallet = CWallet
    { cwId       :: !CWalletAddress
    , cwMeta     :: !CWalletMeta
    , cwAccounts :: ![CAccount]
    , cwAmount   :: !CCoin
    }

其中 CWalletMeta 指明当前钱包是共享的还是个人的,以及钱包使用的货币和钱包的名字。有了这个,钱包类型很容易扩展,因为任何附加的功能可以添加到 CWalletMeta 类型,而其他字段不变。每个钱包,无论名称,类型和货币,都必须具有上述字段。

交易和钱包

转账章节定义了交易数据的结构。然而,为了方便客户的操作,交易在客户中有不同的表现形式,他们被表示为:

data CTx = CTx
    { ctId            :: CTxId
    , ctAmount        :: CCoin
    , ctConfirmations :: Word
    , ctMeta          :: CTxMeta
    , ctInputAddrs    :: [CAddress Acc]
    , ctOutputAddrs   :: [CAddress Acc]
    }

本质上,一个客户端的转账由实际交易 Id,收到的币的数量,交易已得到的确认数(即当前位于包含所述交易区块顶部的区块数量),输入和输出地址。元数据,数据类型 CTxMeta,表明交易的货币,标题或名称,描述信息,以及 POSIX 格式的发送日期。

钱包后端 API

目前,钱包 API 提供了一系列使用钱包的方法。Haskell 库 servant 提供了一个模块化的 API 构建方法。该库使用组合器来构建院子 HTTP 操作,并将这些原子方法粘合在一起以形成更大和更完整的 API。

请注意,只有当您使用 --wallet 选项运行节点时,钱包 Web API 才可用,这个 API 的默认端口 8090 可以通过 --wallet-port 选项进行更改。

钱包 Web API 文档可以在这里找到

TLS 连接

钱包 Web API 使用 TLS 进行安全通信。调用 API 需要发送客户端 CA 证书,该证书在启动节点时使用,并将客户端标识为允许调用服务器 API。

请注意,客户端证书文件是启动节点时 --tlsca 作为选项提供的文件。

例如,如果该文件是可用的 ca.crt,那么对于运行节点 localhost:8090 调用 curl 命令可以像这样:

curl --cacert ca.crt -v https://localhost:8090/api/settings/sync/progress

如果该请求成功,那么您已经正确配置了 TLS。

处理错误

如果事件请求失败,则有一个 WalletError 类型,它只封装一个 Text 来显示发生了什么。