售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
本文主要讨论利用区块链智能合同和数据仓库来安全共享分散的数据。
背景
爱丽丝和鲍勃希望彼此共享数据,但不是在传统的集中式模式下。集中式数据存储在一个地方或一家公司,这使得数据面临不安全、开放和不受控制(简言之,滥用)的风险。
集中式数据共享:面临数据丢失、被盗或被出售的风险
相反,爱丽丝和鲍勃希望以分散的方式共享数据。分散的数据由位于多个地点的多个公司持有。这可能会使数据更安全、更私密、更可控。
分散的数据共享:降低滥用风险
本文的其余部分讨论了这个重要问题的解决方案。
讨论
爱丽丝和鲍勃希望共享数据,包括消息、电子邮件、文档、图像和散布在云中某处的任何其他文件。
共享数据包括存储数据和控制谁有权在何时访问哪些数据。
解决这个问题的方法之一是将数据访问控制与数据存储分开。
我们希望在区块链使用智能合同来控制对数据的访问,因为智能合同非常擅长控制谁做什么、何时何地、何时何地,并且它们存在于分散的平台上。
然而,由于存储成本高,区块链不适合存储数据。存储少量字节的成本就足够了,而存储一个文件的成本通常是令人望而却步的,有时甚至是不可能的。
我们认为安全存储共享数据的最佳位置是只有用户可以访问数据仓库服务器上的数据,用户决定使用哪个数据仓库存储服务器(或数据仓库存储服务器的组合)。
因此,爱丽丝和鲍勃都希望在他们选择的数据仓库服务器上共享他们的数据,用户访问由智能合同控制,所有这些都通过互联网连接在一起。
智能合同和数据仓库必须提供什么功能来支持该解决方案?
组合函数
所需的用户角色、计算机状态和对象取决于部署的特定智能合同。然而,当智能契约与数据仓库交互时,双方都必须指定和实现可能的对象和操作。
因此,需要智能契约和数据仓库存储接口规范。
智能合同功能
智能契约编码哪些操作可以在哪些对象上执行,通过哪些角色以及在哪个计算机状态下执行。
一些智能契约函数可以被用户直接调用,而另一些可以被数据仓库调用。
智能合同导出一个公共接口,该接口为用户提供检查和更改当前机器状态的功能。
智能合同中可能的角色和机器状态包括:
用户角色示例
contractOwner
数据所有者
数据请求者
调整者
等等
机器状态示例
初始化
等待某事
激活
审计
终止
等等
智能契约还导出符合接口规范的公共接口,从而为数据仓库提供检查角色是否被允许在当前机器状态下对对象执行操作的功能。
因此,数据仓库操作的控制被编码在智能契约中。
数据仓库功能
数据库存储加密文件,并且必须知道智能合同区块链接口规范的地址。
每当用户向数据仓库发送对对象执行操作的请求时,数据仓库将检查用户是否有权与智能合同一起执行该操作(考虑智能合同的计算机状态),如果是,则执行该操作。
数据仓库检查用户请求是否与智能合同一起被允许
数据仓库通过以下操作保存对象:
对象可能的操作
文件读取、写入、追加
文件夹读取、写入、追加
智能合同和数据仓库操作
合同所有者创建智能合同并将其部署在区块链,然后创建一个将使用它的数据仓库。两个组件都必须符合接口规范。
用户可以向智能合同或数据仓库提出请求。
智能合同请求检查或更改合同的机器状态。
当其中一个用户发出数据仓库请求时,数据仓库将在执行之前用智能契约检查该操作是否被允许。
只有智能合同所有者可以终止智能合同,并且他们可以在智能合同允许的任何时间终止智能合同。终止的合同将向合同所有人释放所有剩余资金,这将最终导致删除数据库。
示例解决方案
我们将提供一个有效的解决方案,并使用datona-cli为这个问题提供一个可行的解决方案。这将在下一章讨论。
结论理论
爱丽丝、鲍勃和许多其他人希望以分散的方式共享数据。这可能会使数据更安全、更私密、更可控。
将智能契约与符合接口规范的数据仓库相结合是非常实用的。
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!