智能合约语言(eDSL)—— 并行化方案——调度算法

3、调度算法

处理区块的时候,我们会同时启动多个线程去执行多个交易,这个时候我们需要一个良好的调度策略,来决定当前的线程是应该执行交易还是验证交易、提前结束还是立刻重新执行交易等,只有有一个良好调度策略才能保证所有交易都稳定有序的执行;

线程数量

这是一个不太容易确定的变量,因为这不单单和机器的核数有关,也与我们需要处理的而区块有关系;由于我们是处理计算类型的任务,所以肯定不会使用tokio这种类似协程的轻量级线程,所以与核数又密切关系;如果我们处理的区块中,交易依赖程度很高,那么大量的并行时,重复执行的概率肯定非常大;基于上述两者的考虑,我们可以选择机器的最大核数80%或者(txs-dep_txs)/2,选择较大的一个值;

任务划分

在并行处理交易的时候,算法需要调度的任务并不是只有执行交易这一种,还有一种任务是验证交易,这是因为我们并行的执行交易,不能保证执行完的交易,它依赖的状态都是正确的,所以需要进行验证,如果出现错误,可能就需要重新执行与验证;所以我们需要调度的任务有两种类型,执行和验证,下面我们分别讲一下:

相关推荐

  1. 智能合约语言eDSL)—— 并行方案

    2024-07-21 02:18:08       25 阅读
  2. 智能合约语言eDSL)—— 测试

    2024-07-21 02:18:08       38 阅读
  3. 智能合约中外部调用漏洞

    2024-07-21 02:18:08       30 阅读
  4. 智能楼宇智慧系统解决方案

    2024-07-21 02:18:08       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 02:18:08       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 02:18:08       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 02:18:08       45 阅读
  4. Python语言-面向对象

    2024-07-21 02:18:08       55 阅读

热门阅读

  1. 跨平台webSocket模块设计技术解决方案

    2024-07-21 02:18:08       17 阅读
  2. Angular之store全局状态管理 浅学

    2024-07-21 02:18:08       19 阅读
  3. 暗网与深网的技术原理、应用及社会影响探究

    2024-07-21 02:18:08       16 阅读
  4. Spring Cloud Gateway 响应数据加密

    2024-07-21 02:18:08       20 阅读
  5. HTTP爬虫IP流量和数量计费模式选择指南

    2024-07-21 02:18:08       19 阅读
  6. PHP项目开发流程概述

    2024-07-21 02:18:08       16 阅读
  7. Go知识点记录

    2024-07-21 02:18:08       20 阅读