一种高效安全智能合约运行环境的方法技术

技术编号:25947407 阅读:25 留言:0更新日期:2020-10-17 03:39
本发明专利技术公开了一种高效安全智能合约运行环境的方法,用于解决现有区块链采用docker容器作为智能合约的运行环境,首先引入第三方程序就具有风险,还需要对docker进行安装和配置。合约需要打包成镜像落在硬盘上,容易被人篡改且镜像冷启动时间长的问题;该方法包括以下步骤:步骤一:智能合约上传至区块链后将其存储在加密账本中,当有交易请求时,先从加密账本中找到交易对应的智能合约,将数据读取出来并解密;本发明专利技术根据最小原则设计实现了一套轻量级的容器,通过内存传递智能合约,启动快速,运行稳定,安全可靠。

【技术实现步骤摘要】
一种高效安全智能合约运行环境的方法
本专利技术涉及计算机信息处理以及区块链
,具体为一种高效安全智能合约运行环境的方法。
技术介绍
在不使用容器的区块链中,智能合约直接运行在宿主机上,当合约运行出现问题时会影响宿主机,对宿主机上运行的其他程序造成影响,现有区块链采用docker容器作为智能合约的运行环境,首先引入第三方程序就具有风险,还需要对docker进行安装和配置。合约需要打包成镜像落在硬盘上,容易被人篡改且镜像冷启动时间长。
技术实现思路
本专利技术的目的就在于为了解决现有区块链采用docker容器作为智能合约的运行环境,首先引入第三方程序就具有风险,还需要对docker进行安装和配置。合约需要打包成镜像落在硬盘上,容易被人篡改且镜像冷启动时间长的问题,而提出一种高效安全智能合约运行环境的方法。本专利技术的目的可以通过以下技术方案实现:一种高效安全智能合约运行环境的方法,该方法包括以下步骤:步骤一:智能合约上传至区块链后将其存储在加密账本中,当有交易请求时,先从加密账本中找到交易对应的智能合约,将数据读取出来并解密;步骤二:通过Linux接口MemfdCreate创建匿名管道文件fd;再通过Linux接口Ftruncate设置匿名文件大小为上一步读取出数据的大小,通过Linux接口Mmap将申请一块系统内存d并映射到匿名管道文件fd,并设置可见可写权限;拷贝智能合约数据到系统内存d中;然后通过Linux接口Mprotect将系统内存d设置只可执行权限;步骤三:启动一个子进程执行bootstrap,并设置SysProcAttr属性中Cloneflags字段的值为CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWPID|CLONE_NEWNET|CLONE_NEWUSER,SysProcAttr属性通过Linux内核功能分别创建隔离的命名空间、隔离的IPC、隔离的PID、隔离的网络、和隔离的用户,同时以命令行参数的形式将匿名管道文件fd与交易参数传入;步骤四:bootstrap逻辑为先调用Linux接口Mount,重挂载根目录为私有,再调用Linux接口Chroot将根目录路径切换到指定tootfs,继而调用Linux接口Mount重新挂载proc目录;再而调用Linux接口Chdir,将当前目录切换到根目录;步骤五:bootstrap逻辑启动一个子进程,程序为匿名管道文件fd,即合约,并将命令行参数再以命令行参数的方式传给合约,合约程序将在隔离的环境内执行;步骤六:bootstrap逻辑等待合约子进程的退出,监听Linux系统信号SIGKILL、SIGSEGV、SIGTERM做出异常退出操作并将监听Linux系统信号的SIGKILL、SIGSEGV、SIGTERM发送至异常处理模块;步骤七:bootstrap程序在启动后将其pid加入cgroup组中进行资源使用限制;步骤八:rootfs通过docker镜像制作,下载并解压一个镜像,打开其中manifest.json文件,反序列化并读取layers字段,根据layers数组找到对应层级的tar文件并按数组顺序解压到同一个目录中。优选的,步骤七中所述的cgroup组为Linux内核提供功能,用来限制、控制与分离一个进程组群的资源,包括CPU、内存、磁盘输入输出,以文本文件形式设置,将pid写入文件,具体表现为:写入20000到/sys/fs/cgroup/cpu/container/cpu.cfs_quota_us文件中,再写入pid到/sys/fs/cgroup/cpu/container/tasks文件中。所述异常处理模块用于将Linux系统信号的SIGKILL、SIGSEGV、SIGTERM分配至对应的技术人员进行异常操作处理,具体分别步骤为:S1:将处理智能合约运行环境的技术人员标记为Rj,j=1、……、n;将技术人员的入职时间与当前时间进行时间差计算获取得到技术人员的入职时长并标记为Tj;S2:设定智能合约运行环境对应的资格证书均对应一个预设值,将技术人员的所有资格证书与智能合约运行环境对应的资格证书进行匹配获取得到对应的预设值,将匹配到的预设值进行求和获取得到预设总值并标记为Rj;S3:设定技术人员年龄为Nj,将技术人员的入职时长、预设总值和年龄进行去量化处理,取其数值;S4:利用公式获取得到技术人员的异处值Ej,其中b1、b2、b3和b4均为预设比例系数;Dj为技术人员的异常处理总次数;S5:异常处理模块将Linux系统信号的SIGKILL、SIGSEGV、SIGTERM发送至异处值最大的技术人员对应的电脑终端上,该技术人员通过电脑终端对Linux系统信号的SIGKILL、SIGSEGV、SIGTERM状况进行分析处理并填写原因分析报告;同时该技术人员的异常处理总次数增加一次。优选的,所述异常处理模块内还包括注册登录单元和存储单元;所述注册登录模块用于技术人员通过电脑终端提交注册信息进行注册并将注册成功的注册信息发送至存储单元内进行存储;注册信息包括姓名、邮箱、入职时间、年龄、证书名称和证书号。优选的,所述异常处理单元内还包括数据采集单元、数据分析单元和处理单元;所述数据采集单元用于采集异常处理模块发送inux系统信号的SIGKILL、SIGSEGV、SIGTERM的发送时刻及对应技术人员填写原因分析报告的填写时刻并将其发送至数据分析单元,所述数据分析单元用于接收发送时刻和填写时刻进行分析,具体分析步骤为:SS1:将发送时刻与填写时刻进行时间差计算获取得到技术人员的异常处理时长并标记为Hj,当异常处理时长大于设定阈值,则进行异常值计算;SS2:设定异常处理系数为Yg;g=1、……、n;且Y1<Y2<……<Yg;异常处理系数对应一个预设范围值,依次分别为(y1,y2]、……、(yg,yg+1];当异常处理时长在(yg,yg+1]范围内,则异常处理时长对应的异常处理系数为Yg;SS3:利用公式M=Hj×Yg获取得到技术人员的单次异常值M;SS4:将技术人员的所有单次异常值进行求和获取得到异常总处理值MZj;SS5:当异常总处理值大于设定阈值,则生成该技术人员的删除指令;数据分析单元将删除指令发送至处理单元;所述处理单元接收到删除指令后将该技术人员的注册信息从存储单元内进行删除。与现有技术相比,本专利技术的有益效果是:1、智能合约上传至区块链之后,存储在加密账本中;当有交易请求来的时候,先从账本中找到交易对应的智能合约,将数据读取出来并解密;通过Linux接口MemfdCreate创建匿名管道文件fd;通过Linux接口Ftruncate设置匿名文件大小为上一步读取出数据的大小;通过Linux接口Mmap将申请一块系统内存d并映射到fd,并设置可见可写权限;拷贝智能合约数据到d中;启动一个子进程执行本文档来自技高网...

【技术保护点】
1.一种高效安全智能合约运行环境的方法,其特征在于,该方法包括以下步骤:/n步骤一:智能合约上传至区块链后将其存储在加密账本中,当有交易请求时,先从加密账本中找到交易对应的智能合约,将数据读取出来并解密;/n步骤二:通过Linux接口MemfdCreate创建匿名管道文件fd;再通过Linux接口Ftruncate设置匿名文件大小为上一步读取出数据的大小,通过Linux接口Mmap将申请一块系统内存d并映射到匿名管道文件fd,并设置可见可写权限;拷贝智能合约数据到系统内存d中;然后通过Linux接口Mprotect将系统内存d设置只可执行权限;/n步骤三:启动一个子进程执行bootstrap,并设置SysProcAttr属性中Cloneflags字段的值为CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWPID|CLONE_NEWNET|CLONE_NEWUSER,SysProcAttr属性通过Linux内核功能分别创建隔离的命名空间、隔离的IPC、隔离的PID、隔离的网络、和隔离的用户,同时以命令行参数的形式将匿名管道文件fd与交易参数传入;/n步骤四:bootstrap逻辑为先调用Linux接口Mount,重挂载根目录为私有,再调用Linux接口Chroot将根目录路径切换到指定tootfs,继而调用Linux接口Mount重新挂载proc目录;再而调用Linux接口Chdir,将当前目录切换到根目录;/n步骤五:bootstrap逻辑启动一个子进程,程序为匿名管道文件fd,即合约,并将命令行参数再以命令行参数的方式传给合约,合约程序将在隔离的环境内执行;/n步骤六:bootstrap逻辑等待合约子进程的退出,监听Linux系统信号SIGKILL、SIGSEGV、SIGTERM做出异常退出操作并将监听Linux系统信号的SIGKILL、SIGSEGV、SIGTERM发送至异常处理模块;/n步骤七:bootstrap程序在启动后将其pid加入cgroup组中进行资源使用限制;/n步骤八:rootfs通过docker镜像制作,下载并解压一个镜像,打开其中manifest.json文件,反序列化并读取layers字段,根据layers数组找到对应层级的tar文件并按数组顺序解压到同一个目录中。/n...

【技术特征摘要】
1.一种高效安全智能合约运行环境的方法,其特征在于,该方法包括以下步骤:
步骤一:智能合约上传至区块链后将其存储在加密账本中,当有交易请求时,先从加密账本中找到交易对应的智能合约,将数据读取出来并解密;
步骤二:通过Linux接口MemfdCreate创建匿名管道文件fd;再通过Linux接口Ftruncate设置匿名文件大小为上一步读取出数据的大小,通过Linux接口Mmap将申请一块系统内存d并映射到匿名管道文件fd,并设置可见可写权限;拷贝智能合约数据到系统内存d中;然后通过Linux接口Mprotect将系统内存d设置只可执行权限;
步骤三:启动一个子进程执行bootstrap,并设置SysProcAttr属性中Cloneflags字段的值为CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWPID|CLONE_NEWNET|CLONE_NEWUSER,SysProcAttr属性通过Linux内核功能分别创建隔离的命名空间、隔离的IPC、隔离的PID、隔离的网络、和隔离的用户,同时以命令行参数的形式将匿名管道文件fd与交易参数传入;
步骤四:bootstrap逻辑为先调用Linux接口Mount,重挂载根目录为私有,再调用Linux接口Chroot将根目录路径切换到指定tootfs,继而调用Linux接口Mount重新挂载proc目录;再而调用Linux接口Chdir,将当前目录切换到根目录;
步骤五:bootstrap逻辑启动一个子进程,程序为匿名管道文件fd,即合约,并将命令行参数再以命令行参数的方式传给合约,合约程序将在隔离的环境内执行;
步骤六:bootstrap逻辑等待合约子进程的退出,监听Linux系统信号SIGKILL、SIGSEGV、SIGTERM做出异常退出操作并将监听Linux系统信号的SIGKILL、SIGSEGV、SIGTERM发送至异常处理模块;
步骤七:bootstrap程序在启动后将其pid加入cgroup组中进行资源使用限制;
步骤八:rootfs通过docker镜像制作,下载并解压一个镜像,打开其中manifest.json文件,反序列化并读取layers字段,根据layers数组找到对应层级的tar文件并按数组顺序解压到同一个目录中。


2.根据权利要求1所述的一种高效安全智能合约运行环境的方法,其特征在于,步骤七中所述的cgroup组为Linux内核提供功能,用来限制、控制与分离一个进程组群的资源,包括CPU、内存、磁盘输入输出,以文本文件形式设置,将pid写入文件,具体表现为:
写入20000到/sys/fs/cgroup/cpu/container/cpu.cfs_quota_us文件中,再写入pid到/sys/fs/cgroup/cpu/container/tasks文件中。


3.根据权利要求1所述的一种高效安全智能合...

【专利技术属性】
技术研发人员:黄佳王剑
申请(专利权)人:江苏荣泽信息科技股份有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1