很多人都在关注虚拟货币的大涨大跌,却基本上没有人关注到底是怎样的技术,支撑着这么大的一个币圈?虚拟货币交易的流程,到底是怎么一回事?
最近被比特币等虚拟货币刷屏了,比特币、以太坊、狗狗币,一大堆名词扑面而来,不明就里的人们被搞得晕头转向。
很多人都在关注虚拟货币的大涨大跌,却基本上没有人关注到底是怎样的技术,支撑着这么大的一个币圈?虚拟货币交易的流程,到底是怎么一回事?
首先,我们得先理解什么是非对称加密。非对称加密我们曾经详细地对它进行了介绍,这里只简单地说一下概念。
对称加密指的是加密和解密,用同一个密钥。而非对称加密其实很简单,加密和解密一定要使用一个密钥对,密钥对包含一个公钥和私钥。
当然也可以反向操作,使用私钥加密数据,其他人再用公钥解开。用自己私钥加密的数据,只有对应的公钥才能解开,所以这一方式可拿来验证数据的真实性,也叫数字签名。
别人用你的公钥能解密成功,说明这一数据来自于你,而不是其他人,也没有被篡改过。
如果有人想转一些比特币给你,他就会使用你的公钥进行加密发送给你,由于私钥在你的手里,只有你能解密,因此这笔钱就变成你的了。
如果私钥没有保管好,泄露了,那么自己的虚拟货币非常容易被人偷走,因为别人可以拿着你的私钥,冒充你进行交易。
首先需要去虚拟货币交易所开户,平台会自动生成一个密钥对(公钥和私钥),存放在你的钱包里。
根据协议,公钥长度为512位,这么长显然不易于传播,因此协议又规定,应为公钥生成一个160位的“指纹。”所谓的指纹,其实就是一个哈希值。
160位是二进制,一般用十六进制表示,所以比特币地址一般在26到35个字符之间。这样一来,比特币的地址大幅度缩短了。
因为比特币等虚拟货币的交易记录,是全部公开的,哪个地址有多少个比特币都能被看到。
假如地址A说:“我向B地址支付了1个比特币。”比特币要怎么验证这个交易记录是真实发生的,而不是某一个人随意捏造的呢?
根据比特币的协议,当A说给B支付了1个比特币的时候,必须要提供以下几种证明:
交易行为发生后,会先通知离A地址最近的那些矿工,当这些矿工收到消息后,又会把消息扩散到离他们较近的矿工们,经过一圈又一圈的传播,所有人都会接收到这一笔交易的信息。
根据比特币协议,一个区块有可能可以包含2000多笔交易,矿工们负责把这2000多笔交易打包起来,组成一个区块,然后计算这一区块的哈希。
这一过程叫采矿,需要大量的计算,谁能先算出哈希值,谁就能第一个将这一区块添加进区块链,获得少数的比特币,而其他矿工会一无所获。虚拟货币的交易,大概就是这样一个过程,说起来其实也并不复杂。但能提出这一革命性构想的人,真的很了不起。在整个世界无数爱好者的支持下,虚拟货币经济越来越发达,其野蛮增长也受到了各国的关注,规范虚拟货币交易,成为全世界各国的共识。
虽然Executors工具提供了四种创建线程池的方法,能帮助开发者省去繁琐的参数配置,但是newSingleThreadExecutor和newFixedThreadPool方法创建的线程池,任务队列上限为Integer.MAXVALUE,这在某种程度上预示着可以无限提交任务,这在高并发的环境下,系统有极大几率会出现OOM,导致整个线程池不可用;其次newCachedThreadPool方法也存在同样的问