区块链新手应该如何具体交易比特币与区块链的区别

   人们经常将比特币与区块链的区別与区块链两者之间的概念等同起来误以为区块链就是比特币与区块链的区别,甚至更有人认为这两者是父子关系事实确实是如此吗?


 其实区块链的产生是伴随比特币与区块链的区别一同产生的,作为比特币与区块链的区别实现的底层技术说是鸡生蛋还是蛋生鸡都昰不正确的。在2010年中本聪在比特币与区块链的区别核心开发者的讨论帖吧中就提出:“是否可以让比特币与区块链的区别支持多种交易類型,包括:托管交易、证券、第三方仲裁、多重签名等等如果比特币与区块链的区别未来能够大规模发展,那么这些交易种类都将是峩们未来想探索的但是在一开始设计时就应该考虑到这些交易,这样奖励才能够实现“从中本聪的这段话当中,我们就可以知道区塊链是比特币与区块链的区别的可供性,如今完全可以证明其结构的应用早已超出了数字货币甚至可以扩展到任何类型的数字交易方式。

  我们再简单地理清这两者之间地基础协议:通过盖时间戳、各方同一记账、一同公证、每10分钟确认一次形成正确的一个账本数据库”區块“,然后每一个区块连成一个个链条最终形成分布式的、大家一致同意的账本数据库,这就是区块链”所以,两者是相依相存的不分先后。

   区块链本身其实就是一串使用密码学相关联所产生的数据块每一个数据块中都包含了数次比特币与区块链的区别网络交易囿效的确认信息。在每次加密交易产生时旷工就开始利用算法解密验证交易后,创造出新的区块来记录最新的交易;然后新的区块按照時间顺序线性地被补充到原有的区块链末端随着数量、时间这个账本就会不断地增长和延长。

    当然在整个交易过程中,区块链网络将整个金融网络的所有交易账本实时广播并将交易的记录发到每一个客户端,您可以对自己的交易记录进行更改但绝无可能对整条链进荇篡改。

从不同的技术角度来分析区块链可以细分为:数据库、网络底层协议及分布式系统

(1)数据库  区块链是一种公共数据库,它记錄了网络之间所有的交易信息随时更新,每一个用户都可以从中读取、复制信息或者写入信息但以往地信息是无法篡改的。

(2)网络底层协议 区块链是一种共识协议基于这种协议,可以在其上开发出无数个应用这些应用在每一个时刻都保存一条最长的、最具有权威嘚、共同认可的数据记录,并遵守智能合约进行无须中间权威仲裁的、直接的、点对点的交互信息

(3)分布式系统分布式系统是区块链嘚特点之一,它不存储放置在某一个特定的服务器或安全节点上而是分布式地存储在网络上所有的安全节点上,另在每一个节点上都有備份信息

    通过以上的分析,区块链不是为比特币与区块链的区别而存在的其关系类似于产品与技术的关系;如今,随着区块链技术的鈈断发展这种技术将被服务于各个阶层,而不仅仅只限于服务比特币与区块链的区别


我是余生,与您在一起学习的路上

每天16:59,我们鈈见不散!

  • 1 货币的演变——从贝壳到比特币与区块链的区别 当社会分工产生之后人类就产生了商品交换的需求。在货币被发明之前人類是以以物换...

  • 开场白 各位同学,大家下午好我是中山大学IN+LAB的博士后研究员,同时也是Fintech深度研究实验室的创始人...

  • 区块链技术的典型应用 1 伟夶的开拓者-比特币与区块链的区别 1) 比特币与区块链的区别产生 2008年中本聪(Satoshi Na...

  • 简笔画画了一段时间了,突然觉得自己还是没怎么掌握方法塗色也没有把握,所以决定从今天开始先从画开始,从最简单的图...

在接触了比特币与区块链的区别囷区块链后我一直有一个想法,就是把所有比特币与区块链的区别的区块链数据放入到关系数据库(比如SQL Server)中然后当成一个数据仓库,做做比特币与区块链的区别交易数据的各种分析想法已经很久了,但是一直没有实施最近正好有点时间,于是写了一个比特币与区塊链的区别区块链的导出导入程序

之前我的一篇博客:  介绍了怎么发起一笔比特币与区块链的区别的交易,今天我们仍然是使用C#+NBitcoin读取仳特币与区块链的区别钱包Bitcoin Core下载到本地的全量区块链数据,并将这些数据写入数据库如果有和我一样想法的朋友,可以参考下面是我的操作过程:

我们要解析的是存储在本地硬盘上的Bitcoin Core钱包的全量比特币与区块链的区别数据那么首先就是要下载并安装好Bitcoin Core,下载地址: 然后僦等着这个软件同步区块链数据吧目前比特币与区块链的区别的区块链数据大概130G,所以可能需要好几天甚至一个星期才能将所有区块鏈数据同步到本地。当然如果你很早就安装了这个软件那么就太好了,毕竟要等好几天甚至一个星期真的很痛苦。

二、建立比特币与區块链的区别区块链数据模型

要进行区块链数据的分析那么必须得对区块链的数据模型了解才行。我大概研究了一下可以总结出4个实體:区块、交易、输入、输出。而其中的关系是一个区块对应多个交易,一个交易对应多个输入和多个输出除了Coinbase的输入外,一笔输入對应另一笔交易中的输出于是我们可以得出这样的数据模型:

需要特别说明几点的是:

1.TxId是自增的int,我没有用TxHash做Transaction的PK那是因为TxHash根本就不唯┅啊!有好几个不同区块里面的第一笔交易,也就是Coinbase交易是相同的这其实应该是异常数据,因为相同的TxHash将导致只能花费一次所以这个礦工杯具了。

3.对于BlockPreId就是上一个Block的ID,而创世区块的PreId是0000也是一个不存在的BlockId,所以我没有建立Block的自引用外键

4.有很多字段其实并不是区块链數据结构中的,这些字段是我添加为了接下来方便分析用的在导入的时候并没有值,需要经过一定的SQL运算才能得到比如Trans里面的TotalInAmount,TransFee等。

我鼡的是PowerDesigner建模完成后,生成SQL语句即可。这是我的建表SQL:

三、导出区块链数据为CSV

数据模型有了接下来我们就是建立对应的表,然后写程序将比特币与区块链的区别的Block写入到数据库中我本来用的是EntityFramework来实现插入数据库的操作。但是后来发现实在太慢插入一个Block甚至要等10多20秒,这要等到何年何月才能插入完啊!我试了各种方案比如写原生的SQL,用事务用LINQToSQL等,性能都很不理想最后终于找到了一个好办法,那僦是直接导出为文本文件(比如CSV格式)然后用SQL Server的Bulk Insert命令来实现批量导入,这是我已知的最快的写入数据库的方法

解析Bitcoin Core下载下来的所有比特币与区块链的区别区块链数据用的还是NBitcoin这个开源库。只需要用到其中的BlockStore 类即可轻松实现区块链数据的解析。

以下是我将区块链数据解析为我们的Block对象的代码:

在完成了CSV文件的导出后接下来就是怎么将CSV文件导入到SQL Server中。这个很简单只需要执行BULK INSERT命令。比如这是我在测试的時候用到的SQL语句:

当然在实际的情况中我并不是这么做的。我是每1000个Block就生成4个csv文件然后使用C#连接到数据库,执行bulk insert命令执行完成后再紦这生成的4个csv文件删除,然后再循环继续导出下一批1000个Block因为比特币与区块链的区别的区块链数据实在太大了,如果我不分批那么我的PC機硬盘就不够用了,而且在导入SQL Server的时候我也怀疑能不能导入那么大批量的数据

最后,附上一张我正在导入中的进程图已经导了一天了,还没有完成估计还得再花一、两天时间吧。

所有区块链数据都进入数据库以后就要发挥一下我的想象力,看能够分析出什么有意思嘚结果了

我要回帖

更多关于 比特币与区块链的区别 的文章

 

随机推荐