我们都知道支付宝的转账流程:打开APP、输入转账地址或者扫二维码、输入转账金额、点击确认并输入密码。
比特币的转账流程也是一样的。但是比特币和支付宝背后的转账原理其实是千差万别的。
支付宝采用的是账户余额模型,比如大白支付宝账户有100元,给小黑转账80元,大白的账户余额会减少80元,变成20元,小黑的账户余额由0变成80元,大白和小黑的账户都会直接显示一个余额,这就是账户余额模型。
01.UTXO模型简介
比特币系统是一个点对点的电子现金系统,UTXO模型和我们的现金支付模型有很多的共同点。大白有两张面值50元的现金纸币,想要给小黑80元,需要把这两张50元的现金给小黑,小黑再找给大白20元,大白和小黑钱包里还有多少钱不会像支付宝那样直接显示一个余额,而是需要自己去数一下:钱包里有几张纸币以及每张的面额,然后进行加总。我们可以把现金的支付方式看做是UTXO模式的简化版本。
UTXO模型和现金支付模型的共同点:
①每条UTXO都有对应的面值,就像每张纸币会有一个面值一样。
②一条UTXO在交易中必须作为整体被消耗,就像纸币一样不可以撕开来使用。
如下图:左边的地址是比特币交易的发起地址,右边是2个接收地址,其中1个地址跟左边的发起地址是一样的,这笔交易的转账金额是0.26682745BTC,其中接收者拿到了0.1732608BTC,回到原转账地址的是0.09356665BTC。
③UTXO和现金一样都有最小面值,UTXO最小面值单位是聪,1个BTC=10的8次方聪,也就是1亿聪,1聪=0.00000001个BTC。
Aurora宣布推出一站式区块链业务解决方案Aurora Cloud,用于加速Web3的大规模应用:3月3日消息,Aurora是基于NEAR的以太坊Layer2,其宣布推出一站式区块链业务解决方案Aurora Cloud,用于加速Web3的大规模采用。
据介绍,Aurora Cloud是一个平台和一套产品,包括Borealis Business、Aurora Pass和Aurora Silos。
其中,Borealis Business是一个交易处理和会计引擎,它允许企业从用户的体验中删除交易费用的概念,并可以支持几乎任何可以想象的区块链业务模式。
Aurora Pass即将推出iOS和Android,它允许采用区块链技术的Web2企业使用Touch ID和Face ID生物识别设备为客户提供无成本和无摩擦的交易签名。
Aurora Silos是可以为Aurora Cloud客户提供的专用区块链,它提供了一系列超越以太坊兼容性的功能。通过Aurora Silo,企业可以在允许多级访问控制、定制代币和交易费用机制的环境中利用区块链的优势,同时保持与外部世界的完全以太坊兼容性和互操作性。[2023/3/3 12:40:11]
UTXO模型和现金支付模型的不同点:
①现金支付:找零是收款人做的;
比特币系统:找零是发起者自己进行设置的。
②现金的面值是固定的,UTXO的面值不固定,而是在发生交易的过程中也随之改变。
比特币的UTXO面值是不固定的,如下图,这是史上第一笔比特币交易,中本聪转给哈尔·芬尼10个BTC,这里花费了一条面值为50BTC的UTXO,找零之后得到了面值为40BTC的UTXO。
原本一个面值50的UTXO变成了两个面值分别为10BTC和40BTC的UTXO,如果中本聪给转给哈尔·芬尼的是15个BTC,那么面值为50BTC的UTXO就会变成两个面值分别为35BTC和15BTC的UTXO。
下图是一个比特币UTXO集的数据图,从2009年到2019年这10年之间,UTXO集的数据整体是一个增长的趋势。
二三四五:区块链技术是公司研究和探索的元宇宙领域常用技术之一:7月6日消息,A股上市公司二三四五7月6日在互动平台表示,区块链技术是公司研究和探索的元宇宙领域的常用技术之一。公司基于大数据分析、机器学习等人工智能技术,优化信息流推广和个性化推荐,高效连接客户与用户,促进流量价值的商业化变现。[2022/7/6 1:55:39]
③现金是不可能被双花的,比特币有可能双花。
同一笔比特币被花费两次甚至多次的情况就叫做双花。比特币它作为一种虚拟货币是没有实体的,它的本质是数据,有可能把一笔同样的比特币花费两次。
UTXO是UnspendTransactionOutput,即未消费的交易输出,每一笔比特币的交易都会有输入和输出。
当大白转账80元给小黑的时候,这80元对大白来说是一笔交易的输出,叫transactionoutput,对于小黑来讲这是一笔交易收入transactioninput,如果后面某个时候小黑把这80元又花出去了,那么这80元对于小黑来讲也变成了交易输出,而在小黑还没有把这钱花出去之前,它就是一笔还没有被花费掉的交易输出,transaction的缩写是tx,所以UnspendTransactionOutput就是UTXO。
我们看一下链上数据是什么样的?如下图:
其中右上方的confirmation就是确认的意思,它这里显示6+,也就是说这笔交易被确认的交易区块数已经超过了6个,通常一笔交易它被确认的区块数超过6个的时候,就认为这笔交易已经是一个完成的状态,并且不可逆了。
什么意思呢?先来解释一下这个确认的区块数,当一笔交易被放进一个区块里面,增加到区块链上最新的那个块的时候,这个时候的区块确认数是1,然后后面不断的会有新的区块增加上来,得到的区块确认数就会变成2、3、4、5、6......这样子不断的去增加,当它后面跟着的区块是5个,也就是说这笔交易得到的区块确认数是6的时候,我们就认为这笔交易不可能再逆转了。6+的旁边还有个锁的标志,当这个区块的确认数达到6以及以上的时候,这个锁就会变成锁上的样子。
声音 | 朱幼平:数字货币和区块链已经成为国际竞争的新赛道:在今晚 AMA Block与金色财经共同主办的线上分享活动中,针对“区块链是如何成为国家战略的”国家信息中心中经网管理中心副主任朱幼平指出:第一,区块链是拉动经济增长的新着力点,制造业,现代农业,金融等领域都需要数字化转型;第二,区块链是提升国际竞争力的一个重要手段,数字货币和区块链已经成为了国际竞争的一个新赛道,如Facebook发行Libra是要争夺数字货币在国际上的主导权;第三,区块链和数字货币的发展,应该成为人民币国际化一个重要的推力,并且可以在一带一路和全球经济一体化等领域发挥重要作用。人民币国际化的进程基本上有两点,第一是对冲美元为基础的国际货币霸权。第二就是能够让人民币成为国际货币体系中一个能够发挥重要作用的币种。[2019/11/1]
02.找零机制
中本聪有一个面值为50的UTXO,转给哈尔·芬尼10个BTC,除了要写哈尔·芬尼这个收款人的地址,还要写找零地址,说明多出来的40个BTC想放到哪个比特币地址,可以是原来发起转账的地址,也可以是其他的比特币地址,必须得写一个找零地址,告诉矿工:剩下的40个BTC是想放在哪里的?
因此右边的交易收款方的地址有两个,一个是哈尔·芬尼的地址,一个就是中本聪的地址,中本聪设置的找零地址就是发起交易的这个地址,但是通常呢找零地址是不会和原交易发起地址相同的,这是出于隐私保护的考虑。
我们知道比特币是一个公开的大账本,所以如果总是用单一的地址进行交易的话,就容易有隐私泄露的危险,比如说别人一查这个地址,就可以看到地址上所有的比特币余额,知道你的具体资产有多少。因此呢,出于隐私保护的考虑,建议大家在使用比特币进行交易的时候,一定每一次都要使用新的地址。这样别人无法看到你拥有的其他比特币地址里面有多少钱,以及你用它们做了什么交易。
上图中的比特币就是中本聪的一个地址,它里面一共发生了45笔交易,大约还有18个比特币,但是这只是他其中一个地址,他手里究竟有多少比特币,我们是没有一个精确的数据的。据说中本聪拥有100万个比特币,也是通过其他的一些信息模模糊糊推断出来的,并不能完全肯定,因为中本聪不可能总是使用同一个比特币地址。
现场 | 区块链在工业、金融等方面均可实现应用落地:金色财经现场报道,在今日万向区块链实验室举办的2018区块链·新经济第四届区块链全球峰会上,与会嘉宾做出了题为《区块链应用的落地实践》的讨论。万向控股CIO王允臻提到,万向对区块链的关注具备更多维度,但较为注重制造业。区块链工业可以产生很多应用,比如溯源,他提到,新能源电池会成为很好的区块链应用案例;中都物流王兴民提及,中都物流正在与北汽新能源基地合作上线区块链应用系统;星展银行徐魔宇认为,区块链能够将数据变为金融的工具,星展银行正尝试用区块链技术把国与国之间的贸易联系起来;恒丰银行喻巍认为,区块链可以用更少步骤提供更多信息,恒丰银行目前更关注区块链在供应链金融方面的应用。[2018/9/12]
大家看上图的上面部分,这三个地址没有一个是一样的,那当找零地址与发起交易地址不同的时候,收款方这两个地址哪个才是找零地址呢?答案是:不知道,你没有办法知道,他是转账了0.29个BTC,找零37.208506个BTC,还是转账了37.208506个BTC,找零0.29个BTC。在blockchain这个浏览器上,你可以看到它对这笔交易中到底哪个才是转账的比特币做了一个预计,叫做estimatedbtctransacted,估计0.29个BTC是转账的金额。
如果交易的时候不写找零地址,剩下的钱会被系统默认为全部归属于矿工,全部给矿工当成是帮你打包交易的手续费。如下图:
上图中这笔交易的发起者,不知道是因为搞错了还是什么,我们可以看到这个交易,只有一个收款地址没有找零地址,所以除了收款地址收到的0.001个BTC之外,剩下的291.2409个BTC全部都变成了矿工的手续费了。
但是现在的加密货币钱包软件都是非常人性化的,照顾到了一些总是忘记或者压根就不知道需要设置找零地址的人,会自动帮用户去生成1个找零地址和手续费,如果你觉得钱包自动设置的手续费太高了,也可以进行下调,或者如果你想要交易被尽快确认的话也可以调高手续费。
04.旷工对UTXO进行校验
FedEx转向区块链发展的下一阶段:据newsbtc报道:FedEx公司最近完成了对基于区块链的概念验证的初步尝试,并获得积极结果,有望于近期发布产品。物流产业可以通过分布式账本技术带来巨大变革。FedEx Freight战略规划副总裁Daly Chrystie 评论道:“重要的一点是在我们都同意的情况下开发这些数据元素。这是一个独特的东西,它让原本各执一词的人们坐在同一张桌子上,讨论数据应用,以及就制定统一的标准去协商一致。”[2018/2/7]
作为矿工,打包前要考虑3个问题:
1、发起交易者的地址里是否有足够的UTXO
也就是说是否有足够的比特币,矿工会查看交易者的UTXO集,旷工可以从这个集合里面去查询发起者交易的地址当中是否有足够的余额,如果余额不足,交易无效。
2、发起者的这笔交易使用的比特币是否是双花
矿工去查询区块链账本上的数据,检验这笔交易发起者之前是否已经用这笔比特币买过其他的东西,如果使用的UTXO已经支付过给别人了,存在双花的问题,那么这笔交易就不能通过矿工的交易校验。
3、发起者能否提供合法的私钥签名
合法的私钥签名用来证实发起者对这个比特币地址是有控制权的,如果不能提供私钥签名,那么矿工就会判定他发行的这笔交易是非法的,不能通过检验。
脚本语言在区块链中是一个比较抽象的概念,但也是一个非常重要的功能,我们经常会说比特币系统是图灵不完备的,以太坊是图灵完备的,这其实是在说他们的脚本是否图灵完备,图灵完备是对计算机能力的描述,指可以实现所有可编程计算机能够执行的计算逻辑。
一个图灵完备的脚本语言可以发挥计算机所有的能力,反之一个图灵不完备的语言是不能发挥计算机的所有能力的。比如在比特币系统当中,它的脚本是不图灵完备的,只能进行比特币的接收和发送,而以太坊的脚本是图灵完备的,或者严格说起来其实是半图灵完备的,它除了可以进行以太币的发送和接收,还可以部署智能合约,实现更多的功能。比特币的脚本是智能合约的雏形,但它不是图灵完备的,可是这里要说明一点:不图灵完备并不意味着就是一个缺陷,因为图灵完备涉及到的技术非常复杂,容易引发安全漏洞。
比特币的设计初衷只是想做一个现实生活中的支付货币,货币的交易和流通安全是第1位的,他想简简单单一点,以太坊的创始人“V神”曾经和比特币的核心开发团队建议,把脚本变得更丰富一点,但是被拒绝了,所以他之后就创造了脚本语言更加丰富的以太坊。
比特币的脚本系统是一个先进后出的堆栈模型,什么是堆栈?堆栈也是一个计算机科学里经常使用到的比较抽象的数据类型,堆栈的物体有一个特性,最后一个放进堆栈的物体总是会被最先拿出来。我们可以把堆栈想象成一个箱子,你往箱子里面先是放了一本书,然后放了一个帽子,最后放了一把剪刀,如果要拿出来,顺序是剪刀、帽子、书本。
所以最先进入箱子的东西是最后拿出来的,这就是一个先进后出的堆栈模型,或者后进先出的堆栈模型,堆栈中两个最重要的操作是push和pop,push操作是加入一个元素,pop操作刚好相反,是移走一个元素。
如上图:大家先看inputscripts输入脚本,输入脚本也叫做解锁脚本。
第1条指令是pushdata,pushdata意思就是说把数据推入堆栈,71是指这条数据大小是71个字节,它是用16进制的格式来表示的。
。
第2条指令是pushdata,也就是把这33个字节长的数据也推入堆栈。
那么推进去的这些数据到底是什么数字呢?第1条指令推入的数据是私钥签名,第2条指令推入的数据是公钥。现在这个堆栈里面有2层数据,第1层是发起方的私钥签名,第2层是发起方的公钥。
outputscripts
然后我们再来看看outputscripts输出脚本,输出脚本也叫做锁定脚本。
第1条指令是dup,dup是duplicate的缩写,dup就是把栈顶的数据复制一份。
第2条指令是hash160,也就是把发起方的公钥进行hash160运算得到公钥哈希。
第3条指令是pushdata,将后面这20个字节的数据即公钥哈希值推入堆栈。
验证交易
到这里所有验证交易是否合法的信息都已经推入到堆栈了,接下来就可以进行验证了。
第1步是equalverify,equalverify就是验证判断两样东西是否相等,在这里也就是需要判断比较栈顶的两个数据是否相等。
为什么要做这一步呢?堆栈里面它的第3层的公钥哈希值是从输入脚本inputscript里推导出来的,而第4层的公钥哈希值是从outputscript输出脚本里面拿出来的,输出脚本也叫锁定脚本,锁定脚本这个公钥哈希值是地址,是区块链上大家都能查到的,但是输入脚本的公钥哈希值是只有拥有对应公钥的人才可以算得出来的。
前面我们讲过,非对称加密的私钥和公钥,私钥是要自己保存好的,公钥可以去分享给别人,私钥到公钥是一个单向的推导过程,不能反推,但是因为量子计算机的出现,它是一个非常强大的计算机,有可能做到从公钥反推出来私钥。
一开始设计的时候,中本聪是直接拿公钥作为地址的,这是非常不安全的,后来程序员们把公钥的哈希值进行编码作为地址,而量子计算机目前还没有办法做到直接从地址反推出来私钥。
因此现在比特币区块链上,私钥和公钥都是大家轻易不会拿出来分享的,如果你想要使用一个地址里的比特币进行转账的话,那么你首先得先提供对应的公钥,让旷工可以检查,你是这个地址的拥有者,因为你有相应的公钥。第1步的检查就是把发起者输入脚本里的哈希值和输出脚本里的哈希值进行对应,看是否是相同的,如果是相同的,就先通过了第1道检验。
接着是第2步检验叫checksig,就是利用发起者的公钥对签名进行检查,检查通过后可以确认这笔交易是本人发起的。
以上就是比特币的UTXO模型校验的过程。
04.量子计算机
量子加密是加密技术第7代密码学技术,它的上一代是RSA加密系统,RSA是现在应用范围最广泛的加密手段。比特币采用的是椭圆曲线ECC算法,单位安全强度是要强于RSA算法的。但无论是ECC还是RSA,这两种加密算法在量子计算机面前都还不够强大,很容易会被破解,量子计算机一旦成功,对目前网络、通讯、通信和银行上的RSA加密算法会构成威胁。
比特币系统中的加密算法一共是两种,一个是椭圆曲线算法,一个是哈希算法,椭圆曲线算法是用于私钥到公钥,哈希算法是用于公钥到地址。私钥到公钥的推倒过程原本是不可逆的单向的,公钥不可能反向推导出私钥,因为公钥反推私钥的工作量非常的大,目前的计算机是无法胜任如此大的工作量的。而最新的量子计算机被认为是可以做到从公钥反推私钥的,甚至有人说量子计算机投入使用的时候就是比特币的终结之日。
最近有很多媒体都在报道谷歌研发的量子计算机取得了不小的进步,谷歌的研究人员表示,谷歌的处理器可以在3分20秒之内完成目前全球排名第一的超级计算机需要1万年才能完成的计算,按照一位普利茅斯大学教授的估计,量子计算机可以在几分钟之内就从公钥反推出私钥是什么,而在知道所有私钥之后就可以拥有对应地址的比特币的转账权利了。
所以比特币系统没有直接拿公钥来作为地址,而是拿公钥哈希值进行编码之后作为地址,公钥到地址之间多的这一步哈希处理就是为了在量子计算机面前多放一个障碍,有了这个哈希函数,目前的量子计算机还无法有效的破解比特币的私钥,直接从一个地址去反推私钥,这是目前量子计算机还无法做到的。
但是UTXO模型里,我们看到了当你在一个地址里面发起一笔转账的时候,你的脚本里面就暴露了这个地址对应的公钥。所以我们在使用比特币地址的时候,还是建议大家只使用一次性的地址,也就是说这个地址一旦发生过向外的转账,你后面就不要再去用它了,你进行转账的时候就把你们的钱全部转出,因为在转账的时候,这个公钥已经暴露在区块链上了,量子计算机已经足够强大了,它可以做到在几分钟之内从公钥反推私钥,所以如果一个地址反复的去用,公钥已经在网络上暴露了,它是非常的不安全的,我们可以把这些比特币转到一个新的还没有使用过的地址里面,那这个地址它的公钥是没有暴露的,暂时还是安全的。
标签:比特币BTC区块链比特币中国官网联系方式40亿比特币能提现吗比特币最新价格行情走势BTCs是不是黄了btc钱包官网btc短线交易局区块链工程专业学什么区块链存证怎么弄区块链技术发展现
4小时线别的的走势依旧还是震下荡下跌,并且形下行趋势。在站稳9500后企图在下方运行,日内我们继续关注下行趋势下沿的支撑8500这里能否支撑住币价.
1900/1/1 0:00:00还记得之前那个万众瞩目又吊人胃口的Bakkt吗,这次它又回到了舞台。从千呼万唤始出来后,Bakkt启动后的2个半小时内,只完成了8笔交易.
1900/1/1 0:00:00前言:最近的区块链一级市场投资依然很冷,但我们仍然注意到一些关于dApp生态的一些融资进展,Binance上周宣布收购了去中心化应用分析服务平台Dappreview.
1900/1/1 0:00:00粤港澳大湾区乐正:大湾区应该抢占数字金融的制高点,立项策划组建“中国数字资产交易所”据21财经报道,12月19日,粤港澳大湾区研究院学术总监、南方科技大学教授、国务院津贴专家乐正表示.
1900/1/1 0:00:00NewBitcoin已经确认,跟踪五种主要加密货币指数的交易所交易产品将于11月21日开始在瑞士主要证券交易所交易。该交易所也确认该产品不是交易所交易基金).
1900/1/1 0:00:001月30日,美国联储局一如预期维持利率不变,认为美国经济正温和增长,就业市场仍然强劲。联邦公开市场委员会(FOMC)一致通过将联邦基金利率维持于1.5%至1.75%区间,为维持基准利率继续在这个.
1900/1/1 0:00:00