数字货币行情-比特币行情价格_专注数字货币行业大数据分析

怎么用Python撰写一个容易且安全的区块链数据库API?

更新时间:2021-07-06 08:27点击:

GitHub项目链接:https://github.com/adamchinkc/blockchain_database

当大家讨论区块链时,大家一直把它与p2p互联网联系起来,觉得数据需要分散在互联网上。这也会使大家担忧区块链将会破坏数据的机密性。

事实上,区块链本身的数据构造已经为保护数据免受未经授权操作提供了一个好的解决方法,并且考虑到服务器遭到足够的控制(如访问控制、互联网和系统安全控制)的保护,最好是在内部互联网。

因此,我尝试通过用Python, Sqlite和RESTful API框架基于区块链的数据构造创建一个数据库。


摘自于中本聪发表的BTC白皮书《BTC:一种P2P电子现金系统》https://bi总拥有成本in.org/bitcoin.pdf

从上图看,每个数据区块都包含了上一个哈希(Prev Hash),Nonce和买卖(Tx)。简而言之,哈希值是上一个区块的一个与众不同的ID。假如大家用这个“与众不同的ID“来验证上一个区块,大家将会知晓上一个区块是不是被更改了。

这意味着什么?这种机制允许大家确保其他人都不被允许更改先前创建的数据。假如你需要修改数据,那样你就需要创建另一条记录以“修改”或“删除”它。

在上面的例子中,Alice错误地输入日记条目到了123.4,而正确地应该是432.1。Alice需要创建另外的记录“删除”推翻此前输入的条目。

这好像是大部分审计系统的基本职能,但大家并不可以知晓这个系统在应用层上是不是被控制住了,这就导致了数据可能在数据库层被更改的可能性。

要确保从始至终无人可以更改数据,我引入了一种容易且安全的区块链数据库API。

基于区块链数据构造的数据库

怎么用这个API?

可审计性,保密性和完整性

当用户创建一个买卖记录时,他将会使私钥对买卖数据进行加密并将这个数据发布到区块链数据库API。区块链数据库API将用该用户的私钥对数据进行解密。在这个过程中,用户的身份已经被确认。这就达成了可审计性和保密性的目的。

在下一步中,这个区块链数据库API将会计算出nonce买卖的哈希值,即随机字符串和上一个哈希。区块链数据库API将把这个买卖,nonce和哈希插入到这个数据库中。

要删除未授权的更改,区块链数据库API将基于上一个哈希,买卖和nonce的信息重新计算这个哈希值。假如出现了任何更改,这个哈希值将发生变化,这个API将被公告发生了变化。从而,数据的完整性将会得到保证。

因为处于一种中心化构造中,获得管理权限的攻击者大概会通过第三重新这个哈希值来改变整个数据库。

这个问题可以通过以下解决方法来解决:

•将此买卖克隆岛一个安全的日志服务器

•以增量方法进行数据备份而不是全球备份

1.启动哈希API


3.启动Main API


4.发布日记数据到Main APIhttp://127.0.0.1:8000/construct,获得带有nonce和哈希的Response。

5.发布Response到Main APIhttp://127.0.0.1:8000/insert


6.通过Gethttp://127.0.0.1:8000/verify?id=1验证你的买卖。

巴比特资讯http://www.8比特币.com/python-blockchain-database-api

相关阅读

官方微信公众号