一、引言
Anychain是一个支持离线交易的Rust语言钱包解决方案,可应用于各种平台和设备。在 iOS 端,我们可以看到一个示例应用程序,它能够执行以下功能:发送数字资产、接收资产、查看余额、查看钱包地址。此外,它还支持各种Token(例如 BTC、ETH、USDT 等)。这个示例应用程序以 APP 的形式呈现,内部集成了 AnyChain SDK。
AnyChain SDK 不仅仅局限于移动端应用,它具有广泛的跨平台应用能力。除了支持移动应用外,同时兼容浏览器以及各种操作系统,包括 Windows 和 macOS。此外,Anychain SDK还支持嵌入式设备,如硬件安全模块和芯片组。
二、为什么需要Anychain SDK
(一)钱包是Web3的基石
为什么我们的团队决定构建 AnyChain SDK 呢?这是因为钱包在整个生态系统中扮演着至关重要的角色。用户需要通过钱包进行各种链上交互,例如发送和接收数字资产,进行比特币或其他加密货币的转账等等。此外,钱包还负责安全存储和管理用户的资产。因此,钱包是一个生态系统中不可或缺的组成部分。
(二)跨平台需求
另一个原因是跨平台的需求。我们不想分散精力在多个独立的应用开发团队上,涵盖了 iOS、Android、PC、Mac 等各种平台。我们不希望为不同的平台建立庞大的开发团队。相反,我们选择了构建一个轻量级的基础设施,以满足跨平台需求。随着区块链和数字资产的不断增加,用户需要一种能够跨平台和跨端管理不同资产的解决方案。因此,我们在设计初期将其定位为高度可扩展的体系,可以适配不同平台并支持多条区块链。这使得我们的系统非常灵活和高效。
(三)回馈社区
第三点是我们愿意回馈社区。我们在这个领域已经深耕多年,积累了丰富的经验和知识,包括加密算法等。我们为亚马逊等公司贡献了不少版本的实现。因此,我们希望能够推动技术的发展。为了实现这一目标,我们将核心的 AnyChain SDK 部分开源,以便开发者可以自由使用和定制。
三、Anychain SDK应用场景
(一)区块链交易处理
至于应用场景,首先,我们支持常见的链上交易处理,因为在区块链生态中,最常见的用例就是链上的交易,如数字资产的发送和接收,以及智能合约的执行。Anychain提供安全的接口和功能,允许用户进行安全的交易处理,包括发送和接收资产,以及智能合约的执行。这是我们首要支持的应用场景之一。
(二)数字资产管理
对于个人用户来说,发送和接收数字资产是最常见的用例。但对于企业用户和机构来说,情况可能会更复杂。企业用户通常需要安全托管资产,并确保安全管理和跟踪余额、转账和代币等操作。因此,企业用户也是 AnyChain SDK 中重要的用户群体之一。我们提供了一套机制,支持他们在安全的环境中管理和跟踪资产,以及进行转账和收款等操作。
(三)物联网设备安全和数据传输
AnyChain SDK 还可以用于物联网设备,也称为硬件钱包或嵌入式设备。这是因为不是每个人都信任中心化的机构来管理他们的资产,尤其是考虑到一些大机构曾经发生的问题。因此,一些人选择使用硬件钱包来管理和保护自己的资产。这种方式提供了更高的安全性,确保资产不会轻易受到黑客攻击,而不会泄露设备上的密钥。通过 AnyChain SDK,我们提供了安全的身份验证和授权机制,以确保交易的安全性。这有助于防止黑客随意获取设备上的密钥,从而保护用户的资产。
四、Anychain SDK的构成
AnyChain SDK 由两个主要部分组成。第一部分是对不同区块链和令牌的支持,包括 BTC、ETH 等主要的区块链和代币。我们将基本的链支持构建为一个模块,并不断扩展以适应新的区块链和令牌。
第二部分是密钥管理。在这部分中,我们整合了与密钥助记词、钱包组织、多账户层级结构等相关的内容。我们整合了诸如 BIP32、BIP39 和 BIP44 等标准,并将它们集成到 SDK 中,以更好地服务我们的内部需求。
(Anychain SDK的构成)
BIP-32(分层确定性钱包):BIP-32定义了从单个根密钥创建密钥分层结构的标准。这允许生成无限数量的子密钥,可用于不同的目的,如接收资金或签署交易。BIP-32提供了一种方便且安全的方式来管理多个加密货币账户和地址。
BIP-39(用于生成确定性密钥的助记码):BIP-39规定了一种从中可以派生一组确定性密钥的助记码短语的标准方法,也称为种子短语或恢复短语。助记码短语由一系列单词组成,通常为12个或24个,从预定义列表中选择。这个助记码短语可以用于轻松而安全地备份和恢复加密货币钱包。BIP-39还包括一个校验和,用于检测助记码短语中的错误。
BIP-44(确定性钱包的多账户层次结构):BIP-44定义了在确定性钱包中组织多个账户的层次结构。每个账户都有自己的地址链,从而实现更好的隐私和资金组织。BIP-44还指定了一组标准化的币种类型,确保不同钱包和服务之间的兼容性和互操作性。
五、Anychain对嵌入式设备的支持
目前,我们已经支持常见的平台,包括 iOS、安卓和 PC。此外,我们还支持嵌入设备,如硬件钱包。
硬件钱包将私钥存储在离线设备中,与互联网隔离,有效防止了黑客攻击和恶意软件的风险。私钥不会离开硬件设备,在进行交易时进行本地签名,确保私钥的安全性和机密性。硬件钱包通常具有物理防护机制,例如使用密码学芯片和防窃取封装,以防止私钥被非法复制或篡改。由于私钥存储在离线设备中,硬件钱包能够抵御网络攻击,如钓鱼、恶意软件或网络钓鱼网站。
Anychain支持TEE环境
除了嵌入设备,我们还支持可信执行环境(TEE)。这种环境提供了一个受信任的区域,通常在ARM处理器或亚马逊云等地方实现,可以用于生成密钥和签发交易,包括转账和智能合约。TEE通常适用于服务器端应用,即使黑客登录到服务器,他们也无法直接访问到密钥,因为密钥受到了硬件的保护。目前,我们也在支持可信执行环境,并贡献了可信环境镜像。这些可信执行环境提供了额外的安全性,确保了密钥和交易得到充分的保护。
六、Anychain为什么选用Rust
我们的初始想法是要做一个跨平台的SDK,在选择编程语言时,主要是平台支持,性能和安全三个方面的权衡考量。
首先,我们需要一种编程语言,可以在多个平台上完全移植。无论是在iOS、安卓、还是Linux等平台上,我们都需要能够构建并调用我们的代码库。我们还希望能够将其移植到嵌入式设备,如ARM32等。其次,我们不希望我们的 SDK 有明显的性能瓶颈或运行时的停顿。我们希望它能够具有高效的执行效率、低功耗和高性能。最后,我们关注内存安全和线程安全性。不管是操作系统还是其他设备,高危漏洞进程发生在内存安全当中。因此,我们需要一种编程语言能够提供强大的内存安全支持。
综上所述,选择Rust编程语言是因为它在多平台支持、性能和内存安全性方面提供了良好的平衡。
七、跨平台开发优势
跨平台开发对于项目团队而言,第一个优点就是快。适用于小团队,可以快速在各个平台构建MVP以进行验证。另一个优势是单一的代码库,可以用于不同平台。例如,我们可以使用Android开发工具包构建Android应用,使用Xcode构建苹果应用,使用Linux构建工具构建Linux应用,然后将它们整合到Web Server中。这意味着我们可以使用相同的代码库构建不同的应用。
根据目前的数据,我们成功地将应用程序构建为小于17M的Docker镜像,这在某些情况下比其他框架要小得多。Anychain WebAssembly的大小在81k,对比web3.js会引入一个29M大小的包,开发项目打包时候可能会消耗几个G的内存空间。对于STM32,MAM小于100K,ROM小于10M。对于iOS,打包程序小于7.4M。
八、展望未来
Anychain是Cregis去中心化战略的重要组成部分,100%由RUST语言编写,是类似L3的模块化组件,具有多链支持、全平台适配、代码优雅(二进制发布体积<1Mb,剪裁后可<80Kb)等优点。目前已经接入BTC、LTC、ETH、BNB、Polkadot、Polygon、XRP、FIL、DOGE、TRON、MINA和NEO等公链。
Cregis 计划逐步让WaaS/SaaS服务通过AnyChain+Layer2network+L3module实现去中心化,让Web3用户可以真正自由选择最合适自己的加密资产管理工具。