快讯:
英国足球俱乐部纽卡斯尔(Newcastle)否认了发行加密货币的报道,称并没有与SportyCo立即达成此类协议。此前《泰晤士报》报道,英国足球俱乐部成员纽卡斯尔和卡迪夫与微型融资和众筹公司SportyCo进行了探讨,准备发行加密货币。此前卡迪夫城也否认考虑推出代币的可能。
巴西证券交易委员会(CVM)授权基金经理投资与国外的加密货币挂钩的某些特定资产。
据CRYPTOGLOBE消息,花旗集团前财务分析师Rohit Kulkarni认为,区块链技术已经对拥有100万亿美元市场规模的支付行业产生了大规模的破坏,传统金融机构的主导地位正变的非常不稳定。他认为区块链可以完全绕过金融机构并允许各方之间进行直接支付,这将取代过时的支付系统。
英国足球俱乐部纽卡斯尔(Newcastle)否认了发行加密货币的报道,称并没有与SportyCo立即达成此类协议。此前《泰晤士报》报道,英国足球俱乐部成员纽卡斯尔和卡迪夫与微型融资和众筹公司SportyCo进行了探讨,准备发行加密货币。此前卡迪夫城也否认考虑推出代币的可能。
巴西证券交易委员会(CVM)授权基金经理投资与国外的加密货币挂钩的某些特定资产。
据CRYPTOGLOBE消息,花旗集团前财务分析师Rohit Kulkarni认为,区块链技术已经对拥有100万亿美元市场规模的支付行业产生了大规模的破坏,传统金融机构的主导地位正变的非常不稳定。他认为区块链可以完全绕过金融机构并允许各方之间进行直接支付,这将取代过时的支付系统。
英国足球俱乐部纽卡斯尔(Newcastle)否认了发行加密货币的报道,称并没有与SportyCo立即达成此类协议。此前《泰晤士报》报道,英国足球俱乐部成员纽卡斯尔和卡迪夫与微型融资和众筹公司SportyCo进行了探讨,准备发行加密货币。此前卡迪夫城也否认考虑推出代币的可能。
巴西证券交易委员会(CVM)授权基金经理投资与国外的加密货币挂钩的某些特定资产。
据CRYPTOGLOBE消息,花旗集团前财务分析师Rohit Kulkarni认为,区块链技术已经对拥有100万亿美元市场规模的支付行业产生了大规模的破坏,传统金融机构的主导地位正变的非常不稳定。他认为区块链可以完全绕过金融机构并允许各方之间进行直接支付,这将取代过时的支付系统。

如何使用Python编写一个简单且安全的区块链数据库API?

kyle 2017-10-30 14:00 发布在 区块链 12790

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

当我们讨论区块链时,我们总是把它与p2p网络联系起来,认为数据必须分散在网络上。这也会使人们担心区块链将会破坏数据的机密性。

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

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

 

区块链的数据架构及其完整性

gsCt1MspoQyA

摘自于中本聪发表的比特币白皮书《比特币:一种点对点电子现金系统》https://bitcoin.org/bitcoin.pdf

从上图看,每一个数据区块都包含了上一个哈希(Prev Hash)Nonce交易(Tx)。如果你不确定什么是哈希(Hash),你可以先阅读这篇文章进行了解。简而言之,哈希值是上一个区块的一个独一无二的ID。如果我们使用这个“独一无二的ID“来验证上一个区块,我们将会知道上一个区块是否被更改了。

这意味着什么?这种机制允许我们确保任何人都不被允许更改先前创建的数据。如果你需要修改数据,那么你就必须创建另一条记录以“修改”或“删除”它。

_g58C_aNixnw

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

这似乎是大多数审计系统的基本职能,但是我们并不能知道这个系统在应用层上是否被控制住了,这就造成了数据可能在数据库层被更改的可能性。

要确保从始至终没有人能够更改数据,我引入了一种简单且安全的区块链数据库API。

 

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

7oDh_zLTFm-w

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

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

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

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

 

局限性

 

由于处于一种中心化架构中,获得管理权限的攻击者有可能会通过再次重新这个哈希值来改变整个数据库。

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

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

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

如何使用这个API?

1.启动哈希API

python hash.py
2.启动Nonce API
python nonce.py
3.启动Main API
python main.py
4.发布日记数据到Main API http://127.0.0.1:8000/construct,获得带有nonce和哈希的Response。
data1 = { 	"journal_id": "JE000001", 
	"entry_date" : "2016-11-06", 
	"create_time" : "2016-11-06 18:00:00", 
	"created_by": "Adam",
	"post_status": "P",
	"account_code" : "100000",
	"amount" : 16453.24,
	"dr_cr" : "C"
}
5.发布Response到Main API http://127.0.0.1:8000/insert
data1 = { 	"journal_id": "JE000001", 
	"entry_date" : "2016-11-06", 
	"create_time" : "2016-11-06 18:00:00", 
	"created_by": "Adam",
	"post_status": "P",
	"account_code" : "100000",
	"amount" : 16453.24,
	"dr_cr" : "C",
  "nonue" : ".....",
  "hash" : "....."
}
6.通过Get http://127.0.0.1:8000/verify?id=1验证您的交易。

文章标签: 区块链
评论(5)
登录 账号发表你的看法,还没有账号?立即免费 注册
  • geniusian 2017-10-31
    "当用户创建一个交易记录时,他将会使私钥对交易数据进行加密并将这个数据发布到区块链数据库API。区块链数据库API将使用该用户的私钥对数据进行解密。" 私钥加密私钥解密? 第一个应该是公钥加密吧。
    • kyle: 2017-10-31
      谢谢更正,确实是小编看错了
  • bitsbetter 2017-10-30
    『如何使用Python编写一个简单且安全的区块链数据库API?_巴比特_服务于区块链创新者』http://t.cn/RWBM5rq ​
  • 巴比特资讯 2017-10-30
    【如何使用Python编写一个简单且安全的区块链数据库API?】当我们讨论区块链时,我们总是把它与p2p网络联系起来,认为数据必须分散在网络上。这也会使人们担心区块链将会破坏数据的机密性。那么如何使用Python来编写一个简单的区块链数据库API呢?http://t.cn/RWBM5rq ​
  • ICO观察员 2017-10-30
    做开发的过来看看。 如何使用Python编写一个简单且安全的区块链数据库API?_巴比特_服务于区块链创新者http://t.cn/RWBM5rq ​