首页 > 技术 > 比特币网络查询|开源区块链钱包Cashbox技术实现(二)
scry  

比特币网络查询|开源区块链钱包Cashbox技术实现(二)

摘要:1、目前Cashbox?链相关功能实现是通过调用动态库来实现,什么是动态库,为什么我们要使用动态库?关于动态库,这个概念在C/C++的开发中比较常见,我们可以简

c720uLIAEBWodTAYPiOPIWPNPUOjZMVUfDwZ8nHs.png

1、目前Cashbox?链相关功能实现是通过调用动态库来实现,什么是动态库,为什么我们要使用动态库?

关于动态库,这个概念在C/C++的开发中比较常见,我们可以简单的理解为一个包含底层基础功能的集合,供上层应用直接调用,不用关心底层的具体实现。在终端设备应用开发中是比较常见的技术选择。结合Cashbox这款应用的特殊性,使??Flutter + 动态库这种技术实现?案,使得我们只需要做简单的接?适配就能够在Android、IOS、PC平台实现钱包管理功能,这样的选择降低了开发难度,同时也提?了开发的效率。

2、在Cashbox里面使用的编程语言是最近大热的rust,在选择编程语言的时候为什么会考虑使用Rust呢?

Rust是?门具有安全性、?性能,现代化特点的系统级编程语?,使?Rust开发的系统具有可靠的稳定性。就拿在Cashbox开发的动态库开发来说,与经常使?C/C++来对?,具有很明显的优势:

1)数据安全,是选择使用rust最重要的一个原因,按照rust使用规则编写,编译通过的代码在运?阶段不存在段错误,空指针、缓冲区溢出、数据竞争问题等,确保了程序的稳定性,可靠性,同时还有接近C/C++性能表现。

2)开发效率,rust作为?门现代化的系统级编程语?,具有类似Java等?向对象的特征。在熟悉了rust语言特性之后,能够明显的感受到Rust语?表达式具有很强的表现能?,良好的代码组织能够很?效的实现想要的效果;

3)跨平台编译,具有统一、简单的编译方式,只需要准备好需要编译的?标平台依赖库,使?Cargo相关命令,指定希望编译标平台参数,就能编译出满??标平台的?件;

4)依赖管理,通过Cargo.toml文件能够很?便的实现程序的依赖项以及版本管理;

关于Rust的特性还有很多,对于Rust还不了解的同学,可以去rust官方网站查看相关内容介绍。

3、现在Cashbox实现了哪些功能?

在?持链??,当前仅提供以太坊平台( 主链 和 Ropsten )相关功能,?持的功能如下所?

?1)助记词?成,?成满?Bip39格式的助记词,通过该助记词?成对应链上的地址,该地址满?BIP44协议 的要求;

?2)多钱包管理,允许?户同时创建多个钱包,钱包类型可以是测试钱包和正式钱包,其中每个钱包下允 许?户关联不同类型的链。在钱包管理中,提供?户私钥使?确认码修改、助记词导出、以及针对钱 包的增删改操作;

3)代币管理,针对以太坊平台存在各种ERC20代币,?户在不同的ERC20合约下可能拥有balance,允许?户根据??的实际情况关联相应的代币,同时提供针对代币的增删改操作;

4)交易构造,根据调?端传递的参数,能够构造满?链交易格式的签名数据,实现钱包的离线签名功能,签名后的结果调?端可以直接发送到以太坊?络中进?交易的验证;

5)转账交易解码,针对在转ETH或者ERC20 Token过程中填写的备注信息,提供解码功能让?户填写的信息能够在APP界?上正常显示;

6)信息签名,允许?户使???的私钥,对任何需要签名的场景进?签名;

需要说明的一点:动态库在使?阶段是没有任何?络相关操作,确保?户保存的助记词、相关密钥的安全。

4、对于不熟悉区块链的开发者,可能不是很明白什么是Bitcoin SPV,简单介绍一下Bitcoin SPV?

Bitcoin SPV指的是在bitcoin网络上进行简单支付验证。当前主流区块链用户账户数据保存,主要分为UTXO和账户模型。由于UTXO的特点造成了在bitcoin平台进行余额管理、交易构造的复杂性。在区块链的世界中,“去中?化”是我们比较关心的一个技术点。整个区块链的相关概念都是建?在去中?化的基础上。以bitcoin平台为例,链的所有节点构成了?个完整的P2P?络,在网络中每个节点(peer)都是对等。?个完整的bitcoin节点,它是由钱包,矿?,完整的区块数据和?络路由这四部分组成的。虽然不同的?络节点是对等的,但是他们承担的意义是不?样的。传统的bitcoin节点,因为要验证完整的数据,所以要存储?量的区块数据。截??前,?份完整的bitcoin区块数据已经超过300G。由于受限于网络状况、存储成本、设备计算性能等的限制,要在所有的设备上同步完整的区块数据是不现实的,?如我们常?的智能?机就不可能存储数百G的数据。SPV技术的出现就是为了解决上述问题。SPV只需要下载区块头,只需要下载几百M数据即可。SPV技术的使?,使得在?机上使用完全去中心化的bitcoin钱包成为可能。这种运?SPV节点的应?,我们称之为轻钱包。

Cashbox的去中?化钱包就是建?在上?完整的SPV概念之上的钱包。我们在实现的过程中,也研究过其他开源技术的钱包,存在?个普遍的问题不够去中?化,或者不符合SPV的概念。因为现有实现的钱包,存在UTXO验证的难点,所以?多数钱包是有??的后端的。传统钱包需要连接服务商的后端,后端则运?完整?特币节点来获取目标地址的UTXO数据。?我们的?特币钱包,则是完全基于之前提到的SPV概念,?需搭建??的后端,利?原?的?特币?络协议,钱包端仅需存储2、3百兆的SPV数据头。根据数据头中包含的信息,利??特币的?络协议,直接连接?络中的节点获取需要的数据,完全不需要完整的后端?持。

Cashbox的 SPV钱包,?旦运?,所有的数据完全存储在?户的?机上。我们不需要后端?持,所以?需和我们的后端数据交互,?户完全不?担???的隐私泄露。真正符合区块链世界中的去中?化概念。是我们在区块链上应?的探索和对区块链世界去中?化的探索。

5、Substrate是什么以及使用Substrate能够做什么?

?Substrate 是?个区块链开发框架,包含所有链都应该具备区块链系统的基础部分实现,?如:共识系统、 p2p连接管理、节点发现、交易?播、存储系统、交易池管理、RPC接?。

直接当节点使?,通过配置包含默认runtime的创世块json格式?件,就可以运?属于你??的区块链 节点;这种?式提供了最低的?由度,只允许你改变位于创世块?件中runtime模块可配置的参数,??如:balances, staking, block-period, fees, governance ;

使?Substrate frame,这种?式为你提供了极?的?由度,来编写??的区块链逻辑,允许你更改数据 类型,从模块库中选择通?模块,还可以添加?定义的模块。由于它是通过链上逻辑直接控制的,因 此可以在不触及区块?成逻辑的情况下进?很多更改。如果是这种情况,则可以使?现有的 Substrate??进制?件进?区块?成和同步。如果需要修改区块?成逻辑,则必须构建?个新的?进 制?件,包含新的区块?成逻辑,然后交由验证?使?。

?可以忽略整个FRAME,使?最终编译结果为WebAssembly的任何语?来重新设计和实现整个Runtime 逻辑。假如编译?成的WebAssembly?件能够与Substrate的区块认证逻辑兼容,则可以通过这个 WebAssembly?件构造新的创世块,并可以在基于rust编写的substrate客户端运?。如果不兼容,那么需要更改客户端的区块?成逻辑,甚?可能会更改区块头和区块序列化格式。

?就开发?作??,这是迄今为?使??Substrate 最为困难的?法,同时也为你提供了最?的?由度进?创新。当前?较热门的跨链平台波卡(PolkaWorld)就是使?Substrate框架之上进?开发的。

点此回看:开源区块链钱包Cashbox技术实现(一)

GitHub开源链接

区块链数据协议层:https://github.com/scryinfo/dp

组件Dot:https://github.com/scryinfo/dot

基础库:https://github.com/scryinfo/scryg

Cashbox:?https://github.com/scryinfo/cashbox

city_client:?https://github.com/scryinfo/city_client

city_server:?https://github.com/scryinfo/city_server

下载 Cashbox:??(也可点击阅读原文下载)

https://cashbox.scry.info/cashbox/api/apk/downloadlatest

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。