一.概述
随着 Web3 生态的快速发展,数字资产管理成为区块链应用的重要组成部分。无论是交易所、中心化钱包,还是去中心化的 MPC 托管系统,都需要高效、安全且可扩展的钱包基础设施。DappLink 一键发钱包业务平台 正是为了解决这一需求,提供一键式钱包部署解决方案,支持中心化钱包、去中心化钱包以及托管系统的快速集成和上线。
自项目启动以来,DappLink 一键发钱包平台已与多个项目方达成合作,其中 Parapack 和 FishCake 已成功集成 DappLink 一键发钱包并顺利上线。
DappLink 一键发钱包平台专为不同类型的 Web3 项目提供高效、便捷的钱包基础设施,主要支持以下应用场景
-
交易所钱包:支持充提、归集、冷温热钱包管理等业务流程
-
中心化钱包:提供高性能、多链兼容的钱包后端服务
-
去中心化钱包:支持分层确定性钱包架构,安全的去中心化密钥管理方式
-
MPC 托管系统:基于 MPC 和 ZK 技术,实现去中心化私钥管理,MPC 动态委员会签名,增强安全性和合规性
平台采用模块化设计,确保各个组件可以独立部署,同时支持一键式集成
二. DappLink 项目架构
DappLink一键发钱包平台由多个核心组件构成,以确保安全性、可扩展性和高性能
-
key-locker:链上密钥管理工具,支持 Ethereum、IPFS、Arweave 等区块链
-
签名机:DappLink 的签名机支持 CloudHSM 和 TEE(可信执行环境)两种模式,目前支持 ECDSA 和 EdDSA两种加密算法,目前已被多家厂商采用。签名机确保交易签名的安全性,并可适配不同的安全需求
-
MPC 网络:DappLink 采用MPC和ZK技术,去中心化密钥管理机制,动态签名委员会,适用于企业级钱包和合规托管需求
-
wallet-sdk: 提供多链支持的标准化接口,使开发者可以快速集成钱包功能;主要包括:
-
地址生成
-
交易签名
-
资产查询
-
链上交互
-
统一 gRPC 接口服务:提供 gRPC 统一接口,整合第三方数据平台,支持不同类型的区块链模型,这一组件提供了一致化的 API 设计,使不同类型的区块链可以通过相同接口进行交互。
-
chain-data-api: 对接第三方平台的统一钱包 API,主要服务于 HD 钱包
-
wallet-chain-account:适用于账户模型(Ethereum、Solana 等)
-
wallet-chain-utxo:适用于 UTXO 模型(Bitcoin、Litecoin、BCH、BSV 等)
-
统一扫链服务:DappLink 具备完善的链上数据同步和监控能力,支持账户模型和UTXO 模型的交易处理;针对账户模型的链:multichain-sync-account 和 针对 UTXO 模型的链 multichain-sync-utxo, 这一模块确保了钱包可以实时跟踪链上变化,并高效处理资产流转;本模块主要有以下功能:
-
业务配置
-
地址导出
-
充值 & 提现
-
资产归集
-
热转冷、冷转热
-
交易回滚等业务逻辑
-
数据与交易服务
-
skeye:统一行情服务,集成 CEX 与 DEX,提供实时市场数据
-
trade:支持中心化钱包的闪兑、杠杆、期货和期权保险,未来可对接交易所
-
去中心化闪兑:通过调度 Aggregator API 提供最优交易路径,提高兑换效率
-
Hailstone 业务中台:Hailstone 是 DappLink 体系中的业务中台,负责与上层业务系统对接,提供高效、稳定的中间层服务,Hailstone 使得钱包可以无缝接入各种 Web3 应用,提升业务整合能力。主要功能包括:
-
用户账户管理
-
交易风控
-
数据分析
-
跨链交互
-
Dapp 聚合
三.项目功能详解介绍
1. 统一签名服务业务流程
该服务部署在 TEE 环境,通常由业务方自己来部署, DappLink 提供技术支持;支持的接口如下
rpc getSupportSignWay(SupportSignWayRequest) returns (SupportSignWayResponse) {}
rpc exportPublicKeyList(ExportPublicKeyRequest) returns (ExportPublicKeyResponse) {}
rpc signTxMessage(SignTxMessageRequest) returns (SignTxMessageResponse) {}
-
getSupportSignWay:查看签名方式是否支持
-
ECDSA
-
secp256k1
-
secp256r1
-
-
EdDSA
-
Ed25519
-
tm-ed25519
-
-
RSA
-
exportPublicKeyList: keygen 完成之后把公钥吐出来
-
signTxMessage:交易签名的函数
2. 中心化钱包业务流程
-
地址生成流程
-
业务方按照需求调度签名机生成密钥对,私钥存储在签名机里面,公钥通过接口返回
-
业务调用 gRPC 接口,传入公钥列表,生成地址,multichain-sync-utxo/multichain-sync-account 调度底层服务根据公钥生成地址,并返回地址列表给到业务方。
-
扫链业务流程
-
充值时:synchronizer 服务监听区块解析交易处理入库
-
充值:出金地址是外部地址,入金地址是交易所用户地址
-
提现:出金地址是热钱包地址,入金地址是外部地址
-
归集:出金地址是用户地址,入金地址是热钱包地址
-
热转温:出金地址是热钱包地址,入金地址是温钱包地址
-
温转热:出金地址是温钱包地址,入金地址是热钱包地址
-
提现
-
调用 multichain-sync 的 BuildUnSignTransaction, 构建 32 个字节的 MessageHash
-
使用 MessageHash 去签名机里面进行签名,返回来 signature
-
使用交易的 requestId 和签名发送到 multichain-sync, 构建的完整的并发送到区块网络
-
multichain-sync 的提现任务不断扫交易并发送到区块链,发送完成之后通知业务层,交易已发送
-
扫到提现交易之后再次通知业务层提现成功
-
归集, 热转温和温转热业务逻辑和提现差不多流程
2.1 统一 RPC 服务 Gateway
2.2 Wallet-chain-utxo 实现的接口
GetSupportChains(req *utxo.SupportChainsRequest) (*utxo.SupportChainsResponse, error)
ConvertAddress(req *utxo.ConvertAddressRequest) (*utxo.ConvertAddressResponse, error)
ValidAddress(req *utxo.ValidAddressRequest) (*utxo.ValidAddressResponse, error)
GetFee(req *utxo.FeeRequest) (*utxo.FeeResponse, error)
GetAccount(req *utxo.AccountRequest) (*utxo.AccountResponse, error)
GetUnspentOutputs(req *utxo.UnspentOutputsRequest) (*utxo.UnspentOutputsResponse, error)
GetBlockByNumber(req *utxo.BlockNumberRequest) (*utxo.BlockResponse, error)
GetBlockByHash(req *utxo.BlockHashRequest) (*utxo.BlockResponse, error)
GetBlockHeaderByHash(req *utxo.BlockHeaderHashRequest) (*utxo.BlockHeaderResponse, error)
GetBlockHeaderByNumber(req *utxo.BlockHeaderNumberRequest) (*utxo.BlockHeaderResponse, error)
SendTx(req *utxo.SendTxRequest) (*utxo.SendTxResponse, error)
GetTxByAddress(req *utxo.TxAddressRequest) (*utxo.TxAddressResponse, error)
GetTxByHash(req *utxo.TxHashRequest) (*utxo.TxHashResponse, error)
BuildUnSignTransaction(req *utxo.UnSignTransactionRequest) (*utxo.UnSignTransactionResponse, error)
BuildSignedTransaction(req *utxo.SignedTransactionRequest) (*utxo.SignedTransactionResponse, error)
DecodeTransaction(req *utxo.DecodeTransactionRequest) (*utxo.DecodeTransactionResponse, error)
VerifySignedTransaction(req *utxo.VerifyTransactionRequest) (*utxo.VerifyTransactionResponse, error)
-
GetSupportChains: 可以查询是否支持这条链
-
ConvertAddress: 公钥导出地址
-
ValidAddress:判断地址格式是否正确
-
GetFee: 预估手续费
-
GetAccount:获取账户相关的信息,例如:余额
-
GetUnspentOutputs:获取未花费的输入输出列表
-
GetBlockByNumber:根据区块号获取区块的信息,包含交易列表,若传空,获取到的是最新区块,若传入区块数,获取到的区块的信息
-
GetBlockByHash:根据区块哈希获取区块的信息,包含交易列表
-
GetBlockHeaderByHash:根据区块哈希获取区块头信息
-
GetBlockHeaderByNumber:根据区块号获取区块头信息
-
SendTx:广播签名的交易
-
GetTxByAddress: 根据地址获取该地址相关的交易记录
-
GetTxByHash:根据 TxHash 获取交易详情
-
BuildUnSignTransaction:根据交易数据生成待签名的 32 字节的 MessageHash
-
BuildSignedTransaction: 用签名机返回的 signature 和交易信息一起构建出完整的交易
-
DecodeTransaction:将 rawTx decode 出原始的交易
-
VerifySignedTransaction:签名的交易的验证
2.3 wallet-chain-account 实现的接口
type IChainAdaptor interface {
GetSupportChains(req *account.SupportChainsRequest) (*account.SupportChainsResponse, error)
ConvertAddress(req *account.ConvertAddressRequest) (*account.ConvertAddressResponse, error)
ValidAddress(req *account.ValidAddressRequest) (*account.ValidAddressResponse, error)
GetBlockByNumber(req *account.BlockNumberRequest) (*account.BlockResponse, error)
GetBlockByHash(req *account.BlockHashRequest) (*account.BlockResponse, error)
GetBlockHeaderByHash(req *account.BlockHeaderHashRequest) (*account.BlockHeaderResponse, error)
GetBlockHeaderByNumber(req *account.BlockHeaderNumberRequest) (*account.BlockHeaderResponse, error)
GetAccount(req *account.AccountRequest) (*account.AccountResponse, error)
GetFee(req *account.FeeRequest) (*account.FeeResponse, error)
SendTx(req *account.SendTxRequest) (*account.SendTxResponse, error)
GetTxByAddress(req *account.TxAddressRequest) (*account.TxAddressResponse, error)
GetTxByHash(req *account.TxHashRequest) (*account.TxHashResponse, error)
GetBlockByRange(req *account.BlockByRangeRequest) (*account.BlockByRangeResponse, error)
BuildUnSignTransaction(req *account.UnSignTransactionRequest) (*account.UnSignTransactionResponse, error)
BuildSignedTransaction(req *account.SignedTransactionRequest) (*account.SignedTransactionResponse, error)
DecodeTransaction(req *account.DecodeTransactionRequest) (*account.DecodeTransactionResponse, error)
VerifySignedTransaction(req *account.VerifyTransactionRequest) (*account.VerifyTransactionResponse, error)
GetExtraData(req *account.ExtraDataRequest) (*account.ExtraDataResponse, error)
}
-
GetSupportChains: 可以查询是否支持这条链
-
ConvertAddress: 公钥到处地址
-
ValidAddress:判断地址格式是否正确
-
GetFee: 预估手续费
-
GetAccount:获取账户相关的信息,例如:余额
-
GetBlockByNumber:根据区块号获取区块的信息,包含交易列表,若传空,获取到的是最新区块,若传入区块数,获取到的区块的信息
-
GetBlockByHash:根据区块哈希获取区块的信息,包含交易列表
-
GetBlockHeaderByHash:根据区块哈希获取区块头信息
-
GetBlockHeaderByNumber:根据区块号获取区块头信息
-
GetBlockByRange: 根据 star 和 end 区块号获取这些区块区间的区块信息
-
SendTx:广播签名的交易
-
GetTxByAddress: 根据地址获取该地址相关的交易记录
-
GetTxByHash:根据 TxHash 获取交易详情
-
BuildUnSignTransaction:根据交易数据生成待签名的 32 字节的 MessageHash
-
BuildSignedTransaction: 用签名机返回的 signature 和交易信息一起构建出完整的交易
-
DecodeTransaction:将 rawTx decode 出原始的交易
-
VerifySignedTransaction:签名的交易的验证
-
GetExtraData: 预留接口
2.4 multichain-sync-* 服务
service BusinessMiddleWireServices {
rpc businessRegister(BusinessRegisterRequest) returns (BusinessRegisterResponse) {}
rpc exportAddressesByPublicKeys(ExportAddressesRequest) returns (ExportAddressesResponse) {}
rpc buildUnSignTransaction(UnSignWithdrawTransactionRequest) returns(UnSignWithdrawTransactionResponse){}
rpc buildSignedTransaction(SignedWithdrawTransactionRequest) returns(SignedWithdrawTransactionResponse){}
rpc setTokenAddress(SetTokenAddressRequest) returns (SetTokenAddressResponse) {}
}
-
businessRegister:第三方业务需要进行注册,注册到系统之后才能使用整个钱包服务
-
exportAddressesByPublicKeys:根据公钥批量生成地址
-
createUnSignTransaction: 根据交易数据生成待签名的 32 字节的 MessageHash
-
buildUnSignTransaction: 用签名机返回的 signature 和交易信息一起构建出完整的交易
-
setTokenAddress: 业务根据自己的需求配置需要支持的 token
3. 去中心化钱包业务
-
数据采集与整合:从第三方数据平台、中心化交易所行情、去中心化交易所行情和交易聚合器获取数据。
-
通过 chain-data-api 进行多数据源的整合处理
-
skyeye 和 dapplink-aggregator 负责交易计算、交换和汇总,为交易聚合器提供数据支持
-
区块链账户与 UTXO 处理:
-
通过 wallet-chain-utxo 处理 UTXO 账户数据。
-
通过 wallet-chain-account 处理基于账户模型的区块链数据。
-
key-locker 去中心化的密钥柜组件
-
Hailstone 钱包中台服务
-
钱包基础数据获取功能:用户钱包的基本信息管理
-
钱包资产管理功能: 钱包资产的存储和管理
-
钱包行情功能:实时查询钱包资产的市场价格
-
Dapp 板块:提供 Dapp 相关的业务支持
-
咨询模块:提供市场或产品咨询信息
-
闪兑板块:提供快速兑换功能
-
RWA(现实世界资产):支持现实资产的链上映射
-
PayFI: 支付金融相关功能
-
前端依赖库,提供钱包交互和交易聚合功能:
-
wallet-sdk: 生成离线钱包地址,支持 HD(分层确定性)模式, 进行离线签名。
-
inject-js:处理钱包和 Dapp 交互的 JS 桥代码
-
dapplink-aggregator-js:提供交易聚合器 API 的 JS 代码;进行先验数据提取和计算,支持币种兑换功能
-
parapack(SQLite) 和 fishcake(SQLite) 作为本地数据存储,可能用于缓存或者轻量级数据存储需求
3.1 行情服务业务
3.2 密钥托管的服务业务
4. MPC 网络
-
LinkLayer 多重质押协议:作为整个系统的顶层协议,负责协调 MPC 节点加入退出管理,通过质押模型和承诺签名来保证网络的安全和可靠。
-
MPC节点层:由多个运行在 TEE 环境中的 MPC 节点组成,每个节点持有密钥的一个分片(key-slice)。
-
mpc-node-1 到 mpc-node-9:各节点运行在 TEE 环境下,密钥分片被分布式存储在各节点中,保证单个节点无法直接还原完整密钥。
-
TEE(受信执行环境):提供硬件级别的安全性,防止恶意行为对密钥分片的篡改或泄露。
-
P2P 通信网络
-
节点之间通过点对点通信网络协同工作。
-
支持密钥生成(keygen)和签名(signature)操作的分布式计算。
-
密钥生成:各节点协作生成密钥分片,并通过计算聚合公钥。
-
签名:各节点接收待签名消息,独立计算后将结果返回,最后聚合为完整签名。
-
MPC Manager:负责管理 MPC 操作,包括密钥生成和签名请求。
-
核心功能
-
keygen:触发密钥生成流程,返回生成的公钥(publicKey)。
-
Signature:接收待签名的 32 位消息(Msg),协调 MPC 节点完成签名过程并返回结果。
-
Wallet Service
-
面向业务层的服务模块。
-
与 MPC Manager 交互,发送密钥生成和签名请求。
-
提供钱包服务的核心功能,例如密钥管理和交易签名。
四.交易所钱包详解业务流
1. 商户 ID 分配
- DappLink 业务中台给业务方分配商户 ID
-
业务方提交商户信息
-
DappLink 业务中台给业务方分配 Token 和商户 ID
2. 业务配置
-
使用商户 ID 注册到我们 DappLink 钱包平台,内部会根据业务方进行分库分表
-
业务注册的时候需要把充值,提现,流水下发等相关回调接口一并提交到 DappLink 钱包平台
3. Token 配置
- 业务配置 token, 传入 token 名字,符号, 精度,最小最大归集和转冷金融等信息
4. 地址生成
-
业务调度自己的签名生成密钥,私钥不会离开 TEE 或者 CloudHSM, 但是它会将公钥列表返回到业务方
-
业务方把公钥列表给到 multichain,multichain 调度 wallet-chain-account/utxo 根据公钥导出地址
-
把生成地址列表存到业务表里面,并且返回地址列表
5. 充值
-
获取最新区块链
-
获取本地数据最高区块
-
链上的最新和数据库的最高区块进行比较
-
若本地数据块高 = 链上最新区块高度,等待最新区块出现
-
若本地数据块高 > 链上最新区块高度, 进行交易回滚
-
若本地数据块高 < 链上最新区块高度,
-
根据区块高度获取交易列表
-
解析交易之后
-
若 from 是外部地址,to 地址是内部用户地址,充值; 调用回调接口通知业务方
-
若 from 地址是用户地址,to 地址是热钱包地址,归整; 调用回调接口通知业务方
-
若 from 地址是热钱包地址,to 地址是外部用户地址,提现; 调用回调接口通知业务方
-
若 from 地址是热钱包地址,to 是冷钱包地址,热转冷; 调用回调接口通知业务方
-
若 from 是冷钱包地址,to 地址是热钱包地址,冷转热; 调用回调接口通知业务方
6. 提现
-
用户发起提现,业务方将提现交易发送 DappLink 钱包服务
-
业务方将交易发送到 multichain-sync-account/utxo 进行构建待签名的消息,multichain-sync-account/utxo 调度 wallet-chain-account/utxo 返回待签名的消息
-
业务方将待签名的消息发送给自己部署的签名进行签名
-
业务方将 signature 和 交易 ID 发送到你 multichain-sync-account/utxo ,multichain-sync-account/utxo 调度 wallet-chain-account/utxo 构建完整交易并发送到区块链网络,将完整交易和交易 Hash 返回给业务端
-
提现进程会去扫描这些交易发送到区块链网络
-
扫链部分参考充值模块
7. 归集
-
检测用户地址资金是否大于最小归集金额, 如果大于最小归集金额,发起交易归集资金
-
热转冷
-
检测热钱包地址资金是否大于一定的转冷金额, 发起交易将资金转到零钱包,流程类似提现和归集
-
冷转热
-
热钱包金额小于一定数量,报警通知业务方
-
业务方手动操作向冷钱包转入一笔资金
-
交易回滚
11. 服务部署方式
-
签名机:项目方部署
-
统一 gRPC 服务
-
wallet-chain-utxo: dapplink 提供服务
-
wallet-chain-account: dapplink 提供服务
-
统一扫链服务
-
multichain-sync-account: dapplink 提供服务
-
Multichain-sync-utxo: dapplink 提供服务
-
业务中台:dapplink 提供服务
五.去中心化钱包的各个业务流程
1. 钱包地址生成
2. 助记词导出
- DappLink 解决方案和其他 HD 钱包他们推导模式都是一样,DappLink 钱包助记词导入到其他钱包,生成的私钥,公钥,地址是一样(某些链地址格式比较多,若不同钱包选用地址格式不一致的话,他生成的地址会不一样)
3. 助记词导入
4. 私钥导出
5. 私钥的导入
注意:私钥导入只能生成这个私钥相关的地址,但是助记词,他可以通过 BIP 推导协议管理 n 钱包(account, address_index)
6. 收款
7. 转账
GasOracle: 预测链上手续费,这个可以使用 DappLink 的 GasOracle 服务
8.钱包的余额获取
9. 交易记录
10. 代币发现功能
11. 行情业务模块
12. 资产管理模块
13. 闪兑
14. Dapp 浏览器
六. PayFi 板块
1. 去除助记词并且使用 AI agent 调度整个钱包
2. 高效性和去中心化 PayFi 应用链
3. PayFi 扫码支付
4. PayFi 唤起网页来支付
5. 去中心化 U 卡支付
-
U 卡不存储私钥: 完全去中心化,离线签名,需要 APP 来将私钥存储在本地,提供离线签名的功能。
-
U 卡(数字货币卡)里面存储私钥:U 卡里面集成签名芯片和存储,私钥通过口令加密,POS 机里面构建 32 位的 Message, Message, 通过 NFC 的方式通信传递给 U 签名,这里的 U 卡相当于一个小型的硬件钱包。
6. 数字货币卡 + POS 机支付
-
数字货币卡里面存储私钥:卡里面集成签名芯片和存储,私钥通过口令加密
-
POS 机里面构建 32 位的 MessageHash, MessageHash 通过 NFC 的方式通信传递给卡签名,这里的卡相当于一个小型的硬件钱包。
7. 二维码 + POS 机支付
在手机展示二维码,POS 扫码得 from 和蓝牙通信信息,POS 机里面构建 32 字节的 MessageHash, MessageHash 蓝牙通信传递给 APP 签名,APP 签名完成之后将 signature 返回给 POS 机,POS 构建完整的交易发送到链上
-
APP 二维码:from 地址,蓝牙通信的关键信息
-
POS 扫码得 from 和蓝牙通信信息,POS 机里面构建 32 字节的 MessageHash, APP 签名完成之后将 signature 返回给 POS 机,POS 构建完整的交易发送到链上
七.DappLink 一键发钱包愿景
DappLink 的“一键发钱包”愿景旨在通过极简化的操作,为开发者和企业提供高效、安全且易用的钱包解决方案,助力 Web3 普及和创新。具体包括以下目标:
-
快速部署,降低门槛:提供一站式解决方案,让开发者无需深入研究复杂的底层技术,只需通过简单的界面或 API 调用,即可快速生成支持多链、多资产的钱包,覆盖从 HD 钱包到 AA 钱包的多种类型。
-
灵活可扩展: 支持主流区块链和 Layer 2 解决方案(如 OpStack 和 Polygon zkEVM),同时开放插件化架构,便于定制和扩展,满足企业级和个性化需求。
-
高安全性保障:基于 DappLink 签名机的 CloudHSM 和 TEE 双模式,以及支持 ECDSA, EdDSA 和 BLS 等加密算法,确保密钥管理和交易签名的安全性,最大限度降低用户资产风险。
-
兼容 MPC 技术:集成多方计算(MPC)功能,提升钱包的安全性和灵活性,特别是对需要托管或分布式签名的场景提供支持。
-
面向未来的创新:结合账户抽象(Account Abstraction)技术,助力用户从复杂的区块链交互中解放出来,实现更智能化、自动化的交易流程,为 Web3 产品带来更友好的用户体验。
-
生态融合与教育:打通与其他 Web3 产品的对接路径(如 NFT、GameFi、DeFi、PayFi 等),并通过 DappLink 技术培训体系,帮助更多开发者掌握钱包技术,推动整个生态的繁荣发展。
通过“一键发钱包”,DappLink 希望为 Web3 开发者、企业和最终用户带来更便捷的入口和更安全的保障,成为下一代区块链技术应用的基础设施推动者