第一、如何理解 UTXO ?
UTXO 这个概念很难理解,中文翻译成未花费的交易输出,我估计正常人都看不懂它在说什么。
我们先简单点,你就把它理解成一个装钱的容器,比如存钱罐,或者盒子之类的。只是这个存钱罐是封起来的,还没有使用过,当然我们是说它里面装的钱没有花费过。
好,现在复杂一点来说,UTXO还是一个容器,不过它装的是这笔钱的数据。那啥是这笔钱的数据?你就认为是它的金额,所有者这些。
好,现在要再复杂一点,当然它还是一个容器。不过我们还要去思考这里装的东西该如何排列组合,形成什么样的关系才能达到我们想要的效果。
它要装的是一笔钱,我们要思考这笔钱的金额和所有者要怎么才能表达明白。
在物理世界,可能需要用纸币面额,张数,还有看它放在哪个人的钱包里面来确定这些概念。
数字世界表达概念时的难题
但是我们现在在数字世界里面,而且是去中心化的场景,要表达清楚这些概念就没有那么容易了。
因为这里面涉及到关系和变化,比如我说我有100元,数字是很容易表达,可以这100元是钱,我需要确认它是不是真的有效,我去花费它的时候对方也需要确认你这100元是不是我自己随便填的是一个数,或者有没有可能我把它同时发给了几个人,他可能就要去核对我的交易历史,这笔钱是怎么来的,可能还要核对我的身份,看看是不是真的属于我,等等。
这些就都是很复杂的过程和关系了。该怎么表达呢?
数字世界因为无法做到所见即所得,只用一笔钱这样简单的词语来表达资产这个概念无法理解到它代表的更多的含义,比如不能理解里的变化,关系,以及状态,也就不能真正理解它是什么。
这就是数字世界里面要表达一个概念时的难题。
数据结构的思想
所以对各种概念或者物体的表达就需要通过多种维度进行组合才表达得出来,特别是对比较复杂和抽象的概念更是如此。 比如对一个人的解释可能会包括基本的概念定义,还要加上各种属性才能说得清楚,比如性别,年龄,身高,职业,身份,关系,等等。而且这些属性需要通过一些结构化的方式进行排列组合形成一个框架或者模式才能通用,以后要描述其他人的时候也可以用这个模式,只要把他的数据输入进去就能得到这个人的概况。
我估计大概这就是数据结构的思想来源。
比特币表达资产概念的大致思想
那比特币的资金更是一种高度抽象的概念,一笔资金不仅包括了金额,持有人,等等基本属性,还需要表达出来这笔资金在交易过程中的变化情况,比如所有者是如何变化的,金额是怎么变动的等等逻辑,这就更复杂了。
所以对比特币资金的表达其实是一个大工程。
它就是通过代码和数据的结合来实现的。
代码涉及了一笔资金在交易过程中的所有逻辑,比如所有权,金额等状态发生变化的过程和结果,具体来说需要通过加密和解密,即资金花费条件和资格验证的逻辑来体现所有权,还需要通过函数和参数之间的关系来体现变化过程,比如金额变化,持有人变化,所有权变化等等。
很显然在比特币里面的一笔资金其实是代码,函数,逻辑,数据,还有他们之间发生作用形成的关系等多种要素结合表达出来的一个概念。
而这些代码,函数,各种逻辑和数据就需要一种表达力很强的结构组织起来,UTXO就是比特币用来组织和表达一笔资金的数据结构。
这就是UTXO理解起来复杂度的根源。
直观一点还是可以把它理解成一笔资金的载体,承载的是表达这笔资金的所有要素。
因此一笔交易要转移一笔资金,自然不可能只是加减一个数字那么简单的事情,而是需要这些函数,参数,代码,逻辑共同运行,导致的过程和结果变化。也就是说需要把整个UTXO都放进去一起运行然后获得结果。
这是对比特币UTXO的基本理解。接下来理解比特币交易的结构。
第二:如何理解比特币交易的结构
构建一笔比特币交易需要构建两个部分的数据,输入和输出。
之所以会有交易输入和输出这样的概念,是因为比特币的记账模式是以资金为线索把账目相关的数据组织在一起,那就需要把每一笔资金的来龙去脉都记录下来。所以每一笔帐目实际上记录的是一笔资金的来源和去向,分别对应的就是输入 Input 和 输出Output。
所以一笔交易就要构建输入和输出两个部分的数据。
交易输入,即Input,它的用途是指明这一笔交易的来源,就是你要花哪个UTXO里面的钱,或者说要花的钱来自哪个交易,哪个编号的UTXO;
而交易输出,即Output,就是用来指明这一笔交易转账要转到哪里去,你要用哪个编号的UTXO来接收,接收到哪个地址,即目的或者去向。
这里面涉及一个逻辑:交易输入Input里面的UTXO,是以前就存在的,现在拿过来花了;而交易输出Output部分的UTXO,则是新生成的用来装这笔钱的,所以他们是两个不同的UTXO。
而且这笔钱也会在交易过程中更换容器,从Input的UTXO换到Output的UTXO,还有隐藏在里面的一种变换,即这笔资金的所有权也更换了主人。
因此交易的输入和输出,它们里面最重要的其实都是UTXO这个钱袋子。输入里面的钱袋子是老的,等着花费的,而输出里面的是新的,等着装钱的,等一出一进这个过程一结束,老的钱袋子销毁了,里面的钱也换地方了,交易也就结束了。
当然很可能一个钱袋子里面的金额不够一笔交易要付出去的钱,或者一笔交易的钱也可能不止要分给一个钱袋子,所以可能一笔交易会在输入里面放几个Iutput UTXO,或在输出里面有几个Output UTXO,这些都是正常的。
从这个过程中我们能够体会到一笔比特币交易的整个逻辑:
第一老的UTXO消亡,新的UTXO生成;
第二资金从老的UTXO转移到新生成UTXO;
第三资金所有权从老UTXO的地址转移到新UTXO的地址。
以上是对一笔比特币交易的通俗理解。
转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/217408.html