以太坊沙箱机制(Sandboxie)是什么?

到底也许都听说过:以太坊上的智能合约是在沙箱(Sandbox)中运行的。那么到底什么是沙箱呢?本文将带你揭开这一机制的神秘面纱。

1.为什么需要沙箱机制?

默认情况下,一个应用程序是可以访问机器上的所有资源的,比如CPU、内存、文件系统、网络等等。

但是这是不安全的,如果随意操作资源,有可能破坏其他应用程序正在使用的资源,或者造成数据泄漏。为了解决这个问题,一般有接下来两种解决方案:

(1) 为程序分配一个限定权限的账号:利用操作系统的权限管理机制进行限制

(2) 为程序提供一个受限的运行环境:这就是沙箱机制

2.什么是沙箱机制?

如上所述,沙箱就是一个限制应用程序对系统资源的访问的运行环境。

沙箱很多情况下都是实现在虚拟机(VM)中,比如Java的虚拟机JVM、Javascript的虚拟机V8引擎、Android中的虚拟机Dalvik/ART,以及以太坊的虚拟机EVM等等。具体的实现方式各有不同,本文重点分析一下JVM和EVM的沙箱机制实现。

3.JVM的沙箱机制

JVM的沙箱机制大致可以分为三层:

第一层:类加载器

采用双亲委派模型,低层类加载器在收到类加载请求时,需要先委派给高层类加载器区完成,只有在高层类加载器无法完成该请求时,才会再重新委派给低层类加载器。通过这一机制,确保了系统的核心类不会被篡改,恶意代码无法访问关键资源。

第二层:字节码校验器

类字节码被加载后,需要在字节码层面进行检验,具体包括以下内容:

(1) 变量要在使用之前进行初始化

(2) 方法调用与对象引用类型之前要匹配

(3) 访问私有数据和方法的规则没有被违背

(4) 对本地变量的访问落在运行时堆栈内

(5) 运行时堆栈没有溢出通过这一机制,可以确保字节码符合Java语言规范,避免访问无效访问或越界访问。

第三层:安全管理器

这一层是交由应用开发者来维护的,开发者可以根据自身需求,制定对应的安全策略。默认的安全策略配置位于以下两个配置文件中:

· $JAVA_HOME/conf/security/java.security

· $JAVA_HOME/conf/security/java.policy

默认情况下安全管理器是不开启的,可以在命令行增加一个参数来开启它:

java -Djava.security、manager SandboxTest

默认的安全策略配置不允许应用程序对文件的读写操作,所以如果你试图写一个文件,运行时会报如下错误:

如果你希望开放这个权限,可以编写自己的安全策略文件,比如我们写一个my.policy:

然后在运行时指定这个策略配置就可以了:

java -Djava.security、manager -Djava.security.policy=、/my.policy
SandboxTest

应用开发者可以针对不同的应用场景进行精细化定制,控制程序对网络、文件、属性等内容的访问权限。

4.EVM的沙箱机制

EVM本身是一个相对封闭的环境,不支持对网络和文件系统的直接访问,从这个层面来说已经起到一部分沙箱的功能了:

另外,在智能合约之间互相调用时,EVM会重新分配堆栈和内存空间,在一个全新的环境中运行新合约,即使出现问题也不会破坏原有执行环境,从而为智能合约的执行提供了一个沙箱环境。

最后,每个智能合约的存储也是相互独立的,开发者可以根据需求,限制合约可以访问的存储空间,避免未授权的访问或修改。

一、沙箱是什么?

沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的系统产生影响,即沙箱提供一个限制该应用程序对系统资源的访问权限。

沙盘英文名sandbox(sandboxie),也叫沙箱,顾名思义可以看做是一种容器,里面所做的一切都可以推倒重来。沙盘也为HIPS的一种,称为沙盘HIPS。

原理引用官方网站的一段话:电脑就像一张纸,程序的运行与改动,就像将字写在纸上。而Sandboxie就相当于在纸上放了块玻璃,程序的运行与改动就像写在了那块玻璃上,除去玻璃,纸上还是一点改变都没有的。

二、沙箱的应用

(1)搭建测试环境。沙箱的应用只能访问自己的应用访问目录,而不能应用之间的资源进行共享,这样就形成了一个相对安全的机制,由于沙箱具有非常良好的独立性、隔离性,所以能够搭建一些具有高风险的软件进行测试。

(2)应用容器的利用,如Docker就是应用沙箱机制,这样使得应用组件经过Docker的封装,使得在项目的迁移、测试环境到生产环境的部署,保证了应用程序的运行环境保持一致性,同时也减少大量在环境搭建上的工作量。

免责声明: 文章源于会员发布,不作为任何投资建议

如有侵权请联系我们删除,本文链接:https://www.sws100.com/btc/190675.html

(0)
鸟叔鸟叔
上一篇 2023年 2月 1日
下一篇 2023年 2月 1日

相关推荐

  • 比特币好人民币汇率_比特币一个多少人民币2021

      ㈠ 1比特币=多少人民币2021年   比特币近几年可以说是热搜新闻的常客,无论是暴跌还是暴涨,都会出现在热搜上,甚至因为比特币太过出名,由此可以看出比特币的火爆程度,那么,一个比特币价格多少呢?下面小编就跟大家说说一个比特币价格多少?   一个比特币价格多少?   2021年3月10日,比特币价格是人民币价格36.36万元,也就是说1个比特币需要559…

    比特币行情 2023年 4月 1日
  • 1克拉钻石价格,1克拉钻石大概多少钱?

    大家好,句子百科网小编(sws100.com)下面围绕“FAIR币未来3年价格”主题给大家详细介绍一下。 1克拉钻戒多在5-20万这个区间。1克拉钻戒并没有一个固定的价格,根据参数不同,有时甚至会达到几倍或十几倍的差价。决定钻戒价格的因素主要是4C——重量(Carat Weight)、净度(Clarity)、颜色(Colour)、切工(Cut)以。 公平,每…

    比特币行情 2023年 3月 30日
  • 现在的派币

    摘要:派币是一种全新的数字货币,在比特币的基础上发展而来。派币最主要的特点就是可以实现挖矿,通过挖矿来获得派币的奖励。文章主要介绍了派币的基本原理、挖矿方式以及派币的优缺点,并分析了派币在数字货币市场中的地位和趋势。 一、派币的基本原理 派币是一种基于比特币原理的数字货币。它采用了比特币区块链技术和SHA-256哈希算法来保证交易的透明度和可靠性。不同的是,…

    比特币行情 2023年 7月 22日
  • 币强对OK平台交易所的点评

    OKEX堪称是币圈的黄埔军校1 那么来回顾一下曾经那些走出OKex后的传奇人物。 1.在赵长鹏之前,OK黄埔军校”也只是圈内人的说笑而已,但在赵长鹏和他的币安之后,这个名字算是彻底响亮了。 2.对链圈人士来说,比原链是国内最著名的区块链项目之一,有着明确的应用场景和优秀的技术团队。而它幕后的那个男人便是从OK出走的段新星,现任比原链创始人和巴比特执行总裁。 …

    2023年 4月 13日
  • 数据:今年年初至今Tether已新增发150亿美元的USDT

    摘要:今年年初至今,Tether已新增发行了150亿美元的USDT(稳定币),引发了市场的关注和探讨。本文旨在深度挖掘稳Sws100.com定币的概念、种类、应用和影响,并分析Tether的稳定性及其所面临的挑战。稳定币的概念和种类稳定币是基于区块链技术发行的加密数字货币,与传统数字货币不同的是,稳定币对其发行的货币进行了抵押,并承诺与之等值交换。稳定币的种…

    比特币行情 2023年 5月 11日

联系我们

在线咨询: QQ交谈

邮件:k37759@foxmail.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信