优化未使用输出选择的挑战

昕阳小编 98 0

优化未使用输出选择的挑战-第1张图片-昕阳网

当我们谈到存储在区块链的比特币时,大多数人会称之为“比特币地址余额”。从会计的角度来看,这样说是有道理的,但事实上,在区块链数据结构中,硬币并不是这样表示的。没有地址包含货币,但“货币”实际上存储为“UTXOs”。一个UTXO可以与一个比特币地址相关联,尽管也可以有许多不同的UTXO与同一个比特币地址相关联。地址平衡是与地址相关的所有UTXOs值的总和。要从非技术角度理解UTXOs,推荐你读理查德詹德尔布朗的《欢迎来到比特币岛》。如果你想了解一些技术,看看开发者指南。

优化未使用输出选择的挑战-第2张图片-昕阳网

(交易由投入和产出组成;未使用的输出为实际比特币)

当比特币钱包软件创建一个新的交易时,它同样具有安排交易内部数据的灵活性。这是因为用户指令钱包:“发送X个比特币到地址Y”,钱包需要梳理用户的UTXOs才能找到足够的输出,也就是总价值能达到X个比特币。不幸的是,没有简单易懂的方法来选择UTXOs,因为需要考虑几个因素。

幼稚的做法是直接寻找最小的产出,大于你要花费和使用的金额。否则,添加下一个最大的输出,直到您有足够的输出来满足目标成本。但是,这将导致输出被拆分,直到钱包充满了无法再使用的小额余额。如果用户曾经试图清空只有少量余额的钱包,这可能是一个性能问题?那么这个也可以起到终止用户的作用。这个钱包已经在很多交易中使用过,可能也导致了大量的utxo,但是在一次交易中把这些utxo都花光是不可行的。

虽然比特币交易可以包含成百上千个输入和输出数字,但它是有代价的。交易的投入和产出越多,交易的规模就越大。在撰写本文时,比特币的节点将拒绝超过100KB的交易。同时,因为块的大小是有限的(目前是1 MB),所以你和其他人竞争让你的事务被矿工确认,矿工会把你的事务添加到块中。如果你直播一个没有成本或者成本微不足道的交易,你会承担以下两种风险:1。该节点拒绝广播该事务;2.矿商选择取消确认,改为确认每字节交易成本较高的数据。作为参考,我跟踪了一些交易和费用的指标?-在这里您可以看到,写入时的平均成本为每字节30丛。

优化未使用输出选择的挑战-第3张图片-昕阳网

(交易数据大小和费用支付)

如果我们要优化钱包会通过哪些算法选择UTXOs来建立交易,那么我们必须确定我们的目标是什么,我们要优化哪些交易属性?我可以想象优化UTXO选择的三个目标如下:

1。防止区块链膨胀:

A)如果可能的话,尽量避免创建小的变化输出。因为它们会给钱包和所有区块链用户带来性能成本。由于琐碎的规则和市场竞争,他们还会产生费用,这将使最终用户的费用更高。

B)整理小utxo:自然,一段时间后,钱包会产生很多小utxo。为了减少钱包和整个区块链的UTXO集合的大小,最好在一次交易中花费许多非常小的UTXO,以便从UTXO集合中删除它们。

2。隐私:

A)?UTXOs应该做出不确定的选择,使用几种不同的公钥。当钱包选择一个UTXO时,应该首先选择分配给相同公钥的其他UTXO。

B)?小输入——比零钱输出小,不与大输入共用一个公钥,所以不要使用它们,因为这些小输入会增加交易成本,降低隐私。

C)?如果你想创建一个变更输出,最好创建一个与支付值相同的值的变更输出。这有助于模糊哪个输出到达接收者,哪个返回给发送者。

D)变化输出要插在一个随机的位置,因为事务有很多输出,它们并不总是在第一个或最后一个位置。

3。降低交易成本:

A)当发送成本较小时,应优先选择交易输入集。这意味着事务的数据大小应该尽可能简单和小,几乎没有输入和输出。优先考虑仅使用单个UTXO作为事务的输入。

B)按币龄偏好UTXOs?通过发送足够旧的金币,足够大的交易将有资格被矿商确定为“高优先级”,无需额外费用。

C)如果消费UTXO的成本(通过要求的附加费)高于交易产出,就不要添加这个UTXO。

现实世界中的钱包是如何工作的?比特币核心钱包使用了一些相当复杂的逻辑:

1。如果任何UTXO匹配目标(成本值),将使用该UTXO。

2。如果所有UTXOs的总和小于目标值,但刚好与目标值匹配,那么将使用这些UTXOs。(这可以防止扫描钱包时出错。)

3。如果所有UTXO的总和小于目标值且不超过目标值,则将使用大于目标值的最小UTXO。

4。比特币核心随机组合UTXO 1000次,直到它们的和大于或等于目标。如果它碰巧找到完全匹配的,它就会停下来,更早地使用它。关于这一步的推理,代码也指出:“这是随机的,不能起到尚力财经小编2022真正的安全作用。只是用来防止堕落行为。”

5。否则,最终结算要么是大于目标值的最小UTXO,要么是步骤4中的最小UTXO组合。

6。在构造最终交易时,如果任何变化产出小到足以被认为是“尘埃”而不是创造产出,那么比特币核心就会将它们剔除,并将价值捐赠给矿工,作为交易费用的一部分。

优化比特币核心的逻辑,以减少变化输出的大小,这就是上面列出的目标1A。这是选择UTXOs的“最佳”或“正确”方式吗?看你的视角3354如果你看重隐私,降低交易成本,或者UTXO集成,那么就是次优。

优化未使用输出选择的挑战-第4张图片-昕阳网尚力财经小编2022

(UTXO集合的大小相对于未使用的输出数是递增的)

显然,没有灵丹妙药可以解决这个问题。实际上,上述三个优化目标是背道而驰的。鉴于这三个不相容的目标,钱包的作者认为最终用户会对选择钱包的UTXO的算法有更多的控制权。对于高级用户来说,是高级功能,但当用户在“性价比/隐私”中选择一个来优化时,我可以想象用户会为了追求平衡而妥协。

这些选择取决于钱包工程师(我称他们为区块链的好管家)。我们将数据写入共享资源,所以我们最好小心。在撰写本文时,17.6 UTXOs需要596 MB的数据来存储。如果比特币的受欢迎程度继续上升,这些数据肯定也会上升。但是在细心的区块链工程师的监督下,至少可以防止UTXO集增长超过需要的速度。

-原文:3359medium.com/@洛普/The-Challenges-of-optimization-Unspent-Output-Selection-a3 e5d 05d 13 ef作者:詹姆森洛普译者:毕比特来源:http://www . 8 BTC . com/优化-未用-产出[x]

标签: 2022

抱歉,评论功能暂时关闭!

微信号已复制,请打开微信添加咨询详情!