【技术实现步骤摘要】
一种高效安全智能合约运行环境的方法
本专利技术涉及计算机信息处理以及区块链
,具体为一种高效安全智能合约运行环境的方法。
技术介绍
在不使用容器的区块链中,智能合约直接运行在宿主机上,当合约运行出现问题时会影响宿主机,对宿主机上运行的其他程序造成影响,现有区块链采用docker容器作为智能合约的运行环境,首先引入第三方程序就具有风险,还需要对docker进行安装和配置。合约需要打包成镜像落在硬盘上,容易被人篡改且镜像冷启动时间长。
技术实现思路
本专利技术的目的就在于为了解决现有区块链采用docker容器作为智能合约的运行环境,首先引入第三方程序就具有风险,还需要对docker进行安装和配置。合约需要打包成镜像落在硬盘上,容易被人篡改且镜像冷启动时间长的问题,而提出一种高效安全智能合约运行环境的方法。本专利技术的目的可以通过以下技术方案实现:一种高效安全智能合约运行环境的方法,该方法包括以下步骤:步骤一:智能合约上传至区块链后将其存储在加密账本中,当有交易请求时,先从加密账本中找到交易对应的智能合约,将数据读取出来并解密;步骤二:通过Linux接口MemfdCreate创建匿名管道文件fd;再通过Linux接口Ftruncate设置匿名文件大小为上一步读取出数据的大小,通过Linux接口Mmap将申请一块系统内存d并映射到匿名管道文件fd,并设置可见可写权限;拷贝智能合约数据到系统内存d中;然后通过Linux接口Mprotect将系统内存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与交易参数传入 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。