简单来说,区块链就是一个以链式结构组织而成的去中心化的账本。其最本质的作用是用于记账,区块链上面任何项目都是基于记账这个概念衍生而来的。
区块链系统中,用到了许多的密码学原理来保证系统的安全性、隐私性。对称加密对称加密中,加密和解密始终使用一把秘钥。这把秘钥由双方协商好,在网络传输等不安全场景中,使用密文进行传输。
门限共享秘密是什么门限共享秘密(ThresholdSecretSharing,TSS)是一种密码学技术,它将一个秘密(如私钥)分割成多个碎片(Shares),并设定一个阈值(Threshold,t),只要收集到其中任意t个碎片,就能还原出原始秘密。
CloudHSMCloudHSM是AWS或者Google提供的一种硬件级别的加密签名解决方案。使用专业的硬件设备来生成、存储和使用加密秘钥。它是为了那些对秘钥有完全掌控权、且极度追求安全的客户所设计的。
钱包地址生成业务,通常指的是根据特定区块链协议规范,从一对密钥(公钥、私钥)生成唯一的钱包地址的过程。这是区块链系统中非常核心的基础设施服务之一,广泛用于交易所、托管服务、Web3项目等。
在钱包开发中,我们经常要使用到rpc节点的调用,但是每一个链的rpc接口又有着差异,我们必须去对每一个链进行适配,十分麻烦。而多链RPC应用这个项目将会拯救你。
在前面两篇帖子中,我们实现了signature-machine离线签名机项目和chains-union-rpc多链统一rpc服务。在这一篇帖子中,我们正式来开始实现一个钱包的业务层。
扫链同步器是一个钱包业务的核心。无论是充值、提现、归集、还是热转冷、冷转热和回滚业务,都是需要和链上交易数据进行交互。而我们如何获取链上的交易数据呢,扫链同步器就是获取链上交易数据到本地环境上的一个核心组件。可以说,扫链同步器是一个交易所业务系统的核心驱动引擎。
在之前的开发步骤中,我们实现了交易的同步器,负责将区块链上的区块扫描下来,并解析交易筛选出与我们交易所内所有项目方有关的地址,放到一个同步管道中。(属于生产者的角色)在这步的开发中,我们将实现一个消费者角色,也就是交易的发现器。
在交易所的业务中,有充值业务,那自然也会有提现业务。在上一讲中,我们在交易的发现器中处理了充值业务,而在这一讲中,我们将会来处理提现业务。
归集业务、热转冷业务、冷转热业务在我们交易所中,可以将其归为一大类。因为这类的交易,只需要交易所掌控的地址之间进行交互集合,无须与外部地址进行交易(充值、提现需要和外部地址进行交互)所以,我们称这类业务为Internal内部交易。
在交易所钱包中,回滚是必须要考虑的一件事情。因为去中心化网络的不能由中心化节点控制。所以在多个矿工同时挖出新区块的时候,会形成临时分叉。但是出现分叉又必然回归到主链中,因为无论怎么分叉,总会有一条链是最长的。区块链中,只会承认长的那条链,而短的那条链中的交易,会被抛弃或重组。
通知业务指得是,交易所钱包将交易的状态变更情况通知上层调用者,告知他们某笔交易的状态如何。
经过这么长时间,我们钱包业务层的业务拆解总算是完成了。前面1-7讲我们分析了钱包业务层的框架搭建、区块同步器、交易发现器、提现、归集、内部交易、回滚和通知业务。
在区块链的世界中,我们通常不会仅拥有一个链上地址,而是常常会拥有许多的地址身份。而每一个地址身份又必须对应着一个私钥。那么,这么多私钥,我们作为人类是很难有效的管理起来的,很容易丢失。那么,助记词这一个东西,就是用来帮助我们人类来管理这么多私钥的一个东西。
以图为主:大部分逻辑将以流程图方式展现。
图文结合:文字将用来讲解基础概念和描述流程图。
最小代码:每个独立业务将抽离出极简代码的实现,方便理解业务逻辑。
开发语言:大多数程序代码以 Go 、Typescript展示。
PS:文章过于硬核,已下架。拆解详情请联系 the-web3 社区。
我的微信:cola_ocean
小白专享-图解以太坊编程