Blockstack

Python虚拟机之for循环控制流(二)

余生颓废 提交于 2020-11-19 05:47:23
Python虚拟机中的for循环控制流 在 Python虚拟机之if控制流(一) 这一章中,我们了解if控制流的字节码实现,在if控制结构中,虽然Python虚拟机会在不同的分支摇摆,但大体还是向前执行,但是在for循环控制结构中,我们将会看到一种新的指令跳跃方式,即指令回退。在 if控制流 章节中,我们看到了指令跳跃时,通常跳跃的距离都是当前指令与目标指令之间的距离。如果按照这种逻辑,进行回退时,这个跳跃是否是负数呢?别急,我们下面一点一点来剖析for循环控制流的实现 # cat demo3.py lst = [1, 2] for i in lst: print(i) # python2.5 …… >>> source = open("demo3.py").read() >>> co = compile(source, "demo3.py", "exec") >>> import dis >>> dis.dis(co) 1 0 LOAD_CONST 0 (1) 3 LOAD_CONST 1 (2) 6 BUILD_LIST 2 9 STORE_NAME 0 (lst) 2 12 SETUP_LOOP 19 (to 34) 15 LOAD_NAME 0 (lst) 18 GET_ITER >> 19 FOR_ITER 11 (to 33) 22 STORE_NAME 1 (i) 3

Blockstack-9: BlockStack架构

烈酒焚心 提交于 2019-11-28 20:19:26
原文链接: https://medium.com/coinmonks/blockstack-a-decentralized-naming-and-storage-system-using-blockchain-445ff60190f7 第一部分:Blockstack的4层架构 Blockstack的4层架构: 第一层: 像比特币这样的区块链存储了关于系统状态的权威全球共识。 第2层-虚拟链: 一个与区块链无关的层,它接受来自区块链的输入,可以创建任意类型的状态机。例如,DNS状态机可以与标识状态机不同。这一层也可以处理任何你想要的区块链,但可靠性和安全性将是基础区块链的衍生物。Virtuachain还将名称绑定到它们的值。zonefile的散列存储在这个层中。 第3层路由: 该层实现一个DHT,它存储值的路由信息。Blockstack使用像zonefile这样的DNS来指示数据的最终存储位置。基本上,第3层的任务是发现与给定名称关联的最终数据。任何用户都可以通过验证存储在第2层中的散列来验证zonefile的完整性。 第4层-存储: 这是存储所有值的地方。这可以是在AWS或dropbox或任何第三方供应商。这里有两种类型。 快速可变的存储: 此数据由名称所有者的私钥签名。因此写入只涉及加密的开销。而验证包括验证第2层zonefile的完整性,然后使用公钥验证数据。正如您所看到的

Blockstack-8:Blockstack App 如何在 Gaia 中查找数据?

江枫思渺然 提交于 2019-11-28 18:09:02
原文: https://medium.com/coinmonks/gaia-df6b86a17d50 这个过程分4步: 在虚拟链中查找名称以获得(名称、散列)对。 将用户名解析为数据(通过BNS和Atlas网络控制),以获得相应的区域文件。 从zonefile中发现存储后端URI,并查找连接到存储后端的URI。 从gaia服务规范中获取数据。 解释 应用程序将给定的用户名解析为某些数据。假设我们有一个用户sidra.id。应用程序将使用blockstack.js库中的Blockstack命名系统。Atlas网络获取根文件(区域文件),这将定义很多关于名称的信息。它还将提供存储应用程序数据的URL。 一旦应用程序完成了对应用程序根文件的查找。申请者将能够获得更具体的数据。假设我想查找文件foo.json。然后,唯一的要求是执行一个正常的URL获取。最后的设置是在Gaia规范中定义的。 如何更改 Gaia的储存? 在此系统中,如果用户想要更改正在运行的Gaia提供程序。因为用户拥有自己的用户名,所以他们可以很容易地将不同的数据与他们的用户名相关联,这允许他们选择不同的应用程序路由。这最终将允许他们更改应用程序执行这些查找的方式。查找定义了数据的控制,只要用户能够控制他们控制数据的查找。通过要求应用程序执行此多步骤查找。我们将控制权交给用户,因为查找从用户拥有的数据源开始。 Gaia

Blockstack-2 :Blockstack ID注册

元气小坏坏 提交于 2019-11-27 21:12:13
本篇文章主要记录Blockstack ID注册的流程; 在介绍注册流程之前,先简单的介绍一下Blockstack ID; 相对于传统互联网来说,Blockstack ID更像是统一的账号系统;即一个账号即可登录和授权所有基于Blockstack搭建的网站和DApp,是不是很方便。 对我而言,Blockstack ID更像是一把钥匙,一把万能钥匙,一把打开DApp大门的万能钥匙,不论有多少个DApp,不论以后会增加多少个DApp,只要你有Blockstack ID你就能够登录和授权,并且进行相关的操作;是不是很神奇。 对于经常注册账号和设置不同密码的来说,这简直是福音,当然安全性和友好性是相对的,一旦助记词丢失,账号中所有信息都会丢失,所以一定要保存好助记词,并且对密码进行合理的保护,没有完美的解决方案,只有适合的解决方式。 Blockstack ID注册 1.打开 https://blockstack.org 选择Create ID 2.跳转到 https://browser.blockstack.org/sign-up 有2种选择: Create new ID 创建一个新ID Sign in with an existing ID用已经存在的ID进行登录 我们选择Create new ID 创建一个用户名,并且程序会自动验证是否可用。 4.创建密码 5.输入邮箱

blockstack对去中心化的理解

有些话、适合烂在心里 提交于 2019-11-27 01:36:38
说到去中心化;不得不说的便是中心化;一定是因为中心化[的系统]存在某个或者某些问题,才导致了一些人对去中心化[的系统]的期待;中心化的系统到底存在哪些问题呢? 大规模的数据泄露 用户隐私的丧失 数据缺乏可移植性 对云服务商的互不信任 用户隐私的丧失[2.]伴随着数据泄露[1.]发生,导致数据泄露的原因可能是多方面的,比如:数据库数据被盗取,被公司的人员泄露等等,有人为原因,也有非认为原因;其中人为的原因也导致了用户和服务商之间的不信任[4.]。 数据缺乏可移植性[3.],不是很明显;对于数据库的数据需要数据的导出和导入,然后修改程序中对应数据库的配置;对于云存储的数据,同样需要将数据存储的位置进行改变,并且对程序进行修改。 鉴于以上的中心化系统的问题,Blockstack用自己的方式诠释了去中心化。 Blockstack ID授权认证 去中心化的存储Gaia 基于blockstack开发的DApp程序,都可以使用blockstack ID进行授权登录,从而完美的实现了,存在中心化系统中的统一账号管理;感觉回到了中心化的时代; - - - 并不是去中心化的优势;😓 如果说可以基于Blockstack ID对数据进行权限的管理,比如赋予数据[A.json]公开权限;别人可以查看数据,赋予数据[B.json]私有权限;别人不能查看数据- - - 只能说对数据拥有控制权