美文网首页
2018-04-04

2018-04-04

作者: alucardzhou | 来源:发表于2018-04-14 12:21 被阅读11次

    以比特币为例理解区块链工作过程

    以比特币网络为例,可以具体看其中如何使用了区块链技术。

    首先,比特币客户端发起一项交易,广播到比特币网络中并等待确认。网络中的节点会将一些收到的等待确认的交易记录打包在一起(此外还要包括前一个区块头部的哈希值等信息),组成一个候选区块。然后,试图找到一个nonce串(随机串)放到区块里,使得候选区块的哈希结果满足一定条件(比如小于某个值)。这个nonce串的查找需要一定的时间去进行计算尝试。

    一旦节点算出来满足条件的nonce串,这个区块在格式上就被认为是“合法”了,就可以尝试在网络中将它广播出去。其他节点收到候选区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块,并添加到自己维护的区块链上。当大部分节点都将区块添加到自己维护的区块链结构上时,该区块被网络接受,区块中所包括的交易也就得到确认。

    当然,在实现上还会有很多额外的细节。这里面比较关键的步骤有两个:一个是完成对一批交易的共识(创建区块结构);一个是新的区块添加到区块链结构上,被大家认可,确保未来无法被篡改。

    针对区块链应用的这些特点,是否可以设计出一些特殊的针对性的数据库呢?

    LevelDB、RocksDB等键值数据库,具备很高的随机写和顺序读、写性能,以及相对较差的随机读的性能,被广泛应用到了区块链信息存储中。但目前来看,面向区块链的数据库技术仍然是需要突破的技术难点之一,特别是如何支持更丰富语义的操作。

    大胆预测,未来将可能出现更具针对性的“块数据库”(BlockDB),专门服务类似区块链这样的新型数据业务,其中每条记录将包括一个完整的区块信息,并天然地跟历史信息进行关联,一旦写入确认则无法修改。所有操作的最小单位将是一个块。为了实现这种结构,需要原生支持高效的签名和加解密处理。

    不少公链代币设计中没有加入身份的概念,不过这在技术人的角度来看,只是算是一个需求,而不是数字货币本身存在的缺陷。

    这是个feature 不是bug!

    换句话说,在特定场景下,也许需要实现这个功能。

    点对点 vs 中心化

    数字货币的发行主体通常是项目发起方,并且会在白皮书中定义好数字货币的发行过程;在主网上线以后,所有的代币会根据一开始设计好的发行过程缓慢释放到市场,这个过程其实就是大家喜闻乐见的“挖矿”过程。

    end

    相关文章

      网友评论

          本文标题:2018-04-04

          本文链接:https://www.haomeiwen.com/subject/ywylhftx.html