基于加密数字资产云尊币技术解析Word文档下载推荐.docx
- 文档编号:17997237
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:14
- 大小:260.09KB
基于加密数字资产云尊币技术解析Word文档下载推荐.docx
《基于加密数字资产云尊币技术解析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于加密数字资产云尊币技术解析Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
下表分别是Ledgers和Transactions表结构。
1、1关系型数据库(sqlite)的特性
关系型数据库(sqlite)诞生于2000年5月。
作为一个自包含的、基于文件的数据库,SQLite提供了非常出色的工具集能够处理所有类型的数据,与托管在服务器上基于进程的关系型数据库相比它的约束更少,也更易用。
这是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了。
它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快,sqlite还具
有以下特性:
•零配置,无需安装和配置
sqlite的核心引擎本身不依赖第三方的软件,使用它也不需要“安装”。
所以在部署的时候能够省去不少麻烦。
•储存在单一磁盘文件中的一个完整的数据库
数据库中所有的信息(比如表、视图、触发器、等)都包含在一个文件内。
这个文件可以copy到其它目录或其它机器上,也照用不误。
•数据库文件可以在不同字节顺序的机器间自由共享
sqlite支持多种系统,除了主流操作系统,QLite也支持了很多冷门的操作系统。
例如对很多嵌入式系统(比如Android、WindowsMobile、Symbin、Palm、VxWorks等)的支持。
SQLite生成的数据库文件可以在各种智能设备进行移植,为云尊币普及到其他智能设备提供了基础。
•足够小,全部源代码大约几百KB,能够实现在轻便的智能设备中运行。
•比目前流行的大多数数据库对数据的操作要快。
1、2sqlite数据库工作原理
qlite主要由7个构件子系统(也就是模块)组成,这些模块被分割为前端解析系统和后端引擎。
前端:
前端预处理应用程序传递过来的SQL语句和SQLite命令。
对获取的编码分析,优化,并转换为后端能够执行的SQLite内部字节编码。
前端可分为三个模块。
•标示分析(Tokenizer):
将输入的SQL语句分成标识符。
•语法分析(Parser):
解析器分析通过标识器产生的标识分析语句的结构,并且得到一颗语法树。
解析器同时也包含了重构语法树的优化器,因此能够找到一颗产生一个高效的字节编码程序的语法树。
•代码生成器(CodeGenerator):
代码生成器遍历语法树,并且生成一个等价的字节编码程序,前端实现了sqlite3_prepareAPI函数。
后端:
后端是用来解释字节编码程序的引擎。
该引擎做的才是真正的数据库处理工作。
后端部分由四个模块组成。
•虚拟机(VM):
VM模块是一个内部字节编码语言的解释器。
它通过执行字节编码语句来实现SQL语句的工作。
它是数据库中数据的最终的操作者。
它把数据库看成表和索引的集合,而表和索引则是一系列的元组或者记录。
•B/B+树:
B/B+树模块把每一个元组集组织进一个一次排好序的树状数据结构中,表和索引被分别置于单独的B+和B树中。
该模块帮助VM进行搜索,插入和删除树中的元组。
它也帮助VM创建新的树和删除旧的树。
•页面调度程序(pager):
页面调度程序模块在原始文件的上层实现了一个面向页面的数据库文件抽象。
它管理B/B+树使用的内存内缓存(数据库页的),另外,他也管理文件的锁定,并用日志来实现事物的ACID属性。
•操作系统交界面(systeminterface):
操作系统界面模块提供了对应于不同本地操作系统的统一交界面,后端实现了sqlite3_bind_*,sqlite3_setp,sqlite3_coloumn_*,sqlite3_reset和sqlite3_finalizeAPI函数。
关系型数据库的特点能够满足云尊币在轻便智能设备中运行的要求,并且能够在多种技术架构的的操作系统中进行移植,而无需很大的改动,这保证了云尊币在普通群体的能够快速的推广和普及。
2、加密算法
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码。
目前区块链一般常用的加密算法有对称加密、非对称加密、公私匙、Hash算法等
等。
对称加密:
对称加密是最快速、最简单的一种加密方式,加密(encrypTIon)与解密(decrypTIon)用的是同样的密(secretkey)。
对称加密通常使用的是相对较小的密钥,一般小于256bit。
密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。
非对称加密:
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(publickey)和私钥(privatekey)。
私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。
非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。
私钥(privatekey):
非公开,是一个256位的随机数,由用户保管且不对外开放。
私钥通常是由系统随机生成,是用户账户使用权及账户内资产所有权的唯一证明,其有效位长足够大,因此不可能被攻破,无安全隐患。
公钥(publickey):
可公开,每一个私钥都有一个与之相匹配的公钥。
ECC公钥可以由私钥通过单向的、确定性的算法生成,目前常用的方案包括:
secp256r1(国际通用标准)、secp256k1(比特币标准)和SM2(中国国标)Photonchain控制链与初始数据链选择secp256r1作为密钥方案。
Hash算法:
通常Hash算法是指安全散列算法SHA(SecureHashAlgorithm),该算法是美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码散列函数,包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512等变体。
目前比特币采用SHA-256算法。
Photonchain除PoW外,其余Hash算法均指SHA-256。
云尊币在此基础上进行了改进,使用的同态加密是一种无需对加密数据进行提前解密就可以执行计算的方法。
它提供了一种急需的方法,能够在原有基础上使用区块链技术。
通过使用同态加密技术在区块链上存储数据可以达到一种完美的平衡,不会对区块链属性造成任何重大的改变。
也就是说,区块链仍旧是公有区块链。
然而,区块链上的数据将会被加密,因此照顾到了公有区块链的隐私问题,同态加密技术使公有区块链具有私有区块链的隐私效果。
2、1同态加密算法处理过程
如图3所示,主要是对私有信息进行保护。
Alice有私有的函数fA和私有的信息XA,Bob把私有信息yB用私有公钥pkB加密得到E(y)发送给Alice,Alice用自己的私有函数fA加密私有信息XA和E(yB),由于同态性质,函数fA被隐藏,而Bob获得E(fA(XA,yB))。
Bob通过私有的私钥加密D(E(fA(XA,yB)))=fA(XA,yB)。
如图4所示,主要是对私有的操作函数进行保护。
Alice有私有的函数以,并用私有公钥pkA加密函数fA发送给Bob,Bob根据私有信息XB计算E(fA)(XB),由于同态性质,因此隐藏了Bob的信息XB,得到E(fa(xb)),并发送给Alice,Alice用私钥解密获得fA(XB)。
同态加密技术不仅提供了隐私保护,它同样会允许随时访问公用区块链上的加密数据进行审计或其他目的。
换句话说,使用同态加密在公用区块链上存储数据将能够同时提供公有和私有区块链的最好的部分。
如果E为针对funcTIon_a的全同态函数,即
其中,加密操作为E,明文为m,加密得e,如果对于任意复杂明文操作funcTIon_a,都能针对E构造出相应的function_b。
那么,E就是一个针对function_a的同态加密算法,则称E为针对function_a的全同态加密算法。
全同态加密的目的在于找到一种能在加密的数据上进行任意数量的加法和乘法运算的加密算法,使得对加密数据进行某种操作所得到的结果恰好等于对加密前的数据进行预期操作再加密后得到的密文。
3、Netty构建高性能高可用的去中心化网络
3、1Netty的I/O模型
基于非阻塞I/O实现,底层依赖的是JDKNIO框架的Selector。
Selector提供选择已经就绪的任务的能力。
简单来讲,Selector会不断地轮询注册在其上的Channel,如果某个Channel上面有新的TCP连接接入、读和写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合,进行后续的I/O操作。
一个多路复用器Selector可以同时轮询多个Channel,由于JDK1.5_update10版本(+)使用了epoll()代替传统的select实现,所以它并没有最大连接句柄1024/2048的限制。
这也就意味着只需要一个线程负责Selector的轮询,就可以接入成千上万的客户端,这确实是个非常巨大的技术进步。
使用非阻塞I/O模型之后,Netty解决了传统同步阻塞I/O带来的性能、吞吐量和可靠性问题。
3、2线程调度模型
常用的Reactor线程模型有三种,分别如下:
Reactor单线程模型:
Reactor单线程模型,指的是所有的I/O操作都在同一个NIO线程上面完成。
对于一些小容量应用场景,可以使用单线程模型。
Reactor多线程模型:
Rector多线程模型与单线程模型最大的区别就是有一组NIO线程处理I/O操作。
主要用于高并发、大业务量场景。
主从Reactor多线程模型:
主从Reactor线程模型的特点是服务端用于接收客户端连接的不再是个1个单独的NIO线程,而是一个独立的NIO线程池。
利用主从NIO线程模型,可以解决1个服务端监听线程无法有效处理所有客户端连接的性能不足问题。
事实上,Netty的线程模型并非固定不变,通过在启动辅助类中创建不同的EventLoopGroup实例并通过适当的参数配置,就可以支持上述三种Reactor线程模型。
在大多数场景下,并行多线程处理可以提升系统的并发性能。
但是,如果对于共享资源的并发访问处理不当,会带来严重的锁竞争,这最终会导致性能的下降。
为了尽可能的避免锁竞争带来的性能损耗,可以通过串行化设计,即消息的处理尽可能在同一个线程内完成,期间不进行线程切换,这样就避免了多线程竞争和同步锁。
为了尽可能提升性能,Netty采用了串行无锁化设计,在I/O线程内部进行串行操作,避免多线程竞争导致的性能下降。
表面上看,串行化设计似乎CPU利用率不高,并发程度不够。
但是,通过调整NIO线程池的线程参数,可以同时启动多个串行化的线程并行运行,这种局部无锁化的串行线程设计相比一个队列-多个工作线程模型性能更优。
3、3序列化方式
影响序列化性能的关键因素总结如下:
序列化后的码流大小(网络带宽占用)、序列化&
反序列化的性能(CPU资源占用)
并发调用的性能表现:
稳定性、线性增长、偶现的时延毛刺等对Java序列化和二进制编码分别进行性能测试,编码100万次,测试结果表明:
Java序列化的性能只有二进制编码的6.17%左右。
Netty默认提供了对GoogleProtobuf的支持,通过扩展Netty的编解码接口,用户可以实现其它的高性能序列化框架,例如Thrift的压缩二进制编解码框架。
不同的应用场景对序列化框架的需求也不同,对于高性能应用场景Netty默认提供了Google的Protobuf二进制序列化框架,如果用户对其它二进制序列化框架有需求,也可以基于Netty提供的编解码框架扩展实现。
3、4采用Netty框架的原因
1)设计
·
统一的API,适用于不同的协议(阻塞和非阻塞)
基于灵活、可扩展的事件驱动模型
高度可定制的线程模型
可靠的无连接数据Socket支持(UDP)
2)性能
更好的吞吐量,低延迟、
更省资源
尽量减少不必要的内存拷贝
3)安全
完整的SSL/TLS和STARTTLS的支持能在Applet与Android的限制环境运行良好
4)健壮性
不再因过快、过慢或超负载连接导致OutOfMemoryError不再有在高速网络环境下NIO读写频率不一致的问题
5)易用
完善的JavaDoc,用户指南和样例
简洁简单
仅信赖于JDK1.5
Netty框架能够为云尊币带来更好的兼容性、安全性、稳定性可操作性,为云尊币多功能性的应用快速读写提供基础,目前Netty已经在很多不同的领域取得了良好的效果。
大数据领域:
经典的Hadoop的高性能通信和序列化组件Avro的RPC框架,默认采用Netty进行跨节点通信,它的NettyService基于Netty框架二次封装实现。
大数据计算往往采用多个计算节点和一个/N个汇总节点进行分布式部署,各节点之间存在海量的数据交换。
由于Netty的综合性能是目前各个成熟NIO框架中最高的,因此,往往会被选中用作大数据各节点间的通信。
企业软件:
企业和IT集成需要ESB,Netty对多协议支持、私有协议定制的简洁性和高性能是ESBRPC框架的首选通信组件。
事实上,很多企业总线厂商会选择Netty作为基础通信组件,用于企业的IT集成。
通信行业:
Netty的异步高性能、高可靠性和高成熟度的优点,使它在通信行业得到了大量的应用。
4、云尊币共识机制
云尊币采用PoW+PoS的混合共识机制,能够将受众群体最大化。
持有云尊币的用户与矿工均可以参与到投票中,共同参与重大决定,数字资产持有者与矿工都可以影响预先编制好的更新,而这才是真正的去中心化。
4、1POW工作量证明的过程
POW是一个经过广泛测试,并具有抗攻击性和拓展性的解决方案。
我们可以把工作量证明的步骤大致归纳如下:
生成Coinbase交易,并与其他所有准备打包进区块的交易组成交易列表,通过MerkleTree算法生成MerkleRootHash
把MerkleRootHash及其他相关字段组装成区块头,将区块头的80字节数据(BlockHeader)作为工作量证明的输入
不停的变更区块头中的随机数即nonce的数值,并对每次变更后的的区块头做双重SHA256运算(即SHA256(SHA256(Block_Header))),将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。
该过程可以用下图表示:
4、2权益证明(ProofofStake)
在工作量证明中,各个节点协助创建和验证新的区块。
奖励与贡献给整个网络的算力资源成正比。
当然也会出现恶意攻击或者恶意欺骗其他节点的风险出现。
权益证明系统试图先保留工作量证明的好处,同时消除一些潜在的安全问题。
权益证明机制可以辅助加强工作量证明,而不是取代它。
其可以简单地作为添加和批准新区块的附加步骤。
•PoS背后的理性逻辑
(1)使权益所有者能够通过投票决定记账人
(2)最大化权益所有者的红利
(3)最小化保证网络安全的消耗
(4)最大化网络的性能
(5)最小化运行网络的成本
云尊币这样设计的好处,权益所有者拥有控制权,PoS的根本特性是权益所有者保留了控制权,从而使系统去中心化。
可以提高区块链数字资产的安全性,因为工作量证明可能存在51%攻击的潜在风险,控制大部分算力资源的人将可以轻易控制整个网络。
在技术上层面上,云尊运用了对区块的投票交易机制(一种灵活且实用的PoS机制),并把具备双层链结构和两极挖矿思想的加强版PoW机制与该PoS机制进行有机结合从而得到新型混合共识机制,在该新型混合共识中,keyBlock必须获得足够的赞同票才会被视为合法,因此PoW和PoS都能参与系统共识并发挥重要作用。
5、云尊币解决区块链网络慢的弊端
云尊币是如何解决区块链网络慢的呢?
通过“RingBuffer”和“Disruptor”来实现,
Disruptor它是一个开源的并发框架,能够在无锁的情况下实现网络的Queue并发操作,Disruptor为什么会这么快?
(1)锁的缺点
Disruptor根本就不用锁。
取而代之的是,在需要确保操作是线程安全的(特别是,在多生产者的环境下,更新下一个可用的序列号)地方,我们使用CAS(CompareAndSwap/Set)操作。
CAS操作比锁消耗资源少的多,因为它们不牵涉操作系统,它们直接在CPU上操作。
所有访问者都记录自己的序号的实现方式,允许多个生产者与多个消费者共享相同的数据结构。
在每个对象中都能跟踪序列号(ringbuffer,claimStrategy,生产者和消费者),加上神奇的cachelinepadding,就意味着没有为伪共享和非预期的竞争。
(2)缓存行填充
CPU来执行所有运算和程序。
主内存(RAM)是你的数据(包括代码行)存放的地方。
Disruptor的目标是尽可能多的在内存中运行,如果你访问一个long数组,当数组中的一个值被加载到缓存中,它会额外加载另外多个。
因此你能非常快地遍历这个数组。
事实上,你可以非常快速的遍历在连续的内存块中分配的任意数据结构。
(3)伪共享
(4)揭秘内存屏障
内存屏障作为另一个CPU级的指令,没有锁那样大的开销。
内核并没有在多个线程间干涉和调度。
但凡事都是有代价的。
内存屏障的确是有开销的——编译器/cpu不能重排序指令,导致不可以尽可能地高效利用CPU,另外刷新缓存亦会有开销。
Disruptor的实现对序列号的读写频率尽量降到最低。
对volatile字段的每次读或写都是相对高成本的操作。
也应该认识到在批量的情况下可以获得很好的表现。
我们使用Disruptor和RingBuffer。
这种数据结构,是因为它给我们提供了可靠的消息传递特性。
这个理由就足够了,不过它还有一些其他的优点。
首先,RingBuffer比链表要快,因为它是数组,而且有一个容易预测的访问模式。
这很不错,对CPU高速缓存友好(CPU-cache-friendly)-数据可以在硬件层面预加载到高速缓存,因此CPU不需要经常回到主内存RAM里去寻找RingBuffer的下一条数据。
第二点,RingBuffer是一个数组,你可以预先分配内存,并保持数组元素永远有效。
这意味着内存垃圾收集(GC)在这种情况下几乎什么也不用做。
此外,也不像链表那样每增加一条数据都要创建对象-当这些数据从链表里删除时,这些对象都要被清理掉。
技术专区
火币将推出稳定币解决方案HUSD,来解决稳定币可能出现的币值波
金融市场的生态系统是如何能从区块链技术中获益的
区块链有助于确保用户数据和相关交易的隐私安全
Ticketmaster将采用区块链技术对机票证条码进行加密,防止伪造票
-全文完-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 加密 数字 资产 云尊币 技术 解析