区块链查询速度 区块链 速度

皕利分享 64 0

本篇文章主要给网友们分享区块链查询速度的知识,其中更加会对区块链 速度进行更多的解释,如果能碰巧解决你现在面临的问题,记得关注本站!

智慧谷区块链的运算速度

区块链速度问题

并⾏计算与热点账户

区块链区块链查询速度的运⾏速度会受多种因素影响,包括加密解密计算、交易⼴播和排序、共识算法多阶段提交的协作开销、虚拟机执⾏速度等,以及受CPU 核数主频、磁盘IO、⽹络带宽等硬件性能影响。

由于区块链是先天的跨⽹络的分布式协作系统,⽽且强调安全性、可⽤性、容错性、⼀致性、事务性,⽤较复杂的算法和繁琐的多参与⽅协作来获得去信任化、数据不可篡改以及交易可追溯等特出的功能优势,根据分布式的CAP原理,在同等的硬件资源投⼊的前提下,区块链的性能往往低于中⼼化的系统,其表现就是并发数不⾼,交易时延较明显。

根据分布式的CAP原理,在同等的硬件资源投⼊的前提下,区块链的性能往往低于中⼼化的系统,其表现就是并发数不⾼,交易时延较明显。 我们已经在多个⽅⾯对系统运⾏的全流程进⾏细致的优化,包括加密解密计算,交易处理流程,共识算法,存储优化等,使我们的区块链平台在单链架构时,运⾏速度达到了⼀个较⾼的性能⽔准,基本能满⾜⼀般的⾦融业务要求。

同时我们也意识到,对于⽤户数、交易量、存量数据较⼤或可能有显著增长的海量服务场景,对系统提出了更⾼的容量和扩展性要求,单链架构总是会遇到软件架构或硬件资源⽅⾯的瓶颈。

类似Fa bric的架构-分组

br ic

⽽区块链的系统特性决定,在区块链中增加节点,只会增强系统的容错性,增加参与者的授信背书等,⽽不会增加性能,只增加节点不能解决问题,这就需要通过架构上的调整来应对性能挑战,所以,我们提出了“并⾏计算,多链运⾏”的⽅案。

并⾏多链的架构基本思路是在⼀个区块链⽹络⾥,存在多个分组,每个组是⼀个完整的区块链⽹络,有独⽴的软件模块,硬件资源,独⽴完成机构间共识,有独⽴的数据存储。

平台提供了基础的分组的策略和实现、路由模块、并⾏多链的构建⼯具等,如何根据业务场景设计不同的分组,如根据机构维度,⽤户维度还是交易维度,甚⾄是时间维度等,都可以再进⾏灵活的设计和操作。

根据可定制的路由规则,参与到区块链⽹络的所有机构和⽤户,或者区块链⾥不同类型的交易,可以接⼊到不同的分组⾥,每个分组处理特定的⼀部分交易,当机构或⽤户数增加,交易量变⼤或者交易类型增加,都可以快捷的增加分组,并在路由策略⾥进⾏设定,将新增的流量分配到新的分组⾥。并⾏多链架构类似数据库的分库分表,或者互联⽹服务的分SET模型,理论上只要投⼊⾜够的资源,则系统能处理的流量没有上限,整个系统具有⾜够的弹性。

同时,⼀个区块链⽹络⾥的多个分组秉承逻辑和配置⾼⼀致性的原则,在商业规则、运营管理上都使⽤统⼀的策略,⽐如,每个分组上的智能合约是完全相同的,核⼼配置数据也是相同的,只有分组⾥的机构、⽤户以及交易类型有所不同。

或者,虽然因为分组间功能设计的差异,导致不同分组上的智能合约有所不同,如⼀些分组是处理⽤户在线交易,强调低时延性,其区块链查询速度他分组处理机构间的对账和清结算,关注批量数据处理,那么部署在这些分组上的智能合约会有所不同,但都会通过所有机构以及区块链的运营委员会共同确认,通过共识算法保证部署实施的⼀致性,公开性,不可篡改性。

与Fabric的通道配置chaincode类似

[图⽚上传失败...(image-bd8c12-1542642499169)]

在实现了区块链分组后,分组之间有可能出现互相发⽣交易的场景,实际上就是不同区块链系统之间的通信和交易,类似“跨链”的架构。在这个环节,需要关注的是分组间的通信可靠性,分布式事务完整性和⼀致性,以及分组之间可验证、不可篡改、可追溯的互信性和交易安全性。

热点账户

在此版本,我们根据⾦融业常见的“热点帐户”场景,提出了⼀种解决⽅案。

在很多⾦融交易场景⾥,可能会出现⼤量的独⽴⽤户帐户和少数集中的⼀个或多个热点帐户产⽣交易的情况,如⽤户往某个热卖中的商户付款,或者⽤户频繁从某个帐户中提现或者获取优惠券、积分或者其区块链查询速度他资产等,由于⽤户帐户数量较⼤,

相对来说,这些被集中访问的商户帐户,就被称为“热点帐户”。热点帐户在完成和⽤户的交易之外,还需要汇总所有的交易结果,计算总分帐,余额等,以便完成其特有的商业流程,如清结算等。

由于针对热点账户的交易量较⼤且所有⽤户都可能和它发⽣交易,我们考虑设计多个并⾏的交易链,⾸先将⽤户按照⼀定的性能模型分组,每个针对⽤户的分组⽽构建的独⽴的区块链组件,我们称为“⽤户交易链”。举例:预估为每个分组100万⽤户,5个分组能容纳500万⽤户(实际的每组能容纳的⽤户数需要根据业务场景实测评估),这样我们构建了5个“⽤户交易链”。

然后,热点帐户本⾝可以集中在⼀个热点账户的链上(也可以分配在某⼀个分组⾥),热点账户链主要⽤于准实时的汇总各“⽤户交易链”的账务,以管理热点账户的总分帐,如总收⼊,总⽀出,帐户准实时余额等。

为了⽀持⽤户和热点账户的交易,热点帐户在每个“⽤户交易链”上,都会设⽴⼀个影⼦户,⽤户在实时交易时,实际上是和“⽤户交易链”内的热点帐户影⼦户发⽣交易,每次交易都在⽤户交易链内部进⾏共识,不同的分组可以并⾏的进⾏交易计算,互不相关,⽤户和影⼦户之间的交易完成后,即意味着⽤户和热点帐户的交易完成。系统的容量和⽤户交易链的个数有关,⽤户交易链越多,系统容量越⼤,⽤户体验得到了保障。

在⽤户交易链上,热点帐户影⼦户⾥只保存该分组⾥的总分帐,即⼀部分⽤户进⾏交易后,影⼦户⾥产⽣的收⼊、⽀出等,⽤户交易链会定期构建⼀次链内账⽬清算交易,并向热点帐户链发起⼀次跨链汇总交易,热点帐户链接收到交易之后,会到⽤户交易链去验证交易发送者的⾝份、汇总交易的存在性、账⽬的真实性和准确性,验证成功后,在热点帐户链上继续进⾏账⽬计算和⼊账操作,流程结束。

整个过程会通过链间的中继,进⾏多次双向通信,且在不同的链上完整的执⾏共识确认。⽤户和影⼦户的交易可在⼀次共识的时间段内完成,时延较短,以满⾜⽤户体验。热点账户的总分帐计算为准实时完成,其时延取决于定时发起汇总交易的间隔,以及⽤户交易链和热点帐户链的共识时间。系统会保证⽤户交易链和热点帐户链之间的交易不错、不乱、不漏,具备事务⼀致性和完整性。

并⾏多链计算是⼀个基础的系统扩展⽅案,热点帐户的解决⽅案是⼀个场景性的实现,充分理解并⾏多链计算和跨链交易的实现后,可以针对有海量需求的各种⾦融交易场景,设计出不同的⽅案来,以解决具体的场景问题。

[图⽚上传失败...(image-d21c82-1542642499169)]

5.9

百度文库VIP限时优惠现在开通,立享6亿+VIP内容

立即获取

区块链速度问题

区块链速度问题

并⾏计算与热点账户

区块链的运⾏速度会受多种因素影响,包括加密解密计算、交易⼴播和排序、共识算法多阶段提交的协作开销、虚拟机执⾏速度等,以及受CPU 核数主频、磁盘IO、⽹络带宽等硬件性能影响。

由于区块链是先天的跨⽹络的分布式协作系统,⽽且强调安全性、可⽤性、容错性、⼀致性、事务性,⽤较复杂的算法和繁琐的多参与⽅协作来获得去信任化、数据不可篡改以及交易可追溯等特出的功能优势,根据分布式的CAP原理,在同等的硬件资源投⼊的前提下,区块链的性能往往低于中⼼化的系统,其表现就是并发数不⾼,交易时延较明显。

根据分布式的CAP原理,在同等的硬件资源投⼊的前提下,区块链的性能往往低于中⼼化的系统,其表现就是并发数不⾼,交易时延较明显。

怎样通过RPC命令实现区块链的查询

基本架构如下:

前端web基于socket.io或者REST实现,

后端加一层mongodb/mysql等数据库来代替单机leveldb做数据存储

目的应该是:

1. 加速查询

2. 做更高层的数据分析

3.做分布式数据库

思考:

这些online的查询固然可以方便我们的日常用, 那如何与相关应用集成呢? 我们是否可以通过简单的rpc命令实现同等的效果?

有几个用处:

1 . 大家都可以做自己的qukuai.com或blockchain.info的查询:)

2. 集成RPC命令到自己的店铺,收款后查询用

3. 集成到钱包应用

4. 其他应用场景

cmd分析:

根据高度height查block hash

./bitcoin-cli getblockhash 19999

00000000ba36eb929dc90170a96ee3efb76cbebee0e0e5c4da9eb0b6e74d9124

2. 然后根据block hash查block 信息

./bitcoin-cli getblock 00000000ba36eb929dc90170a96ee3efb76cbebee0e0e5c4da9eb0b6e74d9124

{

"hash" : "00000000ba36eb929dc90170a96ee3efb76cbebee0e0e5c4da9eb0b6e74d9124",

"confirmations" : 263032,

"size" : 215,

"height" : 19999,

"version" : 1,

"merkleroot" : "c1b09fa6bdc0b12b15cc1400d598ffed29dd33b2e282093a48646d1b7b380c98",

"tx" : [

"c1b09fa6bdc0b12b15cc1400d598ffed29dd33b2e282093a48646d1b7b380c98"

],

"time" : 1248291140,

"nonce" : 1085206531,

"bits" : "1d00ffff",

"difficulty" : 1.00000000,

"chainwork" : "00000000000000000000000000000000000000000000000000004e204e204e20",

"previousblockhash" : "000000006eb5c2799b0f5fafab6435daeecef8e7f609b731c9879c3f74f28c73",

"nextblockhash" : "00000000770ebe897270ca5f6d539d8afb4ea4f4e757761a34ca82e17207d886"

}

3. 根据tx查询单笔交易的信息:

没建index时,只能查询自己钱包的信息,若不是钱包的交易,则返回如下:

./bitcoin-cli getrawtransaction c1b09fa6bdc0b12b15cc1400d598ffed29dd33b2e282093a48646d1b7b380c98

error: {"code":-5,"message":"Invalid or non-wallet transaction id"}

那怎么办呢? 直接分析代码找原因:

// Return transaction in tx, and if it was found inside a block, its hash is placed in hashBlock

bool GetTransaction(const uint256 hash, CTransaction txOut, uint256 hashBlock, bool fAllowSlow)

{

CBlockIndex *pindexSlow = NULL;

{

LOCK(cs_main);

{

if (mempool.lookup(hash, txOut))

{

return true;

}

}

if (fTxIndex) {

CDiskTxPos postx;

if (pblocktree-ReadTxIndex(hash, postx)) {

CAutoFile file(OpenBlockFile(postx, true), SER_DISK, CLIENT_VERSION);

CBlockHeader header;

try {

file header;

fseek(file, postx.nTxOffset, SEEK_CUR);

file txOut;

} catch (std::exception e) {

return error("%s : Deserialize or I/O error - %s", __func__, e.what());

}

hashBlock = header.GetHash();

if (txOut.GetHash() != hash)

return error("%s : txid mismatch", __func__);

return true;

}

}

if (fAllowSlow) { // use coin database to locate block that contains transaction, and scan it

int nHeight = -1;

{

CCoinsViewCache view = *pcoinsTip;

CCoins coins;

if (view.GetCoins(hash, coins))

nHeight = coins.nHeight;

}

if (nHeight 0)

pindexSlow = chainActive[nHeight];

}

}

if (pindexSlow) {

CBlock block;

if (ReadBlockFromDisk(block, pindexSlow)) {

BOOST_FOREACH(const CTransaction tx, block.vtx) {

if (tx.GetHash() == hash) {

txOut = tx;

hashBlock = pindexSlow-GetBlockHash();

return true;

}

}

}

}

return false;

}

如何评价tokenview区块链浏览器?

还是比较好用的一款区块链浏览器,适合各个阶段的人使用,尤其是做数字货币的

区块链出块速度变慢了

区块链出块速度变慢了是因为网络中的每个节点都必须参与处理。目前区块链网络上的处理速度是非常慢的,如果网络中有一千个节点,那么一千个节点都必须参与处理网络中的每笔交易。

好比有一个一千人的圈子,为了账本的一致性,记录时需要在这圈子里通知一圈。说白了,也就是需要一个回执,由我告诉你我刚在账本里记录了一笔账,你得跟我记得一样。因此,光是消息通知就将花费大量的时间。

区块链特征

去中心化。区块链技术不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理。去中心化是区块链最突出最本质的特征。

开放性。区块链技术基础是开源的,除了交易各方的私有信息被加密外,区块链的数据对所有人开放,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。

独立性。基于协商一致的规范和协议类似比特币采用的哈希算法等各种数学算法,整个区块链系统不依赖其他第三方,所有节点能够在系统内自动安全地验证、交换数据,不需要任何人为的干预。

安全性。只要不能掌控全部数据节点的51%,就无法肆意操控修改网络数据,这使区块链本身变得相对安全,避免了主观人为的数据变更。

匿名性。除非有法律规范要求,单从技术上来讲,各区块节点的身份信息不需要公开或验证,信息传递可以匿名进行。

关于区块链查询速度和区块链 速度的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签: #区块链查询速度

  • 评论列表

留言评论