区块链应用接口(Application BlockChain Interface,ABCI)允许应用的拜占庭容错复制可以由任意一种编程语言编写。
Tendermint Core (“共识引擎”)通过一个满足 ABCI 标准的 socket 协议与应用进行交流。
举个大家比较熟悉的例子,比特币。比特币是一个加密货币区块链,其中的每个节点维护了一个完全经过审计的 UTXO 数据库。如果有人想要在 ABCI 之上创建一个类似比特币的系统,Tendermint Core 将会负责:
在节点间共享区块和交易
建立交易(区块链)的标准/不可变顺序
而应用将会负责:
维护 UTXO 数据库
验证交易的加密签名
阻止花费尚未存在的交易
允许客户端查询 UTXO 数据库
---------------------
作者:逆月林
来源:CSDN
原文:https://blog.csdn.net/niyuelin1990/article/details/80537329
版权声明:本文为博主原创文章,转载请附上博文链接!
区块链想解决的是同一个问题,但是并没有严格实现正确的 consensus,只是借助密码学、Proof of work 等技巧在每个参与者 足够理性、想让自己利益最大化、并且掌握算力不到 50% 的情况下,依概率收敛到 consensus。
实现拜占庭容错的数据库性能并不差。其实实现拜占庭容错的数据库存储引擎性能在 happy path 上并不比容错宕机情况的 Paxos、Raft 之类的慢多少。至于 failure 发生的时候,你机器都被黑了不要想这些有的没得了。。。没人实现的主要原因是真的没啥用,拜占庭错误一般认为是被攻击了,很少会有集群被黑且只有 1/3 的机器被黑的场景。
经典的拜占庭容错数据库(非区块链)的场景还是很有用的,主要用在联盟链的场景。可以在多家企业之间达成联盟防止任何一家篡改数据。
作者:纯纯
链接:https://www.zhihu.com/question/23167269/answer/429936053
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论