比特币生态开发 - UTXO 的那些坑

  • Ashton
  • 更新于 2024-01-23 06:24
  • 阅读 729

比特币生态今年意外爆发,我有幸也参与了一些比特币生态项目。比特币这个东西,因为没有智能合约,给人一种假象,以为做比特币开发就是调用一些接口和比特币开发库,但真正做进去,就会碰到各种想象不到的坑,精彩纷呈

0x00 为啥会有坑

哈哈,有路的地方,就会有坑...

比特币生态今年意外爆发,我有幸也参与了一些比特币生态项目。比特币这个东西,因为没有智能合约,给人一种假象,以为做比特币开发就是调用一些接口和比特币开发库,但真正做进去,就会碰到各种想象不到的坑,精彩纷呈。

0x01 Too many unspent transaction outputs

如果还没碰到过这个问题,大概率是你做的应用还没有资深玩家在用...

构造比特币交易,第一步要做的就是获取 UTXO,如何获取 UTXO 呢?\ mempool.space 提供的有个现成的接口:https://mempool.space/api/address/1KFHE7w8BhaENAswwryaoccDb6qcT6DbYY/utxo\ 免费又方便,正常使用也没啥问题,直到有一天,不断有用户抱怨说应用用不了,然后自己怎么试怎么是好的,最后把用户地址要过来,发现获取 UTXO 这步就出错了。

怎么办?

  1. 换供应商\ mempool.space 有限制,其它比特币浏览器是不是会好呢?你可以尽管去尝试,按我们的经验,免费供应商最多能返回的 utxo 是 2500 个。
  2. 自己搭节点\ 这其实也有几个选项,一个是自己搭比特币节点去跟踪存储所有的 UTXO,一个是自己去跑个 mempool.space 开源代码,可能都没那么轻松

有没有更方便的做法呢,也是有的

0x02 把资产当矿工费花了出去

这是另外一个初做比特币生态经常碰到的问题。这次比特币生态带来的最大变化,就是让很多看起来普普通通的铭文,有可能附带有价值连城的铭文。这就要我们在花费 UTXO 的时候格外小心。

  1. 目前铭文的 UTXO 大多是 546 聪,还有一些是 330 聪,293 聪,一般来说最大步会超过 10000 聪,这里可以做个简单的过滤,只花费大于 10000 聪的 UTXO
  2. 如果做更精细的筛选,就要自己把 UTXO 和铭文索引放在一起进行过滤了,这个如何做的效率更高是个技术活

0x03 花费未确认的 UTXO

比特币是允许使用未确认的 UTXO 来支付的,我们在铭刻铭文的时候经常这样做。但是有两个限制是要注意的:

  1. 比特币对未确认 UTXO 的反复使用是有限制的
  2. 如果前面某个 UTXO 由于矿工费太低迟迟得不到确认,后面的一连串交易都不会轻易得到确认

0x04 UTXO 投毒

出于某些特别原因,有人可能会往你地址里发送一笔小金额面值的 UTXO,但这个 UTXO 级连带了很多未确认的交易,这个被称为 UTXO 投毒。\ 当你不小心用了这个 UTXO,就中毒了。中毒后的典型表现就是你发出去的交易迟迟得不到链上确认,需要花比预期多很多的矿工费来解毒。

0x05 UTXO 合并

当你钱包里有几万甚至几十万个 UTXO 的时候,你会发现想把这些钱转出去并没那么容易,相当于自己有一卡车的硬币,一个个的花费太费事,大部分钱包也不支持一次性转太多 UTXO。

0x06 后记

UTXO 这东西有很好用的地方,比如很容易实现批量发送。但也有不少坑,从以太坊赛道过来的同学很容易掉坑里。

点赞 3
收藏 3
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

1 条评论

请先 登录 后评论
Ashton
Ashton
0x53b3...c54F
专注于 EVM 和比特币生态的区块链开发者