8455澳门新

8455澳门新 1
8455澳门新大鹏点金:虚拟货币不是资产,是不切实际的“神话” | 共鸣

车企试水微信营销 高质量案例凤毛麟角

虚拟币开发专题(什么是第一代山寨币钱包(轻钱包)?)

牛币网解析比特币所带来的变革

• 作者 牛币网 •
2014年01月16日13:37 • 牛币网

2009 年1月钟本聪设计的一种数字货币,并把它命名为比特币,这也无意中揭开了比特币传奇的经历。比特币能够让用户在一个去中心化的、点对点的网络中完成支付,不需要一个中央的清算中心或者金融机构对交易进行清算。2009年到2013短短的四年间,比特币完成了华丽的变身,从一文不值到贵比黄金,不得不说,比特币带来了一次货币革命。
随着比特币的继续发展,其将会出现以下2个分支。
 
分支一是支付
 
这个分支注重的主要是支付的便捷性和快速性,所以,币的种类和数量以及交易是否快速就成了此类山寨币是否能够成功的关键,首先应该明确,此类币应该是没有上线的,用的人越多了,该币应该数目平稳上涨,但没有总体数目限制,其次就是交易和确认迅速,
 
分支二是带来的应用价值
 
比如xpm求最大质数问题。Nmc带来的域名应用。从发展的角度来看,会不断出现该类货币,通过货币带来相应的应用。比如最新出的cdn币,计算环境问题。不得不说,国内目前此类创新的币真的太少了,今后10年将是一个计算即财富的年代。如果说比特币是计算即财富的年代的里程碑,那么不得不说另外一种币-datacoin,附加了分布式存储价值,你的一个文件,可以保存在全世界所有的分布式节点里边,并且对于各个分布式节点,都有自己的权利去存储文件,您只需要支付对应的货币既可以,这真的是一次伟大的尝试。
 
之后此类的创新会源源不断,从计算机应用上来讲,计算能力,存储能力,网络转发能力,是计算机的3种资源,目前计算能力,存储能力的山寨币都已经开发出来了,比如InternetCoin,提供网络转发能力,只要启动钱包客户端,并且把访问Internet的网关指向钱包,所有的数据通过全球的分布式节点进行查找转发,查找最快节点,并且完成目标主机的访问。此种币挖矿就是提供网络转发,提供网路资源。
 

以上所述就是比特币带来了2大变革,一是支付变革,二是应用变革。刚刚起步的2014年比特币革命将拭目以待。(转自牛币网)

8455网站 1

区块链爱好者(QQ:53016353)

8455网站 2

一、什么是山寨币

  广东科技报5月18日整版报道“4·20”芦山地震发生后,壹基金宣布接受比特币捐款,短短几天之内收到233个比特币,折合人民币近22万元。由此,壹基金成为中国第一个接受比特币捐赠的NGO,比特币也第一次在中国成为捐赠物。比特币究竟是什么“币”?它怎么产生的,又如何使用呢?记者采访了华南理工大学经贸学院电子商务系教授徐勇。其实,比特币带有浓厚的数学思维,如果要究其本质,它不过是一串数字代码。

山寨币是“Simplified Payment
Verification”(简单支付验证)的缩写。中本聪论文简要地提及了这一概念,指出:不运行完全节点也可验证支付,用户只需要保存所有的block
header就可以了。用户虽然不能自己验证交易,但如果能够从区块链的某处找到相符的交易,他就可以知道网络已经认可了这笔交易,而且得到了网络的多少个确认。

比特币如何产生?基于密码学原理

按照中本聪的原文,这里有个细节需要注意,山寨币指的是“支付验证“,而不是“交易验证”。这两种验证有很大区别。
“交易验证”非常复杂,涉及到验证是否有足够余额可供支出、是否存在双花、脚本能否通过等等,通常由运行完全节点的矿工来完成。
“支付验证”则比较简单,只判断用于“支付”的那笔交易是否已经被验证过,并得到了多少的算力保护(多少确认数)。

  2008年,有人用笔名“中本聪”发表一篇论文《Bitcoin: A Peer-to-Peer
Electronic Cash SystemBitcoin: A Peer-to-Peer Electronic Cash
System》,描述了比特币的使用方法。中本聪关于比特币的开创性论文介绍了引入点对点电子现金系统的初衷,他也被认为是比特币的创造者。
  1年后,比特币的首笔交易完成。用户可以在交易平台购买比特币,也可以使用计算机“开采”比特币。用简单的话可以这样概述比特币:它基于一套密码编码、通过复杂算法产生;任何人都可以下载并运行比特币软件而参与制造比特币;比特币利用电子签名的方式来实现流通,通过P2P网络来核查重复消费。
  根据互联网专家“悟网不欢
”的介绍,在网络支付中,现金转化为数字,存在两个风险:数字易被篡改,容易出现伪造的非法货币;数字易被复制,可能导致一个人拿同样一笔钱支付两次。因此,在网络支付过程中,一定需要第三方监管机构来保障支付的安全性和可靠性。举例来说,我们用电子银行从一个账户转款给另外一个账户,全程使用的都是银行的交易系统,银行就是一个中心化的交易监管机构。
  中本聪认为,“借助金融机构作为可资信赖的第三方来处理电子支付信息,内生性地受制于‘基于信用的模式’的弱点。”因此他希望能创建一套“基于密码学原理而不基于信用,使得任何达成一致的双方,能够直接进行支付,从而不需要第三方中介的参与”的电子支付系统。并且,这个系统具备杜绝伪造货币和同一个货币被同一个人连续支付多次的作用。
  另外,通过工作量证明法,比特币还基本上杜绝了非法篡改历史交易记录的可能性。因为要想篡改记录,就必须拥有超越其他所有网络节点之和的计算能力。“在所有节点上保存全部交易记录、通过耗时的计算对已验证的交易进行记账,二者结合起来,就构成了一个安全、可靠的去中心化的支付系统。”“悟网不欢”形象地解释,比特币的本质就是把集中监管的工作量交付给一个人人参与的庞大网络,网络中的所有节点都承担了监管职责。
  比特币没有属于自己的“中央银行”,它的发行是基于一套无人能改的公开算法,这就意味着,比特币的生产与流通不受任何人、任何机构的控制。此外,这套特殊的算法还限定了比特币的发行总量,到2140年,比特币将达到2100万个的上限。

考虑这样一种情况,A收到来自B的一个通知,B声称他已经从某某账户中汇款一定数额的钱给了A。去中心方式下,没有任何人能证明B的可靠。接到这一通知,A如何能判断B所说的是真的呢?
在比特币系统中,这一通知是以一个固定格式的“交易”来实现的,该交易中包含B的汇款账户、B的签名、汇给A的金额以及A的地址。
如果A想本人亲自验证这笔交易,首先,A要遍历区块链账本,定位到B的账户上,这样才能查看B所给的账户上是否曾经有足够的金额;接下来,A要遍历后续的所有账本,看B是否已经支出了这个账户上的钱给别人(是否存在双花欺骗);然后还要验证脚本来判断B是否拥有该账户的支配权。这一过程要求A必须得到完整的区块链才行。

比特币如何获得?可用计算机“挖矿”

但是,如果A只想知道这笔支付是否已经得到了验证(如果验证了就发货),他可以依赖比特币系统来快速验证。即,检查发生此项支付的那笔交易是否已经收录于区块链中,并得到了多少个确认。

  由于每个比特币的每笔交易都需要进行验证,为了鼓励节点全身心投入验证以维护系统的正常运作,“中本聪”提出了相应的激励机制:对每个数据块内的第一笔交易进行特殊化处理,该交易产生若干个由该数据块创造者(也就是第一个对数据块内所有交易进行成功记账的人)拥有的新的电子货币。这个环节被称为
Mining,这也就是中文“挖矿”的由来。
  在比特币的世界里,每大约十分钟会向公开账本上记录一个数据块,这个数据块里包含了这十分钟内全球被验证的交易。抢到记账权的人(第一个根据数据块信息成功计算出合适字符串的人)被允许向自己的账户增加一笔金额,目前的数额是25比特币,每四年递减一半。也就是说今后四年,每10分钟会产生25个比特币。
  随着交易的增加,交易数据非常庞大,个人的电脑计算力几乎没有机会抢到记账权了。于是,目前最主流的方式就是很多电脑组成一个“矿池(Mining
Pool)”,如果该矿池抢到了记账权,在获得25个比特币之后,就按照每台电脑的计算贡献来分配。
  虽然比特币系统设计的算法比较复杂,但是具体到“挖矿”的操作,其实并不复杂。下载比特币客户端,得到一个比特币钱包,然后再在“矿池”上注册,填上钱包地址,然后安装“挖矿”软件,点击数据包,通过软件让它自动运行就可以了。“矿池”挖到比特币后,会根据每台电脑的计算能力自动分配比特币到你的钱包地址。
  这听起来似乎很简单,不过,这套复杂的运算,对计算机的要求非常高。若是使用普通的笔记本电脑,运行几年都不会有任何收获。计算能力越强,“挖矿”时越有优势。于是,专业的“挖矿机”应运而生。这些电脑为追求极致的运算速度而舍弃了其他功能,价格通常要几万元。
  徐勇告诉记者,决定“挖矿机”性能与价格的关键在于显卡,同时要求电脑主板有较多的插槽和较高配置的CPU和内存。
  按照发行规则,被“开采”出来的比特币越多,新币的计算就越难,“挖矿”也会越来越慢。如今,每10分钟,网络只能产生25个比特币,而到了2017年,这个数字会减半至12.5比特币,并且每隔4年再减半。有资深“比特人”表示,以现阶段的计算难度来看,“挖矿”的利润已经相当低了,甚至得不偿失。因此,很多“比特人”都会选择直接去交易平台购买。

原理:block
header中有三个关键字段,一是prev_block_8455网站 ,hash(前一区块的hash值,确保了区块链所记录的交易次序);二是bits(当前区块的计算难度),
三是merkle_root_hash(借助merkle
tree算法,确保收录与区块中所有交易的真实性)。

比特币怎么用?就像发微博

验证某个交易是否真实存在时,理论上,用户可以通过以下方式进行验证:

  比特币的钱包地址是一串数字与字母组成的字符串,只要使用比特币,每个人都有一个或若干个比特币钱包地址,用来付账和收钱。
  在一般人的概念里,加密和解密是只有一个密码的,比如压缩一个文件时候加上密码,那么解压的时候输入同一个密码就可以解开了。事实上,一直到上世纪70年代,密码学都停留在这个层面上,这个叫做对称加密算法。1976年,两位出色的数学家
W.Diffie和M.Hellman,他们提出了一种新的密码学思想,就是加密和解密要用不一样的密码。通过数学办法,产生一对密钥A和B,当使用A加密一份数据,必须使用B来解密;使用B来加密数据,必须用A才能解开;而且根据A可以很容易计算出B,反过来则不行。A就叫私钥,B叫做公钥。顾名思义,A是保密的,B是公开的。
  比特币资深人士“睡空空”说,私钥通常藏在钱包文件里,事实上它同样只是一个字符串,只是比地址略长一些。我们完全可以把它抄写或者打印到一张纸上,然后郑重地放到保险柜里。“那一个字符串就承载了你全部的比特币财富。”
  比特币如何支付呢?“睡空空”这样比喻:“比特币的支付方式其实就是在发微博,私钥就是微博密码,微博用户名就是公钥。”当A要给B付款时,只需要在自己的“微博”上说“我给B付款1比特币”,然后“挖矿”者就会验证你是不是有足够金额,如果验证通过,就把这条“微博”和十分钟内验证过的“其他微博”合到一起转发一次。当有足够的人转发(通常认为6个就足够了),就认为这一笔支付成功了。

  1. 从网络上获取并保存最长链的所有block header至本地;
  2. 计算该交易的hash值tx_hash;
  3. 定位到包含该tx_hash所在的区块,验证block
    header是否包含在已知的最长链中;
  4. 从区块中获取构建merkle tree所需的hash值;
  5. 根据这些hash值计算merkle_root_hash;
  6. 若计算结果与block
    header中的merkle_root_hash相等,则交易真实存在。
  7. 根据该block header所处的位置,确定该交易已经得到多少个确认。

延伸探究 如何创造一套货币?价值要得到大家认可

优点:极大地节省存储空间。减轻终端用户的负担。无论未来的交易量有多大,block
header的大小始终不变,只有80字节。按照每小时6个的出块速度,每年产出52560个区块。当只保存block
header时,每年新增的存储需求约为4兆字节,100年后累计的存储需求仅为400兆,即使用户使用的是最低端的设备,正常情况下也完全能够负载。

  为何比特币能够流通呢?从经济学的角度看,货币的本质就是一般等价物,具有价值尺度、流通手段、支付手段、贮藏手段、世界货币的职能。无论是现实流通中的纸币,还是电子货币,抑或虚拟货币,他们之所以是“货币”,都得具备一个流通的环境,并且价值得到交易双方的认可。因此,比特币的流通更像一场数学游戏,只要你认可它的游戏规则,就可以“一起玩”。
  那么,我们能不能创造出一套货币呢?徐勇说,以比特币为例,它是一种新型的虚拟货币,根据巴塞尔银行监管委员会的定义:电子货币是指在零售支付机制中,通过销售终端、不同的电子设备之间以及在网络上执行支付的“储值”和“预付支付机制”。
  所谓“储值”是指保存在物理介质中可以用于支付的价值,如IC卡、多功能信用卡等。这种介质亦被称为“电子钱包”,它类似于人们常用的普通钱包,当其储存的价值被使用后,可以通过特定设备向其追加价值。
  “预付支付机制”则是指存储在特定软件或网络中的一组传输并可用于支付的电子数据,通常被称为“数字现金”。只要符合这个定义的,并能为客户和商家接受的能起到支付作用的一串电子数据或者可用于支付的价值,都可以作为电子货币。
  电子货币的要素主要有:可以执行支付功能;为客户和商家共同接受;在零售支付机制中运行,也就是说可以作为一定范围中的支付手段;有一定的运行介质:电子设备或者网络。
  货币观念的革命从金融电子化开始以来就在进行,现在的比特币并不是什么稀奇的东西。徐勇说,我们从巴塞尔银行监管委员会对电子货币的定义,已经很清楚地看到,业界早就对电子货币有很清楚的认识。比特币只不过是一种纯数字形式的一种电子货币,这种形式其实在上世纪90年代就已经有了,比如e-cash、digicash等,各个网络游戏厂商推出的游戏币、游戏点卡之类的,其实也是此类形式的纯数字形式的虚拟货币,只不过之前很多用于购买虚拟商品等数字形式的商品。

问题:如何才能通过tx_hash定位到该交易所在的区块?
以往的比特币协议中缺少对此的支持。

二、比特币钱包

在进一步讨论山寨币的实现之前,先要说明一下比特币的钱存放的是什么,钱包和私钥之间是什么关系?

比特币钱包

既然用到“钱包”一词,那么应该与我们日常生活中使用的钱包有一定的相似之处。为了更直观说明,我们与日常生活中所使用的钱包做一下对比。
日常生活中里面存放的可能是纸币、支票、印鉴等等(为了简化说明,我们把银行卡排除在外,使用银行卡涉及到很多中间环节,增加表述上的复杂度)。
用纸币购物时,
1.
从钱包中凑足若干张不同面值的纸币,计算总面值是否大于所需金额以及应找回多少零钱;

  1. 将这些纸币直接交给卖方;
  2. 卖方验证这些纸币的真伪;
  3. 卖方计算这些纸币的面值是否大于或等于商品价格,并找回相应的零钱。
  4. 将收到的零钱放回钱包。

比特币的钱包里存放的相当于是一张张标有面值的“一次性支票”和对应的“印鉴”。支付时,
1.
用户从钱包中取出若干张“一次性支票”,自己计算总面值是否大于所需金额以及应找回多少零钱,注意要扣除比特币系统所收取的手续费;
2.
给卖方开一张支票,注明卖方地址和支付金额;如果需要找零,给自己开一张找零支票(写上自己的地址和找零金额);

  1. 在每张从钱包中取出的支票上加盖对应的印鉴,确认支付权;
    4.
    将这些票据提交给比特币系统,比特币系统验证支票的真伪和支付是否有效。
    5.
    若比特币系统验证通过,收款方将收到的支票放入钱包。用户则将自己钱包中的已支付的支票丢弃(这些支票已经被比特币系统视为无效了,无法继续使用),

即使是刚接触比特币的人,估计也能猜出“印鉴”指的是“私钥”。但“一次性支票”是什么?
比特币系统中,这种“一次性支票”的术语是UTXO,全称是Unspent Transaction
Outputs(未花费的交易输出)。区块链是一个收录所有历史交易(Transaction)的总帐,每个区块(block)中包含若干笔交易记录。
每个交易记录由两部分构成:资金来源(可以有多个来源)和资金去向(可以有多个去向),术语为Tx_in(交易输入)和Tx_out(交易输出)。也就是说,每笔交易TX包含有若干个Tx_in和若干个Tx_out。

除创世区块中的交易(genesis
block)外,每笔交易必须要有资金来源。资金来源有两种,一种是挖矿奖励(依照固定算法实现的货币发行),出现在每个block的第一笔交易中;另一种是先前的交易中未曾使用的某个Tx_out(交易输出),即UTXO。支出方要出示证据来证明自己对该Tx_out拥有所有权,而比特币系统则要验证该Tx_out是否真的未被花费(是否是UTXO)以及支出方是否有权将其花费。

资金去向(TX_out)包含两个部分,一是传递的金额,二是支配权(谁可以动用)。取款权通过比特币的脚本系统来实现。若收款方地址是以1开头的普通地址,则脚本中会包含地址所对应公钥的hash值(hash160),动用款项时一般需要用对应的私钥进行签名;若收款方地址是以3开头的多重签名地址,则脚本中会包含某个特定脚本的hash值(hash160),动用款项时,一般需要依照特定的脚本,用多个私钥来签名。

用户钱包中的比特币实际上是用户拥有支配权的、且尚未花费的Tx_out中记录的金额总和,即用户可支配的所有UTXO金额之和。

完整的钱包中应存有若干个UTXO和支配每个UTXO时所对应的私钥。当然,有时从安全角度出发,可能会把钱包划分为两个部分,在线钱包中只有UTXO,而离线钱包只存私钥。

但是,用户怎么才能把自己的所有UTXO都放到钱包中呢?

三、用户如何收录自己的UTXO

(一)去中心化方式:
实现方法:

  1. 在本地建立一个用于存储UTXO的数据库;
    2.
    设置区块扫描起始点(区块链上的扫描起始高度),从该点开始,依次下载该点之后所有区块(block)的完整数据。
  2. 解析每个block的所有TX数据,依次读取每个Tx_in的prev_Tx_out([tx
    hash] +
    [tx_out的序号]),检索UTXO数据库中是否存在这个Tx_out,如果有,则从UTXO数据库中删除(或标记删除)。
  3. 依次解析每个Tx_out的脚本,若与用户相关,则将[tx hash] +
    [Tx_out的序号]以及整个tx_out的内容记录到UTXO数据库;

备注:如果钱包中只有新创建的私钥,可以从最新的区块开始扫描(由于私钥发生碰撞的可能性可以视为0,在你告知他人比特币地址之前,该私钥对应的地址上不会有任何收入)

优点:不依赖于信任;数据准确。
缺点:速度慢,需要从比特币网络下载大量数据,对网络造成的压力大。

(二)中心化方式:
1.
某个中心化机构(或个人)运行完整的比特币节点,建立一个收录所有UTXO的数据库。

  1. 用户用中心化机构提供的api来请求与自己有关的UTXO数据。

优点:速度快,不拖累比特币网络;
缺点:依赖于信任;数据不一定准确(有可能中心化服务器出现故障,或是与中心服务器的会话被劫持,数据遭篡改)

四、瘦客户端、山寨币轻钱包和山寨币节点是什么?

瘦客户端:参考了山寨币的机制,在监听收款地址时,客户端在本地只需保存与用户可支配交易相关的数据。因为本地没有完整的区块链,缺少发送方的相关数据,客户端无法亲自验证交易是否合法,只能判断交易是否是被收录,并且得到了几个确认。这与山寨币有很多相似之处,因而很多场合下这种瘦客户端也常被成为是“山寨币客户端”,不过,与山寨币的区别是,在去中心化方式下,这些客户端仍需下载每个新区块的全部数据并进行解析,只是无需在本地保存全部数据而已。

“轻钱包”是用瘦客户端模式实现的钱包,因为不存储完整区块链,就涉及到如何获取UTXO的问题。不同的开发者可能有各自的实现方法,但从效率上考虑,往往多用中心化的方式来实现。

山寨币节点:支持使用布隆过滤器(Bloom
filter)在快速检索并返回相关数据的节点。这样的节点可以为去中心化方式山寨币查询提供必要的支持。
山寨币在实现上涉及到一个问题,如何才能通过tx_hash来定位到该支付交易所在的区块?用中心化方式来实现很好解决,但用去中心化就不那么简单了,因为以往的比特币系统协议中缺少对山寨币的支持。原有协议中,可以通过getheaders命令来获取block
headers,可以通过getdata命令支持获取指定的block,
但不支持通过tx_hash反向查找所在的block。为了定位block,客户端往往不得不下载整个区块链。Bloom
filter解决了客户端检索的问题,原理是Bloom
filter可以快速判断出某检索值一定不存在于某个指定的集合,从而可以过滤掉大量无关数据,减少客户端不必要的下载量。

前文提到,山寨币的用途是验证某个支付是否确实存在,并得到多少个确认。而钱包的用途则是用于管理自己的资产以及进行支付。简言之,山寨币的应用场合往往是为发货做准备(知道钱到帐了),“轻钱包”的应用场合往往是数钱或花钱。虽然“轻钱包”中部分借鉴了山寨币的机制,但和山寨币是完全不用的应用方向,直接把这两个词连起略显牵强。这种钱包要么采用中心化的方式——提高了效率,但引入了信任的风险;要么采用去中心化方式——无需信任,但效率低,且增加网络的负担。

山寨币节点的出现使以去中心化方式来实现高效、低负荷的“轻钱包”成为了可能。笔者认为将基于山寨币节点来实现的”轻钱包”简称为“山寨币轻钱包”可能会更为合适些。

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图