主页 > imtoken最新官网客服 > 遇到数学不好的收银员怎么办? (关于UTXO你需要知道的事)|从008学区块链

遇到数学不好的收银员怎么办? (关于UTXO你需要知道的事)|从008学区块链

imtoken最新官网客服 2023-01-18 20:20:29

手里有比特币怎么变成钱_有币领比特币_交易比特币1手要多少钱

(图片来自网络)

我的同事小张前段时间去泰国度假了。 世界上到处都是洁白的牙齿和咧嘴笑的美女。 小张心情无限好。 他去一家商店买了一杯16元的饮料。 小张递了一张20元的纸条,想了想,又递了1元,“美女,给我零钱。” 朴素的脸上满是真诚。

收银台的小姑娘接过小张递过来的1块钱,皱起了眉头。 完了,妹子数学不好,我给你4块钱还给我1块钱是什么意思? 女孩看了看计算器上显示的4块钱,从抽屉里拿出4枚硬币,把还没暖和的1块钱还给了小张。 整个操作天衣无缝()()到())(到)())(到)())哈哈哈。

小张内心OS:什么叫按约定凑齐?

妹子内心OS:这人又不是傻子,你给我1块钱干嘛? 我太漂亮了吗?

收银姑娘怎么这么纠结? 是的,因为她必须计算余额。 小张的操作可以看如下:

手里有比特币怎么变成钱_有币领比特币_交易比特币1手要多少钱

操作一:

小张一共给了21元手里有比特币怎么变成钱,先给20元,再给1元。

收银员计算:

20-16=4,小张要给小张4块钱买一瓶水。

4+1=5,小张刚刚又交了1块钱,现在我有5块钱了,这5块钱要全部给小张。

收银员给了小张5块钱。

有币领比特币_手里有比特币怎么变成钱_交易比特币1手要多少钱

操作二:

小张有2张钞票,一张是1元,一张是20元,20元够买水,所以1元不找,给了20元。

收银员计算:

20-16=4

收银员给小张4元,小张手里还有1元,一共5元

小张手里拿着5块钱,但是第二次操作收银员明显少了一步,这对于数学不好的人来说是个不小的负担。 如果你想象一下,这只是一个极端的小例子。 如果把这个放大,100个小张“需要补全钱”,1000个小张“需要补全钱”。 收银妹脑子够不够? 你能不生气吗? (为了妹妹鄙视小张哈哈)

有币领比特币_手里有比特币怎么变成钱_交易比特币1手要多少钱

把这个问题放到比特币世界,就引出了今天的话题,UTXO(Unspent Transaction Output),即未花费的交易输出。

把上面例子中小张的钱换成比特币,小张手里的5块钱是未花费的交易输出,小张买水花的钱是已花费的交易输出。

为什么要举小张买水的例子呢? 因为UTXO的计算方式和操作2很相似,只是确认了交易本身,有悖常理。

只确认交易本身,例如:UTXO方法关心张给了收银员多少钱,收银员收到了多少; 不管张某每次找零,钱包里还有多少钱,收银员抽屉里赚了多少万。 如果想知道小张钱包里还剩多少钱怎么办? 你只需要计算这个时间点之前小张钱包进出的总数据,加减减去,瞬间得到小张的股票。

这样做有什么好处?

首先,减少了计算量。 小计算意味着数据库是可移植的。 比特币已经运行了 8 年多,所有的交易记录都可以在电脑上复制。 同样的道理,想想天猫和京东。 一天的交易记录需要数百台服务器的支持。 为什么,因为数据库太大了。

交易比特币1手要多少钱_手里有比特币怎么变成钱_有币领比特币

其次,这种方式避免了双重支出。 这是与“余额”数据库方法的比较。

余额需要实时更新每个用户账户的余额。 比如小张今天在店里买了8样东西,啤酒、饮料、瓜子、花生矿泉水。 小张每次买东西,系统都会更新:钱包余额80个比特币,钱包余额25个比特币,钱包余额16个比特币……好像没什么波澜。 一番交易后,暗黑小张上线——

小张买了一个苹果,用比特币钱包支付了1个比特币。 已付款,但矿工尚未确认。 小张对着收银员哈哈大笑,收银姑娘一头雾水。 她只看到账户上有小张付的币,就把红苹果给了小张。 注意这里收银妹的账号显示小张确实支付了1个币,但是没有矿工给他确认。 我们之前谈到了分叉的概念。 这时,小张开始利用分叉的特性干坏事。

小张一出门就去下一家店,用刚才买苹果的比特币又买了一个梨,找到矿工确认交易。 而且,它用算力找了6个矿工来确认。

好吧,这下收银姑娘糊涂了。 刚才看了余额,小张的币已经付了,但是我还没确认。 现在我看看,纳尼? 小张付的币没了! 小张用算力和分叉把1个比特币当成2朵花,啧啧啧~

苹果已经被小张吃掉了,但是小张的比特币却在隔壁超市送给了老王。 女孩头晕目眩。

手里有比特币怎么变成钱_有币领比特币_交易比特币1手要多少钱

这就是双重支出问题。 在现实生活中,一笔钱是不可能实时到账的,而且交易越多,越容易出现延迟确认的情况。 当矿工还没有完成确认时,小张可以再次把钱付给另一个商家,只要他的算力足够,这样新的交易就可以得到多次确认,写入交易的区块成为最长的链条。

为了避免重复支付的问题,收款人一般需要这样做:等到币到账,6个矿工确认后再发货。 一旦6个矿工确认,要硬分叉去改变刚才的交易记录,需要耗费大量的算力。 这个时候作案成本太高,发生这种事情的概率很小。

让我们反直觉地谈谈。 文章开头,小张花了16元买了水。 小张1个20元,1个1元,这时候系统会从小张的地址中扣除20,而不是16,小张输出20,还有4个未花费的输出。 此时小张有2个未花费输出,一个4元,一个1元。

这个过程和我们平时花钱的习惯有点不一样,但是也很好理解。 你只要把小张手里的比特币想象成钞票一样,撕不开,必须一次一张发,这样就比较容易理解了。 虽然你花了20块钱,但系统会给你零钱,4块钱会退到你的地址。 这里只是为了让大家概念更清晰,对实际交易没有太大的干扰。

OK,我们再回顾一下,UTXO是未花费的交易输出,只对应地址的概念,而不是我们熟悉的“账户和余额”。 UTXO只是对交易本身进行确认,所以交易的计算量小,数据库也小,目前运行没有出错。 当然,UTXO也有一些让人不舒服的特性。 每次不能拆币消费,但不影响交易~好了,这就是我们今天要讲的区块链知识,让我们一起进步!

PS,感谢小张亲自表演~哈哈哈~

笔记:

反直觉的概念是参考了唐强老师的《李笑来的比特币账户没有余额》手里有比特币怎么变成钱,公众号:唐强(tangqiang0401),不知道为什么,我觉得用“花钱换零钱”。 明白了哈哈哈~可能是我理解的不够深入,你可以看看他的文章,欢迎给我提建议~