使用golang btcd

时间:2017-11-13 17:36:57

标签: go transactions bitcoin

我最初在比特币堆栈交换上有这个问题,但我被告知,因为它至少部分是一个编码问题,所以在SO上更有意义。

我使用golang的btcd作为创建处理事务的服务器端工具的基础。我找到了一个很好的example来创建一个基本的单输入一输出事务来让我开始实现,而且我还有read the documentation heavily技术细节在这里。我也非常重视其他btcsuite库,试图获得更多洞察力。要明确的是,我不期望任何这些工具发布交易或类似的事情;我知道这是用btcd编写的,特别是出于非常非常好的理由。我只是想使用这些工具来创建我稍后可以发布的有效交易。

我仍然对实现多输入,多输出事务以及我们在其上使用的脚本的细节感到非常困惑。一些主题:

  • 我是familiar使用btcd中的脚本工具,链接转到最常用的链接,但所有这些脚本都用于一个特定的输出。似乎绝对没有关于如何为多个输出提供脚本的文档。如果我正在进行正常的P2PK或P2PKH事务,我是否只是为所有各种输出连接脚本,或者是什么?
  • 在我上面链接的HelloBitcoin示例中的create Transaction example中,整体魔法发生在接近结束时:

    buffer.Write(version)
    buffer.Write(inputs)
    buffer.Write(inputTransactionBytesReversed)
    buffer.Write(outputIndexBytes)
    buffer.WriteByte(byte(scriptSigLength))
    buffer.Write(scriptSig)
    buffer.Write(sequence)
    buffer.Write(numOutputs)
    buffer.Write(satoshiBytes)
    buffer.WriteByte(byte(scriptPubKeyLength))
    buffer.Write(scriptPubKey)
    buffer.Write(lockTimeField)
    

我觉得有很多未解决的问题如何扩展它以处理多个输入和多个输出。对于输入,是否就像将所有输入事务转换为little-endian一样简单,注意inputs中的正确数字,并从那里开始?对于输出,您是否只有satoshiBytesscriptPubKey的单个块?我在文档中找不到这一切是如何粘合在一起的,而在这一点上我觉得我需要一些帮助来解决这个问题。在此先感谢您的帮助 - 如果我们能够得到这两点的答案,我可能最终会从这些不可避免的结果中提出更多问题。

0 个答案:

没有答案