美文网首页
开源区块链钱包Cashbox技术实现(二)

开源区块链钱包Cashbox技术实现(二)

作者: 5077e6632314 | 来源:发表于2020-07-25 16:33 被阅读0次

开源区块链钱包Cashbox技术实现(二)_腾讯视频

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

相关文章

  • 开源区块链钱包Cashbox技术实现(二)

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

  • 区块链数字货币钱包

    区块链钱包是数字资产的流量入口,也是“区块链世界”基础设施 由于区块链底层技术开源,区块链钱包产品很容易同质化。 ...

  • 开源区块链钱包Cashbox市场答疑

    1、简单介绍一下 Cashbox Cashbox是一款去中心化的钱包,它目前支持ERC20代币的转入、存储和转出,...

  • 区块链钱包Cashbox技术接口讲解

    Api描述文档 公有参数描述(所有api均需要): 统一返回值结构如下: type Status struct {...

  • 【技术工坊43期】QBAO何鹏飞:数字钱包的技术实现

    1. 活动基本信息 1)题目:【区块链技术工坊43期】数字钱包的技术实现 2)议题:Qbao Network钱包自...

  • aaa

    比特币地址生成算法详解 比特币钱包地址生成代码-go实现 区块链以太坊以及hyperledger总结区块链技术 默...

  • 区块链钱包开发底层数据库是怎样的?

    区块链钱包开发底层数据库是怎样的?广义的区块链技术,必须包含点对点网络设计、加密技术应用、分布式算法的实现、数据...

  • 2018-11-05

    Vpay钱包系统开发技术优势有哪些 Vpay区块链技术开发 Vpay区块链技术开发...Vpay区块链模式开发、V...

  • QKbill 钱包现已在 GitHub...

    QKbill 钱包现已在 GitHub 平台开源:网页链接 ,欢迎各大区块链项目方与区块链开发者使用并改进此钱包的...

  • 币汇钱包跨链技术新探索

    区块链钱包最近成为区块链行业新的舆情热点和技术挖掘新方向。区块链钱包就是帮忙我们在互联网区块链上生成私钥、公钥、生...

网友评论

      本文标题:开源区块链钱包Cashbox技术实现(二)

      本文链接:https://www.haomeiwen.com/subject/npkmlktx.html