- 交易所给用户提供地址,用户把钱转进来
- 扫链:获取最新块高,从上一次解析的块开始到最新块高进行交易解析
- 交易解析完之后,如果交易里面 to 是系统用户,则是充值,解析完成之后上账,并通知业务层
- 获取需要的签名参数
- 交易离线签名:组织交易,生成待签名消息摘要,将待签名的消息摘要递给签名机进行签名,签名机签名完成之后返回签名串
- 构建完整的交易并发送区块链网络,将签名时计算出来的交易 Hash 或者发送交易时返回交易 Hash 更新到数据库
- 扫链解析到这笔交易,说明提现成功。
- 第一步:随机熵生成
- 第二步:计算校验和
- 第三步:组合熵和校验和
- 第四步:分割助记词索引
- 第五步:映射为助记词
- 第一步:检查助记词数量
- 第二步:检查助记词是否在词汇表
- 第三步:将助记词转换成索引
- 第四步:提取种子的校验和
- 第五步:计算校验和
- 第六步:验证校验和
m/44'/coin_type'/account'/change/address_index
秘密-----> n 份,k 份可恢复, 任意 k 份恢复出这个秘密,分别用门限共享算法和逆门限共享秘密算法
GG18
- Keygen: 5 轮
- Sign: 9 轮
GG20
- Keygen: 5 轮
- Sign: 7 轮
schnorr 签名聚合成一个签名,还有短密钥,这样签名的数据会比 ECDSA 短很多,所以相对于 ECDSA 签名的交易会便宜很多
因为当时 schnorr 算法在专利期
- ECDSA 是基于更早的标准(如 FIPS 186-4 和 ANSI X9.62)发展的,因此在密码学界和工业界有较长的使用历史和广泛的标准化支持。它被大量系统和协议(如 TLS 和 Bitcoin)采用,形成了一个庞大的生态系统。
- 虽然 EdDSA 有一些优势,如不容易受到侧信道攻击的影响(如时间攻击和缓存攻击),但 ECDSA 的安全性也已经过广泛的研究和验证。对于很多开发者和企业来说,使用一个已被长期验证的算法是更为保守和安全的选择。
- EdDSA 通常具有更高的签名速度和较快的验证速度,尤其是在大多数软件实现中。然而,对于已经高度优化的 ECDSA 实现,性能差异在许多应用中可能并不明显。
- EdDSA 的设计更为简单且更不易出错,特别是在处理随机数生成等方面。然而,ECDSA 由于使用历史更长,开发者更为熟悉其使用和管理。
- 💡💡接口返回的 to 是交易所系统里面的用户地址,这笔交易为充值交易;
- 💡💡接口返回的 from 是交易所系统里面的用户地址,这笔交易为提现交易;
- 💡💡接口返回的 to 是交易所的归集地址,from 是系统的用户地址,这笔交易资金归集交易;
- 💡💡接口返回的 to 地址是冷钱包地址,from 地址时热钱包地址,这笔交易热转冷的交易。
- 💡💡接口返回的 from 地址是冷钱包地址,to 地址时热钱包地址,这笔交易冷转热的交易。
- 获得最新块高;更新到数据库
- 从数据库中获取上次解析交易的块高做为起始块高,最新块高为截止块高,如果数据库中没有记录,说明需要从头开始扫,起始块高为 0;
- 解析区块里面的交易,to 地址是系统内部的用户地址,说明用户充值,更新交易到数据库中,将交易的状态设置为待确认。
- 所在块的交易过了确认位,将交易状态更新位充值成功并通知业务层。
- 解析到的充值交易需要在钱包的数据库里面维护 nonce, 当然也可以不维护,签名的时候去链上获取
- 获取离线签名需要的参数,给合适的手续费
- 构建未签名的交易消息摘要,将消息摘要递给签名机签名
- 构建完整的交易并进行序列化
- 发送交易到区块链网络
- 扫链获取到交易之后更新交易状态并上报业务层
- 将用户地址上的资金转到归集地址,签名流程类似提现
- 发送交易到区块链网络
- 扫链获取到交易之后更新交易状态
- 将热钱包地址上的资金转到冷钱包地址,签名流程类似提现
- 发送交易到区块链网络
- 扫链获取到交易之后更新交易状态
- 手动操作转账到热钱包地址
- 扫链获取到交易之后更新交易状态
Bitcoin Rosetta API 是由 Coinbase 提出的 Rosetta 标准的一部分,旨在为区块链和钱包提供一个统一的接口标准。这个标准化的接口使得与各种区块链的交互更加容易和一致,无论是对交易数据的读取还是写入。目前已经支持很多链,包含比特币,以太坊等主流链,也包含像 IoTex 和 Oasis 这样的非主流链。
/network/list:返回比特币主网和测试网信息。 /network/status:返回当前最新区块、已同步区块高度、区块链处理器的状态等。 /block 和 /block/transaction:返回区块和交易的详细信息,包括交易的输入输出、金额、地址等。 /account/balance:通过查询比特币节点,返回指定地址的余额。
/construction/submit:通过比特币节点提交签名后的交易。
定义:Slot 是以太坊2.0中最基本的时间单位,每个slot都有一个指定的时间长度。在每个 slot 中,可能会有一个区块被提议并添加到链中。 时间长度:一个 slot 的长度为 12 秒。这意味着每 12 秒会有一个新的 slot。 功能:在每个 slot 中,网络中的验证者将有机会提议一个新的区块。这些提议者是通过权益证明(PoS)随机选择的。
定义:Epoch 是由多个连续的slot组成的更长时间段。在 Eth2.0 中,Epoch 用于管理和组织验证者的活动。 组成:一个 Epoch 由 32 个 slot 组成。 时间长度:由于一个 slot 是12秒,一个 Epoch 的总长度是 384 秒(即6.4分钟)。 功能:Epoch 是用来实现共识机制的一部分。在每个 Epoch 结束时,网络会进行状态和共识的检查和调整,包括对验证者的奖励和惩罚。
定义:Block 是包含交易和其他相关数据的记录单元。在以太坊2.0中,每个slot可能会有一个区块被提议,但不保证每个 slot 都有区块。 内容:一个区块包含区块头、交易列表、状态根哈希、签名等数据。 创建过程:在每个 slot 开始时,网络会随机选出一个验证者来提议区块。该验证者将创建一个包含新交易和其他必要信息的区块,并广播到网络中。
在确认位过了之后交易回滚的难度很大,每条链不一样,根据历史和经验来定,以太坊的话可以参照区块状态来做
- leagcy: 历史遗留交易类型,签名体为 gasLimit 和 gasPrice
- Eip1559: BaseFee 类型
- blob: EIP4844 交易类型
HD 钱包私钥在本地设备,私钥用户自己控制 交易所钱包中心化服务器(CloadHSM, TEE 等),私钥项目方控制
HD 资金在用户钱包地址 交易所钱包资金在交易所热钱包或者冷钱包里面
中心化钱包:实时不断扫链更新交易数据和状态 HD 钱包:根据用户的操作通过请求接口实现业务逻辑
认可共识比较
账户模型: UTXO: